- world_frame
- odom_frame (with a fixed transform respect to world)
- cart_frame (I move this frame with the odometry data
Here is the code:
static tf::TransformBroadcaster br;
static tf::TransformListener tf_;
and this
while (ros::ok()){
transform.setOrigin(tf::Vector3(3,3,0));
transform.setRotation(tf::createQuaternionFromRPY(0.0,0.0,0.0));
br.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "/world", "/odom"));
here, with updateOdom I calculate the x,y,theta position from the odometry (like the
tutorial)
updateOdom(1);
try
{
transform.setOrigin(tf::Vector3(x,y,0));
transform.setRotation(tf::createQuaternionFromRPY(0.0,0.0,th));
br.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "/odom", "/cart_frame"));
} catch(tf::TransformException e)
{ ROS_WARN("errore transformpose (%s)", e.what()); }
Now what I'm trying to do is move the cart_frame not only with the x+y+th params but with a full 6-dof transform, as if the the cart_frame was moving on a circular garage car ramp, and here starts my question: the simplest way is to add the information to the odometry, so I can call the sendtransform() directly, but what if I had a situation where the odometer always sends only 2D transforms?
In the example I tried to send a transform with a small pitch at the beginning of the while (ros ok())
transform.setOrigin(tf::Vector3(3,3,0));
transform.setRotation(tf::createQuaternionFromRPY(0.0,0.4,0.0));
br.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "/world", "/odom"));
Ok, probably I am very tired and confused today but if someone can tell me where I'm wrong I'll be infinitely grateful =)
Thank you
Augusto