Kinematics
How to move a robot arm to a specific position.
A robot consists of actuators, motors that move to a specific position when given a command.
But how do we determine the exact commands needed to move the robot to a specific position in a 3D space?
Forward kinematics
Forward kinematics is the process of calculating the position and orientation of the end effector based on the given joint angles of the robot.
It can be represented as a function f that takes the joint angles q as input and returns the position of the end effector x,y, and z as well as its orientation, and .
For a simple one-joint robot, forward kinematics is straightforward and can be solved using trigonometry
For robots with multiple joints, we can use the Denavit-Hartenberg convention, a systematic way of representing link transformations. This allows us to determine the end effector’s position and orientation in a 3D coordinate system.
Inverse kinematics
Inverse kinematics is the process of determining the joint angles required to place the end effector at a desired position and orientation.
It can be thought of as the inverse of forward kinematics:
Inverse kinematics is essential for controlling the robot arm. It allows us to move the robot arm to a specific position and orientation in 3D space.
It is a more complex process, as it involves solving a system of equations to determine the joint angles of the robot.
- There may be multiple solutions (different joint configurations that reach the same end effector position).
- Some positions may be unreachable due to mechanical constraints.
- It often requires solving nonlinear equations, which may not have a direct solution.
To address these challenges, inverse kinematics is commonly solved as an optimization problem, minimizing the difference between the desired and actual end effector positions.
Learn more
Learn more about Inverse Kinematics
Moving a robot
Since we control the actuators themselves, we can move the robot arm to a specific position by sending the joint angles to the actuators. This involves:
-
Reading the current joint angles from the motors.
-
Solving the inverse kinematics problem iteratively to converge towards the desired joint angles.
-
Sending these joint angles to the actuators to move the robot to the desired position.
The junior dev kit offers two different movement commands:
- move/absolute: Move the robot arm to a specific position and orientation in 3D space.
- move/relative: Move the robot arm by a specific distance and rotation in 3D space.
Simulation
Simulations allow you to test movement models in virtual environments before applying them to a physical robot.
They replicate real-world physics while remaining computationally efficient.
Simulations are particularly useful for testing inverse kinematics, enabling safe and rapid iteration on motion planning before deploying on actual hardware.
Was this page helpful?