WEBVTT

00:00.560 --> 00:05.390
To create the XML model of the robot following the Urdf format.

00:05.420 --> 00:11.000
Let's start by creating a new Ros two package inside our Arduino bot workspace.

00:11.510 --> 00:15.560
So let's go within the workspace and within the source folder.

00:15.560 --> 00:22.880
And here we have already created the Arduino bot Pi examples package and the Arduino bot CP examples

00:22.880 --> 00:23.570
package.

00:23.660 --> 00:33.020
So to add a new package to this folder, let's use again the command Ros2 package create followed by

00:33.020 --> 00:36.500
the build type that we want to use for creating this package.

00:36.500 --> 00:42.740
And since we won't be including any Python or Cplusplus code in this package, let's use the default

00:42.740 --> 00:44.270
Ros to build type.

00:44.630 --> 00:49.700
So as build type, let's use the amend cmake.

00:49.730 --> 00:51.770
That is the default one for Ros two.

00:52.100 --> 00:58.520
And then we also need to assign a name to this package which we can call Arduino bot.

00:59.840 --> 01:05.210
This option and let's press enter to create also this package here.

01:05.210 --> 01:10.400
So in the Arduino bot description package, we are going to include all the components related to the

01:10.400 --> 01:17.150
Urdf model of our robot and we are not going to develop a so to insert any cplusplus or Python code

01:17.180 --> 01:20.180
within this package, but only XML files.

01:20.750 --> 01:25.430
So let's go back to the workspace now and let's build it again.

01:27.040 --> 01:31.270
So that also the new package, as we can see here, is compiled.

01:31.270 --> 01:33.220
And now it's available in Ros two.

01:35.140 --> 01:40.360
Now let's move on to the fun part in which we are going to develop the urdf model of our robot.

01:40.480 --> 01:46.420
So in the Arduino bot description package that we have just created, let's create a new folder.

01:46.420 --> 01:54.220
So this one called Urdf, and this folder will contain the XML file with the robots model.

01:54.220 --> 01:56.800
So the robot's link and the robot's joint.

01:56.950 --> 01:59.740
And so let's create a new file within this folder.

01:59.740 --> 02:06.490
And this is called Arduino bot dot Urdf dot Acro.

02:06.730 --> 02:14.110
And as you can see, this is not a regular urdf file, but this is a acro file and this is a format.

02:14.110 --> 02:22.270
So the acro format extends the urdf format and allows us to do more advanced things with our robots

02:22.420 --> 02:23.500
XML tags.

02:24.120 --> 02:30.060
Then before starting implementing the model of our robot still within the Arduino board description

02:30.060 --> 02:32.310
package, let's create another folder.

02:32.310 --> 02:35.760
And this one is called Meshes.

02:36.060 --> 02:40.770
So let's create this folder and this will contain the 3D models.

02:40.770 --> 02:46.860
So the 3D CAD of our robot, which we are going to use for the visualization and the simulation of our

02:46.860 --> 02:47.490
robot.

02:47.880 --> 02:51.540
So let's download the attached archive to this lesson.

02:51.540 --> 03:00.630
So the file Arduino board meshes and let's extract its content and then let's copy all the content.

03:00.630 --> 03:09.150
So all the STL files that are in this folder, let's copy this one and let's paste them within the Arduino

03:09.150 --> 03:15.210
bot workspace, the source folder and within the Arduino board description and within the meshes folder

03:15.210 --> 03:16.680
that we have just created.

03:16.680 --> 03:20.880
So let's paste all the 3D models of the robot within this folder.

03:20.880 --> 03:22.680
So within the meshes folder.

03:23.100 --> 03:31.330
Now back in our model, so back in the Arduino board dot Urdf file, let's start by declaring that this

03:31.330 --> 03:32.980
is an XML model.

03:33.130 --> 03:41.920
So let's declare that this is an XML model and also let's say which version of XML we are using.

