Skip to content

Fix deprecated hardware_interface API#309

Merged
aalmrad merged 2 commits intoKinovarobotics:mainfrom
christophfroehlich:fix/API
Dec 9, 2025
Merged

Fix deprecated hardware_interface API#309
aalmrad merged 2 commits intoKinovarobotics:mainfrom
christophfroehlich:fix/API

Conversation

@christophfroehlich
Copy link
Copy Markdown
Contributor

See ros-controls/ros2_control#2323
needed for ros-controls/ros2_control#2589

Please release it to kilted and rolling, thanks :)
Note: This API is not available on humble.

@MarcosZ
Copy link
Copy Markdown

MarcosZ commented Oct 6, 2025

I also found another error when building for Jazzy along these lines:

--- stderr: hardware_interface                                                                                                                             
In file included from /root/workspace/ros2_kortex_ws/src/ros2_control/hardware_interface/include/hardware_interface/actuator_interface.hpp:18,
                 from /root/workspace/ros2_kortex_ws/src/ros2_control/hardware_interface/include/hardware_interface/actuator.hpp:18,
                 from /root/workspace/ros2_kortex_ws/src/ros2_control/hardware_interface/include/hardware_interface/resource_manager.hpp:23,
                 from /root/workspace/ros2_kortex_ws/src/ros2_control/hardware_interface/src/resource_manager.cpp:15:
/root/workspace/ros2_kortex_ws/src/ros2_control/hardware_interface/include/hardware_interface/hardware_component_interface.hpp: In member function ‘rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn hardware_interface::HardwareComponentInterface::init(const hardware_interface::HardwareComponentParams&)’:
/root/workspace/ros2_kortex_ws/src/ros2_control/hardware_interface/include/hardware_interface/hardware_component_interface.hpp:138:23: error: ‘AsyncFunctionHandlerParams’ is not a member of ‘realtime_tools’; did you mean ‘AsyncFunctionHandler’?
  138 |       realtime_tools::AsyncFunctionHandlerParams async_thread_params;
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~
      |                       AsyncFunctionHandler
/root/workspace/ros2_kortex_ws/src/ros2_control/hardware_interface/include/hardware_interface/hardware_component_interface.hpp:139:7: error: ‘async_thread_params’ was not declared in this scope
  139 |       async_thread_params.thread_priority = info_.async_params.thread_priority;
      |       ^~~~~~~~~~~~~~~~~~~
/root/workspace/ros2_kortex_ws/src/ros2_control/hardware_interface/include/hardware_interface/hardware_component_interface.hpp:141:25: error: ‘AsyncSchedulingPolicy’ is not a member of ‘realtime_tools’
  141 |         realtime_tools::AsyncSchedulingPolicy(info_.async_params.scheduling_policy);
      |                         ^~~~~~~~~~~~~~~~~~~~~
/root/workspace/ros2_kortex_ws/src/ros2_control/hardware_interface/include/hardware_interface/hardware_component_interface.hpp: In member function ‘void hardware_interface::HardwareComponentInterface::pause_async_operations()’:
/root/workspace/ros2_kortex_ws/src/ros2_control/hardware_interface/include/hardware_interface/hardware_component_interface.hpp:892:23: error: ‘class realtime_tools::AsyncFunctionHandler<hardware_interface::return_type>’ has no member named ‘pause_execution’
  892 |       async_handler_->pause_execution();
      |                       ^~~~~~~~~~~~~~~
In file included from /root/workspace/ros2_kortex_ws/src/ros2_control/hardware_interface/include/hardware_interface/hardware_component.hpp:23,
                 from /root/workspace/ros2_kortex_ws/src/ros2_control/hardware_interface/src/hardware_component.cpp:15:
/root/workspace/ros2_kortex_ws/src/ros2_control/hardware_interface/include/hardware_interface/hardware_component_interface.hpp: In member function ‘rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn hardware_interface::HardwareComponentInterface::init(const hardware_interface::HardwareComponentParams&)’:
/root/workspace/ros2_kortex_ws/src/ros2_control/hardware_interface/include/hardware_interface/hardware_component_interface.hpp:138:23: error: ‘AsyncFunctionHandlerParams’ is not a member of ‘realtime_tools’; did you mean ‘AsyncFunctionHandler’?
  138 |       realtime_tools::AsyncFunctionHandlerParams async_thread_params;
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~
      |                       AsyncFunctionHandler
/root/workspace/ros2_kortex_ws/src/ros2_control/hardware_interface/include/hardware_interface/hardware_component_interface.hpp:139:7: error: ‘async_thread_params’ was not declared in this scope
  139 |       async_thread_params.thread_priority = info_.async_params.thread_priority;
      |       ^~~~~~~~~~~~~~~~~~~
/root/workspace/ros2_kortex_ws/src/ros2_control/hardware_interface/include/hardware_interface/hardware_component_interface.hpp:141:25: error: ‘AsyncSchedulingPolicy’ is not a member of ‘realtime_tools’
  141 |         realtime_tools::AsyncSchedulingPolicy(info_.async_params.scheduling_policy);
      |                         ^~~~~~~~~~~~~~~~~~~~~
/root/workspace/ros2_kortex_ws/src/ros2_control/hardware_interface/include/hardware_interface/hardware_component_interface.hpp: In member function ‘void hardware_interface::HardwareComponentInterface::pause_async_operations()’:
/root/workspace/ros2_kortex_ws/src/ros2_control/hardware_interface/include/hardware_interface/hardware_component_interface.hpp:892:23: error: ‘class realtime_tools::AsyncFunctionHandler<hardware_interface::return_type>’ has no member named ‘pause_execution’
  892 |       async_handler_->pause_execution();
      |                       ^~~~~~~~~~~~~~~
gmake[2]: *** [CMakeFiles/hardware_interface.dir/build.make:104: CMakeFiles/hardware_interface.dir/src/hardware_component.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
gmake[2]: *** [CMakeFiles/hardware_interface.dir/build.make:90: CMakeFiles/hardware_interface.dir/src/resource_manager.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:198: CMakeFiles/hardware_interface.dir/all] Error 2
gmake[1]: *** Waiting for unfinished jobs....
gmake: *** [Makefile:146: all] Error 2
---
Failed   <<< hardware_interface [17.3s, exited with code 2]
Aborted  <<< control_toolbox [56.2s]                                                                                            
Aborted  <<< ros_gz_bridge [2min 58s]                                           
                                        
Summary: 18 packages finished [3min 41s]
  1 package failed: hardware_interface
  2 packages aborted: control_toolbox ros_gz_bridge
  5 packages had stderr output: control_toolbox generate_parameter_library_example hardware_interface kortex_api ros_gz_bridge
  52 packages not processed

@christophfroehlich
Copy link
Copy Markdown
Contributor Author

we released realtime_tools recently with the new asynchandler. you either have to use ros2-testing or compile realtime_tools from source

Copy link
Copy Markdown
Contributor

@sea-bass sea-bass left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did the same on PickNikRobotics/ros2_robotiq_gripper#108, so ✅

@mosfet80
Copy link
Copy Markdown
Contributor

mosfet80 commented Dec 3, 2025

... on rolling : i change the row hardwate_interface.cpp:96 to --> info_ = params.hardware_info;

@aalmrad aalmrad merged commit f5fbf9c into Kinovarobotics:main Dec 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants