|
| 1 | +# Technical requirements |
| 2 | + |
| 3 | +In the https://github.com/ros-mobile-robots organization on GitHub |
| 4 | +are the required ROS packages to set up a differential drive robot. |
| 5 | +One of the main software repositories is https://github.com/ros-mobile-robots/diffbot. |
| 6 | +It includes packages for simulation and the configurations and software to operate a real |
| 7 | +robot and interact with it from a development PC. For the hardware, you can build your |
| 8 | +own two- or four-wheeled differential drive robot similar to the one present in the |
| 9 | +`diffbot_description` package or 3D print a more stable Remo robot with the stl files in |
| 10 | +https://github.com/ros-mobile-robots/remo_description. |
| 11 | + |
| 12 | +The next two sections describe the technical requirements for the software and hardware. |
| 13 | + |
| 14 | +## Software requirements |
| 15 | + |
| 16 | +For the development PC, you should have ROS Noetic installed on Ubuntu 20.04 |
| 17 | +(https://releases.ubuntu.com/20.04/). On the Raspberry Pi 4 B Single- |
| 18 | +Board Computer (SBC) that is mounted on Remo, we use Ubuntu Mate 20.04 for arm64 |
| 19 | +architecture (https://ubuntu-mate.org/download/arm64/focal/). To clone |
| 20 | +large stl files from the Git repository we use git-lfs. On both Ubuntu flavors it needs |
| 21 | +to be installed with the following terminal command: |
| 22 | + |
| 23 | +```console |
| 24 | +sudo apt install git-lfs |
| 25 | +``` |
| 26 | + |
| 27 | +On both the development PC and the SBC of the robot, you need a connection to the |
| 28 | +same local network and to enable the ssh protocol, to connect from the development PC |
| 29 | +(client) to the robot, which is running an open-ssh server. Install it on Ubuntu Mate |
| 30 | +20.04 with the following: |
| 31 | + |
| 32 | +```console |
| 33 | +sudo apt install openssh-server |
| 34 | +``` |
| 35 | + |
| 36 | +Another interface setup that is needed to work with the microcontroller, is to add your |
| 37 | +user to the `dialout` group on both machines, the SBC and the development PC. This can |
| 38 | +be done with the following command, followed by a system reboot: |
| 39 | + |
| 40 | +```console |
| 41 | +sudo adduser <username> dialout |
| 42 | +``` |
| 43 | + |
| 44 | +When you clone the diffbot repository in a new catkin workspace, you will find two |
| 45 | +YAML files, `diffbot_dev.repos` and `remo_robot.repos`, that list required source |
| 46 | +dependencies together with their version control type, the repository address, and a |
| 47 | +relative path where these dependencies are cloned. `remo_robot.repos` is here to clone |
| 48 | +source dependencies on the real robot. |
| 49 | + |
| 50 | +To make use of such YAML files and clone the listed dependencies, we use the commands |
| 51 | +from [`vcstool`](http://wiki.ros.org/vcstool), which replaces |
| 52 | +[`wstool`](http://wiki.ros.org/wstool): |
| 53 | + |
| 54 | +1. In a new catkin workspace, clone the diffbot repository inside the src folder: |
| 55 | + |
| 56 | + ```console |
| 57 | + ros_ws/src$ git clone https://github.com/ros-mobile-robots/diffbot.git |
| 58 | + ``` |
| 59 | + |
| 60 | + for a specific tag (e.g. 1.0.0) you can use the following command: |
| 61 | + |
| 62 | + ```console |
| 63 | + ros_ws/src$ git clone --depth 1 --branch 1.0.0 https://github.com/ros-mobile-robots/diffbot.git |
| 64 | + ``` |
| 65 | + |
| 66 | +2. Make sure to execute the `vcs import` command from the root of the catkin |
| 67 | +workspace and pipe in the `diffbot_dev.repos` or `remo_robot.repos` |
| 68 | +YAML file, depending on where you execute the command, either the development |
| 69 | +PC or the SBC of Remo to clone the listed dependencies: |
| 70 | + |
| 71 | + ```console |
| 72 | + vcs import < src/diffbot/diffbot_dev.repos |
| 73 | + ``` |
| 74 | + |
| 75 | +3. Execute the next command on the SBC of the robot: |
| 76 | + |
| 77 | + ```console |
| 78 | + vcs import < src/diffbot/remo_robot.repos |
| 79 | + ``` |
| 80 | + |
| 81 | +After obtaining the source dependencies with `vcstool`, we can compile the workspace. |
| 82 | +To successfully compile the packages of the repository, binary dependencies must be |
| 83 | +installed. As the required dependencies are specified in each ROS package's `package.xml`, |
| 84 | +the rosdep command can install the required ROS packages from the Ubuntu repositories: |
| 85 | + |
| 86 | +```console |
| 87 | +rosdep install --from-paths src --ignore-src -r -y |
| 88 | +``` |
| 89 | + |
| 90 | +Finally, the workspaces on the development machine and the SBC of the robot need to |
| 91 | +be built, either using `catkin_make` or catkin tools. `catkin_make` comes pre-installed with ROS. |
| 92 | + |
| 93 | +=== "catkin tools" |
| 94 | + |
| 95 | + ```console |
| 96 | + catkin build |
| 97 | + ``` |
| 98 | + |
| 99 | +=== "`catkin_make`" |
| 100 | + |
| 101 | + ```console |
| 102 | + catkin_make |
| 103 | + ``` |
| 104 | + |
| 105 | + |
| 106 | +## Hardware requirements |
| 107 | + |
| 108 | +The repository at https://github.com/ros-mobile-robots/remo_description contains the |
| 109 | +robot description of Remo. Remo is a modular mobile robot platform, which is based on |
| 110 | +NVIDIA's JetBot. The currently available parts can be 3D printed using the provided |
| 111 | +stl files in the [`remo_description`](https://github.com/ros-mobile-robots/remo_description) repository. |
| 112 | +To do this, you either need a 3D printer with a recommended build volume of 15x15x15 cm or to use |
| 113 | +a local or online 3D print service. Further details are found in [hardware setup](hardware_setup/3D_print.md). |
0 commit comments