Integrating an existing robot into the ros2_control framework, an issue about parameterizing hardware interface came up. Concretely, the robot is rather complex with many sensors (FTS, cameras), tool changing system, many tools. Therefore many parameters need to be set at on start of the hardware. In ros_control we would typically use YAML files for this and access the parameters on the parameters server. Since the hardware interface does not have access to the ROS2 Node interface in ros2_control, this is no longer possible. Therefore we decided to define parameters under the ros2_control tag in URDF. So if one often needs to change those parameters, this is very inconvenient, especially if it is expected that end-users set the concrete values for their robots (e.g., IP-addresses).
I see two possibilities to make this easier:
- Extend interfaces through the
ros2_control library and enable RessourceManager and HardwareInterfaces to access the parameters.
- Use YAML files inside xacro files as done by @livanov93 for the UR robots:
As users, which approach do you prefer? I would especially like to get opinions from people focusing on using the library and not developing it (@guru-florida, @olivier-stasse, @dignakov, @v-lopez, @ahcorde, @jordan-palacios, @AndyZe, @livanov93)
Sorry @bmagyar and @Karsten1987, I think we are too biased. 😀
Integrating an existing robot into the
ros2_controlframework, an issue about parameterizing hardware interface came up. Concretely, the robot is rather complex with many sensors (FTS, cameras), tool changing system, many tools. Therefore many parameters need to be set at on start of the hardware. Inros_controlwe would typically use YAML files for this and access the parameters on the parameters server. Since the hardware interface does not have access to the ROS2 Node interface inros2_control, this is no longer possible. Therefore we decided to define parameters under theros2_controltag in URDF. So if one often needs to change those parameters, this is very inconvenient, especially if it is expected that end-users set the concrete values for their robots (e.g., IP-addresses).I see two possibilities to make this easier:
ros2_controllibrary and enable RessourceManager and HardwareInterfaces to access the parameters.As users, which approach do you prefer? I would especially like to get opinions from people focusing on using the library and not developing it (@guru-florida, @olivier-stasse, @dignakov, @v-lopez, @ahcorde, @jordan-palacios, @AndyZe, @livanov93)
Sorry @bmagyar and @Karsten1987, I think we are too biased. 😀