03:41.920 --> 03:46.690
So the version is the 1.0.

03:47.460 --> 03:53.400
As we learned in the theoretical lessons, when we create a new RDF model of a robot, we need to use

03:53.400 --> 03:58.260
the tag robot, which then contains all the other components of the robot.

03:58.710 --> 04:06.210
An XML tag can be seen as a container in which we can nest other containers, so in which you can declare

04:06.210 --> 04:11.730
other properties related to the tag itself, or also in which you can insert other components of the

04:11.730 --> 04:18.990
robot attack starts with the angular bracket and then followed by the name of the tag that in this case

04:18.990 --> 04:20.730
is robot.

04:20.730 --> 04:24.630
And then it's still closed by another angular bracket.

04:24.630 --> 04:31.080
And now, as we can see, thanks to the XML extension for Visual Studio code that we installed in one

04:31.080 --> 04:34.650
of the first lessons, the tag is also automatically closed.

04:34.650 --> 04:36.390
And so we can see that here.

04:36.390 --> 04:37.860
This one is our container.

04:37.860 --> 04:44.670
So the robot container and this is the opening tag and this is the closing tag of our container that

04:44.670 --> 04:48.820
was automatically inserted by the visual Studio code extension.

04:49.730 --> 04:51.350
Now between these two tags.

04:51.350 --> 04:56.520
So between the opening and the closing tags, we are going to insert all the components of the robot.

04:56.540 --> 05:04.100
So let's start by giving the robot a name and let's call it Arduino bot.

05:04.100 --> 05:11.210
And then since this is a sacral model, so since we are using the sacral format and not plain urdf,

05:11.240 --> 05:17.890
we also need to indicate where the definition of this format is located with the command x, m, l,

05:17.990 --> 05:21.470
n s and then sacral.

05:22.460 --> 05:35.300
And this is in the http ww w ross.org and then in the wiki and then sacral.

05:36.220 --> 05:40.150
Let's start by adding the very first link to our robot.

05:40.450 --> 05:46.830
So let's use a tag link which we can close in the same line by using the forward slash.

05:46.840 --> 05:50.590
So this tag link will be opened and closed within the same line.

05:50.920 --> 05:54.240
And let's call this one word.

05:54.550 --> 05:59.860
Since we are not going to assign any other properties to this link, we can directly close this link

05:59.860 --> 06:01.150
within the same line.

06:01.150 --> 06:04.120
So that's why we use the forward slash.

06:04.390 --> 06:11.110
Actually, this first link of the model doesn't belong to the robot yet, but will only serve to anchor

06:11.110 --> 06:14.110
the manipulator to the word reference frame.

06:14.500 --> 06:20.710
This link then is the parent of all the other links that compose the robot, and we will also be the

06:20.710 --> 06:24.400
interface link between the robot and the external world.

06:24.790 --> 06:26.890
Now let's add another link.

06:26.890 --> 06:29.650
That is the very first link of the robot.

06:29.740 --> 06:36.130
Now we can open and close this link in two separate lines since we are going to insert some attributes

06:36.230 --> 06:37.250
to this link.

06:37.490 --> 06:44.000
And so let's name this link, this time the base link.

06:44.270 --> 06:50.780
And now we can associate a mesh with this link that defines how we want this component to be rendered.

06:50.780 --> 06:52.400
So to be visualized.

06:52.610 --> 06:56.000
In order to do so, we can use the tag visual.

06:56.000 --> 07:03.410
So within the tag link we can use the tag visual and then within this tag we can use a geometry.

07:03.410 --> 07:04.940
So we want to display a geometry.

07:04.940 --> 07:09.260
And this geometry is defined within a mesh.

07:10.460 --> 07:22.370
And the mesh that we want to render for the base link is in the package Arduino but description and

07:22.370 --> 07:24.880
within the meshes folder.

07:24.890 --> 07:31.730
So within this folder here that we created and in which we inserted all the STL file of our robot.

