Skip to content

Link frame and joint definitions

Peter Corke edited this page Nov 22, 2020 · 4 revisions

The ERobot is a general way to represent a rigid-body tree that can be a single serial-link chain or a branched mechanism.

Every link in the model has:

  • a parent, except the root link
  • zero, one or more children
  • has a link coordinate frame in which inertial properties such as centre-of-mass and inertia are defined

This is shown diagrammatically below

link frames

where everything in red is a property (attribute) of link k, and everything in blue is a property of its parent link.

We borrow Featherstone's notation where the function is the parent of link k.

A robot joint connects two links. It connects coordinate frames on each side of the joint: the parent-side one expressed in the parent link's coordinate frame, and the child-side one is the child link's link coordinate frame.

is a constant transform, with respect to the parent frame, that describes the location of the parent-side of the joint. It is a property of the child link, since the parent link may have multiple children.

Frame can be expressed with respect to frame using an elementary-transform sequence (ETS). It comprises zero or more constant transforms and only one variable transform. It is parsed and processed at ELink construction time and is accessed via attributes:

  • v is a variable elementary transform representing the joint. v.eval(q) is an SE3 object representing the joint transform .
  • Ts is an SE3 object, possibly identity, from precomputing the constant part of the ETS
  • A(q) is an SE3 object representing

Comparison with Featherstone's notation

  • “Robot Dynamics Algorithms”, R. Featherstone, volume 22, Springer International Series in Engineering and Computer Science, Springer, 1987.
  • “A beginner’s guide to 6-d vectors (part 1)”, R. Featherstone, IEEE Robotics Automation Magazine, 17(3):83-94, Sep. 2010.

The most obvious difference is that the sense of the coordinate transformations reversed. Although arrows are drawn from the parent frame to the child frame, the variables Xj(i) and XT(i) transform quantities from the child frame to the parent frame. This means that:

  • Xj(i) is the inverse of v
  • XT(i) is the inverse of Ts
  • Xup = Xj(i) XT(I) is the inverse of A(q)

At some future point we may keep Featherstone's quantities in the ELink object.