Skip to main content
Summary

로봇 수학을 실험할 작은 작업실 만들기

로봇 수학을 배우는 일은 칠판에 공식을 적는 것만으로는 조금 답답합니다. 로봇은 움직이고, 센서는 흔들리고, 좌표는 계속 바뀝니다. 그래서 이 책에서는 수식을 눈으로 보고, 코드를 바꿔 보고, 그래프가 어떻게 달라지는지 확인하며 배웁니다.

그 실험실의 중심에 Python이 있습니다.

Python은 로봇공학에서 널리 쓰입니다. 이유는 단순합니다. 문법이 비교적 읽기 쉽고, 수학 계산과 시각화 도구가 풍부하며, 카메라 영상 처리나 시뮬레이션 같은 작업으로 확장하기 좋기 때문입니다. 실제로 Robotics Toolbox for Python 같은 로봇공학 도구도 NumPy, Matplotlib, Jupyter 같은 Python 생태계의 장점을 적극적으로 활용합니다.1

이 장의 목표는 멋진 로봇을 바로 움직이는 것이 아닙니다. 먼저 안정적인 책상을 하나 마련하는 것입니다. 앞으로 우리는 그 책상 위에서 벡터를 만들고, 행렬을 곱하고, 로봇의 궤적을 그리고, 센서 노이즈를 흉내 낼 것입니다.

Python 개발 환경 준비

Python 설치 확인하기

먼저 Python이 설치되어 있는지 확인해 봅시다. 터미널을 엽니다. Windows에서는 명령 프롬프트 또는 PowerShell, macOS와 Linux에서는 Terminal을 열면 됩니다.

다음 명령을 입력합니다.

python --version

환경에 따라 python 대신 python3를 써야 할 수도 있습니다.

python3 --version

정상적으로 설치되어 있다면 다음과 비슷한 결과가 나옵니다.

Python 3.12.4

정확히 같은 숫자가 아니어도 괜찮습니다. 이 책의 실습은 최신 Python 3 계열에서 진행하는 것을 권장합니다. 가능하면 Python 3.11 또는 3.12처럼 많은 과학 계산 패키지가 안정적으로 지원하는 버전을 사용하세요.

다음으로 pip를 확인합니다. pip는 Python 패키지를 설치하는 도구입니다. 앞으로 NumPy, Matplotlib, OpenCV, Jupyter Notebook을 설치할 때 계속 사용합니다.

pip --version

또는 다음 명령을 사용할 수 있습니다.

python -m pip --version

macOS나 Linux에서 python3를 사용하는 환경이라면 다음처럼 입력합니다.

python3 -m pip --version

여기서 중요한 습관이 하나 있습니다. 패키지를 설치할 때 단순히 pip install ...을 입력해도 되지만, 이 책에서는 되도록 다음 형태를 권장합니다.

python -m pip install 패키지이름

이렇게 하면 "지금 실행하는 Python"에 패키지를 설치한다는 뜻이 더 분명해집니다. 컴퓨터에 Python이 여러 개 설치되어 있을 때 특히 도움이 됩니다.

프로젝트 폴더 만들기

이제 실습 파일을 담을 폴더를 만듭니다. 폴더 이름은 자유롭게 정해도 되지만, 여기서는 robot-math-python이라고 하겠습니다.

Windows에서는 다음과 같이 입력할 수 있습니다.

mkdir robot-math-python
cd robot-math-python

macOS와 Linux에서도 같습니다.

mkdir robot-math-python
cd robot-math-python

이 폴더는 앞으로 이 책의 작은 로봇 연구실이 됩니다. 여기에 노트북 파일, Python 스크립트, 저장한 그래프, 실습용 이미지가 쌓일 것입니다.

가상환경이 필요한 이유

Python을 처음 배우는 사람에게 가상환경은 조금 귀찮게 느껴질 수 있습니다. 하지만 로봇공학 실습에서는 매우 중요합니다.

