ROS2 Humble은 2022년 5월에 공개된 ROS2의 장기 지원(LTS) 버전이에요. 2027년 5월까지 안정적인 유지 보수가 보장되는 이 배포판은 산업 현장과 연구실 양쪽에서 사실상 표준처럼 자리 잡고 있어요. 그런데 처음 ROS2를 접하는 분들에게는 메시지 통신, 노드 구조, 실시간성 보장 같은 개념이 낯설게 느껴질 수 있어요. 이번 글에서는 ROS2 Humble의 핵심 구조와 설치 방법, 실무에서 자주 쓰이는 패턴까지 차근차근 정리해 봤어요.
ROS2 Humble이란 무엇인가요
ROS2(Robot Operating System 2)는 이름과 다르게 운영체제가 아니라, 로봇 소프트웨어를 만드는 데 필요한 미들웨어와 도구 모음이에요. 노드 간 통신, 비동기 메시지 전달, 빌드 시스템, 시각화 도구가 통합된 거대한 생태계라고 보면 정확해요. ROS1과 비교하면 가장 큰 차이는 DDS(Data Distribution Service)를 통신 백본으로 채택해 분산 환경과 실시간성을 강화했다는 점이에요.
Humble Hawksbill의 위치
ROS2는 1년 또는 2년 주기로 새로운 배포판을 발표해요. Humble Hawksbill은 그중에서도 5년 LTS로 지정된 안정 버전이라, 양산 제품이나 장기 프로젝트에 적합해요. Foxy Fitzroy의 후속이며, Iron Irwini와 Jazzy Jalisco를 거쳐 현재까지도 가장 많이 쓰이는 버전이에요. 산업체에서 새로 시작하는 프로젝트라면 별다른 이유가 없는 한 Humble부터 검토하는 흐름이 일반적이에요.
Ubuntu 22.04와의 결합
Humble은 Ubuntu 22.04 Jammy Jellyfish를 공식 타겟으로 삼아요. 다른 배포판이나 macOS에서도 빌드는 가능하지만, 공식 바이너리 패키지가 제공되는 환경은 Ubuntu 22.04와 Windows 10이에요. 안정적으로 운영하려면 Ubuntu 22.04 위에서 작업하는 편을 권장해요. 도커 이미지(osrf/ros:humble-desktop)도 잘 정비되어 있어, 호스트 OS를 바꾸기 어려울 때는 컨테이너로 대체할 수 있어요.

