主要细节参见wiki,这里我写一下它的broadcaster和listener做个记录:
tf_broadcaster.cpp:
#include<ros/ros.h>
#include<tf/transform_broadcaster.h>
int main(int argc, char** argv){
ros::init(argc, argv, "robot_tf_publisher");
ros::NodeHandle node;
ros::Rate rate(100);
tf::TransformBroadcaster broadcaster;
while(node.ok()){
broadcaster.sendTransform(
tf::StampedTransform(
tf::Transform(
tf::Quaternion(0,0,0,1),
tf::Vector3(0.1,0.0,0.2)
),
ros::Time::now(),
"base_link",
"base_laser"
)
);
rate.sleep();
}
}
在broadcaster中我们主要描述的是两个坐标frame之间的位置关系,这里是base_link与base_laser之间的位置关系,表base_laser在base_link的x=0.1,y=0.0,z=0.2的位置,旋转方面quaternion置0,没有变化。
tf_listener.cpp:
#include<ros/ros.h>
#include<tf/transform_liste