상상해 봅시다. 어느 날은 카메라 실습을 위해 OpenCV를 설치합니다. 다음 날은 강화학습 시뮬레이터를 설치합니다. 또 다음 날은 ROS2와 연결되는 패키지를 설치합니다. 각각의 도구가 원하는 패키지 버전이 조금씩 다르면 어느 순간 이런 일이 생깁니다.

"어제는 실행됐는데 오늘은 왜 안 되지?"

가상환경은 이런 충돌을 줄이기 위한 작은 격리 공간입니다. 프로젝트마다 독립된 Python 환경을 만들고, 그 안에 필요한 패키지만 설치합니다. 이 책의 실습은 하나의 가상환경 안에서 진행하겠습니다.

venv로 가상환경 만들기

Python에는 기본으로 제공되는 venv라는 가상환경 도구가 있습니다. 별도의 프로그램을 설치하지 않아도 사용할 수 있어 가볍고 단순합니다.

프로젝트 폴더 안에서 다음 명령을 실행합니다.

python -m venv .venv

macOS나 Linux에서 python3를 사용한다면 다음처럼 입력합니다.

python3 -m venv .venv

여기서 .venv는 가상환경 폴더 이름입니다. 이름을 꼭 .venv로 해야 하는 것은 아니지만, 많은 Python 프로젝트에서 흔히 쓰는 이름이라 그대로 사용하겠습니다.

가상환경을 만들었다면 이제 활성화해야 합니다.

Windows 명령 프롬프트에서는 다음 명령을 사용합니다.

.venvScriptsactivate

Windows PowerShell에서는 다음 명령을 사용합니다.

.venvScriptsActivate.ps1

macOS와 Linux에서는 다음 명령을 사용합니다.

source .venv/bin/activate

활성화가 잘 되면 터미널 앞쪽에 (.venv) 같은 표시가 붙습니다.

(.venv) robot-math-python $

이제 이 터미널에서 설치하는 패키지는 시스템 전체가 아니라 현재 프로젝트의 가상환경 안에 들어갑니다. 이 작은 차이가 나중에 큰 혼란을 막아 줍니다.

가상환경을 끄고 싶을 때는 다음 명령을 입력합니다.

deactivate

하지만 이 책의 실습을 할 때는 항상 가상환경을 켠 상태에서 진행하세요.

pip 업데이트하기

패키지를 설치하기 전에 pip를 최신 상태로 업데이트하겠습니다.

python -m pip install --upgrade pip

이 명령은 현재 가상환경 안의 pip를 업데이트합니다. 만약 터미널 앞에 (.venv)가 붙어 있다면 제대로 된 위치에서 실행하고 있는 것입니다.

설치나 업데이트 도중 경고 메시지가 조금 나올 수 있습니다. 빨간 글씨라고 해서 항상 실패는 아닙니다. 하지만 마지막에 Successfully installed 또는 Requirement already satisfied와 비슷한 문장이 보이면 대체로 정상입니다.

핵심 라이브러리 설치하기

이 책에서 가장 먼저 사용할 도구는 네 가지입니다.

  • NumPy: 벡터와 행렬 계산

  • Matplotlib: 좌표, 궤적, 그래프 시각화

  • OpenCV: 이미지와 카메라 데이터 처리

  • Jupyter Notebook: 코드를 한 칸씩 실행하며 실험 기록 남기기

설치는 한 줄이면 됩니다.

python -m pip install numpy matplotlib opencv-python jupyter

조금 시간이 걸릴 수 있습니다. 특히 처음 설치할 때는 여러 의존 패키지가 함께 내려받아집니다. 의존 패키지란 어떤 패키지가 동작하기 위해 함께 필요한 다른 패키지를 말합니다.

설치가 끝나면 바로 확인해 봅시다.

python -m pip list

설치된 패키지 목록에 numpy, matplotlib, opencv-python, jupyter가 보이면 준비가 된 것입니다.

