본문 바로가기
ROS2 강의 (Humble)

[ROS 2 강의] Humble 설치 및 초기 개발환경 설정

by 바위폭주 2025. 6. 22.
728x90
반응형

오늘은 ROS 2 Humble 버전 설치와 함께,
ROS 2 개발을 위한 초기 환경 설정 방법을 알아보겠습니다.


1. ROS 2 Humble 버전 설치

ROS 2는 다양한 버전이 있지만, Humble은 LTS(Long Term Support) 버전으로 안정성이 높고,
많은 실무와 연구 환경에서 사용되고 있습니다.
이 버전은 Ubuntu 22.04 (Jammy Jellyfish) 환경에서 설치해야 하며,
다른 버전에서는 호환 문제가 발생할 수 있습니다.

설치 과정

다음 명령어를 한 줄씩 순서대로 실행합니다.

 

ROS2 apt repository 추가

sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install curl

sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

 

Install ROS 2

sudo apt update
sudo apt install ros-humble-desktop
sudo apt install ros-dev-tools

 

다른 패키지들 설치

sudo apt update && sudo apt install -y build-essential cmake git libbullet-dev python3-colcon-common-extensions python3-flake8 python3-pip python3-pytest-cov python3-rosdep python3-setuptools python3-vcstool wget python3-argcomplete

python3 -m pip install -U flake8-blind-except flake8-builtins flake8-class-newline flake8-comprehensions flake8-deprecated flake8-docstrings flake8-import-order flake8-quotes pytest-repeat pytest-rerunfailures pytest

sudo apt install --no-install-recommends -y libasio-dev libtinyxml2-dev libcunit1-dev

 

워크스페이스 만들기

cd # home 디렉토리로 이동
mkdir -p ros2_ws/src
cd ros2_ws

colcon build
# 빌드 완료 확인 후 ros2_ws에 install, build, log 디렉토리 확인

 

2. 초기 개발환경 설정: .bashrc

설치가 끝났다면 이제 매번 환경을 수동으로 설정하지 않도록 .bashrc에 필요한 내용을 등록해줍니다.

.bashrc는 리눅스에서 터미널을 열 때마다 자동으로 실행되는 설정 파일입니다.
ROS 2는 특정 명령어를 사용할 때마다 환경 설정을 불러와야 하는데,
이걸 매번 입력하는 대신 .bashrc에 등록해두면 자동으로 적용됩니다.

예를 들어 source /opt/ros/humble/setup.bash는 ROS 2의 기본 명령어를 사용할 수 있게 만드는 설정입니다.
또, 자주 사용하는 명령어를 alias로 등록해두면 작업 속도도 훨씬 빨라집니다.

 

 

자 터미널을 열고 아래 명령어로 bashrc를 수정합니다.

gedit ~/.bashrc

 

다음은 실제로 .bashrc에 추가할 수 있는 설정 예시입니다:

source /opt/ros/humble/setup.bash
source ~/ros2_ws/install/local_setup.bash

source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash
source /usr/share/vcstool-completion/vcs.bash
source /usr/share/colcon_cd/function/colcon_cd.sh
export _colcon_cd_root=~/ros2_ws

# argcomplete for ros2 & colcon
eval "$(register-python-argcomplete3 ros2)"
eval "$(register-python-argcomplete3 colcon)"

# export ROS_NAMESPACE=robot1

#export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
#export RMW_IMPLEMENTATION=rmw_connext_cpp
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
# export RMW_IMPLEMENTATION=rmw_gurumdds_cpp

# export RCUTILS_CONSOLE_OUTPUT_FORMAT='[{severity} {time}] [{name}]: {message} ({function_name}() at {file_name}:{line_number})'
export RCUTILS_CONSOLE_OUTPUT_FORMAT='[{severity}]: {message}'
export RCUTILS_COLORIZED_OUTPUT=1
export RCUTILS_LOGGING_USE_STDOUT=0
export RCUTILS_LOGGING_BUFFERED_STREAM=1

export TURTLEBOT3_MODEL=burger

alias eb='gedit ~/.bashrc'
alias sb='source ~/.bashrc'
alias cw='cd ~/ros2_ws'
alias cs='cd ~/ros2_ws/src'
alias ccd='colcon_cd'

alias rs='source ~/ros2_ws/install/setup.bash'

alias cb='cd ~/ros2_ws && colcon build --symlink-install'
alias cbs='colcon build --symlink-install'
alias cbp='colcon build --symlink-install --packages-select'
alias cbu='colcon build --symlink-install --packages-up-to'
alias ct='colcon test'
alias ctp='colcon test --packages-select'
alias ctr='colcon test-result'

alias tl='ros2 topic list'
alias te='ros2 topic echo'
alias nl='ros2 node list'

