WEBVTT 00:00:00.000 --> 00:00:14.700 (music) >> This presentation is delivered by the Stanford 00:00:14.720 --> 00:00:24.470 Center for Professional Development. 00:00:24.490 --> 00:00:27.110 >> Okay, let's get started. 00:00:27.130 --> 00:00:29.790 Welcome to Intro to Robotics, 2008. 00:00:29.810 --> 00:00:34.210 Well, Happy New Year to everyone. 00:00:34.230 --> 00:00:40.250 So in Introduction to Robotics, we are going to really cover 00:00:40.270 --> 00:00:44.880 the foundations of robotics--that is, we are going to look 00:00:44.900 --> 00:00:48.879 at mathematical models that represents 00:00:48.900 --> 00:00:51.890 [sic] robotic systems in many different ways. 00:00:51.910 --> 00:00:56.599 And in fact, you just saw those in class. 00:00:56.620 --> 00:00:57.620 You saw a 00:00:57.620 --> 00:01:03.610 [sic] assimilation of a humanoid robotic system that we are 00:01:03.630 --> 00:01:05.400 controlling at the same time. 00:01:05.420 --> 00:01:09.550 And if you think about a model that you are going to use for 00:01:09.570 --> 00:01:12.820 the assimilation, you need really to represent the 00:01:12.840 --> 00:01:14.400 kinematics of the system. 00:01:14.420 --> 00:01:19.520 You need also to be able to actuate the system by going to 00:01:19.540 --> 00:01:23.410 the motors and finding the right torques to make the robot 00:01:23.430 --> 00:01:24.430 move. 00:01:24.430 --> 00:01:27.030 So let's go back to this-- 00:01:27.050 --> 00:01:30.660 I think it is quite interesting. 00:01:30.680 --> 00:01:36.320 So here's a robot you would like to control. 00:01:36.340 --> 00:01:42.480 And the question is: How can we really come up with a way of 00:01:42.500 --> 00:01:46.080 controlling the hands to move from one location to another? 00:01:46.100 --> 00:01:50.390 And if you think about this problem, there are many 00:01:50.410 --> 00:01:53.550 different ways of, in fact, controlling the robot. 00:01:53.570 --> 00:01:56.940 First of all, you need to know where the robot is, and to 00:01:56.960 --> 00:01:59.910 know where the robot is, you need some sensors. 00:01:59.930 --> 00:02:02.230 So, what kind of sensors you would have 00:02:02.250 --> 00:02:05.410 [sic] on the robot to know where the robot is? 00:02:05.430 --> 00:02:08.020 Any idea? 00:02:08.038 --> 00:02:09.070 >> GPS. 00:02:09.090 --> 00:02:10.090 >> GPS? 00:02:09.180 --> 00:02:10.180 Okay. 00:02:09.270 --> 00:02:15.840 Well, all right, how many parameters you can measure with 00:02:15.860 --> 00:02:21.710 GPS? 00:02:21.730 --> 00:02:22.730 That's fine. 00:02:22.260 --> 00:02:24.480 I mean, we can try that. 00:02:24.500 --> 00:02:25.750 How many parameters you can-- 00:02:25.560 --> 00:02:27.830 What can you determine with GPS? 00:02:27.850 --> 00:02:29.100 >> Probably X and Y coordinates. 00:02:28.300 --> 00:02:37.040 >> Yeah, you will locate X and Y for the location of the 00:02:37.060 --> 00:02:38.060 GPS, right? 00:02:38.060 --> 00:02:40.640 But how many degrees of freedom? 00:02:40.660 --> 00:02:42.780 How many bodies are moving here? 00:02:42.800 --> 00:02:49.260 When I'm moving this--like here--how many bodies are moving? 00:02:49.280 --> 00:02:50.530 How many GPS you want 00:02:50.480 --> 00:02:55.070 [sic] to put on the robot? 00:02:55.090 --> 00:02:58.090 (laughter) You will need about 47 if you have 47 degrees of 00:02:57.950 --> 00:03:00.959 freedom, and that won't work. 00:03:00.980 --> 00:03:02.230 It will be too expensive. 00:03:01.430 --> 00:03:03.330 Another idea. 00:03:03.350 --> 00:03:04.350 We need something else. 00:03:03.710 --> 00:03:08.090 >> Try encoders. 00:03:08.110 --> 00:03:09.110 >> Encoders, yeah, encoders. 00:03:08.800 --> 00:03:09.800 So, encoders measures 00:03:09.070 --> 00:03:11.489 [sic] one degree of freedom, just the angle. 00:03:11.510 --> 00:03:13.260 And how many encoders we need 00:03:13.280 --> 00:03:14.780 [sic] for 47 degrees of freedom? 00:03:14.730 --> 00:03:18.790 Forty-seven. 00:03:18.810 --> 00:03:23.080 Now that will give you the relative position, but we will 00:03:23.100 --> 00:03:28.130 not know whether this configuration is here or here, right? 00:03:28.150 --> 00:03:31.710 So you need the GPS to maybe locate one object and then 00:03:31.730 --> 00:03:33.730 locate everything with respect to it if you-- 00:03:33.690 --> 00:03:37.180 Any other idea to locate-- 00:03:37.200 --> 00:03:38.200 >> Differential navigation. 00:03:38.200 --> 00:03:46.560 >> Yeah, by integrating from an initial known position or 00:03:46.580 --> 00:03:52.610 using >> Vision systems. 00:03:52.630 --> 00:03:55.519 >> vision systems to locate at least one or two objects, 00:03:55.540 --> 00:03:58.950 then you know where the robot is, and then the relative 00:03:58.970 --> 00:04:02.460 position, the velocities could be determined as we move. 00:04:02.480 --> 00:04:11.519 So once we located the robot, then we need to somehow find a 00:04:11.540 --> 00:04:16.159 way to describe where things are. 00:04:16.180 --> 00:04:17.740 So where is the right hand? 00:04:17.760 --> 00:04:18.760 Where the left hand? 00:04:18.760 --> 00:04:20.300 [sic] Where-- So you need-- 00:04:20.320 --> 00:04:22.390 What do you need there? 00:04:22.410 --> 00:04:30.480 You need to find the relationship between all these rigid 00:04:30.500 --> 00:04:35.220 bodies so that once the robot is standing, you know where to 00:04:35.240 --> 00:04:39.090 position--where the arm is positioned, where the hand is 00:04:39.110 --> 00:04:42.210 positioned, where the head is positioned. 00:04:42.230 --> 00:04:49.060 So you need something that comes from the science of-- 00:04:49.080 --> 00:04:54.979 Well, I am not talking now about sensors. 00:04:55.000 --> 00:04:57.250 We know the information, but we need to determine-- 00:04:56.930 --> 00:04:57.930 >> A model. 00:04:57.930 --> 00:05:02.590 >> A model, the kinematic model. 00:05:02.610 --> 00:05:04.880 Basically, we need the kinematics. 00:05:04.900 --> 00:05:11.280 And when the thing is moving, it generates dynamics, right? 00:05:11.300 --> 00:05:13.690 So you need to find the inertial forces. 00:05:13.710 --> 00:05:15.140 You need to know-- 00:05:15.160 --> 00:05:17.660 So if you move the right hand, suddenly everything is 00:05:17.380 --> 00:05:18.380 moving, right? 00:05:18.380 --> 00:05:22.730 You have coupling between these rigid bodies that are 00:05:22.750 --> 00:05:24.310 connected. 00:05:24.330 --> 00:05:27.520 So we need to find the dynamics. 00:05:27.540 --> 00:05:33.480 And once you have all these models, then you need to think 00:05:33.500 --> 00:05:37.200 about a way to control the robot. 00:05:37.220 --> 00:05:42.330 So how do we control a robot like this? 00:05:42.350 --> 00:05:47.580 So let's say I would like to move this to here. 00:05:47.600 --> 00:05:49.700 How can we do that? 00:05:49.720 --> 00:05:52.470 The hand--I would like to move it to this location. 00:05:50.820 --> 00:05:51.820 I'm sorry? 00:05:51.820 --> 00:05:52.820 >> Forward, inverse kinematics. 00:05:52.090 --> 00:05:53.090 >> Oh, very good. 00:05:52.360 --> 00:06:05.400 Well, the forward kinematics gives you the location of the 00:06:05.420 --> 00:06:06.420 hand. 00:06:06.420 --> 00:06:09.340 The inverse kinematics give you--given 00:06:09.360 --> 00:06:12.260 [sic] a position for the hand that you desire. 00:06:12.280 --> 00:06:13.780 You need to-- 00:06:13.800 --> 00:06:16.050 You will be able to solve what joint angles-- 00:06:15.800 --> 00:06:19.060 Yeah. 00:06:19.080 --> 00:06:24.400 And if you do that, then you know your goal position angle 00:06:24.420 --> 00:06:25.670 for each of the joints. 00:06:25.280 --> 00:06:29.599 Then you can control these joints to move to the appropriate 00:06:29.620 --> 00:06:32.460 joint positions, and the arm will move to that 00:06:32.480 --> 00:06:34.070 configuration. 00:06:34.090 --> 00:06:41.859 Well, can we do inverse kinematics for this robot? 00:06:41.880 --> 00:06:43.550 It's not easy. 00:06:43.570 --> 00:06:46.630 It's already difficult for six-degree-of-freedom robot like 00:06:46.650 --> 00:06:50.929 an arm, but for a robot with many degrees of freedom-- 00:06:50.950 --> 00:06:53.700 So suppose I would like to move to this location--this 00:06:52.320 --> 00:06:53.320 location here. 00:06:53.320 --> 00:07:01.080 There are infinite ways I can move there. 00:07:01.100 --> 00:07:03.520 And there are many, many different solutions to this 00:07:03.540 --> 00:07:05.750 problem. 00:07:05.770 --> 00:07:07.270 In addition, a human do not 00:07:07.160 --> 00:07:08.660 [sic] really do it this way. 00:07:08.160 --> 00:07:11.310 I mean, when you're moving your hand, do you do inverse 00:07:11.330 --> 00:07:12.770 kinematics? 00:07:12.790 --> 00:07:17.890 Anyone? No. 00:07:17.910 --> 00:07:20.670 So we will see different ways of-- 00:07:20.690 --> 00:07:23.940 Oh, I will come back to this a little later, but let's-- 00:07:23.900 --> 00:07:29.810 I'm not sure, but the idea about robots is basically was 00:07:29.830 --> 00:07:30.830 captured 00:07:30.830 --> 00:07:35.590 [sic] by this image--that is, you have a robot working in an 00:07:35.610 --> 00:07:39.130 isolated environment in a manufacturing plant, doing things, 00:07:39.150 --> 00:07:42.630 picking, pick and place, moving from one location to another 00:07:42.650 --> 00:07:47.679 without any interaction with humans. But robotics, over the 00:07:47.700 --> 00:07:48.740 years, evolved. 00:07:48.760 --> 00:07:52.880 And today, robotics is in many different areas of 00:07:52.900 --> 00:07:56.810 application: from robots working with a surgeon to operate a 00:07:56.830 --> 00:07:57.830 human 00:07:57.830 --> 00:08:01.659 [sic], to robot assisting a worker to carry a heavy load, to 00:08:01.680 --> 00:08:04.960 robots in entertainment, to robots in many, many different 00:08:04.980 --> 00:08:06.030 fields. 00:08:06.050 --> 00:08:09.350 And this is what is really exciting about robotics: the fact 00:08:09.370 --> 00:08:12.630 that robotics is getting closer and closer to the human-- 00:08:12.650 --> 00:08:16.549 that is we are using the robot now to carry, to lift, to 00:08:16.570 --> 00:08:20.730 work, to extend the hands of the human through haptic 00:08:20.750 --> 00:08:21.900 interaction. 00:08:21.920 --> 00:08:25.980 You can feel a virtual environment or a real environment. 00:08:26.000 --> 00:08:29.510 I'm not sure if everyone knows what is haptics. 00:08:29.530 --> 00:08:32.760 [sic] Haptics comes from the sense--a Greek word that 00:08:32.780 --> 00:08:33.780 describe 00:08:33.780 --> 00:08:35.270 [sic] the sense of touch. 00:08:35.289 --> 00:08:37.969 And from haptics-- 00:08:37.990 --> 00:08:39.789 So here is the hands 00:08:39.808 --> 00:08:42.818 [sic] of the surgeon, and the surgeon is still operating. 00:08:42.840 --> 00:08:49.340 So he is operating from outside, but essentially the robot 00:08:49.360 --> 00:08:52.840 is inserted, and instead of opening the body, we have a 00:08:52.860 --> 00:08:54.070 small incisions 00:08:54.090 --> 00:08:56.840 [sic] through which we introduce the robot, and then we do 00:08:56.220 --> 00:08:57.290 the operation. 00:08:57.310 --> 00:08:59.750 And the recovery is amazing. 00:08:59.770 --> 00:09:04.140 A few days of recovery, and the patient is out of the 00:09:04.160 --> 00:09:06.160 hospital. 00:09:06.180 --> 00:09:10.069 Teleoperation through haptics or through master devices 00:09:10.090 --> 00:09:11.480 allow us to control-- 00:09:11.500 --> 00:09:16.860 So here is the surgeon working far away, operating, or 00:09:16.880 --> 00:09:21.310 operating underwater, or interacting with a physical 00:09:21.330 --> 00:09:24.990 environment in homes or in the factory. 00:09:25.010 --> 00:09:28.160 Another interesting thing about robotics is that because 00:09:28.180 --> 00:09:32.469 robotics focuses on articulated body systems, we are able 00:09:32.490 --> 00:09:36.980 now to use all these models, all these techniques we 00:09:37.000 --> 00:09:41.140 developed in robotics, to model a human and to create sort 00:09:41.160 --> 00:09:45.719 of a digital model of the human that can, as we will see 00:09:45.740 --> 00:09:51.210 later, that can be assimilated and controlled to reproduce 00:09:51.230 --> 00:09:57.910 actual behavior captured from motion capture devices about 00:09:57.930 --> 00:09:59.250 the human behavior. 00:09:59.270 --> 00:10:05.280 Also, with this interaction that we are creating with the 00:10:05.300 --> 00:10:08.130 physical world, we are going to be able to use haptic 00:10:08.150 --> 00:10:14.750 devices to explore physical world that cannot be touched in 00:10:14.770 --> 00:10:18.970 reality--that is, we cannot, for instance, go to the atom 00:10:18.990 --> 00:10:22.460 level, but we can simulate the atom level, and through 00:10:22.480 --> 00:10:26.570 haptic devices, we can explore those world. 00:10:26.590 --> 00:10:30.110 [sic] Maybe the most exciting area in robotics is 00:10:30.130 --> 00:10:35.080 reproducing devices, robots that look like the human and 00:10:35.100 --> 00:10:39.520 behave like life, animals or humans. 00:10:39.540 --> 00:10:44.459 And a few years ago, I was in Japan. 00:10:44.480 --> 00:10:46.160 Anyone recognize where this photo is? 00:10:46.180 --> 00:10:47.180 >> Osaka. 00:10:47.180 --> 00:10:50.160 >> He said Osaka. 00:10:50.180 --> 00:10:51.180 >> Yokohama. 00:10:50.270 --> 00:10:55.390 >> Very good, but you are cheating because you were there. 00:10:55.410 --> 00:10:58.250 (laughter) So this is from Yokohama, and in Yokohama, there 00:10:58.270 --> 00:11:00.930 is Robodex. 00:11:00.950 --> 00:11:04.190 Robodex brings thousand and thousand 00:11:04.210 --> 00:11:08.840 [sic] of people to see all the latest in robotics. 00:11:08.860 --> 00:11:10.360 This was a few years ago. 00:11:10.330 --> 00:11:14.840 And you could see ASIMO here--ASIMO which is really the 00:11:14.860 --> 00:11:18.570 latest in a series of development 00:11:18.590 --> 00:11:23.330 [sic] at Honda following P2 and P3 robots. 00:11:23.350 --> 00:11:30.740 And in addition, you could see, well, most of the major 00:11:30.760 --> 00:11:33.000 players in robotics, in humanoid robotics. 00:11:33.020 --> 00:11:36.150 Anyone have seen 00:11:36.170 --> 00:11:37.250 [sic] this one? 00:11:37.270 --> 00:11:40.030 Do you know this one? 00:11:40.050 --> 00:11:42.240 This is the Sony robot that-- 00:11:42.260 --> 00:11:45.330 Actually, I think I have a video. 00:11:45.350 --> 00:11:48.500 Let's see if it works. 00:11:48.520 --> 00:11:57.800 The Sony is balancing on a moving bar, and this is not an 00:11:57.820 --> 00:11:59.430 easy task. 00:11:59.450 --> 00:12:04.590 And you can imagine the requirements in real-time control 00:12:04.610 --> 00:12:07.530 and dynamic modeling and all the aspect 00:12:07.550 --> 00:12:08.550 [sic] of this. 00:12:08.550 --> 00:12:17.930 And this was accomplished a few years ago. 00:12:17.950 --> 00:12:21.600 Well, actually, we brought this robot here to Stanford a few 00:12:21.620 --> 00:12:29.330 years ago, and they did a performance here, and it was quite 00:12:29.350 --> 00:12:33.440 exciting to see this robot dancing and performing. 00:12:33.460 --> 00:12:39.090 There are a lot of different robots, especially in Asia-- 00:12:39.110 --> 00:12:41.460 Japan and Korea--humanoid robots. 00:12:41.480 --> 00:12:50.790 AIST built a series of robots: HRP, HRP-1 and 2. 00:12:50.810 --> 00:12:53.060 And they are building and developing more capabilities for 00:12:52.850 --> 00:13:00.780 those robots. 00:13:00.800 --> 00:13:03.890 One of the interesting show 00:13:03.910 --> 00:13:09.510 [sic] that we had recently was near Nagoya during the World 00:13:09.530 --> 00:13:15.650 Expo in Aichi, and they demonstrated a number of projects. 00:13:15.670 --> 00:13:21.319 Some of them came from research laboratories that 00:13:21.340 --> 00:13:24.890 collaborated with the industry to build those machines. 00:13:24.910 --> 00:13:28.020 This is a dancing robot. 00:13:28.040 --> 00:13:34.920 Let's see This is HRP. 00:13:34.940 --> 00:13:37.480 So HRP is walking. 00:13:37.500 --> 00:13:41.060 Walking is now well-mastered. 00:13:41.080 --> 00:13:46.180 But the problem is: How can you move to a position, take an 00:13:46.200 --> 00:13:50.470 object and control the interaction with the physical world? 00:13:50.490 --> 00:13:51.550 This is more challenging. 00:13:51.570 --> 00:13:54.330 You see that sliding and touching is not completely mastered 00:13:54.350 --> 00:14:02.230 yet, but this is the direction of research in those areas. 00:14:02.250 --> 00:14:05.020 This is an interesting device that come 00:14:05.040 --> 00:14:07.480 [sic] from Waseda University. 00:14:07.500 --> 00:14:11.320 This robot has additional degrees of freedom that-- 00:14:11.340 --> 00:14:18.300 Okay, another problem. 00:14:18.320 --> 00:14:22.210 So you have additional degrees of freedom in the hip joints 00:14:22.230 --> 00:14:26.910 to allow it to move a little bit more like a human. 00:14:26.930 --> 00:14:29.219 Let's see This is one of my favorite. 00:14:29.240 --> 00:14:36.700 This is a humanlike, and humanlike actuation in it, so 00:14:36.720 --> 00:14:41.240 artificial muscles that are used to create the motion. 00:14:41.260 --> 00:14:44.220 But obviously, you have a lot of problems with artificial 00:14:44.240 --> 00:14:48.250 muscles because dynamic response is very slow and the power 00:14:48.270 --> 00:14:51.699 that you can bring is not yet-- 00:14:51.720 --> 00:14:54.050 But we will talk about those issues, as well. 00:14:54.070 --> 00:15:24.070 Okay, let me know what you think about this one. 00:15:25.010 --> 00:15:27.220 So? 00:15:27.240 --> 00:15:29.420 So what do you think? 00:15:29.440 --> 00:15:32.440 Do we need robots to really have the perfect appearance of a 00:15:32.010 --> 00:15:33.010 human? 00:15:33.010 --> 00:15:38.960 Or, like, we need the functionalities of the environment? 00:15:38.980 --> 00:15:43.450 Like if we are working with the trees, we specialize the 00:15:43.470 --> 00:15:44.840 robot to cut trees. 00:15:44.860 --> 00:15:48.670 If we are working in the human environment, then we will 00:15:48.690 --> 00:15:53.140 have a robot that has the functionalities of two arms, the 00:15:53.160 --> 00:15:56.240 mobility, the vision capabilities. 00:15:56.260 --> 00:16:00.740 So these are really interesting issues to think about: 00:16:00.760 --> 00:16:07.290 whether we need to have the robot biologically based or 00:16:07.310 --> 00:16:12.209 functionally based, and how we can create those interactions 00:16:12.230 --> 00:16:15.100 in an effective way. 00:16:15.120 --> 00:16:16.370 Last one, I think is-- 00:16:15.570 --> 00:16:25.950 Yeah, this is an interesting example of how we can extend 00:16:25.970 --> 00:16:30.150 the capabilities of human with an exoskeleton system. 00:16:30.170 --> 00:16:33.939 So you wear it, and you become a superman or a superwoman, 00:16:33.960 --> 00:16:37.390 and you can carry a heavy load. 00:16:37.410 --> 00:16:43.100 They will demonstrate here carrying, I believe, 60 kilograms 00:16:43.120 --> 00:16:47.030 without feeling any weight because everything is taken by 00:16:47.050 --> 00:16:52.430 the structure of the exoskeletal system you are wearing. 00:16:52.450 --> 00:16:56.300 Another interesting one is this one from Tokyo Institute of 00:16:56.320 --> 00:17:02.500 Technology, a swimming robot. 00:17:02.520 --> 00:17:05.660 So make sure no water gets into the motors. 00:17:05.680 --> 00:17:15.069 Anyway, the thing is robotics is getting closer and closer 00:17:15.089 --> 00:17:16.230 to the human. 00:17:16.250 --> 00:17:21.400 And as we see, robots are getting closer to the human. 00:17:21.420 --> 00:17:27.760 We are facing a lot of challenges in really making these 00:17:27.780 --> 00:17:32.190 machines work in the unstructured, messy environment of the 00:17:32.210 --> 00:17:33.210 human. 00:17:33.210 --> 00:17:38.920 When we were working with robots in structured manufacturing 00:17:38.940 --> 00:17:41.990 plants, the problems were much simpler. 00:17:42.010 --> 00:17:46.320 Now you need to deal with many issues, including the fact 00:17:46.340 --> 00:17:48.320 that you need safety. 00:17:48.340 --> 00:17:51.750 You need safety to create that interaction. 00:17:51.770 --> 00:17:55.530 And this distance between the human and the robot is very 00:17:55.550 --> 00:17:56.550 well justified. 00:17:56.550 --> 00:18:00.560 You don't want yet to bring the robot very close to the 00:18:00.580 --> 00:18:05.850 human because these machines are not yet quite safe. 00:18:05.870 --> 00:18:12.629 Well, development in robotics has many aspects and many 00:18:12.650 --> 00:18:13.650 forms. 00:18:13.650 --> 00:18:18.170 And really at Stanford, we are fortunate to have a large 00:18:18.190 --> 00:18:24.320 number of classes, courses offered in different areas of 00:18:24.340 --> 00:18:29.439 robotics, graphics and computational geometry, haptics and 00:18:29.460 --> 00:18:30.460 all of these things. 00:18:30.460 --> 00:18:34.690 And you have a list of the different courses offered all 00:18:34.710 --> 00:18:36.010 along the year. 00:18:36.030 --> 00:18:39.790 And in fact, in my-- 00:18:39.810 --> 00:18:41.720 This is the Intro to Robotics. 00:18:41.740 --> 00:18:44.900 In spring, I will be offering two additional courses that 00:18:44.920 --> 00:18:48.510 would deal with Experimental Robotics--that is, applying 00:18:48.530 --> 00:18:53.290 everything you have learned during this class to a real 00:18:53.310 --> 00:18:58.270 robot and experimenting with the robot, as well as exploring 00:18:58.290 --> 00:19:01.580 advanced topics in research, and this is in Advanced 00:19:01.600 --> 00:19:03.719 Robotics. 00:19:03.740 --> 00:19:11.410 So, I'm Oussama Khatib, your instructor. 00:19:11.430 --> 00:19:13.950 And you have-- 00:19:13.970 --> 00:19:15.590 This year, we are lucky. 00:19:15.610 --> 00:19:20.620 We have three TAs helping with the class: Pete, Christina 00:19:20.640 --> 00:19:21.640 and Channing. 00:19:21.640 --> 00:19:22.640 So let's-- 00:19:21.950 --> 00:19:24.240 They are over here. 00:19:24.260 --> 00:19:27.010 Please stand up, or just turn your faces so they will 00:19:26.900 --> 00:19:29.230 recognize you. 00:19:29.250 --> 00:19:32.300 And the office hours are listed. 00:19:32.320 --> 00:19:38.520 So we will have office hours for me on Monday and Wednesday, 00:19:38.540 --> 00:19:43.590 and Monday, Tuesday and Thursday for the TAs. 00:19:43.610 --> 00:19:48.629 The lecture notes are here, and they are available at the 00:19:48.650 --> 00:19:49.970 bookstore. 00:19:49.990 --> 00:19:52.410 This is the 2008 edition. 00:19:52.430 --> 00:19:54.040 So we keep improving it. 00:19:54.060 --> 00:19:57.790 It's not yet a textbook, but it is quite complete in term 00:19:57.810 --> 00:20:01.419 [sic] of the requirements and the things you need to have 00:20:01.440 --> 00:20:04.250 for the class. 00:20:04.270 --> 00:20:06.020 So, um, let's see The schedule-- 00:20:04.980 --> 00:20:08.480 So we are today on Wednesday the 9th, and we will go to the 00:20:06.240 --> 00:20:19.870 final examination on March the 21st. 00:20:19.890 --> 00:20:25.300 There are few changes in the schedule from the handout you 00:20:25.320 --> 00:20:28.030 have, and we will update these later. 00:20:28.050 --> 00:20:31.020 There is-- 00:20:31.040 --> 00:20:38.710 These changes happened just in this area here around the 00:20:38.730 --> 00:20:40.920 dynamics and control schedule. 00:20:40.940 --> 00:20:45.430 But essentially, what we're going to do starting next week 00:20:45.450 --> 00:20:51.270 is to start covering the models, so we will start with the 00:20:51.290 --> 00:20:52.710 spatial descriptions. 00:20:52.730 --> 00:20:55.570 We go to the forward kinematics, and we will do the 00:20:55.590 --> 00:20:57.159 Jacobian. 00:20:57.180 --> 00:21:00.570 And I will discuss these little by little. 00:21:00.590 --> 00:21:02.970 That will take us to the midterm. 00:21:02.990 --> 00:21:08.580 One important thing about the midterm and the final is that 00:21:08.600 --> 00:21:10.919 we will have review sessions. 00:21:10.940 --> 00:21:14.510 And the class is quite large, so we will split the class in 00:21:14.530 --> 00:21:15.530 two. 00:21:15.530 --> 00:21:18.950 And we will have two groups that will attend these review 00:21:18.970 --> 00:21:21.860 sessions, which will take place in the evening. 00:21:21.880 --> 00:21:25.300 And they will take place in the lab, in the robotics lab. 00:21:25.320 --> 00:21:30.790 And during those sessions, we will cover the midterm of past 00:21:30.810 --> 00:21:34.100 years and the finals of past years. 00:21:34.120 --> 00:21:38.669 And what is nice about those sessions is that you will have 00:21:38.690 --> 00:21:46.040 a chance to see some demonstrations of robots while eating 00:21:46.060 --> 00:21:52.950 pizza and drinking some So that will happen between 7:00 and 00:21:52.970 --> 00:21:53.970 9:00. 00:21:53.970 --> 00:21:56.970 Sometimes it goes to 10:00 because we have a lot of 00:21:56.770 --> 00:21:58.250 questions and discussions. 00:21:58.270 --> 00:22:02.760 But these sessions are really, really important, and I 00:22:02.780 --> 00:22:06.660 encourage you and I encourage also the remote students to be 00:22:06.680 --> 00:22:08.160 present for the sessions. 00:22:08.180 --> 00:22:11.880 They are very, very helpful in preparing you for the midterm 00:22:11.900 --> 00:22:12.900 and the final. 00:22:12.900 --> 00:22:20.800 So as I said, this class covers mathematical models that are 00:22:20.820 --> 00:22:21.820 essential. 00:22:21.820 --> 00:22:25.080 I know some of you might not really like, well, getting too 00:22:25.100 --> 00:22:28.240 much into the details of mathematical models, but we are 00:22:28.260 --> 00:22:34.340 going to really have to do it if we are going to try to 00:22:34.360 --> 00:22:37.179 control these machines or build these machines, design these 00:22:37.200 --> 00:22:38.200 machines. 00:22:38.200 --> 00:22:41.040 We need to understand the mathematical models, the 00:22:41.060 --> 00:22:44.480 foundations in kinematics and dynamics. 00:22:44.500 --> 00:22:52.270 And we will then use these models to create controllers, and 00:22:52.290 --> 00:22:55.510 we are going to control motions, so we need to plan these 00:22:55.530 --> 00:22:56.530 motions. 00:22:56.530 --> 00:22:59.379 We need to plan motion that are 00:22:59.400 --> 00:23:02.730 [sic] safe, and we need to generate trajectories that are 00:23:02.750 --> 00:23:03.750 smooth. 00:23:03.750 --> 00:23:07.370 So these are the issues that we need to address in the 00:23:07.390 --> 00:23:10.660 planning and control, in addition to the fact that we need 00:23:10.680 --> 00:23:13.280 to touch, feel, interact with the world. 00:23:13.300 --> 00:23:17.659 So we need to create compliant motions, which rely on force 00:23:17.680 --> 00:23:18.680 control. 00:23:18.680 --> 00:23:23.200 So force control is critical in creating those interaction. 00:23:23.220 --> 00:23:27.180 [sic] And we will see how we can control the robot to move 00:23:27.200 --> 00:23:31.340 in free space or in contact space as the robot is 00:23:31.360 --> 00:23:32.899 interacting with the world. 00:23:32.920 --> 00:23:37.190 And then we will have some time to discuss some advanced 00:23:37.210 --> 00:23:40.900 topics, just introduce those advanced topics, so that those 00:23:40.920 --> 00:23:45.810 of you who are interested in pursuing research in robotics 00:23:45.830 --> 00:23:52.179 could make maybe plans to take the more advanced courses 00:23:52.200 --> 00:23:55.310 that will be offered in spring. 00:23:55.330 --> 00:24:00.770 So let's go back to the problem I talked about in the 00:24:00.790 --> 00:24:04.320 beginning: the problem of moving this robot from one 00:24:04.340 --> 00:24:05.340 location to another. 00:24:05.340 --> 00:24:07.500 Suppose you would like to move this platform. 00:24:07.520 --> 00:24:10.110 This is a mobile manipulator platform. 00:24:10.130 --> 00:24:12.700 You would like to move it from here to here. 00:24:12.720 --> 00:24:14.200 How do we do that? 00:24:14.220 --> 00:24:15.220 Well, we said-- 00:24:15.220 --> 00:24:19.600 Essentially, what we need to do is somehow find a way of 00:24:19.620 --> 00:24:26.780 discovering a configuration through which the robot reaches 00:24:26.800 --> 00:24:29.440 that final goal position. 00:24:29.460 --> 00:24:31.620 And this is one of them. 00:24:31.640 --> 00:24:34.390 You can imagine the robot is going to move to that 00:24:34.230 --> 00:24:35.490 configuration. 00:24:35.510 --> 00:24:38.560 But the problem with this is the fact that if you have 00:24:38.580 --> 00:24:39.580 redundancy. 00:24:39.580 --> 00:24:41.260 So what is redundancy? 00:24:41.280 --> 00:24:44.460 Redundancy is the fact that you can reach that position with 00:24:44.480 --> 00:24:46.280 many different configuration 00:24:46.300 --> 00:24:48.800 [sic] because you have more degrees of freedom in the 00:24:48.170 --> 00:24:49.170 system. 00:24:49.170 --> 00:24:52.530 And when you have redundancy, this problem of inverse 00:24:52.550 --> 00:24:55.470 kinematics becomes pretty difficult problem. 00:24:55.490 --> 00:25:00.220 But if you solve it, then you will be able to say I would 00:25:00.240 --> 00:25:04.130 like to move each of those joints from this current 00:25:04.150 --> 00:25:07.340 position, this joint position to this joint position. 00:25:07.360 --> 00:25:11.159 So you can control the robot by controlling its joint 00:25:11.180 --> 00:25:14.540 positions and by creating trajectories for the joints to 00:25:14.560 --> 00:25:17.950 move, and then you will then be able to reach that goal 00:25:17.970 --> 00:25:18.970 position. 00:25:18.970 --> 00:25:23.930 Well, this is not the most natural way of controlling 00:25:23.950 --> 00:25:30.150 robots, and we will see that there will be different ways of 00:25:30.170 --> 00:25:33.280 approaching the problem that are much more natural. 00:25:33.300 --> 00:25:37.870 So to control the robot, first you need to find all these 00:25:37.890 --> 00:25:39.540 position and orientation 00:25:39.560 --> 00:25:44.550 [sic] of the mechanism itself, and that requires us to find 00:25:44.570 --> 00:25:49.590 descriptions of position and orientation of object in space. 00:25:49.610 --> 00:25:53.240 Then we need to deal with the transformation between frames 00:25:53.260 --> 00:25:57.000 attached to these different objects because here, to know 00:25:57.020 --> 00:26:01.030 where this end effector is, you need to know how-- 00:26:01.050 --> 00:26:04.129 If you know this position, this position of those different 00:26:04.150 --> 00:26:08.250 objects, how you transform the descriptions to find, 00:26:08.270 --> 00:26:12.330 finally, the position of your end effector. 00:26:12.350 --> 00:26:15.750 So you need transformations between different frames 00:26:15.770 --> 00:26:17.810 attached to both objects. 00:26:17.830 --> 00:26:25.520 So the mechanism, that is the arm in this case, is defined 00:26:25.540 --> 00:26:30.090 by a rigid object that is fixed, which is the base, and 00:26:30.110 --> 00:26:34.729 another rigid object that is moving, which we call the end 00:26:34.750 --> 00:26:35.750 effector. 00:26:35.750 --> 00:26:40.130 And between these two objects, you have all the links that 00:26:40.150 --> 00:26:43.770 are going to carry the end effector to move it to some 00:26:43.790 --> 00:26:44.909 location. 00:26:44.930 --> 00:26:49.200 And the question is: How can we describe this mechanism? 00:26:49.220 --> 00:26:54.880 So we will see that we are raising joints, different kinds, 00:26:54.900 --> 00:26:57.880 joints that are revolute, prismatic. 00:26:57.900 --> 00:27:02.930 And through those descriptions, we can describe the link and 00:27:02.950 --> 00:27:09.240 then we can describe the chain of links connected through a 00:27:09.260 --> 00:27:10.730 set of parameters. 00:27:10.750 --> 00:27:11.750 Don't worry-- 00:27:10.930 --> 00:27:17.870 Denavit and Hartenberg were two PhD students here at 00:27:17.890 --> 00:27:22.150 Stanford in the early ???70s, and they thought about this 00:27:22.170 --> 00:27:26.090 problem, and they came up with a set of parameters, minimal 00:27:26.110 --> 00:27:30.520 set of parameters, to represent the relationship between two 00:27:30.540 --> 00:27:33.690 successive links on a chain. 00:27:33.710 --> 00:27:39.730 And their notation now is basically used everywhere in 00:27:39.750 --> 00:27:40.760 robotics. 00:27:40.780 --> 00:27:43.950 And through this notation and those parameters, we will be 00:27:43.970 --> 00:27:46.630 able to come up with a description of the forward 00:27:46.650 --> 00:27:47.650 kinematics. 00:27:47.650 --> 00:27:51.920 The forward kinematics is the relationship between these 00:27:51.940 --> 00:27:55.880 joint angles and the position of the end effector, so 00:27:55.900 --> 00:27:59.500 through forward kinematics, you can compute where the end 00:27:59.520 --> 00:28:01.639 effector position and orientation is. 00:28:01.660 --> 00:28:10.110 So these parameters are describing the common normal 00:28:10.130 --> 00:28:15.870 distance between two axes of rotation-- 00:28:15.890 --> 00:28:19.870 So this distance, and also the orientation between these 00:28:19.890 --> 00:28:24.710 axes, and through this, we can go through the chain and then 00:28:24.730 --> 00:28:30.110 attach frames to the different joints and then find the 00:28:30.130 --> 00:28:33.100 transformation between the joints in order to find the 00:28:33.120 --> 00:28:36.600 relationship between the base frame and the end effector 00:28:36.620 --> 00:28:38.929 frame. 00:28:38.950 --> 00:28:44.430 So once we have those transformations, then we can compute 00:28:44.450 --> 00:28:45.720 the total transformation. 00:28:45.740 --> 00:28:50.340 So we have local transformation between successive frames, 00:28:50.360 --> 00:28:53.510 and we can find the local transformation. 00:28:53.530 --> 00:28:57.290 Now once we know the geometry--that is, we know where the 00:28:57.310 --> 00:29:00.169 end effector is, where each link is with respect to the 00:29:00.190 --> 00:29:04.860 others, then we can use this information to come up with a 00:29:04.880 --> 00:29:09.010 description of the second important characteristic in 00:29:09.030 --> 00:29:14.399 kinematics, and this is the velocities: how fast things are 00:29:14.420 --> 00:29:16.320 moving with respect to each other. 00:29:16.340 --> 00:29:20.530 And we need to consider two things: not only the linear 00:29:20.550 --> 00:29:23.620 velocity of the end effector, but also the angular velocity 00:29:23.640 --> 00:29:25.060 at its rotate. 00:29:25.080 --> 00:29:29.060 [sic] And we will examine the different velocities--linear 00:29:29.080 --> 00:29:35.050 velocities, angular velocities--with which we will see a 00:29:35.070 --> 00:29:39.760 duality with the relationships between torques applied at 00:29:39.780 --> 00:29:44.260 the joints and forces resulting at the end effector. 00:29:44.280 --> 00:29:46.790 Forces, this is the linear-- 00:29:46.810 --> 00:29:49.679 Forces are associated with linear motion. 00:29:49.700 --> 00:29:54.290 Movement, torques associated with angular motion. 00:29:54.310 --> 00:29:59.169 And there is a duality that brings this Jacobian, the model 00:29:59.190 --> 00:30:05.250 that relates velocities, to be playing two roles: one to 00:30:05.270 --> 00:30:08.450 find the relationships between joint velocities with end 00:30:08.470 --> 00:30:11.620 effector velocities, and one to find the relationship 00:30:11.640 --> 00:30:17.120 between forces applied to the environment and torque applied 00:30:17.140 --> 00:30:18.220 to the motors. 00:30:18.240 --> 00:30:21.200 The Jacobian plays a very, very important role, and we will 00:30:21.220 --> 00:30:25.360 spend some time discussing the Jacobian and finding ways of 00:30:25.380 --> 00:30:27.880 obtaining the Jacobian. 00:30:27.900 --> 00:30:32.400 So the Jacobian, as I said, describes this V vector, the 00:30:32.420 --> 00:30:36.280 linear velocity, and the omega vector, the angular velocity, 00:30:36.300 --> 00:30:41.879 and it relates those velocities to the joint velocities. 00:30:41.900 --> 00:30:45.960 So the Jacobian, through that, gives you the linear and 00:30:45.980 --> 00:30:48.200 angular velocities. 00:30:48.220 --> 00:30:55.780 And we will see that essentially this Jacobian is really 00:30:55.800 --> 00:31:00.970 related to the way the axes of this robot are designed. 00:31:00.990 --> 00:31:04.820 And once you understood this model, you are going to be able 00:31:04.840 --> 00:31:08.929 to look at a robot and see the Jacobian automatically. 00:31:08.950 --> 00:31:12.200 You look at the machine, and you see the model automatically 00:31:12.220 --> 00:31:16.900 through this explicit form that we will develop to compute 00:31:16.920 --> 00:31:20.400 those linear velocities and angular velocities through the 00:31:20.420 --> 00:31:26.170 analysis of the contribution of each axis to the final 00:31:26.190 --> 00:31:28.870 resulting velocities. 00:31:28.890 --> 00:31:34.070 So we will also discuss inverse kinematics, although we are 00:31:34.090 --> 00:31:38.530 not going to use it extensively as it has been done in 00:31:38.550 --> 00:31:39.860 industrial robotics. 00:31:39.880 --> 00:31:40.930 We will use-- 00:31:40.950 --> 00:31:44.930 We will examine inverse kinematics and look at the 00:31:44.950 --> 00:31:46.270 difficulties in term 00:31:46.290 --> 00:31:50.760 [sic] of the multiplicity of solutions and the existence of 00:31:50.780 --> 00:31:55.560 those solutions and examine different techniques for finding 00:31:55.580 --> 00:31:57.199 those solutions. 00:31:57.220 --> 00:32:01.950 So, again, the inverse kinematics is how I can find this 00:32:01.970 --> 00:32:03.570 configuration that correspond 00:32:03.590 --> 00:32:07.580 [sic] to the desired end effector position and orientation. 00:32:07.600 --> 00:32:12.020 And then using those solutions, we can then do this 00:32:12.040 --> 00:32:17.730 interpolation between where the robot is at a given point 00:32:17.750 --> 00:32:21.480 and then how to move the robot to the final configuration 00:32:21.500 --> 00:32:26.040 through trajectory that are smooth both in velocity and 00:32:26.060 --> 00:32:30.260 acceleration and other constraints that we might impose 00:32:30.280 --> 00:32:34.310 through the generation of trajectories, both in joint space 00:32:34.330 --> 00:32:36.860 and in Cartesian space. 00:32:36.880 --> 00:32:37.880 So this-- 00:32:37.460 --> 00:32:41.640 Oh, I'm going backwards. 00:32:41.660 --> 00:32:45.250 So this will result in those smooth trajectories that could 00:32:45.270 --> 00:32:50.830 have via points that could impose upper bound on the 00:32:50.850 --> 00:32:55.149 velocities or the accelerations and resolving all of these 00:32:55.170 --> 00:32:59.920 by finding this interpolation between the different points. 00:32:59.940 --> 00:33:03.560 And that will bring us to the midterm, which will be on 00:33:03.580 --> 00:33:07.169 Wednesday, February the 13th. 00:33:07.190 --> 00:33:08.690 It's not a Friday 13th. 00:33:07.310 --> 00:33:08.310 It's Wednesday. 00:33:08.310 --> 00:33:11.240 So no worries. 00:33:11.260 --> 00:33:16.250 And it will be in class, and it will be during the same 00:33:16.270 --> 00:33:17.270 schedule. 00:33:17.270 --> 00:33:22.280 Now for the midterm, the time of the class is short, and 00:33:22.300 --> 00:33:30.450 you'll have really to be ready not really to, like to 00:33:30.470 --> 00:33:33.980 discover how to solve the problem but really immediately to 00:33:34.000 --> 00:33:35.000 work on the problem. 00:33:35.000 --> 00:33:38.150 So that's why the review sessions are very important to 00:33:38.170 --> 00:33:41.790 prepare you for the midterm to make sure that you will be 00:33:41.810 --> 00:33:47.370 able to solve all the problems, although we will make sure 00:33:47.390 --> 00:33:51.440 that the size of the problem fits with the time constraints 00:33:51.460 --> 00:33:53.820 that we have in the midterm. 00:33:53.840 --> 00:33:58.959 After the midterm, we will start looking at dynamics, 00:33:58.980 --> 00:34:01.020 control and other topics. 00:34:01.040 --> 00:34:04.780 And first, what we need to do is to-- 00:34:04.800 --> 00:34:07.710 Well, I'm not assuming-- 00:34:07.730 --> 00:34:12.560 I'm not sure how many of you are mechanical engineers. 00:34:12.580 --> 00:34:16.569 Let's see, how many are mechanical engineers in the class? 00:34:16.590 --> 00:34:17.600 Good. 00:34:17.620 --> 00:34:19.929 And how many are CS? 00:34:19.949 --> 00:34:24.989 Wow! That is about right. 00:34:25.010 --> 00:34:29.699 We have half of the class who's familiar with some of the 00:34:29.719 --> 00:34:32.870 physical models that we are going to develop, and some 00:34:32.889 --> 00:34:34.330 others who are not. 00:34:34.350 --> 00:34:38.319 But I'm going to assume that really everyone has no 00:34:38.340 --> 00:34:42.219 knowledge of dynamics or control or kinematics, and I will 00:34:42.239 --> 00:34:46.219 start with really the basic foundation. 00:34:46.239 --> 00:34:49.489 So you shouldn't worry about the fact that you don't have 00:34:49.429 --> 00:34:51.629 strong background in those areas. 00:34:51.650 --> 00:34:53.989 We will cover them from the start. 00:34:54.010 --> 00:34:57.120 We will go to: What is inertia? 00:34:57.139 --> 00:34:58.140 What is-- 00:34:58.140 --> 00:35:00.759 How do we describe accelerations? 00:35:00.780 --> 00:35:04.210 And then we will establish the dynamics, which is quite 00:35:04.230 --> 00:35:05.420 simple. 00:35:05.440 --> 00:35:12.130 Anyone recalls the Newton equation? 00:35:12.150 --> 00:35:13.150 So, let's see. 00:35:13.150 --> 00:35:21.520 What is the relationship between forces and accelerations? 00:35:21.540 --> 00:35:26.870 You need to know that, everyone. (laughter) Okay, I need to 00:35:26.890 --> 00:35:27.890 hear it. 00:35:27.890 --> 00:35:28.890 Someone tell me. 00:35:28.610 --> 00:35:29.610 Okay, good. 00:35:28.790 --> 00:35:32.900 Mass, acceleration equal force. 00:35:32.920 --> 00:35:35.520 Well, this is all what you need to know. 00:35:35.540 --> 00:35:40.320 [sic] If you know how one particle can move under the 00:35:40.340 --> 00:35:44.230 application of a force, then we will be able to generalize 00:35:44.250 --> 00:35:48.420 to many particles attached in a rigid body, and then we will 00:35:48.440 --> 00:35:52.350 put them into a structure that will take us to multi-body 00:35:52.370 --> 00:35:54.330 system, articulated multi-body system. 00:35:54.350 --> 00:35:58.460 So we will cover these without difficulty, hopefully. 00:35:58.480 --> 00:36:01.790 The result is quite interesting. 00:36:01.810 --> 00:36:03.870 So this is a robot. 00:36:03.890 --> 00:36:10.520 This is a robot that is controlled not by motors on the 00:36:10.540 --> 00:36:12.600 joints but by cables. 00:36:12.620 --> 00:36:16.790 So really, the active part of the robot is from here to 00:36:16.810 --> 00:36:22.049 there, and here, you'll see all the motors and cables-driven 00:36:22.070 --> 00:36:24.630 system that is on the right. 00:36:24.650 --> 00:36:28.110 Now if you think about the dynamics of this robot, it gets 00:36:28.130 --> 00:36:29.350 to be really complicated. 00:36:29.370 --> 00:36:31.609 So you see on the right here-- 00:36:31.630 --> 00:36:35.020 So this is the robot, and here you have some of the 00:36:35.040 --> 00:36:36.040 descriptions of-- 00:36:36.040 --> 00:36:37.759 Wait, you cannot see anything probably. 00:36:37.780 --> 00:36:41.810 But you have all the descriptions of-- 00:36:41.830 --> 00:36:47.950 For instance, what is the inertia view from the first joint 00:36:47.970 --> 00:36:48.970 when you move? 00:36:48.970 --> 00:36:52.140 So this inertia is changing as you move. 00:36:52.160 --> 00:36:58.259 So imagine, if I'm considering the inertia above this axis, 00:36:58.280 --> 00:36:59.280 right? 00:36:59.280 --> 00:37:05.020 If I'm deploying the whole arm, the inertia will increase. 00:37:05.040 --> 00:37:08.040 If I'm putting the arm like this, I will have smaller 00:37:07.930 --> 00:37:09.899 inertia above this axis. 00:37:09.920 --> 00:37:11.970 Bigger inertia, smaller inertia. 00:37:11.990 --> 00:37:12.990 So the configuration-- 00:37:12.580 --> 00:37:16.660 The inertia view from a joint is going to depend on the 00:37:16.680 --> 00:37:19.040 structure following that joint. 00:37:19.060 --> 00:37:23.570 And we will see that essentially all of this will come very 00:37:23.590 --> 00:37:29.060 naturally from the equations that will be generated from the 00:37:29.080 --> 00:37:30.390 multi-body system. 00:37:30.410 --> 00:37:37.290 But what we are going to use for this is a very simple 00:37:37.310 --> 00:37:41.660 description that again will allow you to take a look at this 00:37:41.680 --> 00:37:48.190 robot and say, Oh, this is the characteristics, the dynamic 00:37:48.210 --> 00:37:49.940 characteristics of this joint. 00:37:49.960 --> 00:37:56.380 And you can almost see the coupling forces between the 00:37:56.400 --> 00:38:01.780 different joints in a visual form that all depend on those 00:38:01.800 --> 00:38:05.640 axes of rotation and all translation of the robot. 00:38:05.660 --> 00:38:08.899 And this comes through the explicit form of dynamics that we 00:38:08.920 --> 00:38:09.920 will develop. 00:38:09.920 --> 00:38:15.730 This representation is an abstract, abstraction of the 00:38:15.750 --> 00:38:18.680 description that we will do with the Jacobian. 00:38:18.700 --> 00:38:22.080 So I said in the Jacobian case, we will take a description 00:38:22.100 --> 00:38:26.430 that is based on the contribution of each joint to the total 00:38:26.450 --> 00:38:28.790 velocity, and we will do the same thing. 00:38:28.810 --> 00:38:33.020 What is the contribution of each link to the resulting 00:38:33.040 --> 00:38:34.240 inertial forces? 00:38:34.260 --> 00:38:38.110 So when we do this, we will look at what is the contribution 00:38:38.130 --> 00:38:42.520 of this joint and the attached link and the contribution of 00:38:42.540 --> 00:38:43.540 the others. 00:38:43.540 --> 00:38:46.940 And we just add them all, and you will see this structure 00:38:46.960 --> 00:38:49.870 coming all together. 00:38:49.890 --> 00:38:54.230 So that is a very different way than the way Newton and 00:38:54.250 --> 00:39:00.090 Euler formalized the dynamics, which relies on the fact that 00:39:00.110 --> 00:39:06.290 we take each of these rigid bodies and connect them through 00:39:06.310 --> 00:39:07.549 reaction forces. 00:39:07.570 --> 00:39:11.250 So if you take all the links and if you remove the joints, 00:39:11.270 --> 00:39:12.270 you get one link. 00:39:12.270 --> 00:39:20.110 But when you remove the joint, you substitute the removal of 00:39:20.130 --> 00:39:24.850 the joint with reaction forces, and then you can study all 00:39:24.870 --> 00:39:27.650 these reaction forces and try to find the relationship 00:39:27.670 --> 00:39:30.040 between forces and acceleration. 00:39:30.060 --> 00:39:33.950 Well, this way, which is called the Recursive Newton-Euler 00:39:33.970 --> 00:39:40.839 formulation, is going to require elimination of these 00:39:40.860 --> 00:39:45.880 internal forces and elimination of the forces of contact 00:39:45.900 --> 00:39:48.100 between the different rigid bodies. 00:39:48.120 --> 00:39:53.700 And what we will do instead--we will go to the velocities, 00:39:53.720 --> 00:40:00.220 and we will consider the energy associated with the motion 00:40:00.240 --> 00:40:01.799 of these rigid bodies. 00:40:01.820 --> 00:40:06.360 So if you have a velocity V and omega at the center of mass, 00:40:06.380 --> 00:40:30.890 and you can write the energy, the kinetic energy, associated 00:40:30.910 --> 00:40:33.410 with this moving mass and inertia associated with the rigid 00:40:30.900 --> 00:40:31.900 body. 00:40:31.900 --> 00:40:34.400 And simply by adding the kinetic energy of these different 00:40:32.800 --> 00:40:35.300 links, you have the total kinetic energy of the system. 00:40:33.700 --> 00:40:36.200 And by then taking these velocities and taking the Jacobian 00:40:34.600 --> 00:40:36.600 relationship between velocities to connect them to joint 00:40:35.320 --> 00:40:39.030 velocities, you will be able to extract the mass properties 00:40:39.050 --> 00:40:40.050 of the robot. 00:40:40.050 --> 00:40:44.150 So the mass metrics will become a very simple form of the 00:40:44.170 --> 00:40:45.170 Jacobian. 00:40:45.170 --> 00:40:49.530 So that's why I'm going to insist on your understanding of 00:40:49.550 --> 00:40:50.550 the Jacobian. 00:40:50.550 --> 00:40:54.160 Once you understand the Jacobian, you can scale the Jacobian 00:40:54.180 --> 00:40:57.870 with the masses and the inertias and get your dynamics. 00:40:57.890 --> 00:41:03.529 So going to dynamics is going to be very simple if after the 00:41:03.550 --> 00:41:07.890 midterm, you really understood what is the Jacobian. 00:41:07.910 --> 00:41:08.910 The dynamics-- 00:41:08.910 --> 00:41:12.560 This mass metrics associated with the dynamics of the system 00:41:12.580 --> 00:41:18.060 comes simply by looking at the sum of the contributions of 00:41:18.080 --> 00:41:22.150 the center of mass velocities and the Jacobian associated 00:41:22.170 --> 00:41:23.420 with the center of masses. 00:41:23.070 --> 00:41:27.100 In control, we will examine-- 00:41:27.120 --> 00:41:32.130 Oh, I'm going to assume also a little background in control. 00:41:32.150 --> 00:41:37.800 So we will go over just a single mass-spring system and 00:41:37.820 --> 00:41:43.070 analyze it, and then we will examine controllers such as PD 00:41:43.090 --> 00:41:46.780 controllers or PID controllers, proportional derivative or 00:41:46.800 --> 00:41:50.570 proportional integral derivative, and then we apply these in 00:41:50.590 --> 00:41:57.040 joint space and in task space by augmenting the controllers 00:41:57.060 --> 00:42:00.730 with the dynamic structure so that we account for the 00:42:00.750 --> 00:42:03.480 dynamics when we are controlling the robot. 00:42:03.500 --> 00:42:10.860 And that is going to lead to a very interesting analysis of 00:42:10.880 --> 00:42:14.890 the dynamics and how dynamics affect the behavior of the 00:42:14.910 --> 00:42:16.020 robot. 00:42:16.040 --> 00:42:20.150 And you can see that the equation of motion for two degrees 00:42:20.170 --> 00:42:24.500 of freedom comes to be sort of two equations involving not 00:42:24.520 --> 00:42:27.990 only the acceleration of the joint but the acceleration of 00:42:28.010 --> 00:42:31.980 the second joint, the velocities, centrifugal, Coriolis 00:42:32.000 --> 00:42:33.660 forces and gravity forces. 00:42:33.680 --> 00:42:39.009 And through this, all of these will have an effect, dynamic 00:42:39.030 --> 00:42:41.370 effect, and disturbances on the behavior. 00:42:41.390 --> 00:42:45.029 But we will analyze a structure that would allow us to 00:42:45.050 --> 00:42:47.800 design torque one and torque two, the torques applied to the 00:42:47.230 --> 00:42:52.990 motor, to create the behavior that is going to allow us to 00:42:53.010 --> 00:42:55.780 compensate for those effects. 00:42:55.800 --> 00:43:03.020 So all of these are descriptions in joint space--that is, 00:43:03.040 --> 00:43:07.830 descriptions of what torque and what motion at the joint. 00:43:07.850 --> 00:43:13.170 [sic] And what we will see is that in controlling robots, we 00:43:13.190 --> 00:43:18.970 can really simplify much further the problem by considering 00:43:18.990 --> 00:43:23.629 the behavior of the robot in term 00:43:23.650 --> 00:43:27.480 [sic] of its motion when it's performing a task--that is, we 00:43:27.500 --> 00:43:32.140 can go to the task itself, the task, in the case of the 00:43:32.160 --> 00:43:35.359 example I described, is how to move the hand to this 00:43:35.380 --> 00:43:40.030 location, without really focusing on how each of the joint 00:43:40.050 --> 00:43:41.450 is going to move. 00:43:41.470 --> 00:43:47.459 And this concept can be captured by simply thinking about 00:43:47.480 --> 00:43:52.500 this robot, this total robot, as if the robot was attracted 00:43:52.520 --> 00:43:54.020 to move to the goal position. 00:43:53.750 --> 00:43:56.590 This is similar to the way a human operate. 00:43:56.610 --> 00:43:59.610 [sic] When you are controlling your hand to move to a goal 00:43:59.160 --> 00:44:02.600 position, essentially you are visually surveying your hand 00:44:02.620 --> 00:44:03.620 to the goal. 00:44:03.620 --> 00:44:06.670 You are not thinking about how the joints are moving. 00:44:06.690 --> 00:44:11.340 You are just moving the hand by applying these forces to 00:44:11.360 --> 00:44:13.260 move the hand to the goal position. 00:44:13.280 --> 00:44:18.430 So it's like holding the hand and pulling it down to the 00:44:18.450 --> 00:44:19.450 goal. 00:44:19.450 --> 00:44:25.180 And at the initial configuration, you have no commitment 00:44:25.200 --> 00:44:28.169 about the final configuration of the arm. 00:44:28.190 --> 00:44:31.680 You are just applying the force towards the goal, and you 00:44:31.700 --> 00:44:33.450 are moving towards the goal. 00:44:33.470 --> 00:44:37.740 So simply by creating a gradient of a potential energy, you 00:44:37.760 --> 00:44:40.450 will be able to move to that configuration. 00:44:40.470 --> 00:44:44.290 And this is precisely what we saw in this example, in the 00:44:44.310 --> 00:44:49.560 example of this robot here. 00:44:49.580 --> 00:44:53.730 So this motion that we are creating-- 00:44:53.750 --> 00:44:58.970 So if we are going to move the hand to this location, we are 00:44:58.990 --> 00:45:02.870 going to generate a force that pulls like a magnet. 00:45:02.890 --> 00:45:06.230 It will pull the hand to this configuration. 00:45:06.250 --> 00:45:08.410 But at the same time, you have-- 00:45:08.430 --> 00:45:12.690 In this complex case, you have a robot that is standing, and 00:45:12.710 --> 00:45:13.840 it has to balance. 00:45:13.860 --> 00:45:15.810 So there are other things that needs 00:45:15.830 --> 00:45:17.480 [sic] to be taken into account. 00:45:17.500 --> 00:45:21.260 And what we are doing is we are also applying other 00:45:21.280 --> 00:45:24.640 potential energies to the rest of the body to balance. 00:45:24.660 --> 00:45:30.629 So when we apply this force, you see it's just following. 00:45:30.650 --> 00:45:32.050 It's like a magnet. 00:45:32.070 --> 00:45:33.690 It's following this configuration. 00:45:33.710 --> 00:45:37.010 There is no computation of the joint positions. 00:45:37.030 --> 00:45:42.230 Simply we are applying these attractive forces to the goal. 00:45:42.250 --> 00:45:47.040 We can apply it here, apply it there, or apply it to both. 00:45:47.060 --> 00:45:58.390 Now obviously, if you cut the motors, it's going to fall. 00:45:58.410 --> 00:46:04.799 And it behaves a little bit like a human, actually. 00:46:04.820 --> 00:46:11.670 When you cut the muscle (laughter) In fact, this 00:46:11.690 --> 00:46:12.690 environment, we developed-- 00:46:12.690 --> 00:46:14.180 It's quite interesting. 00:46:14.200 --> 00:46:19.799 You can not only interact with it by moving the goal, but 00:46:19.820 --> 00:46:23.320 you can go and pull the hair. (laughter) Ouch. 00:46:23.340 --> 00:46:25.760 You can pull anywhere. 00:46:25.780 --> 00:46:31.850 When I click here, I'm computing the forward kinematics and 00:46:31.870 --> 00:46:33.040 the Jacobian. 00:46:33.060 --> 00:46:38.720 And I'm applying a force that is immediately going to 00:46:38.740 --> 00:46:43.049 produce that force computed by the Jacobian on the motors, 00:46:43.070 --> 00:46:46.370 and everything will react in that way. 00:46:46.390 --> 00:46:49.799 So we are able to create those interaction 00:46:49.820 --> 00:46:54.880 [sic] between the graphics, the kinematics and apply it to 00:46:54.900 --> 00:46:55.900 the dynamic system. 00:46:55.900 --> 00:46:58.880 And everything actually is simulated on the laptop here. 00:46:58.900 --> 00:47:00.900 So this is an environment that allow us 00:47:00.660 --> 00:47:04.730 [sic] to do a lot of interesting simulations of humanlike 00:47:04.750 --> 00:47:09.150 structures. 00:47:09.170 --> 00:47:11.680 So you apply the force and you transform it. 00:47:11.700 --> 00:47:15.629 As I said, the relationship between forces and torques is 00:47:15.650 --> 00:47:18.150 also the Jacobian, so the Jacobian plays a very important 00:47:17.250 --> 00:47:18.250 role. 00:47:18.250 --> 00:47:23.750 And then the computer dynamics--all that we need to do is to 00:47:23.770 --> 00:47:27.830 understand the relationship between forces applied at the 00:47:27.850 --> 00:47:31.049 end of factor and the resulting acceleration. 00:47:31.070 --> 00:47:35.080 Now when we talked earlier about Newton law, we said force-- 00:47:35.100 --> 00:47:39.370 mass, acceleration equal force. 00:47:39.390 --> 00:47:41.680 And the mass was scalar. 00:47:41.700 --> 00:47:44.339 But this is a multi-value system. 00:47:44.360 --> 00:47:47.400 And the mass is going to be a big M, mass metrics. 00:47:47.420 --> 00:47:55.190 So the relationship between forces and acceleration is not 00:47:55.210 --> 00:47:59.150 linear--that is, forces and acceleration are not aligned 00:47:59.170 --> 00:48:01.920 because of the fact that you have a metrics. 00:48:01.940 --> 00:48:04.980 And because of that, you need to establish the relationship 00:48:05.000 --> 00:48:06.230 between the two. 00:48:06.250 --> 00:48:09.640 And once you have this model, you can account for the 00:48:09.660 --> 00:48:14.290 dynamics in your forces, and then you can align the forces 00:48:14.310 --> 00:48:19.240 to move, to be in the direction that produces the right 00:48:19.260 --> 00:48:20.260 acceleration. 00:48:20.260 --> 00:48:27.360 Finally, we need to deal with the problem of controlling 00:48:27.380 --> 00:48:28.380 contact. 00:48:28.380 --> 00:48:34.290 So when you are moving in space, it's one thing, but when we 00:48:34.310 --> 00:48:39.150 are going to move in contact space, it's a different thing. 00:48:39.170 --> 00:48:41.790 Applying this force put 00:48:41.810 --> 00:48:45.740 [sic] the whole structure under a constraint, and you have 00:48:45.760 --> 00:48:49.950 to account for these constraints and compute the normals to 00:48:49.970 --> 00:48:54.490 find reaction forces in order to control the forces being 00:48:54.510 --> 00:48:55.660 applied to the environment. 00:48:55.680 --> 00:49:01.279 So we need to deal with force control, and we need to 00:49:01.300 --> 00:49:06.160 stabilize the transition from free space to contact space-- 00:49:06.180 --> 00:49:09.180 so that is, we need to be able to control these contact 00:49:09.060 --> 00:49:10.670 forces while moving. 00:49:10.690 --> 00:49:12.300 And what is nice-- 00:49:12.320 --> 00:49:16.000 If you do this in the Cartesian space or in the task space, 00:49:16.020 --> 00:49:21.880 you will be able to just merge the two forces together to 00:49:21.900 --> 00:49:27.700 control the robot directly to produce motion and contact. 00:49:27.720 --> 00:49:31.859 I mentioned that we will discuss some other topics. 00:49:31.880 --> 00:49:36.290 There will be a guest lecturer that will talk about vision 00:49:36.310 --> 00:49:41.870 in robotics, and we will also discuss issues about design. 00:49:41.890 --> 00:49:44.890 I would like to discuss a little bit some issues related to 00:49:44.910 --> 00:49:51.490 safety and the issues related to making robots lighter with 00:49:51.510 --> 00:50:01.960 structures that become safer and flexible to work in a human 00:50:01.980 --> 00:50:02.980 environment. 00:50:02.980 --> 00:50:08.380 Also, we need to discuss a little bit about motion planning, 00:50:08.400 --> 00:50:11.450 and especially if we are going to insert those robots in the 00:50:11.470 --> 00:50:14.140 human environment, we need reactive planning. 00:50:14.160 --> 00:50:17.730 And there is-- 00:50:17.750 --> 00:50:22.770 In this video, you can see how a complex robotic system is 00:50:22.790 --> 00:50:27.810 reacting here to obstacles that are coming at it. 00:50:27.830 --> 00:50:30.140 It's moving away from those obstacles. 00:50:30.160 --> 00:50:35.560 And this is simply done by using the same type of concept 00:50:35.580 --> 00:50:38.980 that I described for moving to a goal position. 00:50:39.000 --> 00:50:42.980 I said we can create an attractive potential energy. 00:50:43.000 --> 00:50:46.900 In here, to create this motion, we are creating a repulsive 00:50:46.920 --> 00:50:48.480 potential energy. 00:50:48.500 --> 00:50:53.410 So if you put two magnets north-north, they will repel, and 00:50:53.430 --> 00:50:54.960 this is exactly what is happening. 00:50:54.980 --> 00:50:59.030 We are creating artificially those forces and making the 00:50:59.050 --> 00:51:00.800 robot move away. 00:51:00.820 --> 00:51:07.010 But if you have a global plan, you need to deal with the 00:51:07.030 --> 00:51:10.500 full plan so that you will not reach a local minima, and we 00:51:10.520 --> 00:51:14.460 then apply this technique to modify all the intermediate 00:51:14.480 --> 00:51:18.740 configurations so that a robot like this would be moving to 00:51:18.760 --> 00:51:22.470 a goal position through this plan. 00:51:22.490 --> 00:51:25.950 And when an obstacle or when the world is changed, the 00:51:25.970 --> 00:51:29.689 trajectory is moving, the hand is moving, and all of this is 00:51:29.710 --> 00:51:36.810 happening in real time, which is amazing for a robot with 00:51:36.830 --> 00:51:39.140 this number of degrees of freedom. 00:51:39.160 --> 00:51:40.730 The reason is-- 00:51:40.750 --> 00:51:43.940 I'm not sure if you're familiar with the problem. 00:51:43.960 --> 00:51:45.490 Oh, sorry, let me just-- 00:51:45.510 --> 00:51:50.510 The problem of motion planning in robotics is exponential in 00:51:50.530 --> 00:51:52.250 the number of degrees of freedom. 00:51:52.270 --> 00:51:57.730 So usually, if you want to replan a motion when one obstacle 00:51:57.750 --> 00:52:02.500 has moved, it would take hours to do for a large number of 00:52:02.520 --> 00:52:03.520 degrees of freedom. 00:52:03.530 --> 00:52:08.260 And here we are able to do this quite quickly because we are 00:52:08.280 --> 00:52:12.890 using the structure and we are using this concept of 00:52:12.910 --> 00:52:18.230 repulsive forces that modifies future configurations and 00:52:18.250 --> 00:52:19.440 integrate-- 00:52:19.460 --> 00:52:24.970 So this is an example showing Indiana Jones going through 00:52:24.990 --> 00:52:29.939 the obstacles modified by--in real time, actually, modified 00:52:29.960 --> 00:52:40.070 all these configurations. 00:52:40.090 --> 00:52:47.950 And all these computations are taking place in real time 00:52:47.970 --> 00:52:50.500 because we are using this initial structure and 00:52:50.520 --> 00:52:54.940 incrementally modifying all the configurations. 00:52:54.960 --> 00:53:01.380 Another topic that I mentioned slightly earlier is the 00:53:01.400 --> 00:53:05.080 implication on digital modeling of human. 00:53:05.100 --> 00:53:06.980 [sic] And learning from the human 00:53:07.000 --> 00:53:12.050 [sic] is very interesting and very attractive to create good 00:53:12.070 --> 00:53:14.930 controls for robots, and also understanding the human 00:53:14.950 --> 00:53:15.950 motion. 00:53:15.950 --> 00:53:20.490 In fact, currently, we are modeling Tai Chi motion and 00:53:20.510 --> 00:53:24.610 trying to analyze and learn from those motions. 00:53:24.630 --> 00:53:28.830 So you can go from motion capture to copying that motion to 00:53:28.850 --> 00:53:30.080 the robot. 00:53:30.100 --> 00:53:33.279 But in fact, you will end up with just one example of 00:53:33.300 --> 00:53:34.910 motion. 00:53:34.930 --> 00:53:39.740 The question really is how you can generalize, not just one 00:53:39.760 --> 00:53:40.950 specific motion. 00:53:40.970 --> 00:53:44.220 And to do that, if you want to generalize, you need to take 00:53:44.220 --> 00:53:47.899 the motion of the human from motion capture and map it not 00:53:47.920 --> 00:53:51.030 to the robot but to a model of the human. 00:53:51.050 --> 00:53:54.910 So you need to model the human, and modeling the human 00:53:54.930 --> 00:53:57.680 involves modeling the skeletal system. 00:53:57.700 --> 00:54:01.160 So we worked on this problem, so now you have-- 00:54:01.180 --> 00:54:04.359 This is a new kind of robot system with many degrees of 00:54:04.380 --> 00:54:08.380 freedom, about 79 degrees of freedom. 00:54:08.400 --> 00:54:11.150 And all of this is modeled through the same model of 00:54:10.910 --> 00:54:12.660 kinematics, dynamics. 00:54:12.680 --> 00:54:17.620 And then you can model the actuation, which is muscles now, 00:54:17.640 --> 00:54:20.660 and from this, you can learn a lot of things about the 00:54:20.680 --> 00:54:21.680 model. 00:54:21.680 --> 00:54:23.480 And then now you can control it. 00:54:23.500 --> 00:54:24.920 You can control-- 00:54:24.940 --> 00:54:26.410 This is synthesized motion. 00:54:26.430 --> 00:54:28.180 And you understand how this is working. 00:54:27.980 --> 00:54:31.590 You just guide the task, and then you have the balance 00:54:31.610 --> 00:54:38.600 taking place through other minimization of the reminder of 00:54:38.620 --> 00:54:42.529 the degrees of freedom. 00:54:42.550 --> 00:54:45.320 And then you can take those characteristics and map them to 00:54:45.340 --> 00:54:49.190 the robot, scale them to the robot--not copying trajectories 00:54:49.210 --> 00:54:50.990 but copying the characteristics of the motion. 00:54:51.010 --> 00:54:54.380 It's quite interesting. 00:54:54.400 --> 00:54:58.540 We'll discuss also a little bit about haptics. 00:54:58.560 --> 00:55:02.150 This will be more developed in Advanced Robotics later in 00:55:02.170 --> 00:55:08.290 the spring, but haptics is very important, especially in the 00:55:08.310 --> 00:55:10.120 interaction with the environment, the real physical 00:55:10.140 --> 00:55:11.140 environment. 00:55:11.140 --> 00:55:12.879 So you go and touch-- 00:55:12.900 --> 00:55:15.400 And now you have information that allows you to reconstruct 00:55:15.350 --> 00:55:23.600 the surface and move over now more descriptions of what you 00:55:23.620 --> 00:55:30.630 are touching and what normals you have. 00:55:30.650 --> 00:55:38.510 Well, contact. (laughter) Quite amazing. 00:55:38.530 --> 00:55:42.330 What is amazing about this is this is done in real time. 00:55:42.350 --> 00:55:47.319 So someone from the automotive industry was visiting us and 00:55:47.340 --> 00:55:51.970 said, ?Now you have model of skeletal systems and good 00:55:51.990 --> 00:55:53.839 models for resolving contact. 00:55:53.860 --> 00:55:58.300 Why don't you use them for crashes instead of using dummies, 00:55:58.320 --> 00:55:59.490 right? 00:55:59.510 --> 00:56:00.510 So-- 00:55:59.600 --> 00:56:04.430 Ouch. 00:56:04.450 --> 00:56:07.390 But it's only in the model. 00:56:07.410 --> 00:56:14.000 Well, there is a lot that will come later, but I will 00:56:14.020 --> 00:56:16.530 mention a few things about the interactivity also with 00:56:16.550 --> 00:56:20.500 obstacles and how we can deal with those issues and then 00:56:20.520 --> 00:56:27.140 combining locomotion--walking with manipulation and dynamic 00:56:27.160 --> 00:56:32.810 skills like jumping, landing and all these different things. 00:56:32.830 --> 00:56:37.130 Okay, so what is happening here? 00:56:37.150 --> 00:56:41.240 Okay, this is a different planet. 00:56:41.260 --> 00:56:42.510 I'm going to just-- 00:56:42.130 --> 00:56:48.050 Okay, and that will take us to the final, which will be on 00:56:48.070 --> 00:56:52.150 Friday, the 21st of March. 00:56:52.170 --> 00:56:54.310 And the time is different. 00:56:54.330 --> 00:56:55.830 It will be at 12:15. 00:56:55.630 --> 00:57:02.010 We will announce it, and hopefully we will have again a 00:57:02.030 --> 00:57:04.290 review session before that. 00:57:04.310 --> 00:57:06.240 It is on the schedule. 00:57:06.260 --> 00:57:10.300 In that review session, we'll review previous finals, and 00:57:10.320 --> 00:57:16.630 here you will have enough time to solve some good problems. 00:57:16.650 --> 00:57:20.330 So, by the way, not everything that you see in simulation is 00:57:20.350 --> 00:57:22.730 valid for the real world. 00:57:22.750 --> 00:57:27.070 And let's see How many skiers do we have here? 00:57:27.090 --> 00:57:29.380 Skiers. 00:57:29.400 --> 00:57:31.640 That's all? 00:57:31.660 --> 00:57:32.660 I would have thought-- 00:57:32.260 --> 00:57:33.260 Okay. 00:57:32.350 --> 00:57:33.350 Okay. 00:57:32.440 --> 00:57:39.440 Does it ski? 00:57:39.460 --> 00:57:45.560 Let's see the ski. 00:57:45.580 --> 00:57:47.330 Don't do that. (laughter) All right. 00:57:46.120 --> 00:57:48.370 I will see some of you on Monday. Okay.