설치
개요
ROS (Robot Operating System)는 다양한 로보틱스 관련 라이브러리와
개발환경을 제공하는 오픈소스 미들웨어로으로, 본 장에서는 Moby-RP를 제어하기 위한 ROS2 환경 및 패키지들을 설치하는 방법을 설명합니다.
Moby-RP의 구성 요소

Moby 구성 요소간 통신 체계
위 그림은 Moby-RP 구성품 간의 통신 체계를 나타내고 있습니다.
Moby는 STEP3의 제어 프레임워크에 의해 실시간 제어되며, 자율주행 및 기타 응용 기능 개발을 지원하기 위해 2개의 LiDAR와 4개의 RGBD 카메라가 탑재되어 있습니다.
구분 |
제품명 |
연결 방식 |
수량 |
LiDAR |
SICK |
Ethernet |
2 |
RGBD 카메라 |
Intel Realsense D435 |
USB |
4 |
Moby-RP 에 탑재된 환경 인식 센서
사용자는 Moby-RP에 탑재된 미니 PC(Intel NUC)에 접속해 다양한 응용 프로그램을 직접 개발할 수 있습니다.
Moby-RP는 LiDAR를 활용한 ROS2 기반의 자율 주행을 기본 제공합니다.
아래는 제공된 ROS2 패키지들을 직접 설치해보거나 일부 수정 혹은 복구를 하고자 하는 사용자를 위한 참고 자료입니다.
설치 준비
- 설치에 앞서, 인터넷에 연결해 의존 패키지들을 다운로드하기 위해 내장된 라우터의 WAN 포트에 인터넷에 접속 가능한 LAN 케이블을 연결합니다.

