|
说到机器人自主定位导航解决方案及技术,大家脑海里肯定会浮现“定位”、“建图”、“避障”、“路径规划”等字眼。
以思岚提供的自主定位导航解决方案为例,主要是通过雷达和里程计的数据来进行定位。
激光雷达是一种采用非接触激光测距技术的扫描式传感器,可实时获取所在环境的高精度轮廓信息,是机器人定位导航、空间环境测绘、安保安防等领域必不可少的核心传感器。思岚的雷达目前能在25m测距半径内完成每秒16000次的采样扫描,适用于大部分应用场景。
虽然激光雷达在一定范围之内会纠正里程计的误差,但在某些特殊环境下(如雷达扫描的有效点较少时),里程计的准备度还是会影响定位的效果。
因此,对于需要自主定位导航的服务机器人而言,电机里程计的精准度,往往是决定整个机器人定位精度的关键因素之一。
思岚的SDP Mini 里程计
里程计类型的选择:
常用的机器人底盘电机编码器按实现原理来分类,包括光电编码器及霍尔编码器;按照其编码方式分类,主要包括增量型和绝对型。
对于基于slamware的机器人底盘来说,里程计的分辨率需要在1mm以下,且总误差最多不能超过5%,如果超过此数值,机器人将无法正常实现定位导航的功能。因此,无论选择哪种编码器,必须要达到其精度的要求。可以参考以下判断公式:
(2π/每转编码器脉冲数)×轮子半径≤0.001米 注:轮子半径单位为米
系统电机应答流程:
(以两轮差动电机为例)
SLAMWARE Core 每间隔delta时间,会向底盘发送左右轮的速度,向前为正,向后为负,即SET_BASE_MOTOR(0x40)。底盘会回复此时的左右轮里程计的累计值,即GET_BASE_MOTOR_DATA(0x31)。
请注意,无论轮子向前运动或向后运动,里程计的度数均递增,因为SLAMWARE Core在下发速度时,已经区分了向前还是向后。
SLAMWARE Core发送SET_BASE_MOTOR的请求报文为, 速度的单位为mm/s:
里程计代码示例详见:
那么,对于里程计而言,我们该如何判断其定位数据是否准确呢?下面,就要借助可扩展的机器人管理与开发应用软件:Robo Studio
首先,先将准备工作做好:
在调试之前,请找到一处合适测试的区域,该区域需有清晰的边界,比如,矩形的空房间。安装好Robo Studio,并连接上机器人(如SDP Mini)。Robo Studio下载链接及在线文档可至思岚官网下载安装。
利用Robo Studio调试里程计准确度测试方法:
1.将机器人控制到离一面直墙若干米的位置,面朝直墙,如下图所示。
2.将之前建好的地图清除掉,点击清空地图,此时,机器人当前的区域会重建。当前区域重建好之后,可以点击暂停建图,停止地图更新。 最后,可以将暂停定位开启,开启后,将关闭激光定位,仅用里程计的数据来定位。
3.控制机器人向前朝墙运动,观察激光点是否和墙重合,如果和墙重合,证明里程计较为准确;
如果激光点超出墙,证明底盘上报的里程计数据要大于实际运动的距离,里程计偏大。
如果激光点在墙之内,证明底盘上报的里程计数据要小于实际运动的距离,里程计偏小。
如果激光点和墙重合,可以继续控制机器人倒退,左右转动,看看激光点是否和周围环境匹配;
接着,我们再来聊聊与“建图”相关的话题
建图
地图作为机器人自主定位、避障、规划路线的依据之一,其重要程度不言而喻。
雷达作为建图的重要工具,在整个自主定位导航过程中充当着“眼睛”的角色。下面,小编就用思岚的RPLIDAR 建图作案例说明。
RPLIDAR A3
1)雷达的安装方法及相关注意事项:
1. 雷达水平安装角度:0度 ~ +2度 (倾角朝上);
2. 雷达扫描开口角度:建议270度及以上,最好在机器人正前方和正后方均有开口, 至少需要大于220度;
3. 雷达盲区:15cm, 建议雷达在安装时,可以略往底盘结构中心靠近,以减少盲区;
2)雷达安装是否水平对slamware解决方案的建图及定位有重要影响:
1. 影响测距精度,进而影响建图精度和定位精度;
2. 如若雷达扫描平面水平向下倾斜,激光点会扫描到地面,这种情况下建图则会导致障碍物错乱,定位则会导致定位漂移;
3)雷达安装完毕后,紧接着就是建图之前的准备工作,主要如下:
1. 尽量在待扫区域里没人或者人较少的时间点进行扫图;
2. 尽量清除待扫区域中经常移动的物体(如经常移动的人群、搬动的桌子、盆饰等等);
3.对于场景中的反光,透光,吸光等物体(如:镜子、玻璃等),在条件允许的情况下,尽量在机器人的雷达扫描平面处贴上其他不影响雷达正常扫描的材料;
4)建图时的技巧:
1. 开机建图时,机器人最好面朝一堵直墙,且让雷达尽可能多的扫到更多的有效点;
2.在商场或者一些大环境应用场景下建图时,最好让机器人先去完成建图闭环,再去详细扫描环境里的各个小细节;
3.擦除未探明的区域
在机器人的行走区域内,可能会出现一些扫图时未完全探明的区域(主要跟雷达测距半径有关),在Robo Studio操作软件中,此处区域显示为灰色(如下图红圈处所示),如果在此范围内,确实不存在任何障碍物,可用白色橡皮擦将此灰色区域擦除,成为已探明区域;
下图为RoboStudio的工具栏,红圈处为白色橡皮擦:
4.除了可用白色橡皮擦擦除构建区域中的未探明区域之外,还可擦除地图区域中不断移动的物体(如:移动的人群,后期会随时搬移的障碍物等);
5.尽量保证地图的完整性,在机器可能的行走路径上,所有周围360度的区域,均需要用雷达探明,目的是增加地图的完整性,使得激光匹配的参照点更多;
6.如果地图已经建好,尽量不要在已建好的地图区域反复来回行走,请尽快保存地图。点击Robo Studio上面的sync map按钮,同步地图后保存地图;
如何判断扫好的地图符合定位导航的要求:
1.地图中障碍物边缘是否清晰;
2.地图中是否存和实际环境不一致的区域(如:有无闭环);
3.地图中是否存在机器人行动区域内的灰色区域(如:未扫描到的区域);
4.地图中是否存在后续定位时将不存在的障碍物(如:移动障碍物);
5.地图中是否能保证机器人在活动区域内的任何位置,360度的视野范围内,均已经探明;
导航
说到机器人自主定位导航解决方案及技术,大家脑海里肯定会浮现“定位”、“建图”、“避障”、“路径规划”等字眼。 以思岚提供的自主定位导航解决方案为例,主要是通过雷达和里程计的数据来进行定位。 激光雷达是一种采用非接触激光测距技术的扫描式传感器,可实时获取所在环境的高精度轮廓信息,是机器人定位导航、空间环境测绘、安保安防等领域必不可少的核心传感器。思岚的雷达目前能在25m测距半径内完成每秒16000次的采样扫描,适用于大部分应用场景。 虽然激光雷达在一定范围之内会纠正里程计的误差,但在某些特殊环境下(如雷达扫描的有效点较少时),里程计的准备度还是会影响定位的效果。 因此,对于需要自主定位导航的服务机器人而言,电机里程计的精准度,往往是决定整个机器人定位精度的关键因素之一。 思岚的SDP Mini 里程计 里程计类型的选择: 常用的机器人底盘电机编码器按实现原理来分类,包括光电编码器及霍尔编码器;按照其编码方式分类,主要包括增量型和绝对型。 注:轮子半径单位为米 系统电机应答流程: (以两轮差动电机为例) SLAMWARE Core 每间隔delta时间,会向底盘发送左右轮的速度,向前为正,向后为负,即SET_BASE_MOTOR(0x40)。底盘会回复此时的左右轮里程计的累计值,即GET_BASE_MOTOR_DATA(0x31)。 请注意,无论轮子向前运动或向后运动,里程计的度数均递增,因为SLAMWARE Core在下发速度时,已经区分了向前还是向后。 SLAMWARE Core发送SET_BASE_MOTOR的请求报文为, 速度的单位为mm/s: 里程计代码示例详见: 那么,对于里程计而言,我们该如何判断其定位数据是否准确呢?下面,就要借助可扩展的机器人管理与开发应用软件:Robo Studio 首先,先将准备工作做好: 在调试之前,请找到一处合适测试的区域,该区域需有清晰的边界,比如,矩形的空房间。安装好Robo Studio,并连接上机器人(如SDP Mini)。Robo Studio下载链接及在线文档可至思岚官网下载安装。 利用Robo Studio调试里程计准确度测试方法: 1.将机器人控制到离一面直墙若干米的位置,面朝直墙,如下图所示。 2.将之前建好的地图清除掉,点击清空地图,此时,机器人当前的区域会重建。当前区域重建好之后,可以点击暂停建图,停止地图更新。 最后,可以将暂停定位开启,开启后,将关闭激光定位,仅用里程计的数据来定位。 3.控制机器人向前朝墙运动,观察激光点是否和墙重合,如果和墙重合,证明里程计较为准确; 如果激光点超出墙,证明底盘上报的里程计数据要大于实际运动的距离,里程计偏大。 如果激光点在墙之内,证明底盘上报的里程计数据要小于实际运动的距离,里程计偏小。 如果激光点和墙重合,可以继续控制机器人倒退,左右转动,看看激光点是否和周围环境匹配; 接着,我们再来聊聊与“建图”相关的话题 建图地图作为机器人自主定位、避障、规划路线的依据之一,其重要程度不言而喻。 雷达作为建图的重要工具,在整个自主定位导航过程中充当着“眼睛”的角色。下面,小编就用思岚的RPLIDAR 建图作案例说明。 RPLIDAR A3 1)雷达的安装方法及相关注意事项: 1. 雷达水平安装角度:0度 ~ +2度 (倾角朝上); 2. 雷达扫描开口角度:建议270度及以上,最好在机器人正前方和正后方均有开口, 至少需要大于220度; 3. 雷达盲区:15cm, 建议雷达在安装时,可以略往底盘结构中心靠近,以减少盲区; 2)雷达安装是否水平对slamware解决方案的建图及定位有重要影响: 1. 影响测距精度,进而影响建图精度和定位精度; 2. 如若雷达扫描平面水平向下倾斜,激光点会扫描到地面,这种情况下建图则会导致障碍物错乱,定位则会导致定位漂移; 3)雷达安装完毕后,紧接着就是建图之前的准备工作,主要如下: 1. 尽量在待扫区域里没人或者人较少的时间点进行扫图; 2. 尽量清除待扫区域中经常移动的物体(如经常移动的人群、搬动的桌子、盆饰等等); 3.对于场景中的反光,透光,吸光等物体(如:镜子、玻璃等),在条件允许的情况下,尽量在机器人的雷达扫描平面处贴上其他不影响雷达正常扫描的材料; 4)建图时的技巧: 1. 开机建图时,机器人最好面朝一堵直墙,且让雷达尽可能多的扫到更多的有效点; 2.在商场或者一些大环境应用场景下建图时,最好让机器人先去完成建图闭环,再去详细扫描环境里的各个小细节; 3.擦除未探明的区域 在机器人的行走区域内,可能会出现一些扫图时未完全探明的区域(主要跟雷达测距半径有关),在Robo Studio操作软件中,此处区域显示为灰色(如下图红圈处所示),如果在此范围内,确实不存在任何障碍物,可用白色橡皮擦将此灰色区域擦除,成为已探明区域; 下图为RoboStudio的工具栏,红圈处为白色橡皮擦: 4.除了可用白色橡皮擦擦除构建区域中的未探明区域之外,还可擦除地图区域中不断移动的物体(如:移动的人群,后期会随时搬移的障碍物等); 5.尽量保证地图的完整性,在机器可能的行走路径上,所有周围360度的区域,均需要用雷达探明,目的是增加地图的完整性,使得激光匹配的参照点更多; 6.如果地图已经建好,尽量不要在已建好的地图区域反复来回行走,请尽快保存地图。点击Robo Studio上面的sync map按钮,同步地图后保存地图; 如何判断扫好的地图符合定位导航的要求: 1.地图中障碍物边缘是否清晰; 2.地图中是否存和实际环境不一致的区域(如:有无闭环); 3.地图中是否存在机器人行动区域内的灰色区域(如:未扫描到的区域); 4.地图中是否存在后续定位时将不存在的障碍物(如:移动障碍物); 5.地图中是否能保证机器人在活动区域内的任何位置,360度的视野范围内,均已经探明; 定位导航 说到定位导航,就离不开导航模块SLAMWARE的帮助,SLAMWARE,硬币大小、薄薄的芯片,别看他麻雀虽小,功能可是样样齐全。 |
呐,就是下图这货~
SLAMWARE Core
这块小芯片可谓是浓缩了思岚的核心技术,内含SLAM定位导航算法,基于RPLIDAR提供实时定位和自主导航功能,同时支持串口和以太网交互导航信息,可进行灵活多样的功能拓展。
SLAMWARE自主定位导航方案分为商用和家用版本,适用于多种应用场景,满足多种需求,可靠性、可扩展性强,提供稳定可靠的现场表现。
自主定位与建图
SLAMWARE模块在自主定位导航技术中最为重要的功能为定位导航及建图,采用激光SLAM技术,无需对环境进行修改,即可在未知场景中完成实时定位。
SharpEage精细化构图技术
利用SharpEdge构图技术构建高精度、厘米级别地图,无需二次优化修饰,直接满足用户心理预期,提升定位导航高效率;
扩展开发,灵活适配
SLAMWARE提供丰富的通讯接口,可结合SDK进行灵活、多样的功能扩展;
多传感器融合导航
受制于激光的特性,SLAMWARE自主定位导航方案在遇到玻璃、纯黑物体或其他平面物体时,是无法进行识别的。
因此,SLAMWARE支持超声波传感器,防跌落传感器、碰撞传感器和深度摄像头的数据,利用多种传感器信息融合,实现更加智能、实用的自主运动。同时,SLAMWARE还可以实现基于激光特征识别的回充对接技术。
多传感器融合导航
SLAMWARE模块在定位导航及建图过程中会涉及到大量对地图和坐标的操作。因此,小岚需要结合SLAMWARE模块中所建的地图,以及SDK中的一些地图相关接口进行说明。
SLAMWARE SDK中坐标系统以及地图数据说明:
以Robo Studio开发软件为例,红色箭头所指为地图坐标X轴正向, 绿色箭头所指为Y轴正向,蓝色点为坐标零点,红色三角箭头为机器人所在位置。默认情况下,机器人开机的位置,即为地图零点位置。机器人朝向为X轴正向,为0度,角度逆时针增加。