ROS 2 토픽 레퍼런스
rbq_driver 노드가 발행하고 구독하는 모든 ROS 2 토픽의 전체 레퍼런스입니다.
- Pub — 로봇이 발행, 사용자 노드가 구독
- Sub — 사용자 노드가 발행, 로봇이 구독
커스텀 메시지 타입(rbq_msgs/*)은 워크스페이스 소싱 후 사용 가능합니다:
bash
source ros2/install/setup.bash모션 명령 토픽
/rbq/motion/autoStart
| 항목 | 내용 |
|---|---|
| 타입 | std_msgs/Bool |
| 방향 | Sub |
| 설명 | 전체 초기화 시퀀스 실행: CAN 확인 → 홈 탐색 → 제어 시작. 올바른 초기 자세 필요. 진행 상황은 /rbq/status/robot_status의 can_check, find_home, con_start 플래그로 확인. |
/rbq/motion/canCheck
| 항목 | 내용 |
|---|---|
| 타입 | std_msgs/Bool |
| 방향 | Sub |
| 설명 | 전체 모터 컨트롤러와의 CAN 통신 확인. 결과는 robot_status.can_check에 반영. |
/rbq/motion/findHome
| 항목 | 내용 |
|---|---|
| 타입 | std_msgs/Bool |
| 방향 | Sub |
| 설명 | 전체 관절 엔코더 홈 탐색 실행. 결과는 robot_status.find_home에 반영. |
/rbq/motion/switchGait
| 항목 | 내용 |
|---|---|
| 타입 | std_msgs/Int8 |
| 방향 | Sub |
| 설명 | gait_id 값으로 목표 보행 모드로 전환. 아래 보행 상태 레퍼런스 참조. |
/rbq/motion/switchControlMode
| 항목 | 내용 |
|---|---|
| 타입 | std_msgs/Bool |
| 방향 | Sub |
| 설명 | true → 하이레벨 명령 모드 (/rbq/motion/cmd_highLevel 수신). false → 조이스틱 모드 (기본값). |
/rbq/motion/emergency
| 항목 | 내용 |
|---|---|
| 타입 | std_msgs/Bool |
| 방향 | Sub |
| 설명 | 즉시 전체 관절을 고감쇠 모드로 설정합니다. 로봇이 즉시 쓰러집니다. 테스트 시 먼저 앉히고 사용하세요. |
/rbq/motion/recoveryFlex
| 항목 | 내용 |
|---|---|
| 타입 | std_msgs/Bool |
| 방향 | Sub |
| 설명 | 낙하 모드에서 복구. 특정 관절 동작으로 앉기 자세로 복귀합니다. 낙하 모드(gait_id: -2)에서만 수락됩니다. |
/rbq/motion/recoveryErrorClear
| 항목 | 내용 |
|---|---|
| 타입 | std_msgs/Bool |
| 방향 | Sub |
| 설명 | 복구 동작 없이 복구 가능한 에러 플래그만 초기화합니다. |
/rbq/motion/staticLock
| 항목 | 내용 |
|---|---|
| 타입 | std_msgs/Bool |
| 방향 | Sub |
| 설명 | 현재 위치에서 위치 제어로 전체 관절을 고정합니다. |
/rbq/motion/staticReady
| 항목 | 내용 |
|---|---|
| 타입 | std_msgs/Bool |
| 방향 | Sub |
| 설명 | 정적 위치 제어로 준비 자세로 전환합니다 (동적 균형 없음). |
/rbq/motion/staticGround
| 항목 | 내용 |
|---|---|
| 타입 | std_msgs/Bool |
| 방향 | Sub |
| 설명 | 정적 위치 제어로 지면/앉기 자세로 전환합니다. |
/rbq/motion/docking
| 항목 | 내용 |
|---|---|
| 타입 | std_msgs/Bool |
| 방향 | Sub |
| 설명 | 기본 옵션으로 자동 도킹 시작 (웨이브 보행 + 블라인드 모드). 기립 상태에서 후방 카메라가 ArUco 마커를 감지해야 합니다 (5 m 이내). 진행 상황은 robot_status.docking_state로 확인. |
/rbq/motion/docking_mode
| 항목 | 내용 |
|---|---|
| 타입 | std_msgs/Int8MultiArray |
| 방향 | Sub |
| 설명 | 옵션을 지정하여 자동 도킹 시작. data[0]: 보행 모드 — 0=웨이브(기본), 1=트롯. data[1]: 비전 모드 — 0=블라인드(기본), 1=비전 높이 피드백 (트롯 전용). |
/rbq/motion/setBodyHeight
| 항목 | 내용 |
|---|---|
| 타입 | std_msgs/Char |
| 방향 | Sub |
| 설명 | 몸체 높이 오프셋 조정. 값 0–255는 기본값 기준 [-0.15, +0.05] m로 매핑됩니다. |
/rbq/motion/setFootHeight
| 항목 | 내용 |
|---|---|
| 타입 | std_msgs/Char |
| 방향 | Sub |
| 설명 | 스윙 발 리프트 높이 조정. 값 0–255는 기본값 기준 [-0.06, +0.04] m로 매핑됩니다. |
/rbq/motion/setMaxSpeed
| 항목 | 내용 |
|---|---|
| 타입 | std_msgs/Char |
| 방향 | Sub |
| 설명 | 최대 보행 속도 스케일 조정. 값 범위: 0–255. |
/rbq/motion/additional_payload_params
| 항목 | 내용 |
|---|---|
| 타입 | std_msgs/Float64MultiArray |
| 방향 | Sub |
| 설명 | CoM 보상을 위한 외부 페이로드 파라미터 설정. data: [질량_kg, com_x, com_y, com_z] (미터 단위). 추가 하중 운반 시 사용. |
보행 상태 레퍼런스
gait_id | 이름 | 설명 |
|---|---|---|
-3 | 낙하 복구 | 낙하 감지 후 자동 전환 |
-2 | 낙하 모드 | 예기치 않은 균형 상실 시 트리거 |
-1 | 제어 오프 | 전체 액추에이터 비활성화 |
0 | 앉기 | 낮은 자세, 지면에 위치 |
1 | 기립 | 중립 자세, 보행 준비 완료 |
2 | 조준 모드 | 조준을 위한 자세 |
3 | 보행 (트롯) | MPC 트롯 보행 |
4 | 계단 | 계단 적응형 보행 (카메라 사용) |
5 | 웨이브 | 느린 보행 |
6 | 달리기 | 고속 보행 |
7 | 문 열기 | 앞다리로 문 밀기 |
8 | ZMP 초기화 | ZMP 캘리브레이션 진행 중 |
9 | 조작 모드 | 팔 조작 모드 |
10 | 도킹 | 충전 스테이션 자동 도킹 |
30 | RL 트롯 | 강화학습 트롯 |
31 | RL 앞발 보행 | 강화학습 전진 보행 |
32 | RL 뒷발 보행 | 강화학습 후진 보행 |
33 | RL 왼발 보행 | 강화학습 왼쪽 편향 보행 |
34 | RL 오른발 보행 | 강화학습 오른쪽 편향 보행 |
35 | RL 바운드 | 강화학습 바운딩 보행 |
36 | RL 페이스 | 강화학습 페이스 보행 |
37 | RL 프롱크 | 강화학습 프롱크 보행 |
38–41 | RL 3족 | 강화학습 3족 보행 (HR, HL, FR, FL) |
42 | RL 트롯 비전 | 비전 통합 강화학습 트롯 |
45 | RL 트롯 런 | 강화학습 고속 트롯 |
46 | RL 사일런트 | 강화학습 정숙 보행 |
48 | RL 워크 비전 | 비전 통합 강화학습 워크 (지형 height 피드백, height·pitch 조정 가능) |
49 | RL 워크 | 강화학습 워크 (height·pitch 조정 가능) |

보행 상태별 사용 가능한 명령:
각 보행 상태에서 추가로 사용할 수 있는 명령 목록입니다. 공통 명령과 전원 제어는 보행 상태와 관계없이 항상 사용 가능합니다.
| 보행 상태 | 추가 명령 | 공통 명령 | 전원 제어 |
|---|---|---|---|
| Control Off | rbq/motion/autoStart | rbq/powerControl/setPortState | |
| Sitting | rbq/motion/canCheck | rbq/motion/switchGaitrbq/motion/cmd_highLevelrbq/motion/emergencyrbq/motion/staticLockrbq/motion/staticReadyrbq/motion/staticGroundrbq/motion/switchControlMode | |
| Standing | rbq/motion/cmd_navigateTorbq/stateEstimation/comEstimationCompensationrbq/motion/dockingrbq/motion/docking_mode | ||
| Walk / Stairs / Run / RL | — | ||
| Wave | rbq/motion/cmd_navigateTo | ||
| Fall Mode | rbq/motion/recoveryFlexrbq/motion/switchGait (gait_id: 1) | ||
하이레벨 제어
/rbq/motion/cmd_highLevel
| 항목 | 내용 |
|---|---|
| 타입 | rbq_msgs/HighLevelCommand |
| 방향 | Sub |
| 설명 | 속도 및 자세 명령. 현재 보행 모드에 따라 동작과 유효 범위가 다릅니다. 하이레벨 모드 활성화 필요 (switchControlMode: true). |
필드:
| 필드 | 타입 | 단위 | 설명 |
|---|---|---|---|
header | std_msgs/Header | — | 타임스탬프 포함 ROS 헤더 |
identifier | string | — | 로깅/추적용 선택적 레이블 |
roll | float64 | deg | 몸체 롤. 기립 [-25, +25] |
pitch | float64 | deg | 몸체 피치. 기립 [-20, +20], 보행 (몸체 기울기), RL워크 [-25, +25] |
yaw | float64 | deg | 몸체 요 비틀림. 기립 [-25, +25] |
vel_x | float64 | m/s | 전진 속도. 보행 [-1.0, +1.2] / 달리기 [-1.0, +1.8] / RL트롯 [-1.5, +2.0] / RL워크 [-1.5, +2.5] / 계단 [-1.0, +1.0] |
vel_y | float64 | m/s | 측면 속도. 보행 [-0.4, +0.4] / 달리기 [-0.6, +0.6] / RL트롯 [-1.0, +1.0] / RL워크 [-1.0, +1.0] / 계단 [-0.4, +0.4] |
omega_z | float64 | deg/s | 요 각속도. 보행 [-75, +75] / 계단 [-17, +17] / 웨이브 [-20, +20] / RL워크 [-86, +86] |
delta_body_h | float64 | m | 기본 몸체 높이 오프셋. 기립/보행 [-0.15, +0.05] / RL워크 [-0.25, +0.10] |
delta_foot_h | float64 | m | 스윙 발 리프트 오프셋. [-0.06, +0.04] |
gait_state | int8 | — | 목표 보행 ID (보행 상태 레퍼런스 참조) |
gait_transition | bool | — | true = 먼저 gait_state로 전환 후 명령 적용 |
예시 명령:
bash
# 전진 0.5 m/s (Walk Mode, gait_id: 3)
ros2 topic pub --once /rbq/motion/cmd_highLevel rbq_msgs/msg/HighLevelCommand \
'{header: {stamp: {sec: 0, nanosec: 0}, frame_id: "base"},
identifier: "walk_fwd", roll: 0.0, pitch: 0.0, yaw: 0.0,
vel_x: 0.5, vel_y: 0.0, omega_z: 0.0,
delta_body_h: 0.0, delta_foot_h: 0.0,
gait_state: 3, gait_transition: false}'
# 제자리 회전 30°/s
ros2 topic pub --once /rbq/motion/cmd_highLevel rbq_msgs/msg/HighLevelCommand \
'{header: {stamp: {sec: 0, nanosec: 0}, frame_id: "base"},
identifier: "turn", roll: 0.0, pitch: 0.0, yaw: 0.0,
vel_x: 0.0, vel_y: 0.0, omega_z: 30.0,
delta_body_h: 0.0, delta_foot_h: 0.0,
gait_state: 3, gait_transition: false}'
# 정지 (영속도)
ros2 topic pub --once /rbq/motion/cmd_highLevel rbq_msgs/msg/HighLevelCommand \
'{header: {stamp: {sec: 0, nanosec: 0}, frame_id: "base"},
identifier: "stop", roll: 0.0, pitch: 0.0, yaw: 0.0,
vel_x: 0.0, vel_y: 0.0, omega_z: 0.0,
delta_body_h: 0.0, delta_foot_h: 0.0,
gait_state: 3, gait_transition: false}'
# 커스텀 자세 Standing (roll: 15°, pitch: 30°, yaw: 20°)
ros2 topic pub --once /rbq/motion/cmd_highLevel rbq_msgs/msg/HighLevelCommand \
'{header: {stamp: {sec: 0, nanosec: 0}, frame_id: "base"},
identifier: "standing_pose", roll: 15.0, pitch: 30.0, yaw: 20.0,
vel_x: 0.0, vel_y: 0.0, omega_z: 0.0,
delta_body_h: 0.0, delta_foot_h: 0.0,
gait_state: 1, gait_transition: true}'/rbq/motion/cmd_navigateTo
| 항목 | 내용 |
|---|---|
| 타입 | geometry_msgs/PoseStamped |
| 방향 | Sub |
| 설명 | 절대 월드 좌표계 자세로 이동. pose.position으로 목표 (x, y) 미터 지정. pose.orientation으로 목표 요 각도를 쿼터니언으로 지정. 기립 모드와 웨이브 모드에서 사용 가능. |
/rbq/stateEstimation/comEstimationCompensation
| 항목 | 내용 |
|---|---|
| 타입 | std_msgs/Char |
| 방향 | Sub |
| 설명 | 기립 모드에서 CoM 교정 트리거. X축 방향으로 탐색하여 보행 안정성을 개선합니다. 보행 시작 전 stand() 호출 후 사용하세요. |
로봇 상태
/rbq/status/robot_status
| 항목 | 내용 |
|---|---|
| 타입 | rbq_msgs/RobotStatus |
| 방향 | Pub |
| Hz | 50 |
| 설명 | 전체 로봇 상태 플래그, 보행 상태, 도킹 진행 상황. |
필드:
| 필드 | 타입 | 설명 |
|---|---|---|
header | std_msgs/Header | ROS 헤더 |
con_start | bool | 모터 제어 활성화 여부 |
ready_pos | bool | 준비 자세 여부 |
ground_pos | bool | 지면/앉기 자세 여부 |
force_con | bool | 힘 제어 모드 활성 여부 |
ext_joy | bool | 외부 조이스틱 연결 여부 |
is_standing | bool | 로봇이 물리적으로 기립 중 |
can_check | bool | CAN 통신 확인 완료 |
find_home | bool | 엔코더 홈 탐색 완료 |
gait_id | int8 | 현재 보행 상태 (보행 상태 레퍼런스 참조) |
is_fall | bool | 낙하 감지 여부 |
docking_state | int8 | 도킹 진행 상태 (아래 표 참조) |
imu_success | bool | IMU 연결 및 정상 동작 여부 |
도킹 상태 값:
| 값 | 상수 | 설명 |
|---|---|---|
-6 | DOCKING_MAX_FAIL_CNT_REACHED | 최대 재시도 횟수(10회) 초과 — 중단 |
-5 | DOCKING_MARKER_POS_INVALID_ROTATION | 마커 회전각 > ±40° — 중단 |
-4 | DOCKING_MARKER_POS_INVALID_TOO_FAR | 마커 거리 > 5 m — 중단 |
-3 | DOCKING_MARKER_POS_INVALID_WRONG_DIR | 마커가 전방에서 감지됨 — 중단 |
-2 | DOCKING_MARKER_NOT_FOUND | 마커 미발견 — 중단 |
-1 | DOCKING_FAILED | 도킹 실패 — 자동 재시도 |
0 | DOCKING_OPERATION_MODE | 일반 운용 (도킹 아님) |
1 | DOCKING_APPROACH_OFFSET | 1단계: 오프셋 접근 |
2 | DOCKING_APPROACH | 2단계: 직접 접근 |
3 | DOCKING_APPROACH_WIDE | 3단계: 넓은 보폭 접근 |
4 | DOCKING_SIT_DOWN | 충전 연결을 위해 앉기 |
5 | DOCKING_SUCCESS | 도킹 성공 — 충전기 물리적 연결됨 |
6 | DOCKING_SUCCESS_CHARGING | 도킹 성공 및 충전 중 |
7 | DOCKING_SUCCESS_NO_CHARGING | 도킹 성공이나 충전 안 됨 |
/rbq/status/comm_connected
| 항목 | 내용 |
|---|---|
| 타입 | std_msgs/Bool |
| 방향 | Pub |
| 설명 | 통신 모듈이 로봇에 연결된 경우 true. |
상태 추정
/rbq/stateEstimation/odometry
| 항목 | 내용 |
|---|---|
| 타입 | nav_msgs/Odometry |
| 방향 | Pub |
| Hz | 50 |
| 설명 | 월드 좌표계에서의 몸체 자세 및 속도. 드라이버 시작 시 원점 리셋. IMU와 다리 오도메트리를 융합하여 추정. |
/rbq/stateEstimation/robotVelocity
| 항목 | 내용 |
|---|---|
| 타입 | geometry_msgs/VelocityStamped |
| 방향 | Pub |
| Hz | 50 |
| 설명 | 몸체 좌표계 기준 선속도 및 각속도. +X = 전방, +Y = 좌측, +Z = 상방. |
/rbq/stateEstimation/footStates
| 항목 | 내용 |
|---|---|
| 타입 | rbq_msgs/FootStates |
| 방향 | Pub |
| Hz | 50 |
| 설명 | 몸체 중심 좌표계 기준 4개 다리의 발 위치, 속도, 접촉 상태. |
필드:
| 필드 | 타입 | 설명 |
|---|---|---|
header | std_msgs/Header | ROS 헤더 |
foot_position_rt_body[] | geometry_msgs/Point[4] | 몸체 기준 발 위치. +X=전방, +Y=좌측, +Z=상방 |
foot_velocity_rt_body[] | geometry_msgs/Point[4] | 몸체 기준 발 속도 |
contact[] | uint8[4] | 접촉 상태: 0=알 수 없음, 1=접촉, 2=끊김 |
force[] | float64[4] | 추정 접촉력 [N] |
다리 순서: [0] = 뒷-우, [1] = 뒷-좌, [2] = 앞-우, [3] = 앞-좌
센서 피드백
/rbq/imu/IMU_state
| 항목 | 내용 |
|---|---|
| 타입 | sensor_msgs/Imu |
| 방향 | Pub |
| Hz | 200 |
| 설명 | IMU 원시 데이터. 몸체 중심에서의 센서 오프셋: (0.00665, 0.0, -0.0404) m. 좌표계: +X=전방, +Y=좌측, +Z=상방. 각속도 범위 ±2000 °/s, 가속도 범위 ±16 g. |
/rbq/joint/joint_states
| 항목 | 내용 |
|---|---|
| 타입 | sensor_msgs/JointState |
| 방향 | Pub |
| Hz | 50 |
| 설명 | 12개 관절의 위치 [rad], 속도 [rad/s], 토크 [Nm]. ROS 표준 포맷. |
/rbq/joint/joint_status
| 항목 | 내용 |
|---|---|
| 타입 | rbq_msgs/JointStatus |
| 방향 | Pub |
| Hz | 50 |
| 설명 | 관절별 상세 상태: 연결, 온도, 모터 에러 플래그, 게인, 프로세스 소유권. 모든 배열은 12개 원소. |
관절 순서: [0]HRR [1]HRP [2]HRK [3]HLR [4]HLP [5]HLK [6]FRR [7]FRP [8]FRK [9]FLR [10]FLP [11]FLK
필드:
| 필드 | 타입 | 단위 | 설명 |
|---|---|---|---|
connected[] | bool[12] | — | CAN 연결 상태 |
temperature[] | int8[12] | °C | 제어 보드 온도 |
motor_temp[] | int8[12] | °C | 모터 권선 온도 |
status_fet | bool[12] | — | FET 드라이버 ON 여부 |
status_run | bool[12] | — | 제어 루프 실행 중 |
status_init | bool[12] | — | 초기화 완료 여부 |
status_jam | bool[12] | — | JAM 에러 (관절 잠김) |
status_cur | bool[12] | — | 과전류 에러 |
status_big | bool[12] | — | 위치 오차 과대 에러 |
status_tmp | bool[12] | — | 과온도 에러 |
status_ps1 | bool[12] | — | 하한 위치 리미트 도달 |
status_ps2 | bool[12] | — | 상한 위치 리미트 도달 |
position_ref[] | float32[12] | rad | 목표(명령) 위치 |
position_enc[] | float32[12] | rad | 엔코더(측정) 위치 |
velocity[] | float32[12] | rad/s | 관절 각속도 |
torque_ref[] | float32[12] | Nm | 목표 토크 |
current[] | float32[12] | A | 모터 전류 |
kp[] | float32[12] | Nm/rad | 위치 게인 |
kd[] | float32[12] | Nm·s/rad | 감쇠 게인 |
owner[] | int32[12] | — | 각 관절을 소유 중인 프로세스 ID |
토크 한계: 롤/피치 ±104 Nm — 무릎 −70 / +140 Nm
전원 제어
/rbq/powerControl/battery_status
| 항목 | 내용 |
|---|---|
| 타입 | rbq_msgs/BatteryState |
| 방향 | Pub |
| Hz | 10 |
| 설명 | 배터리 전압, 전류, 충전 잔량, 온도, 상태 코드. |
필드:
| 필드 | 타입 | 설명 |
|---|---|---|
header | std_msgs/Header | ROS 헤더 |
identifier | string | 배터리 식별 문자열 |
charge_percentage | float64 | 충전 잔량 [0.0, 100.0] % |
voltage | float64 | 팩 전압 [V] |
current | float64 | 부하 전류 [A] (음수 = 방전 중) |
temperatures[] | float64[] | 온도 센서 값 [°C] |
status | uint8 | 0=알 수 없음 1=없음 2=충전 중 3=방전 중 4=부팅 중 |
/rbq/powerControl/setPortState
| 항목 | 내용 |
|---|---|
| 타입 | std_msgs/Int8MultiArray |
| 방향 | Sub |
| 설명 | PDU 전원 포트 토글. data: [port_id, state] — state: 1=ON, 0=OFF. |
포트 ID 레퍼런스:
port_id | 포트 |
|---|---|
0 (0x00) | 48 V — 다리 액추에이터 |
1 (0x01) | 48 V — 애드온 장치 (상단) |
2 (0x02) | 48 V — 외부 포트 (상단) |
16 (0x10) | 12 V — 비전 PC (내부) |
17 (0x11) | 12 V — LAN 통신 포트 (상단) |
18 (0x12) | 12 V — LiDAR 포트 (상단) |
19 (0x13) | 12 V — CCTV 포트 (상단) |
20 (0x14) | 12 V — 열화상 카메라 포트 (상단) |
21 (0x15) | 12 V — IR LED (전/후방 패널) |
22 (0x16) | 12 V — 스피커 앰프 |
32 (0x20) | 5 V — 카메라 USB 허브 |
33 (0x21) | 5 V — 오디오/사이드캠 USB 허브 |
cpp
// PDU 포트 ID 열거형 (data[0] 값으로 사용)
enum PDU_PORT_IDs_e : unsigned char {
PDU_PORT_48V_LEG = 0x00, // 다리 액추에이터
PDU_PORT_48V_ADD = 0x01, // 애드온 장치
PDU_PORT_48V_EXT = 0x02, // 외부 포트
PDU_PORT_12V_VisionPC = 0x10, // 비전 PC
PDU_PORT_12V_COMM = 0x11, // LAN 통신 포트
PDU_PORT_12V_Lidar = 0x12, // LiDAR 포트
PDU_PORT_12V_CCTV = 0x13, // CCTV 포트
PDU_PORT_12V_THER = 0x14, // 열화상 카메라
PDU_PORT_12V_IRLed = 0x15, // IR LED
PDU_PORT_12V_Speaker = 0x16, // 스피커 앰프
PDU_PORT_5V_CAMERAS = 0x20, // 카메라 USB 허브
PDU_PORT_5V_AUDIO_SIDE_CAM_USBHUB = 0x21, // 오디오/사이드캠 USB 허브
};예시: 12V LiDAR 포트 ON (PDU_PORT_12V_Lidar = 0x12 → 10진수 18)
bash
ros2 topic pub --once /rbq/powerControl/setPortState std_msgs/msg/Int8MultiArray "{data: [18, 1]}"비전 — 카메라 센서
모든 카메라 토픽은 로봇이 발행합니다 (Pub). 각 센서는 원본 이미지, 압축 이미지, 캘리브레이션 정보를 제공합니다.
하단 카메라 — sensor_bottom_{N} (N = 0, 1, 2, 3)
| 항목 | 내용 |
|---|---|
| 타입 | sensor_msgs/Image · sensor_msgs/CompressedImage · sensor_msgs/CameraInfo |
| 방향 | Pub |
| 설명 | 로봇 몸체 하단의 4개 하향식 깊이 센서. {N}을 0–3으로 교체하세요. |
| 토픽 | 타입 | 설명 |
|---|---|---|
/rbq/vision/sensor_bottom_{N}/depth | sensor_msgs/Image | 원본 16비트 깊이 이미지 (mm, 16UC1) |
/rbq/vision/sensor_bottom_{N}/depth/compressed | sensor_msgs/CompressedImage | 압축 깊이 이미지 |
/rbq/vision/sensor_bottom_{N}/depth/camera_info | sensor_msgs/CameraInfo | 깊이 카메라 내부 파라미터 + 왜곡 계수 |
/rbq/vision/sensor_bottom_{N}/ir | sensor_msgs/Image | 원본 IR 이미지 |
/rbq/vision/sensor_bottom_{N}/ir/compressed | sensor_msgs/CompressedImage | 압축 IR 이미지 |
/rbq/vision/sensor_bottom_{N}/ir/camera_info | sensor_msgs/CameraInfo | IR 카메라 내부 파라미터 + 왜곡 계수 |
전방 카메라 — sensor_front
| 항목 | 내용 |
|---|---|
| 타입 | sensor_msgs/Image · sensor_msgs/CompressedImage · sensor_msgs/CameraInfo |
| 방향 | Pub |
| 설명 | 전방 RGB-D 센서의 RGB, IR, 깊이 스트림. |
| 토픽 | 타입 | 설명 |
|---|---|---|
/rbq/vision/sensor_front/rgb | sensor_msgs/Image | 원본 RGB 이미지 |
/rbq/vision/sensor_front/rgb/compressed | sensor_msgs/CompressedImage | 압축 RGB |
/rbq/vision/sensor_front/rgb/camera_info | sensor_msgs/CameraInfo | RGB 카메라 내부 파라미터 |
/rbq/vision/sensor_front/ir | sensor_msgs/Image | 원본 IR 이미지 |
/rbq/vision/sensor_front/ir/compressed | sensor_msgs/CompressedImage | 압축 IR |
/rbq/vision/sensor_front/ir/camera_info | sensor_msgs/CameraInfo | IR 카메라 내부 파라미터 |
/rbq/vision/sensor_front/depth | sensor_msgs/Image | 원본 16비트 깊이 이미지 |
/rbq/vision/sensor_front/depth/compressed | sensor_msgs/CompressedImage | 압축 깊이 |
/rbq/vision/sensor_front/depth/camera_info | sensor_msgs/CameraInfo | 깊이 카메라 내부 파라미터 |
후방 카메라 — sensor_rear
| 항목 | 내용 |
|---|---|
| 타입 | sensor_msgs/Image · sensor_msgs/CompressedImage · sensor_msgs/CameraInfo |
| 방향 | Pub |
| 설명 | 후방 RGB-D 센서의 RGB, IR, 깊이 스트림. 도킹 시 ArUco 마커 감지에도 사용됩니다. |
| 토픽 | 타입 | 설명 |
|---|---|---|
/rbq/vision/sensor_rear/rgb | sensor_msgs/Image | 원본 RGB 이미지 |
/rbq/vision/sensor_rear/rgb/compressed | sensor_msgs/CompressedImage | 압축 RGB |
/rbq/vision/sensor_rear/rgb/camera_info | sensor_msgs/CameraInfo | RGB 카메라 내부 파라미터 |
/rbq/vision/sensor_rear/ir | sensor_msgs/Image | 원본 IR 이미지 |
/rbq/vision/sensor_rear/ir/compressed | sensor_msgs/CompressedImage | 압축 IR |
/rbq/vision/sensor_rear/ir/camera_info | sensor_msgs/CameraInfo | IR 카메라 내부 파라미터 |
/rbq/vision/sensor_rear/depth | sensor_msgs/Image | 원본 16비트 깊이 이미지 |
/rbq/vision/sensor_rear/depth/compressed | sensor_msgs/CompressedImage | 압축 깊이 |
/rbq/vision/sensor_rear/depth/camera_info | sensor_msgs/CameraInfo | 깊이 카메라 내부 파라미터 |
PTZ 카메라
/rbq/ptzCamera/setPanTiltZoom
| 항목 | 내용 |
|---|---|
| 타입 | std_msgs/Float32MultiArray |
| 방향 | Sub |
| 설명 | PTZ 카메라 제어. data: [pan, tilt, zoom]. Pan/Tilt 단위: 도(°). Zoom은 배율 (1.0 = 1×). |
TF & 네비게이션
/tf
| 항목 | 내용 |
|---|---|
| 타입 | tf2_msgs/TFMessage |
| 방향 | Pub |
| 설명 | 런타임 동적 좌표 변환: odom → base_link, 몸체 → 다리 링크, 몸체 → 센서 프레임. |
/tf_static
| 항목 | 내용 |
|---|---|
| 타입 | tf2_msgs/TFMessage |
| 방향 | Pub |
| 설명 | URDF 기반 정적 좌표 변환: 고정 센서 마운트 오프셋, 강체 링크 관계. 시작 시 한 번 발행. |
/joy
| 항목 | 내용 |
|---|---|
| 타입 | sensor_msgs/Joy |
| 방향 | Sub |
| 설명 | 조이스틱 모드에서 로봇으로 전달되는 조이스틱 입력. Axes [0–5]: 좌-X, 좌-Y, 우-X, 우-Y, L2, R2. Buttons [0–15]. |
상태 토픽 구독 예시
bash
# 로봇 상태 (50 Hz)
ros2 topic echo --once /rbq/status/robot_status
# 관절 상태 (50 Hz)
ros2 topic echo --once /rbq/joint/joint_status
# IMU 데이터 (200 Hz)
ros2 topic echo --once /rbq/imu/IMU_state
# 배터리 상태 (10 Hz)
ros2 topic echo --once /rbq/powerControl/battery_status
# 발 접촉 상태 (50 Hz)
ros2 topic echo --once /rbq/stateEstimation/footStates
# 오도메트리 (50 Hz)
ros2 topic echo --once /rbq/stateEstimation/odometry