最强干货—机器人自主定位、建图与导航

346次 0次 发表于:2018年04月09日 17:16:27

SLAMTEC

  • 主题:15
  • 回复:0
  • 积分:141

最强干货—机器人自主定位、建图与导航

说到机器人自主定位导航解决方案及技术,大家脑海里肯定会浮现“定位”、“建图”、“避障”、“路径规划”等字眼。


定位

 

以思岚提供的自主定位导航解决方案为例,主要是通过雷达里程计的数据来进行定位。虽然激光雷达在一定范围之内会纠正里程计的误差,但在某些特殊环境下(如雷达扫描的有效点较少时),里程计的准备度还是会影响定位的效果。

 

因此,对于需要自主定位导航的服务机器人而言,电机里程计的精准度,往往是决定整个机器人定位精度的关键因素之一。

SDP Mini.png

思岚的SDP Mini 里程计

里程计类型的选择:

常用的机器人底盘电机编码器按实现原理来分类,包括光电编码器及霍尔编码器;按照其编码方式分类,主要包括增量型和绝对型。
对于基于slamware的机器人底盘来说,里程计的分辨率需要在1mm以下,且总误差最多不能超过5%,如果超过此数值,机器人将无法正常实现定位导航的功能。因此,无论选择哪种编码器,必须要达到其精度的要求。可以参考以下判断公式:

(2π/每转编码器脉冲数)×轮子半径≤0.001米  注:轮子半径单位为米

 

系统电机应答流程:

4.png

(以两轮差动电机为例)

 

SLAMWARE Core 每间隔delta时间,会向底盘发送左右轮的速度,向前为正,向后为负,即SET_BASE_MOTOR(0x40)。底盘会回复此时的左右轮里程计的累计值,即GET_BASE_MOTOR_DATA(0x31)。

 

请注意,无论轮子向前运动或向后运动,里程计的度数均递增,因为SLAMWARE Core在下发速度时,已经区分了向前还是向后。

 

SLAMWARE Core发送SET_BASE_MOTOR的请求报文为, 速度的单位为mm/s:

里程计代码示例详见:

https://wiki.slamtec.com/pages/viewpage.action?pageId=1016369

 

那么,对于里程计而言,我们该如何判断其定位数据是否准确呢?下面,就要借助可扩展的机器人管理与开发应用软件:Robo Studio

3.jpg

 

首先,先将准备工作做好:

 

在调试之前,请找到一处合适测试的区域,该区域需有清晰的边界,比如,矩形的空房间。安装好Robo Studio,并连接上机器人(如SDP Mini)。Robo Studio下载链接及在线文档可至思岚官网下载安装。

 

利用Robo Studio调试里程计准确度测试方法:

 

1.将机器人控制到离一面直墙若干米的位置,面朝直墙,如下图所示。

1.png

 

2.将之前建好的地图清除掉,点击清空地图,此时,机器人当前的区域会重建。当前区域重建好之后,可以点击暂停建图,停止地图更新。 最后,可以将暂停定位开启,开启后,将关闭激光定位,仅用里程计的数据来定位。

2.png

 

3.控制机器人向前朝墙运动,观察激光点是否和墙重合,如果和墙重合,证明里程计较为准确;

 

如果激光点超出墙,证明底盘上报的里程计数据要大于实际运动的距离,里程计偏大。

如果激光点在墙之内,证明底盘上报的里程计数据要小于实际运动的距离,里程计偏小。

 

如果激光点和墙重合,可以继续控制机器人倒退,左右转动,看看激光点是否和周围环境匹配;


接着,我们再来聊聊与“建图”相关的话题

建图


建图1.GIF

 

地图作为机器人自主定位、避障、规划路线的依据之一,其重要程度不言而喻。

 

雷达作为建图的重要工具,在整个自主定位导航过程中充当着“眼睛”的角色。下面,小编就用思岚的RPLIDAR 建图作案例说明。

渲染图-1.png

RPLIDAR A3

 

1)雷达的安装方法及相关注意事项:

1. 雷达水平安装角度:0度 ~ +2度 (倾角朝上);

2. 雷达扫描开口角度:建议270度及以上,最好在机器人正前方和正后方均有开口, 至少需要大于220度;

3. 雷达盲区:15cm, 建议雷达在安装时,可以略往底盘结构中心靠近,以减少盲区;