0
$\begingroup$

Rosanswers logo

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; } }

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 ]


Originally posted by gk on ROS Answers with karma: 3 on 2016-08-03

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

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


Originally posted by Chrissi with karma: 1642 on 2016-08-04

This answer was ACCEPTED on the original site

Post score: 0


Original comments

Comment by gk on 2016-08-08:
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.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.