1. 引言
随着科技的飞速发展,无人机在军事、民用等众多领域展现出了巨大的应用潜力。在军事领域,无人机可执行侦察、监视、目标定位等任务,极大地提升了作战的灵活性与隐蔽性;在民用领域,无人机广泛应用于物流配送、农业植保、测绘勘探、应急救援等场景,显著提高了工作效率,并降低了人力成本。除此之外,还有许多研究工作也依托于自主无人机平台对算法的性能进行实验测试和分析。
同步定位与建图技术[1]是自主无人机进行自身定位和环境感知最重要的手段之一,因此许多同步定位与建图算法都采用了自主无人机系统进行算法性能测试和分析。同步定位与建图技术大致可以分为基于滤波和基于优化的方法两类。在基于滤波的方法方面,Mourikis等人[2]提出了一种多状态约束卡尔曼滤波算法,并基于此实现了一个高效准确的MSCKF定位建图算法;Bloesch等人[3]以机器人为中心构造整体的滤波方程,也提出了一种基于滤波的鲁棒的ROVIO算法。在基于优化的方法方面,Leutenegger等人[4]提出了一种基于关键帧技术的OKVIS算法;Qin等人[5]提出了一种VINS-Mono框架,该算法通过滑动窗口紧耦合优化方法实现了一个通用的视觉惯性导航系统,并且VINS-Mono算法已被扩展为支持不同传感器的组合的VINS-Fusion算法[6]。这些研究都通过无人机平台对算法进行了性能测试。
路径规划和轨迹优化同样也是自主无人机实现复杂任务的关键技术,许多相关研究也都采用自主无人机系统作为它们的实验平台。例如,Zhou等人[7]提出了一种鲁棒高效的四旋翼运动规划Fast-Planner算法,用于三维复杂环境中的快速飞行;Zhou等人[8]提出了本文提出了一种基于不依赖于欧几里得距离场的的EGO-Planner路径规划框架,大大减少了计算时间;并且EGO-Planner框架被进一步扩展为EGO-Swarm算法[9],用于在未知的障碍物丰富的场景中仅使用机载资源进行多机器人自主导航。这些工作也采用了无人机平台对算法进行了相关实验。
然而,无人机的研发和应用并非一帆风顺。无人机的飞行性能、控制精度以及在复杂环境下的适应性等问题,一直是制约其发展的关键因素。为了解决这些问题,进行大量的实际飞行实验是必不可少的,但实际飞行实验不仅成本高昂,还存在诸多风险,如设备损坏、安全事故等。因此,仿真技术应运而生,成为无人机研发过程中不可或缺的重要手段。
仿真技术能够在虚拟环境中模拟无人机的飞行过程,对其性能进行全面测试与分析。通过仿真,可以在设计阶段发现潜在问题,优化无人机的设计和控制算法,从而减少实际飞行实验的次数,降低研发成本和风险。在众多仿真平台中,GAZEBO凭借其强大的功能和高度逼真的模拟能力脱颖而出。它能够为无人机仿真构建逼真的物理环境,提供丰富的传感器模型,为研究人员提供了一个理想的实验平台。
基于此,本文深入研究并阐述了一种基于GAZEBO仿真平台的无人机仿真系统。通过集成定位建图、路径规划和姿态控制三个核心算法模块,该系统能够实现无人机在复杂仿真环境下的高效运行。本文将详细介绍该系统,为无人机的研发和应用提供新的思路和方法,推动无人机技术的进一步发展。
2. 系统和算法框架
2.1. 系统框架
自主无人机系统框架可大致划分为基础模块与高级模块两大关键部分。图1清晰呈现了基础模块和高级模块各自内部组件之间,以及两大模块之间的信息交互关系。在基础模块中,无人机的飞行控制依赖于人工对遥控器的操作,通过人为干预实现无人机的基本飞行指令下达。而高级模块则借助先进的机载电脑技术,对各类传感器数据进行深度处理与分析,从而达成在无人干预情景下对无人机飞行的精准控制。
Figure 1. Diagram of the UAV system framework
图1. 无人机系统框架图
在基础模块中,飞控系统是核心。它接收遥控器发出的起飞、降落等人工操控指令,转化为控制信号发给无人机,以操控飞行姿态与轨迹,还负责获取飞机实时状态和传感器数据,为基础模块运行提供支持。遥控器只能发送简单指令,无法深度剖析无人机飞行状态,也不能自主优化参数。无人机作为执行载体,仅按飞控指令动作,缺乏自主思考与决策能力。面对复杂环境,飞控系统难以整合分析多源实时数据,难以做出智能决策,无人机也无法自主规划复杂任务,难以灵活应对环境变化。
而在高级模块中,机载电脑是实现无人机智能化飞行的关键。它接收飞控及各类传感器数据,与雷达、IMU、相机等高效交互获取全面信息,利用强大计算能力深度挖掘、融合分析数据,为智能飞行提供支撑。机载电脑还能远程通信,与笔记本、工作站交互,方便操作人员远程监控无人机状态,处理数据、优化算法,实现更高级控制与复杂任务规划,如自主避障、目标追踪等。
整个自主无人机系统框架通过基础模块与高级模块之间的协同配合、优势互补,实现了无人机在不同飞行环境下的稳定飞行以及复杂任务的高效执行。
2.2. 算法框架
自主无人机系统算法的核心模块主要包括定位建图、路径规划和姿态控制这三个关键部分。图2展示了机载电脑在接收到飞控和传感器数据后会先后经过定位建图模块中的里程计、路径规划模块中的规划期以及姿态控制模块中的控制器处理,最终生成控制指令并发送给飞控,飞控根据控制指令直接对控制电机,从而实现对无人机的精确控制。
Figure 2. Diagram of the UAV system core algorithm framework
图2. 无人机系统核心算法框架图
定位建图模块犹如无人机的“空间感知大脑”,其主要功能是借助雷达、IMU (惯性测量单元)、相机等多种传感器收集的数据,采用先进的算法来精准确定无人机在环境中的位置,同时构建出周围环境的地图。例如,在复杂的城市环境中执行任务时,该模块能够依据传感器数据实时感知周边建筑物、障碍物等信息,为无人机提供准确的位置坐标和环境地图,使其明确自身所处方位和周围环境状况。
路径规划模块恰似无人机的“智慧向导”,它以定位建图模块生成的地图以及无人机当前位置和任务目标等信息为基础,运用智能算法规划出高效、安全的飞行路径。比如,当无人机需要从起始点飞往特定目标点时,路径规划模块会综合考虑环境中的障碍物分布、地形特点等因素,生成全局飞行路径和局部飞行路径,确保无人机能够避开障碍物,以最优路线抵达目标点。
姿态控制模块则如同无人机的“稳定器”,它依据路径规划模块生成的路径信息,对无人机的飞行姿态进行实时调整。当无人机在飞行过程中遭遇气流扰动、地形变化等情况时,姿态控制模块会迅速响应,通过调整无人机的电机转速、舵面角度等参数,保障无人机的飞行稳定性和准确性,使其能够严格按照规划的路径飞行。
这三个核心模块相互协作、紧密配合,定位建图模块为路径规划提供环境基础信息,路径规划模块为姿态控制提供目标路径指引,姿态控制模块确保无人机按照规划路径稳定飞行,共同支撑起自主无人机系统的高效运行。
3. 核心算法
自主无人自主无人机系统算法的核心模块主要有以下三个:定位建图模块、路径规划模块和姿态控制模块。其中,定位建图模块的主要功能是对无人机进行高精度的自主定位和环境地图的构建;规划模块的主要功能是无人机基于自身的位置和指定目标点的位置规划出一条高效、安全的轨迹;姿态控制模块的主要作用是结合定位模块和规划模块所提供的信息,解算出无人机当前飞行所需的控制指令。
3.1. 定位建图模块
定位建图模块的主要目的是为了精确定位无人机位置并对环境进行地图的构建,常见的方法有MSCKF、VINS-Mono和VINS-Fusion等。MSCKF算法是一种基于多状态约束卡尔曼滤波的高效准确的视觉惯性里程计算法。VINS-Mono算法是一个鲁棒且通用的单目视觉惯性导航系统框架,该算法基于滑动窗口紧耦合优化方法实现了一个通用的视觉惯性里程计,并且在此基础上还增加了回环检测模块、重定位模块以及全局位姿图优化模块,大大增加了算法的鲁棒性和精度。VINS-Fusion是VINS-Mono的一个扩展版本。VINS-Fusion算法目前可以支持单目相机、双目相机、IMU、GPS等各种传感器的组合,并且该算法性能稳定,有较大的实际应用价值。本文采用VINS-Fusion作为定位建图算法,其具体的算法实现见文献[6],其主要原因是它的计算复杂度更低,定位精度更高,尤其是处理复杂环境的精度更高,可以提高系统鲁棒性,且能够更好地结合视觉传感器来进行定位。事实上,在定位建图模块,只要能够实现定位和建图功能的同步定位与算法都可以被应用。基于VINS-Fusion的定位建图模块内部话题处理如图3所示。
Figure 3. Diagram of the odometry module
图3. 里程计模块示意图
3.2. 路径规划模块
路径规划模块的主要目的是通过相关路径规划算法根据里程计数据和目标位置数据生成一条安全无碰撞的飞行轨迹,且这条轨迹足够平滑。常用的路径规划方法有:Fast-Planner和EGO-Planner。其中Fast-Planner是一种基于采样技术和运动动力学路径搜索的轨迹规划算法。它能够在复杂环境中为无人机快速生成安全、可行且时间最优的行驶轨迹。而EGO-Planner是一种无需借助欧几里得距离场的轨迹规划的算法,这种方法既具有灵活性又便于计算。当检测到轨迹的某段发生碰撞时,EGO-Planner会搜索一条无碰撞的参考路径,并通过为每个控制点分配障碍物表面的锚点来计算碰撞惩罚项,从而构建出避障所需的轨迹。本文采用EGO-Planner作为路径规划模块的算法,其具体的算法实现见文献[8],其主要原因是这种算法相较于Fast-Planner的规划成功率更高、消耗时间更短,对于复杂环境的处理更胜一筹。基于EGO-Planner的路径规划模块内部话题处理如图4所示。
Figure 4. Diagram of the planner module
图4. 路径规划模块示意图
3.3. 姿态控制模块
控制模块的主要目的是结合定位模块提供的位置信息以及规划模块提供的路径算法来解算无人机姿态,并将结算结果转化为控制指令发布给无人机以控制无人机飞行。常见的控制器有PID (Proportional Integral Derivative)控制器[10]、LQR (Linear Quadratic Regulator)控制器[11]、MPC (Model Predictive Control)控制器[12],其中PID控制器简单易实现,但是对于复杂系统或非线性系统可能需要丰富的参数调节经验才能实现良好的控制效果,且无法考虑系统的动态性;LQR控制器通过优化权重矩阵,能够实现最优状态反馈控制,对线性系统表现良好,提供了较好的稳定性和性能,但是对于非线性系统,需要进行线性化操作或增加鲁棒性设计,计算复杂度较高;MPC控制器允许对非线性系统进行建模和控制在性能和多变量系统处理方面具有显著优势,但其计算复杂度相对较高,不适用于需要实时控制的系统。本文采用PID控制器作为姿态控制模块的姿态控制算法,其主要原因是PID控制器更加简洁,方便适用于广泛的控制系统,其在系统模型未知或不确定的情况下仍然能够发挥良好的控制效果。基于PID控制器的姿态控制模块的内部话题处理如图5所示。
Figure 5. Diagram of the attitude control module
图5. 姿态控制模块示意图
4. 仿真验证
本实验采用的操作系统为Ubuntu 20.04,ROS (Robot Operating System)版本为Noetic,并以Gazebo作为仿真平台,显示界面使用Rviz。首先,本文基于Gazebo搭建仿真环境,结合ROS可以发布相关视觉和惯性话题信息,然后通过VINS-Fusion来接收相应的图像和IMU信息,并估计无人机的位姿,并生成轨迹信息来实现自主无人机的定位,效果如图6所示:
Figure 6. Diagram of localization and mapping using VINS-Fusion
图6. VINS-Fusion定位及建图示意图
接下来,仿真实验采用EGO-Planner接收VINS-Fusion发布的定位信息,并规划出一条合理的飞行轨迹,通过PX4Ctrl根据轨迹信息进行姿态结算,从而控制无人机实现自主避障和鲁棒飞行的功能,其效果如图7所示:
Figure 7. Diagram of planning path using EGO-Planner
图7. EGO-Planner规划路径示意图
事实上,本文提出的仿真系统也可以将任意一个模块的算法替换成其他有相似功能的算法,可以用于验证任意一个模块相关算法的可行性。
5. 结论
本文围绕基于GAZEBO仿真平台的无人机仿真系统展开研究,该系统集成定位建图、路径规划和姿态控制三个核心算法模块,共同为无人机的自主飞行提供支撑。定位建图模块采用多元化算法,融合各类传感器数据,确保无人机在复杂环境下实现高精度定位与建图,为后续飞行任务奠定基础。路径规划模块依托先进算法,依据环境信息和任务需求,高效生成平滑的全局和局部飞行路径,兼顾安全性与任务适应性。姿态控制模块则根据路径规划结果,实时调整无人机姿态,保障飞行稳定性与准确性。最后,本文对该无人机仿真系统在GAZEBO仿真平台进行了仿真飞行测试,验证了系统的可行性和稳定性。未来笔者将利用该仿真平台系统地针对各类不同的定位建图算法和路径规划算法进行对比测试,以及将该仿真平台与时下先进的仿真平台进行对比,进一步验证仿真平台的稳定性和可靠性。
NOTES
*通讯作者。