UNLV

[UNLV] - 쿼터니언과 라즈베리파이: 실전 임베디드 개발 환경 구축(2일차)

빡성 2026. 2. 6. 02:30

1. 수업 개요

이번 수업에서는 1일차에 다뤘던 짐벌락(Gimbal Lock) 문제를 해결하기 위한 수학적 대안인 Quaternion(쿼터니언)을 깊이 있게 다뤘다. 쿼터니언은 실제 로보틱스와 항공우주 분야에서 필수적인 수학 도구였다.

또한 M5Stack의 고속 센서 데이터를 PC로 전송하여 관리하는 실무적인 데이터 로깅 기법을 학습했다. 센서 데이터를 효율적으로 수집하고 분석하는 것이 임베디드 개발의 첫 단계였다.

오후 세션에서는 본격적인 임베디드 프로젝트의 핵심인 Raspberry Pi Zero 2 W의 하드웨어를 분석하고, 모니터 없이 시스템을 구축하는 Headless Setup 및 리눅스 환경 설정을 직접 수행했다. "Headless Setup은 실제 산업 현장에서 가장 많이 사용하는 방식"이였다.

2. Euler Angle의 한계와 Quaternion의 등장

지난 시간에 확인했듯, Euler Angle은 직관적이지만 특정 각도에서 축이 겹치는 짐벌락 현상이 발생한다. 실제 로보틱스나 항공우주 분야에서 오일러 각을 그대로 사용하는 경우는 거의 없다.

오일러 방식은 역삼각함수(tan-1)를 포함한 복잡한 연산이 필요하고 수치적으로 불안정할 수 있는 반면, 쿼터니언은 4개의 숫자로 회전을 표현하여 끊김(Tangle loss)이나 계산 오류 없이 부드러운 회전 제어를 가능하게 한다.

쿼터니언을 사용하면 짐벌락 문제를 완전히 해결할 수 있고, 계산 속도도 빠르다. 특히 실시간 시스템에서는 쿼터니언이 필수적이다.

3. Quaternion(쿼터니언)의 수학적 이해

쿼터니언은 1개의 실수부와 3개의 허수부(i, j, k)로 구성된 4차원 복소수 시스템이다. 쿼터니언은 복소수의 확장 개념이다.

특징:

  • 가속도계와 자이로 값을 사용하여 0.1ms 단위의 매우 짧은 주기 동안 적분을 수행하여 계산된다. 이렇게 짧은 주기로 계산해야 실시간으로 정확한 자세를 추정할 수 있다.
  • 짐벌락 현상을 완전히 방지하며 계산 속도가 빨라 실시간 시스템에 적합하다.
  • 4차원 데이터이기 때문에 시각화가 어렵고, 단순히 숫자의 나열로 보이기 때문에 직관적으로 움직임을 파악하기는 힘들다.

최근 사용되는 센서 칩들은 하드웨어 내부에서 자체적으로 이 쿼터니언 값을 계산하여 출력해주는 경우가 많다. 따라서 이를 활용하는 법을 익히는 것이 중요하다.

하지만 쿼터니언을 이해하지 않고 사용하면 문제가 발생했을 때 디버깅이 어렵다. 기본 원리를 이해하는 것이 중요하다.

4. 실습: UART 기반 센서 데이터 로깅 (M5Stack + Python)

M5Stack에서 수집한 데이터를 분석하기 위해 UART(Serial) 통신을 활용했다. UART는 임베디드 시스템에서 가장 기본적인 통신 방식이다.

'S' 키를 누르면 데이터 기록을 시작하고 다시 누르면 중지하여 CSV 형태의 파일(imu_log.txt)로 저장하는 시스템을 구축했다. 데이터 로깅은 센서 데이터 분석의 첫 단계다.

Python으로 시리얼 통신을 구현하는 방법은 다음과 같다:

Python Host Data Receiver Logic
import serial
# 사용자 환경에 맞는 포트 설정 (예: COM3, /dev/tty.usb...)
ser = serial.Serial('PORT_NAME', 115200) 

while True:
    if ser.in_waiting:
        line = ser.readline().decode('utf-8').rstrip()
        print(f"Streaming Data: {line}") 
        # 파일 저장 및 로깅 로직 실행

시리얼 통신에서 가장 중요한 것은 보드레이트(Baud Rate)를 맞추는 것이다. M5Stack과 PC의 보드레이트가 일치하지 않으면 데이터가 깨진다.

또한 데이터를 CSV 형태로 저장하면 나중에 Python pandas나 Excel로 분석하기 쉽다. 실무에서는 이런 형식이 표준이다.

5. SBC 이해와 Raspberry Pi Zero 2 W 사양

