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

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

Compare with Current View Page History

« Previous Version 5 Current »

应用层

 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模块支持的地图面积最大是多少?

现有的D1M1、D1M2以及E1M2模块,其最大建图面积为200m x 200m。

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

不可以,比如20m*2000m是不可行的。

 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