Gabriela Bravo-Illanes

Robots control

During the classes "Introduction to Robotics" (CS223A) and "Advance Robotic Manipulation" (CS327A) I learned robotics modeling, dynamics and motion/force control (in joint and task space) of articulated robots. Topics included redundancy, simulation and robot cooperation.

Robots cooperation

One of the homeworks for "Advance Robotic Manipulation" was to create a control that allow 2 robots collaborate carrying an object, while following a trajectory. To solve this problem we used the "Virtual linkage model" (Kathib, 1993) which allow to compute the robot's grasping forces by using geometrical relationships and knowing total forces an moment applied to the object. Once we know robots grasping forces it is possible to control independently each robot using classical torque control \[\tau =J^T F +g \] Where \(\tau\) is a vector with the joint torques, \(J\) the Jacobian on the end effector of the robot, \(F\) the force computed using the virtual linkage model and \(g\) the torque needed to compensate the weight of the robot's links.
To follow a predefined trajectory with the object, the error in position was modeled as a potential field which minimum is in the goal position. The gradient of this potential field will be introduced as a force applied to the object (PD controller). \[F_{trajectory}=\ddot{x}_{des}-k_p(x-x_{des})-k_v(\dot{x}-\dot{x}_{des}) \] where \(\ddot{x},\dot{x},x\) are the acceleration, velocity and position of an object, and the underscore "des" correspond to the desired one needed to follow the trajectory.

Collision avoidance

One of the homework for "Advance Robotic Manipulation" was to create a control a robot to follow a trajectory while avoiding collision with an object and keeping a posture (elbow up). To create collision avoidance a repulsive force, inversely proportional to the distance of the object was modeled and applied on a point of the robot near to the object (Jacobian matrix computed on this point). If the object was to far away, it didn't produce any torque in the robot joints. To create the position control, since the priority was the object avoidance, this was modeled as a PD controller applied to the nullspace of the previous Jacobian matrix (if collision avoidance was activated). The position was performed in the task space as a PD controller. To maintain the posture, a joint position control (PD controller) was implemented in the nullspace of the previous cases. This way the torque on the joints \(\tau\) was computed as \[\tau= \tau_{c}+\tau_{t|c}+\tau_{p|t|c}+g\] where \(\tau_c\) is the torque required for object avoidance \[\tau_c= J_c^T \nabla U_c+J_c^T \Lambda_c(-k_{vc}J_c\dot{q})\] with \(J_c\) The Jacobian computed in the point on the robot nearest to the object, \(\nabla U_c\) the gradient of the repulsion field created around the object, \(\Lambda_c\) the "pseudo kinetic energy matric" (matrix that helps to map inertia effects of movements), \(\dot{q}\) joint speeds. (Note the term \(J_c^T \Lambda_c(-k_{vc}J_c\dot{q})\) is just adding damping to the joints to avoid fast movements) \(\tau_{t|c}\) is the torque needed to follow a trajectory, \[\tau_{t|c}=J_{t|c}^T\Lambda_{t|c}F_{motion}\] where \(J_{t|c}\) is the Jacobian on the end effector. In the case the collision avoidance is active will be the nullspace of \(J_c\) times the Jacobian at the end effector, and \(F_{motion}\) a force that ensures the trajectory tracking \[F_{motion}=-k_{p}(x-x_{des})-k_v(\dot{x}-dot{x}_{des})\] Finally, \(\tau_{p|t|c}\) is the torque that ensures the posture and is computed as \[\tau_{p|t|c}=N_c^T N_{t|c}^T (A(-k_p(q-q_{des}-k_v\dot{q})))\] where \(N_i\) is the nullspace of \(J_i\) and \(q\) is the robots joint configuration.