ROS2 Humble 설치와 환경 준비
설치는 공식 문서가 가장 정확하지만, 처음 따라 하는 분들은 작은 단계에서 막히는 경우가 많아요. 여기서는 Ubuntu 22.04 클린 설치 환경을 기준으로 핵심 흐름을 짚어볼게요. APT 저장소 등록, GPG 키 추가, 데스크톱 풀 패키지 설치까지 순서대로 진행하면 30분 안에 RViz2와 turtlesim까지 띄울 수 있어요.
저장소와 키 등록
먼저 locale이 UTF-8을 지원하는지 확인해야 해요. locale 명령으로 LANG이 en_US.UTF-8 같은 값인지 점검하고, 그렇지 않다면 sudo locale-gen en_US en_US.UTF-8로 보강해요. 이후 ROS 키링과 저장소를 추가하는 순서예요. APT가 HTTPS로 패키지를 받을 수 있도록 curl과 gnupg가 미리 설치되어 있어야 해요. 키 파일은 /usr/share/keyrings/ros-archive-keyring.gpg 위치에 두는 것이 새로운 표준이에요.
설치 명령과 환경 변수
저장소가 등록되면 sudo apt update && sudo apt install ros-humble-desktop로 설치를 시작해요. 데스크톱 풀 설치는 RViz2, demo 노드, 시각화 도구까지 포함하므로 약 2GB 정도 디스크를 쓴다는 점을 감안해야 해요. 설치 후에는 source /opt/ros/humble/setup.bash를 셸 시작 스크립트(~/.bashrc)에 추가해 환경을 자동으로 불러오게 해 두는 편이 편해요. 다만 여러 ROS 버전을 함께 다룬다면 자동 source는 피하고, 워크스페이스마다 명시적으로 불러오는 흐름이 안전해요.
turtlesim으로 동작 확인
설치가 끝나면 두 개의 터미널을 열어 ros2 run turtlesim turtlesim_node와 ros2 run turtlesim turtle_teleop_key를 실행해요. 거북이 창이 뜨고 키보드 화살표로 움직이면 통신과 노드 실행이 정상이라는 신호예요. 만약 거북이가 움직이지 않는다면 DDS 미들웨어 문제일 가능성이 커요. RMW_IMPLEMENTATION 환경 변수를 rmw_fastrtps_cpp로 명시하거나, 방화벽이 멀티캐스트를 막고 있는지 점검해 보면 도움이 돼요.
핵심 개념: 노드, 토픽, 서비스, 액션
ROS2의 통신 모델은 네 가지 주요 개념으로 정리할 수 있어요. 노드는 실행 단위, 토픽은 비동기 발행/구독 채널, 서비스는 동기 요청/응답, 액션은 장시간 실행되며 진행률 피드백이 가능한 호출이에요. 이 네 가지 조합으로 거의 모든 로봇 제어 시나리오를 표현할 수 있어요.
노드와 패키지 구조
노드는 rclcpp(C++) 또는 rclpy(Python) 라이브러리로 만든 작은 프로세스예요. 한 패키지 안에 여러 노드를 둘 수 있고, 같은 실행 파일이 여러 인스턴스로 띄워지기도 해요. 패키지는 colcon 빌드 시스템으로 관리하며, colcon build --symlink-install을 자주 쓰면 Python 노드 수정 후 재빌드 시간이 크게 줄어들어요.
토픽과 QoS 프로파일
토픽은 ROS2에서 가장 자주 쓰는 통신 방식이에요. ROS1과 달리 QoS(Quality of Service) 프로파일을 직접 지정할 수 있다는 점이 중요해요. 센서 데이터처럼 손실이 허용되는 스트림은 BEST_EFFORT, 명령 메시지처럼 신뢰성이 필요한 흐름은 RELIABLE로 설정해요. 발행자와 구독자의 QoS가 호환되지 않으면 메시지가 도착하지 않으므로, 디버깅할 때는 가장 먼저 QoS를 점검하는 습관이 도움이 돼요.
서비스와 액션의 활용
서비스는 짧고 명확한 응답이 필요한 명령에 어울려요. 예를 들어 로봇 팔의 그리퍼를 닫아라 같은 단발성 호출이 그래요. 반면 액션은 지정된 좌표까지 이동하라처럼 수 초에서 수 분이 걸리는 동작에 잘 맞아요. 액션 서버는 진행률(feedback)과 최종 결과(result)를 분리해 보내고, 클라이언트가 도중에 취소(cancel_goal)할 수도 있어요. Nav2 같은 내비게이션 스택이 액션 인터페이스를 적극 활용하는 대표 사례예요.
실시간성과 보안: ROS2가 진화한 지점
ROS1과 가장 두드러진 차이는 산업 현장에 적용 가능한 수준의 실시간성과 보안 모델이에요. Humble은 그 동안의 누적된 개선이 LTS로 묶여 안정화된 버전이라, 자율주행이나 협동 로봇 분야에서 채택률이 높아지고 있어요.
DDS 기반의 분산 통신
ROS2는 OMG의 DDS 표준을 미들웨어로 채택해, 마스터 노드 없이도 노드들이 서로를 자동으로 발견(discovery)할 수 있어요. 마스터 단일 장애점(SPOF)이 사라졌다는 의미이고, 여러 머신에 분산해 배치한 노드들이 IP 멀티캐스트로 자연스럽게 묶여요. 단, 사내망이나 컨테이너 환경에서는 멀티캐스트가 차단되는 경우가 많아 FastDDS Discovery Server를 따로 띄우는 패턴도 자주 쓰여요.
실시간 실행을 위한 도구
Humble에는 실시간 응답이 중요한 노드를 위해 rclcpp_lifecycle과 콜백 그룹(callback group) 개념이 정착되어 있어요. 콜백 그룹을 적절히 분리하면 중요한 제어 루프가 무거운 센서 처리에 막히지 않고 돌아갈 수 있어요. PREEMPT_RT 패치가 적용된 리눅스 커널과 결합하면, 수 밀리초 수준의 결정성도 노릴 수 있어요. 다만 진정한 실시간 보장은 커널, 미들웨어, 드라이버까지 모두 손봐야 가능한 까다로운 작업이라는 점은 미리 알아 두면 좋아요.
SROS2와 보안 모델
로봇이 공장 네트워크나 외부망과 연결되는 시대가 되면서 보안도 중요해졌어요. ROS2는 SROS2라는 보안 도구를 통해 노드 간 통신을 인증서 기반으로 암호화하고, 발행/구독 권한을 정책 파일로 제어할 수 있도록 설계됐어요. 인증서 발급, 키링 관리, 정책 작성 등 운영 부담은 늘지만, 외부 침입자가 로봇 명령을 가로채는 시나리오를 방지하려면 사실상 필수 옵션이에요.
학습 로드맵과 추천 리소스
ROS2 Humble을 처음 배운다면 짧은 프로젝트를 직접 만들어 보는 흐름을 권해요. 문서를 처음부터 끝까지 읽기보다는, 동작하는 예제를 한 번 굴려본 뒤 필요할 때마다 매뉴얼을 펼치는 방식이 효율적이에요. 아래 로드맵은 입문자에게 무리 없는 순서로 정리해 봤어요.
1단계: 튜토리얼 따라 하기
공식 튜토리얼은 노드 작성, 파라미터 사용, 런치 파일, 워크스페이스 빌드까지 단계별로 잘 짜여 있어요. 첫 1주일은 이 튜토리얼만 따라 해도 ROS2의 구조를 손에 익힐 수 있어요. 코드를 그대로 복사하기보다는 메시지 타입을 바꾸거나 발행 주기를 조절해 보면서 응답을 관찰하는 습관이 큰 도움이 돼요.
2단계: 시뮬레이터와 결합
실제 하드웨어가 없어도 Gazebo, Ignition, Webots 같은 시뮬레이터로 충분히 학습할 수 있어요. 특히 Gazebo Garden 또는 Harmonic이 Humble과 호환되며, TurtleBot3 시뮬레이션 패키지를 통해 SLAM과 내비게이션 스택까지 연결해 볼 수 있어요. 시뮬레이터에서 검증한 코드를 그대로 실기로 옮기는 흐름은 산업 현장에서도 그대로 쓰여요.
3단계: 라이브러리 깊이 파기
기본기가 잡히면 Nav2, MoveIt2, ros2_control 같은 상위 라이브러리를 골라 깊게 파 보면 좋아요. 각각 자율 주행, 매니퓰레이터 모션 플래닝, 모션 컨트롤러를 담당하는 ROS2의 핵심 스택이에요. 공식 문서의 ROS2 Humble Documentation이 가장 정확한 출발점이고, ROS Discourse 포럼과 Robot Operating System Wikipedia 문서도 보조 참고로 유용해요.
마무리하며
ROS2 Humble은 단순히 ROS1의 후속이 아니라, 산업과 연구를 잇는 새로운 표준 미들웨어로 자리 잡았어요. DDS 기반 분산 통신, QoS, 보안 모델, 풍부한 상위 스택까지 갖춘 덕분에, 이제는 로봇 소프트웨어를 다루는 사람이라면 한 번쯤 진지하게 학습해 둘 가치가 충분해요. 이번 글에서 다룬 설치 흐름, 핵심 개념, 학습 로드맵을 기반으로 작은 프로젝트부터 차근차근 시도해 보면, ROS2의 매력을 자연스럽게 체감할 수 있을 거예요.