1. 介绍
为了使直升机在复杂多变的走廊中平稳避障飞行,本文提出了三个算法:
- 一个鲁棒性好的平稳控制算法(基于光流+声波传感器);对周围环境做及时反应使helicopter保持在航线上
- 障碍物检测(基于SVM,对图像进行分割提取特征);检测到接近的任何障碍物
- 障碍物规避;给出避障控制量:最佳偏角
实验: 走廊跟踪和楼梯跟踪。
2. 引言
用单目摄像头在走廊中检测障碍物,光流可以用于检测静态障碍物或者某些场景下的动态障碍物。但是在狭窄空间很难检测到静态障碍物,因为障碍物与背景的运动相似。
3. 相关工作
平稳飞行
之前均需要笨重的设备并且处理过程复杂,但是本文需要最小化的载重且不需要定位。
近年来有:使用光流来处理上述约束使helicopter稳定飞行。
运动障碍物检测
- 运动物体的运动和周围环境不一致来检测;
- 用聚类的方法来分类运动物体和背景的运动。
静止障碍物检测
文献4中假设:相机的运动轨迹一直跟随着地面,任何稀疏光流不满足单一性变化的认为是障碍物边界。
也有不用光流,而是基于低层次特征(如颜色和边界)图像分割来检测地面上的大型障碍物。但是此方法只能用于地面机器人。
本文
本文避障算法基于图像结构。假设图像能量谱对于深度估计来说很重要(如文献6中)
4. 硬件
Blade CX2 Coaxial Micro Helicopter
重: 200grams with the battery
载重: 70grams.
控制命令传输: Spectrum DX6i 2.4GHz transmitter, off-board
通信: Endurance PCTx interface
KX141 camera: 795×596 pixels,
5. 稳定
5.1 光流
光流用于补偿漂移和偏航。
- 使用比例项来补偿猛烈运动和抑制不稳定;
微分项对于惯性导航系统来说不是必须要的,因为光流本身就是对位置的微分项,所以P控制就可以了。
5.2 墙壁避障
UAV上的声呐传感器(会生成指数衰减量)用于墙壁避障;当UAV靠近wall时,会增大指数衰减量。能保证UAV沿走廊中线飞行而不受wall上障碍物影响,也保证避墙飞行。
5.3 高度
垂直声呐传感器用于UAV定高飞行,在飞行过程中,通过调节节流阈值利用PID控制来使UAV高度在理想值。
PID各个项的作用:
- P: 在t时刻,调整使高度在理想值;
- I:在飞行过程中,调整使高度在理想值;(积分)
- D: 在UAV接近理想值,调整使高度在理想值。(微分)
6. 障碍物检测和规避
6.1 训练
训练集:
- 560张图片
每张图片分割为3*5个单位(cell)
- 每个cell64*64pixels
- 每个cell提取384个基于光谱特征的属性值(文献7中提到: 从图像频域上提取的光谱特征可以用于表示场景深度)
如果每个cell再增加边缘定位、颜色、color的属性值,在预测过程中处理时间会大幅增加,太耗时间。
本文建立此cell和其上下左右cell的关系来扩充特征属性值
训练过程
本文采用基于径向(高斯)核函数的SVM分类器来训练,通过调节SVM参数来最大化训练阶段的召回率(公式10)
低的障碍物检测遗漏率比障碍物检测错误率更为重要。宁可空闲识别为障碍物也不障碍物识别成空闲。即在分类过程中障碍物识别为空闲占的比重应该大。
6.2 避障
SVM检测到障碍物,我们给UAV发送相应控制量使其避障飞行同时向目标靠近。
但是为了避免UAV在避障过程中朝wall飞去,因此尽量让UAV沿着图像中间飞行。
7. 实验
7.1 数据
光谱特征属性提取(matlab源码):
http://people.csail.mit.edu/torralba/code/spatialenvelope/
SVM训练了4组不同的数据集;每个数据集都是人工标定的。
召回率recall, 准确率precision
其中,TP: 所有标记障碍物的个数;
MI:标记为障碍物却识别为空间的个数;
FA:标记为空闲却识别为障碍物的个数。
7.2 结果
SVM准确率在4个数据集上均达到了70%以上;
在数据集1上,结果基本和标记一致。
7.3 UAV实时实验
C++、OpenCV
可实现3帧/秒处理速度
7.4 UAV稳定性实时实验
在4个实际场景下检验了UAV稳定性算法。
8. 想法
我们可以将图像分割为不同块,然后提取每一块的特征值(待定,可参考之前论文中基于光流的特征属性)和块与块之间的相互关系,用SVM训练。