[ros-users] Coordinate frames for robot vs world

hitesh dhiman hitesh.dhiman.1988 at gmail.com
Wed Apr 6 06:49:47 UTC 2011

Hi Eitan and Wim,
I realized my laser's starting and ending angles were not wrt robot's x
axis, but was rotated by 90 degrees. I changed the laser 's message angles
to start from negative theta to theta, now its seems ok.

On Wed, Apr 6, 2011 at 3:14 AM, Eitan Marder-Eppstein <
eitan at willowgarage.com> wrote:

> 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
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users

Hitesh Dhiman
Electrical Engineering
National University of Singapore
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ros.org/pipermail/ros-users/attachments/20110406/4552534e/attachment-0002.html>

More information about the ros-users mailing list