게임패드로 조종하고 넘어뜨려도 스스로 일어나는 25cm 오리 로봇의 뇌
게임패드를 들고 작은 오리 로봇을 조종하며, 넘어뜨려도 스스로 일어나는 장면을 눈앞에서 볼 수 있습니다. 하드웨어와 소프트웨어가 하나로 묶여 있어, 로봇을 직접 만들거나 시뮬레이션에서 실험하는 데 필요한 모든 것이 여기에 있습니다.
오리 로봇이 하는 일
로봇은 걷기, 구르기, 물체 잡기, 일어서기 등 다양한 동작을 수행합니다. 게임패드를 연결하면 직접 조종할 수 있고, 바퀴를 달아 롤러 모드로 전환하면 다른 뇌를 로드해 구르는 동작을 합니다. 바닥에 부리를 대고 버튼을 누르면 물체를 집어 올리고, 넘어뜨려도 스스로 다시 일어섭니다. 또한 앉기, 공 차기, 명령에 따른 전진, 그리고 고유한 목소리로 꽥꽥 울기까지 가능합니다.
로봇을 다루는 방법
로봇을 소유한 사용자는 robotctl 명령어를 통해 구동, 설정, 음성, 와이파이, 업데이트, 로그 확인 등을 수행합니다.
- 치트 시트 모든
robotctl명령어와 게임패드 버튼 매핑, 페어링 방법을 정리한 문서입니다. - 블루투스 제어 네트워크 없이 블루투스로 노트북에서 로봇을 제어하는
duckctl도구입니다. - 업데이트 관리 설치, 롤백, 고정 기능을 갖춘 검증된 업데이트 시스템입니다.
개발자를 위한 구성
이 저장소는 로봇의 뇌 역할을 하며, 정책은 인접 저장소인 microduck_rl에서 MuJoCo와 PPO 알고리즘으로 훈련됩니다.
- 정책 훈련 MuJoCo, PPO, 도메인 랜덤화를 사용해 정책을 훈련하고 ONNX로 내보내는 과정입니다.
- 시뮬레이션 실제 로봇 없이 MuJoCo에서 데몬을 실행해 테스트하는
scripts/duck-sim스크립트입니다. - 개발 가이드 빌드, 테스트, 레이아웃, 컨벤션, 릴리스 과정을 담은 CONTRIBUTING.md 문서입니다.
시스템 내부 구조
Rust로 작성된 단일 워크스페이스로, 프레임워크 없이 구성됩니다. robotd는 제어 루프와 모터 버스를 담당하고, updaterd는 서명된 릴리스를 설치하고 건강 상태가 나쁘면 롤백합니다. configd는 와이파이와 신원을, btd는 블루투스 경로를, padd는 게임패드 입력을, mediad는 WebRTC로 카메라 스트리밍을, tofd는 깊이 센서 데이터를 제공합니다. 모든 클라이언트는 유닉스 소켓을 통해 동일한 JSON-RPC 계약을 사용해 호출합니다. 설계 결정의 이유와 과거의 문제점, 해결 방안은 docs/design/과 docs/project/에 기록되어 있습니다.
사용 전 확인 사항
이 저장소는 약 25cm, 800g 크기의 Rockchip RK3566 기반 로봇을 위해 설계되었습니다. 로봇을 직접 조립하거나 구매해야 하며, 정책 훈련은 별도의 microduck_rl 저장소에서 이루어집니다. 시뮬레이션 환경에서 테스트할 수 있지만, 실제 로봇 운영을 위해서는 하드웨어가 필요합니다. 라이선스 정보는 README에 명시되어 있지 않습니다.