07:31.880 --> 07:38.170
For this first link, we want to display the basement dot STL file.

07:38.980 --> 07:46.420
Now since this file, this mesh is quite large, let's scale its resolution equally in all the directions.

07:46.450 --> 07:49.300
Using the property scale.

07:49.360 --> 07:57.010
And so let's set it to 0.010.01 and 0.01 in all direction.

07:57.490 --> 08:00.940
Then we also need to specify the origin of this mesh.

08:00.940 --> 08:04.810
So the origin of this mesh with respect to the base link.

08:04.810 --> 08:11.530
So where this mesh is located and how this mesh is oriented with the respect of the base link.

08:11.770 --> 08:16.960
So still within the visual tag, let's use another tag that is called origin.

08:17.140 --> 08:23.680
And this origin tag has two properties that are r.p that defines the orientation.

08:23.770 --> 08:28.780
And then there is X, Y, Z that instead defines the position.

08:29.590 --> 08:35.800
As I mentioned, these values express the placement and the orientation of the mesh relative to the

08:35.800 --> 08:36.730
link It belongs.

08:36.730 --> 08:38.680
So in this case to the base link.

08:38.800 --> 08:42.220
And these values depend on how the mesh was generated.

08:42.220 --> 08:48.790
And typically they are obtained by trying different values and also observing how the mesh moves relative

08:48.790 --> 08:51.970
to the link until we are satisfied about the result.

08:52.000 --> 08:59.620
For the moment, let's set all of this to zero and then we are going to visualize this model with these

08:59.620 --> 09:04.270
values set to zero and we are going to see if the mesh renders properly.

09:04.270 --> 09:10.540
So if the mesh renders in the proper position and orientation that we desire in order to simulate and

09:10.540 --> 09:12.070
visualize them correctly.

09:12.740 --> 09:18.170
But before doing so, but before starting visualizing our robot, let's connect.

09:18.170 --> 09:23.180
So let's add a joint that connects the two links that we have just created.

09:23.330 --> 09:29.060
So this is done with a tag joint and let's give it a name.

09:30.110 --> 09:37.400
So the name of the joint is the virtual joint, as this is not a proper joint.

09:37.400 --> 09:44.360
So as this joint doesn't belong properly to the robot, but just serve to attach the robot to the world.

09:44.360 --> 09:48.740
So to attach the first link of the robot that is the base link to the world.

09:49.040 --> 09:51.410
So the parent of this joint.

09:54.160 --> 09:56.590
Is the link named.

09:58.360 --> 10:02.140
World and the child of this joint.

10:02.140 --> 10:09.190
So of this connection is the link that we called base link.

10:09.730 --> 10:11.830
This connection is fixed.

10:11.830 --> 10:17.020
So basically the base link cannot move with the respect to the world.

10:17.140 --> 10:22.630
And so we can set the type of this joint to be fixed.

10:22.630 --> 10:24.550
And so this means that the base link.

10:24.580 --> 10:29.920
Cannot move, cannot rotate or translate with respect to the frame world.

10:30.340 --> 10:31.910
Also, we need to indicate.

10:31.930 --> 10:38.530
How these two links are connected to each other so their relative position and orientation again.

10:39.520 --> 10:41.230
With the tag origin.

10:41.230 --> 10:45.670
And in this case, let's set the r p so the orientation to zero.

10:45.790 --> 10:49.180
And this means that the base link and the world link.

10:49.210 --> 10:50.590
Are oriented the same way.

10:50.800 --> 10:55.360
And also let's set the X, y, z property to zero.

10:55.360 --> 10:59.330
And this means that also these two links have the same center.

10:59.330 --> 11:05.930
So the base link is exactly oriented and positioned the same as the world frame.

11:06.750 --> 11:09.690
This two despite having the same name.

11:09.690 --> 11:13.890
So the origin tag here, they have a completely different meaning.