NumPy: 벡터와 행렬을 다루는 손

로봇의 위치는 숫자로 표현됩니다. 예를 들어 2D 평면에서 로봇의 위치가 x축으로 2, y축으로 3이라면 [2, 3]처럼 나타낼 수 있습니다. 목표 지점이 [5, 7]이라면 로봇은 어느 방향으로 가야 할까요? 이런 계산을 편하게 해 주는 도구가 NumPy입니다.

NumPy는 큰 배열과 행렬 계산을 빠르고 간결하게 처리합니다. 로봇공학에서는 위치 벡터, 속도 벡터, 회전 행렬, 센서 데이터 배열을 거의 매일 다루게 됩니다.

설치가 잘 되었는지 확인하기 위해 Python을 실행합니다.

python

Python 프롬프트가 열리면 다음 코드를 입력합니다.

import numpy as np

robot = np.array([2.0, 3.0])
goal = np.array([5.0, 7.0])

direction = goal - robot
distance = np.linalg.norm(direction)

print("목표 방향 벡터:", direction)
print("목표까지 거리:", distance)

결과는 다음과 비슷합니다.

목표 방향 벡터: [3. 4.]
목표까지 거리: 5.0

이 작은 예제에는 앞으로 반복해서 만날 로봇 수학의 핵심이 들어 있습니다. 로봇 위치에서 목표 위치를 빼면 "어느 방향으로 가야 하는지"가 나오고, 그 벡터의 길이를 구하면 "얼마나 멀리 있는지"가 나옵니다.

Python 프롬프트를 종료하려면 다음을 입력합니다.

exit()

Matplotlib: 움직임을 눈으로 보는 창

수학을 코드로 계산하는 것만으로는 부족합니다. 로봇이 실제로 어디에 있고, 어떤 경로로 움직였는지 눈으로 확인해야 합니다. 이때 사용하는 도구가 Matplotlib입니다.

Matplotlib은 Python에서 가장 널리 쓰이는 그래프 도구 중 하나입니다. 로봇 수학 실습에서는 점, 선, 화살표, 궤적을 그리는 데 사용합니다. Python 기반 2D 로봇 운동학 시뮬레이션에서도 NumPy는 계산을, Matplotlib은 실시간 시각화와 애니메이션을 맡는 방식이 자주 쓰입니다.2

다음 코드를 check_plot.py라는 파일로 저장해 봅시다.

import numpy as np
import matplotlib.pyplot as plt

robot = np.array([2.0, 3.0])
goal = np.array([5.0, 7.0])

plt.figure(figsize=(5, 5))
plt.scatter(robot[0], robot[1], label="robot", s=100)
plt.scatter(goal[0], goal[1], label="goal", s=100)
plt.plot([robot[0], goal[0]], [robot[1], goal[1]], "--")

plt.xlim(0, 8)
plt.ylim(0, 8)
plt.grid(True)
plt.gca().set_aspect("equal", adjustable="box")
plt.legend()
plt.show()

터미널에서 실행합니다.

python check_plot.py

작은 창이 뜨고 로봇 위치와 목표 위치가 점으로 표시됩니다. 두 점 사이의 점선은 로봇이 목표를 향해 가야 할 방향처럼 보입니다. 아직 로봇이 움직이지는 않았지만, 벌써 좌표와 벡터가 그림으로 바뀌었습니다.

앞으로 우리는 이 창에 로봇의 방향 화살표를 그리고, 이동 궤적을 남기고, 센서 오차가 얼마나 흔들리는지도 표시할 것입니다.

OpenCV: 로봇의 눈을 다루는 도구

로봇이 세상을 이해하는 대표적인 방법 중 하나는 카메라입니다. 카메라는 이미지를 만들고, 이미지는 결국 숫자 배열입니다. OpenCV는 이 이미지 배열을 읽고, 변환하고, 분석하는 데 사용하는 컴퓨터 비전 라이브러리입니다.

