Page tree
Skip to end of metadata
Go to start of metadata

应用层

 1. 激光雷达导航方案对什么材质的障碍物无法正常检测, 如何探测这些障碍物?

1.透明物体,如玻璃;

2.黑色吸光物体;

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

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

 2. 调用goHome()自动回充时候,其返回的action的状态在什么情况下为ERROR?

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

2.无法完成对桩  

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

 3. 调用configureNetwork()的时候,是否需要重新调用connect()来连接?

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

 4. 在使用robot_studio的时候,出现激光点并不能和障碍物重合的情况,是怎么回事?

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

 5. 机器人是依靠什么来进行定位的,是不是一定需要里程计?

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

 6. Slamware模块支持的地图面积最大是多少?

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

 7. 对于300m*300m的建图面积,如果宽度比较小,是否可以成比例增加长度?

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

 8. 使用Slamware解决方案需不需要另外安装IMU模块?

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

 9. SDK里面有没有可以读取惯导模块数据的接口?

没有,不支持。

 10. slamware所生成地图的分辨率是多少?

5cm

 11. 可以登录192.168.11.1页面,但是连接不上RoboStudio?

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

 12. Slamware模块生成的地图,是否可以保存在slamware模块里面?

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

 13. 是否机器人每次都需要在地图原点位置,以同一朝向开机?

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

 14. 是否可以使用USB转以太网的转换接口来连接slamware模块和上位机系统?

可以

 15. SDK中有没有支持自动完成整个区域地图扫描的接口?

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

 16. 调用moveto()设置机器人运动到前方目标点,为什么在周围没有障碍物的情况下,仍不走直线,绕行至目标点?

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

 17. Apollo如何实现自动上下电梯?

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

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

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

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

 18. Windows下编译Slamware SDK报错?

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

 19. 使用安卓开发,如何把地图上的坐标转换成手机屏幕上呢?

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

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

 20. Robotstudio中有改变机器人速度的功能。除了选择高中低三个选项,还可以自定义。请问这个功能如何通过API实现的?

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

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

 21. 如何通过API更改最大角速度?

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

 22. SDK中getlaserscan()的demo,得到的是什么数据?雷达休眠后,为什么还是有数据呢?

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

 23. 机器开机时的朝向不是x轴吗,为何还有yaw值?

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

 24. 如何实现RoboStudio中的橡皮擦功能,是否存在可用接口?

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

 25. 登陆Web Portal的密码,更改后忘记了,如何重置?

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

 26. 暂停建图,暂停定位,是什么api?

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

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

 27. 虚拟轨道导航和轨道优先导航,有什么区别?

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

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


底盘部分

 1. slamware导航方案支不支持全向轮?
 2. 在使用Robot Studio的时候,只显示激光点的数据,不显示地图,这是为什么?

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

 3. 在使用Robot Studio的时候,前后左右方向控制均没有问题,但是导航的时候出现机器人后退的现象,这是为什么?

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

 4. 在使用Robot Studio的时候,前后左右方向控制均没有问题,但是导航的时候出现机器人前进或者后退的现象,这是为什么?

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

 5. 机器人何时判断已经在充电桩上,终止自动回充的动作?

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

 6. 机器人能不能倒着进入充电桩充电?

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

 7. 机器人底盘不是圆形的,底盘直径如何设置?

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

 8. Slamware每隔多长时间向底盘请求一次里程数据,多长时间下发一次速度?

几十毫秒

 9. slamware与底盘通讯的最大延时是多久?

1分钟

 10. MCU没有响应模块的请求,模块会重连吗?

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

 11. Breakout上的stm32的参考代码是不是一定需要在IAR 7.6及以上的版本才能使用?

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

 12. 能不能把超声波传感器配置成碰撞传感器,以0和1的形式来返回数据?

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

 13. 能不能把slamware模块垂直地面安装?

不行,只能水平安装。

 14. 雷达的视野最小需要多少度?

至少需要超过220度

 15. 雷达何时会自动休眠,是否可以控制其不休眠?

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

 16. 机器人在导航过程中未碰到障碍物,但是经常改变导航路线?

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

 17. Control Bus GET_BASE_MOTO_DATA(0x31)命令,是轮子的运动的距离,还是累计的里程,会不会溢出?

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

 18. 如何获取breakout的电路设计图?
 19. 用RoboStudio里的Slamware配置工具进行配置后,如何操作?

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

 20. 如何烧写breakout的固件?

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

 21. 开发套装或者SDP Mini,MCU的参考Project中有一些传感器,是即插即用吗?

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

 22. 关于红外回充,Slamware需要接受到什么特定编码,才会认为是充电桩发出的信息?

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

 23. Project中关于读取电源电量的代码,是使用的电阻分压,用adc值计算的吗?

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

 24.导出的配置文件过大,模块无法正常启动,如何解决?

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

  • No labels