대학원 생활을 하며, 기존 사용하던 ROS1에서 벗어나 ROS2를 다루어야 한다는 생각이 더 많이 들고 있다. 먼저 ROS1과 ROS2의 차이점에 대해서는 다음과 같다.
- Linux, Window, macOS 모두 지원
기존 ROS1도 여러 방법을 통하여 사용은 가능하였지만, ROS2처럼 직관적으로 사용할 수는 없었다. - Real-time 지원
기존 ROS1은 실시간성에 대해서 지원이 되지 않았다. "실시간적으로 통신이 되지 않냐?" 라고 물어본다면 그건 아마도 빠른 HZ 사이의 통신에서 그렇게 느꼈던 것일 것이다. 하지만 실제로는 Pub, Sub 구조를 10Hz로 설정하여도 실행되는 딜레이 등으로 인해서 15ms, 20ms 등으로 늦어질 수 있다. ROS2는 리얼타임 운영체제, DDS의 RTPS(Real-Time Publish-Subscribe Prodocol) 등의 전제가 있지만, 실시간성을 지원하고 있다. - 보안 문제
ROS1에서는 보안이 큰 문제로 다가온다. ROS master를 기준으로 같은 IP와의 통신을 진행하기에 하나의 IP 포트가 노출된다면 모든 시스템에 대해서 간섭할 수 있다. 하지만, ROS2는 DDS(Data Distribution Service)라는 보안 체계를 사용하여 포트가 노출되더라도 각자의 시스템에 간섭을 할 수 없도록 하고 있다. 회사 기준으로 매우 큰 이점인 것이다. - 불안정한 네트워크 환경에서도 동작 가능
ROS1에서는 하나의 Master에 각자의 Node가 형성되어 있다면, ROS2는 roscore가 없고, 각각 독립적으로 수행되도록 바뀌었다. 이로 인해 통신에 문제가 생긴다 하더라도 각자의 기능을 수행할 수 있다.
즉, 기존의 문제점에 대해서 고쳐 나온 것이 ROS2이다. 그래도 사람들이 ROS1에 대해서 사용하는 이유는, 많은 Repo들과 익숙함으로 사용하고 있다. 하지만, 2017년도 ROS2가 나온 이후 현재 7년이 지났으며 ROS2의 기능의 안정화와 Repo들이 많이 생겨나며 이제는 ROS2를 사용해야 할 시기가 왔다고 할 수 있다.
ROS2는 기존의 ROS1의 키들과 구조가 달라, 천천히 하나씩 공부해 볼 생각이다.
나는 UBUNTU 환경을 사용하기에 UBUNTU 환경에서의 개발을 진행하겠다.
ROS2 설치하기
Ubuntu는 Debian packages로 설치를 진행한다.
1. ROS2는 UTF-8에서 지원을 한다. 그래서 먼저 local에 대한 설정을 다음과 같이 진행한다.
locale # check for UTF-8
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
locale # verify settings
2. ROS2를 설치하기 위한 Repository와 ROS2 설치를 위한 Key를 설치한다.
#Repo 다운로드
sudo apt install software-properties-common
sudo add-apt-repository universe
#Key 설정
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
#source list 설정
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
#ROS2 PKG 설치
sudo apt update
sudo apt upgrade
#ROS2 중 가장 최근인 Humble 설치
sudo apt install ros-humble-desktop
sudo apt install ros-humble-ros-base
ROS를 사용하기 위한 기본적인 Tool 설치
sudo apt install ros-dev-tools
위와 같이 진행하였다면 ROS2는 설치가 되었다. 그럼 이제 설치가 제대로 되었는 지 확인을 해 보자.
먼저 ROS를 설치하였으니, 터미널에 ROS2를 적용시켜 준다.
source /opt/ros/humble/setup.bash
이후 간단한 통신 Pub-Sub 구조를 통하여 제대로 설치가 되었는 지 테스트 한다. 이 코드들은 Tool에 포함되어 있어 기본적으로 사용할 수 있다.
Terminal-1
source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp talker
Terminal-2
source /opt/ros/humble/setup.bash
ros2 run demo_nodes_py listener
위와 같이 진행하였다면 다음과 같은 Terminal 구성이 생길 것이다.
왼쪽에서 hello world : ID를 계속해서 보내고, 오른쪽에서 잘 받고 있는 것에 대해서 확인할 수 있다.
우리 모두 ROS2 공부를 열심히 해서 시스템 아키텍처 구성을 쉽게 하는 개발자가 되어보도록 하자.