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.