1강 Python Basics
본격적인 강의에 앞서, 프로젝트들의 구현을 위해 필수적으로 알아야 할 파이썬의 기초들을 학습해보겠습니다.
Martix 다루기
python에서 행렬을 다루기 위해 numpy라는 패키지를 사용할 것입니다. 혹시 설치되어있지 않다면, pip를 통해 설치 후 진행해주세요!
pip3 install numpy
- numpy에서 행렬을 다루기 위해
np.array
라는 자료구조를 사용합니다.
$$ A = \begin{bmatrix} 2 & 4\\ 5 & -6 \end{bmatrix} $$
- 아래와 같은 회전 행렬을 구현하고 싶다면, $\theta$를 매개변수로 받는 함수를 구현할 수 있겠지요.
- 행렬과 벡터의 곱, 혹은 행렬과 행렬의 곱은 일반적인 곱하기가 아니라
.dot
함수 혹은 @기호를 통해 수행합니다.
- 행렬의 전치, transpose와 역행렬, inverse는 다음과 같이 수행합니다.
- 역행렬 계산 시 determinant가 0이 되는 상황을 Singular라고 부르며, 이 상황에서는 역행렬을 구할 수 없습니다.
- 행렬곱 시 주의할 점으로 일반 곱하기 기호가 아닌,
.dot
혹은@
기호를 써야 함을 다시 한 번 안내드립니다.
- 단위행렬과 영행렬은
np.identity
,np.zeros
를 통해 구할 수 있습니다.
지금 살펴본 것외에도 numpy에는 수많은 기능들이 있지만 차차 학습하면서 배우도록 하겠습니다.
Python Plot
그래프를 그리거나, animation을 그릴 시 사용하는 matplotlib이라는 패키지에 대해 배워보겠습니다.
- 가장 기본적인 점 그래프를 그리는 예시입니다. 로봇의 이동 경로 등을 시각화할 시 유용하게 사용할 수 있지요. np.linspace를 통해 0부터 6 사이 범위를 50등분할 수 있으며, np.sin을 통해 삼각함수 $sin$ 값을 구할 수 있습니다.
- plt.plot 함수안에 x축과 y축에 해당하는 값들을 전달하고
plot.show()
를 통해 최종 시각화를 하면 아래와 같은 그림을 볼 수 있습니다.
Python Animation
이번에는 matplotlib을 통해 움직이는 animation을 그려볼 것입니다. 처음이니만큼 예시들을 직접 따라 구현해보시는 것을 추천드립니다.
- 첫번째 예시로 $sin$ 그래프를 따라 움직이는 작은 원을 구현해보겠습니다.
- sin 그래프를 미리 그려둔 뒤, 녹색 점을 반복하여 plot, remove, plot, remove 해줍니다. 주의할 점으로
plt.pause()
를 실행하지 않으면 매우 빠르게 시각화 작업이 일어나기 때문에 원하는 결과를 얻을 수 없습니다.
- 두번째 예시로 떠오르는 태양 animation을 구현해보았습니다. 빨간 사각형과 노란 원, 검정 직선이 사용된 모습을 볼 수 있지요.
- matplotlib을 통해 직사각형을 그리는 방법은 아래와 같이
Rectangle
함수를 이용하는 것입니다. 직사각형의 왼쪽 하단 좌표를 설정하고 폭과 높이를 매개변수로 전달합니다.
- 이번에는 원을 추가합시다.
Circle
함수를 사용하고 원의 중심과 반지름을 매개변수로 전달하게 됩니다.
- 지금까지 구현한 부분을 실행해보았습니다.
- 다음으로, 수평선에 해당하는 line을 추가해봅시다.
Line2D
함수와 선분을 이루는 두 점을 매개변수로 전달합니다.
- 이제, 마지막으로 for loop를 통해 animation 화 해보겠습니다. Circle 함수의 반환값인
circ
를 통해 원을 제거하거나, 시각화 우선순위를 정할 수 있으며, 앞서 이야기한 것과 같이plt.pause()
를 호출하여야 animation이 정상 작동합니다.
지금 배운 내용들을 통해 앞으로 다양한 로봇들을 시뮬레이션하고 시각화해보겠습니다. 😊