What does ‘Inverse Kinematics’ mean?
Allowing for an over-simplification, ‘kinematics’ relates to the motion (position, velocity, and acceleration) of a geometric system. We talk about a robotic arm being a ‘kinematic chain’, or a series of joints linked together. A set of parameters (known as Denavit–Hartenberg parameters) fully defines the ‘kinematic chain’ of a robotic system.
Here are the DH parameters for the Reach Bravo for example:
Now, among the simplest ways to control a ‘kinematic chain’ (ok, let’s switch to using ‘robotic arm’ now…) is to tell each individual joint to go to a certain position or angle (remember, a robotic arm could have linear or revolute joints). Each ‘joint parameter’ combines to give the ‘end-effector’ of the robotic arm (the gripper or sensor being held) its final position and orientation. I can calculate this final position quite easily by using each joint angle or position and a little bit of trigonometry (OK, some fancy maths involved still). This is known as ‘forward kinematics’. It’s OK, and is what is used in real-time control methods like using a gamepad or master arm controller, to give a read-out, or 3D model update of the manipulator position.
But what about the other way around? As in, if I want to get the end-effector to a set position (X,Y,Z coordinate) with a certain orientation? Now I need to do ‘Inverse Kinematics’, where ‘Inverse’ more-or-less implies doing the calculation in reverse. Inverse Kinematics allows me to set the end-effector state, and then let the robotic manipulator work out where to move each joint in order to achieve that state. So for example, I might know the position of a door handle and want the manipulator grabber to go to that exact location. Inverse Kinematics solves for that scenario.
In recent years, the power of onboard computing has increased dramatically. This means that robotic manipulators, including the Reach manipulator arms, can calculate the Inverse Kinematic solution and do it quickly. As a result, control modes of manipulators have expanded to include real-time ‘Cartesian Control’.
What is ‘Cartesian Control’?
Cartesian Control is the ability to move a robotic manipulator arm, along linear cartesian axes. Or in simple terms, to move the robot arm forward, back, left, right, up, down in a straight line. Some robotic systems, namely ‘Cartesian coordinate robots’, are constrained to linear motion along defined axes. A good example of this is a CNC machine, or the claw game at your local arcade. For a more dexterous manipulator, that is predominately made up of revolute joints, this is less trivial and where Inverse Kinematics is absolutely required.
Where would ‘Cartesian Control’ and ‘Inverse Kinematics’ be useful?
Cartesian control means that I can more easily scan a tool or sensor along a surface than if I were to try to do so manually using traditional robot control methods (e.g. with a gamepad controller or master arm). In applications like Non-Destructive Testing (see more here), the ability to move a sensor along a pipe in a precise way is crucial.
In some high-end applications, both using underwater ROVs and land-based UGVs (think military EOD), the ability to place tooling in specific positions is important.
Kinematics allows for more advanced control including rotating an end-effector around a point in 3D space. This allows for things like opening a door hand or turning a valve.