fcu_bridge_001 与 fcu_server_001 核心代码说明

1. fcu_bridge_001 核心代码

1.1 main()

作用:初始化参数、建立通信、循环收发数据。

关键点:

说明:main() 负责组织消息接收、解析和发送流程。

1.2 RingBuffer / flush_data() / mavlink_send_msg()

作用:完成底层字节流收发。

说明:上层负责构造 MAVLink 消息,底层统一完成数据传输。

1.3 mav_send_heartbeat()

作用:周期性发送 HEARTBEAT。

关键点:

说明:向对端报告当前节点的在线状态和节点类型。

1.4 mav_send_arm() / mav_send_disarm() / mav_send_takeoff() / mav_send_land()

作用:将 ROS 内部命令转换为飞控能识别的 MAVLink 控制命令。

说明:将本地 ROS 命令映射为飞控控制命令。

1.5 mav_send_target(...)

作用:发送目标点或轨迹控制量,消息类型是 SET_POSITION_TARGET_LOCAL_NED。

输入内容包括:

关键点:

说明:该函数是目标控制消息的主要发送入口。

1.6 parse_data()

作用:逐字节解析收到的 MAVLink 消息,再按 msgid 分发处理。

主要处理分支如下:

1.7 odomHandler() / motionHandler()

作用:向飞控发送 ROS 位姿数据。

共同流程:

说明:向飞控提供外部位置和姿态参考。

1.8 missionHandler()

作用:将 mission_001 的 11 维数组转换为目标控制消息。

数组格式:

[yaw, yaw_rate, px, py, pz, vx, vy, vz, ax, ay, az]

说明:该函数是上层任务模块向飞控发送控制数据的接口。

1.9 gnssHandler() / originHandler()

作用:发送 SET_GPS_GLOBAL_ORIGIN。

说明:设置飞控使用的全局原点,避免重复设置或使用错误原点。


2. fcu_server_001 核心代码

2.1 main()

作用:创建 TCP 服务端并等待 fcu_bridge_001 连接。

核心流程:

说明:该节点通过 TCP 转发 MAVLink 消息。

2.2 flush_data() / mavlink_send_msg()

作用:将待发送的 MAVLink 消息重新编码,并写入 TCP 连接。

说明:服务端与桥接端均采用消息层和传输层分离的结构。

2.3 mav_send_heartbeat()

作用:周期性发送心跳。

关键点:

说明:将本地解锁状态同步给对端。

2.4 parse_data()

作用:解析远端发送的 MAVLink 消息,并发布至本地 ROS 话题。

核心分支:

2.5 cmdHandler()

作用:将本地 command 重新编码为 MAVLink 消息。

关键命令:

说明:本地 ROS 通过命令话题触发服务端发送数据,无需直接操作 TCP 连接。

2.6 gnssHandler() / battHandler() / odom_global001_handler()

作用:将本地 ROS 状态数据封装为 MAVLink 消息。

odom_global001_handler() 包含以下转换操作:

说明:将本地里程计数据转换为飞控可识别的视觉定位消息。

2.7 execute_mission_1hz()

作用:维持连接并检测链路中断。

说明:通过周期性心跳维护连接,并检测链路中断。


返回教程目录 · 上一章:键盘控制的使用 · 下一章:UWB 套件使用 fcu_core_v2