Gazebo
소개
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 스택 전체와 함께 실행 (Local)
RBQ 스택 전체(Motion / Vision / GUI)를 Gazebo 시뮬레이터와 함께 실행합니다:
bash
# 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
# RBQ 스택 실행
cd ../../
bash scripts/sim.bash --vision --no-sim
# rbq_gazebo 실행
cd rbq_simulator/rbq_gazebo
bash scripts/gazebo.bashRBQ 스택 전체와 함께 실행 (Docker)
같은 스택을 Docker 안에서 Gazebo 시뮬레이터와 함께 실행합니다:
bash
# Clone
git clone https://github.com/RainbowRobotics/RBQ.git
cd RBQ
# RBQ 스택 실행
bash scripts/sim.bash --vision --no-sim
# Docker에서 rbq_gazebo 실행
cd rbq_simulator/rbq_gazebo
bash scripts/docker/run.bashNOTE — DDS 네트워킹
시뮬레이터는 호스트 RBQ 스택과 루프백 인터페이스(lo)에서 DDS 도메인 0을 공유합니다. Docker에서는 --network host로 제공됩니다.
외부 노드 연결 (SLAM / 커스텀 ROS 2 노드)
sensor_bridge는 루프백(lo)에서 ROS 2 도메인 0으로 발행합니다. 노드를 rbq_simulator/rbq_gazebo에서 다음 환경 변수와 함께 실행하세요 (브리지와 맞추려면 CycloneDDS를 사용해야 합니다):
bash
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 → base_link |
/joint_states | sensor_msgs/msg/JointState | Reliable · KeepLast 10 | — |
