Skip to content

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.
1
2
3
4
5
6
7
8
9
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.
1
sudo apt-mark hold linux-image-generic linux-headers-generic

Installing ROS2 and Dependency Packages

  • Add the repository for ROS2-Humble installation.
1
2
3
4
5
6
7
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.
1
2
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.
1
sudo rosdep init
  • 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.
1
mkdir -p ~/ros2_ws/src
  • Download the moby-ros2 package into ros2_ws/src.
1
2
cd ~/ros2_ws/src
git clone https://github.com/neuromeka-robotics/moby-ros2
  • Download other dependency package sources required for building moby-ros2.
1
2
3
4
5
6
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.
1
2
3
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.
1
2
3
4
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.
1
2
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.
1
2
. install/setup.bash
echo 'source $HOME/ros2_ws/install/setup.bash' >> ~/.bashrc

Basic package configuration

1
2
3
4
5
6
├── 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.