[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