01 四旋翼无人机自主避障技术的研究---无人机避障系统整体设计
1.无人机实现避障的过程如下图所示:
障碍物检测:通过无人机装配的视觉传感器检测感知无人机飞行路径上的障碍物信息,获取图像。
图像处理:通过无人机机载计算机将传感器采集到的图像进行处理得到需要的信息并实时更新,为后续的路径规划提供数据。
路径规划:获取障碍物信息之后,根据人为设定的外部条件,实现实时局部路径规划。
完成飞行任务:在得到安全路径以后,由飞控控制无人机的位置以及姿态信息,使无人机沿安全路径飞行。
2.无人机自主飞行的过程图如下图所示:
3.四旋翼无人机飞行控制系统
无人机的飞行主要通过飞控控制底层的各个模块,无人机的底层控制主要可以分为四类,分别是位置控制、姿态控制、控制分配以及电机混控器控制,具体飞控内部控制流程图如下图所示:
飞控控制工作框架避障飞行研究基于无人机的offboard模式,通过机载计算机运行避障算法,然后不停地给飞控发送期望位置,飞控根据期望位置完成相应的位置控制以及姿态控制。
4.障碍物检测方案
4.1检测方法
避障系统要正常运行,首先需要保证无人机飞行过程中能够检测的障碍物,目前主流的障碍物检测方法主要有以下几种:
(1)超声波测距
超声波测距根据超声波在遇到物体时会反射回传感器的原理,检测前方是否有障碍物,提供障碍物距离信息,测距原理如下:
超声波测距原理测量公式为
其中d表示距离,C表示超声波传播速度,T表示超声波发射到接受的时间。
超声波测距优点是价格低廉,使用简单。但是对于无人机避障要求来说,超声波测量弊端较大,存在几点问题:超声波对外界环境要求较大,会受到嘈杂环境的影响,无人机本身飞行产生的声音会有一定的干扰;超声波对反射介质有一定要求,遇到玻璃或者表面反射能力不足的物体时,效果不理想;超声波测量距离过短。
(2)TOF(飞行时间)检测
TOF与超声波原理类似,只是将声波换成了光脉冲,因此又可以称之为光相位检测。如图所示的激光雷达测距传感器,传感器发射端口发出光脉冲,遇到物体时,光脉冲被反射回接受端口,通过光的传播时间差计算物体的距离。‘
激光雷达TOF 检测优点是测量精度高,距离远。但是相对其他传感器而言,激光雷达类传感 器价格相对较高,而且使用光测时容易受到强光影响,干扰检测结果。
(3)视觉检测
视觉检测是指用摄像头获取障碍物信息作为原始数据的输入,然后利用图像算法提取相关的障碍物信息,从而为无人机避障路径的计算提供数据。这种方法是目前避障研究方向的主流技术。视觉技术采用传感器一般为单目、双目相机以及 RGBD 深度相机, 单目相机在测距上使用最为复杂,且限定条件较多,算法最为复杂,所以不建议使用;双目相机测距范围取决于两个相机之间的距离,测的图片以后通过图像处理算法获取点云数据,处理得到距离信息;深度相机可以直接获取物体深度信息,通过调用节点信息,直接获取障碍物表面到相机的距离,图为微软 kinect 深度相机,不过深度相机对于环境光线较敏感,只适用于室内环境下。
kinect深度相机视觉检测技术受光线影响较大,在弱光或黑暗环境下,视觉检测能力大幅度下降,准确性比较依赖图像算法的优化处理。
4.2 相机标定
实验过程中,尝试两种检测传感器,分别为双目相机以及深度相机,下面分别介绍两种相机标定过程。
(1)双目相机标定
双目相机标定目的为获取相机的内外参数以及两个相机的相对位置关系,标定过程 中使用 Matlab 标定工具箱完成,标定图片采用传统棋盘纸标定,本文所选棋盘纸大小为 A4 纸打印。首先使用相机采集图片,调用 opencv采集图片,采集示例,因为双目相机整体性,所以采集到的图片左右在一起,需要分割开,利用 Matlab编程将图片分割成左右两部分,然后利用工具箱开始标定,标定结果图片如图 3.10,其中柱形图显示图片匹配存在的偏差,可以通过柱形图找到匹配失败的图片重新选择,提高校准的精度。
标定成功以后,Matlab会输出所得到的相应的参数,经过标定,得到了双目相机参数,进一步处理可以得到视差图。
(2)深度相机
深度相机标定可以在 ROS 环境下完成,具体步骤相对双目相机的标定简单很多,首先编译环境,下载安装标定包,然后订阅摄像头信息,检查是否安装正确摄像头驱动,运行标定包开始进行标定,按照电脑提示即可完成标定,随后相机各种参数会输出到命令端口。
4.3 双目测距原理
5. 软硬件环境配置
5.1 硬件选择及搭建
一架完整的无人机主要包括三大系统:机械系统、控制系统以及动力系统,本文所作研究还需要增加机载PC作为避障处理系统。
(1)机械系统
无人机的机械系统包括己家以及起落架。
机架即无人机的机身,无人机的所有硬件都由机架承载,选择一个机架可以从安全性和耐用性、使用方便程度,元器件安装是否合理等方面考虑。起落架用于支撑无人机,在降落时提供足够的缓冲,保护机体不受损害。本文使用机架为X型布局,轴距为450mm.
(2)动力系统
无人机的动力系统主要由电池、电机、螺旋桨、电子调速器(电调)组成。
1)电池
电池主要用于提供能量,目前无人机最大的问题就是续航时间不够,本系统选择的是锂电池,具体参数为标称电压7.4V,电池容量1800mAh,放电倍率为25C.
2)电机
电机选取的无刷直流电机,无刷直流电机运转时靠电子电路换向,极大减小了电火花对设备的干扰,同时减小了噪音,工作效率高,可靠性好。
3)电子调速器
电调,全程电子调速器,最基本的功能是电机调速,通过飞控板给定的PWM信号进行调节,电调还可以充当换向器的角色。选择电调时要注意电调最大电流是否能满足要求,是否由足够的安全裕度容量,其次要注意电调与电机的兼容性。
4)螺旋桨
螺旋桨时直接产生推力的部件,选择合适的螺旋桨能够提供更高效的升力,减少电量消耗。
(3)控制系统
无人机的控制系统主要由飞控板与地面站,遥控器和接收器几部分组成,其中飞控板还需要配套的外接设备,本系统使用pixhawk飞控与QGC地面站相结合。
1)飞控板Pixhawk
选择Pixhawk飞控板作为无人机飞行控制指挥核心,无人机所有的飞行控制都是通过Pixhawk完成。Pixhawk飞控板及相关的接口说明。图中所示接口分别连接无人机所需部分外设。
2)地面站(QGC)
无人机飞控板选择完毕之后,需要使用配套的地面站系统,因为飞控板使用PX4固件,所以此处选用QGC地面站。
地面站主要作用有:下载固件(PX4或者apm固件)、校准遥控器以及传感器(加速度计、陀螺仪、磁力计等)、设置飞行模式、校准电调、设置参数、航点飞行时航点的选择设置、数据分析预览、遥测日志预览等,地面站属于控制指令系统中一部分,通过地面站可以发布无人机航点飞行命令、在线设置航点位置、返航位置以及直接发布一键降落、一键返航命令等。
3)数传
数传电台分两部分,一个连接飞控,另一个连接地面站,主要用作地面站与飞控之间的连接,保持飞控与地面站的双向通信,本次所作研究仅用数传连接地面站与飞控完成飞控的系列校准。
4)遥控器与接收器
遥控器发送操作人员的遥控指令到接收器,接收器将命令信号解码后发送给飞控,飞控根据相关指令控制无人机做出各种飞行动作。遥控器还可以设置部分无人机的飞行参数及操作,如:友们防线,摇杆灵敏度,遥控通道的功能定义等。
(4)避障系统
避障系统主要包含两部分:障碍物检测传感器、图像处理与避障路径计算平台。
1)检测传感器
检测器用作检测路径上的障碍物信息,本次研究采用深度传感器,深度相机可以同时获得 RGB 图和深度图,通过采集图像,由机载计算机处理得到需要的障碍物信息。
2)机载计算机
机载计算机用作处理图像以及运行避障算法,需要在机载计算机上配置图像处理以及避障路径处理所需要的环境,所以选择机载计算机时应考虑计算机的处理速度以及软件环境适配性,本次所做研究使用的是英伟达 tx2 型号,所安装环境为 Ubuntu16.04。 硬件连接方法是将视觉传感器通过 usb 端口连在机载计算机上面,而机载计算机与飞控通过自己焊接的ttl-usb线进行连接通信。
5.2 无人机调试
无人机基础搭建完成以后,需要先调试 Pixhawk,然后试飞无人机,保证无人机可以正常飞行,如发现问题及时解决,调试过程主要有以下几步(一定注意在调试过程中不要安装螺旋桨):
(1)Pixhawk 飞控板的 px4 固件编译及下载。
(2)固件下载之后,将飞控板与地面站连接进行上电前的校准环节,主要校准加 速度计、磁力计、陀螺仪、等传感器以及遥控器各通道输入。
(3)无人机试飞,校准完成后安装螺旋桨,到空旷地带使用遥控器试飞,测试无人机基本飞行功能是否良好,发现问题及时解决,检测依据为手动模式下飞行稳定,没有不正常的震荡现象。
5.3 软件环境配置
(1)Pixhawk 板开发环境
Pixhawk 使用的是 Nuttx 微内核实时操作系统,内部功能以多进程的形式独立运行, Pixhawk 的编译工作在虚拟机的 Ubuntu14.04 系统下完成,需要搭建基础的环境,配置步骤如下:
1)权限设置,为后续的安装编译获取权限。
2)安装编译软件Cmake、QT 等。
3)将 Nuttx 系统的软件包 modemmanager 卸载,否则会影响串口通信。
4)安装 GCC 交叉编译器。
完成上述步骤以后,就可以在环境下下载 Pixhawk 固件 px4,首先在 Linux 终端命令窗口下,通过“git clone+网址”命令开始下载 px4 原生固件到本地,下载完毕后进行编译,如果编译无误,可以将固件下载到飞控板,下载固件源码到飞控成功界面。同时还可以通过地面站下载固件,但是地面站只提供源码,二次开发修改之后的代码固件需要以这种方式下载到飞控板,以备进一步的测试。
(2)机载计算机环境配置
机载计算机采用 Ubuntu16.04 版本,机载计算机作为本次研究系统中的避障辅助环节,需要处理图像并计算得到安全避障的路径,环境配置具体有以下几部分:
1)ROS 环境安装 ROS 机器人操作系统是一种开源的系统,能够提供类似操作系统可以提供的功能,包含硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间的消息传递管理,同时也提供一些工具程序和库用作获取、建立、编写和运行多机整合的程序。ROS 就是一个分布式操作系统,通过节点node,主题 topic,服务 service 等进行通信和控制。 Ubuntu16.04 系统需要选择 ROSkinetic 版本,ROS 安装步骤不再赘述,在 ROS 官方网站上面会有详细介绍。
2)mavros 安装 mavros 是 px4 官方提供的一个运行与 ROS 环境下的收发 Mavlink 消息的工具,安装过程不再赘述,具体可以按照 github 网页指引下完成即可,需要强调 catkinbuild 是 编译指令,第一次编译时间会稍长,catkinclean 是清除全部编译指令。 安装完成后运行之前还需要做几步:
a.手动 source 打开终端设置路径为安装路径。
b.端口赋权限首先查一下占用的是哪个端口 命令 ls /dev/tty*,一般来说是 tyyUSB0(转接线连接)或者 ttyACM0 (安卓线连接),赋权命令 sudo chmod 777 /dev/ttyUSB0 (或者 ACM0)。
c.修改 launch 文件打开(如果是使用安卓线直接连接的话 可以跳过此步骤 /src/mavros/mavros/launch 文件夹下面的 px4.launch 修改”/dev/ttyACM0:57600” 至与 你相符的设置。
另外使用 mavros 下的 px4 节点时,可以将坐标系修改为第 2 章中建立的 NED 地面 参考坐标系,减少后续转换的复杂度,修改方式为通过编写坐标转换代码修改。