研究了很久的kobuki设备,这次一起来看看kobuki相关的tf
1.连接kobuki设备后看到的tf
启动命令
roslaunch turtlebot_bringup minimal.launch
rqt ;执行命令后点击窗口中的pluginsvi -> visualization -> tf 就可以看到图形化的tf
其中odom是由/mobile_base_nodelete_manager发出的,实际上由kobuki node发出的,而kobuki node是个nodelete,由mobile_base_nodelete_manager加载,故显示的是mobile_base_nodelete_manager。
odom由kobuki根据左右轮编码器信息和地盘参数(轮半径,轮间距)计算出来的robot实际运动的距离
nodelete相关可见文章:ros中的nodelet
mobile_base_nodelete_manager相关可见文章:turtlebot的mobile_base节点
2.不链接kobuki设备的tf
没有odom,因为kobuki driver读不到地盘信息,从而就不会发布odom transfrom
也就是说里面所有的tf信息,base_footprint,base_link和一些其他的设备关键点坐标的tf transform都由robot_state_publisher维护
其中base_link是robot硬件上的基础坐标系,robot上会有很多个关键点,例如laser所在位置,手臂所在位置,head所在位置,这些位置都以base_link为参照,
一般base_link都选取的是robot地盘中心位置,这样laser相对底盘的中心点
还可以看到robot_state_publisher监听odom的变化而同步改变robot关键点信息,可以简单理解就是,robot上关键点坐标随这robot的实际运动而改变
如果新开发一个robot,就要先设定好robot上关键点坐标,即维护好robot_state_publisher节点。
3.连接kobuki并启动并同步启动slam_gmapping
启动命令:
roslaunch turtlebot_navigation amcl_demo.launch
或者
roslaunch turtlebot_navigation gmapping_demo.launch
多了/map transform,是由/slam_gmapping发布的。odom坐标变化是依赖/map坐标
4.启动kobuki和hokuyo
laser tf由base_to_laser发布,父节点是base_link
具体的设置命令如下:
<node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.0 0.0 0.30 0 0.0 0.0 base_link laser 100"/>