基于ROS,的旋翼无人机实验教学平台设计

张子明,王从庆,刘良勇,汪 秒

(1.中国人民解放军第5720 工厂 航空设备测控与逆向工程实验室,安徽芜湖 241007;
2.南京航空航天大学自动化学院,江苏南京 211106;
3.东南大学 网络空间安全学院,江苏南京 211189)

旋翼无人机具有机动灵活、反应快速、感知能力强、影像实时传输、能耗低、性价比高、易于操作等众多优点[1],能够在三维环境下执行任务。伴随着相关技术的不断发展,旋翼无人机在军用和民用领域迅速普及并得到广泛应用,特别是通过在旋翼无人机上安装视觉模块,可以实现航拍、监控、测绘等功能[2-3],在火灾救援[4]、气象观测[5]、地质勘探[6]等方面发挥着越来越重要的作用。同时,旋翼无人机也是当今国内外各科研、教育机构的关注热点,属于自动化、计算机、航空等相关专业的前沿领域,具有涉及专业多、研究内容新、实用领域广、知识体系综合全面等众多特点,对于培养学生的创新实践能力、验证理论基础、加深知识理解等都是一个非常理想的实验教学平台[7-8],已成为重要的学术研究载体[9-10]。

目前旋翼无人机实验教学平台的研究包括以下方案:一种是以FPGA 作为飞行控制器,搭载传感器、动力、通信等设备[11],但是由于缺乏独立的机载计算机,在应用开发扩展性和任务管理方面存在一定缺陷;
另一种是以Pixhawk 为飞行控制单元、以Odroid 为机载处理器搭建[12-13],该方案缺乏图像采集功能,飞行感知信息不够全面;
还有一种是基于STM32 单片机的无人机飞行控制器,配置了无人机机架、激光及视觉传感器、机载计算机等部件,搭载ROS 系统[14],功能比较强,但是选用工控机作为机载计算机,质量及功耗较大,会影响续航时间。另外,目前的旋翼无人机实验教学平台的图传功能比较薄弱,地面站并不能实时接收无人机采集到的图像,这对于后续编队协同等功能的研究开发会产生影响。

针对以上问题,文中研究了一种新的旋翼无人机试验教学平台,其硬件在M100 机架(含N1 控制器)的基础上,搭载机载计算机(树莓派)、自动调焦摄像头、无线图传模块、无线数传模块、移动电源等电子设备,软件在树莓派上搭建ROS 机器人操作系统,并以此为平台开发应用程序。该平台可实现旋翼无人机的自主/远程飞行控制、图像采集、远程图像传输与实时监控等较为完备的功能,并且便于二次开发,扩展性好,可以完成无人机试验教学任务。同时,文中硬件模块基于成熟货架产品搭建,具有较高的可靠性。另外,文中提出的方案在经济性方面也做了充分的考虑,在满足基本功能的前提下设计了轻量级的综合系统,节约了教学、科研机构的相关成本。

1.1 飞行平台

文中介绍的基于ROS 操作系统的旋翼无人机实验教学平台的飞行平台选用大疆公司生产的M100型无人机机架。

1.2 ROS系统

ROS 是一个便于开发机器人软件的灵活平台,集成了大量的工具、库、协议,可以极大简化繁杂多样的机器人平台下的软硬件开发、复杂任务创建、相互可靠通信、稳定行为控制以及多任务运行管理[15-17]。文中设计的无人机实验平台可被认为是执行机构为旋翼电机、具有视觉感知能力的机器人系统,非常适合搭载ROS 系统进行飞行控制等开发。

1.3 总体功能

文中设计的旋翼无人机实验教学平台机载控制与图像采集系统主要包括机载计算机、自动对焦摄像头、无线图传模块、无线串口等模块,机载计算机运行以SDK 为基础开发的相关软件,完成飞行控制、图像采集、传输及实时存储等工作,实现ROS 系统下的软件控制自动飞行、远程发送指令飞行、远程飞行参数回传、远程图像实时传输、地面实时观看监控、地面和空中实时存储图像等功能。

