张浩杰
(中国北方车辆研究所,北京,100072)
德国移动技术公司(Locomotec GmbH,简称LOC公司)成立于2010年,主要研究服务类机器人,并实现商业化。该公司的研究方向和技术优势包括物品的移动性和人类的移动性两个方面,比如,在医院、餐馆及其他公共区域中,非结构化环境下的物品自动运输和利用机械臂进行物品移动操纵等;在人类移动领域,开发辅助机器人系统,主要用于恢复并提升个人健康。
RUFUS是一款全新的用于提升人类健康的跑步服务机器人,它采用三轮纯电驱动形式,如图1所示。在人类跑步过程中,RUFUS充当教练的角色,在跑步者前面进行引导,根据环境信息向用户设定最优的跑步路线和行进速度。同时,RUFUS通过跑步者穿戴的设备测量用户当前心率,将心率与设定的心率值进行对比,然后调整RUFUS的速度,从而实现根据心率值引导跑步者的功能。RUFUS可实现自主巡航控制,全程自主运动不需要跑步者对其干预,但RUFUS绕过死角时需要跑步者辅助,其性能参数如表1所示。
图1 RUFUS原型
表1 RUFUS性能参数
LOC公司开发的一款餐饮服务机器人原型样机如图2所示,并在进行迭代开发。该机器人能够在室内拥挤环境中完成引导服务任务,比如机场、火车站、银行和医院等场所。它采用模块化、低成本的设计理念,拥有可在大范围室内环境下实现的机器人导航技术,如地图生成、定位、路径规划、避障和柔性控制等,人们可以直接与机器人交互或者轻松推开机器人,实现机器人在拥挤人群中被安全使用和友好操作。
图2 餐饮服务机器人原型样机
在安保机器人平台上安装机械臂,可以扩展其功能和移动范围,比如,可以从人手中接过物品等,以及机械臂末端安装的摄像头还可以观测车内或者室内情况。常见的工业机械臂通常不适用于高精度、高速及任务定制等应用场景,为了适应服务机器人市场的需求,新型机械臂需要解决人机交互、低功耗、低成本、重量轻及编程简单等问题,最终实现机械臂动作灵活和柔性控制。其中,机械臂柔性控制可以通过硬件或软件两方面实现,比如,选用软材质材料,采用弹簧或拉线等结构形式,采用力控制、阻尼控制或者其他柔性控制方法等途径。
LOC公司将控制机械臂运动的电机移至机器人壳体内部,而非安装在机械臂关节上,并采用拉线连接的方式控制电机的输出轴,最终通过可伸缩拉线实现机械臂的柔性控制,如图3所示。这种特殊的拉线连接方式具有低摩擦、低弹性、细小及鲁棒性强等特点,采用铝材导管引导拉线,可以预先定义节点单元,实现任意电机、减速器和驱动电机之间的搭配。
图3 机械臂及其部件布置
机械臂柔性控制过程可以分3个层次:
1)任务层。决定机械臂应该执行的任务,比如,人类操作者通过远程给定的控制输入量。
2)运动规划及执行层。实现机械臂运动轨迹的规划及执行,所有的关节在同一坐标系中运动。
3)低级控制层。实现每一个关节电机的激励控制,尤其需要连接硬件设备,比如Elmo运动控制器等。
采用德国易格斯公司(igus)6自由度机械臂作为柔性控制测试的平台,其硬件配置如表2所示。
表2 机械臂关节参数
当操作者将控制机械臂的速度指令下发后,通过反向运动学计算机械臂到达某一个点或者执行某个动作的轨迹,这些轨迹由一系列的轨迹点组成,并根据当前的位置及机械臂关节的速度限制将轨迹点转换为关机的速度指令。通过控制每一个关节达到期望的速度,实现机械臂运动到达指定位置。由于第一个关节上的拉线安装在机械臂的外部,并没有通过关节中心,因此无法对关节1进行负载测试。图4是对2、3、4、5、6关节轴进行无负载及200g负载测试的结果。
基于低成本单目摄像头的道路识别系统仅依赖一款廉价的摄像头,就可实现对自行车道、人行道及公园道路的道路边缘识别检测,识别率可达94%。道路识别系统主要用来识别、跟踪非结构化的道路边界,主要适合于人行道和自行车道。
本系统主要由2个模块组成,如图5所示,一个是基于颜色信息的道路识别模块,适用于道路与非道路之间色差非常明显的场景;另一个是基于道路纹理信息的识别模块,这种方法根据道路的纹理或者形状识别道路边界。这两种方法在道路识别系统中并行运行,并按照一定的权重比例融合。
道路识别系统采用无损卡尔曼滤波(Unscented Kalman Filter,UKF)估计、跟踪道路边界,整个过程包括测量更新和状态更新两个步骤,在测量更新过程中,采用两个道路识别模块的融合结果作为观测量,同时,基于设计的道路边界运动学模型进行道路边界状态更新。
图4 机械臂关节轴空载及负载实验结果
图5 道路识别系统框架
3.2.1 基于颜色信息的道路识别模块
道路识别模块使用RGB图像,实现对自行车道、人行道等窄道路的边缘计算,主要用于非结构化道路识别。它采用低成本的网络摄像头对单向道路进行检测和跟踪,这种方法基于HSV色空间,并不需要预先设计的模型或待检测道路作为先验知识信息。
该道路识别模块主要通过以下5个步骤来实现。
1)图像预处理。
图像预处理可以实现在使用图片前对图片进行质量优化,比如,去除一些不需要的特征、降低噪声影响、消除光线影响等。通过图像降维采样,减小图像尺寸,提高处理速度,之后,采用中值滤波降低噪声,采用白平衡和RGB归一化以增强图像质量,消除光照影响。
对于从网络摄像头获取的图像,采用降维采样将图像转化为标准的640×480像素点的图片,这样有助于减少道路识别模块在图像后处理过程中的时间消耗。降维采样采用最小临近插值法实现,可调用OpenCV库中的DownSampler类计算,具体过程如下:
图像并不是每一个部分都可用于道路识别,对检测结果有影响的区域为感兴趣区域(ROI)。在道路识别模块中,对于每一帧获取的图像,将图像上方1/3区域及下方1/5区域去除,即获得ROI区域,如图6所示。
图6 提取ROI区域后的图像对比
道路识别模块中的所有图像都在室外获取,室外条件下光照条件会随时间变化,为了消除光照条件对图像的影响,在项目中采用白平衡和归一化方法对图像进行处理。白平衡法对整幅图像调整色彩强度。对于每一个像素点,其RGB值按照下式计算。
其中, Yavg为 ( Ravg+ Gavg+Bavg)/3,Ravg、Gavg、Bavg是RGB三通道的平均值。
归一化法在白平衡之后使用,它重新计算图像中每一个像素点的RGB值,其计算方法如下:
其中,R、G、B为像素点的三通道值。
2)道路特征提取。
在道路识别模块中,通过提取图像中的道路颜色特征生成道路颜色模型。在图像中提取一个小的区域(50×50像素),将其从RGB转化为HSV色空间。图7所示为HSV特征提取结果。
图7 HSV特征提取
HSV色空间比RGB更加有效,尤其在有阴影的环境精度更高。HSV色空间的中值按式(3)计算。
其中,i为色调饱和度通道,qi是中值,A、B分别为窗口的宽度和长度, si是像素值。
为了避免道路识别失败,道路识别算法采用meanshift算法迭代,将当前图像帧中的颜色直方图与上一图像帧中的进行对比。采用式(4)更新颜色模型。
3)像素分割。
像素分割通过道路颜色模型,对图像中的每一个像素是否属于道路进行评估。它输出一幅包含道路/非道路分类的二进制图像。整个过程由图像帧分割和像素评估两个步骤。
a)图像帧分割:对于每一帧图像,并不需要对每一个像素点评估是否属于道路。相反地,道路识别模块仅仅选取几个像素。比如,每M行选择一行,对于每一行,选择N个像素点。M和N数值的设定可通过配置文件实现。每一个被选择的像素点的像素值由它临近的2个像素值及它自身的中值替换。
b)像素评估:图像帧分割之后,对所有选取的像素点进行评估,以确定它们是否属于道路。这个方法通过计算像素点到道路特征的曼哈顿距离进行评估,采用式(5)计算。
式中, ( i , j)是像素点坐标, H ue( i,j)与 S at(i,j)分别是色调值和饱和度值,H u e ,S a t是中值。
4)形态滤波。
图像由于噪声、阴影、水域、道路纹理及障碍物影响,像素分割过程会误判一些像素的道路归属关系。对于这些误判,采用形态滤波方法进行修正,以获取正确的道路区域。同时,采用膨胀技术填充由于形态滤波噪声生成的像素漏洞,采用腐蚀技术用以消除图像帧中不连接的线段。
道路模型是道路识别算法的一个重要部分,通过道路模型特征,可以判断一条线段是否是道路的一部分。在项目实施过程中,首先假定左、右道路是平行的,基于这个假设,可知道路宽度将从图像帧的下部到上部逐渐减小;其次,由于道路是连续的,那么道路中心线上的点不会发生突变。在道路识别模块中,图像帧中的线段必须同时满足上述两个条件时,才被认定是道路边界。
5)道路边界提取。
曲线拟合过程将道路左、右侧的数据点拟合为曲线,最终的曲线近似于道路形状。道路的每一边拟合为二阶多项式曲线,并基于指数拟合估算道路边界。
拟合曲线表示如下:
对上式取对数,可得
式(7)中采用的拟合值为:
其中, B =b, A =exp(a)
拟合的结果是以2个指数函数表征道路边界的位置,结果如图8所示。
图8 基于颜色信息的道路识别结果
3.2.2 基于纹理信息的道路识别模块
基于纹理信息的道路识别模块不需要依据色差检测道路,而是基于道路的纹理或者形状。这种方法通过逆透视变换图像(Inverse Perspective Mapping Image,简称IPM)检测直线,IPM图像是将摄像头的拍摄角度转换为俯视后的图像,这种图的优势在于消除拍摄角度引起的变形。因此,在IPM图像中,平行线将仍旧保持平行,而不出现灭点,如图9所示。
图9 逆透视变化图
为了获取IPM图像,在转换过程中需要摄像头的内参和外参,这些参数通过棋盘格标定获得,且只需要标定一次。根据转换后的IPM图像,采用Canny边缘检测算法识别垂直线。之后,清晰、明显的边缘通过Hough变换,以识别是否是道路边界。Hough变换通过极坐标系找出图像特征,常用的是线特征。
通过Hough变换检测到的垂直线,根据它们的位置可以分为左、右两组。对于每一组垂直线,采用孤立点排除滤波估计道路边界,识别结果如图10所示。孤立点排除原则是线与线之间的距离超出标准线之间的距离。
图10 基于纹理信息的道路识别结果
3.2.3 融合模块
基于颜色信息和基于纹理信息检测到的道路边界通过权重平均算法融合。对于2个识别模块,通过计算的测量值估计信任度。当信任值越高,检测到的道路边界越可信,权重越高。每一个道路边界检测过程所采用的权重通过测量计算获得,并且在每一个识别检测周期内更新。
1)基于颜色信息的道路识别模块测量。
每一帧图像的像素列的数目是固定的,在每一列都希望找到道路边界。在图11中,道路边界以黑色圆圈表示,这些黑色圆圈在图像分割过程中通过计算获得。如果在一副图像中,黑色圆圈的数目和图像的列数相同,则表示100%检测到道路边界,因此,信任值越高;相反,如果图像中黑色圆圈的数目偏低,则道路边界很难检测到或者仅仅部分检测到,则信任值偏低,如图12所示。
图11 高信任值的道路边界检测结果
图12 低信任值的道路边界检测结果
因此,基于颜色信息的道路识别模块的信任值可以通过黑色圆圈占图像列数的比例计算得到,由式(9)表示。
2)基于纹理信息的道路识别模块测量。
原始图像经过IPM转换及Canny边缘检测后,采用Hough变换识别出相似线段的垂直线。这些识别到的垂直线将分布在整副图像,并分为左、右两个组。这些垂直线的分布将表明道路边界的识别质量和信任值。这些垂直线的分散值越大,信任值越低,相反,分散值越小,信任值越高。图13所示是对基于纹理信息的道路识别结果的信任值评估,左侧垂直线是高分散值,信任值低,而右侧垂直线是低分散值,信任值高。
图13 检测结果信任值评估
因此,基于纹理信息的道路识别模块的信任值可通过垂直线的分布进行计算,由式(10)表示。
通过公式(9)和公式(10)分别计算获得了基于颜色信息的道路识别模块和基于纹理信息的道路识别模块的信任值后,通过采用权重平均将两个识别结果融合为一个,如式(11)所示。
在公式(11)中,以C-v简化表示基于颜色信息的道路识别模块信任值,而以T-v简化表示基于纹理信息的道路识别模块信任值。
3.2.4 实验测试结果
将道路识别系统集成在机器人平台上,并针对适用场景选择一条道路进行检测测试,在线实时输出检测结果,图像处理频率为20fps。图14所示为部分识别结果,两侧红线为检测到的道路边界。
图14 道路识别结果
通过对60km道路的实验测试,实验涵盖多种类型场景、多种类型道路和光照条件,用于测试的数据集包含2.4万多张图片和4万多个GPS点。
根据道路条件,将其分为最佳道路、正常道路和糟糕道路,这些考虑的分类条件包括环境条件(光照、天气等)及结构化条件(道路材质、边界状态)等。其中,最佳道路是指道路与边界之间有清晰的颜色对比,没有阴影、遮挡,道路的边界平行,光照条件较好;正常道路是指道路、光照和天气条件基本满足环境需求,同时单行道满足基本的光照条件要求;糟糕道路是指上述定义的环境和光照条件不满足,尤其像强降雨、雪等天气。图15所示为一些道路示例,包含城市和乡村的各种类型的道路,比如,沥青、碎石、石砖和混凝土道路等。
图15 道路示例
表3为道路识别系统的识别率,这个表格基于2.4万多张图片的识别结果进行统计分析。这些图像分为13类道路,识别率为每一类道路中识别正确的图像占图像总数的百分比,不管是基于颜色信息的道路识别或者基于纹理信息的道路识别,只要识别成功就认为是道路识别成功。
表3 道路识别率统计结果
从表3可以看出,识别率的平均值约为96.6%,最低值是79.2%。统计数据表明,对于最佳道路,识别率可达99.78%,正常道路识别率为96.6%,而糟糕道路识别率为79.27%。