ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
In my experience, CAN (particularly when used via socketcan in Linux) is the most simple and reliable way to connect a number of sensors and actuators to a single computer. You likely only need a single CAN bus to handle that number of low-bandwidth sensors (low-frequency analog i/o, sonar rangefinders, even IMUs), and actuators. The value of socketcan is that even with a single CAN bus, you can still use multiple ROS driver nodes - you don't have to put all of your drivers together like you would with a shared serial interface, for example.
Almost all GPS would either be serial or serial-over-USB, depending on if you want PPS timing input as well (many USB models don't provide PPS).
Microphones are likely cheapest and easiest to handle via USB if you want them to be treated as standard audio input devices. Your only constraint here is that you have enough USB bandwidth and power available to run them.
Cameras are the trickiest sensors to handle reliably, given their bandwidth demands. In my experience, systems with multiple ethernet cameras have been significantly more reliable than systems with multiple USB cameras. On embedded platforms you may be able to use MIPI CSI or GMSL camera connections supported by the hardware instead. If you are going to use a Jetson platform, the onboard MIPI CSI interfaces may be sufficient for your camera needs.