# ROS2 Humble 주요 변화 요약

#### DDS 및 RMW 계층 구조 개선

ROS2 Humble에서는 DDS(Data Distribution Service) 벤더 별로 상이했던 성능 및 네트워크 대응 방식을 좀 더 표준화하고, RMW(Robot Middleware) 레이어 전반의 구조를 재정비하였다. 이를 통해 메시지 교환 지연과 자원 점유율이 이전 버전에 비해 크게 개선되었다.

* **새로운 RMW 구현체** 일부 DDS 벤더가 제공하는 최적화된 전송 프로토콜을 별도의 RMW로 지원하게 되면서, 더 세분화된 선택지를 제공한다.
* **네트워크 QoS 매핑 향상** 기존 ROS2 Foxy나 Galactic 대비 QoS(신뢰성, 내구성 등) 설정이 DDS 수준에서 더욱 구체적으로 매핑되도록 고도화되었다.
* **동적 네트워크 상황 대응** 토픽 생성 시점의 QoS 설정뿐 아니라 동적으로 변경될 수 있는 네트워크 상황에 대응하기 위한 정책도 보완되었다. 예를 들어 동일 노드에서 서로 다른 토픽의 QoS 설정 간 충돌 완화 로직이 개선되어, 여러 데이터 스트림을 동시에 운용할 때 안정성을 높이게 되었다.

#### 퍼포먼스 최적화 및 실시간성 강화

ROS2 Humble부터 실시간성을 고려하는 시스템을 위한 최적화가 가속화되었다. $T\_\text{latency}$로 표시되는 메시지 왕복 지연 시간의 평균값이 이전 버전에 비해 낮아졌으며, 스레드 구조와 메모리 할당 모델에도 변화가 있다.

* 메모리 할당 정책 개선
  * 콜백 함수 내 잦은 동적 할당을 줄이는 방향으로 rclcpp의 메모리 관리 로직이 변경되었다.
  * 실시간 OS 또는 RT 파라미터를 사용하는 경우, 특정 시점에 메모리 할당이 일어나지 않도록 하는 전략을 좀 더 쉽게 구성할 수 있게 되었다.
* 프로세스 간 통신 최적화
  * intra-process 통신 경로의 버퍼 관리가 개선되어, 프로세스 내부에서 토픽을 발행하고 수신할 때 불필요한 메모리 복사 횟수가 감소되었다.
  * 이를 통해 고빈도 메세징 처리 시 CPU 부하와 지연이 줄어드는 효과가 있었다.

#### 노드 라이프사이클 및 상태 관리 변화

노드가 올라가고 내려가는 생명 주기에 대한 이벤트 처리와 모니터링 방식도 한층 유연해졌다.

* **노드 액티브(active)/비활성(inactive) 전환 개선** 노드 실행 중간에 토픽 발행/구독을 임시로 정지시키거나 다시 활성화할 수 있는 상태 전이 함수를 rclcpp에서 직접 지원하여, 기존에는 수동으로 상태를 관리했던 로직이 단순화되었다.
* **수명주기(Lifecycle) 이벤트 모니터링** 각 단계마다 발생하는 라이프사이클 이벤트를 상세히 로깅할 수 있게 되었고, 노드가 죽거나 재시작될 때 다른 노드가 이를 감지하기 쉬워졌다.
* **분산 시스템 연동성** 복수의 노드가 서로 다른 기기 혹은 컨테이너 상에서 동작할 때, 라이프사이클 동기화를 위한 툴링이 향상되어 분산 환경에서의 협업 처리가 원활해졌다.

#### ROS 1 Bridge 기능 확장

ROS1(Robot Operating System 1) 생태계와 호환성을 유지하기 위해 제공되는 ROS 1 Bridge도 여러 측면에서 향상되었다.

