1. Introduction

Rover is an open-source mobile robot that is designed to demonstrate the outcomes of the Eclipse APP4MC and Eclipse Kuksa research projects. It features applications and tooling required to address complex research fields such as cloud communication, open-source tooling, or multi-core and cluster computing. The Rover is equipped with powerful sensors, motors, and display units to interact with the physical world. Furthermore, Rover uses Eclipse PolarSys project for its chassis and mechanics.

../roverstatic/images/rover11_2017.png

1.1. Motivations and Research

Rover is used as a demonstrator for two main research subjects:

../roverstatic/images/APP4MCLogo.png
Model-based Multicore Software Development
  • Based on the Eclipse APP4MC platform for engineering embedded multi- and many-core software systems

  • For this purpose, threads are designed run in a schedulable and traceable fashion (with the help of timing library)

  • System traces are taken in Common Trace Format using Linux’ perf profiler and custom created scripts

  • APP4MC is used for modeling and deployment outcomes

../roverstatic/images/KUKSA.png
Cloud-based Communication
  • Based on the Eclipse KUKSA ecosystem and more precisely on the message gateway Eclipse Hono

  • Rover uses the Eclipse Paho MQTT client to connect to the message gateway of cloud instances in order to send telemetry data and receive driving commands

../roverstatic/images/rover_infra2_exp.png

1.2. Infrastructure

The Rover features Cloud communication infrastructure, sensor driving, display unit (such as OLED displays) utilization, bluetooth communication, image processing, and behavior modes (such as Parking, Adaptive Cruise Control, Manual Driving, and Booth Modes). It also features drivers for sensors such as magnetometers, accelerometers, various ultrasonic sensors, and camera modules. Furthermore, OLED display, buttons, a buzzer are utilized.

A small yet crucial portion of Rover’s infrastructure (especially addressing network infrastructure) is given below. Rover uses Javascript Object Notation (JSON) as data format for the information that is sent and received between processes. However, it makes use of the shared memory in order to communicate between threads.

The Rover software, called roverapp, is a C/C++ application with a single executable that makes use of its shared memory for data communication. It is designed as a multi-threaded (POSIX threads or Pthreads) C/C++ implementation that runs on Linux-based embedded single board computers (such as Raspberry Pi) and involves many drivers, custom libraries, external libraries, and many threads (with task functions).

../roverstatic/images/complete_infra.png