Here we are... thank you, Augusto

http://answers.ros.org/question/904/moving-frames-in-3d-6dof


On Wed, May 11, 2011 at 8:37 AM, tfoote [via ROS-Users] <ml-node+2926235-1016350096-223042@n3.nabble.com> wrote:
Hi Augusto,

Could you please ask this on answers.ros.org..  This is a nice specific question with one or more answers which another person could learn from. 

Thanks,
Tully

On Tue, May 10, 2011 at 9:51 PM, Augusto Luis Ballardini <[hidden email]> wrote:
Hi everybody, I have a question about frames , transforms and TF. I would like to extend the simples Turtle tf tutorials (http://www.ros.org/wiki/tf/Tutorials) based on a 2D space but I'm having a lot of troubles doing it. Unfortunately I didn't find (yet) something on the mailing list or on ros-answers...
I have this 3 frames:
  • 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"));

and this is the outcome http://www.youtube.com/watch?v=d4ktwwukCV0, not properly what I want...

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

_______________________________________________



--
Tully Foote
Systems Engineer
Willow Garage, Inc.
[hidden email]
(650) 475-2827


_______________________________________________
ros-users mailing list
[hidden email]
https://code.ros.org/mailman/listinfo/ros-users



If you reply to this email, your message will be added to the discussion below:
http://ros-users.122217.n3.nabble.com/Moving-frames-in-3D-6dof-tp2926091p2926235.html
To start a new topic under ROS-Users, email ml-node+122217-1927657133-223042@n3.nabble.com
To unsubscribe from ROS-Users, click here.