A.K.03/appendix/obstacle.ipynb
Mehrdad Mihankhah 12cabf65ea initial commit
2025-11-16 15:37:13 +01:00

127 lines
23 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Obstacle avoidance (advanced methods)\n",
"**⚠️ Optional Advanced method**\n",
"The contents of this module cover advanced topics that not all students are expected to understand."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Instead of using a decision tree with multiple if-else conditions, a more streamlined approach is to construct an occupancy map of the environment. When a potential obstacle is detected, you update this map by marking its estimated location. For example, an occupancy map might look like this:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Define the grid size\n",
"grid_size = (10, 10) # 10x10 grid\n",
"occupancy_grid = np.zeros(grid_size)\n",
"\n",
"# Mark some obstacles (set 1 for obstacles)\n",
"# Example: Creating a block of obstacles\n",
"occupancy_grid[2:4, 2:4] = 1 # Obstacle block in (2,2) to (3,3)\n",
"occupancy_grid[6:9, 6] = 1 # Vertical obstacle at x = 6\n",
"occupancy_grid[7, 7:9] = 1 # Horizontal obstacle at y = 7\n",
"\n",
"# Function to visualize the occupancy grid\n",
"def plot_occupancy_grid(grid):\n",
" plt.imshow(grid, cmap='gray_r', origin='upper')\n",
" plt.grid(True)\n",
" plt.xticks(np.arange(grid.shape[1]))\n",
" plt.yticks(np.arange(grid.shape[0]))\n",
" plt.title(\"Occupancy Grid for Path Planning\")\n",
" plt.show()\n",
"\n",
"# Plot the grid\n",
"plot_occupancy_grid(occupancy_grid)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With an updated map that includes obstacles, you can identify when a planned path intersects with one. If an obstacle is detected along your current path, the path is considered invalid, and a new route must be calculated to avoid the obstacle."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Potential Field Method in Robotics**\n",
"\n",
"The Potential Field Method is a navigation technique in robotics that emulates certain natural physical phenomena to guide a robot toward a goal. Think about how a charged particle moves within an electric or magnetic field, or how a ball naturally rolls downhill due to gravity. In these cases, the movement is influenced by fields or slopes that direct the object toward a particular point—like the source of the field or the lowest point in the valley.\n",
"\n",
"In robotic applications, we replicate this idea by creating an artificial potential field within the robot's operating environment. This field is engineered to pull the robot toward a designated goal location. By carefully designing the characteristics of this potential field, we can induce specific behaviors in the robot, such as moving smoothly toward the target.\n",
"\n",
"**How Does the Potential Field Method Work?**\n",
"\n",
"Imagine a scenario where the robot needs to reach a goal position, and there are no obstacles in its path. Traditionally, you might calculate the robot's position relative to the goal and then determine the exact control actions required—like setting specific velocities or steering angles—to move directly toward the goal.\n",
"\n",
"In contrast, the potential field approach involves the following steps:\n",
"\n",
"1. **Creation of an Attractive Field**: We define a potential field over the entire free space that has its lowest value at the goal position. This field effectively creates a \"downhill\" slope leading to the goal.\n",
"\n",
"2. **Evaluation of the Field at the Robot's Position**: At each time step, the robot assesses the potential field at its current location.\n",
"\n",
"3. **Calculation of the Induced Force**: The robot computes the gradient (slope) of the potential field at its position. This gradient represents the force acting on the robot, analogous to how gravity would pull a ball downhill.\n",
"\n",
"4. **Movement Toward the Goal**: The robot moves in the direction indicated by the force, which naturally leads it toward the goal.\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Obstacles can be avoided using the Potential Field Method by assigning repulsive potential fields to them. While the goal generates an attractive potential field that pulls the robot toward it, each obstacle creates a repulsive field that pushes the robot away. A guide on how to this on python can be found at : https://medium.com/nerd-for-tech/local-path-planning-using-virtual-potential-field-in-python-ec0998f490af"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}