The goal of position control is to move the end effector of the robot to a precise position. To finish this task, we use Task Space PD Controller. This controller is composed of PD control along with friction compensation to minimize the errors.
Since friction compensation is related to the angular velocity of the joint, a set of coefficients are experimentally found to model the friction. Adding the friction part to the final torque output can counter the friction on the joint, which can minimize the error without the Integral controller. For a position in the world frame, the inverse kinematic equation transfers the position in the DH frame, as a group of angles at each joint. These joints form the Jacobian of the robot which transfers the position information to torque at each joint.
The final torque is composed of two parts, the active part i.e. the PD control so that the robot can move to the desired position precisely and quickly. The friction part is only related to the angular velocity of each joint and it minimizes the error.
The impedance control allows the end effector of the robot to be compliant in one or more user defined directions. To realize it, the K_p and K_d gains of one direction in the Task Space PD controller are decreased. Decreasing the value of the
K_d of a particular direction and using the transpose of the previous rotational matrix to gives the final
K_d gains needed.
In this project, the Peg in a hole and Zigzag Groove task require compliance in specific directions such that the end effector can move through the course with ease. For the Zigzag Groove, the path direction is fixed and the direction perpendicular to the arm direction is compliant so that this end-effector can pass the corners smoothly. The torques are defined as follows –
The complete trajectory is ordered as a C structure with waypoints, compliance directions, gains and velocity for each point along the trajectory. These waypoints are connected via a degree 3 polynomial.
- The code for this project can be found at https://github.com/karanchawla/TheDumbRobotArm
- This project was done as part of ME446 final course project.