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.
1.1. Motivations and Research¶
Rover is used as a demonstrator for two main research subjects:
- 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
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.
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).