ROS2 Humble의 주요 변경 사항

ROS2 Humble는 이전 버전들과 비교했을 때 장기 지원(Long-Term Support)이라는 특징을 유지하면서도, 다양한 내부 구조 개선 및 개발 편의성 증대를 이루어 냈다. ROS2의 핵심 개념인 분산 노드 아키텍처와 퍼블리셔-서브스크라이버 구조는 동일하게 이어지지만, 빌드 시스템과 미들웨어 계층에서 변화가 많았으며, QoS 정책의 활용 범위나 구성 방법 역시 한층 유연해졌다. C++17 이상의 표준 사용이 기본으로 권장되고, Python 버전에 대한 지원 역시 더욱 강화되었다. 노드 실행 방식에서의 실시간성(real-time) 또는 준실시간성에 대한 고려도 다양해졌고, DDS를 비롯한 통신 계층에서의 선택 폭이 넓어지면서 각 RMW 구현체별 성능 및 호환성 이슈가 정비되었다. 일부 구현체에서만 활용되던 고급 기능들이 확장되어, 이제는 ROS2 설계 철학과 잘 맞도록 제어, 센싱, 네트워킹 영역에서 다양한 방식으로 작동하고 있다.

ROS2 Humble는 RTOS 또는 임베디드 환경에서의 동작을 고려한 개선 사항이 눈에 띈다. 주파수 응답이 중요한 환경에서 노드 간 레이턴시를 줄이기 위해 네트워크 트래픽 관리 기능이 개선되었고, QoS 설정 범위가 늘어났다. 예컨대 DDS에서 제공되는 Reliable, Best-effort 같은 전통적인 QoS 정책만이 아니라, 요청-응답 구조나 예측 가능한 응답 시간 확보를 위해 단순화된 History 설정과 함께 Depth, Deadline 등을 미세하게 조정할 수 있는 범위가 넓어졌다. 이러한 QoS 구성 요소들은 통신 오류에 대처하거나 트래픽 최적화를 유도하는 데 핵심적인 역할을 한다. 이를 통해 노드 간 상호 동기화가 요구되는 시뮬레이션 환경이나 로보틱스 시스템에서도 한층 안정적이고 효율적인 데이터 교환이 이루어지도록 설계되었다.

기존의 rmw_fastrtps만을 적극적으로 사용하던 시기에서 벗어나 Cyclone DDS, eProsima Fast DDS 등 다양한 DDS 구현체를 선택할 수 있게 되었고, 시스템 특성에 따라 맞춤형 설정이 가능하도록 했다. ROS2 Humble는 특정 DDS 구현체로만 한정되지 않도록 중립적인 추상 계층을 강화했고, DDS 외부 미들웨어나 프로토콜과의 상호 운용성 역시 주목된다. 예컨대, 오픈 소스 기반 미들웨어와의 연동 방식이 통일되면서, 개발자가 DDS 내부 구조를 깊이 몰라도 네트워크 토폴로지나 동작 방식을 직관적으로 설정할 수 있게 되었다. Isaac Sim과 결합되는 상황에서도 시뮬레이션 및 시각화 환경에서 멀티 노드 구조를 효율적으로 연결하기 쉽도록 API 인터페이스가 정리되었고, 안정성이 강화되었다.

빌드 및 실행 구조 측면에서도 colcon을 통한 패키지 관리와 의존성 설정이 한층 세련되어, 새로운 기능이나 패키지를 설치할 때 빌드 충돌이 발생하지 않도록 개선되었다. 예컨대 ament 빌드 계열의 구조가 확장되어, CMakeLists.txt에서 패키지 의존성을 좀 더 유연하게 구성할 수 있다. 또한 각 패키지에서 요구하는 메시지 타입을 공유하거나 별도의 커스텀 메시지 타입을 정의할 때, msg, srv, action 디렉터리에서의 설정이 직관적이라 초보자도 쉽게 메시지 구조를 확장할 수 있다. 다음과 같이 colcon을 통해 ROS2 Humble 패키지를 빌드할 수 있다.

colcon build --symlink-install

라이프사이클(lifecycle) 노드 관리 또한 개선되어, 시스템을 구성할 때 노드의 상태 전환이나 강제 재시작 시나리오가 필요할 때 단순화된 API로 조작이 가능하게 되었다. 노드 생명 주기를 여러 단계로 구분해 두고, 특정 상태에서만 노드가 메시지나 서비스에 응답하게 설정할 수 있다. 이를 이용해 시뮬레이션 단계에서 특정 노드들의 리소스 사용을 동적으로 제어하거나, 실장된 로봇 하드웨어 상에서 메모리나 CPU를 탄력적으로 할당하는 전략을 세울 수 있다. Isaac Sim에서의 멀티 로봇 시뮬레이션이나 대규모 센서 데이터 스트리밍 시나리오에서도 중요한 개념이다.

ROS2 Humble는 ros2doctor, ros2run, ros2topic 같은 명령어 기반 툴셋도 개선하여, 네트워크 상태 진단이나 패키지 동작 점검을 위한 출력 형태를 정비했다. ros2cli 패키지가 내부적으로 확장되어, 노드 토폴로지를 확인하거나 메시지 트래픽 상태를 조회하는 기능이 강화되었다. 예컨대 아래와 같이 시스템 내 토픽 정보를 확인할 수 있다.

ros2 topic list

시뮬레이터에서 테스트하기 위해 다중 로봇 상황을 구성할 때, 도커(Docker)나 WSL(Windows Subsystem for Linux) 환경에서도 ROS2 Humble을 실행하는 방식이 한결 단순해졌다. 네트워크 브리지 구성을 할 때도 포트 충돌이나 DDS 파티션 문제를 최소화하는 설정 예시가 문서화되어 있어, Isaac Sim에서 ROS2 통신을 테스트하기 용이하다.

ROS2 Humble의 빌드 옵션에서, C++17 표준과 Python 3.10을 비롯한 최근 버전을 공식 지원하는 점도 주목할 만하다. C++ 라이브러리와의 호환성이 증대되어 멀티스레딩, 병렬 처리에 관련된 최신 기능을 로보틱스 애플리케이션에 쉽게 적용할 수 있고, Python 3.10의 기능을 활용해 스크립트 기반 프로토타이핑 과정을 빠르게 진행할 수도 있다. Isaac Sim Python API와의 연동 시에도 버전 불일치로 인한 충돌이 최소화되도록 조정되었다.

