[ros-users] Coordinate frames for robot vs world

Eitan Marder-Eppstein eitan at willowgarage.com
Tue Apr 5 19:14:36 UTC 2011


Hitesh,

I'll just add that you can give goals to the navigation stack in whatever
frame you wish. If you always want to send goals relative to the robot's
current position, using the "base_link" frame should be fine. Sending goals
in a global frame like "odom" or "map" is normally the right thing to do
when you have some specific position in the world you want the robot to move
to.

Another thing is that the velocities reported by odometry are actually in
the robot-centric, or "base_link" frame, so you don't actually have to
rotate them to reason about them in that frame. The Odometry message is sort
of funky in that way, but is documented here:
http://www.ros.org/doc/api/nav_msgs/html/msg/Odometry.html.

<http://www.ros.org/doc/api/nav_msgs/html/msg/Odometry.html>Hope this helps,

Eitan

On Tue, Apr 5, 2011 at 12:01 PM, Wim Meeussen <meeussen at willowgarage.com>wrote:

> Hitesh,
>
> > From the wiki, the robot is using a front-x, left-y coordinate
> convention.
> > In rviz upon start, my robot faces in the front direction as the laser
> scan
> > data is towards the forward direction. But when I give a goal, for
> example x
> > = 1, y = 0 to frame base_link using simple_navigation_goals, which means
> it
> > should move forward 1m, it is displayed 1m to the right of the robot on
> the
> > odom (world) frame in rviz. In order to move the robot 1m forward, I have
> to
> > give a y = 1, x = 0 goal. It seems the odom frame is following a x-right,
> > y-front coordinate system.
> > Is there a 90 degrees rotation between the two frames? This means that
> all
> > velocities and distances reported by odometry have to be rotated 90
> degrees
> > clockwise? Or am I doing something wrong?
>
> The odom frame is attached to the world. So as the robot drives
> around, it is going to be in a different position/orientation relative
> to the odom frame. On startup it just happens to be that the robot is
> turned 90 degrees relative to the odom frame, but this angle will
> change as the robot moves around.
>
> The navigation goals you send to the robot are specified in the odom
> frame. So you tell the robot where to go in absolute world
> coordinates.  It sounds like you want to command the robot in relative
> coordinates (move 1 meter forward from where ever the robot is right
> now). To do that, you have to convert the relative goals in absolute
> coordinates. Tf can help you do this.
>
> Hope this helps,
>
> Wim
>
>
> --
> --
> Wim Meeussen
> Willow Garage Inc.
> <http://www.willowgarage.com)
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ros.org/pipermail/ros-users/attachments/20110405/2e52c09e/attachment-0003.html>


More information about the ros-users mailing list