Skip to content

TF Cheatsheet

Jean-Michel Fortin edited this page Jul 19, 2024 · 7 revisions

Convention: Rigid transformations always follow the right-hand rule when defining reference frames. When representing the base_link of a robot, we generally follow a X-forward, Y-Left, X-Up convention. Usually, when visualizing TFs, the X-axis is red, the Y-axis is green and the Z-axis is blue.



Logic: When you want to define the transformation ($_{p}^{c}{T}$), i.e. from the parent's reference frame to the child's reference frame, ask yourself the inverse question: Where is the parent's origin in the child's reference frame.

URDF: In a URDF, a joint defines the relationship between two links. We define the pose of the child frame, in the parent frame, which corresponds to the transform from child to parent ($_{c}^{p}{T}$). Rotations are defined as intrinsic euler angles, and are applied in the order 'xyz'.

RViz: In RViz, joints are represented as arrows and diplayed between reference frames, showing the relation from child to parent in URDF ($_{c}^{p}{T}$).

Cameras/OpenCV: Camera frames are defined differently from the usual convention, with the Z-axis going out of the camera, the Y-axis pointing downward and the X-axis pointing to the right. OpenCV's methods follow this convention, although indexing images directly reverses the x and y, because of the numpy standard (row, column).

Rotations: In general, we recommend the use of SciPy Rotations for all your rotations in Python. It streamlines the conversions from euler / axis-angle / quaternion / matrix, to avoid stupid errors in manually handling these.

Norlab's Robots

Protocols

Templates

Resources

Grants

Datasets

Mapping

Deep Learning

ROS

Ubuntu

Docker (work in progress)

Tips & tricks

Clone this wiki locally