Within a model, a robot is represented as a kinematic tree, containing a collection of all the joints, information about their connectivity, and, optionally, the inertial quantities associated to each link. In Pinocchio a joint can have one or several degrees of freedom, and it belongs to one of the following categories:
Remark: In the URDF format, a joint of type fixed can be defined. However, a fixed joint is not really a joint because it cannot move. For efficiency reasons, it is therefore treated as operational frame of the model.
Each type of joints is characterized by its own specific configuration and tangent spaces. For instance, the configuration and tangent spaces of a revolute joint are both the real axis line \(\mathbb{R}\), while for a Spherical joint the configuration space corresponds to the set of rotation matrices of dimension 3 and its tangent space is the space of 3-dimensional real vectors \(\mathbb{R}^{3}\). Some configuration spaces might not behave as a vector space, but have to be endowed with the corresponding integration (exp) and differentiation (log) operators. Pinocchio implements all these specific integration and differentiation operators.
See Dealing with Lie-group geometry to go further on this topic.