Claude에서 열기ChatGPT에서 열기
https://rainbowrobotics.github.io/RBQ/llms-full.txt 는 Rainbow Robotics RBQ 4족 로봇 매뉴얼 전문입니다. 읽고 이 문서를 근거로 한국어로 답변해 주세요.
AI 답변은 부정확할 수 있습니다. 안전·정비 항목은 매뉴얼 원문을 확인하세요.
한국어
https://rainbowrobotics.github.io/RBQ/llms-full.txt 는 Rainbow Robotics RBQ 4족 로봇 매뉴얼 전문입니다. 읽고 이 문서를 근거로 한국어로 답변해 주세요.
AI 답변은 부정확할 수 있습니다. 안전·정비 항목은 매뉴얼 원문을 확인하세요.
한국어
소스: rbq_sdk/python/example/sport/rbq_high_level.py
rbq_high_level.cpp의 Python 포팅 버전.
DDS를 통해 HighLevelCommand를 50 Hz로 발행하고, 터미널에서 보행을 선택하며, 조이스틱으로 속도 setpoint를 제어합니다.
세 가지 동시 실행 구성요소:
| 구성요소 | 주기 | 역할 |
|---|---|---|
| 제어 루프 스레드 | 50 Hz | 현재 보행 + 속도로 HighLevelCommand 발행 |
| 조이스틱 루프 스레드 | 100 Hz | 조이스틱 폴링 후 속도 setpoint 업데이트 |
| 메인 스레드 (터미널) | 블로킹 | stdin에서 보행 이름/ID를 읽어 목표 보행 업데이트 |
시작 시 제어 루프가 switchControlMode = true를 한 번 발행(200 ms 대기 후)하여 로봇 스택의 EXT_JOY 모드를 활성화합니다. 이 토픽 없이는 HighLevelCommand가 무시됩니다.
rbq_sdk_py 설치 완료 — Python SDK 개요 참조./dev/input/js* (필수).cd RBQ/rbq_sdk/python
pip install -e .cd RBQ/rbq_sdk/python/example/sport
python3 rbq_high_level.py <networkInterface> [joystickPath]
# 예시
python3 rbq_high_level.py eth0
python3 rbq_high_level.py eth0 /dev/input/js1조이스틱 자동 감지: 이름에 "Logitech", "gamepad", "Xbox", "wireless"가 포함된 장치를 우선 선택하고, 없으면 첫 번째 js* 노드를 사용합니다.
오버라이드: JOY=/dev/input/js1 python3 rbq_high_level.py eth0
list # 예제 내장 목록 출력
standing # 이름으로 전환
3 # ID로 전환 (trotting)
waving # 웨이브 보행으로 전환| 이름 | ID | 설명 |
|---|---|---|
sitting | 0 | 앉기 |
standing | 1 | 서기 (시작 기본값) |
trotting | 3 | MPC 트롯 |
trot_stairs | 4 | 계단 오르기 트롯 |
waving | 5 | 웨이브 보행 |
docking | 10 | 자동 도킹 |
예제 내장 목록에는 지원하지 않는 내부 보행도 함께 출력됩니다. 위 표의 보행만 사용하세요.
| 축 | 매핑 | 최대값 |
|---|---|---|
| 왼쪽 스틱 Y (앞/뒤) | vel_x | ±1.2 m/s |
| 왼쪽 스틱 X (좌/우) | vel_y | ±0.5 m/s |
| 오른쪽 스틱 X (요) | omega_z | ±60 deg/s |
모든 축에 0.12 데드존 적용.
omega_z단위: deg/s 단위로 전송 — QuadWalk가 내부에서 D2R을 곱합니다.
| 방향 | 토픽 | 메시지 타입 |
|---|---|---|
| 발행 | rt/rbq/cmd/high_level | HighLevelCommand_ |
| 발행 | rt/rbq/cmd/switch_control_mode | Bool_ |
gait_transition 플래그: threading.Lock으로 보호되는 consume_gait_pending() 메서드가 보행 변경 시 플래그를 정확히 한 번만 소비합니다 — C++의 std::atomic::exchange() 패턴과 동일.switchControlMode: 시작 후 200 ms 대기 후 한 번 발행. 미발행 시 로봇이 HighLevelCommand를 무시.time.monotonic()과 time.sleep()으로 20 ms 주기를 유지. 지연 발생 시 next_tick을 현재 시간으로 재설정.sudo가 필요하지 않습니다.