11:14.040 --> 11:18.720
In fact, as I said, this one is needed in order to attach.

11:18.720 --> 11:25.050
So in order to express the transformation matrix between the base link and the word link.

11:25.050 --> 11:27.360
So between these two reference frames.

11:27.360 --> 11:32.130
And so we can see that here the transformation matrix is zero among these two links.

11:32.130 --> 11:38.070
Instead, these are their tag origin is useful in order to render properly the mesh.

11:38.070 --> 11:46.200
So in order to set the orientation and the position of this mesh so of the basements with respect to

11:46.200 --> 11:47.280
the base link.

11:47.280 --> 11:51.270
And so this is just used for visualization and simulation.

11:52.150 --> 11:58.120
And now let's already visualize our robot in order to see the two links that we have created and how

11:58.120 --> 11:59.650
they are connected to each other.

11:59.650 --> 12:05.740
And also in order to customize these variables here, in order to render properly the RDF model.

12:05.740 --> 12:07.330
And so these mesh here.

12:07.570 --> 12:15.400
To do so, we first need to install the meshes folder and also the Urdf folder.

12:15.400 --> 12:21.040
So we need to install these two folder in Ros two so that they are recognized within our package.

12:21.810 --> 12:22.170
To do.

12:22.170 --> 12:25.650
So let's go to the Cmakelists.txt file.

12:25.650 --> 12:32.670
And here let's delete all the commented rows in order to have a more readable file.

12:34.020 --> 12:34.770
Okay.

12:34.770 --> 12:46.860
And now here, let's add an install instruction and we want to install the directory that is called.

12:48.940 --> 12:53.190
Meshes and also the directory that is called Urdf.

12:53.200 --> 12:59.290
So we want to install basically this folder and also this folder so that when we do the build of our

12:59.290 --> 13:06.430
package, these two folders are recognized by Ros2 and so we can use its content and we want to install

13:06.430 --> 13:07.060
this one.

13:07.060 --> 13:15.670
So the destination is the shared folder and within the shared folder we want to install in the sub folder

13:15.670 --> 13:17.440
that has the same name of the package.

13:17.440 --> 13:27.910
So Arduino bot description and we can access to this folder by using also the variable project project

13:29.350 --> 13:29.590
name.

13:29.920 --> 13:34.180
So basically this will contain the string arduino bot description.

13:34.970 --> 13:38.910
Now let's save this file and let's build our workspace.

13:38.930 --> 13:42.140
In order to start visualizing our urdf model.

13:42.440 --> 13:49.100
So in our new terminal, let's go to the workspace and let's start by building it.

13:50.060 --> 13:54.530
Now the build is complete so we can open a new window of the terminal.

13:55.150 --> 13:57.930
And here we can start by sourcing the workspace.

13:57.940 --> 14:00.790
So the file setup dot bash.

14:00.940 --> 14:07.180
And now in order to display our Urdf model, we are going to use a library that is available in Ros

14:07.180 --> 14:09.940
two and that is called Urdf tutorial.

14:09.970 --> 14:12.430
So let's start by installing this library.

14:12.640 --> 14:19.000
So with apt get install and then we want to install the package.

14:19.030 --> 14:22.150
Then the Ross version that in my case is.

14:23.560 --> 14:25.630
And then also the name of the package.

14:25.630 --> 14:29.620
That is the Urdf tutorial package.

14:29.620 --> 14:33.130
So let's press enter to install this package.

14:33.130 --> 14:38.680
And then now, as you can see in my case, I already have it, so I can already start using it.

14:39.280 --> 14:41.620
Now to display our Erdf model.

14:41.620 --> 14:48.100
So the Erdf model of our robot in RVs, we need to execute a command that we haven't encountered so

14:48.100 --> 14:52.780
far and also some files, some Ros, two files that we haven't encountered so far.

14:52.780 --> 14:58.090
So don't worry if you don't know these command yet, it will be clear in the following lessons.

