UWB 套件使用 fcu_core_v2

实验环境:Windows 11 宿主机,VMware 17.5 Pro 虚拟机,Ubuntu 20.04 LTS。

从 GitHub 获取源码

创建工作空间:

mkdir -p ~/ros_ws/src

拉取 fcu_core_v2 工程,并按照 README 中的说明编译: 项目 README

修改 launch 文件参数

    <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.4.1" 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="true" type="bool"/>
        <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>

系统测试

坐标系说明

UWB 套件中的绕圆飞行、方形轨迹飞行、多点飞行和定点飞行均使用 UWB 全局坐标系。RViz 插件发送的航点为 UWB 全局坐标系下的绝对坐标。

定位检查

  1. 按复位键重启无人机。
  2. 开启四个基站。
  3. 检查无人机和基站的 LED6 状态。
  4. LED6 快速闪烁表示 UWB 定位系统工作正常,可进行下一步操作。否则,请重启无人机和基站后重新检查。

图片

通信与轨迹检查

在虚拟机中进入 ros_ws 目录,打开终端并执行以下命令:

catkin_make
source ./devel/setup.bash

随后运行 ROS 程序:

roslaunch fcu_core fcu_core.launch

终端显示以下信息时,表示已收到无人机的心跳包: 图片 系统同时打开 RViz 界面,如下图所示。图中坐标点仅供参考,请以实际运行结果为准。 图片 RViz 是一个三维可视化平台,可用于无人机位置及飞行轨迹的图形化显示。 右侧 3D 视图区中的坐标轴表示世界坐标系:红色为 X 轴,绿色为 Y 轴,蓝色为 Z 轴。 图中的红点代表无人机在世界坐标系中的位置。

飞行测试

飞行前准备

图片

遥控器设置

图片

熟悉 RViz 插件操作

飞行测试前,请先阅读 rviz_plugin 的使用,熟悉航点设置、轨迹执行及基础控制按钮。

确认无人机连接

确认系统测试中的 ROS 程序仍在运行,且无人机通信正常。若程序已退出,请在虚拟机中进入 ros_ws 目录,打开终端并执行以下命令;若程序已在运行,无需重复启动。

catkin_make
source ./devel/setup.bash

随后运行 ROS 程序:

roslaunch fcu_core fcu_core.launch

设置航点

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

图片

无人机解锁

(1)基础款无人机(无论是否配备 UWB):确保起落架呈 X 形,四条支腿分别位于四个电机的正下方,不得偏移。

(2)未搭载高精度 GNSS 模组的机型 注意:FanciSwarm 无人机启动提示音结束后,将无人机垂直提起至离地超过 1 m,再放回地面,此操作执行一次即可。激光测距正常后才允许解锁;否则,系统会发出连续报警音,固件保持锁定,不允许起飞。 已配置 SLAM 定高的 Pro 款无人机无需执行此提起操作,配置方法参见激光雷达 SLAM 的 PDF 教程。

完成上述检查后,点击 RViz 插件中的 解锁 按钮。

图片

此时,Mcontroller 右侧的 LED 绿灯点亮,并响起启动提示音。FanciSwarm™ 无人机完成解锁。

起飞

确认无人机已解锁后,点击 RViz 插件中的 起飞 按钮。

图片

此时,FanciSwarm™ 无人机上升至 FanciSwarm App 中设置的起飞高度并悬停。

启用循环执行(可选)

如需重复执行航点列表,将航点列表上方的 循环执行 开关设为 开;仅执行一次时,将其设为 关。

图片

执行轨迹

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

图片

此时,FanciSwarm™ 无人机按航点列表顺序执行方形轨迹;启用循环执行后,将重复执行该航点列表。

停止轨迹

点击 RViz 插件中的 停止轨迹 按钮。

图片

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

降落

点击 RViz 插件中的 降落 按钮。

图片

此时,FanciSwarm™ 无人机开始下降,随后着陆。

锁定无人机

确认无人机已着陆后,点击 RViz 插件中的 锁定 按钮。

图片

此时,FanciSwarm™ 无人机的电调指示灯熄灭,同时,Mcontroller 右侧的 LED 绿灯熄灭、LED 红灯点亮。FanciSwarm™ 无人机完成锁定。

关闭无人机和基站

FanciSwarm™ 无人机锁定后,如果不继续飞行,请及时关闭无人机和基站,并断开电池连接,以减少电量消耗。

UWB 轨迹飞行流程完成。


返回教程目录 · 上一章:fcu_bridge_001 与 fcu_server_001 核心代码说明 · 下一章:GNSS(RTK) 套件使用 fcu_core_v2