Any resources for design patterns in robotic software?

Started by hogoj26214, September 29, 2023, 01:59:29 PM

Previous topic - Next topic


I'm looking for information about any proven or standard design patterns in robotics software.

As an example, in a ROS workspace one likely has nodes for reading and processing sensor data, and controlling actuators.

but at some point you will likely have a 'main' node that's reading many separate topics, and publishing to the controller nodes to carry out it's task.

I would like to know if there are any standardised design patterns for writing the 'core' nodes in robotic software, making the decisions and publishing commands.

My hunch is it will follow embedded design principles, using things like state machines but I'm curious if there are any other popular approaches.

I know there are a number of books for general OOP design patterns (Clean code, design principles etc) however I'm yet to find anything entirely aimed at robotic software design.

Has anyone here found any useful examples or resources for this?

Johannes @ Robots in Architecture

I would see state machines and behavior trees as typical examples for such design patterns, yes.
The reason why there isn't a standard is probably the lack of standardization in robotics.
What is a reasonable approach with software X may be completely different in software Y - e.g. the geometry-heavy, visual programming based approach of Grasshopper versus how ROS is used.
Same applies to robot brand X versus robot brand Y.
So unfortunately I cannot offer any good advice here...!