I am reaching out to inquire about the limitations of the gz_ros2_control_plugin in accepting hardware components beyond the gz_ros2_control::GazeboSimSystemInterface.
I am currently developing a controller for the BlueROV2 vehicle, which relies on vehicle states, specifically body velocity as state interfaces and body efforts as command interfaces. I am utilizing the Blue project for testing purposes, which effectively provides a hardware component and a series of chained controllers that align with my controller requirements. However, the hardware component responsible for controlling the vehicle's thrusters communicates with the ardusub plugin, which emulates the actual BlueROV2 controller. In addition, this hw component is a child of the SystemInterface class.
The Blue project does not provide the vehicle body velocity as state interfaces; consequently, I have created a supplementary hardware component that subscribes to the topic provided by the Gazebo Odometry plugin through gz transport to supply the vehicle body velocities values in state interfaces. This newly developed hardware component, however, derives from the GazeboSimSystemInterface. Upon reviewing the gz_ros2_control_plugin code, I found that it currently only accommodates hardware components that inherit from GazeboSimSystemInterface, thereby preventing loading the ardusub hardware component in conjunction with my hardware component.
In light of this, I took the initiative to modify the gz_ros2_control_plugin locally to accept hardware components derived from the SystemInterface class. I implemented a new pluginlib loader and utilized the pluginlib API to redefine the parent class for that plugin, opting to bypass the initSim method when a plugin based on the SystemInterface is loaded. This small change works well.
Given this context, I would like to understand if there is a specific reason why the gz_ros2_control_plugin does not support other types of hardware components. If there is no substantial reason, I would be interested in proposing a pull request to incorporate this new feature. I am contacting this forum because I recognize that the maintainers may have valid concerns that I may not be aware of.