저번 시간에 Ubuntu 셋업을 진행했습니다!! 반 이상 한 것이니 정말 축하드립니다
이번 시간에는 ROS2 작업 공간을 설치하고 세팅하는 시간을 가지겠습니다.
먼저 ROS2(Robot Operating System 2)는 로봇 애플리케이션을 만들기 위한 소프트웨어 라이브러리와 도구들의 프레임워크입니다. ROS2에서는 센서 드라이버, SLAM 및 내비게이션과 같은 알고리즘, RViz 및 rqt와 같은 디버깅 및 시각화 도구를 포함하여 로봇 개발에 필요한 오픈소스 구성 elemement들을 한 데 제공합니다.
ROS2는 노드, 토픽, 서비스, 액션, 파라미터 등 로봇 소프트웨어를 모듈화하고 분산시키기 위한 통신 메커니즘을 제공합니다. DDS, QoS 기반으로 안정적으로 통신, 보안, 멀티 OS를 지원하여 실제 자율주행, 드론과 같은 분산 로봇 시스템에도 적용 가능합니다.
다음으로는, ROS2 설치와 관련된 내용들을 살펴보겠습니다.
- locale은 시스템의 언어, 지역 및 문자 인코딩 설정입니다. ROS2는 default로 전제하는 인코딩이 UTF-8이므로, en_US.UTF-8과 같은 UTF-8 locale을 설정하여 로그 및 토픽 이름 등에서 인코딩 관련 문제가 발생하는 것을 방지합니다.
- repository는 패키지 즉 프로그램들을 모아 둔 서버입니다.
- GPG Key는 해당 패키지가 정말 해당 저장소에서 나온 것인지 혹은 중간에 변조된 것은 없는지 검증하는 공개 키입니다. APT는 저장소의 GPG Key로 패키지의 서명을 확인하고, 서명이 맞지 않으면 설치를 거부합니다. 즉 ROS2 저장소를 추가할 때 GPG Key를 함께 등록하여 보안 신뢰성이 보장된 환경에서 설치됩니다.
다음으로는, 빌드 및 환경 설정 관련 도구에 대한 내용들을 살펴보겠습니다.
- colcon (collective construction) 은 ROS2용 표준 build tool로, 여러 패키지가 들어있는 워크스페이스를 한 번에 빌드합니다. 패키지 간 dependencies를 분석하여 빌드 순서를 자동으로 결정하고 변경된 패키지만 재빌드할 수 있습니다. CMake 패키지, ament 패키지, Python 패키지를 한 번에 다루기 때문에, ROS2 멀티 패키지 프로젝트에 잘 부합합니다.
- rosdep은 source build에 필요한 system 라이브러리 및 tool을 자동으로 설치해 주는 도구입니다. 이는 package.xml에 선언되어있는 dependencies 목록을 읽고, 각 OS에 맞는 실제 패키지 이름으로 mapping해서 설치합니다. 덕분에 OS별 의존 패키지 이름을 직접 찾지 않고도, rosdep install 명령 한 번으로도 환경을 맞출 수 있습니다.
- source 명령은 특정 설정 파일에 정의된 path, ROS_DOMAIN_ID, setup.bash 등 환경 변수를 현재 shell에 적용하는 명령어입니다. ROS2 설치 이후 source /opt/ros/humble/setup.bash를 실행해야 ros2 명령, 패키지 경로 등이 인식됩니다. 매번 이를 수동으로 입력하지 않도록 해당 source 명령을 ~/.bashrc에 추가하면 새 터미널을 열 때마다 자동으로 ROS2 환경이 활성화됩니다.
마지막으로는, ROS2 작업 공간 및 패키지 구조를 간략히 살펴보겠습니다.
ros2_ws 워크스페이스는 ROS2 패키지를 모아 빌드하는 root directory로서, 하위 폴더로는 소스 코드가 들어있는 src, 빌드 산출물이 들어있는 build, 설치 및 실행용 결과물이 들어있는 install, 빌드 및 실행 로그들이 들어있는 log로 구성됩니다. colcon은 이 워크스페이스 루트에서 명령을 실행하여 src 아래 모든 패키지를 인식합니다.
이제 직접 ROS2 환경을 셋업하는 시간을 가져보겠습니다.
sudo apt update
위 터미널 코드는 Ubuntu의 패키지 목록을 최신화하는 코드입니다. 무언가를 설치하기 전에 습관적으로 하면 좋으니 기억해두시길 바라요!