2. 中山大学,广东 珠海 519080;
3. 陆军海防第332旅船艇大队,辽宁 大连 116000
2. SLin Yat-san University, Zhuhai 519080, China;
3. Ship and Boat Brigade 331 of army Coastal Defense, Dalian 116000, China
Ardupilot是一款开源无人驾驶汽车自动驾驶软件套件,其低成本和可用性的特点使爱好者能够在各种航行器上使用。Pixhawk(非PX4自动驾驶仪)项目[1 – 2]于2009年开始,作为Ardupilot的硬件平台,在苏黎世联邦理工学院(瑞士联邦理工学院)的计算机视觉和几何实验室进一步开发和使用,并得到自主系统实验室和自动控制实验室的支持。
目前,国外开源飞控项目发展迅速,并被各类无人航行器的爱好者广泛采用。在众多的开源项目中,APM支持多旋翼无人机、固定翼飞机、直升机、无人车等载体的功能,以其独有的稳定性和强大的兼容性赢得了开发者们的青睐。
本文利用飞控项目中无人车的特点,开发了一型基于Pixhawk+Raspberry Pi的无人艇平台,通过一系列的试验验证了无人艇系统的可行性以及运动特性。
1 Pixhawk项目特点Pixhawk作为一款低成本、高性能且完全开源的飞控系统,被各行业的开发者们广泛应用在固定翼航行器、多旋翼飞行器以及无人车上。Pixhawk项目构成主要包括硬件和软件2部分[3-4]。
1.1 硬件构成Pixhawk支持现有的APM和PX4固件连接到其自动驾驶系统,降低了其入门的门槛。Pixhawk的硬件框图如图1所示。
Pixhawk可以根据实际需求外接不同的设备,常用的有电源模块、GPS模块以及外置内存卡等。其中,电源模块的主要作用为将电池的电压降至5V用于给Pixhawk供电,此外,还可以通过该模块监测电池的电压和电流值并在地面站实时地进行读取。GPS 模块输出两路信号,一路信号传输GPS 坐标,另一路传送指南针方向信号,连接时按照对应的针脚将其接到飞控板上即可。需要注意的是在安装时,要将其装在航行器的最高处,其指向的方向要和飞控板指向方向一致,只有正确安装才能保证航行器在运行时的准确性。在航行器的运行过程中,为了后续分析过程的展开,有必要记录航行过程中的日志,使用外置的内存卡可以完整记录Pixhawk在开机转态下的运行情况。不同行业的开发者可以根据自己的实际需求使用所需的各类传感器,进一步拓展飞控板的功能。
1.2 软件简析Pixhawk可以执行2套固件程序,其中ArduPilot固件(即APM固件)由于有相关社区的技术支持,很多开发人员对其进行不断的开发优化,使得其迭代更新速度较快,可以直接使用,方便不同用户的应用。
按照源码框架分,Pixhawk源码框图如图2所示。
MAVLink于2009年初由Lorenz Meier根据LGPL许可证首次发布,是一种非常轻量级的消息传递协议,遵循现代混合发布-订阅和点对点设计模式:数据流作为主题发送/发布,而配置子协议(如任务协议或参数协议)是点对点重传。
2 无人艇平台描述 2.1 船体结构设计了基于Pixhawk飞控的无人艇如图3所示。其主体结构采用双体打窝船船型,双体的结构能够保证无人艇在航行时的稳定性。其原有的饵料舱经过改装可以提供足够的空间来容纳控制系统、传感器、飞控板等电子设备。控制系统通过切换可以实现手动遥控和自动驾驶2种模式。推进部分采用了2个无刷直流电机提供推力,无人艇的转向通过2个电机的差速转动来实现,由于不需要安装专门的转舵机构,无人艇的结构得到了极大的简化,同时重量的减轻有利于提高无人艇的操纵性。
无人艇的运动控制系统主要包含远程控制平台与船载运动控制器两部分。其中,远程控制平台由PC端的地面站构成,用户可以通过图形化的操作界面实时观察无人艇的运动状态,也可以对其进行在线的参数设置;船载控制器主要用于无人艇的运动姿态监测、位置信号监测以及执行器控制等。无人艇的运动控制示意图如图4所示。
无人艇的底层控制器基于Pixhawk飞控平台[5 – 6],它提供了一种低成本、高效的自动驾驶实现方式。包括1组内置的导航传感器,如加速度计,陀螺仪,磁力计和气压计压力传感器。同时,能够为GPS和基于惯性的导航传感器提供低级控制器。从外部GPS和指南针单元读取信号,并具有通过遥测收发器与地面控制站(GCS)通信的能力。
Ardupilot平台中有很多针对不同无人航行器的固件版本,其中Ardurover固件主要应用在双轮差速驱动的无人车上,结合所开发无人艇的特点,选择Ardurover固件,使用的版本为v3.2.0。
2.2.2 树莓派树莓派在Linux-Raspbian操作系统上运行,支持Python语言编程。DroneKit-Python库提供了一系列的API对Pixhawk进行访问,开发人员可以使用API创建通过MAVLink协议与无人艇进行通信的Python应用程序,从而实现对无人艇的遥测,状态和参数信息的编程访问以及对无人艇运动的直接控制。更高级的应用为可以使用Python语言编写路径规划算法从而在实艇上进行算法的验证。
2.2.3 地面站地面站通常是在岸基计算机上运行的软件应用程序,通过无线遥测与无人艇进行通信。它显示无人艇位姿和位置的实时数据,可以作为“虚拟驾驶舱”,显示许多与真实驾驶无人艇时相同的仪表数据。地面站还可用于控制航行中的无人艇,上传新任务命令和设置参数。通常还用于监控来自无人艇摄像机的实时视频流。有很多的地面站可供选择,其中最广泛使用的是Windows下的Mission Planner(MP)[9],它也有运行在Linux上的一个更有限的版本,称为APM Planner。
QGroundControl是另一个强大的GCS,可以与Ardupilot或PX4自动驾驶仪一起使用。
通常情况下,一个地面站包含以下几部分[11]:
可以运行GCS应用程序的计算机;将Mission Planner安装在电脑上;无线收发器;遥控手柄;1名操作人员;
MP允许使用方便易用的GUI配置整个系统,从而可以执行以下操作:
1)将固件(Ardupilot软件)加载到控制车辆的自动驾驶仪(Pixhawk)中;
2)设置和配置传感器,如罗盘,陀螺仪和加速度计,以及R/C发射器;
3)修改自动驾驶仪参数和控制增益,定义车辆的整体配置和响应;
4)使用Google地图或类似工具,通过简单的点击式航点输入,将自动任务计划保存和加载到自动驾驶仪上;
5)下载和分析自动驾驶仪创建的任务日志。
2.3 无人艇的参数设置使用MP对参数THR_MAX和CRUISE_SPEED进行调整。这2个参数分别表示无人艇在自主航行时的油门大小以及巡航速度的大小,通过调整这2个参数的大小可以在MP上实时地对无人艇的速度进行在线调节。在无人艇的实际遍历路径点过程中,由于要经过比较多的路径点,同时部分航点在几何关系上存在转折关系,因此,需要在MP中设置合理的转弯速率,同样的,该参数也可以实现在线的调节。
3 试验验证分别验证通过地面站加载航点和Python编程条件下,无人艇的航行性能。
图6显示了使用MP进行航点设置时无人艇的运动信息。可以看出,通过MP设置好路径点信息后,无人艇能够很好的遍历各航点,同时在整个运动过程中,通过地面站MP可以实时的检测艇的状态信息,包括实时位置以及姿态信息。
图7显示了通过Python调用Dronekit库实现了编写的路径规划算法在无人艇上的实现。从图中可以看出,无人艇能够平滑的遍历算法生成的航点,充分验证了所设计无人艇平台的可行性。
本文研究开源飞控项目在无人艇平台上的应用,开发了基于Pixhawk开源项目的无人艇平台。试验表明,搭设的无人艇平台达到了预期设计指标,实现了预期的运动特性。
[1] |
牟涛. Pixhawk飞控技术在植保无人机上的应用与实践[D]. 西安: 西京学院, 2016.
|
[2] |
赵航. 基于Pixhawk的多旋翼无人机避障飞行系统研发[D]. 北京: 北方工业大学, 2017.
|
[3] |
杨小川, 刘刚, 王运涛, 等. Pixhawk开源飞控项目概述及其航空应用展望[J]. 飞航导弹, 2018(4): 23-32+76. |
[4] |
祁芳超. 基于Pixhawk的小型固定翼的飞行控制研究[D]. 沈阳: 沈阳航空航天大学, 2017.
|
[5] |
3D Robotics. px4 autopilot[EB/OL]. [2016–06–13]. https://pixhawk.org/.
|
[6] |
EMAD S, MARTIN S, JIE J. A survey on open-source flight control platforms of unmanned aerial vehicle[C]//Euromicro Conference on Digital System Design. Vienna, Austria: IEEE, 2017: 396–402.
|
[7] |
ArduPilot. ArduPilot[EB/OL]. [2016–06–20]. http://ardupilot.org/.
|
[8] |
WAM-V Marine Advanced Research, Inc[EB/OL]. [2015–03–06]. http://www.wam-v.com/.
|
[9] |
OBORNE M. Installing Mission Planner[EB/OL]. http://ardupilot.org/planner/docs/mission-planner-installation.html.
|
[10] |
TRIDGELL A. MAVProxy[EB/OL]. [2018–10–16]. http://ardupilot.github.io/MAVProxy/html/index.html.
|
[11] |
ArduPilot Dev Team. Telemetry(landing page)[EB/OL]. [2016–07–08]. http://ardupilot.org/copter/docs/commontelemetry-landingpage.html#common-telemetry-landingpage.
|