Robot Software Manifesto
Pillars of robot software stack
- Software engineering practices
- Unit Tests
- Logs
- Dumps (crash/memory)
- Visualization
- System behaviour description
- System Tests
- Hardware Tests
Most important thing is testing
Testing and validation is already hard for complex-sizable software. Throw in dynamic, partially observable, nondeterministic, competitive, continuous, sequential environment and get ready to lose your hair.
See: Why there aren’t more robots out there?
Any third party library should be abstacted. (Including ROS, especially ROS)
ROS is indispensible in the toolbox of many companies for a good reason. It provides valuable mechanisms that help with logging, communication, visualization, debugging etc. But such blessings can be curse when we don’t properly utilize them.