A fundamental goal of kitt is to not just work on a robot project today, but to have a project that we can work on tomorrow. Many projects produce lots of code that has interesting features, but without shaping the project in a sustainable way, a point will come where project maintenance is prohibitive. Robotics projects are particularly notorious for being difficult to sustain and can quickly spiral out of control.
While many of these are obvious to experienced software engineers, explicitly listing these practices seeks to solidify them in the mind of project contributors.
- Reusable codebase
- Unit, integration, acceptance testing
- Simulator testing
- Continuous integration/deployment
- Docker containers
- Logging and introspection
- Thin HAL
- Event-based rather than time-based, especially for increasing the feasibility of testing
- Parameterized time where possible
Note: relate thin hal to easily detectable hardware faults.
Note: platform modularity will be demphisized but multiple platforms will be emphasized
importance of agile practices
physical continuous integration, HIL testing