Links
Comment on page

Install ROS on Turtle Rover

Here is a quick tutorial on how to install ROS on your Turtle Rover

Prepare your Turtle Rover for ROS installation

First, connect your device to Turtle Rover's console via SSH
Next step is to establish Internet connection

Prepare ROS installation tools

Update package list
sudo apt update
Make sure you have dirmngr installed (it’s necessary for downloading public keys from the HKP server)
sudo apt install dirmngr
Add ROS repositories and download GPG keys
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
Install prerequisites
sudo apt install python-rosdep python-rosinstall-generator python-wstool python-rosinstall python-catkin-tools python-psutil build-essential cmake
Initialize rosdep and update its package list
sudo rosdep init
rosdep update

Installing ROS packages

To install ROS on TurtleOS you can either compile package from source or download one of our precompiled workspaces.

A. Use our precompiled workspace

We have precompiled ROS workspaces to make installation process easier. You can find them together with lists of packages they contain here.
Download selected one to your host machine and upload it to your Rover:
Or download it directly to your Rover using wget. E.g.:
wget https://github.com/TurtleRover/turtleos-ros/releases/download/v0.3/2019-07-10-ROS.tar
Create a directory for ROS kinetic workspace and extract the archive to that directory:
sudo mkdir -p /opt/ros/kinetic
sudo tar -xf 2019-07-10-ROS.tar -C /opt/ros/kinetic
Use rosdep to install system dependencies
rosdep install --from-paths /opt/ros/kinetic/share --rosdistro kinetic -i -r -y

B. Compile ROS package sources

Create a directory to store our catkin workspace
mkdir -p ~/ros_catkin_ws
cd ~/ros_catkin_ws
Use rosinstall_generator tool for creating a rosinstall file. This file will contain a list of ROS packages alongside their sources
rosinstall_generator ros_comm --rosdistro kinetic --deps --wet-only --tar > kinetic-ros_comm-wet.rosinstall
ros_comm contains basic ROS communication tools. The command above will include this package and all its recursive dependencies
Download packages to source directory using wstool
wstool init src kinetic-ros_comm-wet.rosinstall
Install system dependencies of downloaded packages using the rosdep tool
rosdep install -y --from-paths src --ignore-src --rosdistro kinetic -r
Initialize and configure catkin workspace
catkin init
catkin config --install -i /opt/ros/kinetic -j 2
The configuration shown above says that the workspace is going to be installed in the /opt/ros/kinetic directory and that up to 2 parallel jobs can be running
NOTE: In this tutorial we use catkin commands from catkin-tools. If you want to use the catkin_make command instead, you can follow this tutorial
Build and install the workspace
sudo catkin build
CAUTION: Raspberry Pi has limited resources and TurtleOS doesn’t have a swap partition. This fact can lead to the device becoming unresponsive over time, because of memory exhaustion. If this results in the compilation being terminated, you can try limiting the jobs running based on the memory usage sudo catkin build --mem-limit 50% The next job won’t be started as long as the memory usage is above 50% Also remember to have decent power supply (a 5V/2.5A charger would do fine)
That’s it! Our workspace is installed in the /opt/ros/kinetic directory.

Testing ROS Master Node

To access all the installed tools and packages you need to "source" the workspace. To do this, use this command:
source /opt/ros/kinetic/setup.bash
If you want the command to be executed at the start of every terminal session, simply add it to the .bashrc file
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
Now, to run Master Node, type:
roscore
On another terminal, "source" the workspace and then type:
rostopic list
You should see /rosout and /rosout_agg topics listed.

Adding or Updating packages

Let's say you want to add joy package. So first, you need to create a new rosinstall file
rosinstall_generator joy --rosdistro kinetic --deps --wet-only --tar > joy.rosinstall
Next, merge it with our workspace and update package sources
wstool merge joy.rosinstall -t src
wstool update -t src
Don't forget to install system dependencies via rosdep
rosdep install -y --from-paths src --ignore-src --rosdistro kinetic -r
Rebuild our workspace
sudo catkin build