How icube-robotics/ethercat_driver_ros2 works
This repository provides a ROS 2 control hardware interface for configuring EtherCAT modules and exchanging cyclic process data through the IgH EtherCAT Master. The principal workflow parses robot configuration, loads slave plugins, configures and activates the bus, then transfers state and command values through PDO channels. Separate capabilities include generic and CiA 402 slave plugins, asynchronous SDO services, and transfer-based safety configuration. The graph uses README claims and tree-visible subsystem paths; unsampled implementation details are not expanded.
Main entry points: ethercat_bus_manager.cpp Bus Manager · ethercat_driver.cpp Hardware Interface · ec_master.cpp EtherCAT Master · ec_slave.hpp Slave Interface
Components 20
ROS 2 Driver
- Hardware Interface
ethercat_driver/src/ethercat_driver.cpp - URDF Parser
ethercat_driver/src/ethercat_ros2_control_xml_parser.cpp - Bus Manager
ethercat_driver/src/ethercat_bus_manager.cpp
EtherCAT Interface
- EtherCAT Master
ethercat_interface/src/ec_master.cpp - Slave Interface
ethercat_interface/include/ethercat_interface/ec_slave.hpp - PDO Channels
ethercat_interface/src/ec_pdo_channel_manager.cpp - Single PDO
ethercat_interface/src/ec_pdo_single_interface_channel_manager.cpp - Grouped PDO
ethercat_interface/src/ec_pdo_group_interface_channel_manager.cpp - SDO Manager
ethercat_interface/include/ethercat_interface/ec_sdo_manager.hpp
Slave Plugins
- Generic Slave
ethercat_generic_plugins/ethercat_generic_slave/src/generic_ec_slave.cpp - CiA 402 Drive
ethercat_generic_plugins/ethercat_generic_cia402_drive/src/generic_ec_cia402_drive.cpp
SDO And Safety
- Async Master
ethercat_manager/include/ethercat_manager/ec_master_async.hpp - SDO Service
ethercat_manager/src/ethercat_sdo_srv_server.cpp - SDO Messages
ethercat_msgs/srv/GetSdo.srv - Safety Transfers
ethercat_driver/include/ethercat_driver/ethercat_bus_manager.hpp
Other components
- Robot Integrator
- ros2_control
- Robot Configuration
ethercat_driver/examples/configurations - IgH Master
- EtherCAT Network
Connections 22
- Robot Integrator → Robot Configuration: configures
- Robot Configuration → Hardware Interface: configures
- ros2_control → Hardware Interface: loads
- Hardware Interface → URDF Parser: parses URDF
- Hardware Interface → Bus Manager: manages bus
- Bus Manager → Generic Slave: loads plugin
- Bus Manager → CiA 402 Drive: loads plugin
- Bus Manager → EtherCAT Master: configures
- EtherCAT Master → Slave Interface: registers slaves
- Slave Interface → PDO Channels: manages PDOs
- PDO Channels → Single PDO: specializes
- PDO Channels → Grouped PDO: specializes
- Hardware Interface → Bus Manager: cycles read/write
- Bus Manager → EtherCAT Master: reads/writes process data
- EtherCAT Master → IgH Master: uses master API
- IgH Master → EtherCAT Network: communicates
- Bus Manager → SDO Manager: configures SDOs
- Async Master → SDO Service: serves requests
- SDO Service → SDO Messages: uses definitions
- Safety Transfers → Bus Manager: configures safety transfers
- Generic Slave → Slave Interface: implements
- CiA 402 Drive → Slave Interface: implements