6.3 单目视觉控制例子
6.3.1 无人机撞击小球实验
- 在Windows资源管理器中,打开并进入“RflySimAPIs\PythonVisionAPI\2-ShootBall”文件夹,其中的内容如下图
- 其中,“PX4MavCtrlV4.py”是上一节介绍的接口文件,“ScreenCapApiV4.py”是从RflySim3D取图的接口文件,“ShootBall3.py”是本例程的主Python程序,“ShootBall3HITL.bat”是快速启动硬件在环仿真的脚本,“ShootBall3SITL.bat”是快速启动软件在环仿真的脚本。如右下图所示,后两者相对于桌面S/HITLRun快捷方式的区别在于:“UE4_MAP” 地图场景变量选择了用于视觉的平坦草地场景“VisionRingBlank” ;其次,“UDPSIMMODE”通信UDP模式选择了“Mavlink_Full”模式,便于与Python通信;最后打开2个RflySim3D窗口
6.3.2 撞击小球实验代码解析
- 用VS Code打开“ShootBall3.py”文件,查看源码和注释如下
- 导入所以库文件,如图 1
- 导入MAVLink控制和RflySim3D视景控制接口库,如图 1
- 计算红球位置和半径的函数,如图 2
- 控制器函数,用于将图像误差转变为速度控制误差,如图 3
- 图像处理函数,用于根据图像求解Pixhawk控制速度量,如图 4
- 饱和函数,用于限制输出最大控制速度,如图 4
- 初始化MAVLink连接以及其他所有变量,如图5
- 发送命令控制RflySim3D的窗口显示期望视角,如图6
- 获取RflySim3D的前置摄像头视角用于图像处理,如图7
- 生成一个100Hz的计时器,如图7
- 解锁飞机并起飞到地面5m高,如图8
- 飞到当前位置30m后,5m侧向位置,如图8
- 处理图像并控制飞机向红色小球靠近,如图8
图1
图2
图3
图4
图5
图6
图7
图8
6.3.3 撞击小球实验运行效果
- 双击运行“ShootBall3SITL.bat”文件开启软件在环仿真系统,再运行“ShootBall3.py”程序。在前方生成一个红色球体,让飞机飞到靠左后方一段距离,并开启视觉跟踪,飞到小球面前停止。
- 若要使用硬件在环仿真,设置好飞控后,运行“ShootBall3HITL.bat”脚本,并输入飞控串口号,来开启硬件在环仿真系统 注:如果电脑性能不佳导致飞行抖动,可以手动关闭后打开的RflySim3D窗口(尾随观察视角)
6.3.4 无人机穿环实验
- 在Windows资源管理器中,打开并进入“RflySimAPIs\PythonVisionAPI\3-CrossRing”文件夹,其中的内容如下图
- 其中, “CrossRing3.py”是本例程的主Python程序;“ShootBall3HITL.bat”和“ShootBall3SITL.bat”相对于上一个撞击小球的例子的区别在于:“UE4_MAP”地图场景变量选择了用于视觉穿环场景“VisionRing” 。注其“UDPSIMMODE”通信UDP模式也选择了“Mavlink_Full”模式
6.3.5 穿环实验代码解析
1. 偏航角速率控制饱和函数,如图1
2. 基于飞行距离的任务切换逻辑,如图1
3. 目标检测函数,如图2
4. 方形靶标检测函数,如图3
5. 圆环靶标检测函数,如图4
6. 目标接近控制函数,如图5
7. 主函数,包含MAVLink接口初始化和RflySim3D视角控制,,如图6
8. 检测RflySim3D窗口显示是否正常,,如图7
9. 在第5s起飞到5m高,然后第15s开始自主穿环,,如图7
10. 进入穿环控制循环,,如图7
图1
图2
图3
图4
图5
图6
(
图7
6.3.6 穿环实验运行效果
- 双击运行“CrossRing3SITL.bat”文件开启软件在环仿真系统,再运行“CrossRing3.py”程序。
- 飞机起飞后按照顺序穿过三个环,最后自动降落。
- 若要使用硬件在环仿真,设置好飞控后,运行“CrossRing3HITL.bat”脚本,并输入飞控串口号,来开启硬件在环仿真系统
注:如果电脑性能不佳导致飞行抖动,可以手动关闭后打开的RflySim3D窗口(尾随观察视角)
本视频观看地址: 优酷:https://v.youku.com/v\_show/id\_XNDcwNjA4NTYwNA==.html YouTube:https://youtu.be/PvxEfY7oMq4