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이 정상 작동합니다.

지금 배운 내용들을 통해 앞으로 다양한 로봇들을 시뮬레이션하고 시각화해보겠습니다. 😊

Complete and Continue