代码
#include<iostream>
#include<ros/ros.h>
#include<tf/tf.h>
#include<tf/transform_listener.h>
#include<geometry_msgs/TransformStamped.h>
int main(int argc, char** argv)
{
ros::init(argc, argv, "tf_sub_testt");
ros::NodeHandle nh;
tf::TransformListener tf_listener;
ros::Rate rate(10);
while(ros::ok()){
tf::StampedTransform transform;
try
{
tf_listener.lookupTransform("wrist_2_link", "forearm_link", ros::Time(0), transform);
ROS_INFO("x,y,z = %f, %f, %f", transform.getOrigin().x(), transform.getOrigin().y(), transform.getOrigin().z());
ROS_INFO("w,y = %f, %f", transform.getRotation().getW(), transform.getRotation().getY());
}
catch(const std::exception& e)
{
ROS_ERROR("%s", e.what());
}
rate.sleep();
}
return 0;
}
其实也没有什么需要注意的,添加add_executable和target_link_libraries,然后编译。文件位置需要放对。尽量在子功能包中,然后在子功能包的cmakelists中写就可以。