alias killgazebo='killall -9 gazebo & killall -9 gzserver & killall -9 gzclient'

alias af='ament_flake8'
alias ac='ament_cpplint'

alias testpub='ros2 run demo_nodes_cpp talker'
alias testsub='ros2 run demo_nodes_cpp listener'
alias testpubimg='ros2 run image_tools cam2image'
alias testsubimg='ros2 run image_tools showimage'

alias di='rosdep install --from-paths src -y --ignore-src --os=ubuntu:jammy'

#export ROS_DOMAIN_ID=52
export ROS_DOMAIN_ID=0

 

주요 명령어 설명

  • source: 설정 파일을 현재 터미널에 적용합니다.
    예: source ~/.bashrc → 수정한 .bashrc 내용을 현재 셸에 반영
  • export: 환경 변수를 설정합니다.
    예: export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp → ROS 2에서 사용할 DDS 종류 설정
  • alias: 자주 사용하는 명령어를 짧게 만듭니다.
    예: alias sb='source ~/.bashrc' → sb만 입력해도 .bashrc 적용됨

 

source /opt/ros/humble/setup.bash
  • ROS 2 시스템 전체에 필요한 설정을 적용합니다.
  • ROS 명령어(ros2 run, ros2 topic list 등)를 사용하려면 필수입니다.
 
source ~/ros2_ws/install/local_setup.bash

 

  • 자신이 만든 워크스페이스 내의 패키지를 사용하려면 이 설정이 필요합니다.
  • 패키지를 빌드한 뒤 이 명령어를 실행하지 않으면 새로 만든 실행파일이나 메시지가 인식되지 않습니다.

 

source ~/.bashrc

 

  • .bashrc에 변경을 가했을 때 현재 터미널에 반영합니다.
  • 이 명령어를 자주 사용하게 되므로, 아래처럼 줄여서 사용합니다:

alias sb='source ~/.bashrc'
sb 명령은 .bashrc를 다시 실행하는 것으로, 터미널을 재시작한 것과 같은 효과를 줍니다.
패키지를 새로 빌드한 뒤엔 반드시 sb를 실행해줘야 설정이 적용됩니다.

 

alias eb='gedit ~/.bashrc'

 

  • .bashrc 파일을 GUI 편집기(gEdit)로 열어줍니다.
  • 설정을 수정하고 싶을 때 사용합니다.

 

alias cw='cd ~/ros2_ws'  
alias cs='cd ~/ros2_ws/src'

 

  • ROS 2 작업 폴더로 빠르게 이동할 수 있게 해주는 단축 명령어입니다.
alias cb='cd ~/ros2_ws && colcon build --symlink-install'
alias cbs='colcon build --symlink-install'
alias cbp='colcon build --symlink-install --packages-select'
alias cbu='colcon build --symlink-install --packages-up-to'

 

  • 작업 디렉토리로 이동한 후 패키지를 빌드합니다.
  • --symlink-install은 빌드 결과물을 링크 방식으로 설치하여 빠르게 반영되도록 합니다.
  • 빌드 대상 패키지를 선택하거나 순차적으로 빌드할 때 사용합니다.
  • 예를들어 패지키를 만들거나 받아오면 cb로 빌드를 하거나, 워크스페이스의 특정 패키지만 빌드 하고 싶으면
    cbp my_package(패키지 이름) 이런식으로 하면 됩니다.
alias tl='ros2 topic list'
alias te='ros2 topic echo'
alias nl='ros2 node list'
alias testpub='ros2 run demo_nodes_cpp talker'
alias testsub='ros2 run demo_nodes_cpp listener'
alias testpubimg='ros2 run image_tools cam2image'
alias testsubimg='ros2 run image_tools showimage'

 

  • 자주 쓰는 ROS 2 명령어를 간단히 입력할 수 있도록 만든 alias입니다.
  • ROS 2 예제 노드를 빠르게 실행하는 명령어입니다.
  • 통신 실습할 때 유용하게 사용됩니다.
    예를 들어 터미널 1, 2를 띄우고 1에는 testpub, 2에는 testsub을 하면 토픽이 오고가는 것을 볼 수 있습니다.

 

export ROS_DOMAIN_ID=0

 

  • ROS 2 노드들이 같은 네트워크 상에서 통신할 수 있도록 도메인을 지정합니다.
  • 로봇이 여러 대일 경우, 도메인 ID를 나눠주는 방식으로 충돌을 방지합니다.
  • 이 부분은 향후 강의에서 자세히 다룰 예정입니다.

 

이 강의를 따라 하고 계신 분이 있다면, 꼭 댓글을 남겨주세요.
여러분의 댓글이 저에게 큰 동기부여가 됩니다.
강의를 따라 하면서 궁금한 점이나 막히는 부분이 있다면 언제든지 자유롭게 질문 남겨주세요!

728x90
반응형