PoseStamped转成tf

it2023-08-23  68

// // Created by ch on 2020/10/20. // #include <tf/transform_broadcaster.h> #include <geometry_msgs/PoseStamped.h> #include <Eigen/Dense> #include <Eigen/Core> void DrMarker0ToTF(const geometry_msgs::PoseStampedConstPtr& data) { static tf::TransformBroadcaster bf; tf::Transform transform; transform.setRotation( tf::Quaternion( data->pose.orientation.x, data->pose.orientation.y, data->pose.orientation.z, data->pose.orientation.w)); transform.setOrigin( tf::Vector3( data->pose.position.x / 1000, data->pose.position.y / 1000, data->pose.position.z / 1000)); bf.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "world", "DR_marker0")); ROS_INFO("DR_marker0\n"); } void DrMarker6ToTF(const geometry_msgs::PoseStampedConstPtr& data) { static tf::TransformBroadcaster bf; tf::Transform transform; transform.setRotation( tf::Quaternion( data->pose.orientation.x, data->pose.orientation.y, data->pose.orientation.z, data->pose.orientation.w)); transform.setOrigin( tf::Vector3( data->pose.position.x / 1000, data->pose.position.y / 1000, data->pose.position.z / 1000)); bf.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "world", "DR_marker6")); ROS_INFO("DR_marker6\n"); } void DrG0ToTF(const geometry_msgs::PoseStampedConstPtr& data) { static tf::TransformBroadcaster bf; tf::Transform transform; transform.setRotation( tf::Quaternion( data->pose.orientation.x, data->pose.orientation.y, data->pose.orientation.z, data->pose.orientation.w)); transform.setOrigin( tf::Vector3( data->pose.position.x / 1000, data->pose.position.y / 1000, data->pose.position.z / 1000)); bf.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "world", "DR_G0")); ROS_INFO("DR_G0\n"); } void DrG6ToTF(const geometry_msgs::PoseStampedConstPtr& data) { static tf::TransformBroadcaster bf; tf::Transform transform; transform.setRotation( tf::Quaternion( data->pose.orientation.x, data->pose.orientation.y, data->pose.orientation.z, data->pose.orientation.w)); transform.setOrigin( tf::Vector3( data->pose.position.x / 1000, data->pose.position.y / 1000, data->pose.position.z / 1000)); bf.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "world", "DR_G6")); ROS_INFO("DR_G6\n"); } void McMarker0ToTF(const geometry_msgs::PoseStampedConstPtr& data) { static tf::TransformBroadcaster bf; tf::Transform transform; transform.setRotation( tf::Quaternion( data->pose.orientation.x, data->pose.orientation.y, data->pose.orientation.z, data->pose.orientation.w)); transform.setOrigin( tf::Vector3( data->pose.position.x, data->pose.position.y, data->pose.position.z)); bf.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "world", "MC_marker0")); ROS_INFO("MC_marker0\n"); } void McMarker6ToTF(const geometry_msgs::PoseStampedConstPtr& data) { static tf::TransformBroadcaster bf; tf::Transform transform; transform.setRotation( tf::Quaternion( data->pose.orientation.x, data->pose.orientation.y, data->pose.orientation.z, data->pose.orientation.w)); transform.setOrigin( tf::Vector3( data->pose.position.x, data->pose.position.y, data->pose.position.z)); bf.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "world", "MC_marker6")); ROS_INFO("MC_marker6\n"); } int main(int argc, char** argv) { ros::init(argc, argv, "Data2TF"); ros::NodeHandle n; ros::NodeHandle node; ros::Subscriber sub_dr_marker0 = node.subscribe("/marker0_dr", 100, DrMarker0ToTF); ros::Subscriber sub_dr_marker6 = node.subscribe("/marker6_dr", 100, DrMarker6ToTF); ros::Subscriber sub_dr_G0 = node.subscribe("/G0_dr", 100, DrG6ToTF); ros::Subscriber sub_dr_G6 = node.subscribe("/G6_dr", 100, DrG0ToTF); ros::Subscriber sub_MC_marker0 = node.subscribe("/vrpn_client_node/G0/pose", 100, McMarker0ToTF); ros::Subscriber sub_MC_marker6 = node.subscribe("/vrpn_client_node/G6/pose", 100, McMarker6ToTF); ROS_INFO("Begin to get data...\n"); while (ros::ok()) ros::spin(); }

 

最新回复(0)