WEBVTT

00:00.380 --> 00:08.300
The TF2 Library and Erdf model of our robot, where we define the reference frames and connected them

00:08.300 --> 00:13.770
through transformation matrices allowed us to solve the forward kinematics problem.

00:13.790 --> 00:19.370
In other words, they allowed us to know the position and the orientation of the robot's gripper at

00:19.370 --> 00:20.810
any given moment in time.

00:20.810 --> 00:24.770
Given the position and the angle of each joint of the robot.

00:25.640 --> 00:32.180
Now we are ready to face the opposite problem, which is defining the position and the orientation of

00:32.180 --> 00:36.230
the robot's gripper in space and calculating the joint angles.

00:36.260 --> 00:40.400
The motor position that brings the arm to the desired position.

00:40.880 --> 00:45.320
But first, let's recap why we need the inverse kinematics.

00:46.090 --> 00:46.600
Winning.

00:46.600 --> 00:53.020
One of the previous lessons we tried to grasp an object using only these sliders that move the joint

00:53.020 --> 00:53.770
separately.

00:53.800 --> 00:55.990
We encountered some difficulties.

00:56.110 --> 01:03.310
This was because we were trying to lower or raise the gripper or to move it to the right or to the left

01:03.340 --> 01:09.160
without actually having direct control over the gripper movements, but only of the movements of the

01:09.220 --> 01:10.270
robot's joints.

01:11.290 --> 01:18.430
Instead what we would like to do and what would be more intuitive and user friendly is to directly control

01:18.430 --> 01:23.350
the movement of the gripper without worrying about the values of each joint angle.

01:24.040 --> 01:27.460
However, we can't completely ignore these angles.

01:27.460 --> 01:32.590
We cannot overlook their existence because they represent the angle of the motor.

01:32.620 --> 01:35.950
The position commands that we need to send to the robot's motors.

01:36.780 --> 01:40.140
This is where the inverse kinematics comes into play.

01:40.260 --> 01:45.960
Since we would like to think in absolute terms of the position and the orientation of the gripper in

01:45.960 --> 01:51.780
space, but still we need to know the joint angles corresponding to a specific position and orientation

01:51.780 --> 01:52.680
of the robot.

01:52.800 --> 01:56.880
We need a mathematical tool that allows us to make this conversion.

01:57.030 --> 02:00.330
And this is precisely the inverse kinematics.

02:01.200 --> 02:07.500
The problem of the inverse kinematics is much more complex to solve because as you can see from this

02:07.500 --> 02:14.190
illustration taken from the book Robotics by Vico Siciliano, Villani and Oriolo, there can be multiple

02:14.190 --> 02:20.940
configurations, multiple joints combination that result in the robot's gripper being in the same position.

02:21.480 --> 02:28.230
We see how the robot's gripper so the end effector can be in the same position using four different

02:28.230 --> 02:33.060
configurations, namely four different combinations of the joint angles.

02:33.850 --> 02:40.450
While the problem of direct kinematics as a unique solution, the inverse kinematic problem may have

02:40.450 --> 02:44.130
multiple solution not unique and different from each other.

02:44.140 --> 02:49.330
In some cases, there may even be no configuration at all that satisfies the condition.

02:49.330 --> 02:52.900
Or also there might be infinite possible solutions.

02:53.600 --> 02:59.300
For this reason, at least regarding the inverse kinematics, we are not going to study the mathematics

02:59.300 --> 03:06.410
in detail, both because sometimes it is not possible to reach a unique solution and because often numerical

03:06.410 --> 03:11.860
techniques are used to solve the inverse kinematic problem instead of analytical ones.

03:11.870 --> 03:18.620
That is, algorithms that are used for optimization that recursively seek the best solution to an inverse

03:18.620 --> 03:19.850
kinematics problem.

03:20.450 --> 03:26.890
Again, the open source robotics community doesn't leave us alone in facing this problem.

03:26.900 --> 03:34.340
In Russia, there is a library, a software called Movie2, which provides us not only with solvers

03:34.340 --> 03:40.970
for inverse kinematics calculation, but also with a trajectory planning system for manipulator robots.

03:41.570 --> 03:48.440
Move it to, like all the open source libraries needs to be configured and needs to know the urdf model

03:48.440 --> 03:51.890
of the robot and a few other pieces of information.

03:52.460 --> 03:59.780
Then it is capable of solving the inverse kinematic problem for any robot manipulator with any architecture.

04:00.450 --> 04:06.330
Furthermore, it allows us to move the gripper into three dimensional space and automatically calculate

04:06.330 --> 04:12.690
the trajectory that each robot joint must follow to move the gripper from its initial position to the

04:12.690 --> 04:14.970
final one while avoiding obstacles.

04:16.290 --> 04:20.370
In the next lesson, we will configure moving shoe for our robot.

04:20.400 --> 04:23.250
Meaning for the Urdf model of our robot.

04:23.250 --> 04:30.030
And once configured we can use its interface to directly move the gripper in space and send actions

04:30.030 --> 04:31.590
directly to the gripper.