* **새로운 메시지 타입 자동 변환** ROS1 패키지에서 새로 정의된 메시지 타입을 자동 인식하는 매커니즘이 보완되어, Bridge 구성 시 수동 설정해야 하는 항목이 줄어들었다.
* **다중 토픽 변환 성능 개선** 여러 메시지 형식을 동시 변환할 때 발생하던 병목을 줄이고, 변환 과정에서의 메모리 사용량도 감소시켰다. 이는 주로 동적 형식 변환(티플 변환 등)에 대한 최적화 덕분이다.
* **ROS1 플러그인 시스템과의 호환** 일부 ROS1 플러그인이 ROS2 환경에서 동작하도록 브리징 가능하도록 하였으며, 이를 이용해 기존 ROS1 패키지 자산을 점진적으로 ROS2로 이관할 수 있는 스무딩(smoothing) 전략이 가능해졌다.

#### 새로운 CLI 및 툴링

커맨드라인 툴과 Launch 시스템 등 툴링 측면에서도 기능이 추가되었다.

* ros2 CLI 확장
  * 토픽, 파라미터, 서비스 등 기존 명령어 외에 노드 라이프사이클 관리나 QoS 프로파일 조회, DDS 상태 모니터링 등 다양한 신규 서브커맨드가 추가되었다.
  * 기존 launch 파일을 명령줄에서 직접 디버깅하거나 실행할 때, 필요한 ROS2 환경 변수 설정을 좀 더 자동화하는 기능을 제공한다.
* Launch 시스템 강화
  * Python API뿐 아니라 C++ 기반으로도 Launch 파일을 구조화할 수 있는 실험적 기능이 도입되었다.
  * 노드 사이의 종속성 관계나 의존성을 시각화해서 확인할 수 있는 mermaid 출력이 제공되어, 대규모 로봇 애플리케이션 구성 시 설계를 쉽게 검증할 수 있다.

#### 크로스 컴파일 및 멀티 플랫폼 지원

Humble 버전에서는 이종 하드웨어 환경 간의 이식성과 빌드 편의성을 개선하기 위해, ROS2 크로스 컴파일(Cross-Compilation) 워크플로우가 더욱 체계화되었다.

* **빌드 도구 구성 간소화** 기존에는 임베디드 보드나 특정 아키텍처(ARM, RISC-V 등)용 크로스 컴파일 환경 설정이 매우 복잡했으나, Humble부터 기본 제공되는 cross-compilation 템플릿 및 예제 파일들이 크게 확장되어 사용자 편의를 높였다.
* **멀티 플랫폼 디버깅 지원** 크로스 컴파일 후 대상 디바이스(예: ARM64)에서 원격 디버깅을 수행할 때 필요한 gdbserver 설정, ROS2 런치 파일 연동 등의 과정을 자동화하는 스크립트가 추가되었다.
* **Docker 컨테이너 활용** OS 종속성을 줄이기 위해 Docker 기반의 빌드 및 테스트 환경이 권장 사항으로 정착되었다. Humble부터 제공되는 공식 Docker 이미지를 활용하면, 개발 환경을 컨테이너로 통일해 호환성을 담보할 수 있다.

#### 보안(Security) 개선

ROS2에서는 DDS 레벨에서 이미 보안 확장(ROS2 Security)을 지원해 왔으나, Humble 버전에서 더욱 강화된 기능들이 추가되었다.

* SROS2(Secure ROS2) 기능 확대
  * 각 노드별 키(key)와 인증서(certificate) 발급을 간소화하는 툴이 제공되며, 노드 단위로 액세스 제어를 훨씬 정교하게 설정할 수 있게 되었다.
  * DDS Security 관련 설정 파일을 통합 관리하도록 개선하여, 클라이언트 측과 서버 측에서 동기화 실수를 줄인다.
* 네트워크 암호화 정책 다양화
  * DDS 보안 프로파일 외에 TLS, DTLS와 같은 추가 암호화 채널 사용 예시가 문서화되어, 유연한 네트워크 구성 시나리오를 제시한다.
  * 일부 벤더가 제공하는 하드웨어 암호화 모듈(HSM) 연계도 지원이 확장되었다.

