{"id":309,"date":"2022-12-01T16:28:24","date_gmt":"2022-12-01T21:28:24","guid":{"rendered":"https:\/\/blogs.mathworks.com\/autonomous-systems\/?p=309"},"modified":"2022-12-12T16:07:09","modified_gmt":"2022-12-12T21:07:09","slug":"the-capabilities-of-autonomous-navigation-systems","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/autonomous-systems\/2022\/12\/01\/the-capabilities-of-autonomous-navigation-systems\/","title":{"rendered":"4 Capabilities of Autonomous Navigation Systems"},"content":{"rendered":"<h2>Autonomous Navigation with Brian Douglas: Part 3<\/h2>\n<p><em>This post is from <a href=\"https:\/\/engineeringmedia.com\/\">Brian Douglas<\/a>, YouTube content creator for Control Systems and Autonomous Applications.<\/em><\/p>\n<p>In the <a href=\"https:\/\/blogs.mathworks.com\/autonomous-systems\/2022\/11\/11\/autonomous-navigation-with-brian-douglas-part-2-heuristic-vs-optimal-approach-for-full-autonomy\/\">last post<\/a>, we learnt about the heuristic and optimal approaches for autonomous navigation. At first glance, an optimal approach to autonomous navigation might seem like a fairly straightforward problem &#8211; observe the environment to determine where the vehicle is, figure out where it needs to be, and then determine the best way to get there. Unfortunately, accomplishing this might not be as easy as that sentence makes it sound.<\/p>\n<p>I think the number one thing that can make autonomous navigation a difficult problem to solve is when the vehicle must navigate through an environment that isn\u2019t perfectly known. In these situations, the vehicle can\u2019t say for certain where it is, where the destination is, or what obstacles and constraints are in the way. Therefore, coming up with a viable plan and acting on that plan becomes challenging.<\/p>\n<p>&nbsp;<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"653\" height=\"269\" class=\"alignnone size-full wp-image-315\" src=\"http:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2022\/12\/Picture1.png\" alt=\"\" \/><\/p>\n<p>In general, the more predictable and understandable an environment is, the easier it is to accomplish full autonomous navigation.<\/p>\n<p>For example, building an autonomous spacecraft that orbits the Earth is typically a simpler navigation problem than an autonomous aircraft &#8211; at least in terms of environment complexity.\u00a0 Space is a more predictable environment than air because we have less uncertainty with the forces that act on the vehicle, and we have more certainty in the behavior of other nearby objects. When the vehicle comes up with a plan, say to perform a station-keeping maneuver, we have confidence that the spacecraft will autonomously be able to follow that plan without encountering unknown forces or obstacles from the environment. Therefore, we don\u2019t have to build a vehicle that has to account for a lot of unknown situations; orbiting the Earth is a relatively predictable environment.<\/p>\n<p>With aircrafts, on the other hand, we have to navigate through a lot more uncertainty. There are unknown wind gusts, flocks of birds flying around, other human-controlled planes, and having to land and taxi around an airport, just to name a few.<\/p>\n<p>Even with all of that, an autonomous aircraft is typically a simpler problem than an autonomous car.\u00a0 And it\u2019s for the same reasons. There is much more uncertainty driving around in a chaotic city than there is flying around in relatively open air.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"473\" height=\"523\" class=\"size-full wp-image-318 alignright\" src=\"http:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2022\/12\/Picture2.png\" alt=\"\" \/><\/p>\n<p>Building a vehicle that can <em>maneuver<\/em> autonomously is absolutely an awesome accomplishment and I don\u2019t want to trivialize it too much, however, the thing I want to stress here is that what makes autonomous vehicles impressive is not the fact that they can move on their own but that they can navigate autonomously within an uncertain and changing environment.\u00a0 Getting a car to move forward by itself simply requires an actuator that compresses the gas pedal.\u00a0 The difficulty comes from knowing <em>when<\/em> to compress the pedal. For the car, it\u2019s to make adjustments in a way that gets the car to the destination efficiently, while following local traffic laws, avoiding potholes and other obstacles, rerouting around construction, and avoiding other cars driven by unpredictable humans. And to do all of this in the snow and the rain and so on. Not an easy feat!<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"797\" height=\"328\" class=\"alignnone size-full wp-image-321\" src=\"http:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2022\/12\/Picture3.png\" alt=\"\" \/><\/p>\n<hr \/>\n<h2>4 capabilities of an autonomous systems<\/h2>\n<p>To understand how we overcome these challenges, let\u2019s split up the larger autonomous navigation problem into a set of four general capabilities.<\/p>\n<p><div id=\"attachment_324\" style=\"width: 897px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-324\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-324 size-full\" src=\"http:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2022\/12\/Picture4.png\" alt=\"\" width=\"887\" height=\"260\" \/><p id=\"caption-attachment-324\" class=\"wp-caption-text\">Refer the ebook on \u201c<a href=\"https:\/\/www.mathworks.com\/campaigns\/offers\/sensor-fusion-and-tracking-autonomous-systems-ebook.html\">Sensor Fusion and Tracing for Autonomous Systems: An Overview<\/a>\u201d for more information<\/p><\/div><\/p>\n<p>Autonomous systems need to interact with an uncertain physical world. To develop some certainty, sensors are used to collect information about both the state of the system and the state of the external world.\u00a0 Sensors are application dependent, but they can be anything that observe and measure some quantity. For example, an automated driving system may measure its own state with an accelerometer, but it also may measure the state of the environment with externally facing sensors like radar, lidar, and visible cameras.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"792\" height=\"214\" class=\"alignnone size-full wp-image-327\" src=\"http:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2022\/12\/Picture5.png\" alt=\"\" \/><\/p>\n<p>The sensor data isn\u2019t necessarily useful in its raw form. For example, a camera image might have several million pixels, each with 8 bits or more of information in three different color bands. This is a lot of data! In order to make use of this massive array of numbers, an algorithm or a human need to pull out something of value. In this way, perception is more than acquiring information, it\u2019s the act of interpreting it into a useful quantity.\u00a0 Perception can be separated into two different but equally important responsibilities: it\u2019s responsible for <strong>self-awareness<\/strong> (perceiving your own state) and it\u2019s responsible for <strong>situational awareness<\/strong> (perceiving other objects in the environment and tracking them).<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"792\" height=\"208\" class=\"alignnone size-full wp-image-330\" src=\"http:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2022\/12\/Picture6.png\" alt=\"\" \/><\/p>\n<p>After perception, the vehicle has the information it needs to make decisions, and one of the first decisions it has to make is to plan a path from its current location to the goal, avoiding obstacles and other objects along the way. I will share more on this topic in the upcoming blog posts.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-333 size-full\" src=\"http:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2022\/12\/Picture7.png\" alt=\"\" width=\"792\" height=\"179\" \/><\/p>\n<p>Refer the ebook on \u201c<a href=\"https:\/\/www.mathworks.com\/campaigns\/offers\/motion-planning-with-matlab.html\">Motion Planning with MATLAB<\/a>\u201d for more information<\/p>\n<p>The last step is to act on that plan; to command the motors and actuators in such a way that the vehicle follows the path.\u00a0 This is the job of the controller and the control system. We can think of the plan as the reference signal that the controller uses to command the actuators and other control effectors in a way that manipulates the system to move along that path.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"792\" height=\"163\" class=\"alignnone size-full wp-image-336\" src=\"http:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2022\/12\/Picture8.png\" alt=\"\" \/><\/p>\n<p>The state of the vehicle and the state of the physical world is constantly changing and so the whole autonomy loop continues. The vehicle senses the environment, it understands where it is in relation to landmarks in the environment, it perceives and tracks dynamics objects, it replans given this new set of information, it controls the actuators to follow that plan, and so on until it reaches the goal.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"936\" height=\"267\" class=\"alignnone size-full wp-image-339\" src=\"http:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2022\/12\/Picture9.png\" alt=\"\" \/><\/p>\n<hr \/>\n<h2>Combining the heuristic and optimal approaches<\/h2>\n<p>We\u2019re going to go into more detail on each of these capabilities throughout this blog, but before I end this post, I want to comment on how uncertainty in the environment affects which approach we want to take to solve the autonomous navigation problem.<\/p>\n<p>In the last post, we walked through the two different approaches for achieving full autonomy: a heuristic approach and an optimal approach. I want to point out that it doesn\u2019t have to be the case where a solution is either 100% heuristic or 100% optimal. We can use both approaches to achieve a larger goal and the choice to do so often comes down to how much knowledge the vehicle has about the environment it\u2019s operating within.<\/p>\n<p>Take an autonomous car, for example.\u00a0 At a high level, the vehicle can plan an optimal route through a city.\u00a0 To do this, the car would need access to the local street maps with which it could find an optimal path that minimizes the amount of time it takes for the journey.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"666\" height=\"290\" class=\"alignnone size-full wp-image-342\" src=\"http:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2022\/12\/Picture10.png\" alt=\"\" \/><\/p>\n<p>However, other cars and obstacles don\u2019t exist within that map. Therefore, as the autonomous vehicle approaches a slower car, it has to sense that car and adjust its original plan to either slow down and follow or to change lanes and pass. Passing might seem like the most optimal solution at first, however, this wouldn\u2019t necessarily be the case if, say, the slower car was only traveling 1 mph below the speed limit. Sure, the autonomous car <em>could<\/em> pass it and get to the destination faster, but the dangers of slowly overtaking the car and spending a lot of time in the on-coming traffic lane might outweigh the benefits of getting to the destination slightly faster.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"576\" height=\"165\" class=\"alignnone size-full wp-image-345\" src=\"http:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2022\/12\/Picture11.png\" alt=\"\" \/><\/p>\n<p>An optimal solution is only as good as the model you used to solve for it. Therefore, if the objective function doesn\u2019t consider the speed differential, then the decision to pass might not produce a desired result.\u00a0 So, why not write a better objective function and create a better model of the environment? Unfortunately, in some situations it is not practical to acquire all that information or understand the environment well enough.<\/p>\n<p>One possible way to get around this is to have a heuristic behavior or a rule that helps guide the vehicle in situations where there isn\u2019t enough information. For example, a rule could be, &#8220;only <em>attempt to pass a car if the lead car is traveling slower than 10 mph under the speed limit.<\/em>&#8221; That heuristic decision can be made using only the state of the lead car, and then once it is made \u2013 an optimal path into the adjacent lane can be created. In this way, these two approaches can complement each other.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"611\" height=\"226\" class=\"alignnone size-full wp-image-348\" src=\"http:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2022\/12\/Picture12.png\" alt=\"\" \/><\/p>\n<p>Of course, this doesn\u2019t guarantee that there won\u2019t be an oncoming obstacle and the vehicle has to merge back, but we can just add more rules to cover those situations! In this way, the heuristic approach allows us to make decisions when information is scarce and then make optimal decisions for the cases where more information is available.<\/p>\n<hr \/>\n<p>I keep using autonomous cars as the example, but they aren\u2019t the only systems that make use of these two approaches.<\/p>\n<ul>\n<li>There are other <a href=\"https:\/\/www.mathworks.com\/campaigns\/offers\/autonomous-mobile-robots.html\">ground vehicles<\/a>, like they have in Amazon warehouses that quickly maneuver to a given storage area to move packages around while not running into other mobile vehicles and stationary shelves.<\/li>\n<li>There are vehicles that search within disaster areas that navigate unknown and hazardous terrain.<\/li>\n<li>There are space missions like OSIRIS-REX which navigate around the previously unvisited asteroid Bennu and prepare for a precisely located touch and go to collect a sample to return to Earth.<\/li>\n<li>There are robotic arms (<a href=\"https:\/\/www.mathworks.com\/discovery\/cobots.html\">cobots<\/a>) and manipulators that navigate within their local space to pick things up and move them to new locations.<\/li>\n<li>There are <a href=\"https:\/\/www.mathworks.com\/videos\/simulate-and-deploy-uav-applications-with-sil-and-hil-workflows-1653992847786.html?s_tid=srchtitle\">UAVs and drones<\/a> that survey areas, and many, many more applications.<\/li>\n<\/ul>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"936\" height=\"463\" class=\"alignnone size-full wp-image-351\" src=\"http:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2022\/12\/Picture13.png\" alt=\"\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>In their own way, each of these systems can achieve the four capabilities of autonomous systems; they can sense their surroundings, perceive their environment, plan a path, and follow that path. In the next post, we\u2019re going to dive a little deeper into perception and talk about the localization problem &#8211; that is, how vehicles can determine where they are within an environment.<\/p>\n<hr \/>\n<p>To learn more on these capabilities, you can watch this detailed video on \u201c<a href=\"https:\/\/www.mathworks.com\/videos\/sensor-fusion-and-navigation-for-autonomous-systems-using-matlab-and-simulink-1592859402863.html?s_tid=srchtitle_sensor%20fusion%20and%20navigation_3\">Sensor Fusion and Navigation for Autonomous Systems using MATLAB and Simulink<\/a>\u201d. Thanks for sticking around till the end! If you haven\u2019t yet, please follow this blog to keep getting the updates for the upcoming content.<\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"overview-image\"><img src=\"https:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2022\/12\/Picture13.png\" class=\"img-responsive attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" decoding=\"async\" loading=\"lazy\" \/><\/div>\n<p>Autonomous Navigation with Brian Douglas: Part 3<br \/>\nThis post is from Brian Douglas, YouTube content creator for Control Systems and Autonomous Applications.<br \/>\nIn the last post, we learnt about the&#8230; <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/autonomous-systems\/2022\/12\/01\/the-capabilities-of-autonomous-navigation-systems\/\">read more >><\/a><\/p>\n","protected":false},"author":188,"featured_media":351,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6],"tags":[],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/autonomous-systems\/wp-json\/wp\/v2\/posts\/309"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/autonomous-systems\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/autonomous-systems\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/autonomous-systems\/wp-json\/wp\/v2\/users\/188"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/autonomous-systems\/wp-json\/wp\/v2\/comments?post=309"}],"version-history":[{"count":11,"href":"https:\/\/blogs.mathworks.com\/autonomous-systems\/wp-json\/wp\/v2\/posts\/309\/revisions"}],"predecessor-version":[{"id":386,"href":"https:\/\/blogs.mathworks.com\/autonomous-systems\/wp-json\/wp\/v2\/posts\/309\/revisions\/386"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/autonomous-systems\/wp-json\/wp\/v2\/media\/351"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/autonomous-systems\/wp-json\/wp\/v2\/media?parent=309"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/autonomous-systems\/wp-json\/wp\/v2\/categories?post=309"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/autonomous-systems\/wp-json\/wp\/v2\/tags?post=309"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}