主题模式
FCU、RViz 与无人机起飞
本页检查飞控设备与网络,启动 fcu_core 和 RViz 自定义面板,并在完成最终安全核对后解锁、起飞。
1. 检查飞控设备和网络
如果使用串口,在容器内检查是否能访问飞控设备:
bash
ls -l /dev/ttyACM*
ls -l /dev/ttyUSB*当前 fcu_core_launch.py 使用 /dev/ttyACM0 和波特率 460800。若实际设备号不同须先修改 launch 配置。
使用网络连接时,根据现场无人机 IP 检查连通性。例如当前 launch 中无人机 1 和 2 的地址分别包括 192.168.1.100 和 192.168.1.29,则检查示例如下:
bash
ping -c 3 192.168.1.100如果 Wi-Fi 模块尚未设置,请先完成配置无人机 Wi-Fi 模块,再继续启动 fcu_core。
核对实际设备数量
当前 launch 会启动 fcu_bridge_001 至 fcu_bridge_006 六个节点。飞行前必须核对无人机数量、编号、IP、串口和动捕刚体配置与现场设备保持一致。
2. 启动 fcu_core 和 RViz
另开终端 E ,进入容器:
bash
docker exec -it aiswarmlab_vrpn /bin/bash容器内执行:
bash
cd /home/linuxbrew/swarmlab_simulator_ws
source /opt/ros/humble/setup.bash
colcon build
source install/setup.bash
ros2 launch fcu_core fcu_core_launch.py该 launch 会启动:
fcu_bridge_001至fcu_bridge_006;- RViz2;
- FanciSwarm 自定义控制面板。
成功后应满足:
- 桌面出现 RViz2;
- 终端 E 没有持续出现包缺失、串口或网络错误;
ros2 node list出现/fcu_bridge_001等节点;- RViz 显示
FanciSwarm Control Panel。
面板未显示时,在 RViz 中选择:
text
Panels -> Add New Panel -> rviz2_custom_panel/Rviz2Panel3. ROS 2 最终检查
回到终端 D 并执行:
bash
ros2 node list | sort
ros2 topic list | sort
ros2 topic info /uav_1/pose -v
ros2 topic info /command -v检查电池话题:
bash
ros2 topic echo --once /uav_1/battery检查位姿仍在更新:
bash
ros2 topic echo --once /uav_1/pose在 RViz 面板启动后,/command 应能看到控制面板发布者;在 FCU bridge 正常启动后,也应能看到对应订阅者。
严禁在以下任一情况下解锁:
- 位姿话题不存在或已经停止更新;
- 无人机编号与刚体名称不一致;
- RViz/FCU 终端持续报错;
- 电池电量不足;
- 飞行区域内仍有人;
- 坐标轴或机头方向尚未确认;
- 无法执行降落或急停。
4. 使用 RViz 解锁并起飞
RViz 自定义面板的主要按钮为:
| 按钮 | /command 数据值 | 作用 |
|---|---|---|
| 解锁 | 1 | Arm |
| 上锁 | 2 | Disarm |
| 起飞 | 3 | Takeoff |
| 降落 | 4 | Land |
推荐操作顺序:
- 最后一次确认飞行区无人、位姿正常、飞控在线。
- 在 RViz 的
FanciSwarm Control Panel中点击“解锁”。 - 观察无人机、RViz 和终端 E 的反馈,等待 2 至 3 秒。
- 确认没有异常后点击“起飞”。
- 无人机离地后先保持低高度悬停,至少观察 5 秒。
- 确认位置、姿态和高度稳定后,再进入算法演示。
点击解锁后没有反应,只有三声报警音效
不要连续反复点击,按照点击解锁后无人机无法解锁进行操作。
首次真机测试
不要直接运行大范围或高速算法。出现漂移、坐标跳变、姿态异常或通信中断时,立即降落或执行现场急停。
5. 命令行备用控制
仅在 RViz 面板不可用且已经确认 /command 发布订阅关系时使用:
bash
# 解锁
ros2 topic pub --once /command std_msgs/msg/Int16 "{data: 1}"
# 起飞
ros2 topic pub --once /command std_msgs/msg/Int16 "{data: 3}"
# 降落
ros2 topic pub --once /command std_msgs/msg/Int16 "{data: 4}"
# 上锁
ros2 topic pub --once /command std_msgs/msg/Int16 "{data: 2}"发送前建议先执行:
bash
ros2 topic info /command -v起飞并确认悬停稳定后,进入算法与场景演示。