14:58.240 --> 15:05.710
So the command that we are going to use to visualize our Erdf model is Ros two launch, and then from

15:05.710 --> 15:13.810
the Erdf tutorial package that we have just created, let's start the display dot launch.

15:13.900 --> 15:20.020
And then to this one we need to pass the full directory of our Erdf model that we want to visualize.

15:20.020 --> 15:27.580
So in my case this is in the OLM and then in the Workspace Arduino Bot workspace in the source folder,

15:27.850 --> 15:37.090
then in the Arduino bot description in the Erdf folder, and I want to render the Arduino bot Erdf exact.

15:37.870 --> 15:45.350
So let's press enter and this will open the visualization of the robot model.

15:45.350 --> 15:50.770
So here we can see that we have our robot model and also we can see the frames.

15:50.780 --> 15:56.690
So we can already see the base link and the word that are basically here.

15:56.720 --> 16:01.910
Those are overlapped and so we can see just one, but there are two actually.

16:02.590 --> 16:06.700
Now we can see that, for example, the mesh is not rendered properly.

16:06.700 --> 16:13.510
And with this I mean that the center so the reference frame base link is not properly centered with

16:13.510 --> 16:14.320
the base.

16:14.320 --> 16:20.890
And so we need to change a little bit our model of the robot and specifically we need to modify this

16:20.890 --> 16:21.460
one here.

16:21.460 --> 16:25.450
So this tag here in order to match the mesh of the robot.

16:25.450 --> 16:28.570
So this one that is the base of the robot with this frame.

16:28.570 --> 16:36.310
So with the center of this frame, I have already tested some values and the ones that are working are

16:37.090 --> 16:38.830
-0.5.

16:38.830 --> 16:48.130
So let's translate along the x axis, about -0.5 and also about -0.5 along the Y axis.

16:48.130 --> 16:50.350
So let's save this again.

16:50.650 --> 16:53.860
And now let's interrupt the visualization.

16:54.790 --> 17:00.190
Let's build again the workspace and let's restart the visualization.

17:00.460 --> 17:05.300
And now we can see that the mesh is perfectly centered.

17:05.300 --> 17:09.620
So this is the meaning of changing this parameter here.

17:09.620 --> 17:11.180
So the origin here.

17:11.420 --> 17:16.580
And so this will change the position of the mesh relative to the link it belongs to.

17:16.910 --> 17:23.480
Now let's close the visualization and let's continue adding new links and new joints to the robot.

17:23.870 --> 17:29.090
So let's start by adding a new link and let's call this one.

17:29.090 --> 17:33.500
So the name of this link is the base plate.

17:34.100 --> 17:37.160
And also to this one, let's attach a mesh.

17:37.580 --> 17:46.310
So again, let's use the visual tag and within it let's use the geometry tag.

17:46.310 --> 17:50.360
And within this geometry tag we want to visualize a mesh.

17:51.200 --> 17:56.870
And this time the mesh that we want to visualize is still in the package.

17:59.150 --> 18:04.190
Arduino But description within the Meshes folder.

18:04.190 --> 18:09.080
And now we want to visualize the mesh that is called base plates.

18:09.470 --> 18:21.080
So this one base plate dot STL, and also in this case, let's scale it so by 0.01 in all the directions

18:21.080 --> 18:23.300
since this mesh is quite large.

18:23.690 --> 18:30.380
Also let's specify the origin of this mesh by adding the tag origin within the tag visual.

18:30.380 --> 18:35.870
And so we need to specify the orientation of the mesh so r pi and its translation.

18:35.870 --> 18:37.640
So x, y, z.

18:37.640 --> 18:44.360
And this is specify how the mesh is positioned and oriented with respect to the base plate.

18:44.360 --> 18:50.960
So this frame here, let's set the Pi to zero and instead the x, y, z.

18:50.960 --> 19:01.490
I tried several values and the ones that are working better are -0.39 -0.39 and -0.56.

