...
Robot Operating System 2 (ROS2) is a framework for programming robots that we use as the backbone for our software architecture. Despite the name, it is not truly an OS, but actually a set of packages installed over Ubuntu that aid robotic software development by simplifying communications between processes and providing common functionality so we don’t have to reinvent the wheel. The version of ROS2 we use is called foxygalactic (please check with the software lead or senior member that this is the version we are using for our current rover). Before getting started with ROS, first install it by following the official tutorial: https://docs.ros.org/en/foxygalactic/Installation/Ubuntu-Install-Debians.html
ROS2 Basic Concepts
The challenge of programming an entire robot is that it quickly becomes hugely complicated. Between firmware to control your sensors and actuators, and the logic to perform various functions, if you tried to code everything at once you would end up a) reinventing the wheel on many components, and b) end up with a hugely messy program that probably won’t adapt well to changes in objectives, and any changes you make will likely break other things. When tackling such a challenge it is important to decompose your problem into smaller subproblems which can be self-contained. This way each sub-problem can be solved more simply, and the system gains modularity because you can swap out subcomponents without affecting other parts.
...