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 < aballardini@tiscali.it> 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 > > _______________________________________________ > ros-users mailing list > ros-users@code.ros.org > https://code.ros.org/mailman/listinfo/ros-users > > -- Tully Foote Systems Engineer Willow Garage, Inc. tfoote@willowgarage.com (650) 475-2827