目录
前言
在ROS中,通常有一个转换(Transform)节点,用于将来自不同传感器的数据进行协调。对于机器人里程计信息来说,通常需要一个转换节点来将机器人的里程计信息从机器人底盘的局部坐标系(base_link)转换到全局坐标系(odom).
一、使用tf2_ros转换节点
-
首先,确保你已经在Gazebo中加载了你的机器人模型,并已经启动了里程计节点和机器人控制节点。
-
在终端中输入以下命令,启动一个tf2_ros转换节点:
rosrun tf2_ros static_transform_publisher 0 0 0 0 0 0 odom base_link
-
这里的static_transfrom_publisher是ROS提供的tf2_ros库中的一个节点,用于将一个静态的转换发布到ROS中。0 0 0是xyz轴的平移值,0 0 0是四元数的旋转值,odom是全局坐标系的名称,base_link是机器人底盘局部坐标系的名称。
-
现在,你应该能够在ROS中订阅odom主题,获取经过转换后的里程计信息,它已经对齐到了机器人底盘的局部坐标系。
注:这种方法虽然简单,但每次启动都要执行这个命令略显麻烦,想一劳永逸可参考方法二。
二、编写C++文件并在launch文件中调用
1.新建ROS工作空间
mkdir -p catkin_ws/src
cd catkin_ws
catkin_make
cd src
catkin_create_pkg odomTobaselink roscpp rospy std_msgs nav_msgs geometry_msgs