Single Board Computer(SBC)는 모든 컴퓨팅 구성 요소가 하나의 기판에 들어있는 완성된 컴퓨터다. SBC는 임베디드 프로젝트의 핵심 플랫폼이다.

이번에 사용한 Raspberry Pi Zero 2 W는 다음과 같은 사양을 갖추고 있다:

  • CPU: Quad-core 64-bit ARM Cortex-A53 (1GHz)
  • RAM: 512MB LPDDR2
  • 연결성: Wi-Fi, Bluetooth 4.2, 40핀 GPIO
  • 특징: 신용카드보다 작은 사이즈(65mm x 30mm)로 임베디드 AI 및 저전력 프로젝트에 최적화

Raspberry Pi Zero 2 W는 작은 크기와 저전력 소비 덕분에 IoT 프로젝트에 최적이다. 특히 배터리로 동작해야 하는 프로젝트에서 유리하다.

하지만 512MB RAM은 제한적이므로, 메모리 사용에 주의해야 한다. 큰 모델을 실행하기보다는 경량화된 모델을 사용해야 한다.

6. 실습: Headless RPi 설정 및 SSH 원격 접속

모니터와 키보드 없이 라즈베리 파이를 설정하는 Headless Setup 과정을 진행했다. "Headless Setup은 실제 산업 현장에서 가장 많이 사용하는 방식"이였다.

RPi Imager를 사용해 OS(Legacy 32-bit Bookworm)를 굽고, SSH(Secure Shell)를 통해 원격으로 접속하는 환경을 구축했다. SSH를 활성화하면 어디서든 라즈베리 파이에 접속할 수 있다.

주요 터미널 명령어를 실습했다:

Initial System Setup Commands
# 1. 시스템 업데이트 및 필수 도구 설치
sudo apt update && sudo apt upgrade -y
sudo apt install -y i2c-tools python3-pip git

# 2. I2C 버스 활성화
sudo raspi-config # Interface Options -> I2C 활성화 후 리부트

# 3. 작업 디렉토리 및 가상환경 설정
mkdir workshop && cd workshop
python -m venv wshopvenv
source wshopvenv/bin/activate

리눅스 명령어를 익히는 것이 임베디드 개발의 기본이다. 특히 sudo, apt, pip 같은 명령어는 자주 사용한다.

또한 가상환경을 사용하면 프로젝트별로 독립된 Python 환경을 유지할 수 있다. 여러 프로젝트를 진행할 때 패키지 충돌을 방지할 수 있다.

7. 개발 환경 구축: Anaconda & Git/GitHub

효율적인 협업과 패키지 관리를 위해 소프트웨어 도구들을 세팅했다.

Anaconda는 파이썬 가상 환경을 구축하여 프로젝트별로 독립된 라이브러리 환경을 유지한다. Anaconda는 데이터 과학 프로젝트에서 표준 도구다.

Git & GitHub는 소스코드의 변경 이력을 관리하고 팀 프로젝트를 원활하게 진행하기 위한 필수 도구다. Git 없이는 현대적인 소프트웨어 개발이 불가능하다.

Pull RequestIssues 기능을 통해 산업체 협업 방식을 익혔다. Pull Request는 코드 리뷰와 협업의 핵심이다.

Markdown은 README.md 작성을 통해 프로젝트의 목적과 사용법을 문서화하는 법을 학습했다. 좋은 문서는 좋은 코드만큼 중요하다.

이런 도구들을 익히는 것은 단순히 기술을 배우는 것이 아니라, 실제 산업 현장에서 사용하는 방식을 배우는 것이다.

8. 정리

이번 수업은 "정교한 데이터 처리와 실전 리눅스 환경 구축"으로 요약할 수 있었다.

쿼터니언을 통해 하드웨어를 제어하고, SSH를 통해 원격으로 리눅스 시스템을 관리하며, Git으로 코드를 관리하는 일련의 과정은 임베디드 개발자의 핵심 역량이다.

특히 쿼터니언을 이해하지 않고 사용하면 문제가 발생했을 때 디버깅이 어렵다는 점이 인상 깊었다. 수학적 원리를 이해하는 것이 실무에서 중요하다는 것을 깨달았다.

또한 Headless Setup과 SSH 원격 접속을 통해 실제 산업 현장에서 사용하는 방식을 직접 경험할 수 있어서 매우 유용했다. 모니터 없이도 시스템을 구축하고 관리할 수 있다는 것이 신기했다.

이제 본격적인 센서 제어와 데이터 분석을 위한 하드웨어/소프트웨어 준비가 모두 끝났다. 다음 수업이 더욱 기대된다.