| 消息编号 | 消息名称 | 消息作用 | 通信方式 | 消息流向 | 对应ROS话题 | 备注 |
|---|---|---|---|---|---|---|
| #1 | 心跳包 HeartbeatData | 用来确认TCP连接的状态 | TCP | Sunray通信模块➡️ Sunray Station地面站 | 无 | - |
| #2 | 无人机状态 UAVState | 回传无人机当前状态 | UDP | Sunray控制模块➡️Sunray通信模块(编码)➡️Sunray Station地面站/其他Sunray智能体 |
• 话题类型:sunray_msgs::UAVState• 话题名: /uav_id/sunray/uav_state• 自定义消息: UAVState.msg
|
集群时,存在机间通信 |
| #3 | 无人机PX4状态 PX4State | 回传无人机PX4状态 | UDP | - |
• 话题类型:sunray_msgs::PX4State• 话题名: /uav_id/sunray/px4_state• 自定义消息: PX4State.msg
|
- |
| #4 | 无人机PX4飞控参数 PX4Parameter | 回传无人机PX4飞控参数 | UDP | Sunray通信模块(编码)➡️Sunray Station地面站//其他Sunray智能体 | - | - |
| #20 | 无人车状态 UGVState | 回传无人车当前状态 | UDP | Sunray控制模块➡️Sunray通信模块(编码)➡️Sunray Station地面站/其他Sunray智能体 |
• 话题类型:sunray_msgs::UGVState• 话题名: /ugv_id/sunray/ugv_state• 自定义消息: UGVState.msg
|
集群时,存在机间通信 |
| #30 | 机载电脑ROS节点 NodeData | 智能体机载电脑在线ROS节点显示 | UDP | Sunray通信模块(编码)➡️Sunray Station地面站 | 无 | 从ros master获取 |
| #31 | 智能体电脑状态 AgentComputerStatus | 智能体电脑状态包括:CPU占用率和温度、以及内存占用率 | UDP | Sunray通信模块(编码)➡️Sunray Station地面站 | 无 | 从系统获取 |
| #32 | FAC比赛地图数据 FACMapData | 回传比赛地图数据 | UDP | Sunray控制模块➡️Sunray通信模块(编码)➡️Sunray Station地面站/其他Sunray智能体 |
• 话题类型:sunray_msgs::Competion• 话题名: /CompetionState• 自定义消息: Competion.msg
|
- |
| #33 | FAC比赛状态 FACCompetitionState | 回传比赛状态数据 | UDP | Sunray控制模块➡️Sunray通信模块(编码)➡️Sunray Station地面站/其他Sunray智能体 |
• 话题类型:std_msgs::String• 话题名: /CompetionDebug
|
- |
| #34 | 航点状态 WayPointState | 回传航点数据 | UDP | Sunray控制模块➡️Sunray通信模块(编码)➡️Sunray Station地面站 |
• 话题类型:sunray_msgs::WayPointState• 话题名: /ugv_id/sunray/uav_waypoint_state• 自定义消息: WayPointState.msg
|
- |
| #40 | 编队切换 Formation | 编队的控制 | UDP | Sunray控制模块➡️Sunray通信模块(编码)➡️Sunray通信模块(解码)➡️其他Sunray控制模块 |
• 话题类型:sunray_msgs::Formation• 话题名: /sunray/formation_cmd• 自定义消息: Formation.msg
|
- |
| #41 | 编队切换(地面站) Formation | 地面站的编队控制指令 | TCP | Sunray Station地面站➡️Sunray通信模块(解码)➡️Sunray控制模块 |
• 话题类型:sunray_msgs::Formation• 话题名: /sunray/formation_cmd/ground• 自定义消息: Formation.msg
|
- |
| #102 | 无人机控制指令 UAVControlCMD | 在不同模式下通过控制量控制无人机 | TCP | Sunray Station地面站➡️Sunray通信模块➡️Sunray控制模块 |
• 话题类型:sunray_msgs::UAVControlCMD• 话题名: /uav_id/sunray/uav_control_cmd• 自定义消息: UAVControlCMD.msg
|
- |
| #103 | 无人机设置指令 UAVSetup | 无人机设置指令 | TCP | Sunray Station地面站➡️Sunray通信模块➡️Sunray控制模块 |
• 话题类型:sunray_msgs::UAVSetup• 话题名: /uav_id/sunray/setup• 自定义消息: UAVSetup.msg
|
- |
| #104 | 航点 WaypointData | 将航点数据发送给无人机 | TCP | Sunray Station地面站➡️Sunray通信模块➡️Sunray控制模块 |
• 话题类型:sunray_msgs::UAVWayPoint• 话题名: /uav_id/sunray/uav_waypoint• 自定义消息: UAVWayPoint.msg
|
- |
| #105 | Viobot算法开关 ViobotSwitch | 控制Viobot算法开关 | TCP | - |
• 话题类型:sunray_msgs::algo_ctrl• 话题名: /baton/stereo3_ctrl• 自定义消息: algo_ctrl.msg
|
- |
| #106 | RTK原点设置 RTKOrigin | 设置RTK原点 | TCP | - |
• 话题类型:sunray_msgs::RTKOrigin• 话题名: /sunray/global_rtk_origin• 自定义消息: RTKOrigin.msg
|
- |
| #120 | 无人车控制指令 UGVControlCMD | 在不同模式下通过控制量控制无人车 | TCP | Sunray Station地面站➡️Sunray通信模块➡️Sunray控制模块 |
• 话题类型:sunray_msgs::UGVControlCMD• 话题名: /ugv_id/sunray_ugv/ugv_control_cmd• 自定义消息: UGVControlCMD.msg
|
- |
| #200 | 搜索在线智能体 SearchData | 搜索在线智能体 | UDP | Sunray Station地面站➡️Sunray通信模块 | 无 | 无实际意义,通信连接用 |
| #201 | 智能体应答 ACKData | 在线智能体应答UDP广播 | UDP | Sunray通信模块(编码)➡️Sunray Station地面站 | 无 | 无实际意义,通信连接用 |
| #202 | 智能体demo DemoData | 在线无人机通过launch文件启动demo | TCP | Sunray Station地面站➡️Sunray通信模块 | 无 | 启动指定ROS launch |
| #203 | 功能脚本 ScriptData | 在线智能体远程启动功能脚本 | TCP | Sunray Station地面站➡️Sunray通信模块 | 无 | 启动指定脚本 |
| #204 | 规划点 Goal | 发送x、y、z数据给智能体,用于集群智能体的目标点 | TCP | Sunray Station地面站➡️Sunray通信模块➡️Sunray控制模块 |
• 话题类型:geometry_msgs/PoseStamped• 话题名: /goal_id
|
- |
| #205 | 二维码坐标 QRCodeCoord | 无人机识别到的二维码坐标 | UDP |
• 话题类型:geometry_msgs::PointStamped• 话题名: /uav/target_global_position• 话题类型: geometry_msgs::PointStamped• 话题名: /target_global_position |
- | |
| 表1-1 通信协议概览表 | ||||||
| 数据类型 | 消息长度 | 变量名 | 备注 |
|---|---|---|---|
| uint8_t | 1个字节 | agentType | 智能体类型 |
| uint32 | 4字节 | count | 心跳包计数(未使用) |
| 数据类型 | 消息长度 | 变量名 | 备注 |
|---|---|---|---|
| uint8_t | 1个字节 | uav_id | 无人机编号 |
| bool | 1个字节 | connected | 是否与飞控建立连接 |
| bool | 1个字节 | armed | 是否解锁,true为已解锁,false则不是 |
| uint8_t | 1字节 | mode | PX4飞行模式(PX4飞控端) |
| uint8_t | 1字节 | landed_state | 降落状态,枚举参见mavros_msgs::msg: |
| float | 4个字节 | battery_state | 电池电压,单位:[V] |
| float | 4个字节 | battery_percentage | 电池百分比,[0-1] |
| uint8_t | 1个字节 | location_source | 无人机定位来源 |
| bool | 1个字节 | odom_valid | 里程计是否有效 |
| bool | 1个字节 | vio_start | viobot算法是否开启 |
| uint16_t | 2个字节 | viobotStateSize | viobot算法状态名长度 |
| char[300] | viobotStateSize | algo_status | viobot算法状态 |
| float[3] | 12个字节 | position | 位置,单位:[m] |
| float[3] | 12个字节 | velocity | 速度,单位:[m/s] |
| float[3] | 12个字节 | attitude | 姿态,单位:[rad] |
| float[4] | 16个字节 | attitude_q | 姿态,四元数 |
| float[3] | 12个字节 | attitude_rate | 角速率,单位[rad/s] |
| float[3] | 12个字节 | pos_setpoint | 位置控制设定值,单位:[m] |
| float[3] | 12个字节 | vel_setpoint | 速度控制设定值,单位:[m/s] |
| float[3] | 12个字节 | att_setpoint | 姿态控制设定值,单位:[rad] |
| float | 4个字节 | thrust_setpoint | 推力设定值,[0-1] |
| uint8_t | 1个字节 | control_mode | 无人机控制状态机(Sunray端无人机控制) |
| uint8_t | 1个字节 | move_mode | 无人机移动模式(Sunray端无人机控制) |
| float | 4个字节 | takeoff_height | 起飞高度 |
| float[3] | 12个字节 | home_pos | 起飞点 |
| float | 4个字节 | home_yaw | 起飞点 |
| float[3] | 12个字节 | hover_pos | 悬停点 |
| float | 4个字节 | hover_yaw | 悬停点 |
| float[3] | 12个字节 | land_pos | 降落点 |
| float | 4个字节 | land_yaw | 降落点 |
| 数据类型 | 消息长度 | 变量名 | 备注 |
|---|---|---|---|
| bool | 1个字节 | connected | 是否与飞控建立连接 |
| bool | 1个字节 | armed | 是否解锁,true为已解锁,false则不是 |
| uint8_t | 1字节 | mode | PX4飞行模式(PX4飞控端) |
| uint8_t | 1字节 | landed_state | 降落状态,枚举参见mavros_msgs::msg: |
| float | 4个字节 | battery_state | 电池电压,单位:[V] |
| float | 4个字节 | battery_percentage | 电池百分比,[0-1] |
| uint8_t | 1字节 | external_source | 外部定位数据来源(sunray_msgs:ExternalOdom) |
| bool | 1个字节 | odom_valid | 里程计是否有效(sunray_msgs:ExternalOdom) |
| bool | 1个字节 | fusion_success | 外部定位数据与飞控融合是否成功(sunray_msgs:ExternalOdom) |
| float[3] | 12个字节 | originalPosition | 原始位置,单位:[m](sunray_msgs:ExternalOdom) |
| float[3] | 12个字节 | originalVelocity | 原始速度,单位:[m/s](sunray_msgs:ExternalOdom) |
| float[3] | 12个字节 | originalAttitude | 原始姿态,单位:[rad](sunray_msgs:ExternalOdom) |
| float[4] | 16个字节 | originalAttitude_q | 原始姿态,四元数(sunray_msgs:ExternalOdom) |
| bool | 1个字节 | vio_start | viobot算法是否开启(sunray_msgs:ExternalOdom) |
| uint16_t | 2个字节 | viobotStateSize | viobot算法状态名长度(sunray_msgs:ExternalOdom) |
| char[300] | viobotStateSize | algo_status | viobot算法状态(sunray_msgs:ExternalOdom) |
| float[3] | 12个字节 | position | 位置,单位:[m] |
| float[3] | 12个字节 | velocity | 速度,单位:[m/s] |
| float[3] | 12个字节 | attitude | 姿态,单位:[rad] |
| float[4] | 16个字节 | attitude_q | 姿态,四元数 |
| float[3] | 12个字节 | attitude_rate | 角速率,单位[rad/s] |
| uint8_t | 1字节 | satellites | GPS卫星数量 |
| int8_t | 1字节 | gps_status | GPS状态 |
| uint8_t | 1字节 | gps_service | GPS服务 |
| double | 8字节 | latitude | 融合纬度,单位:[°] |
| double | 8字节 | longitude | 融合经度,单位:[°] |
| double | 8字节 | altitude | 椭球高度,单位:[m](WGS84椭球面) |
| double | 8字节 | latitude_raw | 原始纬度,单位:[°] |
| double | 8字节 | longitude_raw | 原始经度,单位:[°] |
| double | 8字节 | altitude_amsl | 海拔高度,单位:[m](平均海平面) |
| float[3] | 12个字节 | pos_setpoint | 位置控制设定值,单位:[m] |
| float[3] | 12个字节 | vel_setpoint | 速度控制设定值,单位:[m/s] |
| float[3] | 12个字节 | att_setpoint | 姿态控制设定值,单位:[rad] |
| float[4] | 16个字节 | q_setpoint | 姿态设定值,四元数 |
| float | 4个字节 | thrust_setpoint | 推力设定值,[0-1] |
| 数据类型 | 消息长度 | 变量名 | 备注 |
|---|---|---|---|
| double | 8字节 | MPC_XY_VEL_MAX | 最大水平速度 |
| double | 8字节 | MPC_Z_VEL_MAX_UP | 最大垂直上升速度 |
| double | 8字节 | MPC_Z_VEL_MAX_DN | 最大垂直下降速度 |
| double | 8字节 | MPC_XY_P | 水平位置误差的比例增益 |
| double | 8字节 | MPC_TILTMAX_AIR | 空中最大倾斜角 |
| double | 8字节 | MPC_THR_HOVER | 悬停推力 |
| int64_t | 8字节 | MAV_0_RATE | 最大 MAVLink 发送速率 |
| int64_t | 8字节 | EKF2_HGT_REF | EKF 所使用的高度数据参考源 |
| 数据类型 | 消息长度 | 变量名 | 备注 |
|---|---|---|---|
| uint8_t | 1个字节 | ugv_id | 无人车编号 |
| bool | 1个字节 | connected | 无人车连接状态 |
| float | 4个字节 | battery_state | [V] |
| float | 4个字节 | battery_percentage | [0-1] |
| uint8_t | 1个字节 | location_source | 无人车定位来源 |
| bool | 1个字节 | odom_valid | 里程计是否有效 |
| float[2] | 8个字节 | position | [m] |
| float[2] | 8个字节 | velocity | [m/s] |
| float | 4个字节 | yaw | [rad] |
| float[3] | 12个字节 | attitude | [rad] |
| float[4] | 16个字节 | attitude_q | 四元数 |
| uint8_t | 1个字节 | control_mode | 无人车控制命令及目标设定值 |
| float[2] | 8个字节 | pos_setpoint | 位置控制目标点 |
| float[2] | 8个字节 | vel_setpoint | 速度控制目标 |
| float | 4个字节 | yaw_setpoint | 姿态控制目标 |
| float[2] | 8个字节 | home_pos | 原点 |
| float | 4个字节 | home_yaw | 原点 |
| float[2] | 8个字节 | hover_pos | 悬停点 |
| float | 4个字节 | hover_yaw | 悬停点 |
| 数据类型 | 消息长度 | 变量名 | 备注 |
|---|---|---|---|
| uint16_t | 2个字节 | nodeCount | 节点数量 |
| uint16_t | 2个字节 | nodeID | 节点ID(序号) |
| uint16_t | 2个字节 | nodeSize | 节点名大小 |
| char[300] | nodeSize | nodeStr | 节点名 |
| 数据类型 | 消息长度 | 变量名 | 备注 |
|---|---|---|---|
| double | 8个字节 | cpuLoad | CPU 负载百分比(0.0-100.0) |
| double | 8个字节 | memoryUsage | 内存使用率(0.0-100.0) |
| double | 8个字节 | cpuTemperature | CPU 温度(摄氏度,保留小数精度) |
| 数据类型 | 消息长度 | 变量名 | 备注 |
|---|---|---|---|
| float | 4个字节 | centralObstacleSideLength | 中心障碍物边长 |
| float[2] | 8个字节 | dropZoneCenterCoords | 投送区中心点坐标 |
| float[2] | 8个字节 | firstObstacleCoords | 第一个障碍物坐标 |
| float[2] | 8个字节 | secondObstacleCoords | 第二个障碍物坐标 |
| float[2] | 8个字节 | thirdObstacleCoords | 第三个障碍物坐标 |
| float | 4个字节 | obstacleRadius | 障碍物半径 |
| float[2] | 8个字节 | largeFrameCoords | 大框中心点位置 |
| float[2] | 8个字节 | smallFrameCoords | 小框中心点位置 |
| 数据类型 | 消息长度 | 变量名 | 备注 |
|---|---|---|---|
| uint16_t | 2个字节 | stateSize | 状态名大小 |
| char[300] | stateSize | stateStr | 状态 |
| 数据类型 | 消息长度 | 变量名 | 备注 |
|---|---|---|---|
| uint8_t | 1个字节 | wp_state | 当前航点状态 |
| uint8_t | 1个字节 | wp_index | 当前正在执行的航点序号 |
| uint8_t | 1个字节 | wp_num | 所有航点数量 |
| float[3] | 12个字节 | waypoint | 正在执行的航点[m] |
| float[2] | 8个字节 | velocity | 执行速度(x,y)[m/s] |
| float | 4个字节 | yaw | 偏航角[rad] |
| 数据类型 | 消息长度 | 变量名 | 备注 |
|---|---|---|---|
| uint8_t | 1个字节 | cmd | 指令类型 |
| uint8_t | 1个字节 | formation_type | - |
| uint16_t | 2个字节 | nameSize | 编队名字大小 |
| uint8_t | 1个字节 | leader_id | - |
| char[300] | nameSize | name | 编队名字 |
| 数据类型 | 消息长度 | 变量名 | 变量范围 | 变量显示范围 | 备注 |
|---|---|---|---|---|---|
| uint8_t | 1个字节 | cmd | 枚举值 | 枚举值 | 控制命令 |
| float[3] | 12个字节 | desired_pos | 无 | 无 | 期望位置,单位:[m] |
| float[3] | 12个字节 | desired_vel | 无 | 无 | 期望速度,单位:[m/s] |
| float[3] | 12个字节 | desired_acc | 无 | 无 | 期望加速度,单位:[m/s²] |
| float[3] | 12个字节 | desired_jerk | 无 | 无 | - |
| float[3] | 12个字节 | desired_att | 无 | 无 | 期望姿态,单位:[rad] |
| float | 4个字节 | desired_thrust | 无 | 无 | 期望推力,[0-1] |
| float | 4个字节 | desired_yaw | rad (-π~π) |
角度制 (-180~180) |
期望偏航角,单位:[rad] |
| float | 4个字节 | desired_yaw_rate | rad | 角度制 | 期望偏航角角速率,单位:[rad/s] |
| float | 4个字节 | latitude | 无 | 无 | 无人机期望经度 |
| float | 4个字节 | longitude | 无 | 无 | 无人机期望纬度 |
| float | 4个字节 | altitude | 无 | 无 | 无人机期望高度 |
| 数据类型 | 消息长度 | 变量名 | 备注 |
|---|---|---|---|
| uint8_t | 1个字节 | cmd | 控制模式 |
| uint8_t | 1个字节 | px4_mode | PX4模式 |
| uint8_t | 1个字节 | control_mode | 参见uav_control.h中无人机控制模式枚举 |
| 数据类型 | 消息长度 | 变量名 | 变量范围 | 变量显示范围 | 备注 |
|---|---|---|---|---|---|
| bool | 1个字节 | start | 无 | 无 | 开始执行指令 |
| uint8_t | 1个字节 | wp_num | 20 | 无 | 航点数 |
| uint8_t | 1个字节 | wp_end_type | 枚举值 | 枚举值 | 结束事件 |
| uint8_t | 1个字节 | wp_yaw_type | 枚举值 | 枚举值 | 偏航角类型 |
| float | 4个字节 | wp_move_vel | 无 | 无 | 航点间移动速度 |
| double[20][4] | 32个字节 | wp_points | 无 | 无 | 航点 xyzyaw |
| 数据类型 | 消息长度 | 变量名 | 变量范围 | 变量显示范围 | 备注 |
|---|---|---|---|---|---|
| bool | 1个字节 | algoEnable | 无 | 无 | Viobot算法启停 |
| bool | 1个字节 | algoReboot | 无 | 无 | Viobot算法重启 |
| bool | 1个字节 | algoReset | 无 | 无 | Viobot算法重置 |
| 数据类型 | 消息长度 | 变量名 | 变量范围 | 变量显示范围 | 备注 |
|---|---|---|---|---|---|
| double | 8个字节 | latitude | 无 | 无 | 原点纬度 [度],范围: -90 ~ 9 |
| double | 8个字节 | longitude | 无 | 无 | 原点经度 [度],范围: -180 ~ 180 |
| double | 8个字节 | altitude | 无 | 无 | 原点高度 [米],海拔高度(AMSL) |
| 数据类型 | 消息长度 | 变量名 | 变量范围 | 变量显示范围 | 备注 |
|---|---|---|---|---|---|
| uint8_t | 1个字节 | cmd | 枚举值 | 枚举值 | 控制命令 |
| uint8_t | 1个字节 | yaw_type | 枚举值 | 枚举值 | 偏航角类型 |
| float[2] | 8个字节 | desired_pos | 无 | 无 | [m] |
| float[2] | 8个字节 | desired_vel | 无 | 无 | [m/s] |
| float | 4个字节 | desired_yaw | 无 | 无 | [rad] |
| float | 4个字节 | angular_vel | 无 | 无 | [rad/s] |
| 数据类型 | 消息长度 | 变量名 | 备注 |
|---|---|---|---|
| uint64_t | 8个字节 | port | 目的端口 |
| 数据类型 | 消息长度 | 变量名 | 备注 |
|---|---|---|---|
| uint8_t | 1个字节 | agentType | 智能体类型 |
| uint8_t | 1个字节 | id | 智能体编号 |
| uint16_t | 2个字节 | port | 机载TCP服务端监听端口 |
| 数据类型 | 消息长度 | 变量名 | 备注 |
|---|---|---|---|
| bool | 1个字节 | demoState | demo启动还是停止 |
| uint16_t | 2个字节 | demoSize | demo命令大小 |
| char[250] | demoSize | demoStr | demo命令 |
| 数据类型 | 消息长度 | 变量名 | 备注 |
|---|---|---|---|
| uint8_t | 1个字节 | scripType | 脚本类型 |
| bool | 1个字节 | scriptState | 脚本启动还是停止 |
| uint16_t | 2个字节 | scriptSize | 脚本名字大小 |
| char[250] | scriptSize | scriptStr | 脚本名 |
| 数据类型 | 消息长度 | 变量名 | 备注 |
|---|---|---|---|
| double | 8个字节 | positionX | [m] |
| double | 8个字节 | positionY | [m] |
| double | 8个字节 | positionZ | [m] |
| double | 8个字节 | yaw | rad |
| 数据类型 | 消息长度 | 变量名 | 备注 |
|---|---|---|---|
| double | 8个字节 | x | [m] |
| double | 8个字节 | y | [m] |
| double | 8个字节 | z | [m] |