ROS2 Humble는 위와 같은 개선 사항들을 토대로 다양한 환경에 대해 더 유연하고 강력한 아키텍처를 제시한다.

보안과 SROS2

ROS2 Humble는 이전 버전 대비 보안(Security) 이슈에 대한 대응이 한층 강화되었다. 실증 연구 환경이나 실제 산업현장에서 ROS2를 사용하려면, 노드 간 데이터 전송 과정에서 기밀 정보가 누출되지 않도록 주의해야 한다. 이를 위해 DDS 자체의 보안 확장(에이전트 인증, 권한 부여 등)뿐만 아니라, ROS2 전용 보안 프레임워크인 SROS2(Secure ROS2)가 개선되어 로봇 시스템에서 암호화 및 키 관리가 좀 더 직관적으로 구성되도록 만들었다. Humble 버전에서는 인증서와 키 생성, 정책 파일 작성 과정을 간소화하고, ros2security CLI 유틸리티를 통해 노드별 권한을 제어하기 편리하다. 이를 Isaac Sim과 연결된 시뮬레이션 환경에 적용하면, 시뮬레이터와 실제 로봇 간 통신 노드에 대한 잠재적 위협을 최소화하면서도 DDS 통신 레벨의 보안 구조를 간단히 점검할 수 있다.

ROSbag2 개선

ROSbag2는 ROS2의 녹화 및 재생(Record/Replay) 기능을 제공하는 핵심 툴로서, Humble 버전에서 내부 구조가 더욱 최적화되었다. 기존에는 높은 데이터 레이트를 가진 센서 토픽을 기록할 때 I/O 병목이 발생하기 쉬웠으나, 이제는 성능이 향상되고 다양한 스토리지 옵션을 지정할 수 있어 로깅 효율이 높아졌다. 로깅 파일을 sqlite3, mcap 등 다양한 형식으로 선택하여 저장할 수 있고, 배포 환경에 따라 스토리지 백엔드를 교체하기도 편리하다. Isaac Sim처럼 복잡한 물리 시뮬레이션에서 발생하는 대규모 센서 데이터를 기록해두고 이후 재생함으로써, 알고리즘 성능 평가나 시뮬레이션 반복 실험을 간단히 수행할 수 있다. replay 기능에서도 QoS 설정이 유연하게 적용되어, 특정 토픽에 대한 재생 속도를 임의로 바꾸거나 메시지 필터링을 적용하는 등의 기능이 강화되었다.

마이그레이션 및 호환성

ROS2 Humble로 넘어오면서, Foxy나 Galactic 등 이전 LTS 및 비LTS 버전에서 작성된 패키지를 가져와 재사용하려는 사용자들이 많다. 이를 대비해 많은 패키지들이 Humble 호환성을 위한 업데이트를 제공하고 있으며, Python 패키지 역시 Virtualenv나 Conda 환경에서 이전 버전과 병렬 설치를 하면서 종속성을 유연하게 관리할 수 있다. C++ 기반 패키지는 C++17 이상 표준을 요구하기 때문에, 컴파일러 설정이나 의존성 라이브러리에 대한 점검이 필수적이다. 일부 레거시 API는 앞으로 사라질 예정이므로, Humble 배포판을 사용하려면 ROS2 문서에서 권장하는 최신 API 사용 패턴과 QoS 설정 방식을 익혀 두는 것이 중요하다. Isaac Sim 환경 역시 Humble 버전에 맞춰 업데이트된 ROS2 브리지 패키지가 배포되므로, 기존 Foxy, Galactic 대비 한층 원활한 상호 운용성을 기대할 수 있다.

멀티 로봇 시뮬레이션과 Isaac Sim

Isaac Sim은 로보틱스 시뮬레이션 및 검증을 위한 강력한 툴로, 멀티 로봇 시나리오에서 ROS2 통신을 적극 활용한다. ROS2 Humble 환경이 Isaac Sim과 연동될 때, DDS 트래픽 관리와 네트워크 브릿지 구성에서 발생하던 여러 제한사항이 해결되었다. 예컨대, 멀티 로봇 간 상호 충돌을 피하기 위해서는 초당 수십~수백 Hz로 주행 제어 명령과 센서 데이터를 교환해야 하는데, 이때 DDS 구현체에 따라 데이터 전송 우선순위를 할당하거나 QoS를 세밀하게 조정하도록 지원된다. Isaac Sim 내에서 시나리오를 생성하고 로봇별 노드를 활성화하면, ROS2 Humble의 개선된 colcon 빌드와 패키지 구조가 자연스럽게 매핑되어 시나리오 확장성이 커진다.

GUI와 시각화 툴

ROS2 Humble에서 rqt, RViz2 같은 시각화 툴은 다양한 신규 메시지 타입과 QoS 설정을 직관적으로 표시해 준다. rqt 플러그인 역시 개선되어, 토픽 흐름이나 서비스 호출 상태를 한눈에 확인할 수 있고, QoS 프로필이 충돌하는 경우 사용자에게 즉시 알림을 줄 수 있다. RViz2는 3D 시각화에서 Isaac Sim과 연동하여 센서 정보(레이더, 라이다, 카메라 등)를 실시간으로 표현하기 쉽도록, 메시지 타입과 변환(Transform) 구조를 정비했다. 로보틱스 시스템 디버깅 과정에서 조인트 상태나 오도메트리, 비용지도(costmap) 같은 데이터를 곧바로 확인할 수 있으므로, 시뮬레이션과 실제 환경 간 차이를 효과적으로 분석하기에 용이하다.

Composable Node

ROS2에서의 Composable Node 개념은 하나의 프로세스 내에서 여러 노드를 구성함으로써, 프로세스 간 통신 오버헤드를 줄이고 자원을 효율적으로 활용하기 위한 것이다. Humble 버전에서 해당 기능의 안정성이 크게 향상되어, 동일 프로세스 내에서 동작하는 노드들끼리 데이터를 공유하는 형태를 쉽게 구성할 수 있다. 이를 통해 Isaac Sim에서 다중 카메라 노드를 통합하거나, 하드웨어 리소스가 제한된 임베디드 환경에서 센서 데이터 전처리 노드를 재구성할 수 있다. Composable Node의 확장 및 로드 방법도 정형화되어, launch 파일에서 동적으로 노드를 로드하고 언로드하는 시나리오를 작성하기 편리하다.

로깅 및 디버깅 툴 개선

