Program inverse kinematics algorithms with MATLAB

Kinematics is the study of motion without considering the cause of the motion, such as forces and torques. Inverse kinematics is a method that helps define the motion of a robot to reach a desired location. For example, to perform a surgical task, a robotic arm used in a medical surgery needs precise motion from an initial location to a desired location.

Robot kinematics involves deriving equations to describe an analytical relationship between the robot’s joint parameters and the tip or end-effector. There are two ways to derive the equations of motion:

• Forward kinematics. Given the joint angle values, forward kinematics equations calculate the robot’s end-effector location in the coordinate space.
• Inverse kinematics. Given the robot’s end-effector location, inverse kinematics equations calculate the joint angles required to move the end-effector to that location.

Illustration showing a two-link robot arm with a desired end effector location and the angles θ1 and θ2.

Once the robot’s joint angles are calculated using the inverse kinematics equations, a motion profile can be generated using the Jacobian matrix to move the end-effector from the initial to the final location. The Jacobian matrix helps to define a relationship between the robot’s joint parameters and the end-effector velocities.

Using MATLAB® and Symbolic Math Toolbox™, you can:

• Define the robot’s end-effector location and joint parameters symbolically as sine and cosine functions
• Solve inverse kinematics equations for the joint angles and generate motion profiles
• Compute the system Jacobian as a symbolic expression to obtain the relationship between the joints and robot’s velocities
• Convert the derived expressions into MATLAB function blocks and create a Simulink® or Simscape™ model to simulate the robot
• Generate equivalent C code to incorporate with other applications

For more information, see MATLAB and Symbolic Math Toolbox.

See also: Symbolic Math Toolbox, robot programming, rotation matrix, integral, Arduino programming with MATLAB and Simulink, Arduino Engineering Kit