侵权投诉
焊接机器人 喷涂机器人 搬运机器人 装配机器人 切割机器人 其它机器人
订阅
纠错
加入自媒体

【知识】如何设计一款基于ROS的移动机器人?

2016-08-13 11:22
姚看江湖
关注

  这里有一个关键问题就是编码器的选择和pid的调速。

  编码器的选择:一般编码器和轮子是在一个轴上,目前来说,速度在0.7m/s以下的话,编码器选600键到1200键之间都ok。不过需要注意的是,编码器最好用双线的,A、B两线输出,A向和B向输出相差90度,这样可以防抖动。防抖动就是可以在之后里程计算时可以更准确。

  左轮和右轮的速度大小的控制,通过轮子编码器反馈,通过PID实时调整电机的PMW来实现。实时计算出小车的里程计(odom),得到小车移动位置的变化。

  计算车的位置变化是通过编码器来计算的,如果轮子打滑等情况,那么计算的变化和实际的变化可能不同。要解决这个问题,其实是看那个问题更严重。要走5米只走了4.9米重要,还是要走180度只走了179度重要。

  其实角度的不精确对小车的影响更大。一般来说,小车的直线距离精确度可以控制在厘米范围内,在角度方面可以控制精准度在1%~2%。因为角度是比较重要的参数,所以很多人就用陀螺仪来进行矫正。

  所以有时候大家问小车精度有多高?其实现在这样已经精度比较高了,难免打滑等问题,不可能做到百分之百的精准。

  小车在距离和角度方面做到现在这样对于自建地图导航已经是可以接受的,要提高更高的精度可能就要其他设备辅助,比如激光雷达来进行辅助,激光雷达可以进行二次检测进行纠正。

  激光雷达数据的存储格式,它首先会有一个大小范围,如果超出范围是无效的。还有就是有几个采样点,这样就可以激光雷达可以告诉你隔多少度有一个采样点。

  另外最后那个Intensities是告诉大家数据的准确率,因为激光雷达也是取最高点的数据,是有一定的准确率的。上面的ppt其实就是用激光雷达扫了一个墙的形状。

  激光雷达扫出一个静态形状其实没有意义,雷达建图的意义其实在于建立房间的地图。

  如何绘制地图?

  第一步是收集眼睛数据:

  针对激光雷达,ROS在sensor_msgs包中定义了专用了数据结构来存储激光消息的相关信息,成为LaserScan。

  它指定了激光的有效范围、扫描点采样的角度及每个角度的测量值。激光雷达360度实时扫描,能实时测出障碍物的距离、形状和实时变化。

  第二步就是把眼睛看到的数据转化为地图:

 

  ROS的gmapping把激光雷达的/scan数据转换为栅格map数据,其中黑色代表障碍物、白色代表空白区域,可以顺利通行、灰色:未知领域。随着机器人的移动,激光雷达可以在多个不同方位观测同一个位置是否有障碍物,如果存在障碍物的阈值超过设置值是,就标定此处是存在障碍物;否则标定不存在障碍物。把障碍物、空白区域和未知领域的尺寸用不同灰度表示出来,就是栅格地图。便于下一步定位和导航。

<上一页  1  2  3  4  5  下一页>  余下全文
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

文章纠错
x
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:

粤公网安备 44030502002758号