激光雷达(Fasterlio 定位)套件多机飞行

阅读本章前,请先完成激光雷达 SLAM 套件的单机飞行教程。 所有参与多机飞行的无人机均须通过单机试飞,确认运行正常后,方可进行多机飞行。

配置联网模块

集群飞行需要所有无人机都连接到同一个局域网。 因此,需为各无人机的 Mlink-esp Wi-Fi 模块配置 IP 地址。

使用 Mlink-esp 调试器配置

说明:Mlink-esp 调试器可简化组网配置。未配备该调试器的 FanciSwarm™ 集群套件用户,可通过原购买渠道向幻思创新申请;申请通过后,将免费寄送。

先将 Mlink-esp Wi-Fi 模块连接至 Mlink-esp 调试器,再通过 USB 将调试器连接至电脑。具体步骤如下:

  1. 连接 Mlink-esp 调试器

将 Mlink-esp Wi-Fi 模块从 FanciSwarm™ 无人机上取下,按照下图所示,将 Mlink-esp Wi-Fi 模块与 Mlink-esp 调试器连接。 注意:请按图示方向连接,严禁反接。反接会烧毁设备。

图片

  1. 下载串口助手

下载串口助手并解压,在电脑上双击 sscom5.13.1.exe 文件。

  1. 打开串口助手并连接 Mlink-esp 调试器

打开上一步下载的串口助手软件,将 Mlink-esp 调试器与电脑连接。

  1. 设置串口助手

点击端口号下拉菜单,选择“......USB-SERIAL CH340”对应的端口,再按下一步说明输入 AT 指令,如下图所示。

图片

  1. 发送 AT 指令

在输入框中依次输入以下 AT 指令并发送: (1)重启模块。输入以下指令并发送:

AT+RST\r\n

(2)恢复出厂设置。输入以下指令并发送:

AT+RESTORE\r\n

(3)设置为 Station 模式(默认使用 AP 模式)。输入以下指令并发送:

AT+CWMODE_DEF=1\r\n

(4)设置要连接的路由器名称和密码。输入以下指令并发送: 注意:Wi-Fi 名称不能使用中文。 (例:AT+CWJAP_DEF="Fancinnov","Mcontroller"\r\n)

AT+CWJAP_DEF="WiFi名称","WiFi密码"\r\n

串口助手接收界面显示“WIFI CONNECTED”时,表示组网模块已连接路由器;显示“WIFI GOT IP”时,表示模块已获得 IP 地址。若未显示上述信息,请重新尝试连接。

(5)查询 IP 地址。输入以下指令并发送:

AT+CIFSR\r\n

上述指令成功发送后,串口助手接收界面会显示路由器分配到该组网模块的 IP 地址。

(6)设置固定的 IP 地址。输入以下指令并发送:

AT+CIPSTA_DEF="ip","网关","子网掩码"\r\n

固定 IP 地址、网关和子网掩码须与实际局域网配置一致。例如,若局域网网关为 192.168.0.254、子网掩码为 255.255.255.0,且 192.168.0.100 尚未被占用,可发送 AT+CIPSTA_DEF="192.168.0.100","192.168.0.254","255.255.255.0"。指令中的符号均使用英文半角字符。每架无人机须分配不同的 IP 地址,并避免与网关或其他设备冲突;静态地址应避开路由器的 DHCP 自动分配范围,或在路由器中设置地址保留。

(7)查询 IP 地址,确认设置是否成功。输入以下指令并发送:

AT+CIFSR\r\n

若串口助手返回的 IP 地址与上一步设置一致,表示配置成功。请记录该 IP 地址。

导入 ROS 工程

集群飞行的配置流程与单机飞行相似,主要区别如下:

从 GitHub 获取源码(已完成此步骤时可跳过)

创建工作空间:

mkdir -p ~/ros_ws/src

