An implementation of inverse kinematics, named Cyclic Coordinate Descent(CCD), for a 7-Dof robot arm (FRANKA EMIKA).
- Matlab
git clone https://github.com/HAOLI-TUKL/Robot_Arm_CCD.git
- enter the workspace
cd src
- run
run main.m
- Inverse kinematics basically determines position and orientation of end-effector given angles of each joint. Cyclic Coordinate Descent(CCD) is one of the methods to solve the problem effectively. In comparison with other inverse kinematics algorithm, such as Jacobian Inverse and Jacobian Transpose, CCD can take the joint limits into the consideration and is able to be robust to singularity.
- Iteration goes along joint by joint and adjust the angles based on the errors of the position and orientation. To be precise, the error of the position is easily defined while the error of the orientation is defined as angle-axis represetation.
- The adjustment of an iteration is shown as below and the end effector gets closer to the desired configuration after the ajustment. More adjustments would be applied until the errors are small enough.
The results for a 5-Dof and 7-Dof robot arm are shown below. Despite that the configurations of the results are not exactly same as that of the reference one, the position and orientation of the end effector are accurate placed as we expected after CCD.
Hao Li leochina2018@163.com
Tiehao Wang
Yihsuan Cheng
Kenwright B. Inverse kinematicscyclic coordinate descent (CCD)[J]. Journal of Graphics Tools, 2012, 16(4): 177-217.