A mobile manipulator consists of a mobile base outfitted with one or more robot arms, such as this omnidirectional base with a 5-joint arm. To control the motion of the end-effector, we can control both the wheels and the arm joints. Since the arm motion is typically more precise than the motion of the base, a common way to control a mobile manipulator is to drive the mobile base to some location, park it, and then use the robot arm for high-precision manipulation. In some cases, though, we need to coordinate the simultaneous control of the wheels and the joints. As an example, if we want to control the full 6-dimensional twist of this robot's end-effector, we have to use the wheels and joints together, since the arm has only 5 degrees of freedom. In this final video of Chapter 13, we focus on coordinated control of the mobile base and the robot arm. In this animation, the robot's end-effector tracks a pre-planned trajectory in SE(3). In the animation below, the robot starts with some error in the configuration of the end-effector, but the feedback controller quickly brings it back to the pre-planned trajectory. At the end of the motion, note that the mobile bases are at different configurations, but the purpose of the controller is only to track the planned end-effector trajectory. Let's watch the desired trajectory and the feedback-controlled trajectory one more time. The final end-effector configurations are identical. To derive this controller, we need the Jacobian mapping the wheel and joint speeds to the twist of the end-effector. To derive this Jacobian, let's first define the frames we'll use. We assume a space frame {s} and 3 frames attached to the mobile manipulator: {b} is the reference frame of the mobile base, {zero} is at the base of the robot arm, and {e} is at the end-effector. It's possible to define the {b} and {zero} frames to be the same, but I'm separating them for generality. The end-effector's configuration in the space frame can be written X of q and theta, or T_se of q and theta. q is the configuration of the mobile base and theta is the arm configuration. This transformation is obtained by multiplying T_sb of q, the constant offset T_b-zero, and T_zero-e of theta, the end-effector frame relative to the {zero} frame. T_sb can be written as a function of the chassis configuration q equals phi, x, y, and z is the constant height of the frame. T_zero-e is determined by the forward kinematics of the arm. With these definitions, the end-effector twist V_e, expressed in the end-effector frame, is the Jacobian J_e of theta times the vector of wheel speeds u and joint velocities theta-dot. There are m wheel speeds and n joint velocities, so J_e is a 6-by-m-plus-n matrix. The J_e matrix can be decomposed into the 6-by-m matrix J_base and the 6-by-n matrix J_arm. J_arm is the same as the body Jacobian J_b, so the only new thing we need to derive is J_base. Note that J_e only depends on the joint configuration theta, not the chassis configuration q, since the end-effector twist expressed in the end-effector frame is independent of the chassis' position and orientation. To derive J_base, we write the planar twist of the chassis, expressed in the chassis frame, as V_b equals F times u, where F is the 3-by-m transformation discussed in earlier videos. By adding rows of zeros above and below, we create the 6-by-m matrix F_6 satisfying V_b6 equals F_6 times u, where V_b6 is the six-dimensional chassis twist expressed in the chassis frame. To express this twist in the end-effector frame, we premultiply it by the Adjoint matrix of T_eb. We can expand this transform to be T_e-zero times T_zero-b, and then write V_b6 as F_6 u. Then J_base is just the Adjoint matrix times F_6. Now that we have the full mobile manipulator Jacobian J_e, we can choose the task-space feedforward plus PI controller from Chapter 11. Remember that X_err is the twist, expressed in the end-effector frame, that takes the actual end-effector configuration to the desired configuration in unit time. Once we've calculated the commanded twist V, expressed in the end-effector frame, the wheel and joint velocities are calculated using the pseudoinverse of J_e. As an example, consider a planar mobile manipulator with a diff-drive mobile base and a robot arm with a single revolute joint. The desired path for the end-effector is a semicircle, and the end-effector has a large initial error. The path is specified by three variables, and the robot has three controls, one for each wheel and one for the arm joint. So the robot in this example is not redundant for the task of trajectory following, as it was for the example at the beginning of this video. The task-space feedforward plus PI controller drives the robot along the path shown here. The end-effector error converges to zero after a small overshoot, due to the choice of the integral gain. We used the same control law for the robot with four wheel speeds and five joint speeds at the beginning of this video. So that's it for Chapter 13, and the book! Congratulations on making it this far! You should now have a firm foundation for the practice of robotics, or for advanced study in robot motion planning, control, and manipulation. Now go do something great.