ROS Domain ID 세팅
BATCAM FX ROS Domain ID 설정
1. 개요
BATCAM FX는 ROS 2 Humble 기반으로 센서 데이터를 퍼블리시하며, 같은 ROS_DOMAIN_ID를 사용하는 노드끼리만 서로를 발견하고 통신합니다. 같은 네트워크에서 여러 ROS 2 시스템을 분리해 운용하거나, 사용 중인 환경의 Domain ID에 BATCAM FX를 맞춰야 할 때 이 설정을 변경합니다.
-
BATCAM FX의 ROS 기본
DOMAIN_ID는 123입니다. (펌웨어 v1.0.3b 이상, FX 펌웨어 릴리즈 노트 참조) -
장비가 퍼블리시하는 토픽 구성은 FX ROS 시스템 통합 개요 문서를 참조하세요.
2. 방법 선택: 펌웨어 버전 확인
펌웨어 버전에 따라 설정 방법이 다릅니다. 먼저 사용 중인 장비의 펌웨어 버전을 확인하세요.
| 펌웨어 버전 | 설정 방법 | 비고 |
|---|---|---|
| 1.0.3c 이상 | REST API (3번 항목, 권장) | 공식 지원 방법 |
| 1.0.3c 미만 | systemd 서비스 파일 수동 수정 (4번 항목) | 비공식 방법 — 주의사항 필독 |
펌웨어 버전은 기기정보 조회 API(GET /setting/status)의 firmware_version 필드로 확인할 수 있습니다.
curl -u admin:<password> "http://192.168.0.30/setting/status"# 예시의 192.168.0.30 은 실제 BATCAM FX의 IP 주소로 대체하세요.응답 예시:
{ "error": 0, "result": { "hardware_id": "3287162925128", "sbrio_version": "1.0.14", "firmware_version": "v1.0.3c" }}💡 참고: BATCAM FX의 모든 REST API는 HTTP Basic 인증이 필요합니다. 장비에는 기본적으로
admin,user두 개의 계정이 미리 설정되어 있으며, 출고 기본 비밀번호는 반드시 변경 후 사용하세요. 펌웨어 업데이트 방법은 BATCAM FX 웹 소프트웨어 업데이트 또는 BATCAM FX 쉘 소프트웨어 업데이트 문서를 참조하세요.
3. REST API로 설정하기 (권장, 펌웨어 1.0.3c 이상)
BATCAM FX 펌웨어 1.0.3c 버전부터 REST API를 통한 ROS Domain ID 세팅이 가능합니다. 요청/응답 스키마 상세와 실시간 테스트는 BATCAM FX API 레퍼런스의 ros 태그를 참고하세요.
| 메서드 | 경로 | 설명 | 요청 본문 |
|---|---|---|---|
GET | /ros/domain | 현재 설정된 ROS Domain ID 조회 | 없음 |
PATCH | /ros/domain | ROS Domain ID 변경 | multipart/form-data |
PATCH /ros/domain 요청 필드:
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
domain_id | integer | 필수 | 설정할 ROS Domain ID |
현재 값 조회
curl -u admin:<password> "http://192.168.0.30/ros/domain"응답 예시:
{ "error": 0, "result": { "domain_id": 123 }}값 변경
curl -u admin:<password> -X PATCH "http://192.168.0.30/ros/domain" -F "domain_id=113"응답 예시:
{ "error": 0, "result": { "domain_id": 113 }}⚠️ 주의: 설정이 반영되는 동안 카메라와의 연결이 잠시 끊어집니다. 설정 직후 연결이 끊기는 것은 정상 동작입니다.
4. 구버전 수동 설정 (펌웨어 1.0.3c 미만, 비공식)
사용하시는 환경이 ROS_DOMAIN_ID가 0이 아닌 경우, 현재 비공식적으로 지원되는 ROS_DOMAIN_ID 설정 방법입니다.
1.0.3c 미만 펌웨어의 BATCAM FX, 혹은 내부에서 실행되는 ROS 2 옵션에 DOMAIN_ID를 추가할 수 있는 기능은 없습니다. 따라서, ROS 2 Node 및 Topic을 생성하고 퍼블리시 하는 beamforming-camerad 실행 서비스 파일의 수정이 필요합니다.
⚠️ 주의: 이 서비스는
Restart=always와StartLimitAction=reboot로 구성되어 있어, 서비스 파일을 잘못 수정하면 beamforming-camerad가 반복 재시작되다가 카메라가 재부팅될 수 있습니다. 수정 전 원본 내용을 보관해 두고, 아래 예시의 형식을 정확히 따르세요. 또한 펌웨어를 업데이트한 뒤에는 설정이 그대로 유지되어 있는지 다시 확인하는 것을 권장합니다.
전제조건
- BATCAM FX에 SSH로 접속할 수 있어야 합니다. 아래 예시의
192.168.50.11은 실제 BATCAM FX의 IP 주소로 대체하세요.
변경 순서
-
BATCAM FX에 ssh로 로그인
-
서비스 실행 파일에 접근 ( vi, nano 등 )
-
Service 태그에 Environment 추가
-
데몬 및 서비스 파일 다시 불러오기
-
Beamforming-camerad 또는 카메라 재시작
변경 상세
BATCAM FX에 SSH로 로그인합니다.
ssh root@192.168.50.11# 사용하시는 환경에 맞게 IP 주소를 변경하여 사용하시기 바랍니다.아래 명령어를 사용하여 시스템 실행 파일에 접근합니다. 편집기는 vi, nano 등 편하신 방법을 사용하시기 바랍니다.
nano /lib/systemd/system/beamforming-camerad.service# 또는vi /lib/systemd/system/beamforming-camerad.service아래 코드 블럭을 참조하여 Service 태그 내에 Environment 값을 추가합니다. 예시의 113은 사용하시는 환경에 맞는 ROS_DOMAIN_ID 값으로 지정할 수 있습니다.
[Unit]Description=Batcam FX Camera daemonWants=multi-user.targetAfter=systemd-networkd.service dbus-org.neard.service network.target nvargus-daemon.service setup-account.service
[Service]## 추가해야할 부분 — 사용하시는 환경에 맞게 ROS_DOMAIN_ID를 지정할 수 있습니다.Environment=ROS_DOMAIN_ID=113##ExecStart=/bin/bash -c 'source /opt/ros/humble/local_setup.sh && systemctl restart nvargus-daemon && /opt/ros/humble/bin/beamforming-camerad'Restart=alwaysStartLimitAction=rebootRestartSec=5TimeoutStopSec=30TimeoutStartSec=infinityExecStartPre=/bin/sleep 15# RuntimeMaxSec=86400
[Install]WantedBy=multi-user.target⚠️ 주의: systemd 유닛 파일은 행 끝 주석을 지원하지 않습니다.
Environment=ROS_DOMAIN_ID=113행 뒤에#주석을 붙이면 주석까지 값으로 해석되어 설정이 동작하지 않으니, 주석은 반드시 별도 행에 작성하세요.
아래 명령어를 사용하여 systemd daemon을 다시 로드합니다.
systemctl daemon-reloadBeamforming-camerad 또는 카메라를 재시작합니다.
systemctl restart beamforming-camerad# 또는reboot5. 설정 확인하기
설정이 적용되었는지 두 가지 방법으로 확인할 수 있습니다.
REST API로 확인 (펌웨어 1.0.3c 이상)
GET /ros/domain을 호출해 반환되는 domain_id가 설정한 값과 일치하는지 확인합니다. (3번 항목의 조회 예시 참조)
호스트 PC에서 ROS 2 토픽으로 확인
호스트 PC의 ROS 2 환경에서 장비와 동일한 ROS_DOMAIN_ID를 설정한 뒤, 토픽 목록에 BATCAM FX의 토픽이 나타나는지 확인합니다.
export ROS_DOMAIN_ID=113 # 장비에 설정한 값과 동일하게 지정ros2 topic list정상적으로 적용된 경우, 아래와 같이 카메라 하드웨어 ID 기반의 토픽이 목록에 나타납니다.
/fx_276730383020104/beamforming/fx_276730383020104/image/fx_276730383020104/lpoint_audio/fx_276730383020104/prpd/fx_276730383020104/ws_audio토픽 이름의 하드웨어 ID(hardware_id)는 기기정보 조회 API(GET /setting/status)로 확인할 수 있습니다. 토픽별 메세지 명세는 FX ROS 시스템 통합 개요 문서를 참조하세요.
6. 문제 해결 (Troubleshooting)
-
호스트에서 장비 토픽이 보이지 않을 경우:
-
호스트와 장비의
ROS_DOMAIN_ID가 동일한지 확인합니다. 장비 값은GET /ros/domain(펌웨어 1.0.3c 이상) 또는 서비스 파일의Environment행에서 확인할 수 있습니다. -
장비의 ROS 기본
DOMAIN_ID는 123입니다. 별도로 변경하지 않은 장비라면 호스트에서export ROS_DOMAIN_ID=123후 다시 확인합니다.
-
-
REST API 호출이 401로 실패할 경우:
- HTTP Basic 인증 자격 증명(
admin또는user계정)이 올바른지 확인합니다.
- HTTP Basic 인증 자격 증명(
-
PATCH 직후 카메라 연결이 끊긴 경우:
- 설정이 반영되는 동안 연결이 잠시 끊어지는 것은 정상 동작입니다. 잠시 후 다시 연결해
GET /ros/domain으로 값을 확인합니다.
- 설정이 반영되는 동안 연결이 잠시 끊어지는 것은 정상 동작입니다. 잠시 후 다시 연결해
-
수동 수정 후 서비스가 반복 재시작되거나 카메라가 재부팅될 경우:
Environment=ROS_DOMAIN_ID=<값>행에 행 끝 주석이나 오타가 없는지 확인하고, 수정 후systemctl daemon-reload를 다시 실행합니다.
7. 관련 문서
-
FX ROS 시스템 통합 개요 — 토픽/메세지 명세
-
FX ROS Firmware BF/Overlay Parameter Setting (베타) — ROS 2 액션으로 빔포밍/오버레이 설정
-
FX 펌웨어 릴리즈 노트 — 버전별 ROS 기능 지원 이력
-
BATCAM FX API 레퍼런스 —
/ros/domain,/setting/status상세 스키마