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..
Please guide
============================================================================
Updated on August 8, 2016
CODE
void Rtt_apc::updateHook(){ if(input_port_obj.read(msg_obj) == RTT::NewData){
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 ]