새소식

로봇,ROS,SLAM/ROS2 기초 공부

ROS2 패키지 만들고 Workspace에 colcon build 및 PAL Robotics의 TIAGo 사용하기

  • -

colcon build는 ROS 2(로봇 운영 체제)에서 패키지를 빌드하는 명령어입니다.

colcon은 ROS 2에서 기본적으로 사용되는 빌드 시스템이며, catkin을 대체하는 도구입니다.

colcon build 개요

colcon build 명령어는 현재 작업 디렉터리(보통 ros2_ws와 같은 워크스페이스) 내에 있는 ROS 2 패키지를 빌드합니다. 이 과정에서 CMake, Python setuptools, ament 등의 빌드 시스템을 자동으로 감지하여 적절한 방법으로 빌드합니다.

 

✅ 빌드 후 생성되는 주요 디렉터리

colcon build를 실행하면 워크스페이스 루트에 다음 폴더들이 생성됩니다.

디렉터리설명
build/ 패키지별 빌드 결과 (임시 파일)
install/ 실행 가능한 바이너리, 라이브러리, 설정 파일이 설치됨
log/ 빌드 과정의 로그 파일

 

 

gedit ~/.bashrc 열어서 아래 내용 가장 아래에 넣기

 

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


alias sb="source ~/.bashrc; echo \"bashrc is reloaded\""
alias humble="source /opt/ros/humble/setup.bash; echo \"ROS2 Humble is activated!\""
alias isaacsim_ros2ws="humble; source ~/IsaacSim-ros_workspaces/humble_ws/install/setup.bash; echo \"IsaacSim ROS2 workspaces!\""

alias ros2ws="humble; source ~/ros2_ws/install/local_setup.bash; echo \"Basic ROS2 workspaces!\""

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

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'

 

 ROS2 실습을 위한 workspace 생성하기 

cd # home 디렉토리로 이동
mkdir -p ros2_ws/src
cd ros2_ws
colcon build --symlink-install
# 빌드 완료 확인 후 ros2_ws에 install, build, log 디렉토리 생성됐는지 확인

 

꼭 workspace의 루트 디렉토리에서 colcon build 해주어야 한다. 

 

 

 

 

로봇 시뮬레이션 환경 구성

 
1. 시뮬레이션 환경 구성을 위해 아래 명령어로 패키지를 설치해줍니다.
sudo apt install ros-humble-tiago-gazebo
 

2. 의존성 등을 포함한 설치가 완료된 후 시뮬레이션 환경을 열어줍니다.

 

먼저 터미널에서 ros2를 활성화 해줍니다. 

 

humble

 

ros2 launch tiago_gazebo tiago_gazebo.launch.py is_public_sim:=True
 

 

 

3. 아래 명령어를 통해 로봇을 제어해 볼 수 있습니다.

다른 터미널을 하나 열고 아래 명령어 입력

 

humble
ros2 run teleop_twist_keyboard teleop_twist_keyboard

 

 

패키지 생성 실습

1. 먼저 ROS2 작업 공간을 생성해줍니다.

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src

 

2. 다음으로 ros2 pkg create 명령을 사용하여 새 패키지를 생성합니다.

ros2 pkg create --build-type ament_python my_package --dependencies rclpy

 

ros2 pkg create --build-type <빌드타입> <패키지이름> --dependencies <해당 패키지를 실행하는데 있어서 필요한 라이브러리>

python 패키지를 사용하기 위해 --build-type ament_python 으로 설정 

패키지 이름으로 my_package로 지정 

 

 

3. 생성된 패키지의 구조를 아래 명령어로 확인할 수 있습니다.

cd my_package
tree

# tree 설치가 안 되었을 경우
sudo apt install tree

 

my_package/
├── my_package
│   └── __init__.py
├── package.xml
├── setup.cfg
├── setup.py
└── test
    ├── test_copyright.py
    ├── test_flake8.py
    └── test_pep257.py

 

4. 워크스페이스의 루트 디렉토리로 이동하여 패키지를 빌드합니다.

cd ~/ros2_ws
colcon build

 

5. 새로 빌드한 패키지를 사용할 수 있도록 아래 명령어를 입력하거나 새로운 터미널을 열어줍니다.

source ~/ros2_ws/install/local_setup.bash

# 또는

source ~/ros2_ws/install/local_setup.zsh

 

6. 아래 명령어를 통해 패키지가 잘 설치되었는지 확인합니다.

ros2 pkg list # 모든 ROS 시스템 패키지 목록을 제공
ros2 pkg list | grep my_package # my_package인 패키지를 필터링

 

 

[부록] 특정 패키지만 빌드하는 방법

때로는 (대규모 프로젝트의 경우) 모든 패키지를 컴파일하고 싶지 않을 수도 있습니다. 이렇게 하면 시간이 오래 걸립니다.

대신 아래 명령어을 사용하여 변경한 패키지만 컴파일할 수 있습니다

colcon build --symlink-install --packages-select <package_name>
# 또는 cbp <package_name>

 

'로봇,ROS,SLAM > ROS2 기초 공부' 카테고리의 다른 글

[ROS2] ROS2 Interfac 알아보기  (0) 2025.01.31
[ROS2] ROS2 Package, Node, Launch 개요  (0) 2025.01.30
ROS가 뭘까?  (0) 2025.01.14
[ROS2] ROS2 action 알아보기  (0) 2025.01.14
[ROS2] ROS2 topic 알아보기  (0) 2025.01.08
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.