ROS2 Humble은 로깅과 디버깅 툴에서 성능과 편의성을 높이는 방향으로 진화했다. ros2cli를 통해 노드 이름, 네임스페이스, 메모리 사용 등을 효율적으로 확인할 수 있으며, ros2 launch 상에서 각 노드의 로깅 레벨을 통일하거나 개별 설정할 수 있다. 예컨대 ROS2 애플리케이션에서 오류가 발생했을 때, DEBUG 레벨의 로깅을 활성화하여 상세 정보를 출력하고, 병렬로 ros2 topic echo 명령어를 통해 문제 노드의 토픽 메시지를 실시간으로 추적할 수 있다. Isaac Sim에서도 물리 엔진이나 시각화 스레드에서 발생하는 예외를 ROS2 로그와 연동해 기록하면, 시뮬레이션-통신-애플리케이션 계층에서 벌어지는 이벤트를 체계적으로 모니터링할 수 있다.

예시 코드 (Python)

아래는 ROS2 Humble에서 Python으로 작성한 간단한 퍼블리셔 노드의 예시다. 토픽 이름과 메시지 구조는 sensor_msgs/msg/Imu를 가정했으며, QoS 설정과 함께 데이터를 퍼블리싱한다.

이러한 퍼블리셔와 Isaac Sim 간 연동을 진행하면, 시뮬레이터에서 생성한 센서 데이터나 로봇 상태 정보를 ROS2 노드로 유연하게 공유할 수 있어, 제어 알고리즘 개발 및 테스트가 간편해진다. 위 예시처럼 QoS를 유연하게 변경함으로써 상황에 따라 트래픽 우선순위를 조정하거나, 중요 메시지를 더 안정적으로 전달하는 시나리오를 설정할 수 있다.

실시간성(Real-time) 및 Executor 개선

ROS2 Humble는 분산 노드 아키텍처에서 실시간성을 확보하기 위한 기능들이 강화되었다. 기존 ROS2 버전에서도 DDS의 QoS 정책을 통해 정해진 시간 내에 메시지를 전달하려고 노력했지만, 여러 노드가 동시에 데이터를 주고받으며, 스레드 풀 기반의 MultiThreadedExecutor를 사용하는 경우 예측이 어려운 지연(latency)이 발생할 수 있었다. Humble 버전에서는 Executor 내 스레드 할당 및 콜백 큐 분할 방식을 좀 더 세밀하게 설정할 수 있어, 중요 노드가 차지하는 CPU 리소스를 독립적으로 관리하고 우선순위 기반 스케줄링을 적용하기 용이하다. 예컨대 노드별로 고우선순위 콜백 그룹을 설정해주면, Deadline 기반 QoS가 설정된 토픽 메시지가 다른 노드의 대기열에 밀리지 않고 빠르게 처리된다.

실시간 커널(RT-PREEMPT) 환경이나 RTOS에서 ROS2를 사용하는 시나리오에 맞추어, DDS 통신 프로세스 자체를 높은 우선순위 스레드로 동작시키는 방법도 공식 문서화되었다. 이를 통해 Isaac Sim과 연동되는 하이엔드 GPU 서버나 임베디드 제어기 모두에서 일정한 주기로 콜백을 실행할 수 있는 기반이 갖춰진다. 또한 MultiThreadedExecutor 외에 StaticSingleThreadedExecutor 등 다양한 Executor가 지원되어, 특정 노드들만 모아 실행하는 병렬 파이프라인 구성도 가능해졌다.

TF2와 좌표 변환

ROS2 Humble의 TF2(transform) 라이브러리는 좌표계 계층 구조를 관리하는 데 필요한 메모리 사용량과 연산 효율을 개선했다. 기존 ROS2보다 더 많은 로봇 팔 조인트나 다중 센서를 시뮬레이션할 때, TF 트리 상에서 노드 수가 급격히 증가해도 큰 부담 없이 좌표 변환을 수행할 수 있다. Isaac Sim과 결합된 대규모 로봇 팔, 이동 로봇, 드론을 동시에 시뮬레이션할 때, TF 프레임이 얽혀 있어도 RViz2나 Isaac Sim 자체의 시각화 모듈에서 지연 없이 변환 정보를 확인할 수 있도록 최적화되었다. 특정 프레임에 대한 TransformStamped 메시지를 더 효율적으로 관리하고, 잘못된 TF를 감지하거나 중복 프레임을 제거하는 기능도 강화되었다.

micro-ROS 통합

ROS2 Humble는 임베디드 장치에서 ROS2 프로토콜을 경량화한 micro-ROS와의 호환성이 확대되었다. micro-ROS 에이전트를 구동하는 측이 Humble 버전의 노드 및 QoS 정책을 수용함에 따라, 센서나 액추에이터가 매우 제한된 MCU(Microcontroller Unit) 환경에서도 DDS 기반 통신 흐름을 유지할 수 있다. 이렇게 하면 Isaac Sim에서 시뮬레이션되는 로봇이나 센서 노드가 실제 임베디드 하드웨어와 동일한 소프트웨어 스택을 공유하므로, 시뮬레이션 결과를 현실 세계에 이식하기가 수월하다. micro-ROS 측에서의 RCLC(Real-time C Language) API가 개선되어, C 언어로 작성된 콜백 함수들 역시 실시간성을 확보하면서 Humble 버전의 통신 구조를 활용할 수 있게 된다.

Launch 시스템 및 파라미터 관리

ROS2 Humble에서는 파이썬 기반의 Launch 시스템이 더욱 안정적으로 동작하며, 노드 간 파라미터를 동적으로 주입하거나 런타임에 특정 값만 바꾸는 식의 시나리오 작성이 수월해졌다. Isaac Sim에서 다중 로봇을 시뮬레이션하려면, 로봇마다 다른 URDF, SDF 모델 및 파라미터를 불러와야 하는데, 이를 Launch 파일 하나에서 정리해두고 로봇 인스턴스마다 해당 파일을 재활용함으로써 일관성 있게 설정을 적용할 수 있다. ros2 param을 이용한 동적 파라미터 변경도 Humble 버전에서 속도와 안정성이 개선되었으며, Node 의존성 트리에서 특정 파라미터만 수정할 수 있는 플래그가 추가되었다.

멀티인터페이스 네트워크와 Domain Bridge

