[Rock-dev] Finding a common robot body coordinate system

Jakob Schwendner jakob.schwendner at dfki.de
Tue Feb 15 13:29:11 CET 2011


On 02/14/2011 03:38 PM, Christopher Gaudig wrote:
> Hi!
>
> As there seem to be at least three different coordinate systems in use
> by people I talked to, I would like to start a discussion which CS we
> should declare as a "common standard" for rock. The ones used so far
> seem to be:
>
> a) x rightward, y forward, z upward (used in at least one DFKI project
> and at my alma mater)
>
> b) x forward, y rightward, z downward (ISO 1151 / DIN LN 9300 standard
> for aircraft, SNAME 1950 standard for marine vehicles, used in Fossen:
> Marine Control Systems)
>
> c) x forward, y leftward, z upward (used in at least one DFKI project
> and for automotive applications)
>
> I would like to find out what you guys think about these or if you have
> additional suggestions. Does any of the three seem more (or less)
> intuitive to you?
For imoby we have used a) for the robot coordinate system, and analogous 
to it ENU (East North Up) as the world frame. Reasoning for it:
- Right handed is more common than left handed, and has some other 
advantages.
- I like my head to have a more positive value than my toes unless I am 
doing a handstand. Up positive is the most intuitive for me.
- The forward movement I also like to be positive.
- Left/right I guess could be argued, but also I find right positive 
more intuitive.

-> The above constraints lead to a right-front-up frame for a robotic 
system. And using East North Up as the world frame makes sense then.

> I know that choosing a common CS will mean some work for some people,
> but will later save lots of debugging time I guess.
I agree. Also, it's not so hard to convert between frames, in order to 
interchange with other people that use other standards. I just makes 
life easier not having to do that.
> In addition I'd like to find out what you think about the use of the terms
>
> surge (fwd/back)
> sway (left/right)
> heave (up/down) and
>
> roll (rotate about surge axis)
> pitch (about sway axis)
> yaw (about heave axis)
>
> to describe robot movements without having to remember where x points to.
There are a number of names for these axis. I personally would not like 
to have any of them in the base classes, since I think they are domain 
specific. This also goes for the "euler" angles. It's very easy to get 
stuff wrong with them, and they are imho not a suitable means for 
representing orientations (for various reasons). For display that's 
another matter. Euler angles in degrees is actually the most intuitive 
textual representation I think.

The following representations are most suitable for interchange (and 
hence use in the base classes):
* translational parts (e.g. position, velocity, acceleration) is clear, 
I guess - 3-Vector
* orientation - quaternion
* small change in orientation - scaled axis of rotation
* uncertainty covariance of orientation - cov. matrix over scaled axis 
of rotation
* rotation speed - scaled axis of rotation
* rotation acceleration - scaled axis of rotation

Once we agreed on something here, we should probably have documentation 
page on the issue. We should define both the frames and the 
representations.

cheers,

Jakob




More information about the Rock-dev mailing list