ROS2 소개 및 개발환경 구축
ROS2를 공부하면서 정리한 내용이다.
목차
|목차|내용|비고|링크| |:–:|:–|:–|:–| |ROS2란?|ROS2 기본 개념|로봇 운영체제 소개|바로가기| |ROS 선택 이유|ROS를 선택한 배경|로봇 개발 필요성|바로가기| |ROS2 vs ROS1|버전별 비교|ROS2 선택 이유|바로가기| |개발환경 구축|ROS2 설치 및 설정|버전 선택과 설치 과정|바로가기| |관련 라이브러리|주요 라이브러리 소개|OpenCV, PCL 등|바로가기| |참고 자료|ROS2 커뮤니티 및 문서|학습 리소스|바로가기|
ROS2란?
ROS는 Robot Operating System 의 약자로, 로봇을 위한 운영체제이다.
ROS는 로봇을 위한 운영체제이기 때문에, 로봇의 하드웨어와 소프트웨어를 분리하여 개발할 수 있게 해준다.
ROS를 선택한 이유
공대는 주로 졸업작품을 만들게 되는데, 우리는 메카트로닉스과여서 로봇을 제작한다.
로봇은 크게 하드웨어와 소프트웨어로 나눌 수 있는데, 소프트웨어 쪽에서는 모터 제어, 센서 데이터 처리, 로봇의 위치 추정, 지도 만들기 등을 해야한다.
통신부터 제어까지 모두 해야하는데, 이를 손 쉽게 해주는 프로그램이 ROS이다. 그래서 ROS를 선택하게 되었다.
다른 robot software
(OpenRTM, OPRoS, Player, YARP, Orocos, CARMEN, Orca, MOOS, Microsoft Robotics Studio … )
ROS2의 선택 이유
ROS1 | ROS2 | |
---|---|---|
장점 | 많 라이브러리, 많은 사용자, 많은 문서 | ROS1의 단점을 보완 |
단점 | C++ 기반, 멀티프로세스 지원 안함, 멀티로봇 지원 안함, Real-time 지원 안함 | C++/Python 지원, 멀티프로세스 지원, 멀티로봇 지원, Real-time 지원 |
ROS2의 구조
ROS2 정보
open source기반의 robot software이기 때문에 커뮤니티가 활발하다.
- ROS 커뮤니티 : https://discourse.ros.org/
- ROS 질의응답 : https://answers.ros.org/questions/
관련 문서(ROS2)
- ROS2 문서 : https://docs.ros.org/
- ROS2 디자인 : https://design.ros2.org/
- ROS 위키(ROS1) : http://wiki.ros.org/
유명한 라이브러리 (따로 공부해서 포스팅할 예정)
OpenCV
- 영상처리 라이브러리
- 이미지 처리, 카메라 캡쳐, 동영상 처리 등을 할 수 있다.
PCL(Point Cloud Library)
- 3차원 영상처리 라이브러리
- 3차원 영상처리, 3차원 데이터 필터링, 3차원 데이터 특징 추출 등을 할 수 있다.
등등 관련 링크 SLAM_개발유용한_라이브러리
ROS2 개발환경 구축
버전 선택
ROS2는 현재 여러 버전이 지원되고 있다. 주요 버전으로는 다음과 같다:
- Iron Irwin
- Humble Hawksbill (LTS)
- Jazzy Jalopy
해당 버전들은 ROS2_Version에서 확인할 수 있다.
권장 선택
주로 LTS 버전을 이용하는 것이 좋다. (우분투와 다른 것들과 마찬가지)
LTS란?
구분 | 버전 | 설명 |
---|---|---|
기본 운영체제 | Ubuntu 22.04 | LTS 버전 |
ROS2 버전 | Humble Hawksbill | LTS 버전(EOL date이 2년 이상) |
IDE (통합 개발 환경) | VSCode | ROS2 확장팩 설치 |
프로그래밍 언어 | Python3, C++14 | ROS2는 Python3를 지원한다. |
ROS2 버전 관리 | colcon | ROS2에서는 catkin이 아닌 colcon을 사용한다. |
ROS2 설치
설치 방법은 ROS2 설치를 참고했다.
또한 ROS2_강의도 참고했다.
Ubuntu에서 ROS2 Humble 설치
# 1. locale 설정
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
# 2. 소스 설정
sudo apt install software-properties-common
sudo add-apt-repository universe
# 3. ROS 2 GPG 키 추가
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
# 4. 저장소 추가
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
# 5. ROS2 설치
sudo apt update
sudo apt upgrade
sudo apt install ros-humble-desktop
# 6. 환경 설정
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
# 7. colcon 설치
sudo apt install python3-colcon-common-extensions
# 8. 설치 확인
ros2 --help
개발 도구 설치
# VSCode 설치
sudo snap install code --classic
# ROS2 개발을 위한 추가 패키지
sudo apt install python3-pip
pip3 install argcomplete
# 워크스페이스 생성
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
colcon build
echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc