在用户下发目标点到机器人地盘后,slamware首先会根据地图和目标点进行路径规划,规划好后底盘才会根据规划好的路径产生相应的运动,有的用户需要获得路径规划是否成功的状态,这里对进行介绍
测试代码:TestCode.java
...
在Android SDK中,与底盘运动相关的moveTo、moveBy、rotate、rotateTo、goHome、startSweep、sweepSpot、recoverLocalization等方法都会返回一个IMoveAction类(或其子类)的对象,该对象中记录了此次运动相关的信息,这里通过action.getRemainingPath().getPoints().isEmpty()判断剩下的路径中点目标点是否为空来间接判断路径规划是否成功。
...
测试现象
在底盘周围放置障碍物,使其无法规划出一条能够到达目标点的路径,测试现象如下,
- 加载地图
为了覆盖机器人里面当前的地图,我们需要进行以下操作。
加载完毕后,机器人会重置到坐标轴原点,机器人的实际角度与地图坐标系一般都会有一定偏差,如下图所示。这也是为什么要进行重定位的原因。 - 重定位
- 自动重定位:在SLAM选项里面,“重定位”操作以后,机器人的坐标系将会匹配到地图坐标系。之后就可以在加载的地图上进行导航运动了。
- 手动重定位:自动重定位由于环境的限制,有一定概率匹配不成功,此时可以使用手动方式将雷达环境跟地图匹配,此操作在地图编辑器里面进行,将机器人拖拽到人工判断的位置上,并调整机器人位姿角度,之后再“上传到固件”即可将匹配好的地图同步到系统里面去。
- 自动重定位:在SLAM选项里面,“重定位”操作以后,机器人的坐标系将会匹配到地图坐标系。之后就可以在加载的地图上进行导航运动了。
...
使用接口加载地图
1.使用接口加载stcm/bmp格式地图的示例代码可以参考:KBSW180120 Win32-CompositeMap格式地图的读写
注意:loadfile()接口以及setcompositmap()接口之间需要一定时间间隔,否则系统可能会抛异常。
2.重定位可以参考:KBSW180130 Win32-重定位
。。。。。