Uav toolbox使用
https://ww2.mathworks.cn/help/uav/ug/uav-package-delivery.html
❤️ 1.UAV toolbox 介绍
UAV 工具箱提供了用于设计、模拟、测试和部署无人机、无人驾驶飞行器(UAV)以及先进空中机动(AAM)应用的工具和参考应用程序。您可以设计飞行控制器、开发自主算法并规划无人机任务。飞行日志分析器应用程序允许您交互式地分析三维飞行路径、遥测信息和传感器数据。您可以生成并模拟无人机场景,用于桌面模拟以及飞行控制器和自主算法的硬件在环(HIL)测试。您可以在逼真的 3D 环境中,或者在 2.5D 模拟环境中模拟相机、激光雷达、惯性测量单元(IMU)和全球定位系统(GPS)传感器的输出。 UAV 工具箱提供了诸如使用多旋翼无人机进行自主无人机包裹配送以及采用垂直起降(VTOL)飞机实现先进空中机动等应用的参考示例。该工具箱还支持 C/C++ 代码生成,用于快速原型开发、硬件在环测试以及向诸如 Pixhawk 自动驾驶系统(搭配嵌入式编码器®)等硬件的独立部署。
❤️2.例程
⭐️在matlab终端命令行中运行代码
openExample('uav/UAVPackageDeliveryExample')
运行这段代码,如果不开魔法
可能会报错,如下:
⭐️运行上述代码后会下载相关工程
❤️ 1. Getting Started
⭐️点击**“Getting Started”**项目快捷方式
该快捷方式会为一个包含四个航点的任务配置模型,并使用一个低保真度的多旋翼飞行器(multirotor)动力学模型。
随后运行uavPackageDelivery
模型,该模型会在一个三维(3-D)图中展示多旋翼飞行器的起飞、飞行和降落过程。
命令窗口会显示如下:
⭐️在uavPackageDelivery 进行运行
❤️ 发现一个问题,第一次运行后,将3D的图像关闭,再次运行后,发现不显示图像。我这里要重新打开一遍simulink文件才能可以继续显示。
该模型使用 UAV Path Manager(无人机路径管理器)模块 来确定在整个飞行过程中当前激活的航点。
该激活的航点被传递给 Guidance Mode Selector(制导模式选择器)Stateflow® 图,以生成所需的内环控制指令。
❤️ 连接地面控制站(GCS)
当你能够执行一个基本飞行任务后,就可以将仿真与地面站软件集成,从而更灵活地控制飞行器的任务。为此,你需要下载并安装 QGroundControl 地面控制站软件。 (https://qgroundcontrol.com/)
该模型使用 UAV Toolbox™ 中的 mavlinkio
功能,在 Simulink 与 QGroundControl 之间建立连接。该连接通过一个 MATLAB System 模块 实现,位于模型路径:
uavPackageDelivery / Ground Control Station / Get Flight Mission / QGC / MAVLink Interface
。
要测试 Simulink 与 QGroundControl 之间的连接,请按以下步骤操作:
-
点击 “Connecting to a GCS”(连接地面控制站) 项目快捷方式。
-
启动 QGroundControl 软件。
-
在 QGroundControl 中,加载位于
/utilities/qgc/
的shortMission.plan
。
-
运行 Simulink 仿真。
5. 当 QGroundControl 显示已成功连接到系统后,上传任务。
6. 飞行器起飞后,你应该能在仿真中看到无人机按照 QGroundControl 发送的任务执行飞行,如下图所示。
你可以通过添加新的航点或移动任务中已有的航点来修改飞行任务。上传更新后的任务后,飞行器应能响应这些更改。
❤️3.设置立方体场景(Cuboid Scenario)
现在,飞行器模型已经能够通过地面控制站进行控制,接下来需要考虑飞行器所处的飞行环境。在本示例中,使用 uavScenario
对象构建了一个立方体场景(cuboid scenario),模拟了若干个城市街区。该场景基于下图左侧所示的城市街区布局。
为了在此类场景中安全地飞行飞行器,模型需要配备能够提供环境信息的传感器,例如激光雷达(LiDAR)传感器。本示例通过 uavSensor
对象,将一个 uavLidarPointCloudGenerator
对象添加到无人机场景中。该激光雷达传感器模型会根据传感器自身的位姿(位置和姿态)以及环境中障碍物的情况,生成相应的点云数据。
请点击 “Setting a Cuboid Scenario”(设置立方体场景) 项目快捷方式,然后运行模型。在模型运行过程中,随着飞行器穿越立方体环境,将实时显示激光雷达生成的点云图像:
❤️障碍物避让(Obstacle Avoidance)
为了在环境中避开障碍物,模型必须在无人机执行任务飞行时,利用可用的传感器数据进行实时避障。
要修改模型的配置,请点击 “Obstacle Avoidance”(障碍物避让) 或 “3D Obstacle Avoidance”(三维障碍物避让) 项目快捷方式:
-
点击后会弹出一个示波器(Scope),显示无人机在立方体环境中距离建筑物的最近点距离。
-
“Obstacle Avoidance” : 会将模型配置为使用平面激光雷达(planar LiDAR)数据,并结合 矢量场直方图(Vector Field Histogram, VFH)(来自 Navigation Toolbox),通过在当前 x-y 平面内调整无人机航向 来避开障碍物。
-
“3D Obstacle Avoidance” : 则配置模型使用三维激光雷达点云数据,实现三维空间中的障碍物避让,此时无人机不仅能左右绕行,还能调整飞行高度以飞越障碍物。
运行模型后:
- 在 “Obstacle Avoidance” 模式 下,无人机会尝试沿建筑物之间的直线路径飞往投递点,但在途中遇到障碍物时会自动偏离原路径进行避让。你可以观察到与障碍物距离随时间的变化。
- 在 “3D Obstacle Avoidance” 模式 下,行为类似,但无人机还能通过升降高度(z 方向)来规避障碍,例如从障碍物上方飞过,从而实现更灵活的三维避障。
❤️ 逼真视觉仿真(Photorealistic Simulation)
到目前为止,仿真环境一直是一个简单的立方体(cuboid)场景。为了提升环境的真实感和仿真保真度,请点击 “Photorealistic Simulation”(逼真视觉仿真) 项目快捷方式。该操作会将飞行器置于一个更加逼真的三维世界中进行飞行。
此时,位于路径
uavPackageDelivery / photorealisticSimulationEngi / SimulationEnvironmentVariant
下的 PhotorealisticQuadrotor variant
将被激活。该变体包含了配置高保真仿真环境以及安装在飞行器上的传感器所需的全部模块,例如:
- 用于渲染逼真场景的环境模型(如 Unreal Engine 场景)
- 相机、激光雷达等传感器的高精度模型
- 与外部仿真引擎(如 Unreal Engine)的接口模块
通过启用此变体,你可以在接近真实世界的视觉环境中测试无人机的感知、导航与任务执行能力。
运行模型。此时飞行器将执行与步骤 1 和步骤 2 中相同的飞行任务。注意观察:在飞行过程中,激光雷达(LiDAR)点云数据会实时更新,同时还会显示来自机头前向摄像头的图像。
❤️在逼真视觉仿真环境中执行完整任务
接下来,点击 “Fly Full Mission”(执行完整任务) 项目快捷方式。该快捷方式会配置模型,使其在逼真视觉仿真环境中,像步骤 2 中那样与 QGroundControl 建立连接,从而支持从地面站上传飞行任务。
请按以下步骤运行仿真:
- 启动 QGroundControl。
- 在 QGroundControl 中,加载位于
/utilities/qgc/
shortMission.plan
。
和上述一样的步骤
- 运行仿真。
- 当 QGroundControl 显示已成功连接到系统后,上传任务。
当飞行器开始飞行时,你可以在 QGroundControl 中动态修改任务:
- 添加新的航点,或拖动已有航点调整其位置。
修改完成后,重新上传任务,飞行器应能实时响应这些更改。
在整个飞行过程中,你将看到无人机在逼真的三维场景中执行任务,包括起飞、按航点飞行、避障(如已启用)以及最终降落。
❤️在逼真视觉仿真环境中执行带障碍物避让的飞行任务
接下来的目标是:在 QGroundControl 中指定起飞点和降落点,并利用障碍物避让功能,使无人机在沿规划路径飞行的过程中自动避开沿途的障碍物。
请点击 “Fly Full Obstacle Avoidance”(执行完整障碍物避让任务) 或 “Fly Full 3D Obstacle Avoidance”(执行完整三维障碍物避让任务) 项目快捷方式,然后按照以下步骤运行仿真:
- 启动 QGroundControl。
- 在 QGroundControl 中,加载位于项目目录
/utilities/qgc/
下的任务计划文件oaMission.plan
。
3. 运行仿真。
4. 当 QGroundControl 显示已成功连接到仿真系统后,点击 “Upload Mission”(上传任务)。
在整个飞行过程中,请注意观察:
- 无人机会尽量遵循 QGroundControl 中设定的指令路径;
- 同时,它会实时感知环境并主动避开建筑物等障碍物,防止发生碰撞。
关键区别:
- 如果你选择的是 “Fly Full Obstacle Avoidance”(2D 避障模式),无人机会在水平面(x-y 平面)内绕行障碍物;
- 如果你选择的是 “Fly Full 3D Obstacle Avoidance”(3D 避障模式),无人机会飞越较低的建筑物(通过调整飞行高度),实现更灵活的三维空间避障。
通过这一任务,你可以在高保真的视觉仿真环境中,直观体验无人机如何在执行用户规划任务的同时,智能地应对复杂城市环境中的障碍物。
❤️ 添加六自由度(6DOF)高保真飞行器模型以提升仿真精度
作为最后一步,请点击 “Adding a High Fidelity Plant”(添加高保真动力学模型) 项目快捷方式。该操作将激活位于以下路径的高保真无人机模型变体:
uavPackageDelivery / MultirotorModel / Inner Loop and Plant Model / High-FidelityModel
此高保真变体包含:
- 一个精细化的内环控制器(inner-loop controller),用于精确控制姿态和速率;
- 一个六自由度(6DOF)高保真飞行器动力学模型(plant model),能够更真实地模拟多旋翼飞行器在三维空间中的运动行为,包括质量分布、惯性、空气动力学效应等。
启用该模型后,仿真将不再使用简化的低保真模型,而是基于更接近真实物理特性的动力学方程进行计算,从而显著提升仿真结果的准确性和可信度,特别适用于控制算法验证、传感器融合测试或高精度任务仿真等场景。
运行模型。由于采用了高保真模型,飞行行为可能会有细微变化(例如响应速度、姿态调整或轨迹平滑度等),但无人机仍将执行相同的飞行任务。
当你完成对各模型的探索后,请关闭该项目文件。
close(prj);