I have been developing an open-source EtherCAT maindevice and it might be interesting to ROS folks.
Here is a summary of its capabilities:
- Available as a single statically linked binary or docker image for linux and windows.
- Automatically scan and operate an ethercat network with zero configuration required.
- Optionally provide a config file that describes the contents of the ethercat network to validate against.
- CoE startup parameters via the config file.
- Publishes ethercat inputs on zenoh. (CBOR encoded)
- Subscribes on zenoh (CBOR encoded) for controlling ethercat outputs.
- Written in zig (also available as a zig module).
- Optionally specify a real-time priority (PREEMPT_RT)
- CLI utility for scanning, running, and debugging ethercat networks.
Notably missing features (coming soon!):
- distributed clocks.
- enhanced NIC performance using linux XDP (currently uses raw sockets).
ROS folks may be using a lot of distributed clocks for motor drives, I have not tested it extensively with motor drives. It is well suited for digital / analog output/input modules right now.