You can follow my progress here: Kaneo Dashboard

Fripuck2 is a re-implementation of original e-puck2 firmware and api (which can be found here, here and here), originally developped by the EPFL, built and maintained by GCtronic.

Goals

The project’s goal is to optimize the firmware and api of the robot to better fit the needs of the university’s requirements, as well as enabeling me to delve in the world of embedded development.

This project is developped as my bachelor thesis in collaboration with the Human-IST institute.

Technology stack

While the previous project used a mix of ChibiOS and FreeRTOS, this project uses only FreeRTOS on the firmware for consistency.

Both chips use PlatformIO as the build and dependency management system to simplify development and debugging.

To transmit data between the robot’s chips and the API, Flatbuffers is used rather than a custom protocol for efficiency and ease of development. Thus, the whole protocol is exposed in the schema (.fbs) files in the protocol-schemas directory.

Feature parity

Reaching full feature parity is probably an impossible task since I am alone for this project. The following table shows my progress and improvements next to the status quo.

CategoryFeatureStatus quoFripuck2
MovementSpeed control
Distance target
Encoder feedback
SensingProximity sensors
Ground sensors
Accelerometers
Gyroscope
MagnetometerAvailable in firmware
Time of flight
VisionColor video feedback
Basic image processing
Yolo (AI) image processing
AudioMicrophones volume
Microphones audio stream
Play predefined sound
Play streamed audio
FeedbackRed LEDs
Other LEDs
CommunicationBluetooth LEAvailable in firmware❌\ Not planned
Wi-Fi (station)
Wi-Fi (access point)Available in firmware
Manage connection loss
I/OTV Remote
SD cardAvailable in firmware
Control logicReal-time control
Command sequencing
Data handlingReal-time Streaming
High-frequency data aggregation
MiscelaneousConversion to SI units
Graphical intercace
ROS support

Building

Note: For now, building has only been tested on Linux.

First, make sure you have access to the robot over serial. You may need to add your user to the dialout or uucp depending on your distribution (should be dialout on most, uucp on arch)

1
usermod -aG dialout $USER

Then, to build the firmware you need PlatformIO. You can install the VScode extension, or you can install the PlatformIO Core CLI.

If you chose the latter (or both), you can also use the makefile at the root of the project for convenience.

1
2
make generate # generates flatbuffers code if schemas were changed
make flash # flashes the chips with pio