ubuntu linux
내 장비에서 FastDDS profile로 외부 노드 무시하기
우금붕
2025. 6. 23. 10:58
환경 1.
- ros2 humble
문제 1.
- zed 카메라를 실행하니 같은 네트워크상에 있으면 다른 컴퓨터에서도 노드 및 토픽들이 뜨는 문제가 발생함
- zed 카메라를 실행한게 본인이 아니었기에, 제어할 수 없는 상황
- ROS 2의 기본 DDS(Fast DDS) discovery 방식은 네트워크 전체를 스캔하기 때문에, 내가 실행하지 않은 노드(예: 외부 ZED 카메라 노드)가 내 Rviz2나 ROS 2 노드에 자동으로 뜨는 문제가 발생
해결 시도 1. ROS_DOMAIN_ID 설정
- ~/.bashrc에 ROS_DOMAIN_ID 추가 설정
- 해결 안됨. 동일한 문제 발생
해결 시도 2. FastDDS profile로 외부 노드 무시
- 다른 호스트의 노드는 무시하고, 로컬 노드끼리만 통신하도록 설정
- XML 파일 생성
mkdir -p ~/.ros
gedit ~/.ros/fastdds_profile_block.xml
- 아래 내용 붙여넣기
<?xml version="1.0" encoding="UTF-8" ?>
<dds xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles">
<profiles>
<participant profile_name="local_participant" is_default_profile="true">
<rtps>
<builtin>
<discovery_config>
<!-- 다른 호스트에서 온 노드는 무시 -->
<ignoreParticipantFlags>FILTER_DIFFERENT_HOST</ignoreParticipantFlags>
</discovery_config>
</builtin>
</rtps>
</participant>
</profiles>
</dds>
- 설정 설명
태그 | 설명 |
is_default_profile="true" | 이 설정이 모든 노드에 기본 적용 |
ignoreParticipantFlags | 필터링 조건 |
FILTER_DIFFERENT_HOST | 다른 컴퓨터에서 온 ROS 노드는 무시 |
- 추가 설명(다른 옵션)
태그 | 설명 |
FILTER_DIFFERENT_HOST | 현재 컴퓨터가 아닌 곳에서 온 노드 무시 |
FILTER_DIFFERENT_PROCESS | 같은 컴퓨터 내 다른 프로세스도 무시 |
FILTER_DIFFERENT_USER | 다른 사용자 계정의 노드 무시 |
- 환경 변수 등록(원한다면 ~/.bashrc에 등록)
export FASTRTPS_DEFAULT_PROFILES_FILE=$HOME/.ros/fastdds_profile_block.xml