摘自:https://wenku.baidu.com/view/54842b5ee209581b6bd97f19227916888586b929.html
室内自主探索无人机系统
一,概述
室内无人机飞行系统主要针对室内无卫星导航信号,无合作目标,可对室内空间进行侦察、重复探测、飞行过程中能够躲避障碍、能自主任务规划,实现对室内各个空间的侦察或巡检等作业。为了满足此等作业要求,我们设计出地下空间环境自主飞行无人机系统总体方案。主要内容包括:
- 完成室内无源自主定位系统(TSLAM定位系统)
- 基于Linux系统超强运算能力的飞控硬件
- 适合室内自主起飞降落的飞控软件
- 实现自主路径探索的飞行导航软件
- 基于视觉引导降落的视觉系统
- 适合室内飞行的无人机飞行平台
- 系统框架与结构框架
系统框架
结构框架
- 内容详述
- TSLAM定位系统
SLAM是采用同步定位与地图构建的一种无源建图定位技术,而TSLAM定位系统作为一整套室内定位系统的解决方案,其独创的tiny-EKF融合算法,已融合包含气压计、高精度imu、磁罗盘、激光雷达以及高精度光学编码里程计等传感器的数据融合。
SLAM系统近年来主在智能机器人领域得到了广泛的应用,比如扫地机器人、无人车等。目前SLAM技术中Cartographer开源框架比较先进,该框架适合通用性的SLAM,但对于无人机这种非二维平面的运动物体来讲,该框架要做到稳定的SLAM定位效果较差,容易产生发散漂移。目前TSLAM定位系统主要针对无人机重新开发算法,更符合无人机在室内环境的自主定位飞行作业。
优点如下:
1)、基于环境自然导航,无需对客户现场环境做任何的改造
2)、定位精度满足绝大部分场景应用
3)、配套相应的操作软件,易学易用
4)、变更使用场景简单,客户自由操作
5)、环境亮度要求低,日常光亮环境、昏暗环境皆可作业
6)、无惧磁干扰、多金属环境
- TLSAM定位系统优势
1),对比相关开源项目
Cartographer
Hectorslam
Gmapping
Gmapping是基于粒子滤波的SLAM算法,而Cartographer和Hectorslam都是基于非线性优化的,现在已经很少用滤波方法来做SLAM了,绝大多数还是使用最小二乘法。
Cartographer是有后端的SLAM算法,而Hectorslam是无后端的,前者更适用于以建图为重点的应用,后者更适合以定位为重点的应用。
Cartographer在无人驾驶平台上会遇到如下问题:
(1)定位噪声大:在载具不动的情况下,会产生10cm左右漂移。
(2)定位错误:由于载具运动会在快速移动或者大角度倾斜移动的情景下会产生匹配错误,在融合了imu的情况下坐标偏差达到10m以上。
(3)效率太低:比如在机载飞控板卡上跑cartographer时常达到400%的cpu负载(一个核是100%)
(4)通讯受阻:
目前使用ROS通信方式为Cartographer为通信框架,ROS属于实验性验证性工具框架,在 ROS topic话题中使用TCP本地传输数据,数据从用户层进入内核,然后再回到用户层,造成巨大延迟。不符合实时要求,会造成通讯延迟,稳定性较差。该项目优化建立新的通讯方式,直接使用指针传递函数。数据通信几乎实现零延时效果。
2),对比算法进行优化达到效果
(1)优化相关算法实现准确的同步定位,累计误差减小。
(2)针对载具姿态变化问题做出算法研究,加入融合ekf滤波以后的高精度imu数据做相关数据处理,让载具达到至少在30度倾斜角时,仍然良好建图定位效果。
(3)专门对激光匹配做出优化算法,让载具在速度很快的情况下也能良好定位,能满足正常大机动。
(4)传统算法很多冗余的不分,需要对算法实现减法处理抛弃不需要的组件,让框架轻简,能挺高运算速率。
(5)抛弃ros通信,实现简洁通信协议让整个系统的数据链路更加快速。
(6)实现了对位姿先验的支持,可以不限于使用激光测距来实现定位,同其他SLAM算法一样,使用轮式里程计,视觉里程计,加速度计均可以作为SLAM匹配器的先验,让SLAM更精确,可以排除大量的匹配错误,让SALM更平滑。
(7)完成对后验位姿的准确度判定算法升级,如果判定得到有明显的匹配错误,则丢弃当前帧定位与建图,明显减少了在场景特征稀少的区域出现位姿发散的问题。
- Tslam构成组件
1),点云滤波
tslam滤波方法是结合了体素滤波和半径滤波的,首先我们要改变半径体素滤波的规则,我们不再以固定半径的立方体格子作为滤波单位,转而使用变化的半径,考虑激光雷达的特性,最好是以弧度与半径作为单位格:
类似上图的蛛网状扇形切分个数作为一个参数,一圈一圈的半径切分个数也作为一个参数。以切分出的扇区作为滤波单元,好处显而易见,当激光雷达扫的很远的时候格子体积自然而然的增大了。然后再使用半径滤波的思想,如果某个扇区内的点云个数大于设定的阈值,则保留,也不再取几何中心点代替,如果小于,我们直接剔除。这种方法在参数设置合理的情况下几乎可以完美的剔除95%以上的离群点。
- . 激光雷达除畸变
在机器人运动过程中,每个激光点都在不同的基准位姿上产生。
激光扫描时伴随着机器人的运动,每个角度的激光数据都不是瞬时获得的,当激光雷达扫描的频率比较低的时候,机器人运动带来的激光帧的运动畸变是不能被忽略的。例如扫描频率是5Hz的激光雷达,一帧数据的收尾时间差是200ms,如果机器人以0.5m/s的速度沿着x方向行走并扫描前面的墙体,那么200ms后尾部的测量距离和首部的测量距离在x方向上就差10cm。所以如果不是高频扫描,这种运动畸变是不容忽视的。
去除激光雷达运动畸变的原理是把一帧激光雷达数据的每个激光点对应的激光雷达坐标转换到不同时刻的机器人里程计上
由于imu adis16488的加入,我们可以把它作为一个高精度的惯性里程计使用,我们可以得到一个搞到1khz的位姿惯导,将激光雷达的每一个激光点,都精确的定位到真实的物理坐标中。
流程:
·已知当前激光帧的起始时间t1
·两个激光束之间的时间间隔t
·惯性里程计数据按照时间顺序存储在一个队列中
·求解当前帧激光数据中的每一个激光点对应的里程计数据(机器人位姿)
·根据求解的位姿把所有的激光点转换到同一坐标系下
·重新封装成一帧激光数据发布出去
经过此流程以后,得到的激光点云的畸变被控制在了以往的1%以内,并且,使用的惯性传感器越好,效果越大,实测使用adis16448去除畸变后,飞行载具3m/s的速度运动,对建图、定位,均无任何副作用。
3),点云匹配
Tslam通过对获取到的点云建立误差函数进行点云匹配
若将图形xy平面看做姿态位置维度
Z轴看做误差维度(z轴越往上误差越小),
误差函数在三维空间中具有如下属性:
若求得尖峰的xy坐标即可求得最小误差的位置和姿态。
Tslam选择高斯-牛顿方法解这个最小二乘问题,可以达到足够高的精度和足够快的运算速度,实测匹配速率高达60帧/秒。
4),网格插值
全新的算法来解决定位漂移和大速度下匹配失败的问题,进行网格插值,cartographer和hectorslam使用的网格插值法,hectorslam为了更高的效率选择了双线性插值,cartographer为了更好的效果使用了双三次插值。效果并不是特别好。
本项目使用插值权重来完成插值,能很好的改善定位漂移相关效果。
计算公式:weight = alpha / (x^2 + alpha)
数据结果:可以看出当alpha取0.005时,x每增加一点点,y值急速下降,y值无线趋近与0,但永远不等于0。这种方式增加了匹配成功的概率和匹配的精度。
5),tiny_ekf
Tslam ekf组件确保无人机工作在高频定位信息状态。
若只使用激光雷达产生定位源,显然无法满足无人机飞行所需要的定位频率,tslam使用高精度惯导adis16488结合tiny_ekf组件产生高达1khz的定位定姿信息。
Tiny_ekf与核心slam模块异步工作,采用递归优化的策略,互相约束,产生高精度的定位,工作时序分为以下几个步骤:
- imu预积分阶段,这一阶段,tinyekf不断获取imu数据,使用毕卡发进行四元数积分,同时使用加速度计数据进行位置的线性积分,并同步进行所有状态变量协方差的推演
- 将所有计算出的位姿信息进行放入ekf-delay管道,转入历史融合阶段,这一阶段保证可以融合历史数据,因为激光雷达,激光测距,气压计等传感器都会有数据延迟,而imu却几乎没有延迟,为了能够将所有时间轴对齐,不得不缓存imu历史数据。
- 将预积分后,并经过第二阶段修正了时间的位姿数据,投递到slam模块,作为最小二乘法的先验,进行点云匹配。这一步由于高精度imu的参与,得到了最为精确的先验。保证了点云匹配的精准和快速。(积分越准确,运算效率越高)
- 将点云匹配以后的位置信息作为tinyekf的位置测量值,修正所有状态变量。这一步就是ekf的测量步骤了,这一步我们可以精确的估计出gyrobias accelbias。
- 跳转到第一步,再次迭代
由于ekf的收敛性,几次迭代下来,gyrobias accelbias将越来越精确,所以积分出的姿态和位置也越来越精确,slam也将越来越快,越来越准。准确的slam位置投递到ekf测量的时候,协方差也会越来越小。
从而看出,整个系统是一个良性的递归优化过程。
下面附上数学建模:
6).分离式建图
分离式建图是tslam一个特别的功能,由于slam属于自建自定的特性,位置与地图属于递归依赖的关系,很难做到万无一失。
Tslam分离式建图使用双层地图模式进行定位,底层地图使用上一次保存的完整地图,上层地图是此次的建图,将两层地图同时映射到一张地图上,作为这一次的全局地图进行定位。
底层地图运行于只读模式无法更改,上层地图可以随着载体的移动,慢慢地进行slam过程。
底层地图一般是使用tslam普通模式,缓慢移动载体采集到的,可由工作人员手持设备进行采集,由于移动缓慢,我们可以得到最为精确的地图。
使用双层地图定位,好处显而易见,就算上层地图由于载具速度过快,或者其他问题,得到了错误的地图,也不会导致地图的发散,因为,底层的地图具有只读属性,始终约束着激光帧,就算有10多帧的错误激光数据,也对定位毫无影响。
- 基于Linux系统的飞控硬件
Alice是一款专为自动驾驶开发者及爱好者打造的自动驾驶控制器,基于linux实时系统,为二次开发及高级应用扩展提供了友好的环境;支持Ardupilot和PX4固件,支持远程GBD调试,并提供多种即插即用的开发接口。
可支持:多旋翼(3-8轴)、固定翼、直升机、垂直起降固定翼、无人车、无人船、无人潜水艇。
- 强大的硬件处理能力
采用基于NXP Cortex-A9架构的i.MX6Q 四核处理器,主频高达1GHz,容量8G,极大的提高硬件处理能力,例如在运行APM时,CPU使用率仅在10%左右,代码可扩展能力强大。
- 外设丰富,扩展能力强
Linux下,传感器驱动、USB驱动等各种支持的外设丰富,可方便的扩展到视觉等高级应用开发。
- 实时计算
搭载Linux PREEMPT_RT,延时低于1ms
- 支持远程GDB调试(软硬件断点,内存断点,单步步入、步过、跳出),VS远程开发
在Visual Studio开发环境下,实现远程附加调试(例如在使用APM或者PX4下,不用再搭建开发环境,VS下可直接开发)
- 支持SFTP文件传输
使用SFTP,全图形化管理板卡的根文件系统
- 支持远程桌面
基于SSH的远程图形界面
- 支持wifi通讯,4G/5G扩展
可实现WiFi图数传功能
产品参数
基本参数 |
|
主处理器 |
NXP i.MX6Q 四核 |
协处理器 |
STM32F405 |
架构 |
Cortex-A9 |
主频 |
1GHz |
内存 |
1GB DDR |
ROM |
8GB eMMC |
操作系统 |
Linux-RT |
接口引出 |
|
I2C |
1路 |
USB HOST |
3路(2路为gh1.25-4p接口,1路为 Micro-usb 接口) |
USB OTG |
1路(Micro-usb 2.0接口) |
UART |
3路(包含一个可做debug调试串口) |
pwm |
12路(标准8个+扩展4个) |
s.bus |
1路 |
adc |
2路 |
Can |
1路 |
板载传感器 |
|
气压计 |
MS5611 |
加速度计/陀螺仪 |
MPU6050 |
磁力计 |
QMC5883L |
RGBLED |
1个 |
规格 |
|
尺寸 |
170*73*16(mm) |
电源输入 |
DC5V 2A |
额定功率 |
4W |
环境温度 |
0℃—50℃ |
重量 |
97g(铝壳) |
- 实现自主路径探索规划导航软件
VNAV是一款自主设计的高实时性、高效率的投影匹配地面端操作软件,结合我们自主研发的ALICE自驾仪控制器,已经实现了实时操作和显示激光建模、避障和最优路径自主规划的功能。以下为软件界面展示
VNAV调参界面
VANV地图建立界面
VANV自主路径
6,无人机飞行平台
S380带防护通用型无人机
S380采用H形共轴8桨设计,在满足长续航大载重的前提下将轴距压缩到了380mm,同时,采用全包围可拆卸护桨,满足各种狭小空间的飞行需求。
- ,产品特点
- l够小
仅380mm轴距设计,1m宽狭小空间也能安全穿行;
- l够效率
共轴八桨结构设计,经过精心设计,多次优化,实现大载重长续航效果;
- l够安全
采用了可拆卸护桨设计,在用户使用时,可以拆掉护桨保证长续航,也可装上护桨,保证人员安全;
- l大载重
安全4.5KG起飞重量,满足各类传感器搭载需求
- l长续航
最大空载25min长续航,满足日常作业需求
- l丰富的搭载空间
可搭载TX2、云台相机、双目视觉等机载设备
- 广适用空间环境
采用可拆卸护桨装置,室内外飞行操作更灵活
- 产品参数