ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A answers.ros.org

# how to calculate transform for two geometry_msgs/poseStamped messages

Hi,

I am new to ROS and RTT.

I want to calculate the transformation (relative position) for two geometry_msgs/poseStamped messages so that I can get the absolute position of my object if the position of other object is changed.

The first task is clearly to calculate the transform and then to use that transform also..

============================================================================

# Updated on August 8, 2016

CODE

input_port_hand.read(msg_hand);

// calculate the transform from the object Pose this way we have the frame in which the object is lying

tf::Transform transform;
transform.setOrigin(tf::Vector3(msg_obj.pose.position.x, msg_obj.pose.position.y, msg_obj.pose.position.z));
transform.setRotation(tf::Quaternion( msg_obj.pose.orientation.x, msg_obj.pose.orientation.y, msg_obj.pose.orientation.z, msg_obj.pose.orientation.w));
tf::StampedTransform stf = tf::StampedTransform(transform,ros::Time(),"world","object");
std::cout<<stf.frame_id_<<"\n";
// Calculate the relative position of hand WRT this frame

std::string target_frame = "world";
geometry_msgs::PoseStamped& rel_hand_pos = msg_hand;
tf::TransformListener tl;

try{
tl.transformPose(target_frame, msg_hand, rel_hand_pos);
}
catch (tf::TransformException ex){
ROS_ERROR("%s",ex.what());
ros::Duration(1.0).sleep();
}

output_port.write(rel_hand_pos);


} else{ std::cout << "Rtt_apc executes updateHook!! No New Data !!"<<std::endl; }="" }<="" p="">

ERROR

world ERROR "world" passed to lookupTransform argument target_frame does not exist. listener: I heard : [ 0.25,0.25,0.25,0,0,0,1 ]

edit retag close merge delete

Sort by ยป oldest newest most voted

Use transformPose(). Exists for python and cpp. That of course requires that your tf tree is correct. See this tutorial.

more

However after using this i see an error and i am not sure if i am using the right frame for transformPose function.. Can you have a look at the code.

( 2016-08-08 03:36:48 -0600 )edit