ROS2 지원
업데이트 예정 안내 BATCAM FX2의 ROS 2 연동 기능은 2026년 3분기(3Q) 펌웨어 업데이트를 통해 지원될 예정입니다. 본 페이지는 사전 안내용이며, 세부 사양은 정식 배포 시 변경될 수 있습니다.
ROS 2란?
ROS 2(Robot Operating System 2)는 로봇 소프트웨어 개발을 위한 오픈소스 프레임워크입니다. 이름에 “Operating System”이 들어가지만 실제 운영체제가 아니라, 여러 장치와 프로그램(노드)이 데이터를 주고받으며 협업할 수 있도록 해 주는 미들웨어입니다.
ROS 2는 데이터 통신에 DDS(Data Distribution Service)를 채택하여, 실시간성·안정성·분산 처리에 강점을 가집니다. 이를 통해 센서, 액추에이터, 연산 장치 등이 네트워크상에서 표준화된 방식으로 메시지를 교환할 수 있습니다. 로봇·자율주행·산업 자동화 분야에서 사실상의 표준 프레임워크로 자리 잡고 있습니다.
핵심 개념
ROS 2를 이해하는 데 필요한 기본 용어는 다음과 같습니다.
| 용어 | 설명 |
|---|---|
| 노드 (Node) | 하나의 기능을 수행하는 실행 단위. BATCAM FX2는 하나의 노드로 동작합니다. |
| 토픽 (Topic) | 데이터가 흐르는 통로(채널). 발행자가 데이터를 올리고 구독자가 받아갑니다. |
| 메시지 (Message) | 토픽을 통해 오가는 데이터의 형식(음향 데이터, 영상 프레임 등). |
| 발행/구독 (Publish/Subscribe) | 데이터를 보내는 쪽(발행)과 받는 쪽(구독)이 토픽으로 연결되는 통신 방식. |
| 서비스 (Service) | 요청-응답 방식의 통신. 설정 변경·명령 전달 등에 사용. |
BATCAM FX2의 ROS 2 지원
ROS 2 지원이 추가되면 BATCAM FX2는 하나의 ROS 2 노드로 동작하며, 로봇 및 상위 제어 시스템과 표준 ROS 2 인터페이스로 직접 연동할 수 있습니다. 별도의 변환 게이트웨이나 커스텀 통신 코드 없이, ROS 2 환경에 익숙한 개발자라면 손쉽게 데이터를 수신할 수 있습니다.
이를 통해 이동형 로봇, 자율주행 플랫폼, 협동로봇 등에 BATCAM FX2를 탑재하여 이동하면서 음향 점검을 수행하거나, 로봇의 다른 센서 데이터와 음향 정보를 융합하는 응용이 가능해집니다.
FX2 Stream Message for ROS 2
BATCAM FX2 시스템을 위한 전용 ROS 2 메시지 패키지입니다. 장비가 송출하는 음향·빔포밍 데이터와 실시간 영상을 ROS 2 환경에서 표준 메시지 형태로 수신할 수 있도록 커스텀 메시지 정의(Custom Message Definition)를 제공합니다.
설치 및 빌드
패키지를 빌드하기 전에 아래 명령으로 Python 의존성을 모두 설치합니다.
bash
pip install -r requirements.txt개발·테스트 환경
| 구분 | 내용 |
|---|---|
| 빌드·테스트 환경 | Python 3.10.16 / ROS 2 Jazzy (Ubuntu 24.04 이상) |
| 호환 목표(Target) | ROS 2 Humble (Ubuntu 22.04 또는 동등 환경) |
영상 토픽 (Video)
FX2의 실시간 광학 카메라 영상과 음원 위치가 합성된 오버레이 영상은 ROS 2 표준 영상 메시지로 발행되어, 별도 변환 없이 RViz 등 표준 ROS 2 도구에서 바로 확인할 수 있습니다.
| 데이터 | 설명 | 메시지 타입 |
|---|---|---|
| 카메라 영상 | 실시간 광학 카메라 영상 스트림 | sensor_msgs/Image |
| 음향 오버레이 영상 | 빔파워맵(음원 위치 히트맵)이 합성된 영상 | sensor_msgs/Image |
메시지 타입 (Message Types)
FX Stream 패키지는 다음과 같은 커스텀 메시지를 제공합니다.
LevelTrigger.msg — 레벨(음압) 트리거 정보
| Type | Name |
|---|---|
float64 | decibel |
WsAudio.msg — WebSocket 오디오 스트림 데이터
| Type | Name |
|---|---|
float64 | gain |
float32[] | ws |
LPointAudio.msg — 지정 지점(Listening Point) 오디오 데이터
| Type | Name |
|---|---|
float64 | gain |
float32[] | lpoint0 |
float32[] | lpoint1 |
float32[] | lpoint2 |
Beamforming.msg — 빔포밍 결과 데이터
| Type | Name |
|---|---|
float64 | gain |
float64[] | bf |
float64[] | level |
int32[] | param1 |
int32[] | param2 |
int32[] | theta |
int32[] | pos_x |
int32[] | pos_y |
int32[] | v_pos_x |
int32[] | v_pos_y |
위 메시지 정의 및 필드 구성은 개발 진행에 따라 변경될 수 있으며, 정식 업데이트 시 상세 API 문서와 함께 배포됩니다.
요구 사양 요약
- ROS 2 배포판: Humble 이상 (Jazzy에서 빌드·테스트 완료)
- 네트워크: 동일 서브넷 내 이더넷 연결 (DDS 통신)
- 지원 예정 시점: 2026년 3분기