ROS2 통신은 네트워크 환경별로 도메인(Domain ID)을 구분하여 DDS 세션이 겹치지 않도록 관리한다. Humble 버전에서 domain_bridge 패키지가 더욱 성숙해져, 서로 다른 Domain ID를 사용하는 두 로봇 또는 두 시뮬레이션 인스턴스를 하나의 토픽으로 연결하거나, 메시지 형식을 자동 변환해줄 수 있다. Isaac Sim에서 병렬로 구동되는 여러 인스턴스를 한꺼번에 모니터링하거나, 개발용 PC와 시뮬레이션 서버가 다른 도메인에 속해 있을 때도, domain_bridge를 설정해두면 Isaac Sim 쪽에서 전체 로봇 토픽을 통합적으로 볼 수 있다. 이렇게 여러 네트워크 인터페이스 간의 메시지 호환성을 자동으로 처리하면, 시스템 규모가 커져도 관리 복잡도가 억제된다.

네트워크 부하 분산과 데이터 최적화

ROS2 Humble에서 DDS가 지원하는 샘플링 정책이나 필터 기반 서브스크라이버가 정식으로 문서화되어, 특정 토픽의 메시지를 전부 받지 않고 샘플링 주기에 맞춰서만 전달받도록 설정할 수 있다. 주행 제어와 같은 핵심 토픽은 모든 메시지를 받아야 하지만, 로그 기록이나 시각화만을 위한 토픽은 낮은 빈도로 수신해도 된다. Isaac Sim에서는 시나리오 규모가 커질수록 센서 데이터 전송량이 기하급수적으로 늘어나므로, 이런 필터링 기능을 적극 활용하면 네트워크 부하와 CPU 사용량을 줄일 수 있다. 또한 ROS2 Humble는 대형 메시지(예: 고해상도 이미지, 포인트클라우드)를 전송할 때, 네트워크 세분화를 통해 부분 전송(partial transmission) 및 재조립 효율을 높이는 등 DDS 레벨 최적화가 반영되어, 속도 및 안정성이 향상되었다.

하드웨어 가속(Hardware Acceleration)

ROS2 Humble는 GPU나 FPGA와 같은 하드웨어 가속 장치를 활용하는 로봇 애플리케이션의 확산을 염두에 두고, 관련 패키지의 표준화 작업을 진행하고 있다. Isaac Sim 역시 시각화와 물리 시뮬레이션에 NVIDIA GPU를 적극적으로 사용하므로, ROS2에서 수집되는 라이다, 카메라 데이터 등을 GPU로 신속히 처리해 SLAM, 경로 계획 등의 알고리즘에 넘겨줄 수 있다. Humble에서는 이러한 하드웨어 가속 루트를 구축하기 위해 ament 빌드 계열에 하드웨어 종속적인 옵션을 추가 지원하고, 메시지 처리를 위한 GPU-가속 라이브러리를 쉽게 가져와서 연동할 수 있도록 했다. 이를 통해 Isaac Sim의 PhysX 엔진과 로봇 소프트웨어 스택 간 데이터 전송 지연을 최소화하고, 실시간에 가까운 의사결정 루프를 실현할 수 있다.

메시지 정의 확장과 Custom Interface

ROS2 Humble는 여러 연구 및 산업 분야에서 요구하는 확장 메시지 타입을 커스텀하게 정의하기가 편리해졌다. 기존엔 msg, srv, action 디렉토리를 통해 단순히 사용자 정의 메시지를 추가하는 방식이었는데, Humble 버전에서는 메시지 정의 안에서 네임스페이스를 사용하거나, 상호 참조하는 복합 타입을 좀 더 유연하게 구성할 수 있다. Isaac Sim 시뮬레이션에서는 조인트 각도, 카메라 매트릭스, 2D/3D 포인트 등 다양한 데이터 형식을 관리해야 하므로, 커스텀 메시지를 설계할 때 구조가 복잡해질 수 있다. Humble에서는 이를 구조적으로 분할할 수 있는 방법이 잘 정리되어 있어, 개발자가 복잡한 로봇 상태나 시각 데이터 구조를 효율적으로 정의하고 공유할 수 있다.

고급 Launch 예시 (Python)

아래는 ROS2 Humble에서 파이썬 Launch 파일을 사용하여 두 개의 노드를 동시에 실행하는 예시다. 각 노드는 서로 다른 QoS 프로필과 파라미터를 가지고 초기화되며, Isaac Sim에서 시뮬레이션되는 환경 변수도 로드한다.

이러한 방식으로 각 노드 실행 방식을 명시적으로 기술할 수 있어, Isaac Sim의 시뮬레이션 설정과 연동할 때도 각 노드의 파라미터나 QoS를 쉽게 조절할 수 있다. 노드 간 의존성, 네임스페이스, 파라미터 파일 등을 Launch 파일로 재구성하여 시뮬레이션 환경에서 손쉽게 테스트하고, 실제 하드웨어에 배포할 때 같은 구조를 재사용할 수 있다.

서비스(Services)와 액션(Actions)

ROS2 시스템에서 노드 간의 통신은 크게 토픽(Pub/Sub), 서비스, 액션이라는 세 방식으로 이루어진다. ROS2 Humble에서는 서비스와 액션의 내부 동작 구조 및 정의 방식이 더욱 체계적으로 정비되어, 개발자가 서로 다른 통신 패턴을 쉽게 선택할 수 있다. 서비스는 요청과 응답이 1:1로 맞춰지는 형태이며, 액션은 오래 걸리는 작업을 수행할 때 중간 상태 피드백과 최종 결과를 전송하는 구조를 갖는다. Isaac Sim에서 복잡한 태스크(예: 네비게이션, 픽 앤 플레이스)를 테스트할 때, 액션 인터페이스는 진행 상황을 실시간으로 모니터링하고 목표 취소(Goal Cancel) 등도 간단히 처리할 수 있어 로보틱스 애플리케이션 설계가 유연해진다.

액션 인터페이스 정의 측면에서는 Humble 버전에서 메시지 정의 파일(.action)에 대한 처리 로직이 개선되어, 빌드 시점에 자동 생성되는 C++, Python 코드가 더 일관성 있게 배포된다. 예컨대 custom_msgs/action/MoveRobot.action처럼 사용자 정의 액션을 만들면, Goal, Feedback, Result 부분이 각 언어 바인딩에 맞춰 자동 생성되어, Isaac Sim 내 시뮬레이션 환경에서 중간 경로 업데이트나 잔여 거리를 실시간으로 보여주는 인터페이스를 구성하기 쉽다. 기존 ROS2 버전에서 발생하던 액션 서버-클라이언트 연결 지연 문제도 개선되어, 여러 액션 서버를 병렬로 구동할 때 성능 저하가 덜 나타난다.

