matplotlib 및 A* 알고리즘을 사용하여 드론 내비게이션 시스템 구축
드론이 복잡한 환경을 어떻게 탐색하는지 궁금한 적이 있나요? 이 블로그에서는 Python, Matplotlib 및 A* 알고리즘을 사용하여 간단한 드론 내비게이션 시스템을 만들어 보겠습니다. 결국에는 드론이 미로를 해결하는 모습을 시각화하는 작동 시스템을 갖추게 됩니다!
학습 내용
- '에이전트', '환경'과 같은 기본 AI 용어입니다.
- Python으로 미로를 만들고 시각화하는 방법
- A* 알고리즘이 탐색 문제를 해결하는 방법
- 드론의 경로를 구현하고 시각화하는 방법
소개
드론 내비게이션 시스템을 구축하려면 다음이 필요합니다.
- 요원: 드론?.
- 경로: 드론이 통과할 2D 미로 ?️.
- 검색 알고리즘: A* 알고리즘 ⭐.
먼저 AI를 처음 접하는 분들을 위해 몇 가지 기본 AI 용어를 빠르게 복습해 보겠습니다.
AI 주요 용어
- 에이전트: 환경(미로)을 인식하고 목표(미로의 끝 도달)를 달성하기 위해 조치를 취하는 개체(예: 드론)입니다.
- 환경: 에이전트가 작동하는 세계는 2D 미로로 표현됩니다.
- 휴리스틱: 검색을 안내하는 데 사용되는 경험 법칙 또는 추정치(예: 목표까지의 거리 측정)
시스템 설계
저희 드론은 2D 미로를 탐색합니다. 미로는 다음과 같이 구성됩니다:
- 벽(1로 표시되는 통과할 수 없는 영역).
- 경로(0으로 표시되는 열린 공간).
드론의 목표:
- 벽을 피하세요.?
- 길의 끝에 도달하세요.?
미로의 모습은 다음과 같습니다.
1단계: 미로 설정
필수 라이브러리 가져오기
먼저 필수 라이브러리를 설치하고 가져옵니다.
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
멍청이. ones() 함수는 주어진 모양과 유형의 새 배열을 만드는 데 사용되며, 1로 채워집니다. 기본값으로 배열을 초기화하는 데 유용합니다.
2단계: 미로 만들기
이제 벽만으로 초기화된 미로의 경로를 "조각"하는 함수를 정의해 보겠습니다
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)
3단계: 미로 시각화
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
4단계: A와 함께 미로 풀기*
A* 알고리즘은 경로 비용과 경험적 방법의 조합을 사용하여 가중치 미로에서 최단 경로를 찾습니다.
휴리스틱 정의
우리는 유클리드 거리를 휴리스틱으로 사용합니다.
start = (1, 1) end = (2 * WIDTH - 1, 2 * HEIGHT - 1) maze[start] = 0 maze[end] = 0
A* 알고리즘 구현
fig, ax = plt.subplots(figsize=(8, 6)) ax.imshow(maze, cmap='binary', interpolation='nearest') ax.set_title("2D Maze") plt.show()
5단계: 솔루션 시각화
미로가 생겼지만 아직 드론의 경로를 볼 수 없습니다.
드론의 경로를 시각화해 보겠습니다.
def heuristic(a, b): return math.sqrt((a[0] - b[0]) ** 2 + (a[1] - b[1]) ** 2)
결론
축하합니다! ? 다음과 같은 기능을 갖춘 드론 내비게이션 시스템을 구축했습니다.
- 2D 미로를 생성합니다.
- A* 알고리즘을 사용하여 해결합니다.
- 최단 경로를 시각화합니다.
다음 단계
- 다양한 미로 크기와 무게로 실험해 보세요.
- 맨해튼 거리와 같은 다른 경험적 방법을 사용해 보세요.
- 3D 미로를 시각화하여 더욱 복잡하게 만드세요!
아래 댓글로 결과를 공유하거나 질문을 남겨주세요.
무한과 그 너머로 ?
위 내용은 matplotlib 및 A* 알고리즘을 사용하여 드론 내비게이션 시스템 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.

Python은 배우고 사용하기 쉽고 C는 더 강력하지만 복잡합니다. 1. Python Syntax는 간결하며 초보자에게 적합합니다. 동적 타이핑 및 자동 메모리 관리를 사용하면 사용하기 쉽지만 런타임 오류가 발생할 수 있습니다. 2.C는 고성능 응용 프로그램에 적합한 저수준 제어 및 고급 기능을 제공하지만 학습 임계 값이 높고 수동 메모리 및 유형 안전 관리가 필요합니다.

제한된 시간에 Python 학습 효율을 극대화하려면 Python의 DateTime, Time 및 Schedule 모듈을 사용할 수 있습니다. 1. DateTime 모듈은 학습 시간을 기록하고 계획하는 데 사용됩니다. 2. 시간 모듈은 학습과 휴식 시간을 설정하는 데 도움이됩니다. 3. 일정 모듈은 주간 학습 작업을 자동으로 배열합니다.

Python은 개발 효율에서 C보다 낫지 만 C는 실행 성능이 높습니다. 1. Python의 간결한 구문 및 풍부한 라이브러리는 개발 효율성을 향상시킵니다. 2.C의 컴파일 유형 특성 및 하드웨어 제어는 실행 성능을 향상시킵니다. 선택할 때는 프로젝트 요구에 따라 개발 속도 및 실행 효율성을 평가해야합니다.

Pythonlistsarepartoftsandardlardlibrary, whileraysarenot.listsarebuilt-in, 다재다능하고, 수집 할 수있는 반면, arraysarreprovidedByTearRaymoduledlesscommonlyusedDuetolimitedFunctionality.

파이썬은 자동화, 스크립팅 및 작업 관리가 탁월합니다. 1) 자동화 : 파일 백업은 OS 및 Shutil과 같은 표준 라이브러리를 통해 실현됩니다. 2) 스크립트 쓰기 : PSUTIL 라이브러리를 사용하여 시스템 리소스를 모니터링합니다. 3) 작업 관리 : 일정 라이브러리를 사용하여 작업을 예약하십시오. Python의 사용 편의성과 풍부한 라이브러리 지원으로 인해 이러한 영역에서 선호하는 도구가됩니다.

하루에 2 시간 동안 파이썬을 배우는 것으로 충분합니까? 목표와 학습 방법에 따라 다릅니다. 1) 명확한 학습 계획을 개발, 2) 적절한 학습 자원 및 방법을 선택하고 3) 실습 연습 및 검토 및 통합 연습 및 검토 및 통합,이 기간 동안 Python의 기본 지식과 고급 기능을 점차적으로 마스터 할 수 있습니다.

Python과 C는 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1) Python은 간결한 구문 및 동적 타이핑으로 인해 빠른 개발 및 데이터 처리에 적합합니다. 2) C는 정적 타이핑 및 수동 메모리 관리로 인해 고성능 및 시스템 프로그래밍에 적합합니다.