내장된 라우터의 WAN 포트
- Moby-RP가 완전히 부팅되면, 내장된 라우터에서 NRMK-MobyRP-XXXX 형식의 Wi-fi 네트워크를 생성합니다.
- 별도의 PC에서 위의 Wi-fi 네트워크에 연결한 뒤 SSH를 통해 내장된 Intel NUC의 IP에 접속합니다.
- Moby-RP의 기본 설정에서는 Intel NUC의 IP가 192.168.214.21로 설정되어 있습니다.
- 혹은 Wi-fi 연결 대신, Intel NUC에 모니터, 키보드, 마우스를 직접 연결해 터미널을 열어 아래 과정을 진행해도 됩니다.
기본 환경 설치
Moby-RP는 Ubuntu 22.04, ROS2-Humble 환경에서 제공되며, 본 설치 과정은 Ubuntu 22.04가 설치된 상태의 Intel NUC를 기준으로 설명합니다. Ubuntu 설치 튜토리얼
- Moby-RP에 SSH 접속 혹은 터미널을 열고 아래 명령어들을 입력해 기본적으로 활용되는 패키지들을 설치합니다.
| sudo apt-get update \
&& sudo apt-get install -y git openssh-server net-tools \
&& sudo apt-get install -y python3-pip \
&& sudo pip3 install --upgrade pip \
&& sudo pip3 install setuptools \
&& pip3 install --upgrade setuptools \
&& sudo apt install protobuf-compiler=3.12.4-1ubuntu7 \
&& python3 -m pip install protobuf==3.19.4 grpcio==1.48.2 grpcio_tools==1.48.2 \
&& sudo apt-get install jupyter
|
- 커널 업데이트는 간혹 설치되어 있던 패키지의 오류를 유발할 수 있기 때문에, 아래 명령어를 통해 커널 업데이트를 막아두는 것을 추천합니다.
| sudo apt-mark hold linux-image-generic linux-headers-generic
|
ROS2 및 의존 패키지 설치
- ROS2-Humble 설치를 위해 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 \
&& sudo apt update \
&& sudo apt upgrade
|
- 아래 명령어들을 통해 ROS2와 기본적으로 활용되는 패키지들을 설치합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 | sudo apt install -y ros-humble-desktop python3-argcomplete \
&& sudo apt install -y ros-humble-ros-base \
&& sudo apt install -y ros-dev-tools \
&& sudo apt install -y ros-humble-perception-pcl \
&& sudo apt install -y ros-humble-cartographer* \
&& sudo apt install -y ros-humble-xacro \
&& sudo apt install -y ros-humble-ros2-control \
&& sudo apt install -y ros-humble-ros2-controllers \
&& sudo apt install -y ros-humble-controller-manager \
&& sudo apt install -y ros-humble-joint-state-broadcaster \
&& sudo apt install -y ros-humble-joint-state-publisher-gui \
&& sudo apt install -y ros-humble-navigation2 \
&& sudo apt install -y ros-humble-nav2* \
&& sudo apt install -y ros-humble-geographic-msgs \
&& sudo apt install -y ros-humble-robot-localization \
&& sudo apt install -y ros-humble-joy-linux \
&& sudo apt install -y ros-humble-libg2o \
&& sudo apt install -y ros-humble-slam-toolbox \
&& sudo apt install -y python3-colcon-common-extensions \
&& sudo apt-get install python3-rosdep -y
|
- ROS2-Humble의 기본 워크스페이스를 불러오기 위해 아래의 명령어를 실행합니다. 두번째 라인은 해당 명령어를 .bashrc 파일에 추가해 터미널을 실행할때마다 자동 실행되도록 합니다.
| source /opt/ros/humble/setup.bash
echo 'source /opt/ros/humble/setup.bash' >> ~/.bashrc
|
- rosdep 초기화를 수행합니다. rosdep은 ROS2 패키지의 의존성 라이브러리들을 관리하는 도구입니다.
- 탑재된 Realsense를 ROS2에서 활용하기 위해, 아래의 명령어를 통해 Realsense 관련 패키지들을 설치합니다.
1
2
3
4
5
6
7
8
9
10
11
12 | sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE \
|| sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE \
&& sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u \
&& sudo apt-get -y install librealsense2-dkms=1.3.19-0ubuntu1 \
librealsense2=2.53.1-0~realsense0.8251 \
librealsense2-gl=2.53.1-0~realsense0.8251 \
librealsense2-net=2.53.1-0~realsense0.8251 \
librealsense2-udev-rules=2.53.1-0~realsense0.8251 \
librealsense2-utils=2.53.1-0~realsense0.8251 \
librealsense2-dev=2.53.1-0~realsense0.8251 \
librealsense2-dbg=2.53.1-0~realsense0.8251 \
&& sudo pip3 install pyrealsense2==2.53.1.4623
|
- ROS2 환경에서 Moby와 함께 Indy를 사용하기 위해서는 Indy-ROS2 패키지를 설치하시기 바랍니다.
Moby 패키지 및 의존 패키지 빌드
- moby-ros2 패키지 및 기타 의존 패키지를 빌드하기 위해, ROS2 워크스페이스 경로를 생성합니다.
- moby-ros2 패키지를 ros2_ws/src에 다운로드 합니다.
| cd ~/ros2_ws/src
git clone https://github.com/neuromeka-robotics/moby-ros2
|
- moby-ros2 빌드를 위해 필요한 다른 의존 패키지 소스 역시 다운로드해 줍니다.
| cd ~/ros2_ws/src
git clone https://github.com/relffok/ira_laser_tools.git -b ros2-devel
git clone https://github.com/rst-tu-dortmund/teb_local_planner -b ros2-master # master branch is for humble now (2023.02.11)
git clone --depth 1 --branch 0.1.2 https://github.com/rst-tu-dortmund/costmap_converter
git clone --depth 1 --branch 4.51.1 https://github.com/IntelRealSense/realsense-ros
git clone --depth 1 --branch 2.8.11 https://github.com/SICKAG/sick_scan_xd
|
- rosdep을 통해 의존성 라이브러리들을 설치해줍니다.
| cd ~/ros2_ws \
&& rosdep update \
&& rosdep install -i --from-path src --rosdistro $ROS_DISTRO --skip-keys=librealsense2 -y
|
- 빌드시 패키지간 충돌로 인한 오류 방지를 위해, sick_scan 패키지는 다른 패키지와 별도로 먼저 빌드되어야 합니다. 아래 명령어를 통해 워크스페이스의 빌드 파일을 깨끗이 지우고 sick_scan패키지만을 먼저 빌드합니다.
| source /opt/ros/humble/setup.bash
cd ~/ros2_ws
rm -rf build install log
colcon build --packages-select sick_scan --cmake-args " -DROS_VERSION=2" " -DLDMRS=0" " -DSCANSEGMENT_XD=0" " -DCMAKE_BUILD_TYPE=Release" --event-handlers console_direct+
|
- sick_scan 패키지 빌드가 완료되면, moby-ros2를 포함한 나머지 패키지를 빌드합니다.
| cd ~/ros2_ws
colcon build --packages-skip sick_scan --cmake-args -DCMAKE_BUILD_TYPE=Release
|
- 빌드한 워크스페이스를 불러옵니다. 아래 명령어의 두번째 줄을 통해 해당 명령어를 .bashrc 파일에 추가해 터미널을 실행할때마다 자동 실행되도록 합니다.
| . install/setup.bash
echo 'source $HOME/ros2_ws/install/setup.bash' >> ~/.bashrc
|
기본 패키지 구성
| ├── moby-ros2
├── moby_description/
├── moby_bringup/
├── moby_mapping/
├── moby_navigation/
└── ...
|
- moby_description : RViz에서 사용되는 Moby의 모델 파일 및 런치 파일
- moby_bringup : ROS2에서 Moby-RP를 제어하기 위한 기본 패키지
- moby_mapping : SLAM을 통한 지도 생성을 위한 설정 파일 및 런치 파일
- moby_navigation : ROS2의 Nav2를 이용해 Moby-RP의 자율 주행을 수행하기 위한 파라미터 파일 및 런치 파일
각 패키지의 자세한 사용법과 예제는 이후의 장에서 설명됩니다.