本文主要是介绍ROS运行bag文件及其坐标系转换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考
https://blog.csdn.net/adamshan/article/details/82901295(adamshan大神博客24期激光雷达的地面-非地面分割和pcl_ros实践)
https://blog.csdn.net/elsa211/article/details/88209247
https://blog.csdn.net/xu_fengyu/article/details/86562827
https://www.cnblogs.com/li-yao7758258/p/7672521.html
TF命令行工具
(1) tf_monitor工具的功能是打印tf树中的所有参考系信息,通过输入参数来查看指定参考系之间的信息 用法: rosrun tf tf_monitor
tf_monitor <source_frame> <target_target> 监视一个特定的转换 For example, to monitor the transform from /base_footprint to /odom:
(2) tf_echo工具的功能是查看指定参考系之间的变换关系。命令的格式: tf_echo <source_frame> <target_frame>
(3)static_transform_publisher工具的功能是发布两个参考系之间的静态坐标变换,两个参考系一般不发生相对位置变化
(4)view_frames 是可视化的调试工具,可以生成pdf文件,来显示整棵tf树的信息。用法:rosrun tf view_frames
坐标系问题及其解决
运行adamshan的bag时候打开rviz会有一个/map坐标系找不到的问题,这个时候就要考虑使用tf工具包发布一个静态tf变换,从激光雷达的坐标系到/map坐标系。但是激光雷达的坐标系我们不知道,只知道激光雷达的话题名称为/velodyne_points,如何通过这个这个话题的名称找到其所在的坐标系呢?可以使用以下命令:
rostopic echo /velodyne_points | grep frame_id
可以得到该话题的所在坐标系是/velodyne。
得到坐标系之后,我们用一个从/map到/velodyne的tf变换,在launch文件中添加以下命令:
<node pkg="tf" type="static_transform_publisher" name="map_to_velodyne" args="0 0 0 0 0 0 /map /velodyne 100" />
或者直接在命令行运行:
rosrun tf static_transform_publisher 0.0 0.0 0.0 0.0 0.0 0.0 map xxx 100 ;//将xxx映射为map
即可解决该问题
这篇关于ROS运行bag文件及其坐标系转换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!