旧篇: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说明一般也会有帮助。
设备: 底盘 : 采集码盘数据 与执行控制指令来运动 : 你要提供 /odom 与 /cmd_vel 这样的数据接口
rplidar: 采集激光测距数据 你要提供 /scan 数据接口
利用现有package搭建工程你首先需要维护好两个东西: TF tree 和 topic 数据.
维护好你的tf tree. 因为每个topic数据都是相对一个frame ID 的,而数据之间的关联就需要 tf树的变换关系确定。 如果你启动移动机器人时使用的不是模型(URDF文件中已经描述关系)自带的传感器,
例如 turtlebot 中就没有rplidar 雷达, 你就需要指定雷达的frame id (/laser) 相对基座tf树中的变换关系。
也就是你要建立一个静态的tf变换发布出去。当然你也可以像旧篇一样修改turtlebot的urdf模型文件等等(这也就是为什么kinect模拟2D laser时为什么不需要添加static_transform_publisher的原因)。
topic数据接口的问题,你需要依据gmapping的实际需要, 刚好他需要的就是/odom /scan 。与原package的node输出相一致。如果不一致,你就需要采取remap的形式修改对应接口(不建议直接在源码里修改)
topic的 映射类似于:
TF与topic相一致了,算法基本能跑起来。但是跑起来的实际效果你得留意3中注意要点和自己对参数的理解和不断尝试。
A2参考: http://blog.csdn.net/zyh821351004/article/details/51169334
A1常见 rplidar_ros 里面的图
rplidar_ros 里面有相应的script文件,你可以了解udev相关说明作相应配置。
多USB窜扰(ttyUSB0会依据你接入先后执行分配),其实你可以依据端口号绑定重映射,参见: http://blog.csdn.net/zyh821351004/article/details/50596171
多半是你这usb供电问题,用主机后背USB口试试。
issue: https://github.com/robopeak/rplidar_ros/issues?q=is%3Aopen+is%3Aissue (可以留意closed中问题)
wiki: https://github.com/robopeak/rplidar_ros/wiki
参看下 costmap_common_params.yaml 文件
依据你前面tf设置修改相应的高度值。
min_obstacle_height: 0.0 #0.25
max_obstacle_height: 2.0 #0.35
一定要将你的这些信息暴露给技术支持:
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下去测试官方的。
仅作参考比对。
ref: RPLidar For ROS Based SLAM and Navigation