# Obstacle avoidance

Obstacle avoidance, in robotics, is a critical aspect of autonomous navigation and control systems. It is the capability of a robot or an autonomous system/machine to detect and circumvent obstacles in its path to reach a predefined destination. This technology plays a pivotal role in various fields, including industrial automation, self-driving cars, drones, and even space exploration. Obstacle avoidance enables robots to operate safely and efficiently in dynamic and complex environments, reducing the risk of collisions and damage.
For a robot or autonomous system to successfully navigate through obstacles, it must be able to detect such obstacles. This is most commonly done through the use of sensors, which allow the robot to process its environment, make a decision on what it must do to avoid an obstacle, and carry out that decision with the use of its effectors, or tools that allow a robot to interact with its environment.

## Approaches

There are several methods for robots or autonomous machines to carry out their decisions in real-time. Some of these methods include sensor-based approaches, path planning algorithms, and machine learning techniques.

### Sensor-based

One of the most common approaches to obstacle avoidance is the use of various sensors, such as ultrasonic, LiDAR, radar, sonar, and cameras. These sensors allow an autonomous machine to do a simple 3 step process: sense, think, and act. They take in inputs of distances in objects and provide the robot with data about its surroundings enabling it to detect obstacles and calculate their distances. The robot can then adjust its trajectory to navigate around these obstacles while maintaining its intended path. All of this is done and carried out in real-time and can be practically and effectively used in most applications of obstacle avoidance
While this method works well under most circumstances, there are such where more advanced techniques could be useful and appropriate for efficiently reaching an endpoint.

### Path planning algorithms

Path Planning Algorithms are critical for optimally calculating and routing collision-free paths. These algorithms take into account the robot's position, destination, and the locations of obstacles in the environment. They take and store this information to map out an area, and then use that map to calculate the fastest possible route to a specific destination. Such algorithms are commonly used in routing mazes and autonomous vehicles. Popular path-planning algorithms include A* (A-star), Dijkstra's algorithm, and Rapidly-exploring Random Trees (RRT). These algorithms help the robot find the quickest path to reach its goal while avoiding collisions, all in real time.

### Machine learning techniques

With the use of machine learning, the range of possibilities for obstacle avoidance becomes far greater. With artificial intelligence (AI), an autonomous machine can figure out a path to get to its destination, but can also learn to adapt to a rapidly changing environment at the same time. It can do this by being put through many testing stages of exposure to obstacles and environmental changes. By giving an AI a task and reward for doing a task correctly, over time, it can learn to do this task efficiently and effectively. This allows the machine to understand what its obstacles are and to come up with an efficient path around them. It also gives the machine the ability to learn how to deal with specific cases, which can include dealing with water, hills, high winds or temperatures, etc. This use of AI allows the autonomous machine to react accordingly to a plethora of situations that could be expected or unexpected. This form of obstacle avoidance is especially good in autonomous vehicles as it removes possible human errors that can occur.

## Applications

Obstacle avoidance can be found in a variety of different fields, including but not limited to:

### Autonomous vehicles

    Vehicles with the ability to drive themselves have been around since the 1980s and have been especially popularized in modern culture due to companies such as Tesla and Nvidia.

### Satellites

    Due to there being debris around Earth's orbit, satellites must be able to avoid such debris. They can do this by detecting and calculating if and when an object will hit the satellite. Once that is done, the satellite can use drag to decelerate and change its trajectory to avoid impact.

### Drones

    Drones can be used autonomously for a variety of reasons, some of which include mail, military, mapping, agriculture, and much more.

### Public Transport

    The rise of autonomous vehicles has also lead to their use for public transports as a cheaper alternative to hiring drivers, while also removing possible human error.

### Industrial Systems

    Large corporations use obstacle avoidance when it comes to their automated industrial systems, which replace the need for workers and reduces the amount of mistakes made.

## Challenges

Although these strategies for incorporating obstacle avoidance work, there are challenges to them that still require further development and planning. For one, it's difficult for sensors to quickly take in information on their environment, have the machine process the information, and make a decision about what it has to do to avoid an obstacle when it's moving too fast. This problem is very difficult to fix and if the machine can't act quickly enough, it can lead to the danger or destruction of the machine and any people around it. It is also incredibly difficult to account for every possible obstacle that can get in the way of an autonomous machine. For example, when it comes to satellites, there are millions of pieces of debris in Earth's orbit, so it is difficult to know when one may hit a satellite and from where and when.