OpenCV는 이미지와 동영상 처리에 널리 쓰이며, Python에서는 opencv-python 패키지를 설치해 사용할 수 있습니다.3 이 책에서 카메라를 깊게 다루지는 않지만, 좌표와 행렬을 배운 뒤 이미지 좌표와 로봇 좌표를 연결하는 순간 OpenCV가 자연스럽게 등장합니다.

설치 확인을 위해 실제 이미지 파일 없이 간단한 이미지 객체를 만들어 보겠습니다.

import numpy as np
import cv2

image = np.zeros((100, 100, 3), dtype=np.uint8)
image[:, :] = (0, 0, 255)

print("OpenCV version:", cv2.__version__)
print("image shape:", image.shape)

파일 이름을 check_opencv.py로 저장하고 실행합니다.

python check_opencv.py

다음과 비슷한 결과가 나오면 성공입니다.

OpenCV version: 4.x.x
image shape: (100, 100, 3)

여기서 (100, 100, 3)은 높이 100, 너비 100, 색상 채널 3개를 뜻합니다. 색상 채널은 빨강, 초록, 파랑 같은 색 정보를 담는 층이라고 생각하면 됩니다. OpenCV에서는 기본적으로 BGR 순서, 즉 파랑·초록·빨강 순서로 색을 다루는 경우가 많습니다.

Jupyter Notebook에서 OpenCV 이미지를 볼 때는 cv2.imshow()보다 Matplotlib을 이용하는 편이 안전합니다. 일부 환경에서는 OpenCV 창 표시 함수가 노트북 커널과 잘 맞지 않을 수 있기 때문입니다.4

Jupyter Notebook: 실험하고 기록하는 노트

지금까지는 .py 파일을 만들고 실행했습니다. 이 방식은 깔끔하지만, 수학을 배우며 실험하기에는 약간 딱딱합니다. 한 줄을 바꾸고, 실행하고, 그래프를 보고, 다시 설명을 적고 싶을 때가 많기 때문입니다.

Jupyter Notebook은 이런 학습에 잘 맞습니다. 하나의 문서 안에 코드, 설명, 수식, 그래프를 함께 넣을 수 있습니다. 로봇공학 데이터 분석에서도 센서값, 궤적, 성능 지표를 바로 시각화하고 실험 과정을 기록하는 도구로 자주 사용됩니다.5

가상환경이 켜진 상태에서 다음 명령을 실행합니다.

jupyter notebook

웹브라우저가 열리고 파일 목록이 보일 것입니다. 만약 자동으로 열리지 않으면 터미널에 표시된 http://localhost:8888/... 형태의 주소를 복사해 브라우저 주소창에 붙여 넣으면 됩니다.

새 노트북을 만들고 첫 번째 셀에 다음 코드를 입력합니다.

import numpy as np
import matplotlib.pyplot as plt

robot = np.array([0.0, 0.0])
velocity = np.array([0.2, 0.1])

positions = []
for _ in range(20):
    positions.append(robot.copy())
    robot = robot + velocity

positions = np.array(positions)

plt.plot(positions[:, 0], positions[:, 1], marker="o")
plt.grid(True)
plt.gca().set_aspect("equal", adjustable="box")
plt.xlabel("x")
plt.ylabel("y")
plt.title("A tiny robot trajectory")
plt.show()

셀을 실행하면 바로 아래에 그래프가 나타납니다. 이 그래프는 아주 단순한 로봇의 이동 궤적입니다. 매 순간 x 방향으로 0.2, y 방향으로 0.1만큼 움직였고, 그 위치들을 이어 그린 것입니다.

이것이 이 책의 기본 학습 방식입니다. 코드를 실행하고, 그림을 보고, 숫자를 바꾸고, 다시 확인합니다. 예를 들어 velocity = np.array([0.2, 0.1])를 velocity = np.array([0.1, 0.3])으로 바꾸면 궤적의 기울기가 달라집니다. 공식은 그대로지만 움직임의 감각이 달라집니다.