19:01.490 --> 19:08.600
So these are the values that render the base plates in the correct position of the robot.

19:09.110 --> 19:11.480
Now let's continue by adding a new joint.

19:11.990 --> 19:15.800
So let's add a new joint and let's call this one.

19:16.130 --> 19:23.840
So the name of this joint is joint one and this connects the parent link.

19:24.080 --> 19:27.620
So the link that is the previous one.

19:27.620 --> 19:28.880
So the base link.

19:30.300 --> 19:32.230
To the new one that we have created.

19:32.250 --> 19:40.350
So the child in this case the child link, is the one that we have just created, and that is called

19:40.350 --> 19:41.640
base plate.

19:42.730 --> 19:44.920
Now if for this connection.

19:44.920 --> 19:50.530
So for this link, we used the type fixed as we did for the previous joint.

19:50.560 --> 19:56.890
This means that we are implementing a static connection between the base link and the base plate, and

19:56.890 --> 20:03.250
this means that the base plate cannot move, cannot rotate or translate with respect to the base link.

20:03.400 --> 20:07.120
But this is not the case, in fact, for our robot.

20:07.150 --> 20:10.810
The base plate is the rotating base of the robot.

20:10.810 --> 20:15.700
So the first joint that is already actuated by a motors for our robot.

20:15.850 --> 20:22.960
So in order to implement this, let's set the type of this connection to be revolute.

20:22.960 --> 20:29.530
And this means that the base plate can rotate with the respect to the base link so to its parent.

20:30.300 --> 20:36.360
And now since we are using a movable joint, so a joint that can rotate, let's also indicate which

20:36.360 --> 20:38.100
is the rotation axis.

20:38.550 --> 20:46.580
So here let's set the property axis and this as X, y, z.

20:46.590 --> 20:51.450
So we need to set the X, y, z, and we need to set which is the rotation axis.

20:51.450 --> 20:54.420
And in this case it is the Z axis.

20:54.420 --> 20:58.770
So let's indicate this one by setting 001.

20:58.770 --> 21:05.850
And so this indicates that the rotation axis that the base plate can use for rotate along the base link

21:05.880 --> 21:07.410
is the Z axis.

21:08.360 --> 21:12.140
Finally, we also need to indicate the origin of this connection.

21:13.430 --> 21:19.190
And so we need to indicate which is the transformation matrix that connects these two frames.

21:19.190 --> 21:24.410
So the transformation matrix that connects the base link to the base plate.

21:24.710 --> 21:34.910
So let's set the properties R, P and the property X, Y, Z, and these express the rotation and these

21:34.910 --> 21:37.160
instead express the orientation.

21:37.870 --> 21:44.290
Now we can take these values from the CAD model of our robot, and here we can see that the base plate

21:44.320 --> 21:52.600
link is oriented the same way as the base link, so we can set the Rpy property to zero since they are

21:52.600 --> 21:53.800
oriented the same way.

21:53.950 --> 22:02.180
Also still from the CAD model, we can see that the base plate is translated along the Z axis by three

22:02.180 --> 22:02.890
centimeters.

22:03.070 --> 22:10.240
And so let's set the X, y, z to be zero zero and 0.307.

22:11.050 --> 22:14.950
Now since this joint one here, it's a movable joint.

22:14.950 --> 22:20.150
So a joint that allows the rotation of the two links that are connected between each other.

22:20.170 --> 22:24.220
We need also to specify which are the limits of this rotation.

22:24.220 --> 22:27.250
And this is done with the tag limit.

22:27.700 --> 22:31.660
So here we need to specify the minimum and the maximum angle.

22:31.660 --> 22:37.900
So the lower angle of rotation and the upper angle of rotation.

22:37.900 --> 22:41.020
And also we need to specify the maximum force.

22:41.320 --> 22:47.500
So the maximum effort and also the maximum velocity.

