旋翼飞控避障系统设计方案
type
status
date
slug
summary
tags
category
icon
password
1 概述2 需求分析3 功能性能指标3.1 功能指标3.2 性能指标4 方案设计4.1 软件设计方案4.1.1 局部路径规划总体设计方案4.1.2 全局路径规划总体设计方案4.1.3 局部路径规划详细设计4.1.4 全局路径规划详细设计4.2 技术关键点设计技术关键点设计4.2.1 3D VFH 算法4.2.2 安全措施与边界条件的调整3. 球体避障与最小距离约束4. 建立记忆机制的 3DVFH*5. 地面检测与高度控制5 工程实现5.1 局部路径规划实现5.2 全局路径规划实现6 功能性能指标符合性分析附录1:伴侣计算机MAVROS消息表7.1 通信数据流图7.2 通信描述附录2:飞行控制器模式设置
1 概述
该文档为旋翼飞控系统的避障算法详细设计方案,参考自PX4-Avoidance工程,参考代码链接为:https://github.com/PX4/PX4-Avoidance。
2 需求分析
目前的飞控系统尚未支持避障功能,而为了增强无人机在复杂环境中的自主飞行能力,增加避障功能显得尤为必要。PX4-Avoidance模块是无人机自主飞行中至关重要的组成部分,旨在提高无人机的安全性和可靠性。
需求分析表明,避免与障碍物的碰撞是确保无人机高效运行和安全飞行的基本要求。PX4-Avoidance模块与现有的PX4飞控系统深度集成,基于ROS和uORB通信机制,而我们的飞控系统基于vxworks框架,同样使用uORB和mavlink协议进行通信,这为两者的兼容性提供了良好的基础。通过合理的系统移植和优化,我们可以将PX4-Avoidance通过板载计算机集成到现有的框架中,以实现实时性、低延迟和对复杂环境的适应能力。
为了进一步提高飞行器避障的实时性,板载计算机需具备强大的计算能力,以处理来自多个传感器的数据输入,并实时计算避障路径。与飞控系统的通信通过MAVROS封装MAVLink协议进行,确保伴随计算机能够高效地向飞控系统发送路径规划指令。在硬件层面,深度相机和激光雷达等传感器的数据通过ROS节点传输给避障模块,避障模块根据传感器输入实时调整飞行路径,从而实现无人机的安全飞行。这种架构设计使得避障模块与飞控系统能够无缝集成,并保持较高的实时性和稳定性。
3 功能性能指标
3.1 功能指标
表 1 局部路径规划功能指标
序号 | 功能指标 | 描述 | 目标 |
1 | 路径规划方法 | 基于局部环境信息进行实时避障,使用局部感知数据来规划路径,快速生成安全的移动方向。 | 实现无人机在动态环境中的自主避障,确保快速响应障碍物。 |
2 | 计算复杂度 | 较低,适用于实时性要求高的场景,采用轻量级算法进行路径调整,以减小延迟。 | 保证实时性,适应复杂环境变化,提供平滑的导航体验。 |
3 | 适用场景 | 复杂地形中的即时避障,适用于密集障碍物环境和不断变化的场景。 | 提高无人机在狭小空间和动态环境中的操作能力。 |
4 | 依赖传感器 | 主要依赖于深度摄像头或激光雷达,以提供对周围环境的高精度感知。 | 提供精确的环境感知数据,确保障碍物检测的准确性。 |
5 | 规划频率 | 高频规划,持续接收传感器数据进行路径更新,保持无人机的安全飞行。 | 确保无人机快速反应并规避障碍物,避免碰撞风险。 |
6 | 环境适应能力 | 强,适应动态环境,能够处理快速变化的障碍物和不确定因素。 | 保证在复杂和未知环境中的可靠性,增强环境适应能力。 |
7 | 系统要求 | 低计算资源需求,适合嵌入式平台,能够在有限的硬件资源下正常运行。 | 适应现有嵌入式硬件资源,确保模块的可移植性和高效性。 |
表 2 全局路径规划功能指标
序号 | 功能指标 | 描述 | 目标 |
1 | 路径规划方法 | 基于全局地图生成最优路径,利用已知地图信息和全局数据计算最优飞行路径。 | 实现无人机在已知环境中的高效飞行,最小化飞行时间和能耗。 |
2 | 计算复杂度 | 较高,适用于路径规划精度要求高的场景,使用复杂算法进行全局路径优化。 | 提供最优的全局路径规划方案,确保长距离飞行的有效性。 |
3 | 适用场景 | 长距离飞行中的路径优化和规划,适用于预先已知的静态环境。 | 提高任务执行中的效率和精度,确保无人机在长距离任务中的可靠性。 |
4 | 依赖传感器 | 结合GPS、地图数据和其他传感器信息,用于提供全局定位和路径规划的基础数据。 | 保证路径规划的全局准确性,提高导航的整体可靠性。 |
5 | 规划频率 | 低频规划,主要在飞行任务开始前和飞行过程中定期更新全局路径。 | 确保全局路径的有效性和合理性,优化整体任务执行效率。 |
6 | 环境适应能力 | 适应静态环境或已知环境,主要用于在环境信息相对不变的情况下执行规划。 | 保证在已知环境中的高效导航,减少环境不确定性对飞行的影响。 |
7 | 系统要求 | 较高的计算资源需求,需较强计算能力,通常在地面站或高性能处理器上运行。 | 利用高性能计算设备以确保规划精度,适应复杂的全局计算任务。 |
3.2 性能指标
表 3 局部路径规划性能指标
序号 | 性能指标 |
1 | 路径更新频率:30Hz或更高 |
2 | 最大避障速度:5m/s |
3 | 规划响应时间:100ms或更低 |
4 | 处理深度相机数据延迟:50ms或更低 |
表 4 全局路径规划性能指标
序号 | 性能指标 |
1 | 路径更新频率:10Hz |
2 | 最大任务速度:1~1.5m/s |
3 | 全局地图更新延迟:200ms或更低 |
4 | 八叉树地图内存占用效率:500MB或更低 |
4 方案设计
4.1 软件设计方案
4.1.1 局部路径规划总体设计方案
图 1 局部路径规划总体设计方案
局部规划器在PX4避障系统中起着至关重要的作用,使无人机能够在动态环境中自主导航并避开障碍物。局部规划器基于点云数据,通过实时分析无人机周围的环境信息来规划安全路径。它采用3DVFH*算法,该算法结合了前瞻性和反应性策略,不需要构建全局地图,从而降低了计算复杂度,适用于处理器资源有限的小型无人机。
局部规划器首先初始化必要的参数,包括无人机的起始位置、传感器信息等。它通过接收多个深度相机或激光雷达的数据,更新无人机周围的障碍物信息。这些点云数据被转换为局部坐标系中的直方图,用于描述环境的障碍分布。随后,局部规划器根据最新的点云数据和历史记忆,生成避障路径。
局部路径规划还使用记忆策略,将前一时刻的直方图重投影到当前时刻,并融合当前的环境信息,形成一个组合直方图。通过这样的记忆机制,无人机能够在复杂环境中记住之前看到的障碍物,从而避免进入局部极小值状态。
局部规划器实时计算成本函数,包括与目标的距离、路径平滑度和与障碍物的距离。每一步规划时,无人机都会选择代价最低的路径前进,以确保路径的安全性和效率。此外,当无人机靠近障碍物时,局部规划器会动态调整其速度,以确保飞行过程中的安全。
4.1.2 全局路径规划总体设计方案
图 1 全局路径规划总体设计方案
全局规划器在PX4避障系统中扮演着关键角色,负责生成从起点到目标点的整体路径,确保无人机能够在复杂环境中高效地到达目的地。全局规划器使用Octomap等地图构建工具来建立环境的全局表示,并基于该地图生成最优路径。
全局规划器首先初始化必要的参数,包括无人机的起始位置和传感器信息。它从多个传感器(如GPS、相机等)接收数据,并利用这些数据动态更新环境地图。地图被构建为八叉树结构,能够高效地描述三维空间中的障碍物分布。
在路径规划过程中,全局规划器采用A*算法来搜索最优路径。该算法结合了启发式搜索和代价函数,确保生成的路径在整体上是最优的。当环境发生变化(如出现新的障碍物)时,全局规划器会重新计算路径,以保证无人机的飞行安全。
全局规划器与局部规划器协同工作,局部规划器负责处理即时的障碍规避,而全局规划器则提供整体的飞行方向。通过这种协作方式,无人机能够在复杂环境中既保证整体的路径优化,又能在动态环境中灵活避障。
全局路径规划的目标是确保无人机在未知或已知环境中,能够有效地规划出一条从起点到目标点的路径,同时考虑到障碍物、飞行器性能和任务要求。全局规划器与局部规划器的结合使得无人机在执行任务时具备了全局视野和局部响应的能力,从而提高了自主飞行的可靠性和安全性。
4.1.3 局部路径规划详细设计
4.1.3.1 初始化局部规划器参数
初始化局部规划器参数是整个流程的第一步,包括读取无人机的初始状态、传感器信息,并设置ROS的通信机制,以确保模块之间的通信和参数动态调整。
4.1.3.2 接收传感器数据
接收传感器数据模块从多个深度相机和激光雷达接收数据,并将其转换到局部坐标系,以便后续处理。
- 接收深度相机数据:深度相机提供高精度的3D环境感知数据,这些数据包含了障碍物的距离信息和空间分布。通过接收深度相机数据,规划器能够实时获得无人机前方的环境信息,用于进行避障决策。
- 接收激光雷达数据:激光雷达数据与深度相机数据互为补充,提供了水平平面的环境信息,可以有效检测水平障碍物和地面特征。激光雷达的数据更新频率较高,适合对动态障碍物进行快速检测。
- 将数据转换为局部坐标系:将深度相机和激光雷达数据转换为局部坐标系,以统一不同传感器的数据格式。转换后,所有的障碍物数据都以无人机自身为参考,从而更方便进行路径规划和避障计算。
4.1.3.3 更新环境点云
更新环境点云是对接收到的传感器数据进行融合,以生成对当前环境的更准确的描述。
- 融合多源点云数据:融合来自不同传感器的数据(如深度相机和激光雷达),确保生成的点云数据更全面地反映环境的状况。融合后的数据经过滤波和去噪处理,以减少传感器噪声对路径规划的影响。
- 更新环境网格:利用融合后的点云数据更新局部环境网格,环境网格表示为一个三维的栅格地图,其中每个单元格包含了当前的障碍物状态。这样,局部规划器可以根据网格信息进行路径计算。
4.1.3.4 生成局部直方图
生成局部直方图将点云数据转换为直方图,用于描述环境中的障碍物分布情况。
- 计算3D点云的俯仰角和航向角:对每个点云数据点,计算它相对于无人机的俯仰角和航向角。这些角度信息能够帮助直方图以极坐标的形式表示障碍物在三维空间中的位置,从而简化避障计算。
- 生成直方图并二值化:将俯仰角和航向角信息转化为极坐标直方图,并对直方图进行二值化处理,将障碍物的存在与否表示为0或1。这样可以简化障碍物判断逻辑,并加快后续的路径规划计算。
4.1.3.5 结合历史记忆生成组合直方图
结合历史记忆生成组合直方图,通过重投影前一时刻的直方图,将历史数据与当前环境数据结合,形成一个更全面的环境表示。
- 重投影前一时刻的直方图:将上一时刻的直方图重投影到当前无人机的位置。这一步能够保留无人机之前探测到的障碍物信息,尤其是当前视野外但仍可能对飞行产生影响的障碍物。
- 与当前直方图融合:将重投影的历史直方图与当前时刻的直方图进行融合。融合过程确保无人机能够利用之前的环境数据,提高对当前环境的认知能力,避免因视野限制导致的路径选择错误。
- 生成组合直方图:融合后的直方图即为组合直方图,用于描述当前及之前环境中的障碍物信息,从而帮助无人机在复杂环境中做出更稳定的避障决策。
4.1.3.6 计算成本函数
计算成本函数模块用于综合考虑路径到目标的距离、路径的平滑度和与障碍物的距离,以确定最优路径。
- 计算与目标的距离:计算无人机当前位置到目标位置的距离,用于评估每条候选路径的效果。距离越短的路径通常代价越低,有助于无人机尽快到达目标。
- 计算路径平滑度:评估路径的平滑度,包括路径中转弯的数量和角度。路径越平滑,意味着飞行的稳定性越高,避免频繁的转向和加速度变化,从而提高飞行的安全性和舒适性。规划器会计算每条候选路径中的转弯次数及转弯角度,综合评估路径的平滑度得分,越平滑的路径代价越低。
- 计算与障碍物的距离:计算无人机与周围障碍物之间的距离,以确保飞行路径远离潜在的碰撞风险。通过考虑与障碍物的距离,规划器能够有效避免危险区域,路径离障碍物越远,代价越低。这一步通过在组合直方图中查找占用的单元格来确定障碍物的位置,然后计算无人机与这些障碍物的最小距离,从而评估路径的安全性。
- 综合计算代价:结合上述所有计算结果,包括与目标的距离、路径平滑度和与障碍物的距离,规划器将综合计算每条候选路径的代价。代价函数通过加权方式对不同因素进行评估,以平衡路径的安全性和到达目标的效率。权重因子可以根据实际应用的需求进行调节,以实现不同的飞行目标(如快速到达目标点或保持更高的安全距离)。最终,综合代价最低的路径将被选择用于无人机的下一步飞行。
4.1.3.7 选择代价最低的路径
选择代价最低的路径模块遍历所有候选路径,计算它们的代价,并选择代价最低的路径。
- 遍历所有候选路径:遍历所有可行的候选路径,以确保规划器不会遗漏任何潜在的最优路径。这些候选路径是基于先前生成的组合直方图和规划器的动态调整策略计算出来的。
- 计算每条路径的代价:对每一条候选路径进行代价计算,代价综合考虑了与目标的距离、路径的平滑度和与障碍物的距离等因素。代价的计算结果将用于评估每条路径的优劣。
- 选择代价最低的路径:通过比较所有候选路径的代价,最终选择代价最低的路径作为无人机的飞行路径。这条路径不仅要满足尽可能快到达目标的需求,还需要保持较高的安全性和良好的路径平滑度。
4.1.3.8 动态调整速度
动态调整速度模块根据无人机与障碍物之间的距离动态调整飞行速度,以确保飞行安全。
- 检测障碍物距离:首先,系统会持续监测无人机与障碍物之间的距离,判断当前的飞行路径是否存在潜在的碰撞风险。这一步骤通过深度相机或激光雷达获取的点云数据来实现,以确保实时性和准确性。
- 降低速度:当检测到与障碍物的距离小于设定的安全阈值时,规划器会指示无人机降低飞行速度,以避免发生碰撞。减速操作旨在给系统足够的时间来重新计算路径或执行紧急规避动作。
- 保持当前速度:如果无人机与障碍物的距离在安全阈值之上,系统会保持当前的飞行速度,从而以最高效的方式到达目标点。保持速度有助于提升飞行的效率,减少不必要的延迟。
4.1.3.9 执行避障机动
执行避障机动模块根据选定的最优路径调整无人机的姿态,并执行相应的避障动作。
- 根据选定路径调整姿态:在无人机执行避障机动时,首先需要根据选定的最优路径调整姿态。具体而言,无人机会调整其俯仰角、偏航角和滚转角,以确保无人机能够沿着规划好的路径前进。这些姿态调整是通过飞行控制系统来执行的,控制系统接收路径规划器的输出,计算相应的姿态调整指令。调整姿态的目标是使无人机的航向与预定路径一致,避免因路径偏差导致的碰撞风险。在这一过程中,姿态调整需要保持平稳,以避免因姿态变化过大引起的飞行不稳定或动力损耗。
- 执行避障动作:在姿态调整完成之后,无人机会执行具体的避障动作,以确保安全通过障碍物区域。避障动作包括调整飞行速度、改变高度、侧向移动等操作,以避开路径中的障碍物。根据传感器的实时反馈,系统会评估当前路径上的障碍物距离和位置,并采取相应的避障策略。例如,当障碍物非常接近时,无人机会采取紧急规避措施,如迅速爬升、急速减速或改变航向,以避免与障碍物发生碰撞。在整个避障过程中,规划器和控制系统相互配合,通过不断更新的环境感知数据,动态调整避障策略,从而确保无人机在复杂动态环境中的飞行安全。
4.1.4 全局路径规划详细设计
4.1.4.1 初始化全局规划器参数
初始化全局规划器参数包括读取起始位置和传感器信息,设置通信机制,以确保规划器可以与其他模块通信。
4.1.4.2 接收传感器数据
接收传感器数据模块从多个深度相机和激光雷达接收数据,并将其转换到局部坐标系,以便后续处理。
- 接收GPS数据: GPS数据提供无人机在全局环境中的绝对位置信息,是确定无人机相对目标点位置的关键。
- 接收相机数据: 相机数据为局部环境的视觉信息,帮助检测障碍物和地形特征。
- 融合传感器数据: 将GPS和相机数据融合,可以获得更加全面的环境信息,以便进行精确的全局路径规划。
4.1.4.3 更新环境地图
更新环境地图通过接收新的传感器数据来动态更新八叉树结构的地图,以保持对环境的最新表示。
- 接收新传感器数据: 从相机、激光雷达等传感器接收最新的环境信息,确保地图能够反映实时变化。
- 更新八叉树地图: 使用八叉树数据结构将环境信息进行空间划分,生成的地图能够高效表示复杂的三维环境,有助于快速查询和更新障碍物的位置。
4.1.4.4 构建八叉树结构
构建八叉树结构将三维空间划分为多个节点,以高效地表示环境中的障碍物分布。
- 将三维空间划分为八叉树: 使用八叉树结构将三维空间逐层划分为八个子空间,每个子空间进一步划分,直到达到预设的精度。这种划分方式可以高效地管理空间中的障碍物信息。
- 建立障碍物表示: 在八叉树中记录障碍物的状态,包括障碍物的空间位置和大小,帮助路径规划器快速判断当前路径的可行性。
4.1.4.5 应用A*算法搜索最优路径
应用A*算法搜索最优路径模块通过启发式搜索方法找到从起点到目标点的最优路径。
- 初始化开放列表和关闭列表: 开放列表用于记录待评估的节点,关闭列表用于记录已评估的节点。初始化这些列表是A*算法的基础步骤,确保从起点开始探索最优路径。
- 评估节点代价: 对每个节点计算总代价,包括从起点到该节点的实际代价和从该节点到目标点的估计代价,确保选择最佳的路径。
- 选择最优节点: 从开放列表中选择总代价最低的节点进行扩展,确保路径的高效性。
- 生成路径: 当找到目标节点后,通过回溯生成从起点到目标点的完整路径,用于无人机的导航控制。
4.1.4.6 检测环境变化
检测环境变化模块监测地图中的变化,如果发现新的障碍物,则重新规划路径。
- 监测地图变化: 实时监测八叉树地图,确保无人机能够感知环境的动态变化,如出现新的障碍物或已有障碍物的移动。
- 重新规划路径: 判断环境中是否出现新障碍物或已有障碍物发生位置变化,如果出现新的障碍物,重新应用A*算法生成新的最优路径,以确保飞行安全。
- 保持当前路径: 如果环境无变化,则继续沿当前路径飞行,保证飞行的连续性和稳定性。
4.1.4.7 提供整体飞行方向
提供整体飞行方向模块根据最优路径设定航路点,并将其输出到飞控系统,以指导无人机的飞行。
- 根据最优路径设定航路点: 根据A*算法生成的最优路径,设定一系列航路点,使无人机能够逐步飞向目标位置。
- 输出到飞控系统: 将这些航路点发送给飞控系统,飞控系统根据这些点控制无人机的姿态和速度,确保飞行过程中的安全性和准确性。
4.2 技术关键点设计
技术关键点设计
4.2.1 3D VFH 算法
3D VFH(Vector Field Histogram)算法是一种基于点云数据的避障算法,适用于无人机的实时避障操作。它的关键设计是使用极坐标直方图来对障碍物进行表示,结合代价函数选择最优路径,从而确保无人机能够快速、高效地避开障碍物。3D VFH 算法基于极坐标直方图原理,通过将每个三维点投影到极坐标系,构建障碍物的方向性表示。在3D环境中,3D VFH 算法将三维空间分为若干个方向区间,并对每个方向进行障碍物密度的评估。
算法的关键步骤如下:
- 直方图生成:根据点云数据,计算每个点相对于无人机位置的俯仰角和航向角,并将这些信息存储在直方图中。直方图的每个单元格表示某一特定方向的障碍物密度信息。
- 代价函数计算:每个候选方向的代价通过代价函数进行评估。代价函数由多个部分组成,包括目标代价、平滑度代价等。目标代价衡量无人机在候选方向与目标方向之间的偏差,而平滑度代价衡量当前方向与上一时刻方向的差异。
- :目标代价,衡量候选方向与目标方向之间的偏差。
- :候选方向 与目标位置 之间的偏航角差异。
- :候选方向与目标位置之间的上升俯仰角差异。
- :候选方向与目标位置之间的下降俯仰角差异。
- 、:上升和下降的权重因子,控制上升与下降方向的优先级。
- :平滑度代价,用于衡量当前候选方向与之前选择方向之间的角度变化。
- :前一方向 和当前候选方向 之间的偏航角差异。
- :前一方向与当前候选方向之间的俯仰角差异。
- :总代价,表示选择某路径的综合评估值。
- 、:目标和路径平滑性的权重因子,决定各个代价项的相对重要性。
目标代价函数由下式给出:
其中:
平滑度代价函数由下式给出:
其中:
综合代价函数由下式给出:
其中:
- 路径选择:通过启发式搜索,选择代价最小的路径作为无人机的运动方向。如果某个方向的代价最低且满足避障条件,无人机会沿着该方向移动。
- 3D 投影与直方图构建:在每个时间步长,3D VFH 算法将上一时刻的直方图数据重新投影为三维点云,并将其与当前的点云数据结合,构建新的直方图。
4.2.2 安全措施与边界条件的调整
为了提高 3D VFH 算法的可靠性,论文中提出了一些安全措施和边界条件的调整。这些措施旨在减少碰撞风险,并确保无人机能够在多种边界条件下安全飞行。
算法的关键步骤如下:
- 限制移动方向在视场范围内:当存在多个代价相近的候选方向时,算法可能会频繁在这几个方向之间切换,导致无人机逐渐靠近障碍物并增加碰撞风险。因此,3D VFH 算法在移动方向选择上做了改进,要求下一步航路点必须位于无人机的当前视场(FOV)范围内。如果航路点不在视场范围内,无人机将先悬停并调整偏航,直到航路点进入视场范围 。
- 安全裕度的设置:在直方图中,为每个被占用的单元格增加了安全裕度。这些安全裕度会扩大障碍物的影响范围,从而增加无人机与障碍物之间的最小距离。如果安全裕度设置过大,可能会导致无人机无法通过障碍物之间的狭窄通道;如果安全裕度设置过小,则增加了碰撞的风险。为了在接近障碍物时优先考虑安全,算法实现了两种不同大小的安全裕度,具体选择取决于最近障碍物的距离。
- 代价参数的自适应调整:为了监控无人机朝向目标的进展,算法中引入了一个自适应的代价参数 ,用于控制无人机的上升代价。当无人机没有朝向目标的进展时,算法会降低上升代价,鼓励无人机改变高度以绕过障碍物:
- :在时间步长 处的进展速率。
- 、:分别是时间步长 和 时刻无人机到目标的距离。
- 、:分别是时间步长 和 时刻的时间。
- :时间步长 处的上升代价因子。
- :进展速率的临界值,判断当前进展是否足够。
- 、:分别是上升代价因子的增量和减量。
- 、:上升代价因子的最大和最小值。
进展速率公式由下式给出:
其中:
权重因子的调整公式由下式给出:
其中:
3. 球体避障与最小距离约束
为了确保无人机与障碍物保持安全距离,3D VFH 算法增加了一个球体避障约束。该约束通过在障碍物周围建立一个球体,确保无人机不会进入该球体的范围内。
算法的关键步骤如下:
- 球体约束的定义:球体避障约束通过在障碍物中心点 周围绘制一个半径为 的球体,确保无人机与障碍物之间保持最小距离。障碍物中心点由所有在半径 范围内的点云平均位置确定。
- 航路点调整:在计算完航路点之后,球体避障模块会检查该航路点是否位于球体内部。如果航路点位于球体内部,算法会调整其高度使其接近球体的赤道位置,并将其投影到球体表面。
- :最终输出的航路点。
- :投影到球体表面的航路点。
- 、:分别为临时航路点和原始航路点。
- :球体中心位置,即障碍物中心点。
- :球体半径,即无人机与障碍物之间的最小安全距离。
- :迟滞因子,用于扩大球体影响范围。
- :加权因子,用于计算航路点在球体范围内的偏移位置。
最终的航路点 根据下述公式确定:
其中:
这种航路点的调整确保了无人机能够在障碍物周围飞行,而不是直接飞过或飞到障碍物下方 。
- 迟滞机制:为了防止频繁切换路径,球体避障模块还引入了迟滞机制。通过扩大球体半径 ,在球体的影响范围内对航路点进行调整,以确保飞行的稳定性。
4. 建立记忆机制的 3DVFH*
为了增强 3D VFH 算法的避障能力,3DVFH* 算法增加了一种记忆机制,用于保存之前观察到的障碍物信息。这种记忆机制的核心在于结合当前时间步长的新直方图和之前时间步长的记忆直方图,从而为无人机提供一个更加全面的环境表示。
- 直方图的再投影:在每个时间步长中,记忆机制会将前一时刻的直方图数据投影为三维点云。由于这些点的角度信息依赖于无人机的当前位置,因此需要将这些点重新投影到当前的三维空间中。
- 记忆直方图的构建:通过将再投影的点云数据构建为一个记忆直方图,并以较低的分辨率进行存储。随后,这个低分辨率的记忆直方图会被上采样至与当前直方图相同的分辨率。
- 直方图的融合:最终直方图是通过融合记忆直方图和当前直方图得到的。对于无人机视场(FOV)范围内的区域,优先使用当前的直方图数据;对于视场外的区域,则通过逻辑 OR 操作融合记忆直方图和当前直方图的数据。
- :最终的直方图,用于当前时刻的导航。
- :记忆直方图,由前一时刻的直方图投影到当前三维空间得到。
- :新直方图,由当前时刻的传感器数据生成。
记忆机制使用如下公式将记忆直方图与新直方图结合:
其中:
5. 地面检测与高度控制
为了确保无人机在飞行过程中能够保持一定的高度,3D VFH 算法增加了地面检测与高度控制模块。
- 内部高度图的构建:无人机通过前视摄像头检测地面的高度信息,并将其存储在一个内部高度图中。通过对点云数据进行裁剪和 RANSAC 算法的平面拟合,可以得到地面的高度信息,并将这些信息存储为矩形区域。
- :点 到拟合平面的垂直距离。
- :点 的三维坐标。
- :拟合平面的方程参数。
- :点 在拟合平面上的投影点。
高度平面拟合公式由下式给出:
其中:
最终平面点计算公式由下式给出:
其中:
- 无障碍情况下的高度控制:当周围没有障碍物时,无人机会直接朝向目标飞行。此时,高度控制模块会根据内部高度图中的信息来调整飞行高度,确保无人机能够提前上升,避免碰撞地面。
- :无人机在进入特定地面 patch 前的裕度。
- :无人机当前位置的高度。
- :目标地面 patch 的高度。
- :无人机的最小飞行高度。
- :最大上升角。
高度调整公式由下式给出:
其中:
- 结合直方图的高度控制:在存在障碍物的情况下,高度控制模块会与 3D VFH 算法相结合,通过对路径的上下调整,确保无人机既能够避开障碍物,又能保持安全的飞行高度。
5 工程实现
5.1 局部路径规划实现
局部路径规划的实现依赖于计算机视觉软件和伴随计算机(Companion Computer)。该伴随计算机通过深度相机和其他传感器采集环境信息,使用局部规划器来生成实时避障路径。局部路径规划器主要用于无人机在复杂动态环境中的实时避障决策,以实现安全高效的自主飞行。
局部路径规划器通过不断接收相机及激光雷达传感器的深度数据进行更新,并通过ROS节点处理这些数据,以便计算出最优路径。在局部路径规划中,无人机的避障速度大约为 3 m/s,规划器每秒发出约 30 次的路径更新信息,使得无人机能够快速对环境的变化做出响应。
在 Offboard 模式下,伴随计算机通过 ROS 节点将期望的路径输入到避障模块中,避障软件随后将规划的路径以
SET_POSITION_TARGET_LOCAL_NED
消息的形式发送给飞行控制系统。在 Mission 模式中,局部路径规划器通过接受先前规划的航点信息,并结合当前的环境感知,计算出最优的避障路径,最终由伴随计算机将这些路径传递给 PX4。局部路径规划器在保证无人机按照原定目标前进的同时,会基于传感器数据动态调整无人机的飞行方向和速度,使其避开障碍物。特别是在动态环境中,例如在其他移动物体或障碍物频繁变化的情况下,局部路径规划器能够及时更新障碍物地图,并选择新的路径以保证飞行安全。
在局部路径规划实现中,伴随计算机通过 MAVROS 封装 MAVLink 协议与飞控进行通信。伴随计算机中的 Local Planner 节点负责接收来自深度相机或 LiDAR 的实时环境数据,并通过计算生成避障路径。这些路径通过 MAVROS 转换为
SET_POSITION_TARGET_LOCAL_NED
消息,发送给 PX4 飞行控制器。该过程确保了无人机能够在复杂环境中实现实时避障。5.2 全局路径规划实现
全局路径规划主要用于生成无人机从起点到目标位置的全局最优路径。与局部路径规划不同,全局路径规划更适合在静态环境中进行预先规划,以保证无人机在执行任务时能够避开已知障碍物,顺利到达目标地点。在全局路径规划的实现中,通常使用八叉树(Octomap)作为环境地图的数据结构,结合 A* 算法进行路径搜索。
在全局路径规划中,伴随计算机通过接收相机和激光雷达的深度数据,实时更新八叉树结构,以保持对环境的最新表示。在 Mission 模式下,全局路径规划器每秒发出约 10 次路径更新信息,其任务速度约为 1-1.5 m/s,适合于需要较高规划精度的任务场景。
全局路径规划的核心是 A* 算法,该算法通过计算节点到目标位置的代价 ,其中 是从起点到节点 的实际代价, 是节点 到目标点的启发式估计代价。通过选择代价最小的节点,A* 算法能够有效地生成一条从起点到目标的最优路径。
此外,全局路径规划器还具有环境变化检测的功能。通过不断监测八叉树地图中的障碍物变化,如果发现新的障碍物,全局路径规划器会自动重新规划路径,以确保无人机能够避开新出现的障碍。在实际任务中,如果无人机的当前航点被障碍物阻挡,规划器会自动增大航点的接受半径,或直接重新计算路径,以保证任务能够继续执行。
全局路径规划器最终根据生成的最优路径设定一系列航路点,并通过 ROS 节点将这些航路点发送给 PX4 飞行控制系统。在飞行过程中,无人机根据这些航路点执行飞行操作,逐步靠近目标位置。相比于局部路径规划,全局路径规划更注重整体路径的最优性和规划的全局视角,因此在执行任务时,通常结合局部路径规划器进行细化调整,以应对动态障碍物和突发环境变化。
在全局路径规划实现中,伴随计算机同样通过 MAVROS 与 PX4 飞控进行通信。Global Planner 节点接收来自传感器的数据,构建和更新全局环境地图,并使用 A* 算法生成从起点到目标的最优路径。这些路径被转换为任务航路点,通过 MAVROS 传递给 PX4 飞控,从而确保无人机按照规划路径进行飞行,同时在检测到环境变化时能够实时进行路径调整。
全局路径规划的实现还需要考虑不同的飞行模式之间的切换,例如在 Offboard 模式和 Mission 模式下的行为差异。在 Mission 模式下,全局路径规划器会优先保证任务的顺利执行,而在 Offboard 模式下,规划器可以根据外部输入的信息随时调整飞行目标,以实现更为灵活的控制。
6 功能性能指标符合性分析
表 6 需求符合性分析
序号 | 需求 | 设计说明 | 符合性说明 |
符合 | |||
待测试后验证是否符合 | |||
ㅤ |
附录1:伴侣计算机MAVROS消息表
7.1 通信数据流图
7.2 通信描述
- 节点:
- mavros_node:主通信节点。
- gsc_bridge:额外的代理。旧名称为ros_udp。
- event_launcher:监听解锁状态,触发并运行事件程序。配置示例。
- 连接:通过URL定义连接,可以为FCU和GCS使用任何支持的类型。
- 协议:串口/带硬件流控的串口/UDP/UDP广播/TCP客户端/TCP服务器
- 插件:由mavros_node加载的标准通信插件集。
- 3dr_radio:将3DR无线电状态发布到诊断和主题。
- actuator_control:向FCU发送执行器命令。
- hil_control:发布HIL_CONTROLS。
- command:向FCU发送COMMAND_LONG。
- ftp:支持MAVLink-FTP的插件(PX4)。
- global_position:发布由FCU融合的全球位置信息和原始GPS数据。
- imu_pub:发布IMU状态
- local_position:在TF和PoseStamped主题中发布LOCAL_POSITION_NED。
- manual_control:发布MANUAL_CONTROL消息(用户输入)。
- param:允许访问FCU参数并将其映射到~param/中的ROS参数。
- rc_io:发布RC接收器输入。
- safety_area:向FCU发送安全允许区域。初始区域可以从参数加载。
- setpoint_accel:发送加速度设定点。
- setpoint_position:使用SET_POSITION_TARGET_GLOBAL_INT或SET_POSITION_TARGET_LOCAL_NED发送位置设定点。
- setpoint_raw:向FCU发送原始设定点消息并提供回环主题(PX4)。
- setpoint_velocity:向FCU发送速度设定点。
- sys_status:系统状态插件。处理FCU检测。必需,永远不要将其列入黑名单!
- sys_time:系统时间插件。在PX4上进行时间同步。
- vfr_hud:发布VFR_HUD和WIND消息。
- waypoint:允许访问FCU任务(航点)。
附录2:飞行控制器模式设置
- 基础飞行动作/ 飞行模式
上锁/ 锁定/ 起飞和降落/ 返航等
arming Services 加解锁服务
模式切换
PX4支持的模式有:
MODE | MANUAL | ACRO | ALTCTL | POSCTL | OFFBOARD | STABILIZED | RATTITUDE | AUTO.MISSION | AUTO.LOITER | AUTO.RTL | AUTO.LAND | AUTO.READY | AUTO.TAKEOFF | AUTO.FOLLOW_TARGET | AUTO.PRECLAND |
飞行模式 | 手动 | 特技 | 定高 | 定点 | 外部控制 | 自稳 | 姿态特技 | 自动任务 | 自动留待 | 自动返航 | 自动降落 | 自动模式就绪 | 自动起飞 | 自动跟踪目标 | 精准着陆 |
是否需要定点信息 | N | N | N | Y | Y | N | N | Y | Y | Y | Y | Y | Y | Y | Y |
支持的飞控类型 | ㅤ | ㅤ | ㅤ | ㅤ | ㅤ | ㅤ | ㅤ | ㅤ | ㅤ | ㅤ | ㅤ | ㅤ | ㅤ | ㅤ | ㅤ |
- 参考坐标系
FRD机体坐标系:X Forward, Y Right, Z Down
NED坐标系:X North, Y East, Z Down
FLU机体坐标系:X Forward, Y Left, Z Up
The local/world and world frames used by ROS and PX4 are different.
FRAME | PX4 | ROS |
Body | FRD (X Forward, Y Right, Z Down) | FLU (X Forward, Y Left, Z Up), usually named base_link |
World | FRD or NED (X North, Y East, Z Down) | FLU or ENU (X East, Y North, Z Up), with the naming being odom or map |
- 飞行控制功能
(全局/ 本地)位置控制/ 速度控制
actuator_control 控制飞控IO输出(mixing_and_actuators 混控器)
setpoint_accel 控制期望的加速度
setpoint_attitude 控制期望的姿态
setpoint_position 控制期望的位置(相对坐标或GPS坐标)
setpoint_velocity 控制期望的速度
- 飞行数据获取
global_position 订阅GPS数据
imu_pub 订阅IMU信息
local_position 订阅本地位置数据
manual_control 订阅遥控器的值
sys_status 查询系统状态
waypoint 航点信息
- 定位数据来源
通过修改EKF2位置融合数据获取来源来实现(EKF2_AID_MASK)
视觉数据融合有以下几种方式:
vision position fusion 使用视觉定位数据融合
vision velocity fusion 使用视觉速度数据融合
vision yaw fusion 使用视觉偏航数据融合
external vision rotation 使用外部视觉的旋转数据代替
- 高度数据获取
通过修改EKF2高度融合数据获取来源来实现(EKF2_HGT_REF)
barometer 气压计高度
GNSS GPS高度
range sensor 测距传感器高度
vision 视觉高度
Loading...