Installation
Overview
ROS (Robot Operating System) is an open-source middleware that provides various robotics-related libraries and development environments. This section explains how to install ROS2 environment and packages to control Moby-RP.
Components of Moby-RP

Communication scheme between Moby components
The above figure represents the communication scheme among the components of Moby-RP.
Moby is controlled in real-time by the STEP3 control framework and is equipped with two LiDARs and four RGBD cameras to support the development of autonomous driving and other application functions.
Category |
Product Name |
Connection Method |
Quantity |
LiDAR |
SICK |
Ethernet |
2 |
RGBD Camera |
Intel Realsense D435 |
USB |
4 |
Environment perception sensors mounted on Moby-RP
Users can connect to the mini PC (Intel NUC) mounted on Moby-RP and develop various applications directly.
Moby-RP provides basic autonomous driving based on ROS2 using LiDAR. The following information is for users who want to install, modify, or restore the provided ROS2 packages.
Preparing for Installation
- Before installation, connect the built-in router's WAN port to the internet with a LAN cable to download dependency packages.

Built-in router's WAN port
- When Moby-RP is fully booted, the built-in router creates a Wi-fi network in the format NRMK-MobyRP-XXXX.
- Connect to the Wi-fi network with a separate PC and access the IP of the built-in Intel NUC via SSH.
- By default, the Intel NUC's IP in Moby-RP is set to 192.168.214.21.
- Alternatively, you can directly connect a monitor, keyboard, and mouse to the Intel NUC, open a terminal, and proceed with the following steps.
Basic Environment Installation
Moby-RP is provided in the Ubuntu 22.04 and ROS2-Humble environments, and this installation process is based on an Intel NUC with Ubuntu 22.04 installed. Ubuntu Installation Tutorial
- Connect to Moby-RP via SSH or open a terminal and enter the following commands to install the packages commonly used.
| 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
|
- It is recommended to block kernel updates with the following command, as kernel updates can sometimes cause errors in previously installed packages.
| sudo apt-mark hold linux-image-generic linux-headers-generic
|
Installing ROS2 and Dependency Packages
- Add the repository for ROS2-Humble installation.
| 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
|
- Install ROS2 and commonly used packages with the following commands.
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
|
- Run the following command to load the basic workspace for ROS2-Humble. The second line adds the command to the .bashrc file, making it run automatically whenever the terminal is launched.
| source /opt/ros/humble/setup.bash
echo 'source /opt/ros/humble/setup.bash' >> ~/.bashrc
|
- Initialize rosdep. rosdep is a tool for managing dependency libraries of ROS2 packages.
- To use the mounted Realsense in ROS2, install Realsense-related packages with the following command.
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
|
- To use Indy with Moby in a ROS2 environment, please install and use the Indy-ROS2 package.
Building Moby package and dependent packages
- To build the moby-ros2 package and other dependent packages, create a ROS2 workspace path.
- Download the moby-ros2 package into ros2_ws/src.
| cd ~/ros2_ws/src
git clone https://github.com/neuromeka-robotics/moby-ros2
|
- Download other dependency package sources required for building 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
|
- Install dependency libraries using rosdep.
| cd ~/ros2_ws \
&& rosdep update \
&& rosdep install -i --from-path src --rosdistro $ROS_DISTRO --skip-keys=librealsense2 -y
|
- To prevent errors due to package conflicts during the build, the sick_scan package must be built separately before other packages. Use the command below to clean the workspace build files and build the sick_scan package first.
| 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+
|
- Once the sick_scan package build is complete, build the remaining packages, including moby-ros2.
| cd ~/ros2_ws
colcon build --packages-skip sick_scan --cmake-args -DCMAKE_BUILD_TYPE=Release
|
- Load the built workspace. Add the second line of the command below to the .bashrc file to automatically run it each time the terminal is launched.
| . install/setup.bash
echo 'source $HOME/ros2_ws/install/setup.bash' >> ~/.bashrc
|
Basic package configuration
| ├── moby-ros2
├── moby_description/
├── moby_bringup/
├── moby_mapping/
├── moby_navigation/
└── ...
|
- moby_description : Moby model files and launch files used in RViz
- moby_bringup : Basic package for controlling Moby-RP in ROS2
- moby_mapping : Configuration files and launch files for map creation using SLAM
- moby_navigation : Parameter files and launch files for performing autonomous driving of Moby-RP using ROS2's Nav2
Detailed usage and examples of each package will be explained in subsequent sections.