文中设计的机载控制与图像采集系统分别使用树莓派3B+作为机载计算机,使用USB 自动对焦摄像头进行图像采集,使用XRbot-Link5 作为图传模块通过WiFi 传输图像信息,使用AS01-ML01DP5无线串口模块作为指令状态通信模块,使用GPS 天线模块接收卫星导航数据。电源方面分为两部分,M100 无人机电机驱动供电直接使用大疆智能电池,机上其他模块供电使用10 000 mAH 移动电源。同时设计制造了机载背板(固定机载计算机、图传模块等)和工装(固定摄像头、移动电源等),以便于将以上模块安装在M100 无人机的设备仓和电池仓,达到有机集成的效果。系统总体框架如图1所示。

3.1 软件平台安装

由于该方案需要使用ROS 操作系统,而ROS 系统需要运行在Ubuntu 系统下,因此首先需要在树莓派中安装Ubuntu16.04 操作系统。树莓派使用SD 卡作为硬盘,因此需要准备一张容量不小于16 GB 的SD 卡并制作为Ubuntu16.04 操作系统的启动盘,并且将该系统安装到树莓派中。需要注意的是,文中选用的机载计算机使用树莓派3B+,因此Ubuntu16.04 操作系统的镜像版本也必须选择树莓派3B+(Raspberry 3B+)对应的版本,这里选择的镜像版本是Ubuntu-MATE-16.04.02-desktop-arm64-raspi3。

3.2 ROS系统的安装

ROS 系统的安装方法主要有两种:软件源安装和源码编译安装。软件源(Repository)安装为系统提供了一个打包好的针对相应平台的应用程序仓库,只要通过简单的命令即可从仓库中找到需要的软件并完成下载安装。相反,源码编译的方法相对复杂,需要手动解决繁杂的软件依赖关系,更适合对系统比较熟悉而且希望在未支持的平台上安装ROS的开发者。该项目使用成熟的开发平台(Ubuntu 16.04),同时为了加快开发进程,采用软件源安装法。

需要注意的是,为了提高软件的下载、安装速度,建议使用国内镜像源,设置的方法为使用gedit或其他编辑器打开/etc/apt/sources.list 文件,然后替换国内的软件源路径,最后保存退出,在命令行执行指令$sudo apt-get update 来更新软件源。

3.3 SDK移植

M100无人机的软件开发包(Software Development Kit,SDK)便于用户进行二次开发,因此该方案将M100 的ROS 版本SDK 移植到树莓派中。

3.3.1 下载安装OSDK并编译

ROS 系统下的Onboard-SDK(以下简称OSDKROS)依赖Ubuntu 系统下的基本Onboard-SDK(以下简称OSDK),因此首先需要下载基本OSDK,主要步骤如下:

1)下载OSDK

可以使用git clone 指令直接下载OSDK 文件夹,下载完成后将其存放在用户路径中。

2)对OSDK 进行编译

下载完成OSDK 后需要对djiosdk-core 模块进行编译,否则执行OSDK-ROS 版本时会报错,如找不到DJIOSDK 等。对OSDK 进行编译执行以下指令:

$cd Onboard-SDK

$mkdir build

$cd build

$cmake..

$make djiosdk-core

$sudo make install djiosdk-core

3.3.2 下载安装并编译OSDK-ROS

除了基本OSDK 外,需要进行ROS 系统下的开发,即需要拥有M100 无人机的OSDK-ROS,主要步骤如下:

1)下载OSDK-ROS

使用git clone 指令直接下载OSDK-ROS 文件夹,下载完成后存放在用户路径中。

2)创建ROS 工作空间

工作空间是一个存放工程开发相关文件的文件夹,可以通过以下指令创建ROS 下的工作空间(catkin_ws)并进行初始化:

$mkdir-p~/catkin_ws/src

$cd src

$catkin_init_workspace

3)编译OSDK-ROS

将第一步下载的OSDK-ROS 文件夹放入ROS工作空间的源代码路径(~/catkin_ws/src)中,然后使用如下指令进行工作空间的编译:

$cd~/catkin_ws$catkin_make

3.4 树莓派虚拟内存设置