테스트와 품질 보증

ROS2 Humble는 대규모 로봇 애플리케이션을 염두에 두고, 테스트 프레임워크와 품질 보증(QA) 도구를 확충했다. ament_lint_auto나 ament_copyright, ament_cpplint 같은 린트 툴은 코드 스타일, 문서화, 잠재적 오류 등을 자동으로 검사해주며, ament_add_pytest를 통해 Python 단위 테스트를 쉽게 구성할 수 있다. 로보틱스 소프트웨어는 높은 신뢰도를 요구하므로, 단순히 코드 단위 테스트를 넘어 통합 테스트와 시뮬레이션 기반 검증이 중요하다.

Isaac Sim을 이용한 시뮬레이션 테스트도 ROS2 Launch 파일로 자동화하여, 소프트웨어 빌드가 완료된 뒤에 시뮬레이터를 일정 시간 구동시키고 로봇 동작 로그를 수집한 뒤, 예상 결과와 비교하는 식의 검증을 수행할 수 있다. 예컨대 ros2 launch 명령어와 함께 --disable-debug-logs 옵션 등을 조합해 성능을 측정하고, ros2bag2로 시뮬레이션 트레이스를 기록해 두면, 이후 재생(replay)을 통해 회귀 테스트를 수행하기가 수월하다. 이를 CI/CD 파이프라인에 통합하면, 소프트웨어 품질을 체계적으로 관리할 수 있다.

ROS1-ROS2 브리지(bridge)와 레거시 시스템

Humble 버전에서도 ROS1과 ROS2 간의 상호 운용을 위한 ros1_bridge가 지원되지만, ROS1 쪽은 Noetic이 마지막 LTS이므로, 향후 유지보수 비용을 줄이려면 ROS2로 마이그레이션하는 것이 권장된다. 그럼에도 불구하고 기존에 ROS1으로 작성된 알고리즘이나 노드가 중요하게 남아 있다면, ros1_bridge를 통해 토픽, 서비스, 액션을 서로 변환하여 사용할 수 있다. Isaac Sim에서 ROS1 기반 패키지를 활용해 만든 플러그인이나 시각화 노드가 있다면, Humble 버전에서 ROS2 환경과 같이 사용하되 점진적으로 ROS2 코드를 도입하는 전략을 쓸 수 있다. Humble 버전에서는 QoS 차이로 인한 호환성 이슈를 다루는 가이드가 정리되어 있어, 브리지를 구성할 때 메시지 손실이나 동기화 문제를 최소화할 수 있다.

Docker, WSL, 크로스 컴파일

ROS2 Humble를 Docker나 WSL(Windows Subsystem for Linux) 상에 구축해 개발하는 시나리오는 점점 보편화되고 있다. Humble 버전은 공식 Docker 이미지를 제공하며, 다양한 아키텍처(x86_64, arm64 등)를 지원한다. Isaac Sim과 연동하여 시뮬레이션 환경을 컨테이너화하거나, GPU 파스스루(pass-through)를 적용해 하드웨어 가속을 누리면서도 종속성을 간단히 관리할 수 있다. 반면 임베디드 보드나 RTOS에 ROS2 시스템을 옮길 때는 크로스 컴파일이 중요한데, ament 빌드 시스템이 크로스 컴파일 스크립트와 함께 개선되어, Humble 버전에서는 외부 종속 라이브러리를 함께 빌드할 때의 번거로움이 줄었다. 이렇게 크로스 빌드를 마친 후, Isaac Sim에서 가상 하드웨어 테스트를 하고 실제 임베디드 시스템으로 배포하는 워크플로가 한층 간단해진다.

ROS2 Humble에서 Nav2(네비게이션2) 스택도 꾸준히 업데이트되어, 이동 로봇의 경로 계획, 로컬 맵핑, 장애물 회피 등을 위한 구성 요소가 더욱 안정되었다. Nav2는 플러그인 구조로 설계되어 있어, DWB(Dynamic Window Approach) 로컬 플래너나 Regulated Pure Pursuit 등의 다양한 알고리즘을 손쉽게 교체할 수 있다. Isaac Sim에서 시뮬레이션한 지도 환경에 Nav2를 적용하면, 시각적으로 로봇 경로를 확인하면서, QoS 설정을 통해 센서 주기를 조절하거나, 액션 서버를 통한 목적지 전달이 올바르게 동작하는지 테스트할 수 있다.

SLAM 툴킷(예: slam_toolbox, cartographer_ros 등) 역시 Humble 버전에 맞춰 업데이트되어, LiDAR SLAM이나 VSLAM(비전 기반 SLAM)을 여러 로봇에 동시에 수행할 때 시스템 리소스 분배가 한층 원활해진다. Isaac Sim에서 멀티 로봇 시나리오로 SLAM을 시도할 때, DDS 기반 통신이 메인 병목이 되지 않도록 QoS를 세밀하게 설정해주면, 다수의 로봇이 서로 다른 지도를 구축하고 공유하는 고급 기능도 구성 가능하다.

Isaac Sim 상에서의 TF2 시각화 예시 (다이어그램)

아래는 Isaac Sim과 ROS2 Humble 사이에서 TF 트리를 구성하는 간략한 예시를 다이어그램으로 나타낸 것이다. 카메라(Cam), 라이다(LiDAR), 바퀴(Wheel) 프레임 등이 base_link 프레임을 기준으로 트리를 형성한다고 가정하자.

spinner

Isaac Sim에서 실제로 world 프레임부터 로봇 본체, 센서, 바퀴로 이어지는 TF 체인을 설정해두면, RViz2나 rqt_tf_tree 등에서 해당 트리를 직관적으로 확인할 수 있다. Humble 버전에서 TF2 성능이 개선되어, 다중 로봇 간 프레임 수가 많아져도 병렬 계산이 효율적으로 처리된다.

QoS 간단 수식 예시

ROS2에서 QoS 프로필은 메시지 전달을 어느 정도까지 보장할 것인가(신뢰도)와 이전 메시지를 얼마나 오래 보관할 것인가(히스토리 정책) 등을 결정한다. 예컨대 신뢰도(Reliability)는 Best-effort 또는 Reliable 중 하나를 선택할 수 있고, 히스토리(History)는 Keep last 또는 Keep all을 선택한다. 더불어 메시지를 $n$ 개까지만 버퍼링한다는 개념으로 Depth $d$ 를 설정할 수 있다. 이를 간단히 나타내면,

