> Suppose I've got a motor, a motor driver, and an Arduino. How does ROS work with that?
It does not, ROS is for much bigger systems, usually Linux-based. Some things it can give you:
- IPC for multiple independent processes. So if your navigation process crashes, your drivers and controller still operate. Can save some time if your stack is slow to start up.
- Visualizer - not the best out there, but kinda-working. And because of previous item, you can keep it off (to save CPU) and only start if needed.
- Device drivers for some devices. Those would be "research grade" - any problems would be ignored and may result in invalid data, or they can crash, or be very inefficient... But good enough to get started.
- Logging/replay - log data to file, replay later. Again, research grade - there is no schema evolution (at least in ROS 1), so the moment you add new field, throw away your old logs. You can also use it to make whole-system tests, but because there is no explicit sync, those tests would be janky and flaky.
- some pre-made modules, like localization
it's a lot of small pieces, good enough to start or for prototype, but not for the more "production" robots.
As far as alternatives... All orgs I have seen do their own. Some of them start with ROS and eventually replace every part, others start entirly from scratch.
It does not, ROS is for much bigger systems, usually Linux-based. Some things it can give you:
- IPC for multiple independent processes. So if your navigation process crashes, your drivers and controller still operate. Can save some time if your stack is slow to start up.
- Visualizer - not the best out there, but kinda-working. And because of previous item, you can keep it off (to save CPU) and only start if needed.
- Device drivers for some devices. Those would be "research grade" - any problems would be ignored and may result in invalid data, or they can crash, or be very inefficient... But good enough to get started.
- Logging/replay - log data to file, replay later. Again, research grade - there is no schema evolution (at least in ROS 1), so the moment you add new field, throw away your old logs. You can also use it to make whole-system tests, but because there is no explicit sync, those tests would be janky and flaky.
- some pre-made modules, like localization
it's a lot of small pieces, good enough to start or for prototype, but not for the more "production" robots.
As far as alternatives... All orgs I have seen do their own. Some of them start with ROS and eventually replace every part, others start entirly from scratch.