The primary purpose of this repository is to provide a set of core reusable low level features that enable robotic related functionality on a Raspberry Pico 2. This implementation can be tailored to specific robotic applications.
Features:
State-machine management
State management is based on the state design pattern. It handles state transitions based on events.
- Functionality
- State manager
- Interfaces
- States
- Events
- State transition matrix
Low-level communication
The communication library is service-based, inspired by UDS. It provides callbacks for each message id.
- Interfaces
- Service Ids
- Service callbacks
- Wrappers
- Lock guards
- I2C slave
- SPI master
- DMA access
- Drivers
- CAN-FD controller and transceiver MCP251863
- Message data structures
- FIFO circular buffer
MCU utilities
MCU related functions
- Functionality
- MCU software reset
- Uart Logger
- MCU read/write flash memory
Unit tests for core functionality
A set of unit tests for the higher level features of these repo where developed using GoogleTest.