Skip to content

네트워크 & DDS 설정

개발 PC에서 로봇의 topic을 수신하고 명령을 보내기 위한 네트워크 설정 방법입니다.


네트워크 구성

호스트역할기본 IP
Wi-Fi AP로봇 ↔ PC 연결192.168.0.1
로봇 PCrbq_driver 실행, topic 발행192.168.0.10
개발 PC사용자 ROS 2 노드 실행192.168.0.12 (DHCP)

로봇과 PC가 같은 서브넷(192.168.0.0/24)에 있어야 합니다. ping이 통하는지 먼저 확인하세요.


필수 설정

RMW 설정

로봇 드라이버와 개발 PC 모두 CycloneDDS를 사용해야 합니다:

bash
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp

매번 설정하기 번거롭다면 ~/.bashrc에 추가하세요:

bash
echo 'export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp' >> ~/.bashrc
source ~/.bashrc

Domain ID

ROS_DOMAIN_ID는 로봇과 RBQ 스크립트 어디에도 설정되어 있지 않습니다. 로봇과 개발 PC 모두 **기본값(Domain 0)**을 사용하므로 별도 설정이 필요 없습니다.


연결 확인

bash
# 1. 로봇에 ping
ping 192.168.0.10

# 2. topic 목록 확인
ros2 topic list

# 3. 실시간 수신 확인
ros2 topic echo /rbq/imu/IMU_state --once

방화벽

ping은 되는데 ros2 topic list가 비어 있으면 UFW가 multicast를 막고 있을 수 있습니다:

bash
# Wi-Fi 인터페이스에서 DDS 트래픽 허용 (wlp4s0을 실제 인터페이스로 변경)
sudo ufw allow in on wlp4s0
sudo ufw allow out on wlp4s0

# 또는 테스트 목적으로 UFW 비활성화
sudo ufw disable

트러블슈팅

Topic이 안 보일 때

  1. ping 192.168.0.10 — 로봇과 네트워크 연결 확인
  2. RMW_IMPLEMENTATION=rmw_cyclonedds_cpp해당 터미널에 설정되어 있는지 확인
  3. NIC가 여러 개인 경우(Wi-Fi + 유선 동시 연결 등) 인터페이스를 명시적으로 지정:
bash
export CYCLONEDDS_URI='<CycloneDDS><Domain><General><Interfaces>
  <NetworkInterface name="wlp4s0"/>
</Interfaces></General></Domain></CycloneDDS>'

인터페이스 이름은 ip link show로 확인합니다.

Topic은 보이는데 지연/드롭 발생

일부 공유기에서 multicast가 불안정한 경우 unicast로 피어를 직접 지정합니다:

bash
export CYCLONEDDS_URI='<CycloneDDS><Domain><General>
  <Interfaces><NetworkInterface name="wlp4s0"/></Interfaces>
</General><Discovery><Peers><Peer address="192.168.0.10"/></Peers></Discovery>
</Domain></CycloneDDS>'

rbq_msgs 타입을 인식하지 못할 때

개발 PC에서 rbq_msgs 패키지를 직접 빌드하고 source해야 합니다:

bash
cd ros2
colcon build --packages-select rbq_msgs
source install/setup.bash

This user manual is intended for RBQ users.