#### 파라미터 이벤트 감시 및 동적 파라미터

노드별 파라미터 관리를 더욱 정교하게 다룰 수 있도록, Humble에서의 rclcpp/rclpy에서 파라미터 이벤트를 감시하는 메커니즘이 강화되었다.

* 파라미터 업데이트 감시
  * 특정 노드의 파라미터가 변경될 때 트리거되는 콜백을 구독 패턴으로 등록할 수 있어, 다른 노드가 해당 이벤트를 실시간으로 모니터링하고 필요한 작업을 수행할 수 있다.
  * 예: $T\_\text{total} = T\_\text{publication} + T\_\text{transport} + T\_\text{subscription}$ 형태의 지연 측정 파라미터가 변경되었을 때, 자동으로 로깅 로직을 실행하도록 구성할 수 있다.
* 동적 파라미터 갱신
  * 노드 실행 중에 파라미터 값을 변경하고 즉시 반영되도록 하는 동적 파라미터 서버가 개선되어, 실시간 제어나 센서 처리 로직에서 좀 더 유연하게 튜닝을 적용할 수 있다.
  * 파라미터 변경 허용/불허 정책을 정의하는 `on_set_parameter_callback`이 이전보다 세분화되어, 특정 파라미터에만 별도의 검증 로직을 삽입할 수 있다.

#### 노드 상태 전이 예시 (Mermaid)

아래는 노드 라이프사이클의 주요 상태 전이다.

