ros中kobuki(turtlebot)+rplidar 跑gmapping

旧篇:http://blog.csdn.net/zyh821351004/article/details/44103757#reply  时间有点老,当时知识描述只能这个程度,也就不改动那篇了,重新写一篇。

        由于手头目前没有kobuki了,就以自己的sdp来说明吧。


提示:ros中开源的package问题其实最好以开源的方式在github的issue提出来,也可以先到issue里面找(包括closed的),再者可以直接向package的维护email求解(例如 rplidar_ros的维护邮箱[email protected]),  包括开源的程序不一定十分完美,你若发现bug可以fork,提交你的commit, 发pull request, 共同促package更加稳定。  其实遇到问题仔细看看相应的wiki说明一般也会有帮助。

 

1. 框架搭建说明:

        设备: 底盘 :   采集码盘数据 与执行控制指令来运动 :  你要提供 /odom   与 /cmd_vel  这样的数据接口

                     rplidar: 采集激光测距数据                     你要提供 /scan 数据接口

         

         利用现有package搭建工程你首先需要维护好两个东西: TF tree 和 topic 数据.

ros中kobuki(turtlebot)+rplidar 跑gmapping_第1张图片ros中kobuki(turtlebot)+rplidar 跑gmapping_第2张图片



                      


2. 搭建其实很简单: 

         维护好你的tf tree. 因为每个topic数据都是相对一个frame ID 的,而数据之间的关联就需要 tf树的变换关系确定。   如果你启动移动机器人时使用的不是模型(URDF文件中已经描述关系)自带的传感器, 

例如 turtlebot 中就没有rplidar 雷达, 你就需要指定雷达的frame id (/laser) 相对基座tf树中的变换关系。 

也就是你要建立一个静态的tf变换发布出去。当然你也可以像旧篇一样修改turtlebot的urdf模型文件等等(这也就是为什么kinect模拟2D laser时为什么不需要添加static_transform_publisher的原因)。
     // 其中的参数请自行查看wiki了解详细具体的说明

    

        topic数据接口的问题,你需要依据gmapping的实际需要, 刚好他需要的就是/odom  /scan 。与原package的node输出相一致。如果不一致,你就需要采取remap的形式修改对应接口(不建议直接在源码里修改)

  topic的 映射类似于:    ;相当于源码中的”scan“ 变成了$(arg scan_topic) 你之前的定义。

TF与topic相一致了,算法基本能跑起来。但是跑起来的实际效果你得留意3中注意要点和自己对参数的理解和不断尝试。


3. 利用rplidar搭建gmapping 你需要注意点:

 3.1 laser 在base 上面的安装你注意了吗:

  A2参考:       http://blog.csdn.net/zyh821351004/article/details/51169334

  A1常见 rplidar_ros 里面的图 


3.2 端口权限问题:

 rplidar_ros 里面有相应的script文件,你可以了解udev相关说明作相应配置。

多USB窜扰(ttyUSB0会依据你接入先后执行分配),其实你可以依据端口号绑定重映射,参见: http://blog.csdn.net/zyh821351004/article/details/50596171 


3.3 雷达启动不转,health state 异常:

多半是你这usb供电问题,用主机后背USB口试试。


3.4 很多问题可以关注gitbub中issue , 里面的wiki也是有相应的一些说明的。

issue:  https://github.com/robopeak/rplidar_ros/issues?q=is%3Aopen+is%3Aissue   (可以留意closed中问题)

wiki:   https://github.com/robopeak/rplidar_ros/wiki 


3.5 gmapping中记得修改激光数据有效的最大值配置

     


3.6 理解每个参数的意义


3.7 跑navigation时。如果local_costmap值全零,

参看下 costmap_common_params.yaml 文件

  依据你前面tf设置修改相应的高度值。

    min_obstacle_height: 0.0 #0.25
    max_obstacle_height: 2.0 #0.35


3.8  出错性问题请求别人帮忙注意事项

      一定要将你的这些信息暴露给技术支持:

1)你运行相关的所有launch文件(除非你都理解,个别无关不附上)

2)你的TF tree : rosrun tf view_frames 

3)  你的topic 信息: rqt_graph ; rostopic list 

4)  package你是否保证原封不动,无法确认记得查看你的git log  ,附上对应package的commit ID 


3.9  你怀疑ubuntu下不正常,请自行到windows下去测试官方的。



4. 贴上我的launch文件(移动底盘请结合你自己的自行改动):

  仅作参考比对。

启动移动底盘


    
    
    
    
    
    
    
    

    
    
    
    


启动rplidar


  
    
  
  
  
  
  


启动gmapping


    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
     

ref:  RPLidar For ROS Based SLAM and Navigation


你可能感兴趣的:(【ROS】,【SLAM】,【Ubuntu】)