22:48.400 --> 22:54.250
Now since we are going to use the same actuators, so the same motors for all the movable joints of

22:54.250 --> 22:58.920
our robotic arm, basically their mechanical and kinematic limits will be the same.

22:58.930 --> 23:05.320
And so in order to avoid hard coding all these values for each joint of our Erdf model, we can use

23:05.320 --> 23:12.340
one of the amazing features provided by the Acro format, which is the ability to create some variables

23:12.340 --> 23:19.180
also known as properties in the Acro format that function the same way as the variables in any other

23:19.180 --> 23:20.500
programming language.

23:20.770 --> 23:23.370
So we can start by defining a new property.

23:23.380 --> 23:26.380
Let's go at the beginning of our robot tag.

23:26.470 --> 23:29.980
And so let's create a new variable, a new Sakura

23:32.350 --> 23:45.940
property, and for example, let's name this one Pi, and this will contain the value 3.14 159.

23:45.940 --> 23:48.440
So it will contain this number here.

23:48.440 --> 23:55.190
And so from now on in the urdf model of our robot, whenever we want to use this value here, instead

23:55.190 --> 23:59.810
of retyping all these value here, we can just use the variable pi.

24:00.720 --> 24:01.700
Now the same way.

24:01.710 --> 24:05.220
Let's create other two properties, so other two variables.

24:05.220 --> 24:09.330
So let's copy this one and let's paste it two more times.

24:09.510 --> 24:12.360
And these are the effort.

24:13.500 --> 24:25.650
And the velocity and let's set them respectively to 30.0 and to 10.0.

24:26.010 --> 24:32.550
Now we can start using these properties to set the limits So the rotation, the effort and the velocity

24:32.550 --> 24:34.380
limits for the joint one.

24:34.620 --> 24:36.750
So let's set that the joint one.

24:36.750 --> 24:42.240
So the minimum angle that the joint one can reach is -90 degrees.

24:42.240 --> 24:47.910
So minus in radians is pi divided by two.

24:48.770 --> 24:53.150
And also the maximum angle that it can reach is plus 90 degrees.

24:53.150 --> 24:58.610
So in radians it is pi divided by two.

24:58.640 --> 25:02.540
So this is the way in which we can use exact property.

25:02.570 --> 25:05.120
So a variable in the exact model.

25:06.440 --> 25:09.470
Also, let's do the same for the effort.

25:10.010 --> 25:13.960
So here, let's use the effort variable.

25:13.970 --> 25:20.780
And here for the velocity, let's use the velocity variable.

25:22.250 --> 25:27.080
Now we can save this model and let's visualize it one more time.

25:27.080 --> 25:29.450
So let's open again the terminal.

25:29.930 --> 25:37.040
Let's build our workspace and let's use the same mysterious command we have been using so far in order

25:37.040 --> 25:38.600
to visualize our robot.

25:38.900 --> 25:43.040
And so now we can see that it is composed of two meshes.

25:43.340 --> 25:47.990
So there are two links here that are the world and the base link.

25:47.990 --> 25:52.250
And then we have another frame here, and this is the base plate.

25:52.250 --> 25:55.130
And these two links are attached to each other.

25:55.130 --> 26:02.330
And also we can see that by using this slider that was also automatically launched, we can also move

26:02.510 --> 26:03.980
the base plate.

26:03.980 --> 26:09.980
And so we can rotate actually the base plate with the respect to the base link, we can see how the

26:09.980 --> 26:12.530
base plate frame is rotating.

26:12.530 --> 26:18.560
So this frame here is rotating with the previous one that instead is fixed.

26:18.950 --> 26:21.110
So this is the rotation.

26:21.110 --> 26:24.390
And also we can see the limits of this rotation.

26:24.390 --> 26:31.860
So it goes from 1.57, so 90 degrees to -1.57 radians.

26:31.860 --> 26:33.780
So -90 degrees.
