For robots with links and joints forming closed loops, it is often easier to find an implicit
representation of the C-space rather than an explicit parametrization.
Consider the 4-bar closed chain shown here.
Grubler's formula tells us the 4-bar has one degree of freedom, so it should be possible
to parametrize the C-space by a single variable.
This representation may be hard to derive and may have subtle singularities, so instead
we could view the C-space as a 1-dimensional space embedded in the 4-dimensional space
of joint angles, defined by the three loop-closure equations that say the final position and
orientation, after going around the loop, must be equal to the initial position and
orientation.
If we define the vector of joint angles theta, we can rewrite the loop-closure equations
in this vector form.
These constraints are called holonomic constraints, constraints that reduce the dimension of the
C-space.
If the robot's configuration is defined by n variables subject to k independent holonomic
constraints, then the dimension of the C-space, and the number of degrees of freedom, is n
minus k.
If the robot is moving, we could ask how these holonomic constraints restrict the velocity
of the robot.
Since g of theta has to be zero at all times, the time rate of change of g must also be
zero at all times.
We can write these constraints as a matrix dependent on the configuration theta times
the joint velocities theta-dot equal to zero.
If we call this matrix A of theta, we can write the velocity constraints as A of theta
times theta-dot equals zero, where the A matrix has k rows and n columns.
Velocity constraints like this are called Pfaffian constraints.
Sometimes we call holonomic constraints "integrable" constraints, since they are essentially the
integral of these velocity constraints.
In some cases, though, a set of velocity constraints cannot be integrated to equivalent configuration
constraints.
Consider the chassis of a car driving on a plane.
If we define an x-y reference frame, we can represent the configuration of the chassis
as q = (phi, x, y), where phi is the chassis angle, and (x,y) refers to the location of
a point halfway between the rear wheels.
If the forward velocity of the car is v, the x-y velocity is x-dot = v cos phi and y-dot
= v sin phi.
We can express v as y-dot divided by sin phi and substitute this into our equation for
x-dot to get the velocity constraint x-dot times sine phi minus y-dot times cosine phi
equals zero.
We can write this as a Pfaffian constraint A of q times q-dot equals zero where the single
row of the 1 by 3 A matrix is 0, sine of phi, and minus cosine of phi.
Unlike a holonomic constraint, this velocity constraint cannot be integrated to give an
equivalent configuration constraint.
Therefore we call this a nonholonomic constraint.
A nonholonomic constraint reduces the space of possible velocities of the car -- the car
cannot slide directly to the side -- but it does not reduce the space of configurations.
Sideways motion can be achieved by parallel parking, and the car can reach any configuration
in the 3-dimensional C-space.
A robot can be subject to both holonomic and nonholonomic constraints.
Again using the car as an example, if we consider the chassis to be a rigid body in space, then
three holonomic constraints keep the chassis confined to the plane, while one nonholonomic
constraint prevents sideways sliding.
To summarize, holonomic constraints are constraints on configuration, nonholonomic constraints
are constraints on velocity, and Pfaffian constraints take the form A of theta times
theta-dot equals zero.
Determining whether Pfaffian constraints are actually holonomic configuration constraints
or only nonholonomic velocity constraints is left to Chapter 13.
In the next video we wrap up Chapter 2 by introducing the task space and the workspace.