{% @mermaid/diagram content="stateDiagram
\[*] --> unconfigured
unconfigured --> inactive: configure()
inactive --> active: activate()
active --> inactive: deactivate()
inactive --> unconfigured: cleanup()
unconfigured --> \[*]: shutdown()" %}

노드가 unconfigured 상태에서 생성된 뒤, `configure()` 함수를 통해 토픽이나 파라미터를 초기화하고, `activate()`에 의해 실제 구독/발행을 시작하는 구조를 보인다.

#### QoS Override 기능 및 샘플 정책

ROS2 Humble에서는 노드 구동 시점에 QoS 프로파일을 하드코딩하지 않고 동적으로 재정의(override)할 수 있는 기능이 추가되었다.

* QoS Override 개념
  * 노드 또는 노드가 사용하는 특정 토픽에 대해, 런타임 시점에 QoS 설정(신뢰성, 내구성, 히스토리 등)을 일괄적으로 바꿀 수 있는 매커니즘이다.
  * 예: 어떤 토픽이 기본적으로 Reliability = Reliable 로 설정되었지만, 네트워크 환경에 따라 BestEffort로 변경해 성능을 높이거나, 내부 테스트 시에는 히스토리를 짧게 조정하는 식으로 활용 가능하다.
* 샘플 QoS 정책
  * **`BEST_EFFORT` vs `RELIABLE`**: 중요한 데이터의 신뢰성을 높여야 할 때는 Reliable를 사용하고, 가볍게 처리되는 센서 데이터나 잦은 노이즈가 발생하는 스트림에는 BestEffort 방식을 적용해 지연을 줄인다.
  * `KEEP_ALL` vs `KEEP_LAST`: 트래픽이 많은 환경에서 모든 이력을 보관(`KEEP_ALL`)하기에는 비효율적일 수 있으므로, 필요에 따라 최근 N개만 보관(`KEEP_LAST`)하도록 재설정할 수 있다.
* 개발 및 테스트 효율성 증대
  * ROS2 Launch 파일이나 ros2 CLI를 통해 QoS를 손쉽게 재정의할 수 있어, 별도로 코드를 수정하지 않고도 다양하게 실험 및 튜닝이 가능하다.
  * 네트워크 환경(예: Wi-Fi vs 유선 LAN)에 따라 QoS를 다르게 적용해보고 성능을 측정하는 시나리오가 흔해, 이러한 분기 처리가 유용하다.

#### ROS2 Actions 인터페이스 개선

Galactic 버전 이후 본격적으로 자리잡은 ROS2 Action 인터페이스가 Humble에서는 성능과 사용성이 한층 더 다듬어졌다.

* 콜백 구조 단순화
  * 목표(goal) 수신, 피드백(feedback) 제공, 결과(result) 전송과 같은 액션의 주요 단계를 처리하는 콜백이 각각 더 명료해져, 사용자 입장에서 로직을 분산 배치하기 쉬워졌다.
  * 중간 피드백을 보내는 주기가 유연해졌으며, 클라이언트 측에서도 해당 피드백을 간단히 구독할 수 있다.
* 액션 서버 안정성 향상
  * 대규모 액션 클라이언트가 동시에 목표를 전송할 때, 액션 서버가 일시적으로 중단되거나 초과 로드되는 상황이 발생하던 문제를 해결하기 위한 흐름 제어(flow control)가 추가되었다.
  * 액션 중간에 노드가 재시작되더라도, 로컬 스테이트 머신이 안정적으로 복원되도록 하는 로직이 보완되었다.
* Action/Service/Topic 간 연계
  * 액션이 내부적으로 서비스 호출이나 토픽 발행을 수행할 때, 액션의 라이프사이클과 그 하위 엔티티(서비스, 토픽) 간의 종속 관계를 rclcpp/rclpy에서 좀 더 명확하게 추적할 수 있게 되었다.
  * 예: 액션이 완료되면 자동으로 해당 토픽 구독이 해제되거나, 액션 실패 시 별도의 에러 노티파이를 서비스 콜로 날리는 식의 로직을 쉽게 작성 가능하다.

#### 컴포넌트(Composition) 기반 노드 구조

컴포넌트라는 개념을 통해, 하나의 프로세스 안에 여러 노드를 동적으로 로드해서 실행할 수 있는 기능이 확장되었다.

* Composition API 간소화
  * C++에서 노드를 구성 요소(SharedLibrary 형태)로 패키징하여, 런타임에 특정 노드를 로드하거나 내릴 수 있도록 하는 로직이 추가되었다.
  * 이를 통해 노드를 별도 프로세스로 구동할 필요가 줄어들고, 서로 밀접하게 연동되는 노드들을 하나의 프로세스로 묶어 관리할 수 있다.
* 메모리 사용량 절감
  * 별도 프로세스가 아닌 하나의 프로세스로 실행되므로, DDS 파티션이나 RMW 레이어에서 중복되는 자원 할당을 최소화할 수 있다.
  * intra-process 통신이 자동으로 활성화되면서 토픽 메시지 복사가 감소되어, 전체적으로 메모리 및 CPU 사용량이 절감된다.
* 컴포넌트 동적 로딩 예시
  * ros2 component 명령어를 통해, 특정 노드 컴포넌트를 추가 로드하거나 언로드할 수 있으며, 런타임 중에도 서비스를 통해 노드를 추가 혹은 제거하는 작업이 가능하다.
  * 로봇 애플리케이션에서 특정 기능(예: SLAM, Navigation 등)을 모듈화하여 필요 시점에만 로딩함으로써, 전체 시스템 리소스 사용을 효율화할 수 있다.

#### colcon 빌드 시스템 및 패키지 관리 개선

Humble에서는 ROS2 표준 빌드 도구인 colcon을 중심으로 패키지 관리와 빌드 과정을 간소화하기 위한 개선이 이루어졌다.

* 병렬 빌드 제어
  * 빌드를 진행할 때 CPU 코어에 맞춰 자동으로 병렬화를 최적화해주며, 과거 버전에서 발생하던 종속 패키지 빌드 순서 꼬임 현상이 줄었다.
  * 빌드 실패 시 재시도(retry)나 일부 패키지에 대한 특정 플래그(예: --cmake-args)를 적용하는 과정을 좀 더 직관적으로 정의할 수 있다.
* 메타 패키지 구조 정리
  * 서로 관련 있는 패키지를 하나의 메타 패키지로 묶어 관리할 때, 의존성(Dependencies)이 체계화되어 배포나 업데이트 시 혼선을 줄였다.
  * 예: 어떤 로보틱스 스택(예: SLAM, Computer Vision 등) 전체를 metapackage로 묶어서 일괄 빌드하고, 구성 요소를 선택적으로 설치할 수 있다.
* Extension 플러그인
  * colcon 자체에 플러그인을 추가하여 빌드 파이프라인에 원하는 스크립트나 툴 체인을 연결할 수 있는 확장 포인트가 마련되었다.
  * CI/CD(Continuous Integration/Continuous Deployment) 환경에서 자동화 스크립트와 결합하기 쉬워졌다.

#### rosbag2 레코딩/재생 기능 강화

rosbag2는 ROS2에서 데이터 로깅 및 재생을 담당하는 핵심 패키지로, Humble에서 처리 성능과 기능이 확대되었다.

* 고속 데이터 레코딩 지원
  * 높은 주기로 발행되는 센서 토픽(LiDAR, 카메라 영상 등)을 동시에 녹화할 때 발생하던 스로틀링(throttling) 문제를 완화하기 위한 I/O 최적화가 적용되었다.
  * 컨테이너화된 환경(Docker)에서도 안정적으로 대용량 데이터를 스트리밍 형태로 저장할 수 있도록 버퍼 처리 로직이 개선되었다.
* 다중 저장 포맷 지원
  * 기본 SQLite3 형식 외에, Apache Arrow나 Parquet와 같은 컬럼 지향 포맷을 활용할 수 있게 되어, 오프라인 분석에 강점을 가진 데이터 포맷을 선택할 수 있다.
  * 플러그인 형식으로 다른 스토리지 드라이버를 추가할 수 있도록 구조가 열려 있다.
* 재생 및 시간 동기화
  * 여러 rosbag2 파일을 동시에 재생할 때 발생하는 타임스탬프 충돌이나 리플레이 순서 문제를 해결하기 위한 동기화 로직이 강화되었다.
  * 예: 두 개 이상의 rosbag2 파일에 각각 카메라 토픽과 LiDAR 토픽이 기록되었을 때, 재생 시 동일한 시간축에 맞춰 합성할 수 있도록 재생 시점을 미세 조절하는 기능이 추가되었다.

#### 테스트 및 디버깅 툴 향상

ROS2 애플리케이션을 개발할 때 필요한 테스트 프레임워크와 디버깅 기능들도 대폭 강화되었다.

* rclcpp/rclpy 단위 테스트 템플릿 제공
  * 노드 단위 테스트, 메시지 퍼블리셔/서브스크라이버 테스트, 액션/서비스 호출 테스트 등을 간단히 작성할 수 있는 템플릿 코드와 예제가 추가되었다.
  * Mocking, Fake 노드 구성 등 복잡한 테스트 시나리오에 대응하기 위한 유틸리티 함수들이 제공된다.
* 로거(logger) 개선
  * 기존에는 노드 이름 기반으로만 로그가 남았으나, 클래스 단위 혹은 함수 단위로 디버그 레벨을 세부 설정하는 기능이 추가되었다.
  * 런타임 중 로깅 레벨을 변경하여, 문제 발생 시에만 verbose 로그를 활성화하는 식의 시나리오가 좀 더 쉬워졌다.
* ros2 doctor
  * ROS2 환경 설정이나 네트워크 상태, DDS 트래픽 등을 자동 점검하고 진단 리포트를 출력하는 ros2 doctor 커맨드가 개선되었다.
  * 결과를 YAML 혹은 JSON 형태로 저장해 CI 상에서 정적 분석이나 품질 관리에 활용할 수 있다.

#### micro-ROS 연동 및 임베디드 대상 확장

임베디드 환경에서 ROS2를 경량화하여 사용하는 micro-ROS 프로젝트와의 연계가 Humble에서 한층 견고해졌다.

* 코드 사이즈 최적화
  * FreeRTOS, Zephyr 등에서 동작하는 micro-ROS 에이전트/클라이언트 간 통신 과정을 최적화해, 플래시와 RAM 사용량을 낮추었다.
  * 임베디드 디바이스에서 실시간 요구사항을 충족하기 위한 scheduling 정책도 보완되었다.
* 공유 메모리 DMA 활용
  * 특정 보드(Cortex-M 계열 등)에서 DMA(Direct Memory Access)를 활용한 데이터 전송을 지원하여, 토픽 송수신 시 CPU 개입을 최소화할 수 있다.
  * micro-ROS 에이전트와의 통신에도 공유 메모리 형태를 채택해, 센서 데이터를 빠르게 송수신할 수 있도록 한다.
* Humble 호환성
  * micro-ROS 구성 요소가 Humble에서 새롭게 정의된 QoS 정책이나 노드 라이프사이클 이벤트를 부분적으로 지원하게 되어, 임베디드 노드도 ROS2 노드처럼 제어 가능하다.

#### RViz2 및 시각화 개선

ROS2에서 주요 시각화 도구로 사용되는 RViz2 역시 Humble 버전에서 성능과 사용성이 보완되었다.

* 렌더링 엔진 최적화
  * 다중 카메라 피드나 대규모 포인트 클라우드(수백만 점) 등을 시각화할 때 발생하는 프레임 드롭을 줄이기 위해, Ogre3D 기반 렌더링 파이프라인 설정이 개선되었다.
  * 초점 영역만 집중적으로 업데이트하는 기능이 추가되어, 전체 화면을 매 프레임 재렌더링하지 않아도 된다.
* 플러그인 구조 강화
  * 기존에는 지도(Map) 표시나 3D 모델 표시를 위한 플러그인이 분산되어 있었으나, Humble에서 플러그인 API가 명료화되어 써드파티 플러그인 개발·배포가 더 쉬워졌다.
  * 특정 센서 형식(열화상 카메라 등)에 특화된 표시 모드를 쉽게 추가할 수 있고, RViz2 실행 중에 플러그인 로드/언로드가 가능해졌다.
* 인터랙션(Interaction) 기능
  * 지도 상에 마커를 찍거나, 3D 오브젝트를 직접 조작할 때의 마우스·키보드 이벤트 처리가 안정화되었다.
  * Publish/Subscribe를 통해 RViz2에서 직접 토픽 발행이 가능해, 시뮬레이션 환경에서 임의의 명령을 테스트하거나 특정 좌표를 노드에게 전달하기가 간편해졌다.

#### TF2 프레임워크 확장

로봇 시스템에서 좌표계 변환을 담당하는 TF2 라이브러리도, Humble 버전에서 성능과 유연성이 확대되었다.

* 캐싱 정책 개선
  * 여러 좌표계(Frame)의 변환 정보를 관리할 때, 과도한 변환 요구가 들어오면 생길 수 있는 리소스 병목을 해소하기 위해 내부 캐싱 정책이 업데이트되었다.
  * 특정 시간대를 중심으로 변환 요청이 몰릴 경우, 변환 결과를 임시 저장해 중복 계산을 최소화한다.
* Dynamic Broadcaster/Buffer
  * 노드 라이프사이클에 따라 TF를 브로드캐스트하거나, 특정 시점에만 버퍼를 생성·소멸하는 기능이 추가되어 메모리를 좀 더 효율적으로 쓸 수 있다.
  * 임시 좌표계나 일회성 실험용 좌표계를 동적으로 구성해, 테스트할 때마다 별도의 노드를 만들 필요가 없어졌다.
* 고주파수 변환 지원
  * 고속 로봇의 경우 초당 수백\~수천 Hz로 좌표계 변환이 필요한 상황이 있는데, 이에 대응하기 위해 TF2 내부에서 메시지 병합과 스레드 분배 방식을 조정했다.
  * $T\_\text{transform} < 1\text{ms}$ 수준의 지연 목표를 가진 시스템에서 성능 측정이 용이하도록, 통계 정보(최대/최소/평균 변환 시간) 제공 API가 추가되었다.

#### Launch Testing 및 시뮬레이션 연계

로봇 애플리케이션을 대규모로 구성할 때, Launch 파일과 시뮬레이터(Gazebo, Ignition 등)의 연계가 중요해졌으며 Humble에서 기능 개선이 이뤄졌다.

* Launch Testing
  * launch\_testing 패키지를 이용해 Launch 파일 단위의 통합 테스트를 작성할 수 있으며, 노드가 정상적으로 구동되는지·토픽이 올바르게 교환되는지 등을 자동 검증 가능하다.
  * 특정 시점에 노드를 강제로 재시작하거나 파라미터를 변경하는 시나리오를 스크립트로 작성해, 안정성을 집중적으로 시험할 수 있다.
* Gazebo & Ignition 시뮬레이션 연계
  * 시뮬레이터 안에서 ROS2 노드를 로드하거나, 시뮬레이션 시간(clock)을 ROS2 시간과 동기화하는 API가 개선되었다.
  * 물리 엔진(Physics Engine) 업데이트 속도를 ROS2 QoS에 맞춰 동적으로 바꿀 수 있어, 실제 환경과 유사한 시뮬레이션 결과를 얻기 쉬워졌다.
* 멀티 로봇 시나리오
  * 여러 로봇을 동시에 시뮬레이션하는 상황에서도, Launch 파일에서 간단한 for 루프나 매크로를 써서 각 로봇의 노드를 일괄 배포할 수 있도록 지원된다.
  * ROS2 Discovery(Discovery Server 또는 Multicast)를 설정해, 로봇들 간 통신 구성을 자동화하는 스크립트를 제공한다.

#### 커뮤니티 가이드라인 및 생태계 업데이트

Humble 릴리즈와 함께 ROS2 커뮤니티에서 권장하는 개발 및 코드 작성 스타일 가이드, 기여 방식 등이 정비되었다.

* 코드 스타일 가이드
  * ROS2 Core 레포지토리들은 대부분 C++14/17 표준을 기반으로 작성되나, Humble에서는 핵심 패키지에 대해 C++17의 일부 기능(예: `std::optional, std::variant`)을 사용하는 코드가 공식 허용되었다.
  * rclcpp, rmw 등은 각각의 패키지에서 권장하는 코딩 컨벤션을 문서로 명시하고, PR 시 자동 검증(CI)을 진행한다.
* 기여 프로세스 정비
  * Pull Request 템플릿이나 Issue 템플릿이 표준화되어, 버그 리포트나 기능 개선 제안 시 더 체계적인 정보를 제공하도록 가이드라인이 설정되었다.
  * 문서 기여도(Documentation Contribution)도 공식적으로 인정받을 수 있게 되어, 단순 오탈자 수정부터 대규모 튜토리얼 추가까지 다양한 수준의 컨트리뷰션이 활발해졌다.
* 장기 지원(LTS) 정책
  * Humble은 장기 지원(Long Term Support) 버전 중 하나로, 일정 기간 동안 핵심 버그나 보안 이슈에 대한 패치가 꾸준히 제공될 예정이다.
  * 이와 동시에 Galactic, Foxy 등 이전 버전에서 Humble로 옮겨갈 때 고려해야 할 사항들(Deprecated 기능, API 변경 등)이 문서화되었다.
