Rusty Flying Robots: Learning a Full Robotics Stack with Real-Time Operation on an STM32 Microcontroller in a 9 ECTS MS Course

이 논문은 블랙박스 소프트웨어를 배제하고 시뮬레이션과 STM32 마이크로컨트롤러 배포 모두에서 Rust 언어를 활용하여, 제한된 컴퓨팅 환경에서 비선형 제어 알고리즘을 직접 구현하며 드론을 비행시키는 9 ECTS 석사 과정의 새로운 로봇공학 프로젝트 수업 방법론과 학생들의 피드백을 소개합니다.

Wolfgang Hoenig, Christoph Scherer, Khaled Wahba

게시일 2026-04-02
📖 3 분 읽기☕ 가벼운 읽기

Each language version is independently generated for its own context, not a direct translation.

🚀 핵심 아이디어: "블랙박스를 부수고, 직접 엔진을 조립하라"

보통 로봇 공학 수업을 들으면, 이미 만들어진 거대한 소프트웨어 (예: ROS 같은 것) 를 가져와서 "이 버튼을 누르면 드론이 날아갑니다"라고 배우는 경우가 많습니다. 마치 레고 세트의 완성된 조립 설명서를 따라 하는 것과 비슷하죠.

하지만 이 수업은 다릅니다. 학생들은 아예 빈 상자 (하드웨어) 와 나사 (코드) 만 주어집니다. 그리고 그 나사들을 하나하나 조립해서 드론을 날려야 합니다.

🛠️ 수업의 4 가지 주요 단계 (드론의 두뇌를 만드는 과정)

학생들은 드론이 날아오르기 위해 필요한 4 가지 핵심 능력을 직접 코딩으로 구현해야 합니다.

  1. 시뮬레이션 (가상 비행장 만들기)

    • 비유: 실제 드론을 날리기 전에, 컴퓨터 안에 가상의 물리 법칙을 만들어야 합니다.
    • 과제: 드론이 어떻게 움직이는지, 중력은 어떻게 작용하는지, 바람은 어떻게 부는지 수학적 공식으로 직접 코딩합니다. 외부 도구를 쓰지 않고, 직접 만든 '가상 세계'에서 드론을 테스트합니다.
  2. 컨트롤 (조종사 훈련)

    • 비유: 드론이 흔들리지 않고 원하는 곳으로 가려면 정교한 조종 기술이 필요합니다.
    • 과제: 드론이 넘어지지 않도록 균형을 잡는 '비행 제어 알고리즘'을 만듭니다. 이걸 잘못 짜면 드론이 순식간에 추락하죠. 학생들은 이 코드를 직접 작성하고, 시뮬레이션에서 완벽하게 작동하는지 확인합니다.
  3. 상태 추정 (눈과 귀 만들기)

    • 비유: 드론은 눈이 없습니다. 대신 자이로스코프와 가속도계 같은 센서로 "내가 지금 어디에 있고, 얼마나 빠르게 움직이는지"를 추측해야 합니다.
    • 과제: 센서에서 오는 잡음 섞인 데이터를 분석해, 드론의 정확한 위치와 속도를 계산하는 '수학적 필터'를 만듭니다. 이 과정은 매우 정밀해야 하며, 작은 오차도 치명적입니다.
  4. 플래닝 (미로 찾기)

    • 비유: 드론이 좁은 구멍 사이를 빠르게 통과하려면 미리 계획을 세워야 합니다.
    • 과제: 장애물을 피하면서 가장 효율적인 경로를 계산하는 '길 찾기 알고리즘'을 만듭니다.

💻 핵심 도구: "러스트 (Rust)"라는 마법 언어

이 수업의 가장 큰 특징은 프로그래밍 언어를 선택한 점입니다. 보통은 C 나 Python 을 쓰지만, 이 수업은 Rust를 사용합니다.

  • 왜 Rust 인가요?
    • Python: 너무 느려서 실시간 드론 조종에 부적합합니다. (마치 거북이처럼 느립니다)
    • C/C++: 빠르지만 메모리 관리가 어렵고, 실수하면 드론이 바로 추락합니다. (마치 날카로운 칼을 다루는 것과 같습니다)
    • Rust: C 의 속도Python 의 안전함을 모두 가졌습니다. 컴파일 단계에서 실수를 미리 잡아주어, 드론이 추락하지 않도록 보호해 줍니다.
    • 결과: 학생들은 PC(시뮬레이션) 에서도, 그리고 아주 작은 칩 (STM32 마이크로컨트롤러) 에도 같은 Rust 코드로 드론을 날릴 수 있습니다. 코드를 다시 쓸 필요가 없습니다.

🎓 수업의 결과와 학생들의 반응

  • 난이도: 매우 어렵습니다. 학생들은 Rust 라는 새로운 언어를 배우면서, 수학, 물리, 프로그래밍을 동시에 적용해야 합니다.
  • 소요 시간: 주당 6~9 시간 정도 투자해야 하지만, 학생들은 "진짜 재미있었다", "가장 좋은 강의였다"라고 평가했습니다.
  • 성공: 10 명씩 두 번에 걸쳐 수업을 진행했는데, 학생들은 직접 만든 코드가 실제 드론에서 실시간으로 작동하는 것을 경험하며 큰 성취감을 느꼈습니다.

🌟 요약: 이 수업이 주는 교훈

이 수업은 **"로봇 공학은 단순히 기존 도구를 쓰는 것이 아니라, 그 도구를 직접 만드는 과정"**임을 보여줍니다.

마치 자동차를 운전하는 법을 배우는 대신, 엔진부터 차체까지 직접 조립해서 시동을 거는 과정을 배우는 것과 같습니다. 비록 힘들지만, 완성된 자동차를 타고 달릴 때의 짜릿함은 비교할 수 없을 정도로 큽니다.

이 수업은 Rust라는 강력한 도구를 통해, 복잡한 수학 이론을 가진 고급 로봇 기술조차도 작은 칩 위에서 안전하게 작동할 수 있음을 증명했습니다.