노트북 셀을 다루는 기본 습관

Jupyter Notebook에서는 코드를 작은 단위로 나누어 실행합니다. 이 작은 칸을 셀이라고 부릅니다. 셀 단위로 실행한다는 점은 로봇 수학 학습에 큰 장점입니다.

예를 들어 첫 번째 셀에는 라이브러리 import를 모아 둡니다.

import numpy as np
import matplotlib.pyplot as plt

두 번째 셀에는 로봇의 초기 조건을 둡니다.

robot = np.array([0.0, 0.0])
goal = np.array([3.0, 2.0])

세 번째 셀에는 계산을 넣습니다.

direction = goal - robot
distance = np.linalg.norm(direction)

print(direction)
print(distance)

네 번째 셀에는 그림을 그립니다.

plt.scatter(robot[0], robot[1], label="robot")
plt.scatter(goal[0], goal[1], label="goal")
plt.grid(True)
plt.legend()
plt.show()

이렇게 나누어 두면 어느 부분에서 문제가 생겼는지 찾기 쉽습니다. 또한 노트북 자체가 실험 기록이 됩니다. "이 속도에서는 로봇이 너무 늦다", "이 노이즈에서는 위치 추정이 많이 흔들린다" 같은 메모를 코드 사이에 남길 수 있습니다.

다만 주의할 점도 있습니다. 노트북은 셀 실행 순서가 꼬이면 현재 변수 상태를 헷갈리기 쉽습니다. 이상한 결과가 나온다면 메뉴에서 커널을 재시작한 뒤 위에서부터 차례대로 다시 실행해 보세요. 로봇이 길을 잃었을 때 출발점으로 되돌리는 것과 비슷합니다.

설치 확인용 종합 테스트

이제 네 가지 라이브러리가 모두 제대로 동작하는지 한 번에 확인해 보겠습니다. 새 파일 check_environment.py를 만들고 다음 코드를 입력합니다.

import numpy as np
import matplotlib.pyplot as plt
import cv2

print("NumPy:", np.__version__)
print("OpenCV:", cv2.__version__)

# 1. 벡터 계산
robot = np.array([1.0, 1.0])
goal = np.array([4.0, 5.0])
direction = goal - robot
distance = np.linalg.norm(direction)

print("direction:", direction)
print("distance:", distance)

# 2. 이미지 객체 생성
image = np.zeros((50, 50, 3), dtype=np.uint8)
image[:, :] = (255, 0, 0)
print("image shape:", image.shape)

# 3. 그래프 출력
plt.figure(figsize=(5, 5))
plt.scatter(robot[0], robot[1], label="robot", s=100)
plt.scatter(goal[0], goal[1], label="goal", s=100)
plt.arrow(
    robot[0], robot[1],
    direction[0], direction[1],
    length_includes_head=True,
    head_width=0.2,
    color="gray"
)
plt.xlim(0, 6)
plt.ylim(0, 6)
plt.grid(True)
plt.gca().set_aspect("equal", adjustable="box")
plt.legend()
plt.title("Environment check")
plt.show()

실행합니다.

python check_environment.py

버전 정보가 출력되고, 로봇에서 목표점으로 향하는 화살표 그래프가 나타나면 환경 준비는 성공입니다.

여기서 우리는 세 가지를 확인했습니다. NumPy로 벡터를 계산했고, OpenCV가 다룰 수 있는 이미지 배열을 만들었고, Matplotlib으로 좌표 위에 결과를 그렸습니다. 아주 작은 테스트지만 앞으로 만들 로봇 시뮬레이터의 재료가 모두 들어 있습니다.

VS Code를 사용할 때의 기본 설정

이 책은 특정 편집기를 강제하지 않습니다. 메모장과 터미널만으로도 실습할 수 있습니다. 그래도 많은 독자가 VS Code를 사용할 가능성이 높으므로 기본 흐름만 짚고 넘어가겠습니다.

