GNSS(RTK) 套件使用 fcu_core_v2
实验环境:Windows 11 宿主机,VMware 17.5 Pro 虚拟机,Ubuntu 20.04 LTS。
从 GitHub 获取源码
创建工作空间:
mkdir -p ~/ros_ws/src
拉取 fcu_core_v2 和 quadrotor_msgs:
项目 README
修改 launch 文件参数
DRONE_IP:无人机 Mlink 的 IP 地址。channel:1。offboard:false。use_uwb:false。set_goal:false。simple_target:true。
<node pkg="fcu_core" type="fcu_bridge_001" name="fcu_bridge_001" output="screen" >
<remap from="~odometry_001" to="/vins_estimator/odometry"/>
<remap from="~imu_global_001" to="imu_global_001"/>
<remap from="~odom_global_001" to="odom_global_001"/>
<remap from="~path_global_001" to="path_global_001"/>
<remap from="~path_target_001" to="path_target_001"/>
<remap from="~goal_001" to="/move_base_simple/goal"/>
<remap from="~motion_001" to="motion_001"/>
<remap from="~command" to="/fcu_command/command"/>
<remap from="~mission_001" to="/fcu_mission/mission_001"/>
<param name="DRONE_IP" value="192.168.0.201" type="string"/> <!-- 修改为对应无人机 Mlink 的 IP 地址 -->
<param name="DRONE_PORT" value="333"/>
<param name="USB_PORT" value="/dev/ttyACM0" type="string"/>
<param name="BANDRATE" value="460800"/>
<param name="channel" value="1"/>
<param name="offboard" value="false" type="bool"/>
<param name="use_uwb" value="false" type="bool"/> <!-- use_uwb改为false -->
<param name="set_goal" value="false" type="bool"/>
<param name="simple_target" value="true" type="bool"/>
<param name="odom_init_x" value="0.0"/> <!-- FLU 坐标系 -->
<param name="odom_init_y" value="0.0"/>
<param name="odom_init_z" value="0.0"/>
</node>
系统测试
GNSS 套件中的绕圆飞行、方形轨迹飞行、多点飞行和定点飞行均使用 GNSS 全局坐标系。该坐标系以无人机首次获得 GNSS 坐标的位置为原点,坐标轴方向为“北、西、天”。RViz 插件发送的航点为 GNSS 全局坐标系下的绝对坐标。
测试必须在空旷的室外环境中进行。
-
摆放 RTK 基站:将基站固定在空旷区域,离地高度约 1.5 m。未配备 RTK 基站时,可跳过此步骤。
-
设置定位参数:使用手机 App 连接飞控,将标签 ID 设置为 1,对应通信节点 001。
-
放置无人机:将无人机放置在安全、水平的起飞位置。GNSS 坐标系以无人机首次获得 GNSS 坐标的位置为原点;重启后,需重新核对坐标原点和航点。
-
重启无人机并开启 RTK 基站(未配备 RTK 基站时,可跳过与基站相关的操作)。
- 为 RTK 基站通电(未配备基站时跳过)。
- 按复位键重启无人机。
- 检查无人机和基站的 LED 状态。
- RTK 基站的蓝色指示灯由熄灭变为点亮:表示已成功锁定卫星。
- 无人机 RTK 模组的蓝色指示灯由熄灭变为常亮:表示已成功锁定卫星。
- 无人机 RTK 模组的绿色指示灯由熄灭变为常亮:表示已进入 RTK 定位模式。


