Install ROS and OpenCV in Raspberry Pi(Raspbian Stretch)

This instruction covers the installation of ROS Kinetic (Robot Operating Systemand OpenCV-3.3.1 on the Raspberry Pi 2 or 3 with Raspbian Stretch.

I have prepared an img file (made in Dec 19 2017) that compiled ROS and OpenCV, you can download it here, file size is around 4GB in Google Drive. You can download ,unzip and burn it to your SD card (at least 16GB) if you don’t care the installation details.

If you want to make your own installation, please see the following steps.

Step 1:  Install pure Raspbian OS

Download official image file “RASPBIAN STRETCH WITH DESKTOP” (Image with desktop based on Debian Stretch, Version: November 2017Release date: 2017-11-29, Kernel version: 4.9).

Unzip the file, burn the img file to a SD card (at least 16GB) using Win32 Disk Imager for Windows or Pi Filler (easy use) for Mac. Note: Choose “Enable SSH” option if Pi Filler is used.

Step 2:  Install ROS Kinetic

Before we install ROS, its’s recommended that increase swap space size of Pi for faster compiling, but it is optional.

Increase swap space size:

Open “/etc/dphysswapfile” using “sudo nano”, edit CONF_SWAPSIZE variable (change 100MB to 1024MB):

# set size to absolute value, leaving empty (default) then uses computed value
# you most likely don't want this, unless you have an special disk situation

Now we need to activate new swap space:

$ sudo /etc/init.d/dphys-swapfile stop
$ sudo /etc/init.d/dphys-swapfile start

Note: After installing ROS, MUST change swap space from 1024 to 100.

In Raspbian Stretch,  there is an error for missing package, we need to fix it firstly by installing “dirmngr” for certificate management.

$ sudo apt-get install dirmngr

Add ROS repo to apt list:

$ sudo sh -c 'echo "deb $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
$ sudo apt-key adv --keyserver hkp:// --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

Update Debian package:

$ sudo apt-get update
$ sudo apt-get upgrade

Install Bootstrap Dependencies:

$ sudo apt-get install python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential cmake

Install rosdep (package manager):

$ sudo rosdep init
$ rosdep update

Create a catkin Workspace:

$ mkdir ~/ros_catkin_ws
$ cd ~/ros_catkin_ws

Build packages and libraries:
I chose to install ROS-Comm for minimal installation.
ROS-Comm: ROS package, build, and communication libraries. No GUI tools.

$ rosinstall_generator ros_comm --rosdistro kinetic --deps --wet-only --tar > kinetic-ros_comm-wet.rosinstall
$ wstool init -j8 src kinetic-ros_comm-wet.rosinstall

“-j8” is for faster processing.

If “wstool init” fails or is interrupted, you can resume the download by running (This step may NOT be necessary):

$ wstool update -j4 -t src

Make sure all dependenices are installed:

$ rosdep install --from-paths src --ignore-src --rosdistro kinetic -y

Build ROS:

$ sudo mkdir -p /opt/ros/kinetic
$ sudo chown pi:pi /opt/ros/kinetic
$ ./src/catkin/bin/catkin_make_isolated -j2 --install --install-space /opt/ros/kinetic -DCMAKE_BUILD_TYPE=Release

“-j2” is used because of limited memory of Pi, default parameter is “-j4”, “-j4” may cause error.

Source the new installation:

$ source /opt/ros/kinetic/setup.bash

ROS environment variables could be checked by the following command:

$ export | grep ROS

Now ROS should be installed successfully, remember to change swap space back to 100MB.

Step 3:  Install OpenCV

OpenCV installation should be easy nowadays, there are many good online guide, I won’t repeat here, I recommend to use this OpenCV installation guide done by Adrian Rosebrock.

In the above ready-to-use img file , it has installed OpenCV-3.3.1 with opencv_contrib (include SIFT, SURF  and other features), OpenCV is installed in global, NOT in virtual environment as in the Adrian guide, both python2 and python3 are able to use OpenCV.

If you don’t know how to use OpenCV in ROS, just take a look at cv_bridge in ROS wiki.


4 thoughts on “Install ROS and OpenCV in Raspberry Pi(Raspbian Stretch)

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s