You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

应用层

1.透明物体,如玻璃;

2.黑色吸光物体;

3.镜子等无法正常收到返回光的物体。

可以用其他的传感器来探测,比如超声波。

1.无法到达充电桩附近(例如路线被阻挡)

2.无法完成对桩  

3.运动被取消(有其它的运动指令或者主动取消)

需要重新connect, 建议configureNetwork之后,延时5秒,重复尝试connect直至连接上为止。

如上图所示,激光点和墙不重合,主要原因可能是重新导入地图时,机器人的设置位置和实际位置不匹配所导致。

机器人主要依靠激光雷达和里程计来进行定位,里程计是必须的,且其精度的分辨率要小于1mm, 总误差要小于5%。

不同版本的Slamware Core的地图面积有所不同:标准的Slamware Core Lite的建图面积为20m*20m,Slamware Core Pro的建图面积为100m*100m,D1M1和D1M2的建图面积为350m*350m。

不可以,比如30m*3000m是不可行的。

不需要,Slamware模块里面包含一个九轴的惯导模块。

没有,不支持。

5cm

请排查(1)雷达是否正常转动(2)底盘与slamware模块的通信是否正常。

不可以,地图掉电以后就没有了,可以用上层提供的SDK接口来将地图信息保存,在下次开启slamware系统时,再通过调用SDK接口将地图上传至slamware模块。

机器人每次上电的位置默认就是原点位置,此时如需上传地图,应该保证该地图的原点位置能匹配上机器的当前的位置。建议将充电桩放于此处,每次均在充电桩上开机并上传地图,这样能保证机器人的位姿和地图匹配。 如果想使用同一张地图,但是不在原点位置开机,可以在关机的时候,保存机器人的pose, 待下次开机的时候,上传地图,并同时设置机器人的pose. 可以理解成,无论是机器人的位置或者是朝向,都必须要和地图能对应上,否则将无法正常完成导航。

可以

没有,需要用户根据实际环境,使用robot_studio等工具来控制机器人完成地图扫描。或者根据需要,利用SDK已有的运动接口来实现自定义功能。

请排查一下几个问题(1)保存的地图上面是否存在噪点(1)传感器有没有误触发 (2)底盘robot_size设置是否合理 (3)底盘side_margin设置是否合理

需要客户自行实现Apollo与电梯控制系统的通讯,然后再通过调用我们SDK中的接口如moveto()等对Apollo下发运动要求。

另外,设计实现该功能时请注意以下几点:

1.Apollo本身是有防跌落传感器的,对于一些环境,比如电梯和楼层之间的间隙,可能会触发防跌落传感器。您可以选择人为地拿胶带遮挡防跌落传感器;或者使用RoboStudio,在具体的连接信息那里,右击选择详细信息>传感器>找到防跌落传感器,右击选择“本次禁用”或“永久禁用”。

2.关于建图,建议是在电梯里面开机,并开始扫图建图,并且每层楼都应该有一张对应的地图。

请使用VS2010编译,其他版本可能会出错。仔细阅读代码,编译调试前需要给您的机器如SDP Mini上电,连接上机器,并设置正确的命令行参数。如果调试时出现报错提示缺少dlllibeay32.dll,请将下面两个dll文件放到上图所示路径中。libeay32.dll ssleay32.dll

由于不确定客户拿到地图数据后在屏幕上的显示方式,显示位置和变换情况,所以我们不提供屏幕坐标与地图坐标转换的接口。如需实现此功能,请根据您的实际显示情况进行计算。下述链接是一个Android UICommander应用,实现地图的显示、操作等其他常用功能,可供客户参考。

https://github.com/SlamtecSupport/UICommander.Android

请参考上图,您可以直接给定义好的高、中、低三个值,也可以像下面这样实现自定义速度(最大线速度的范围应该0.05到0.7之间):

bool bRet1 =sdp.setSystemParameter(SYSPARAM_ROBOT_SPEED, "0.3");

和更改最大线速度一样,也是用到setSystemParameter(),将调整的参数改为SYSPARAM_ROBOT_ANGULAR_SPEED就可以了。(确保您使用的是最新的SDK,如不是,请前往官网下载。)

调用getLaserScan()这个接口拿的是上一个完整一圈的原始的雷达点数据(无效点并没有过滤),雷达就算不转,只要之前有数据也是可以读出的。其中angle是弧度单位,距离100000说明是无效点,以机器人底盘参考坐标系为准。

机器人的朝向是x轴,但不一定是x轴的正方向。x轴和y轴的设定与机器人开机时扫到的最长边有关,可能与其成垂直或平行,所以开机时,仍有yaw值是正常的。

地图橡皮擦功能不是一个单独的接口,而是通过UI界面对地图像素点进行处理,通过刷新地图数据来实现的擦除功能。可以使用现有的接口获取到地图数据map data,然后再对数据修改,比如我们RoboStudio中,获取的地图是通过像素点及其灰度来表示的,黑色表示障碍物,白色表示已探明无障碍物区域,灰色代表未探明区域。