VS Code에서 프로젝트 폴더 robot-math-python을 엽니다. 그런 다음 Python 확장을 설치합니다. 오른쪽 아래 또는 명령 팔레트에서 Python 인터프리터를 선택할 수 있는데, 이때 방금 만든 .venv 안의 Python을 선택해야 합니다.

인터프리터 경로는 운영체제에 따라 대략 다음과 비슷합니다.

Windows에서는 다음과 같은 형태입니다.

robot-math-python.venvScriptspython.exe

macOS와 Linux에서는 다음과 같은 형태입니다.

robot-math-python/.venv/bin/python

편집기에서 실행했을 때는 안 되고 터미널에서는 되는 경우, 대부분 "서로 다른 Python"을 보고 있는 상황입니다. 이럴 때는 먼저 현재 실행 중인 Python 경로를 확인하세요.

python -c "import sys; print(sys.executable)"

출력된 경로 안에 .venv가 들어 있으면 현재 프로젝트 가상환경을 사용하고 있는 것입니다.

패키지 버전 확인하기

로봇 실습은 재현 가능해야 합니다. 오늘 만든 코드가 다음 달에도 실행되고, 다른 컴퓨터에서도 실행되면 좋습니다. 그러려면 어떤 패키지 버전으로 실습했는지 남겨 두는 습관이 필요합니다.

현재 설치된 주요 패키지 버전을 확인해 봅시다.

python -m pip show numpy matplotlib opencv-python jupyter

더 간단히 전체 목록을 저장할 수도 있습니다.

python -m pip freeze > requirements.txt

그러면 프로젝트 폴더에 requirements.txt 파일이 생깁니다. 이 파일에는 현재 가상환경에 설치된 패키지와 버전이 기록됩니다.

나중에 새 컴퓨터에서 같은 환경을 만들고 싶다면 먼저 가상환경을 만든 뒤 다음 명령을 실행하면 됩니다.

python -m pip install -r requirements.txt

이 방식은 로봇 프로젝트에서 특히 중요합니다. 시뮬레이션, 영상 처리, 수치 계산 패키지는 버전에 따라 동작이 조금씩 달라질 수 있습니다. 작은 예제에서는 큰 차이가 없어도, 복잡한 프로젝트에서는 결과가 달라질 수 있습니다.

앞으로 만날 확장 도구들

이번 장에서는 NumPy, Matplotlib, OpenCV, Jupyter Notebook만 설치했습니다. 이것만으로도 이 책의 핵심 실습을 충분히 진행할 수 있습니다. 하지만 로봇공학 세계는 여기서 끝나지 않습니다.

나중에 더 깊이 들어가면 Robotics Toolbox for Python이나 SpatialMath 같은 도구를 만날 수 있습니다. Robotics Toolbox for Python은 로봇 팔의 기구학, 동역학, 이동 로봇 모델, 경로 계획, 위치 추정 같은 로봇공학 기능을 Python에서 다룰 수 있게 해 주는 도구입니다.6 SpatialMath는 회전 행렬, 동차 변환, 쿼터니언처럼 좌표 변환을 다룰 때 유용한 표현을 제공합니다.

ROS2는 실제 로봇 소프트웨어를 구성할 때 자주 등장하는 프레임워크입니다. 카메라, LiDAR, 모터 제어기처럼 서로 다른 부품이 메시지를 주고받으며 동작하도록 돕습니다. MuJoCo, PyBullet, Gazebo 같은 시뮬레이터는 물리 법칙이 들어간 3D 환경에서 로봇을 시험할 때 사용됩니다.

하지만 지금 당장 이 모든 도구를 설치할 필요는 없습니다. 오히려 처음부터 너무 많은 도구를 설치하면 "무엇을 배우고 있는지" 흐려질 수 있습니다. 이 책의 전략은 단순합니다. 먼저 좌표, 벡터, 행렬, 확률의 감각을 Python으로 익힙니다. 그런 다음 필요할 때 더 큰 도구로 넘어갑니다.

