We've been discussing the dynamics of open-chain robots.
If the robot's motion is subject to constraints, however, like nonholonomic constraints due
to wheels or the loop-closure constraints of parallel robots, such as the Stewart platform,
we have to add forces that enforce the constraints.
Another example of a robot subject to constraints is a humanoid robot.
Here, the feet in contact with the ground create a closed loop, and if the robot grips
the box tightly, there is another closed loop through the arms.
These closed loops have to be enforced by constraint forces.
Finally, an open-chain robot erasing a whiteboard is another example of a robot subject to constraints.
We can write the constraints on the robot configuration as the vector equation b of
theta of t equals zero.
These configuration constraints keep the eraser pressed against the board.
Since these constraints are satisfied at all times, the time derivative of b must also
be zero.
By the chain rule, the time derivative can be expressed as the matrix of partial derivatives
of b with respect to theta times theta-dot, or A of theta times theta-dot for short, where
the A matrix is k-by-n, representing k velocity constraints on the n joints of the robot.
These Pfaffian velocity constraints can also represent nonholonomic constraints, as discussed
in Chapter 2.
We assume these k equality constraints are workless, meaning that the forces that enforce
these constraints do no work on the robot.
For the example of the robot erasing the board, this means that there is no friction between
the eraser and the board.
Without constraints, these are the equations of motion of the robot.
With constraints, the robot joint forces and torques tau may include forces against the
constraints, tau_con.
Thus the joint torques can be separated into components that move the robot and components
that act against the constraints.
Since the constraints are workless, the dot product of the torques against the constraints
with the joint velocities must be zero.
We also know that the velocity constraints have the form A theta-dot equals zero, so
therefore the constraint torques must be a linear combination of the rows of A, where
the k-vector of coefficients lambda is called a vector of Lagrange multipliers.
With this observation, we can rewrite our dynamics in this form.
Since the velocity constraints must be satisfied at all times, they can be expressed as constraints
on the acceleration.
These are now n-plus-k equations in n-plus-k variables, the k Lagrange multipliers and
either n joint accelerations or n joint torques, depending on whether we are solving the constrained
forward dynamics or the constrained inverse dynamics.
Skipping the derivation, which is given in the book, we can eliminate the k Lagrange
multipliers by defining an n-by-n projection matrix P of theta equal to the n-by-n identity
matrix minus A-transpose times the inverse of A M-inverse A-transpose times A M-inverse.
The rank of this n-by-n matrix is n-minus-k.
Using this projection matrix, we can define the constrained inverse dynamics, P times
tau equals P times M theta-double-dot plus h.
Since P is not invertible, we cannot premultiply both sides by P-inverse to get the unconstrained
inverse dynamics.
Instead, P projects the joint torques tau to the joint torques that move the robot,
eliminating the joint torques against the constraints that cause no motion of the robot.
To solve the inverse dynamics, we plug in the joint positions, velocities, and accelerations
on the right-hand side to calculate the joint torques that create the desired joint accelerations.
To this solution, we can add any joint torques of the form A-transpose lambda, which create
forces against the constraints and do not affect the motion of the robot.
This will be useful in Chapter 11 when we discuss hybrid motion-force control, where
we control the robot to achieve a desired motion in the unconstrained directions and
to achieve desired end-effector forces in the constrained directions.