使用Simulink的摄像机传感器避障

版本1.0.0 (1.56 MB MathWorks学生竞赛团队
利用车辆前视摄像头计算的光流算法实现无人机/UGV的避障。

298下载

更新2021年6月14日

从GitHub

在GitHub上查看License

使用Simulink的摄像机传感器避障

的实现光流算法避障。在这里,无人机要穿越一个仿真软件®3 d动画竞技场采用光流算法计算,利用无人机的前视摄像头。本模型旨在帮助您开始在地面/空中机器人中使用计算机视觉和控制系统。使用该模型,您可以使用车辆的正面(鸟瞰)视觉数据使您的无人机/UGV避开障碍物。

看看解释这个例子的视频:https://www.youtube.com/watch?v=YTmq13xGnLg

对该模型

该模型展示了实现光流算法的工作流程,用于引导无人机通过具有极点作为障碍物的竞技场。

以下步骤描述了工作流程:

  1. 从机载摄像机获取输入图像。
  2. 从图像中计算光流线Horn-Schunck方法
  3. 实现一种从计算的流线转向车辆的算法
  4. 实现基于交换的逻辑Stateflow®从光流算法切换到PID控制算法。
  5. 通过与虚拟世界相关联的VR Sink块(用于设置无人机的位置/旋转和虚拟世界对象的视觉属性)可视化无人机导航障碍物。

当你打开模型并执行它时,无人机将从直升机停机坪起飞,通过避开障碍物导航,一旦它检测到它接近着陆区域,切换到PID控制器,最终,降落在着陆直升机停机坪上。

模型

obstacleAvoidanceUsingOpticalFlow.slx该模型实现了光流算法的障碍物导航和PID控制算法的无人机着陆。

startScript.mlx包含模型中使用的常量。

virtualworld文件夹包含在Simulink 3D动画世界中显示四轴飞行器所需的文件

uav_environment.wrl显示用于模拟的三维环境。

注意:在运行模型之前,请确保所有这些文件都在当前文件夹中

如何运行模型?

  • 打开Simulink模型obstacleAvoidanceUsingOpticalFlow.slx

  • 模型自动添加virtualworld文件夹到路径。检查PostLoadFcn模型的回调

  • 模型自动加载startScript.m它初始化运行模型所需的参数。检查InitFcn模型的回调

  • 运行模型。

模型中的假设

  • 在设计系统时,将无人机作为一个点质量考虑,不考虑无人机的动力学。
  • 无人机的反馈来自Simulink 3D动画传感器。
  • 该模型假设用户知道在什么点控制器从使用光流切换到使用PID控制器。
  • 该模型还假设落点位置的x坐标大于光流控制器到PID控制器的过渡点的x坐标。

注意:不要更改鸟的眼睛视图的车载摄像头而且虚拟现实的传感器块。这将影响光流算法,因为我们需要来自前相机的图像。

的子系统

  • 传感器输入:传感器输入(摄像头视图和估计位置)
  • 光流线计算:使用“Horn-Schunk”方法计算图像的光流线。
  • 光流避障算法:转向车辆的控制器:
    • FlowDifferencesMATLAB®函数:由该系统计算左右光流。
    • 光流算法和着陆PID控制器:
      • DronePositionEstimation:
        1. OpticalFlowAlgorithm:线速度的符号(V_Y)根据左右光流分配
        2. ControlAlgorithm:切换到PID控制器,使其悬浮在目标坐标之上。
        3. DroneLanding:把无人机降到地面上。
      • DroneOrientationEstimation:
        1. OpticalFlowAlgorithm:角速度的符号(W_Y)根据左右光流分配
        2. ControlAlgorithm:从角速度求出方向
  • 三维可视化:一旦在模型中估计出位置和方向输出,它们被发送到VR接收器块,然后用于设置无人机的位置/旋转。
  • 降落直升机停机坪与当前位置之间的距离:这个子系统计算当前点和直升机停机坪位置之间的距离。如果无人机靠近直升机停机坪,就会停止模拟。由于降落直升机停机坪上的传感器将被激活,螺旋桨将被关闭。

如何更改起始位置、落地位置等参数?

模型中使用的所有变量都包含在startScript.m文件。要更改任何参数,请更改文件中的变量值。你可以运行文件,以确保变量已更新。

  • droneStartLocation:无人机将从哪里起飞的位置。
  • helipadLocation:无人机将降落的位置。目前这里被指定为直升机停机坪的中心位置。这可以修改为无人机需要着陆的值。
  • linearVelocity:光流导航时的线速度[V_X V_Z V_Y]。
  • angularVelocity:光流导航时的角速度[W_X W_Z W_Y]。
  • angularVelocityforLanding:无人机着陆时的角速度。
  • switchingXLimit:光流控制器切换到PID控制器的x坐标
  • finalHoverHeight:降落前越过直升机停机坪的高度。
  • δ:执行PID控制器的阈值距离。如果无人机的当前坐标在此范围内,无人机将开始着陆δ价值。

如何调整线速度和角速度?

定义的线速度和角速度startScript.mlx如果Simulink 3D动画环境被修改,需要调整。以下是调优相同的步骤:

  1. 确保在给定的线速度下,无人机不会移出竞技场。
  2. V_Y是取决于光流算法输出的速度。这里,V_Y的模不变,只是符号变了。如果:
    • vleftflow>vrightflow,然后V_Y是正的。因此,无人机将转向其右侧。
    • vrightflow>vleftflow,然后V_Y是负的。因此,无人机将转向左侧。
  3. 同样的,角速度W_Y将根据光流算法的输出来确定。这里,W_Y的大小不变,只是符号改变了。如果:
    • vleftflow>vrightflow然后W_Y是负的(顺时针)
    • vrightflow>vleftflow然后W_Y是积极的(逆时针)
  4. 如果无人机不能绕过所有的障碍与给定V_Y,改变V_Y随着滚动速度的增加。
  5. 总是尝试较小的角速度值,以确保较少的振荡,因为决策是根据流量差异做出的。例如,如果无人机的两侧有很多障碍物,标志flowDifference将迅速翻转。如果这里的角速度很高,无人机就会有太多的振荡,这是不可取的。

请注意:线速度的第一个分量是V_X,线速度的第二个分量是V_Z,线速度的第三分量是V_Y

产品需求

该模型使用以下MathWorks产品:2022世界杯八强谁会赢?

  1. MATLAB
  2. 仿真软件®
  3. 仿真软件3 d动画
  4. Stateflow
  5. 航空航天Blockset™
  6. 航空航天工具箱
  7. 计算机视觉工具箱™

如有任何问题,请与我们联系roboticsarena@mathworks.com

版权所有:The MathWorks, Inc.

引用作为

MathWorks学生竞赛团队(2022年)。使用Simulink的摄像机传感器避障GitHub (https://github.com/mathworks-robotics/obstacle-avoidance-using-camera/releases/tag/1.0.0)。检索

MATLAB版本兼容性
创建R2021a
兼容R2021a及后续版本
平台的兼容性
窗户 macOS Linux

世界杯预选赛小组名单社区寻宝

在MATLAB中央找到宝藏,并发现社区可以如何帮助你!世界杯预选赛小组名单

开始狩猎!

模型

要查看或报告此GitHub插件中的问题,请访问GitHub库
要查看或报告此GitHub插件中的问题,请访问GitHub库
Baidu
map