- 连接无人机:在虚拟机中进入
ros_ws目录,打开终端并执行以下命令:
catkin_make
source ./devel/setup.bash
随后运行 ROS 程序:
roslaunch fcu_core fcu_core.launch
终端显示以下信息时,表示已收到无人机的心跳包:
心跳包中的最后两个参数分别为 sat(卫星数量)和 gnss(定位状态值)。
配备 RTK 基站时,gnss 定位状态值必须达到 5,才允许解锁起飞。
未配备 RTK 基站时,gnss 定位状态值必须达到 2,才允许解锁起飞。
系统同时打开 RViz 界面,如下图所示。图中坐标点仅供参考,请以实际运行结果为准。
RViz 是一个三维可视化平台,可用于无人机位置及飞行轨迹的图形化显示。
右侧 3D 视图区中的坐标轴表示世界坐标系:红色为 X 轴,绿色为 Y 轴,蓝色为 Z 轴。
图中的红点代表无人机在世界坐标系中的位置。
- 检查轨迹:手持无人机沿测试路径移动,检查 RViz 中的显示轨迹是否与实际运动一致。确认无误后,方可进行后续操作。
测试期间,应持续检查 RTK 基站和无人机 RTK 模组的指示灯状态。状态异常时,需重启基站和无人机后重新检查。
飞行测试
在空旷的室外环境中,为无人机通电并通过虚拟机建立连接。确认终端收到心跳包,并检查其中的 GNSS 卫星数量和定位状态。无人机静止时,卫星数量应在 20 颗左右;未配备 RTK 基站时,定位状态值须达到 2;配备 RTK 基站时,须达到 5。满足上述要求后,方可解锁起飞。
注意:首次飞行须在用户交流群中技术支持工程师的指导下进行。
遥控器设置

熟悉 RViz 插件操作
飞行测试前,请先阅读 rviz_plugin 的使用,熟悉航点设置、轨迹执行及基础控制按钮。
确认无人机连接
确认系统测试中的 ROS 程序仍在运行,且无人机通信正常。若程序已退出,请在虚拟机中进入 ros_ws 目录,打开终端并执行以下命令;若程序已在运行,无需重复启动。
catkin_make
source ./devel/setup.bash
随后运行 ROS 程序:
roslaunch fcu_core fcu_core.launch
确认 GNSS 定位状态
终端显示以下信息时,表示已收到无人机的心跳包:
心跳包中的最后两个参数分别为 sat(卫星数量)和 gnss(定位状态值)。
配备 RTK 基站时,gnss 定位状态值必须达到 5,才允许解锁起飞。
未配备 RTK 基站时,gnss 定位状态值必须达到 2,才允许解锁起飞。

设置航点
在 RViz 插件中选择 无人机 1,在其航点列表中设置四个航点,构成方形轨迹,如下图所示。请按实际坐标原点和场地范围设置航点,图片中的坐标仅为界面示例。

无人机解锁
(1)搭载高精度 GNSS 模组的机型
注意:首次开机时,需等待 GNSS 模组的蓝色 LED 指示灯常亮,确认 GNSS 信号良好后再解锁。若指示灯未常亮,尝试解锁时系统会发出连续报警音,固件保持锁定,不允许起飞。蓝色指示灯常亮后,还须核对本章规定的 gnss 定位状态值。
完成上述检查后,点击 RViz 插件中的 解锁 按钮。

此时,Mcontroller 右侧的 LED 绿灯点亮,并响起启动提示音。FanciSwarm™ 无人机完成解锁。
起飞
确认无人机已解锁后,点击 RViz 插件中的 起飞 按钮。

此时,FanciSwarm™ 无人机上升至 FanciSwarm App 中设置的起飞高度并悬停。
启用循环执行(可选)
如需重复执行航点列表,将航点列表上方的 循环执行 开关设为 开;仅执行一次时,将其设为 关。

执行轨迹
点击 RViz 插件中的 执行轨迹 按钮。

此时,FanciSwarm™ 无人机按航点列表顺序执行方形轨迹;启用循环执行后,将重复执行该航点列表。
停止轨迹
点击 RViz 插件中的 停止轨迹 按钮。

插件停止下发后续航点。已发送至无人机的航点无法撤回,因此该操作不保证无人机立即悬停。请观察无人机状态,确认当前目标点的执行情况。
降落
点击 RViz 插件中的 降落 按钮。

此时,FanciSwarm™ 无人机开始下降,随后着陆。
锁定无人机
确认无人机已着陆后,点击 RViz 插件中的 锁定 按钮。

此时,FanciSwarm™ 无人机的电调指示灯熄灭,同时,Mcontroller 右侧的 LED 绿灯熄灭、LED 红灯点亮。FanciSwarm™ 无人机完成锁定。
关闭无人机和 RTK 基站
FanciSwarm™ 无人机锁定后,如果不继续飞行,请及时关闭无人机和 RTK 基站(如有),并断开电池连接,以减少电量消耗。
GNSS(RTK) 轨迹飞行流程完成。
返回教程目录 · 上一章:UWB 套件使用 fcu_core_v2 · 下一章:深度相机套件使用 fcu_core_v2