Goal: A catalog of useful tools and applications using X86-64 and Raspberry Pi as hardware platforms
- Versioning
- Exception definitions
- Command line flags parsing
- Logging library
- Scripting library
- Message passing
- Realtime services
- Serialization
- Application framework
- IPC: Impmenent Python bindings [#131]
- IPC: Implement means to isolate IPC to a set of hosts [#129]
- IPC: Implement Query API [#130]
- IPC: Implement zero-copy read and write [#132]
- Implement a PoC gstreamer capture and HW accelerated glfw display
- Implement grapecam
- Implement canopen interface
- Implement Teleop controller
- Implement joystick interface
- Document how to configure Raspberry Pi5 for realtime applications
- Document how to allocate specified CPU cores to run Linux.
- Document how to allocate specified CPU cores to run my processes and threads.
- Demo application to show low latency and low jitter loop execution on Pi
- Reference: Low latency Ubuntu
- Implement shared memory interface
- Implement single producer multi-consumer queue using heap and shared memory
- Refactor multi-producer single-consumer queue
- Compare
MPSCQueue
againstFIFOBuffer
. Remove one. - Rename it for clarity
- Compare
- Refactor thread class out of realtime and put it in 'grape'
- Insert logging to capture timer overruns in the loop
reinterpret_cast<uintptr_t>
fromconst T*
and then modifying it later is undefined behaviour. Fixprobe::PinConfig::pin
. Considerstd::start_lifetime_as
instead.- replace
grape::realtime::SystemError
withstd::errc
- Implement behaviour tree
- Delay line
- Low pass filter
- Differentiator
- Integrator
- Matrix operations
- Quaternion operations
Goal: Robot model description file as the single source of truth to generate forward/inverse kinematics and scenegraph visualisation
- Choose Windowing API. Options:
- SDL3: Better pipeline model that matches how GPUs work. Better support for GPU computing
- GLFW: Simple
- PoC: Implement a HW accelerated shaded triangle in both of them. Choose based on simplicity (verbosity, expressiveness), maintainability
- Study
- Robotics at compile time
- Auto generated robot kinematics from model
- 2D Game Engine
- Vulkan in 30 minutes
- Vulkan Tutorial
- Vulkan guide
- Scenegraphs
- Flecs and ECS
- CLoudPeek: Could serve as a starting point for custom viewer
- USD
- glTF with physics extensions
- HW accelerated 3D graphics
- Design scene description format using our scripting engine
- Study Anki which uses Lua for scnegraph
- Design scenegraph library using existing khronos libs
- Review type-erasure as an abstraction technique for drawing shapes
- Implement PoC. (Example: Qt3d)
- Implement a basic scenegraph example and check performance in MacOS and Linux
- Design scene description format using our scripting engine
- Introduce RTSan
- Setup configuration presets for developer and CI builds
- Incorporate lessons from https://youtu.be/UI_QayAb9U0
- Fail the CI if clang-format changes code
- Add configuration presets to CMakePresets.json
- Develop github CI build file
- Document the usage in install instructions
- Implement CI build using github workflow
- Support GCC builds without restrictions
- Support installing targets as systemd services
- AHRS
- Use IMU from Sensing hat
- Environment monitor (CO2, temperature, humidity, pressure, light)
- Use Sensing hat
- PoE camera
- Use HD camera
- LQR sim
- Improvements to
probe::Monitor
(See TODO in README) - MuJoCoPy Bootcamp LQR sim from lesson 13, demonstrating integration of MujoCo, plotting and control
- Improvements to
- Rover
- DiY kit: Rover
- Demonstrate joystick teleop, FPV and mission control
- cactus-rt
- MuJoCo tutorials
- glaze for JSON serialisation and reflection
- C++23 features: cppcon, cpp weekly
- C++20 features: https://youtu.be/N1gOSgZy7h4
- Practical C++26 Reflection
- Interfaces with C++20 concept: https://concepts.godbolt.org/z/PjGb466cr
- Clean code: https://youtu.be/9ch7tZN4jeI