ホームページ >バックエンド開発 >Python チュートリアル >matplotlib と A* アルゴリズムを使用したドローン ナビゲーション システムの構築
ドローンが複雑な環境をどのように移動するのか疑問に思ったことはありますか?このブログでは、Python、Matplotlib、および A* アルゴリズムを使用して、シンプルなドローン ナビゲーション システムを作成します。最後には、ドローンが迷路を解く様子を視覚化する実用的なシステムが完成します!
ドローン ナビゲーション システムを構築するには、次のものが必要です:
その前に、初心者向けに基本的な AI 用語を簡単に確認してみましょう。
私たちのドローンは2D迷路をナビゲートします。迷路は次のもので構成されます:
ドローンの目的:
迷路は次のようになります:
まず、必要なライブラリをインストールしてインポートします。
import matplotlib.pyplot as plt import numpy as np import random import math from heapq import heappop, heappush
迷路のサイズを定義しましょう:
パイソン
幅、高さ = 22、22
現実世界のナビゲーションでは、さまざまな方向への移動にさまざまなコストがかかる可能性があります。たとえば、北に移動することは東に移動するよりも難しい可能性があります。
DIRECTIONAL_WEIGHTS = {'N': 1.2, 'S': 1.0, 'E': 1.5, 'W': 1.3} DIRECTIONS = {'N': (-1, 0), 'S': (1, 0), 'E': (0, 1), 'W': (0, -1)}
壁で埋められたグリッドから始めます (1 秒):
import matplotlib.pyplot as plt import numpy as np import random import math from heapq import heappop, heappush
ナンピー。 ons() 関数は、指定された形状と型の新しい配列を作成するために使用され、1 で満たされます...デフォルト値で配列を初期化するのに役立ちます。
次に、壁だけで初期化されている迷路内にパスを「刻む」する関数を定義しましょう
DIRECTIONAL_WEIGHTS = {'N': 1.2, 'S': 1.0, 'E': 1.5, 'W': 1.3} DIRECTIONS = {'N': (-1, 0), 'S': (1, 0), 'E': (0, 1), 'W': (0, -1)}
maze = np.ones((2 * WIDTH + 1, 2 * HEIGHT + 1), dtype=int)
Matplotlib を使用して迷路を表示します:
def carve(x, y): maze[2 * x + 1, 2 * y + 1] = 0 # Mark current cell as a path directions = list(DIRECTIONS.items()) random.shuffle(directions) # Randomize directions for _, (dx, dy) in directions: nx, ny = x + dx, y + dy if 0 <= nx < WIDTH and 0 <= ny < HEIGHT and maze[2 * nx + 1, 2 * ny + 1] == 1: maze[2 * x + 1 + dx, 2 * y + 1 + dy] = 0 carve(nx, ny) carve(0, 0) # Start carving from the top-left corner
A* アルゴリズムは、経路コストとヒューリスティックの組み合わせを使用して、加重迷路内の最短経路を見つけます。
ヒューリスティックとして ユークリッド距離 を使用します。
start = (1, 1) end = (2 * WIDTH - 1, 2 * HEIGHT - 1) maze[start] = 0 maze[end] = 0
fig, ax = plt.subplots(figsize=(8, 6)) ax.imshow(maze, cmap='binary', interpolation='nearest') ax.set_title("2D Maze") plt.show()
迷路はできましたが、ドローンの進路はまだ見えません。
ドローンの経路を視覚化してみましょう:
def heuristic(a, b): return math.sqrt((a[0] - b[0]) ** 2 + (a[1] - b[1]) ** 2)
おめでとうございます! ?以下の機能を備えたドローン ナビゲーション システムを構築しました。
お気軽に結果を共有したり、以下のコメント欄で質問してください。
無限のその先へ?
以上がmatplotlib と A* アルゴリズムを使用したドローン ナビゲーション システムの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。