由于追求高性价比选择的树莓派3B+仅有1 GB内存,因此在上述编译过程中资源比较紧张,为解决此问题可以使用swap 扩展内存。swap 分区是磁盘上一个具有特殊用途的分区。当系统的物理内存不足时,将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间在很长一段时间内没有需要操作的程序,这些释放的空间被临时保存到swap 分区中,等到有程序要运行时,再从swap 分区中恢复保存的数据到内存中区。

swap 空间的分配需要在适当的范围内,如果swap 空间分配得太大,则会浪费磁盘空间,而swap空间太小,则系统会发生错误。一般在内存小于2 GB 的情况下,swap 分区应为内存的2 倍。

首先安装dphys-swapfile 以扩展swap,输入以下指令:

$sudo apt-get install dphys-swapfile

安装完毕后输入以下指令编辑dphys-swapfile文件,将其中的参数CONF_SWAPSIZE 改为2048:

$sudo gedit/etc/dphys-swapfile

更改完毕后,保存退出,输入以下指令重新启动dphys-swapfile 文件服务,这可能需要一段时间,直到状态显示为[OK]:

$sudo/etc/init.d/dphys-swapfile stop

$sudo/etc/init.d/dphys-swapfile start

最后可以使用以下指令查看swap 交换空间大小,此时可见swap 空间的使用情况为总大小2 047 MB,已用9 MB,空闲2 038 MB,更改成功。

$free-m

应用软件在树莓派上运行开发,包括飞行控制、图像数据接收及实时存储、飞行指令发送及飞行参数获取、图像视频回制等,在ROS 系统框架下通过发布订阅话题、服务等通信机制实现远程控制无人机飞行和接收图像信息等功能。

N1 飞行控制器执行树莓派发送的指令并且向树莓派发送状态信息,其主要的通信元素如表1所示。

表1 部分主要的飞行控制器通信元素

4.1 飞行控制

由于无人机搭载了ROS 系统,因此可以通过创建飞行控制节点(demo_flight_control_node)的方式进行飞行控制,实现无人机的自动飞行。该节点接收GPS 位置消息,经过计算后,通过飞行控制话题发布航路点飞行控制消息,通过设置航路点实现预定路径的飞行。图2 所示是实现高度为10 m、边长为10 m 的正方形航迹飞行控制软件流程。

4.2 图像数据接收及实时存储

该项目的图像数据传输由无线图传模块完成,该模块将连接的摄像头所拍摄的图片数据通过mjpeg-stream 形式发送,计算机的IP 地址和无线图传模块的IP 地址需在同一个网段,这样在浏览器中打开无线图传模块的IP 时,就可以实时观看摄像头拍摄的图像。

根据项目需要,不仅要实时观看拍摄图像,还要将图像数据提取并保存,因此设计图像数据接收与实时存储软件,使用Python 语言编程。主要设计思想为打开IP 端口读取流数据,在这些数据中查找jpg文件头和文件尾的位置,将以上位置之间的数据保存到文件中。图像数据接收与实时存储软件流程如图3 所示。

4.3 飞行指令发送及飞行参数获取

飞行指令发送及飞行参数获取软件用于地面控制站与M100 无人机使用无线串口模块通信时,可以实现超远距离的飞行指令发送及飞行参数的获取,该部分软件分别驻留于地面控制站和机载计算机上。

4.3.1 地面控制站部分

地面控制站程序包含简单的人机交互界面,在该界面上用户可以控制M100 无人机的起飞与降落并动态显示GPS 数据。地面站控制程序使用Python语言的Tkinter 模块编写,首先绘制软件界面、操作按钮以及数据显示文本框,然后定义各个控件的回调函数,其中因为飞行参数是动态实时显示的,因此该部分安排在子线程中循环运行。软件流程如图4所示。

4.3.2 机载计算机部分

机载计算机部分程序在作为机载计算机的树莓派上运行,主要功能为接收无线串口模块发送的飞行指令,另外将M100 无人机的GPS 数据经过解析后通过无线串口模块发送给地面控制站。软件创建ROS 系统新节点,该节点发起飞行任务服务,并订阅GPS 位置信号消息,主要软件流程如图5 所示。

