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/ros2/src/rbq_examples/src/rbq_high_level.cpp
ROS 2로 HighLevelCommand 메시지를 50 Hz로 발행합니다.
터미널에서 보행을 선택하고, 조이스틱으로 속도를 제어합니다.
세 개의 병렬 실행 주체가 함께 동작합니다:
| 실행 주체 | 주기 | 역할 |
|---|---|---|
| 제어 루프 (타이머) | 50 Hz | 현재 보행 + 속도로 HighLevelCommand 발행 |
| 조이스틱 스레드 | 이벤트 기반 | 조이스틱 이벤트를 읽어 속도 원자 변수 업데이트 |
| 터미널 스레드 | 블로킹 | stdin에서 보행 이름/ID 입력 처리 |
시작 시 200 ms 지연 후 switch_control_mode = true를 한 번 발행하여 로봇의 HighLevel 모드를 활성화합니다. 이 메시지가 없으면 HighLevelCommand 토픽이 무시됩니다.
/dev/input/js* 경로의 Linux 조이스틱 장치 (선택 사항; 조이스틱 없이도 터미널 모드만 사용 가능).source /opt/ros/humble/setup.bash
cd rbq_sdk/ros2
rosdep install --from-paths src -y --ignore-src # 첫 빌드에서 의존성이 없을 때만
colcon build --packages-up-to rbq_examples
source install/setup.bashros2 run rbq_examples rbq_high_level [joystickPath]
# 예시
ros2 run rbq_examples rbq_high_level
ros2 run rbq_examples rbq_high_level /dev/input/js1기본 조이스틱 경로: /dev/input/js0.
보행 이름 또는 숫자 ID를 입력하고 Enter를 누릅니다.
list # 예제 내장 목록 출력
stand # 이름으로 STAND 전환
3 # ID로 WALK 전환
wave # WAVE로 전환| 이름 | ID | 설명 |
|---|---|---|
sit | 0 | 바닥에 앉기 |
stand | 1 | 중립 서기 자세 |
walk | 3 | MPC 트롯 보행 |
stairs | 4 | 계단 적응 보행 |
wave | 5 | 저속 보행 |
예제 내장 목록에는 지원하지 않는 내부 보행도 함께 출력됩니다. 위 표의 보행만 사용하세요.
| 축 | 대응 명령 | 최대값 |
|---|---|---|
| L 스틱 앞/뒤 | vel_x | ±1.2 m/s |
| L 스틱 좌/우 | vel_y | ±0.5 m/s |
| R 스틱 좌/우 | omega_z | ±60 deg/s |
데드존: 0.12 적용.omega_z는 deg/s 단위로 전송되며, QuadWalk 내부에서 rad/s로 변환됩니다.
| 방향 | 토픽 | 메시지 타입 |
|---|---|---|
| 발행 | /rbq/cmd/high_level | rbq_msgs/msg/HighLevelCommand |
| 발행 | /rbq/cmd/switch_control_mode | std_msgs/msg/Bool |
| 발행 | /rbq/cmd/switch_gait | std_msgs/msg/Int8 |
| 구독 | /rbq/robot_status | rbq_msgs/msg/RobotStatus (best-effort QoS) |
onTimer()는 gait_state, gait_transition, vel_x, vel_y, omega_z(모두 float32)만 채웁니다. roll, pitch, yaw, delta_body_h, delta_foot_h는 0으로 남습니다.gait_transition 플래그: 보행 변경 시뿐 아니라 모든 HighLevelCommand에 true로 설정됩니다. 따라서 새로 선택한 gait_state가 다음 발행 주기에 전환으로 적용됩니다.switch_control_mode: 시작 후 200 ms 지연(mode_timer_)을 두고 한 번만 발행합니다. DDS 구독자가 먼저 연결될 시간을 확보하기 위함입니다.vel_x_, vel_y_, omega_z_ 원자 변수를 업데이트합니다. 50 Hz 타이머는 매 발행 주기마다 이 값들을 읽습니다.