QoS={Reliability,History,Depth}Reliability{Best-effort,Reliable}History{Keep last,Keep all}Depth=d(Integer, d1)\begin{align} \text{QoS} &= \{ \text{Reliability}, \text{History}, \text{Depth} \} \,\\ \text{Reliability} &\in \{ \text{Best-effort}, \text{Reliable} \} \,\\ \text{History} &\in \{ \text{Keep last}, \text{Keep all} \} \,\\ \text{Depth} &= d \quad (\text{Integer, } d \ge 1) \end{align}

Isaac Sim에서 센서 데이터를 퍼블리싱할 때, Reliable로 설정하면 손실 없이 전송을 시도하지만, 네트워크 트래픽이 많으면 지연이 발생하기 쉽다. 반면 Best-effort로 설정하면 데이터 손실 가능성은 있지만 레이턴시가 줄어들어, 시뮬레이션의 가시화 같은 부분에선 적절할 수 있다. 이런 식으로 사용자는 상황에 따라 QoS를 조합하여 시스템에 맞춰 최적화된 통신 정책을 마련할 수 있다.

고급 RMW 설정

DDS를 비롯한 RMW(Robot Middleware) 구현체에 대해, ROS2 Humble는 상호 운용성을 최대한 높이면서도 각 구현체가 가진 특화 기능을 활용할 수 있도록 설계되었다. RTI Connext, Cyclone DDS, eProsima Fast DDS 등 다양한 DDS 벤더에서 제공하는 설정 파일을 ROS2 환경에 그대로 반영할 수 있어, Isaac Sim에서 멀티캐스트 주소나 Unicast Discovery 설정 등을 세밀하게 제어하고, 네트워크 트래픽을 계층화할 수 있다. 큰 규모의 시뮬레이션이나 실제 로봇 군집(fleet)을 제어할 땐, Discovery Phase의 브로드캐스트를 제한하고 지정된 IP 범위에서만 노드를 검색하도록 구성해, 불필요한 패킷을 줄이는 전략이 유효하다.

각 DDS 구현체마다 Security 플러그인 구성, 로컬 캐싱 정책, 로거(logger) 옵션 등이 다르므로, Humble 문서에서 권장하는 샘플 설정을 먼저 살펴보고 시스템 규모와 요구사항에 맞춰 튜닝하는 것이 좋다. Isaac Sim 내에서 복수의 로봇을 띄울 때, 동일 호스트 상의 DDS 트래픽 충돌이 발생하지 않도록 Domain ID를 여러 개로 나누거나, QosProfiles.xml 등을 준비해두면 추후 유지보수도 쉽다.

예시 코드 (C++)

아래는 ROS2 Humble에서 C++로 작성한 기본 서브스크라이버 노드 예시다. sensor_msgs/msg/LaserScan 토픽을 구독하여, 레이저 스캔 데이터를 받을 때마다 콜백 함수를 실행한다. QoS 설정과 함께 메시지를 처리하는 예시로, Isaac Sim에서 퍼블리싱하는 가상 LiDAR 데이터를 수신한다고 가정한다.

위 예시 코드는 rclcpp::QoS를 사용하여 BestEffort, KeepLast(5)로 설정했다. Isaac Sim에서 테스트할 때는 레이저 스캔 토픽 이름인 "scan"이 일치하도록 구성해 두면, 시뮬레이션 상에서 움직이는 로봇 주변 장애물 정보를 실시간으로 확인할 수 있다. 로그 레벨을 DEBUG로 설정해두면 상세 정보를 볼 수 있어, 개발 단계에서 센서 통신 상태를 점검하기에 유용하다.

노드 통계와 시스템 모니터링

ROS2 Humble에서 ros2cli와 rclcpp, rclpy 레벨의 통계 관련 API가 확장되어, 노드별 CPU 사용률, 메모리 사용량, 토픽 메시지 전송 속도 등을 런타임에 모니터링하기 용이해졌다. 이를 통해 Isaac Sim에서 대규모 시뮬레이션을 구동할 때, 특정 노드가 과도한 자원을 소비하거나 메시지 처리율이 저하되는 상황을 조기 파악할 수 있다. 예컨대 ros2cli 확장 명령어인 ros2 node info를 이용해 노드의 QoS 설정, 통신 중인 토픽, 서비스 목록 등을 한눈에 확인할 수 있고, rclcpp의 Statistics API를 통해 주기적으로 노드의 내부 상태를 관측하는 콜백을 등록할 수도 있다. 노드 간 통신 레이턴시와 DDS 수준에서의 패킷 드롭율을 분석해주기 위한 모니터링 툴도 문서화되어, Isaac Sim 환경에서 혹시 생길 수 있는 통신 병목을 미리 진단하는 데 유용하다.

실시간 런타임 교정(Adaptation)과 동적 재구성

분산 노드 구조를 갖춘 로보틱스 시스템은 환경 변화나 요구 성능의 변동에 대해 유연하게 대처해야 한다. ROS2 Humble에서는 노드나 런처(launch) 레벨에서 QoS나 파라미터를 동적으로 재구성하는 방법이 추가되어, 예측 불가능한 상황에서 통신 지연을 최소화하거나 안전성을 높이기 위한 정책 전환을 실행할 수 있다. 예컨대 Isaac Sim에서 센서 데이터 폭주가 발생하면, 구독 노드의 QoS를 Best-effort로 바꾸거나 Depth를 줄여 메시지 큐를 가볍게 만들 수 있다. Python API로 ros2 param set 명령어를 스크립트 내부에서 실행하거나, 동적 파라미터 서비스를 호출함으로써 런타임 중에도 네트워크 트래픽을 제어할 수 있다.

Fault Tolerance와 Health Monitoring

ROS2 Humble는 산업용 환경에서 중요시되는 결함 내성(Fault Tolerance)을 높이기 위해, 런타임 중 노드가 예기치 않게 종료되거나 통신 채널에 장애가 발생했을 때 즉시 대체 노드나 예비 경로를 띄울 수 있는 전략을 지원한다. Lifecycle 노드와 함께, 노드 헬스(health) 상태를 모니터링하고 문제가 감지되면 자동으로 재기동을 시도하거나, 상위 레벨의 오케스트레이션 노드가 다른 노드를 배정하는 방식을 구현하기 쉽도록 Launch 시스템과 관련 서비스가 정비되었다. Isaac Sim 환경에서는 수십~수백 대의 로봇을 동시에 시뮬레이션할 때, 특정 로봇 노드나 센서 노드가 다운되면 전체 시뮬레이션 흐름에 영향을 미치므로, 헬스 모니터링을 통해 장애를 빠르게 파악하고 대응 방안을 마련할 수 있다.

