Skip to content

High Level Command — ROS2 예제

소스: rbq_sdk/ros2/src/rbq_examples/src/rbq_high_level.cpp

ROS 2로 HighLevelCommand 메시지를 50 Hz로 발행합니다.
터미널에서 보행을 선택하고, 조이스틱으로 속도를 제어합니다.

개요

세 개의 병렬 실행 주체가 함께 동작합니다:

실행 주체주기역할
제어 루프 (타이머)50 Hz현재 보행 + 속도로 HighLevelCommand 발행
조이스틱 스레드이벤트 기반조이스틱 이벤트를 읽어 속도 원자 변수 업데이트
터미널 스레드블로킹stdin에서 보행 이름/ID 입력 처리

시작 시 200 ms 지연 후 switchControlMode = true를 한 번 발행하여 로봇의 HighLevel 모드를 활성화합니다. 이 메시지가 없으면 HighLevelCommand 토픽이 무시됩니다.

사전 요구사항

  • ROS 2 Humble 설치 및 소스 완료.
  • RBQ ROS2 SDK 빌드 완료 — 빠른 시작 참고.
  • 로봇 스택 실행 중 (시뮬레이션 또는 실제 하드웨어).
  • /dev/input/js* 경로의 Linux 조이스틱 장치 (선택 사항; 조이스틱 없이도 터미널 모드만 사용 가능).

빌드

bash
cd RBQ/rbq_sdk/ros2
rosdep install --from-paths src -y --ignore-src
colcon build --symlink-install
source install/setup.bash

실행

bash
ros2 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 전환
rl_trot           # RL_TROT으로 전환

사용 가능한 보행 목록

이름ID설명
sit0바닥에 앉기
stand1중립 서기 자세
aim2조준 자세
walk3MPC 트롯 보행
stairs4계단 적응 보행
wave5저속 보행
run6고속 보행
rl_trot30RL 기반 트롯
rl_front_walk31RL 전진 보행
rl_left_walk33RL 좌측 보행
rl_right_walk34RL 우측 보행
rl_bound35RL 바운드 보행
rl_pace36RL 페이스 보행
rl_pronk37RL 프롱크 보행
rl_3leg_hr38RL 3족 (후우 들기)
rl_3leg_hl39RL 3족 (후좌 들기)
rl_3leg_fr40RL 3족 (전우 들기)
rl_3leg_fl41RL 3족 (전좌 들기)
rl_trot_vision42RL 비전 트롯
rl_trot_run45RL 트롯 런
rl_silent46RL 저소음 보행
rl_stairs47RL 계단 오르기
rl_walk_vision48RL 워크 비전 (지형 height 피드백, height/pitch 조정 가능)
rl_walk49RL 워크 (height/pitch 조정 가능)

조이스틱 속도 제어

대응 명령최대값
L 스틱 앞/뒤vel_x±1.2 m/s
L 스틱 좌/우vel_y±0.5 m/s
R 스틱 좌/우omega_z±60 deg/s

데드존: 0.12 적용.
omega_zdeg/s 단위로 전송되며, QuadWalk 내부에서 rad/s로 변환됩니다.

사용하는 ROS 2 토픽

방향토픽메시지 타입
발행/rbq/cmd/highLevelrbq_msgs/msg/HighLevelCommand
발행/rbq/cmd/switchControlModestd_msgs/msg/Bool
발행/rbq/cmd/switchGaitstd_msgs/msg/Int8
발행/rbq/cmd/joysensor_msgs/msg/Joy
구독/rbq/robot_statusrbq_msgs/msg/RobotStatus (best-effort QoS)

구현 주요 사항

  • gait_transition 플래그: 보행 변경 시마다 true로 설정됩니다. QuadWalk의 보행 타이머가 전환을 시작하도록 트리거합니다.
  • switchControlMode: 시작 후 200 ms 지연(mode_timer_)을 두고 한 번만 발행합니다. DDS 구독자가 먼저 연결될 시간을 확보하기 위함입니다.
  • 조이스틱 이벤트: 조이스틱 스레드가 독립적으로 실행되어 vel_x_, vel_y_, omega_z_ 원자 변수를 업데이트합니다. 50 Hz 타이머는 매 발행 주기마다 이 값들을 읽습니다.

참고

This user manual is intended for RBQ users.