4.4 图像视频回制

为了在飞行结束后观看整个飞行过程中的视频,可以在飞行结束后执行图像视频回制程序,利用保存的图片重新制作视频,该软件流程如图6 所示。

使用文中搭建的机载控制与图像采集系统,进行M100 无人机的试飞并观察效果。

5.1 打开机载计算机远程桌面

打开地面控制站的VNC Viewer 软件,打开机载计算机所在的远程桌面,远程控制机载计算机,此处也可以使用SSH 进行远程控制。

5.2 启动节点

首先运行以下指令,启动无人机飞行控制与信息感知的主节点:

$roslaunch dji_sdk sdk.launch

可以在~/catkin_ws/dji_sdk_demo/src/路径下原有程序的基础上修改编写的飞行控制程序,使用以下指令运行飞行控制节点,在此例中,该程序可以使无人机自动按照边长10 m,高度10 m的轨迹进行飞行:

$rosrun dji_sdk_demo demo_flight_control

也可输入以下指令运行自行开发的远程飞行控制节点,此时终端上会显示GPS 参数,同时等待接收地面站指令进行飞行和着陆:

$rosrun dji_sdk_demo remote_flight_task.py

5.3 启动视频显示与保存软件

在地面控制站计算机上运行视频显示与保存软件,此时可以看到自动跳出视频显示窗口,可实时显示M100 无人机摄像头拍摄的图像,同时可以看到在文件夹中有图像文件保存下来。

5.4 飞行精度验证

在飞行控制任务节点运行的过程中,通过飞行参数获取的经度、纬度、高度等信息验证飞行的效果。分别记录①起始位置、②起飞至10 m 高度(0,0,10)位置、③航路点(0,10,0)位置、④航路点(10,0,0)位置、⑤航路点(0,-10,0)位置、⑥航路点(-10,0,0)位置、⑦降落位置的飞行参数,并计算相应的实际飞行动作,结果如表2 所示。

表2 飞行数据及误差

表2 中的“动作”指的是在飞行指令下达后无人机在其目标方向移动的实际距离,可以根据经线Δx、纬线Δy以及高度Δz三方向移动距离与经度loN、纬度laN、海拔alN以及地球半径R的关系求出无人机实际的移动距离并进行对比。从表2 中可以看到,仅仅依靠GPS 控制无人机的运动会存在一定误差,不过范围一般控制在0.2 m 左右,再配合基于图像的目标跟踪、定位、建图、导航等方法有望实现鲁棒性更强的飞行控制以及更为复杂的编队飞行等功能,这样的精度级别完全适用于教学和试验工作。

文中基于M100 机架搭建了旋翼无人机实验教学平台系统,该系统可以对飞行器进行有效的飞行控制以及完成图像采集传输与存储,成本低廉易于使用,同时体积和质量较小,在一定程度上控制了无人机载荷质量。系统采用ROS 系统,便于进行二次开发和进一步的智能化研究。

猜你喜欢 树莓旋翼指令 改进型自抗扰四旋翼无人机控制系统设计与实现北京航空航天大学学报(2021年9期)2021-11-02花样旋翼大秀场小哥白尼(军事科学)(2021年4期)2021-07-28大载重长航时油动多旋翼无人机军民两用技术与产品(2021年9期)2021-03-09《单一形状固定循环指令G90车外圆仿真》教案设计学校教育研究(2020年11期)2020-06-08基于树莓派的骑行智能头盔设计电子制作(2019年11期)2019-07-04基于STM32的四旋翼飞行器的设计电子制作(2019年9期)2019-05-30关于ARM+FPGA组建PLC高速指令控制器的研究科技与创新(2019年2期)2019-02-14基于Qt和OpenDDS的船舶电力模拟训练系统指令处理方法船海工程(2018年6期)2019-01-08黄金水果红树莓农产品市场周刊(2016年43期)2016-12-23e络盟率先推出第三代树莓派电脑爱好者(2016年6期)2016-04-01

推荐访问:无人机 实验教学 旋翼