Skip to content

Commit

Permalink
docs: Updates roadmap
Browse files Browse the repository at this point in the history
  • Loading branch information
cvilas committed Apr 5, 2024
1 parent 49d2cd1 commit dd5f3a2
Showing 1 changed file with 24 additions and 8 deletions.
32 changes: 24 additions & 8 deletions docs/02_roadmap.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,21 +22,37 @@
- For GL on macos add /opt/X11/lib to path in the toolchain
- Version 130 opengl not supported. Follow the imgui example to set up implot example

## Phase 4 - Multimodel data logging and visualisation - audio, video, 3D graphics
## Phase 3 - Multimodel data logging and visualisation - audio, video, 3D graphics

- Audio/Video streaming:
- Choose backend for audio/video device handling and stream processing
- Implement basic examples for AV capture, streaming and display

- zenoh video capture/display: https://github.com/eclipse-zenoh/zenoh-demos/tree/master/computer-vision/zcam
- HW accelerated 3D graphics
- Select scene description format: [USD](https://developer.nvidia.com/usd#nvidia), ??
- Select a rendering backend: vsg, ogre, raylib, something else
- Implement a basic scenegraph example and check performance in MacOS and Linux VM
- Implement scenegraph in our scripting language and have it render by the backend

## Phase 3 - CI
## Phase 4 - Refactor

- Have a single place to maintain version numbers of all external dependencies
- Single versions file maybe
- Add version to find_package() calls within modules
- Refactor gbs template files to make it project agnostic
- Replace occurances of 'grape' with @CMAKE_PROJECT_NAME@ in all files
- Refactor logging
- Consider using the `FIFOBuffer` for logs.
- Color console handler like in [Quill](https://github.com/odygrd/quill/blob/master/quill/src/handlers/ConsoleHandler.cpp)
- Study Quill to understand how to reduce overhead even more
- Refactor thread class out of realtime and put it in 'grape'
- Insert logging to capture timer overruns in the loop
- Study [SPSC FIFO](https://youtu.be/K3P_Lmq6pw0) and review [implementation](https://github.com/CharlesFrasch/cppcon2023)
- Benchmark `FIFOBuffer` against [SPSC fifo](https://github.com/CharlesFrasch/cppcon2023) and improve performance where possible
- `reinterpret_cast<uintptr_t>` from `const T*` and then modifying it later is undefined behaviour. Fix `probe::PinConfig::pin`. Consider `std::start_lifetime_as` instead.

## Phase 5 - CI

- Sign up for [game engine](https://pikuma.com/courses/cpp-2d-game-engine-development) course
- Setup configuration presets for developer and CI builds
- Incorporate lessons from https://youtu.be/UI_QayAb9U0
- Fail the CI if clang-format changes code
Expand All @@ -46,8 +62,9 @@
- study
- [boost-ext/reflect](https://github.com/boost-ext/reflect)
- [reflect-cpp](https://github.com/getml/reflect-cpp)
- Implement CI build using github workflow
- Integrate cpack to generate artifacts
- Integrate cmake-format
- Integrate [ninjatracing](https://github.com/nico/ninjatracing)
- Review all negated checks in `.clang-tidy`

## Phase 6 - Robotics behaviours
Expand Down Expand Up @@ -75,11 +92,11 @@
- Case 2: pub-peer + router on PC1, sub-peer + router on PC2, router on PC3, multicast scouting off. Confirm data transfer from PC1 to PC2, no data transfer through PC3.
- Case 3: Extend case2 by adding a PC4 with router and sub-client. Confirm sub-client on PC4 receives data from pub-peer on PC1.

## Phase 6 - Demo application - Rover
## Phase 7 - Demo application - Rover

- Mars Rover (joystick teleop, FPV, mission control)

## Phase 7 - Utilities
## Phase 8 - Utilities

- serdes
- Choose backend: low overhead, type-safe, fast, no external dependencies, supports C++ and Python
Expand All @@ -89,7 +106,6 @@
- md5sum
- factory using crtp (see scratch)
- [ftxui](https://github.com/ArthurSonzogni/FTXUI) based terminal UI apps
- Redesign ProgramOptions with [monadic interface](https://youtu.be/kZ8rbhGgtv4)
- Consider integrating mp_uints library

## Notes
Expand Down

0 comments on commit dd5f3a2

Please sign in to comment.