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 4족 보행 로봇을 위한 오픈소스 Ignition Gazebo (Fortress) 시뮬레이터.
Gazebo는 물리 시뮬레이션 위에서 RBQ 소프트웨어 스택 전체(Motion / Vision / GUI)를 실행하여 하드웨어 없이 로봇 소프트웨어를 개발·검증할 수 있게 합니다. 또한 센서 데이터를 ROS 2로 브리지하므로, 외부 노드(예: SLAM)가 시뮬레이션된 IMU, LiDAR, TF, 관절 상태를 구독할 수 있습니다. Isaac Gym · Isaac Lab 환경과 달리, 여기서의 목적은 강화학습 정책 학습이 아니라 스택 전체의 시뮬레이션입니다.
| 경로 | 설명 |
|---|---|
src/ | 시뮬레이터 소스 → bin/rbq_gazebo |
resources/ | 월드, 로봇/센서 URDF, 메시 |
ros2/src/sensor_bridge/ | colcon 패키지: 브리지 launch, RViz 설정, DDS xml |
scripts/ | 빌드 / 실행 / Docker 스크립트 |
| 플래그 | 로봇 | 모델 |
|---|---|---|
| (없음) | RBQ (사족) — 12관절 | resources/models/rbq10/ |
--wheel | 휠타입 RBQ — 12관절 + 구동륜 4개 | resources/models/rbq10_wheel/ |
gazebo.bash 가 같은 값을 센서 브리지에 variant:= 로 넘기므로 RViz 도 같은 URDF 를 불러옵니다.
참고 — RBQ 스택에도 같은 변형을 주세요
휠 상태와 지령은 SimInfo_.whl_joint / MotionRef_.whl_joint 로 오가므로 로봇쪽 Motion 도 같은 변형으로 떠야 합니다 — 저장소 루트에서 bash scripts/sim.bash -r wheel 로 스택을 띄우세요.
라이다는 옵트인입니다. 플래그를 주지 않으면 스폰되지 않습니다.
| 플래그 | 장비 | 장착 위치 |
|---|---|---|
| (없음) | 없음 | — |
--livox | Livox Mid-360 x2 | 앞 (+35° 상향) / 뒤 (−35° 상향) |
--ouster | Ouster OS1 x1 | 뒤 데크 |
bash scripts/gazebo.bash --livox # Livox Mid-360 2대
bash scripts/gazebo.bash --ouster # Ouster OS1 1대gazebo.bash 는 같은 값을 센서 브리지에 lidar:= 로 넘깁니다. 그 결과 한 플래그로 셋이 함께 맞춰집니다:
<visual>(하우징) + <sensor>(gpu_lidar) 가 스플라이스됨base_link → lidar_front | lidar_rear | lidar_ouster 정적 TF 발행rbq10_livox.urdf 등)를 불러 하우징까지 같이 표시발행되는 포인트클라우드 토픽은 아래 외부 노드 연결 절의 QoS 표를 참고하세요.
WARNING — RViz 가 비어 보이면 RBQ 스택이 떠 있는지 확인
번들 RViz 설정의 Fixed Frame 은 local_world 이고, 이 프레임은 Gazebo 가 아니라 RBQ 스택(Network 데몬) 이 발행합니다. 스택 없이 Gazebo 만 띄우면 로봇 모델이 안 그려지고 포인트클라우드도 Message Filter dropping message ... queue is full 로 전부 버려집니다. bash scripts/sim.bash --vision --no-sim 을 같이 띄우거나, RViz 의 Fixed Frame 을 world 로 바꾸세요.
RBQ 스택 전체(Motion / Vision / GUI)를 Gazebo 시뮬레이터와 함께 실행합니다:
# Clone
git clone https://github.com/RainbowRobotics/RBQ.git
cd RBQ
# 의존성 설치 (최초 1회)
cd rbq_simulator/rbq_gazebo && bash scripts/debian-dep.bash
# rbq_gazebo 빌드
bash scripts/build.bash
cd ../../사족
bash scripts/sim.bash --vision --no-sim
cd rbq_simulator/rbq_gazebo
bash scripts/gazebo.bash휠타입 RBQ
bash scripts/sim.bash --vision --no-sim -r wheel
cd rbq_simulator/rbq_gazebo
bash scripts/gazebo.bash --wheel같은 스택을 Docker 안에서 Gazebo 시뮬레이터와 함께 실행합니다:
# Clone
git clone https://github.com/RainbowRobotics/RBQ.git
cd RBQ사족
bash scripts/sim.bash --vision --no-sim
cd rbq_simulator/rbq_gazebo
bash scripts/docker/run.bash휠타입 RBQ
bash scripts/sim.bash --vision --no-sim -r wheel
cd rbq_simulator/rbq_gazebo
bash scripts/docker/run.bash --wheelrun.bash 는 모르는 인자를 그대로 시뮬레이터로 넘깁니다 — --wheel, --livox / --ouster, --world <이름> 모두 그대로 전달됩니다.
NOTE — DDS 네트워킹
시뮬레이터는 호스트 RBQ 스택과 루프백 인터페이스(lo)에서 DDS 도메인 0을 공유합니다. Docker에서는 --network host로 제공됩니다.
sensor_bridge는 루프백(lo)에서 ROS 2 도메인 0으로 발행합니다. 노드를 rbq_simulator/rbq_gazebo에서 다음 환경 변수와 함께 실행하세요 (브리지와 맞추려면 CycloneDDS를 사용해야 합니다):
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
export ROS_DOMAIN_ID=0
export CYCLONEDDS_URI=file://$(pwd)/ros2/src/sensor_bridge/config/cyclonedds_gazebo.xmlQoS는 ros_gz_bridge 기본값입니다 (토픽별 재정의는 ros2/src/sensor_bridge/config/bridge.yaml):
| ROS 2 토픽 | 타입 | QoS | 비고 |
|---|---|---|---|
/rbq/imu/IMU_state | sensor_msgs/msg/Imu | Reliable · KeepLast 10 | 500 Hz |
/rbq/lidar/lidar_front/points | sensor_msgs/msg/PointCloud2 | Reliable · KeepLast 10 | --livox |
/rbq/lidar/lidar_rear/points | sensor_msgs/msg/PointCloud2 | Reliable · KeepLast 10 | --livox |
/rbq/lidar/lidar_ouster/points | sensor_msgs/msg/PointCloud2 | Reliable · KeepLast 10 | --ouster |
/tf | tf2_msgs/msg/TFMessage | Reliable · KeepLast 10 | world → robot (ground truth) |
/joint_states | sensor_msgs/msg/JointState | Reliable · KeepLast 10 | 12관절 |
/tf 에는 서로 독립적인 두 체인이 흐릅니다. world → robot 은 rbq_gazebo 브릿지가 발행하는 Gazebo Ground Truth 포즈이고, local_world → base_link 는 RBQ SW 가 발행하는 상태추정 값(IMU + 레그 오도메트리, 부팅/리셋 시점이 원점)입니다. Ground Truth 를 base_link 가 아니라 robot 에 매단 것은 둘이 같은 부모 프레임을 두고 경합하지 않게 하기 위함입니다.
/rbq/odometry, /rbq/imu, /rbq/joint_states 는 브리지가 아니라 RBQ 스택이 DDS 로 직접 발행합니다. --sim 일 때는 시뮬레이션 시각을 쓰므로 use_sim_time 노드가 하나의 시간축으로 봅니다.