1. 실습 환경 구성과 로봇 이동 실습
이번 시간에는 ROS 2에서 기본 시뮬레이션 환경을 설정하고,
로봇을 직접 움직여보는 과정을 실습해보겠습니다.
아래 링크에서 제공하는 패키지를 받아서
https://github.com/fallwich/ros_lecture.git
~/ros2_ws/src 폴더에 압축 해제해주세요. (cs 단축키 사용해보기)
ros2_ws 폴더로 이동 후 빌드해주세요. (cb 단축키 사용해보기)
빌드 후 sb! 꼭 잊지 마세요. sb 무슨 말인지 모르시는 분은 전 강의!를 꼭 보세요. (source ~/.bashrc)
cd ~/ros2_ws/src
git clone https://github.com/fallwich/ros_lecture.git
cd ..
colcon build
sb
2. 시뮬레이션 실행하기
cd ~/ros2_ws/src/ros_lecture
./start_sim_house_v2.sh
해당 명령어를 실행하면 아래와 같은 Gazebo 환경이 실행됩니다:
여러분의 첫 가상환경입니다. 이 가상공간은 Gazebo라는 툴을 사용하는데 물리 엔진에서 다양한 센서, 로봇, 환경등을 구축할 수 있습니다.
3. 키보드로 로봇 조작하기
ros2 run teleop_twist_keyboard teleop_twist_keyboard
해당 명령어를 입력하면 키보드로 로봇을 전후좌우로 이동시킬 수 있습니다.
시뮬레이션 화면에서 로봇이 움직이는 모습을 직접 확인할 수 있습니다.
간단하게 설명 하자면 현재 로봇은 cmd_vel이라는 메세지 토픽을 받으면 움직이게 되어있습니다.
명령어 설명
ros2 run
- ros2 run은 특정 패키지 안에 있는 실행 파일을 실행할 때 사용합니다.
예:
ros2 run teleop_twist_keyboard teleop_twist_keyboard
ros2 launch
- 여러 노드나 실행 환경을 한 번에 실행하고 싶을 때 launch 파일을 사용합니다.
패키지란?
ROS 2에서 프로그램은 모두 패키지 단위로 구성됩니다.
패키지란 코드, 설정파일, 빌드 스크립트 등 특정 기능을 수행하는 요소들이 모여 있는 단위입니다.
패키지를 통해 기능을 모듈화하고,
다른 개발자와도 쉽게 공유하고 유지보수할 수 있게 됩니다.
패키지의 종류
기존 ROS1에서는 C++기반 패키지만 존재 했는데 ROS 2로 업그레이드 되면서 파이썬 기반 패키지도 생겼습니다.
파이썬 기반 패키지 (ament_python)
- package.xml: 패키지 메타 정보
- setup.py: 빌드 방법 정의
- setup.cfg: 설치 위치 설정
- <패키지 이름>/: 실제 Python 코드가 들어있는 디렉토리
(기본적으로 __init__.py 포함)
추가로 launch/ 폴더가 있는 경우, launch 파일도 함께 포함됩니다.
C++ 기반 패키지 (CMake)
- package.xml: 패키지 정보
- CMakeLists.txt: 컴파일 설정
- /src: C++ 소스 코드
- /launch: launch 파일
실습: 패키지 생성
작업공간 이동
cd ~/ros2_ws/ cd src
패키지 만들기 (파이썬 기준)
ros2 pkg create --build-type ament_python my_package --dependencies rclpy
- --build-type ament_python: Python 패키지 생성 시 사용
- --dependencies: 사용할 ROS 2 패키지를 명시 (예: rclpy)
패키지 빌드 및 적용
cd ~/ros2_ws colcon build --symlink-install # 또는 cb
빌드 후에는 다음 명령어로 환경 설정을 반영합니다:
source ~/ros2_ws/install/local_setup.bash
만약 .bashrc에 이 설정이 포함되어 있다면,
새 터미널을 열기만 해도 자동으로 적용됩니다. (sb)
설치 확인
ros2 pkg list
ros2 pkg list | grep my_package
- 설치된 모든 패키지를 확인하거나, 특정 이름으로 필터링할 수 있습니다.
특정 패키지만 빌드하기
colcon build --symlink-install --packages-select my_package # 또는 cbp my_package
프로젝트가 커질수록 전체 빌드 시간이 길어지므로, 변경한 패키지만 선택적으로 빌드하는 것이 효율적입니다.
원래 이번 강의에서 Launch, Node를 다루려고 했는데 분량 조절을 못해서 다음 강의에서 짧게 다루겠습니다.
여기까지 잘 따라오셨을 까요? 강의를 따라 하고 계신 분이 있다면, 꼭 댓글을 남겨주세요.
여러분의 댓글이 저에게 큰 동기부여가 됩니다.
강의를 따라 하면서 궁금한 점이나 막히는 부분이 있다면 언제든지 자유롭게 질문 남겨주세요!
'ROS2 강의 (Humble)' 카테고리의 다른 글
[ROS 2 강의] Topic Programming (0) | 2025.06.29 |
---|---|
[ROS 2 강의] Topic & Interface (1) | 2025.06.26 |
[ROS 2 강의] ROS 2 기본 개념 || (1) | 2025.06.24 |
[ROS 2 강의] Humble 설치 및 초기 개발환경 설정 (0) | 2025.06.22 |
[ROS 2 강의] 시작 – 로봇 소프트웨어 개발, 어디서부터 어떻게 배울까 (0) | 2025.06.22 |