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