rbq_example_level_0
저장소의 rbq_examples 아래에 있는 C++ 예제로, RBQ 스택과 저수준(LV0 스타일) 으로 통신하는 방법을 보여 줍니다. IMU·조이스틱·다리 관절 토픽을 구독하고, 다리 모션 레퍼런스와 관절 소유권 명령을 발행하며, 명령줄로 넘긴 학습 보행 정책(ONNX) 을 선택적으로 실행합니다.
이 예제를 빌드·실행하기 전에 RBQ SDK를 빌드·설치해 두어야 합니다. SDK가 없거나 CMake가 찾지 못하면 rbq_examples 빌드가 실패합니다.
동작 요약
- 제어 루프 스레드가 DDS로 실행 중인 RBQ 모션 스택(실기 또는
scripts/sim.bash로 띄운 시뮬)과 통신합니다. - Idle: 스택의 최종 다리 레퍼런스를 추종하며 호환되는
MotionRef를 발행합니다. - Motion(앉기/서기 등 키):
JointControl로 포즈를 보간한 뒤 레퍼런스·소유권을 발행합니다. - Walk / Control:
-p로 정책을 읽어 IMU·관절·명령 관측으로 ONNX 추론 후, 정책 게인으로MotionRef를 발행합니다.
빌드 (rbq_examples/)
저장소 스크립트에 따라 의존성 설치(ONNX 등은
rbq_examples/scripts/install/apt.bash등 참고).rbq_sdk가 설치되어 있고, 기본 경로가 아니면CMAKE_PREFIX_PATH에 설치 접두어를 넣습니다.rbq_examples디렉터리에서:bashbash scripts/setup.bash # 시스템 의존성 등 (setup.bash는 sudo로 실행하지 마세요) bash scripts/build.bash빌드 스크립트 설정에 따라 결과물은 프로젝트
bin/등에 설치됩니다.
정책 번들 (-p)
걷기 모드에는 info.json 및 rbq_sdk::Policy / PolicyParams가 기대하는 ONNX가 들어 있는 정책 디렉터리가 필요합니다.
예:
./bin/rbq_example_level_0 -p ./../resources/policy/rbq10_trot/애플리케이션은 -p를 필수로 요구합니다.
시뮬레이션에서 실행
RBQ 저장소 루트에서 개발자 가이드에 따라 스택을 띄웁니다(시뮬용 Motion + MuJoCo + GUI):
bashbash scripts/sim.bashGUI에서 매뉴얼에 나온 대로 시뮬레이터 연결 후 제어 시작 절차를 진행합니다. 스택이 제어 가능한 상태가 되려면 Auto Start(오토 스타트) 등으로 모션·제어 경로가 올라와 있어야 하며, 단계를 건너뛰면 예제가 토픽을 받지 못할 수 있습니다.
빌드 후 **
rbq_examples**에서 예제 실행:bash./bin/rbq_example_level_0 -p ./../resources/policy/rbq10_trot/
실시간 제어 스레드 경로를 쓰려면 sudo 로 실행할 수 있습니다. root가 아니면 일반 스레드로 동작합니다.
키보드·조작
시작 시 도움말이 출력됩니다. 대표적으로(정확한 목록은 소스 printHelp() 참고):
| 키 | 동작 |
|---|---|
q | 종료 |
z | 앉기/그라운드 쪽 모션 시퀀스 |
x | 서기/레디 쪽 모션 시퀀스 |
c | 제어/걷기 모드 (-p 정책 사용) |
제어 모드에서는 게임패드 축으로 속도형 명령을 넣습니다(화면 도움말 참고).
DDS 토픽
예제는 예를 들어 다음과 같은 문자열 토픽을 사용합니다:
- 구독:
rt/rbq/cmd/joy/final,rt/rbq/info/imu,rt/rbq/info/leg_joint,rt/rbq/ref/leg_joint/final등 - 발행:
rt/rbq/ref/leg_joint/owner_20,rt/rbq/cmd/motion/joint_owner/20등
정확한 이름·의미는 실행 중인 로봇 소프트웨어 버전과 일치해야 합니다.
문제 해결
- 동작 없음 / 토픽 없음:
sim.bash(또는 실기 스택)가 떠 있는지, DDS가 올바른 네트워크 인터페이스를 쓰는지 확인합니다. - 정책 오류:
-p경로가 유효한지, ONNX가 설치된 onnxruntime과 맞는지,info.json의 타입(rbq10,rbq10_trot등)이 맞는지 확인합니다. - apt 인증 오류 등: 호스트의 GPG/소스 설정 문제로, 예제 자체와는 별도로 해결합니다.