제로카피(Zero-copy) 통신

ROS2 Humble는 DDS 구현체가 제공하는 제로카피(Zero-copy) 통신 기능을 일부 활용하기 쉬워졌다. 제로카피란, 메시지를 퍼블리셔에서 서브스크라이버로 넘길 때 중간에 불필요한 메모리 복사를 최소화하는 기술이다. 센서나 이미지, 포인트클라우드 같은 대형 데이터를 다룰 때, 메모리 복사를 여러 번 거치면 레이턴시와 CPU 사용량이 증가한다. Isaac Sim처럼 시뮬레이션 과정에서 대량의 이미지 데이터를 주고받는 상황이라면, 제로카피 기능을 활용해 전송 지연과 자원 소모를 줄일 수 있다. Humble 버전에서는 RMW 계층에서 제로카피 모드를 활성화하는 설정 가이드가 제공되며, 아직 모든 DDS 구현체가 완벽히 지원하는 것은 아니지만, eProsima Fast DDS나 Cyclone DDS에서 진전된 호환성을 보여주고 있다.

Metrics, Logging, 프로파일링

ROS2 Humble는 성능 모니터링을 위한 Metrics 기능을 체계적으로 제공한다. rclcpp/rclpy 레벨에서 노드별 Metrics 데이터를 수집해, 프로파일링 툴에 전달하거나 Prometheus 같은 외부 시스템과 연동해 대시보드를 구성할 수 있다. 예컨대 Isaac Sim 시뮬레이션을 장시간 구동하며, 주요 지표(센서별 메시지 전송률, 평균 지연, dropped samples 등)를 실시간으로 시각화하면, 개발자가 병목 지점을 신속히 찾고 해결책을 시도할 수 있다. Humble 버전에서 로깅 역시 빌드타임, 런타임 레벨에 따라 좀 더 세분화되었으며, 각 노드마다 로그 파일을 분리하여 생성하거나, DDS 레벨의 트레이싱 정보를 통합 수집하는 방법이 정리되어 있다.

Isaac Sim과 머신러닝(ML) 통합

최근에는 Isaac Sim 환경에서 시뮬레이션 데이터를 활용해 머신러닝 모델을 학습하는 흐름이 주목받고 있는데, ROS2 Humble는 Python 3.10과의 호환성, GPU 가속 라이브러리 활용성 등이 좋아져, 딥러닝 프레임워크와의 연동이 수월해졌다. Isaac Sim에서 시뮬레이션된 카메라 데이터나 로봇 상태 정보를 ROS2 토픽으로 받아 PyTorch나 TensorFlow 모델에 전달하고, 추론 결과를 다시 로봇 제어 노드로 전달하는 파이프라인을 쉽게 구축할 수 있다. 이렇게 구성하면 시뮬레이션-학습-실행의 루프를 자동화할 수 있고, Humble 버전의 QoS 정책을 통해 데이터 전송 손실을 최소화하면서도 충분한 처리량을 확보해 GPU 자원을 효율적으로 활용할 수 있다.

미래 확장성과 커뮤니티

ROS2 Humble는 장기 지원 릴리스로서 향후 3년 이상 중요한 보안 패치와 기능 업데이트가 예정되어 있다. Isaac Sim과의 통합 시나리오에서 필요로 하는 시뮬레이션, 네트워크, 하드웨어 가속 관련 패치가 꾸준히 반영될 가능성이 높다. 커뮤니티 역시 ROS2 Discourse, GitHub, ROSCon 등을 통해 Humble 버전에 집중된 정보를 활발히 공유하므로, 시뮬레이션과 실기기의 코드 구조를 일관성 있게 가져가고자 하는 개발자에게는 유리한 환경이 조성되었다. 특히 NVIDIA, Open Robotics, eProsima 등 주요 기업·기관이 협력하며, DDS 구현체 최적화부터 Isaac Sim 플러그인 개발까지 다양한 분야에서 기여를 이어가고 있으므로, Humble의 생태계가 점점 풍부해질 전망이다.

Isaac Sim과 ROS2 Native 브리지

ROS2 Humble로 넘어오면서, Isaac Sim에서 제공하는 ROS2 Native 브리지(Bridge)도 다양한 최적화와 버그 수정이 이뤄졌다. 기존에는 Isaac Sim 측과 ROS2 측의 토픽, 서비스, 액션 정보를 서로 매핑할 때 DDS 설정의 복잡성과 네트워크 지연 문제로 인해 통신이 원활하지 않은 경우가 있었다. 이제는 Humble 버전에서 제공되는 rclcpp, rclpy 인터페이스가 안정적으로 동작하고 QoS 설정 범위가 넓어졌기 때문에, Isaac Sim에서 브리지를 설정할 때 생길 수 있는 트러블슈팅 포인트가 대폭 줄었다. 특히, 여러 로봇 모델이 동시에 시뮬레이션되는 상황에서도 브리지 내부에서 토픽 이름 충돌이나 네임스페이스 혼선을 방지하기 편리해져, 대규모 프로젝트에서 생산성이 높아진다.

Isaac Sim ROS 카메라 플러그인 예시 (Mermaid)

Isaac Sim에서 ROS2 카메라 플러그인을 구성할 때의 흐름을 다이어그램으로 간단히 표현해보자. 시뮬레이터 내부에서 카메라 센서가 이미지를 생성하면, ROS2 브리지가 해당 데이터를 DDS를 통해 퍼블리싱하는 구조다.

spinner

이때 Humble 버전에서는 QoS 설정을 다양하게 적용할 수 있어, 카메라 이미지를 Reliable로 전송하면서도 Depth(큐 크기)를 제한하거나, 반대로 Best-effort로 설정해 시뮬레이션 속도를 최우선으로 고려할 수도 있다. 카메라 해상도가 높으면 네트워크 부하가 커질 수 있으므로, Isaac Sim 측에서 해상도 스케일링 옵션을 사용하거나 브리지의 이미지 압축 플러그인을 적용해 효율을 높이는 방법도 있다.

rclcpp와 rclpy 확장

