diff --git a/_posts/2023-07-26-metr4202-week1.md b/_posts/2023-07-26-metr4202-week1.md new file mode 100644 index 0000000..4ada5af --- /dev/null +++ b/_posts/2023-07-26-metr4202-week1.md @@ -0,0 +1,105 @@ +--- +title: Robotics at a High Level +date: 2023-07-26 +categories: [Robotics] +tags: [study, robotics, engineering] # TAG names should always be lowercase +--- + + +* TOC +{:toc} + +## What are robots? + +It's a pretty broad term when you think about it. [Wikipedia](https://en.wikipedia.org/wiki/Robot) +says that "A robot is a machine --- especially one programmable by a computer --- capable of +carrying out a complex series of actions automatically". Here _automatically_ is meaning that at +least part of the control is the responsibility of the machine, usually via algorithms implemented +by the engineers who designed it. In other words, it make take some instructions from people via a +controller or other means however at least some of the decisions are made by the robot. For example, +quadcopter drones could be considered to be a kind of robot since even though humans usually use a +wireless controller to give them instructions, the drone uses control algorithms designed by an +engineer to ensure its stability _automatically_. + +![](/images/quadrocopter.jpg) _A quadrocopter drone with a wireless controller_ + +Of course, there are many examples of robots that perform there work without much control from +humans. The robotic arms that are now ubiquitous in manufacturing industries spring to mind. They +just go about there job, doing what they have been programmed to do with very minimal human +interaction required. + +![](/images/robot-arm-factory.jpg) _Some robotic arms used for manufacturing in a factory_ + +And of course, no overview of robotics would be complete without mentioning +[Boston Dynamics](https://bostondynamics.com/) and their backflipping robots. + +
+ +## What are the common problems robots must solve? + +Well this can be quite dependent on the application but to perform high level tasks like +self-driving cars or even something more mundane like a personal assistant bot that can make me a +sandwhich there are three big problems to solve. + +Firstly, _where am I?_ Solving this requires what is known as localisation. In other words, the +robot must have some representation of its environment and its location in it. OK, so now that the +robot knows where it is now it needs to know _where do I need to go?_ Of course we know that to make +a sandwhich you should probably find your way to the kitchen and then find the fridge and get out +the food you need e.t.c but this is all implicit when I ask my robot to _make me a sandwhich_. We +know this because of experience and implicit meaning which in general is fairly difficult to +directly program into a robot. Ontop of that, the robot now needs a concept of a kitchen and where +in its map or representation of the environment the kitchen could be. Again, very difficult to come +up with exact instructions for --- we just know because of our experiences. Finally, even once our +robot knows this, it must plan its path through the environment in order to reach the kitchen. It is +almost certain that on its way, the robot will encounter static obstacles like tables or walls and +maybe even dynamic obstacles like people or pets. When I ask my robot to make me a sandwhich I +didn't directly say it but it would be nice if it didn't blast a hole in my wall to get there --- or +worse my cat. So it needs to do some path planning and likely make dynamic changes to it as it makes +its way. + +## See, Think, Act + +As just discussed, most of the time for robots performing high level tasks they must constantly be +updating their plan as the environment around them changes. This is often known as the _see, think, +act_ cycle. + +First the robot gathers raw data about its environment and itself using sensors such as cameras, +ultransonic sensors, lidars, microphones, IMUs e.t.c. Already we have problems since the data +collected by the robot will be invariably _wrong_. Sensors are inherently vulnerable to noise in the +environment (information we don't care about) but also in most cases robots are _discrete_ systems +that live in a _continuous_ world. They are limited in the information that they can perceive in +terms of how often (temporal discretisation) and also how accurate (quantisation) it is. For the +noise problem, in many cases the frequency of the noise is much higher than the desired recordings +and so a low pass digital filter can be used to help attenuate it but there is little that can be +done about temporal discetisation and quantisation other than the limitation of your hardware and +choose it appropriately for the task. Interpolation and other tricks are possible but in any case +the amount of information is fundamentally limited by the sampling rate and bit precision. + +Now, after obtaining this information about the world, the robot must use it to make decisions. +Fundamentally, the data it has gathered is generally represented in very simple ways. Pixels are +just values in a grid (or array) representing the amount of red, green and blue in a small area of +the world. In order to gain some kind of useful understanding, the robot must use some kind of +algorithms or models to interpret the relationships and patterns in these grids of numbers. Somehow +we need to get from these grids of numbers to an understanding of where the kitchen is. This is +certainly not a trivial problem and something that has been a significant struggle. In the last +decade there has been impressive progress with the advances in deep learning. Instead of writing +algorithms for computers to execute, we found if we wrote algorithms to help the robots learn the +best algorithms to use by presenting it with lots of data this worked quite well. Pretty meta. +Convolutional Neural Networks were able to learn these layers of abstraction naturally using learned +kernels \(see my blog post [here]({% post_url 2023-05-23-an-intro-to-transfer-learning %}) for some +more details on CNNs\) and more recently, Vision Transformers (ViTs) have been able to achieve +state-of-the-art performance on imaging tasks. At the same time, computational power has continued +to grow with particular focus on parallelisation (performing multiple computations concurrently) +which is particularly significant for imaging tasks and training these neural netowrks. Furthermore, +once the robot has used these models to gain some model of its environment, other AI techniques such +as reinforcement learning have proved to be effective in helping it to make decisions based on the +information about its environment. + +This leads to the final stage in the cycle which is to _act_ in some way. In my case, hopefully the +robot decides to start moving towards the kitchen and not into my cat and to do so it will probably +turn some motors to move its wheels or legs or something like that. This in turn will affect the +robots state and potentially the environment around it so the whole process can repeat as it begins +gathering information about its environment again. + +So a pretty high level overview in the first week of my METR4202 course. I'm pretty excited to learn +more about the details of these parts in the upcoming weeks. diff --git a/assets/img/favicons/android-chrome-192x192.png b/assets/img/favicons/android-chrome-192x192.png new file mode 100755 index 0000000..ceb24e9 Binary files /dev/null and b/assets/img/favicons/android-chrome-192x192.png differ diff --git a/assets/img/favicons/android-chrome-512x512.png b/assets/img/favicons/android-chrome-512x512.png new file mode 100755 index 0000000..07f981d Binary files /dev/null and b/assets/img/favicons/android-chrome-512x512.png differ diff --git a/assets/img/favicons/apple-touch-icon.png b/assets/img/favicons/apple-touch-icon.png new file mode 100755 index 0000000..5b4b9e0 Binary files /dev/null and b/assets/img/favicons/apple-touch-icon.png differ diff --git a/assets/img/favicons/favicon-16x16.png b/assets/img/favicons/favicon-16x16.png new file mode 100755 index 0000000..a01660a Binary files /dev/null and b/assets/img/favicons/favicon-16x16.png differ diff --git a/assets/img/favicons/favicon-32x32.png b/assets/img/favicons/favicon-32x32.png new file mode 100755 index 0000000..0c9fa1a Binary files /dev/null and b/assets/img/favicons/favicon-32x32.png differ diff --git a/assets/img/favicons/favicon.ico b/assets/img/favicons/favicon.ico new file mode 100755 index 0000000..f17c13b Binary files /dev/null and b/assets/img/favicons/favicon.ico differ diff --git a/assets/img/favicons/mstile-150x150.png b/assets/img/favicons/mstile-150x150.png new file mode 100755 index 0000000..b913c81 Binary files /dev/null and b/assets/img/favicons/mstile-150x150.png differ diff --git a/assets/img/favicons/safari-pinned-tab.svg b/assets/img/favicons/safari-pinned-tab.svg new file mode 100755 index 0000000..6493748 --- /dev/null +++ b/assets/img/favicons/safari-pinned-tab.svg @@ -0,0 +1,46 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + diff --git a/images/quadrocopter.jpg b/images/quadrocopter.jpg new file mode 100755 index 0000000..237a72d Binary files /dev/null and b/images/quadrocopter.jpg differ diff --git a/images/robot-arm-factory.jpg b/images/robot-arm-factory.jpg new file mode 100755 index 0000000..814ef90 Binary files /dev/null and b/images/robot-arm-factory.jpg differ