AFSIM - #002 使用python接收warlock的数据

在这里插入图片描述

使用node接收warlock的数据

1 目标

本文的目的是使用node接收warlock的数据。

2 代码

2.1 安装包

pip install grpcio grpcio-tools

2.2 使用 protoc 命令生成 Python 代码

运行后会生成2个py文件(af_service_pb2.py和af_service_pb2_grpc.py)

python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. af_service.proto

2.3 主程序(需要使用多线程处理多个stream)

import grpc
import time
from af_service_pb2_grpc import AFDataCollectServiceStub
from af_service_pb2 import Request
import threading

# 配置
CONFIG = {
   
   
    'server_address': '127.0.0.1:5005',
    'max_retries': 3,
    'retry_delay': 2,  # 秒
    'connection_timeout': 5,  # 秒
}

# 重试状态
state = {
   
   
    'current_retry': 0,
    'is_shutting_down': False
}


# ================= 工具函数 ===================
def safe_number(num, precision=6):
    return f"{
     
     num:.{
     
     precision}f}" if isinstance(num, (int, float)) else "无数据"


def format_position(pos):
    if not pos:
        return '  位置信息: 无可用数据'

    return f"""   位置详情:
    坐标: ({
     
     safe_number(pos.lat)}, {
     
     safe_number(pos.lon)}) 高度: {
     
     safe_number(pos.alt, 1)}米
    北东天坐标: [X: {
     
     safe_number(pos.neu_x, 2)}, Y: {
     
     safe_number(pos.neu_y, 2)}, Z: {
     
     safe_number(pos.neu_z, 2)}]
    姿态: 航向 {
     
     safe_number(pos.heading, 1)}°, 俯仰 {
     
     safe_number(pos.pitch, 1)}°, 横滚 {
     
     safe_number(pos.roll, 1)}°
    速度: {
     
     safe_number(pos.speed, 1)} 米/秒 (北东天速度: [{
     
     safe_number(pos.neu_vx, 1)}, {
     
     safe_number(pos.neu_vy, 1)}, {
     
     safe_number(pos.neu_vz, 1)}])
    角度: 攻角 {
     
     safe_number(pos.attack_angle, 2)}°, 侧滑角 {
     
     safe_number(pos.sideslip_angle, 2)}°
    """


def format_sensor_info(sensors):
    if not sensors:
  
内容概要:本文详细介绍了AFSIM(Advanced Framework for Simulation, Integration, and Modeling)这一由美国空军研究实验室(AFRL)开发和维护的高级仿真、集成与建模框架。AFSIM是一个面向对象的C++库,用于在地理背景下模拟多域平台(如空中、地面、海上、太空等)之间的交互,支持传感器探测、通信、碰撞等行为。系统具备高精度内置模型、模块化架构、多运行模式(单机、分布式、人在回路)及强大分析工具(如Wizard、Mystic、EVT Reader),并提供完整源代码,支持用户自定义扩展。文章还涵盖了AFSIM的发展历程、功能特点、应用场景(军事仿真、装备论证、模拟训练、数字孪生等)、开发语言(以C++为主,支持Python集成)、开发环境搭建步骤及源码获取方式,并强调其开源属性和活跃的社区生态。; 适合人群:具备一定C++编程基础,从事军事仿真、系统建模、作战分析等相关领域的研发人员、工程师及高校研究人员。; 使用场景及目标:①用于构建多域联合仿真环境,开展作战实验与战术评估;②支持武器系统效能分析、任务级仿真与数字孪生建模;③通过二次开发实现定制化仿真需求,结合Python进行数据分析与智能建模。; 阅读建议:建议结合AFSIM官方文档与社区资源,重点理解其面向对象架构与核心类(如Platform)设计,实践开发环境搭建与简单仿真案例,深入掌握其多域仿真机制与扩展接口。
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

满天飞飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值