1、定义一个tf发布器 tf::TransformBroadcaster br; 2、定义个tf的转换关系 tf::Transform transform; 设置三维坐标点的位置 transform.setOrigin( tf::Vector3(msg->x, msg->y, 0.0) ); 将角度转换成四元数,设置到转换中 tf::Quaternion q; q.setRPY(0, 0, msg->theta); transform.setRotation(q); 3、将转换关系即相对父坐标系的位置发送到tf库 br.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "world", turtle_name)); 4、定义一个接收器 tf::TransformListener listener; 5、定义个Stamped tf的转换关系 tf::StampedTransform transform; 6、等待需要的tf转换关系生成 listener.waitForTransform("/turtle2", "/turtle1", now, ros::Duration(3.0)); 7、查阅turtle2转换成turtle1的 listener.lookupTransform("/turtle2", "/turtle1",now, transform); 8、注册接收某个坐标系 tf_filter_ = new tf::MessageFilter<geometry_msgs::PointStamped>(point_sub_, tf_, target_frame_, 10); tf_filter_->registerCallback( boost::bind(&PoseDrawer::msgCallback, this, _1) ); 9、转换point_ptr到target_frame_的转换关系 tf_.transformPoint(target_frame_, *point_ptr, point_out); 10、将yaw角度值转换成四元素 tf::createQuaternionMsgFromYaw(angle+M_PI/2); tf::Quaternion createIdentityQuaternion()
tf::Quaternion createQuaternionFromRPY(double roll,double pitch,double yaw)
geometry_msgs::Quaternion createQuaternionMsgFromRollPitchYaw(double roll,double pitch,double yaw)
11、
12、抛出异常 Exceptions used in the tf packageAll exceptions in tf inherit from tf::TransformException, which inherits from std::runtime_error. tf::ConnectivityException
tf::ExtrapolationException
tf::InvalidArgument
tf::LookupException
|
|