组合算法进行自主飞行
2024-10-20
本篇目标:演示如何通过组合已适配的算法,并进行调参调优后,实现无人机自主避障飞行至预设的目标点
这里是一个完整的自主飞行的示例:
接下来让我们一步一步来复现该实验:
一、下载项目代码最新版本
git clone --recursive https://gitee.com/emnavi/X152b.git
# 编译 (首次编译时耗时较长,需要耐心等待)
cd X152b
catkin_make -j4
不了解本项目各模块功能用途?
本项目提供了丰富的前沿无人机自主飞行算法,你可以通过这个文件树来简单了解该项目的各文件主要功能:
- scripts # 存放常用工具脚本
- one_shot_single.sh# 无人机初始化
- takeoff.sh# 起飞
- land.sh# 降落
- kill_one_shot.sh# 关闭所有程序
- src# 存放代码文件
- autonomous_drone_sdk# 各类基础功能实现
- global_interface# 接口层(存放参数文件、通讯接口等)
- …
- modules# 飞控驱动、相机驱动、通讯驱动等实现
- …
- global_interface# 接口层(存放参数文件、通讯接口等)
- 算法1
- run.sh# 算法一键运行脚本
- ...
- 算法2
- run.sh# 算法一键运行脚本
- ...
- ...# 更多适配算法持续更新中
- autonomous_drone_sdk# 各类基础功能实现
二、验证视觉里程计功能
由于无人机的定位依靠里程计完成,因此首先需要验证视觉里程计运行良好。
三、验证无人机起降功能
有了良好的定位后,此时可以验证无人机起降是否正常。
准备工作
做好飞行准备,确保电量充足。
从地面起飞
执行脚本后,脚本会向飞机的
/swarm_takeoff
话题发送一个起飞消息,使得飞机到达悬停目标点。悬停目标点默认设置为
[0, 0, 1.2]
, 即飞机飞到距地 1.2 米的位置然后悬停。# 在无人机电脑的终端内执行 cd X152b bash ./scripts/take_off.sh
从空中降落
执行脚本后,脚本会向飞机的
/swarm_land
话题发送一个降落消息。降落消息会使飞机降落到
[0, 0, 0]
处, 然后停桨。# 在无人机电脑的终端内执行 cd X152b bash ./scripts/land.sh
至此,能确保无人机能正常依靠里程计信息到达预设的目标点(悬停点和降落点),下面可以进行预设一系列的目标点进行自主飞行了。
四、验证轨迹规划功能
完整自主飞行试验命令参考
至此,你可以加熟悉自主飞行的流程了,要想复现本文开头视频中的自主飞行试验,完整步骤命令如下:
# 在无人机电脑的终端内执行
cd X152b
# 先关闭所有程序
bash scripts/kill_one_shot.sh
# 无人机初始化
bash scripts/one_shot_single.sh
# 运行 Vins-Fusion 视觉里程计算法
bash src/vins_fusion/run.sh
# 起飞,等待片刻飞机将起飞
bash scripts/take_off.sh
# 当飞机起飞定高稳定后,再运行 Ego-Planner 规划算法
bash src/ego_planner_swarm_v1/run.sh
# 当 Ego-Planner 运行结束后进行降落
bash scripts/land.sh
# 关闭所有程序
bash scripts/kill_one_shot.sh
由于视觉里程计会存在累计误差,建议每次使用时,应当重新执行一遍所有流程,而不是重复利用之前已开启的里程计。