문제가 생겼을 때 확인할 것

개발 환경을 준비하다 보면 누구나 한 번쯤 막힙니다. 로봇공학을 배우기도 전에 설치 오류와 싸우는 것처럼 느껴질 수 있습니다. 하지만 대부분의 문제는 몇 가지 지점에서 발생합니다.

먼저 가상환경이 켜져 있는지 확인하세요. 터미널 앞에 (.venv)가 붙어 있는지 봅니다. 붙어 있지 않다면 다시 활성화합니다.

다음으로 Python과 pip가 같은 환경을 가리키는지 확인합니다.

python -c "import sys; print(sys.executable)"
python -m pip --version

패키지를 설치했는데 ModuleNotFoundError가 난다면, 패키지를 설치한 Python과 코드를 실행한 Python이 서로 다를 가능성이 큽니다.

마지막으로 Jupyter Notebook에서만 import가 안 된다면 노트북 커널이 가상환경을 사용하고 있는지 확인해야 합니다. Jupyter 화면의 커널 선택 메뉴에서 .venv 또는 해당 프로젝트 Python을 선택하세요.

설치 문제는 로봇의 센서 노이즈와 비슷합니다. 처음에는 불쾌하지만, 원인을 하나씩 분리하면 결국 잡힙니다.

작은 마무리 실험

마지막으로 아주 작은 로봇 이동 실험을 해 보겠습니다. Jupyter Notebook 새 셀에 다음 코드를 입력합니다.

import numpy as np
import matplotlib.pyplot as plt

position = np.array([0.0, 0.0])
goal = np.array([5.0, 3.0])
speed = 0.2

trajectory = []

for _ in range(40):
    trajectory.append(position.copy())
    direction = goal - position
    distance = np.linalg.norm(direction)

    if distance < speed:
        position = goal.copy()
        trajectory.append(position.copy())
        break

    unit_direction = direction / distance
    position = position + speed * unit_direction

trajectory = np.array(trajectory)

plt.figure(figsize=(6, 4))
plt.plot(trajectory[:, 0], trajectory[:, 1], marker="o", label="trajectory")
plt.scatter(goal[0], goal[1], color="red", s=100, label="goal")
plt.grid(True)
plt.gca().set_aspect("equal", adjustable="box")
plt.legend()
plt.xlabel("x")
plt.ylabel("y")
plt.title("A robot moving toward a goal")
plt.show()

이 코드는 아직 완성된 로봇 시뮬레이터가 아닙니다. 하지만 중요한 장면 하나를 이미 보여 줍니다. 로봇은 현재 위치에서 목표 위치를 바라보고, 방향을 계산하고, 조금씩 이동합니다.

앞으로 우리는 이 짧은 코드를 여러 방향으로 키워 갈 것입니다. 속도를 바꾸고, 방향을 각도로 표현하고, 회전을 추가하고, 센서 오차를 넣고, 추정 알고리즘을 붙일 것입니다. 하지만 출발점은 지금처럼 단순합니다.

좌표를 숫자로 만들고, 숫자를 계산하고, 계산 결과를 그림으로 확인한다.

이제 실습 환경이 준비되었습니다. 다음 장에서는 NumPy를 더 깊이 들여다보며 로봇의 위치와 움직임을 벡터와 행렬로 표현하는 방법을 배우겠습니다.

참고

1Robotics Toolbox for Python

2Simplified Forward and Inverse Kinematics with Python: A Visual and Interactive Approach

3Python OpenCV 설치 및 기본 사용법

4How to Import OpenCV on Jupyter Notebook

5Jupyter Notebooks for Robotics Data Analysis: Complete Guide

6A Robotics Ecosystem made for Python

책 목록

로봇을 위한 수학과 Python: 좌표에서 시뮬레이터까지

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기