ROS2 Humble에서는 C++ API(rclcpp)와 Python API(rclpy)가 동등한 기능을 제공하도록 정렬(synchronization)되어, 대부분의 노드 기능을 두 언어 중 하나로 자유롭게 구현할 수 있다. 이전에 비해 rclpy가 성능 및 기능 면에서 많이 개선되어, Isaac Sim 스크립팅 환경과 직접 연동할 때 Python만으로도 충분히 빠른 프로토타이핑을 할 수 있다. 반면, 실시간 성능이 매우 중요한 모듈은 C++(rclcpp)로 작성한 뒤, Isaac Sim과의 상위 로직만 Python 스크립트로 관리하는 하이브리드 구조를 택하는 경우도 많다. Humble 버전에서는 이러한 구성 방식이 자연스럽게 지원되므로, 개발자가 주력하는 언어 환경에 따라 다양한 접근이 가능하다.

메시지 압축 및 전송 최적화

카메라나 포인트클라우드처럼 데이터 양이 많은 메시지는 DDS 통신 과정에서 압축을 적용하면, 네트워크 대역폭 사용량을 크게 줄일 수 있다. ROS2 Humble는 메시지 압축을 위한 표준 패키지나 플러그인(예: image_transport, compression 관련 패키지들)을 폭넓게 지원해, Isaac Sim 내부에서 발생하는 대규모 이미지 데이터를 실시간에 가깝게 전송할 수 있도록 돕는다. 라이더, 레이다 등의 고주파 센서 데이터를 처리할 때도 비슷한 전략을 사용할 수 있다. 일각에서는 ZeroMQ나 gRPC 같은 다른 통신 방법과 혼합해 사용하기도 하지만, ROS2 Humble의 DDS 최적화가 점점 좋아지고 있으므로, ROS2만으로도 충분히 성능을 낼 수 있는 사례가 늘고 있다.

클라이언트 라이브러리와 언어 지원

ROS2 Humble는 공식적으로 C++, Python 외에도 rcljava(Java), rclc(C), rclcs(C#) 등의 다양한 언어 바인딩을 유지한다. Isaac Sim의 Python 중심 환경과는 별개로, 산업 현장에서는 리얼타임 제어를 위해 C로 작성된 rclc를 사용하거나, 안드로이드 기반 로봇 애플리케이션을 위해 rcljava를 쓰는 사례가 많다. Humble 버전은 이러한 확장 언어 지원에도 적극적이어서, 통신 계층(DDScpp, DDSjava 등)을 공통 기반으로 하되 언어별 API를 일관되게 제공한다. 여러 언어를 혼합한 시스템에서도, QoS나 Lifecycle 노드 같은 ROS2 핵심 기능을 모두 활용할 수 있어, Isaac Sim에서 준비한 노드와 임베디드 측 rclc 노드를 하나의 프로젝트 안에 통합하기가 수월하다.

ROS-Industrial와 Isaac Sim 통합

ROS-Industrial 프로젝트는 산업용 로봇 암(arm), CNC, AGV, 드론 등의 ROS 사용 사례를 활성화하는 목적으로 시작되었는데, ROS2 Humble 버전에서도 파트너십과 기여가 계속 이어지고 있다. Isaac Sim에서 산업용 로봇을 시뮬레이트할 때, ROS-Industrial 쪽에서 유지되는 MoveIt!, 외부 모션 플래너, 드라이버 인터페이스 등을 가져와 쓸 수 있고, Humble 릴리스 노트에 맞춰 호환성을 맞춘 패키지도 다수 공개되어 있다. 이를 통해 실제 작업 현장에서 사용하는 로봇 모델(예: FANUC, KUKA, ABB)을 Isaac Sim에서 재현하고, ROS2 기반 제어 스택을 검증하는 시나리오가 쉬워졌다. DDS 보안 설정, RTOS 적용, 멀티 로봇 협업 등을 포함해 산업 현장 수준의 요구사항을 충족하면서도 시뮬레이션 기능을 활용할 수 있다.

Isaac Sim ROS2 브리지 설정 예시 (bash)

간단히 Isaac Sim 로컬 환경에서 ROS2 Humble 브리지를 실행하는 예시를 보자. Isaac Sim에서 제공하는 패키지를 사용해 브리지를 구동하고, 카메라 데이터를 ROS2 토픽으로 퍼블리시하는 구성이다.

위와 같이 Isaac Sim 내장 파이썬 환경을 이용하거나, 반대로 로컬 시스템의 ROS2 Humble 파이썬 환경에서 Isaac Sim 확장을 불러올 수도 있다. 실제로는 Launch 파일이나 Docker 컨테이너 스크립트로 한꺼번에 세팅해두는 경우가 많으며, DDS나 QoS 관련 파라미터를 .yaml이나 .xml 파일에 정의해두고 Isaac Sim 시작 시 자동으로 불러오는 방식을 쓸 수도 있다.

다양한 시나리오에서의 활용

ROS2 Humble은 단순한 모바일 로봇 시뮬레이션 외에도, 다음처럼 다양한 시나리오에서 Isaac Sim과 함께 활용될 수 있다.

  • 멀티 조인트 로봇팔(Industrial Manipulator) 작업 시퀀스 검증

  • 자율주행차(Autonomous Vehicle) 시뮬레이션 및 센서퓨전(센서 통합) 실험

  • 군집 드론 및 Aerial Robot 통신 구조 실험

  • 물류 창고(AGV, 컨베이어벨트) 모델링 및 작업 자동화 테스트

  • AI/ML 모델 학습을 위한 합성 데이터(synthetic data) 생성

Humble 버전의 내부 QoS 최적화, Executor와 Lifecycle 노드 개선, rclpy 성능 향상 등은 이런 복잡한 시뮬레이션 환경에서 통신 안정성과 개발 편의성을 크게 높여 준다. Isaac Sim으로 시뮬레이션된 다양한 3D 물리 환경을 보다 신속하게 로봇 소프트웨어와 연결하는 데 있어서, ROS2 Humble의 성숙도는 큰 장점이 된다.

--- 요약

ROS2 Humble은 장기 지원(LTS)이면서도 기존 Foxy, Galactic 등과 비교했을 때 내부 구조가 많이 향상되어, Isaac Sim 같은 대규모 시뮬레이션 플랫폼과의 연동이 수월해졌다. DDS 레벨에서의 최적화, QoS 정책 확장, Lifecycle/Composable Node 개선, Python 3.10 및 C++17 지원, 보안/테스트/품질 관리 기능 등이 고도화되며, 실질적으로 로보틱스 및 시뮬레이션 워크플로의 개발 생산성을 높이는 방향으로 발전했다.

Last updated