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. 导入所以库文件,如图 1
    2. 导入MAVLink控制和RflySim3D视景控制接口库,如图 1
    3. 计算红球位置和半径的函数,如图 2
    4. 控制器函数,用于将图像误差转变为速度控制误差,如图 3
    5. 图像处理函数,用于根据图像求解Pixhawk控制速度量,如图 4
    6. 饱和函数,用于限制输出最大控制速度,如图 4
    7. 初始化MAVLink连接以及其他所有变量,如图5
    8. 发送命令控制RflySim3D的窗口显示期望视角,如图6
    9. 获取RflySim3D的前置摄像头视角用于图像处理,如图7
    10. 生成一个100Hz的计时器,如图7
    11. 解锁飞机并起飞到地面5m高,如图8
    12. 飞到当前位置30m后,5m侧向位置,如图8
    13. 处理图像并控制飞机向红色小球靠近,如图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窗口(尾随观察视角)

results matching ""

    No results matching ""