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.
| Category | Feature | Status quo | Fripuck2 |
|---|---|---|---|
| Movement | Speed control | ✅ | |
| Distance target | ❌ | ||
| Encoder feedback | ✅ | ||
| Sensing | Proximity sensors | ✅ | ✅ |
| Ground sensors | ✅ | ||
| Accelerometers | ✅ | ||
| Gyroscope | ✅ | ||
| Magnetometer | Available in firmware | ||
| Time of flight | ✅ | ✅ | |
| Vision | Color video feedback | ✅ | |
| Basic image processing | ✅ | ||
| Yolo (AI) image processing | ✅ | ||
| Audio | Microphones volume | ✅ | |
| Microphones audio stream | ❌ | ||
| Play predefined sound | ✅ | ||
| Play streamed audio | ❌ | ||
| Feedback | Red LEDs | ✅ | |
| Other LEDs | ✅ | ||
| Communication | Bluetooth LE | Available in firmware | ❌\ Not planned |
| Wi-Fi (station) | ✅ | ✅ | |
| Wi-Fi (access point) | Available in firmware | ||
| Manage connection loss | |||
| I/O | TV Remote | ✅ | |
| SD card | Available in firmware | ||
| Control logic | Real-time control | ✅ | |
| Command sequencing | ❌ | ||
| Data handling | Real-time Streaming | ✅ | |
| High-frequency data aggregation | ❌ | ||
| Miscelaneous | Conversion 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)
|
|
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.
|
|