Hello, I wonder how the binding is done between the different EtherCAT devices and the actual C++ class of the device. I've found it's been implemented as plugins, but I don't understand how it works though. For example in ros/cturtle/stacks/pr2_ethercat_drivers/ethercat_hardware/src/wg0x.cpp there is : PLUGINLIB_REGISTER_CLASS(6805005, WG05, EthercatDevice); Here the WG05 is a C++ class that extends the EthercatDevice class. And in ros/cturtle/stacks/pr2_ethercat_drivers/ethercat_hardware/ethercat_device_plugin.xml there is : So there seem to be a link between the number 6805005 (btw what is this number ?) and the class WG05 but I don't understand exactly how all of this work. Regarding the documentation I found there (http://www.ros.org/wiki/pluginlib) the first argument of PLUGINLIB_REGISTER_CLASS should be the name of the class ? or just some kind of a key ? Another question I have is : how does the discovery of all the devices in the Ethercat bus work ? How does ROS become aware of the fact that there are two devices of class WG05 and three of class WG021 for example ? I don't know if I am clear enough in my questions. Regards, -- Yann Sionneau