This project aims to build a self driving rc car equipped with a Raspberry Pi 3 B+ (use a Raspberry Pi 4 B for increased performance) running ROS and an Arduino MKR1000 to control the motor and the servo for steering. To find its way around it uses a camera. The project is split into four parts, to adress the following main components of the robot.

  • Arduino MKR1000 responsible for the low level control.
  • Raspberry Pi 3 B+ or even better a Rapberry 4 B running ROS to perceive the environment and act accordingly.
  • The rc vehicle and its parts
  • System integration: combining the components.

In this part I will explore the MKR1000 and its capabilities using the Serial connection and a library called rosserial. This library provides a client library called rosserial_arduino. It allows users to get ros nodes up and running easily.


If you followed the previous tutorial to setup a ubuntu 16.04 guest virtual machine on virtualbox running on macOS, you are ready to follow this tutorial. However, it’s not required to have ubuntu running on a virtualbox. Feel free to install ubuntu 16.04 directly on your machine to get the best experience regarding performance.

The reason we use ubuntu 16.04 is that it is an LTS version and recommended by the ROS Kinetic distribution which is itself has LTS, supported until April, 2021.