将短接帽短接J22GND和RX2 pin脚,然后重新上电机器除正常启动时发声外,系统启动后蜂鸣器还会长鸣一声提示WiFi reset成功)即可将机器登陆Web Portal的密码恢复为admin111,此时也会reset至AP模式

bool setMapUpdate(bool) 设定是否启用地图更新功能。

bool setMapLocalization(bool) 设置机器人是否启用定位功能。

虚拟轨道导航:先在地图上画出虚拟轨道,给定目标点后,机器人会搜索距离起始点最近的虚拟轨道关键点,到达目标点最近的虚拟轨道路径。但是过程中,如果遇到障碍物阻碍机器人上轨,机器人就会停下来(10s左右如果障碍物移除,会继续前进)。

轨道优先导航:有虚拟轨道,就先上虚拟轨道,没有的话,就另外规划路径。


底盘部分

请检查机器人底盘代码中关于离地检测部分的代码, 如果赋值成1了,表示离地了,不会更新地图数据。

请观察是否触发了碰撞传感器和防跌落传感器,需要特别注意,底盘代码中,碰撞传感器触发是0,未触发是1

请观察robot studio右下角的状态,如果此时显示charging/on Dock, 证明底盘MCU此时上报的状态是在充电桩上充电的状态。如果此时让机器人走到某个目标点,机器人会误以为在充电桩上充电,从而让机器下桩。如果充电方式设置的是正向回充,那么此时机器人会以后退的方式来下桩,表象就是机器人会一直倒退。如果充电方式设置的是反向回充,那么此时机器人会以前进的方法来下桩,表象就是机器人会一直前进。如出现此现象,请排查底盘充电部分的故障。

底盘返回机器人GET_BASE_STATUS的命令为已经在充电桩上,此时,获取goHome()这个actionstatus应该为finished状态。

可以,在Slamware底盘配置工具里面Docking选项卡下面勾选Backward Docking

以两轮电机的两轮中心为圆心(三轮全向轮的中心为三轮的中心),距离底盘结构上会造成雷达干扰的最远距离为半径,半径x2 即为robot diameter。以此半径画圆,底盘结构多出来的部分的最外沿, 距离此圆的最短距离,可以包含在side margin(边距)里面。设置side margin的时候,要大于等于此距离。

几十毫秒

1分钟

对于一些关键指令比如0x41,只要有一次模块没有在1s内收到回复,模块就会重连。对于一些模块重连现象(雷达停转后重转,伴随RoboStudioSlamware has disconnected and reconnected again报错,定位发生变化等等),很有可能就是客户自己的MCU程序没有及时响应模块的指令导致的,正常情况下响应时间应该在ms级别。

是的,如果使用过IAR 7.6之前的版本,然后换到IAR 7.6及以上的版本,需要重新解压参考代码压缩包,再使用IAR7.6及以上的版本,否则会造配置丢失。

不行,碰撞传感器触发的话,会造成机器急停且倒退,超声波触发是避让,行为不一样。

不行,只能水平安装。

至少需要超过220度

slamware模块未收到运动控制的指令超过一分钟,雷达将休眠。调用wakeup()接口可以将其唤醒。或者通过Slamware配置工具,将雷达>常用设置>在多长时间后休眠(秒),设置为0,雷达将不会进入休眠。

有可能是超声波误触发所导致,建议先将超声波的个数设置成零,以排除超声波的干扰。

是累计的里程,无论轮子前进或者后退,里程计的数值均递增, 里程计的数据类型是32位的整数,单位为mm. 范围非常大,不用考虑其溢出的问题。

以使用的机器为SDP Mini为例,点击导出配置文件,将导出的.c文件命名为sdpmini_config.c,用来替代Project工程中原来的同名文件。将Project工程文件在IAR7.6及以上的版本中打开,左上角Workspace下的下拉框选择对应的版本,如使用breakout6.0就选择Release_Rev6,将导出的.c文件中的两处static删除后,点击Make,生成的hex文件用于烧录到breakout上的MCU中。

请参考KBSW180158 Breakout kit 烧写固件,breakout 6.0与breakout 4.0的烧录接线方式相同。

不是的,Project里面的程序,比如homeir,sonar,bumper等,只是给客户用来参考的,更注重的是向客户展示底盘和模块之间的Control Bus通讯协议的实现。比方homeir,由于传感器的协议、功能可能都不太一样,客户需要根据自己实际使用的传感器写相关的程序

0x34GET_AUTO_HOME_DATA的报文,应答数据,有规定要上传什么数据。接收头数据接收的信标数据是开关量,就是接收头是否能收到对应发射器的信号,1代表能接收到。

breakout硬件上没有电压测量电路,实际并没有测量电量这个功能,示例代码只是给了参考,客户需要自行完成电源管理相关的集成。

底盘的示例project中的controlbus用串口收发的buffer设置的是512,将其更改为1024可解决改问题。

  • No labels