At first there was nothing; motor commanding was unidirectional, and without form; and darkness was upon the face of FRC.
And then Luminary Micro said, Let there be CAN: and there was CAN.
And FRC saw the CAN, that it was good.
Those of us who were around in the ~2011 timeframe remember how revolutionary it was to be able to run control loops on motor controllers, to set parameters on them, and to retrieve telemetry.
Fast forward ten short years, and the FRC CAN ecosystem has exploded: not only are nearly all legal motor controllers CAN-capable, but many sensors and an increasing number of coprocessors have CAN interfaces. This, of course, leads to increasing congestion. CAN is, after all, a bus, and whenever any device sends a message, it occupies the whole bus for a millisecond or so. These days, approaching 100% CAN bus utilization is a real possibility for some teams.
I’m interested to see what the community thinks is the best way forward. Bear in mind, when I say “best”, I don’t just mean “most technical capability”, I mean the whole cost vs. capacity vs. complexity vs. reliability trade.
- CAN (it’s fine as it is)
- CAN-FD (5 Mbps)
- Multiple CAN busses (one safety-critical bus for commanding motor controllers etc., plus one or more for noncritical data)
- Multiple CAN busses (all the same)
- RS-485 or derivatives (Profibus, etc.)
- 100BASE-T1, or some other variety of Ethernet
- Other (explain in comments)