拉取 fcu_core_v2 和 quadrotor_msgs: 项目 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.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"/> <!-- offboard更改为false -->
        <param name="use_uwb" value="false" type="bool"/> <!-- use_uwb更改为false -->
        <param name="set_goal" value="true" type="bool"/> <!-- set_goal更改为true -->
        <param name="simple_target" value="true" type="bool"/> <!-- simple_target更改为true -->
        <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>
        <node pkg="fcu_core" type="fcu_bridge_002" name="fcu_bridge_002" output="screen" >
        <remap from="~odometry_002" to="odometry_002"/>
        <remap from="~imu_global_002" to="imu_global_002"/>
        <remap from="~odom_global_002" to="odom_global_002"/>
        <remap from="~path_global_002" to="path_global_002"/>
        <remap from="~path_target_002" to="path_target_002"/>
        <remap from="~motion_002" to="motion_002"/>
        <remap from="~command" to="/fcu_command/command"/>
        <remap from="~mission_002" to="/fcu_mission/mission_002"/>
        <param name="DRONE_IP" value="192.168.0.202" 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"/> <!-- offboard更改为false -->
        <param name="use_uwb" value="false" type="bool"/> <!-- use_uwb更改为false -->
        <param name="set_goal" value="true" type="bool"/> <!-- set_goal更改为true -->
        <param name="simple_target" value="true" type="bool"/> <!-- simple_target更改为true -->
    </node>

系统测试

将无人机放置在地面上,并按 ID 从大到小的顺序启动。例如,两架无人机的 ID 为 0 和 1 时,先启动 1 号机,再启动 0 号机。 EGO 成功启动后的界面如下图所示: 通过 VNC 远程连接机载电脑时的画面: 图片 fcu_core_v2 的 RViz 界面: 图片

提起无人机,移动一段距离后放回地面,并检查显示轨迹是否与实际运动一致。正常轨迹如下图所示: 图片

catkin_make
source ./devel/setup.bash

随后运行 ROS 程序:

roslaunch fcu_core fcu_core.launch

终端显示以下信息时,表示已收到心跳包,连接成功。 图片

飞行测试

飞行前准备

确保起点和终点周围 1 m 范围内无障碍物。

飞行测试注意以下事项:

完成上述检查并确认定位正常后,继续进行航点设置和解锁检查。若仅连接远程电脑上的 ROS 程序,未连接遥控器,则默认使用电脑控制模式。若同时连接机载电脑和遥控器,需注意:CH7 位于中间挡位时,无人机由遥控器控制;CH7 位于下方挡位时,无人机由电脑控制。

遥控器设置

图片

熟悉 RViz 插件操作

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

确认无人机连接

**启动顺序:**按系统测试中使用的无人机 ID 从大到小启动;本示例先启动 1 号机,再启动 0 号机。

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

catkin_make
source ./devel/setup.bash

随后运行 ROS 程序:

roslaunch fcu_core fcu_core.launch

设置航点

本节采用单次执行方式,请将 循环执行 设为 关;该设置同时作用于所有活动无人机。

根据实际飞行场地,将 活动无人机数量 设为 2,分别为两架无人机设置目标航点,并核对各机的起飞位置、目标高度和飞行路径。

图片

无人机解锁

(1)已启用 SLAM 定高的机型 可通过 global_gnss_001 / global_gnss_002 话题中的状态数据判断 SLAM 是否正常启动。 分别在两个终端中执行以下命令,逐一检查两架无人机的 SLAM 启动状态:

未启动或启动异常: 图片 正常启动: 图片

(2)未启用 SLAM 定高的机型(默认使用激光定高) FanciSwarm 无人机启动提示音结束后,将无人机垂直提起至离地超过 1 m,再放回地面,此操作执行一次即可。激光测距正常后才允许解锁;否则,系统会发出连续报警音,固件保持锁定,不允许起飞。

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

图片

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

起飞

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

图片

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

单步执行航点

点击一次 RViz 插件中的 单步执行 按钮,同时触发两架活动无人机各自的下一个航点。确认两架无人机当前航点均执行完成后,再次点击以继续后续航点。

航点执行区域:单步执行位于执行轨迹与停止轨迹之间;图中航点仅为界面示例

逐一检查两架无人机的航点执行进度,确认各机均按预设目标点执行。

降落

单步执行需要逐次触发后续航点。确认所有参与飞行的无人机均已完成各自的最后一个航点,并保持悬停后,再点击 RViz 插件中的 降落 按钮。

图片

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

锁定无人机

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

图片

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

关闭无人机

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

激光雷达 SLAM 多机飞行流程完成。


返回教程目录 · 上一章:深度相机(VINS 定位)套件多机飞行