一种基于在线学习机制的轮式机器人自适应导航方法_2

文档序号:9396350阅读:来源:国知局
制的轮式机器人自适应导航方法进行详细的说明。
[0031]本发明使用SICK激光测距仪获取当前环境的距离信息来对周围环境进行感知,使轮式机器人按照规划好的路径进行在线学习,学习的信息为当前SICK激光数据(即激光距离数据)与其对应的速度数据,连同这种映射关系让两组数据一并存入IHDR树中。学习完成时,IHDR同时建立完毕。轮式机器人进行自适应导航时,是通过反复采集当前SICK激光数据,首先将该数据放入避障算法中进行检验,若得出需要进行避障操作,则开启避障运动模式直至得出无需进行避障操作的结果。若直接得出无需进行避障操作,则直接将当前SICK激光数据放入到IHDR树中进行检索,找出之前IHDR树的学习样本中,与当前SICK激光数据最接近的那一组,然后提取出这一组数据中对应的速度数据作为轮式机器人的运动控制量,从而实现轮式机器人的自适应导航。
[0032]上述技术方案整个过程的流程图如附图1所示,具体实现步骤如下:
[0033]步骤1:设置轮式机器人串口及参数,初始化轮式机器人的控制模块;设置SICK激光测距仪的串口通信波特率,设置激光扫描范围及扫描分辨率,设置距离数据的精度,发送开始接受激光数据的指令。详细步骤如下:
[0034]步骤1-1:设置轮式机器人运动控制卡的相关参数以及与其通信的上位机的波特率;
[0035]步骤1-2:设置上位机串口波特率为9600(本发明采用的激光测距仪选用自德国SICK公司,型号为LMS200。设置的SICK激光测距仪的扫描范围为O?180°,分辨率为1°,距离精度为1mm,最大扫描距离为8m。其中SICK激光测距仪LMS200的开机默认波特率为9600),再向SICK发送设置波特率的串口指令(串口指令码见LMS_Quick_Manual_Vl_l手册),将波特率设置为38400。继续发送串口指令,分别将SICK激光器返回的距离数据的单位设置为mm,扫描模式设置为扫描范围0°?180°、分辨率1°,设置成功后的激光扫描示意图如附图2所示,SICK激光测距仪的正右方为0°方向,正左方为180°方向,从0°至180°分别收到的是对应方向上激光测距仪与障碍物之间的距离数据;
[0036]步骤1-3:向SICK激光测距仪发送开始接收激光数据的串口指令;
[0037]步骤2:根据周围环境特征与目标点位置,人为规划出供机器人行驶的最优路径后,使用计算机键盘上的方向键在上位机软件中控制机器人沿着规划好的路径进行运动和在线学习;步骤2中使用的是基于MFC编写的上位机软件,其中做了重载PreTransIateMessage函数的处理,任意时刻按下方向键都会相应的对存储速度数据的变量进行重新赋值,再将该变量传递至控制机器人运动的程序函数中,从而控制机器人运动。
[0038]步骤3:在步骤2进行的过程中,采集当前SICK激光测距仪返回的周围环境与机器人之间的距离数据(以下简称SICK激光数据),再对应识别当前键盘方向键的键值,得出当前机器人的速度数据。详细步骤如下:
[0039]步骤3-1:首先一直读取连接SICK激光测距仪的串口,根据SICK激光数据的帧格式规范,识别出帧头数据后进行读取,再从其中提取出距离数据进行转换后,得到当前的181个距离数据;
[0040]步骤3-2:判断当前的键盘键值,可推出当前控制机器人运动的速度数据,即一个2维的浮点型数据(X,y);
[0041 ] 步骤4:将步骤3得到的SICK激光数据和对应的速度数据根据IHDR算法存入到IHDR树中。详细步骤如下:
[0042]步骤4-1:先进行建IHDR空树的操作,即设置IHDR树的主要参数:
[0043]步骤4-1-1:设置X空间行向量的维数为181维(0°?180°共181个距离数据);Y空间的行向量的维数为2维,这是由于控制机器人运动的程序函数如下:
[0044]Drive (x, y)
[0045]其中浮点数X表示直线运动速度,单位为m/s,正数为前进,负数为后退。浮点数y表示转向速度,单位为° /s,正数为右转,负数为左转。故Y空间的行向量为(x,y);
[0046]步骤4-1-2:设置IHDR树的每一个节点最多能容纳的聚类个数q,本发明中q =10 ;
[0047]步骤4-1-3:设置X空间中聚类向量间的聚类阈值δχ,本发明δχ= 600 ;设置Y空间中聚类向量间的聚类阈值Sy,本发明Sy= 5;
[0048]步骤4-2:将当前收到的激光数据X1 (181维)和距离数据(2维)存入IHDR树中;
[0049]步骤5:以200ms —次的频率重复步骤3和步骤4(建IHDR空树操作只进行一次),直至机器人在人的控制下到达目标点,此时控制机器人做出停止运动的操作(即调用Drive (0,O)),将停止运动的速度数据(即(0,0))与对应的SICK激光数据(181维)一同存入IHDR树中。最后IHDR树建立完毕,将其存入到硬盘中,路径学习完毕;
[0050]步骤6:开启自适应导航,进行初始化设置、MFC中关闭和打开相关定时器和线程等程序操作,使轮式机器人开始自主运动;
[0051]步骤7:采集SICK激光数据,首先将其放入到自主逃离障碍区避障算法(以下简称避障算法)中进行检验,若结果得出无需进行避障操作则进入步骤8,反之则进行避障操作,同时开启增量学习模式,将当前SICK距离数据与对应的由避障算法得出的速度数据根据IHDR算法更新至之前保存的IHDR树中。详细步骤如下:
[0052]步骤7-1:预先设定阈值艮为600mm。将当前在串口中获取的SICK激光数据(181维)的0°?179°每3°分成60个小区间,依次编号Spi = 0,1,…,59。例如S。中包含0°、1°、2°方向的距离数据,S1中包含3°、4°、5°方向的距离数据,以此类推;
[0053]步骤7-2:把每个小区间的距离数据与Rt进行比较,若小区间内的3个距离数据都大于Rt,则保留作为准可行小区间,否则舍去。例如:
[0054]S0= {2103, 1023, 879},SP O ° 方向的距离为 2103mm、I ° 方向的距离为1023mm,2°方向的距离为879mm,皆大于阈值,则将S。保留作为准可行小区间;S 1 ={212,1233,2578},即3°方向的距离为212mm、4°方向的距离为1233mm、5°方向的距离为2578mm,其中3°方向的距离小于阈值,故将S1舍去。以此类推;
[0055]步骤7-3:合并所有相邻的准可行小区间,获得N个准可行大区间(若某小区间无相邻的准可行小区间则自成为一个准可行大区间);
[0056]步骤7-4:对N个准可行大区间进行弦长条件的判断,将满足弦长条件的准可行大区间标记为待选可行大区间。弦长条件如下:
[0057]以待别判的准可行大区间的两个边界为扇形的两边,Rt为扇形的半径,得到的这个扇形的弦长L必须满足:
[0058]L 彡 λ d
[0059]其中λ为放大系数,本发明λ =1.4。d为轮式机器人直径,本发明d = 500mm。
[0060]步骤7-5:根据最远距离优先机制,在步骤7-4得出的D个待选可行大区间中,计算每个区间中所有激光距离数据的最大值%。再令
[0061]Mk=Maxd1Ii = 1,2,...,O]
[0062]则选择第K个待选可行大区间为可行区间,此扇形区间的角平分线方向即为可行方向;
[0063]步骤7-6:进行控制误差判断:判断得到的可行方向与机器人90° (正前方)方向的夹角是否大于15°。若大于15°,则控制机器人进行转动,转动角度为
[0064]Θ =可行方向-90°
[0065]Θ为负数则表示右转,Θ为正数则表示左转。进行转动运动的同时,记录机器人当前的速度数据(X,y)和采集当前SICK激光数据,更新至IHDR树中;若小于或等于15°,则不实施转动操作,直接进入步骤8 ;
[0066]步骤8:接着将采集到的SICK激光数据根据IHDR算法放入IHDR树中进行回归分析,从而得到回归结果,即当前SICK激光数据在保存的IHDR树中对应的速度数据。再将该回归结果放入
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1