Package Summary

Tags No category tags.
Version 0.9.2
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/kroshu/kuka_drivers.git
VCS Type git
VCS Version humble
Last Updated 2025-03-26
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing ROS2 core functions for KUKA robots

Additional Links

No additional links.

Maintainers

  • Aron Svastits
  • Gergely Kovacs
  • Mark Szitanics

Authors

No additional authors.

Core functionalities for the drivers

This package contains two libraries that implement the common functionalities of the 3 kuka drivers to reduce code duplications and make the code more maintainable.

Wrapper methods for specific services

The kuka_drivers_core::communication_helpers is a header-only library providing wrapper methods for commonly used features.

Synchronous service calls

rclcpp does not provide synchronous service calls, this is implemented in the service_tools.hpp

It provides the sendRequest() endpoint with following arguments:

  • client [ClientT]: the initialized service client
  • request [RequestT]: the filled request with appropriate type
  • service_timeout_ms [int] (default: 2000): timeout for service discovery
  • response_timeout_ms [int] (default: 1000): timeout for getting the response

The method returns the service response (as a shared pointer).

Example for calling the ListControllers service of the controller_manager:

rclcpp::Client<controller_manager_msgs::srv::ListControllers>::SharedPtr get_controllers_client_;
auto request = std::make_shared<controller_manager_msgs::srv::ListControllers::Request>();

// [...]

auto response =  kuka_drivers_core::sendRequest<controller_manager_msgs::srv::ListControllers::Response>(get_controllers_client_, request, 0, 1000);

ros2_control state handling

The library also contains the ros2_control_tools.hpp header, which implements wrapper methods for modifying the states of controllers and hardware components.

Endpoints:

The changeHardwareState() can change the state of one hardware component and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr]: initialized client
  • hardware_name` [std::string]: name of the hardware component
  • state [uint8_t of enum]: desired state after state change (only one transition is possible with one call)
  • timeout_ms [int] (default: 1000): timeout for the response

The method returns whether the transition was successful.

The changeControllerState() can change the state of more controllers and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr]: initialized client
  • activate_controllers [std::vector<std::string>]: names of the controllers to activate
  • deactivate_controllers [std::vector<std::string>]: names of the controllers to deactivate
  • strictness [int32_t] (default: STRICT): whether to fail if one state change is unsuccessful

The method returns whether the transitions were successful.

Examples:

rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr change_hardware_state_client_;
rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr change_controller_state_client_;

// [...]

// Activate hardware named 'lbr_iisy3_r760'
bool success1 = changeHardwareState(change_hardware_state_client_, "lbr_iisy3_r760", State::PRIMARY_STATE_ACTIVE);

// Activate 'joint_state_broadcaster' and 'joint_trajectory_controller'
bool success2 = changeControllerState(change_controller_state_client_, {"joint_state_broadcaster", "joint_trajectory_controller"}, {/*nothing to deactivate*/});

Core classes

Base classes with improved parameter handling

There are two core classes implemented in this repository, ROS2BaseNode for improved parameter handling, and ROS2BaseLCNode, which derives from the rclcpp_lifecycle::LifecycleNode class and implements lifecycle state transitions which would be usually implemented in the same way in every case. These are virtual functions, so it is possible to override them in the case of a different desired implementation.

Parameter handling

The base classes provide a wrapper method for parameter registration, which makes handling of parameters more convenient. This is done with the help of the ParameterHandler class, which includes a ParameterBase and a template Parameter<T> nested class for this purpose.

Improvements:

  • The add_on_set_parameters_callback() is called in both of the constructors to register the callback for parameter change requests. This makes sure that the initial values of the parameters are synced from the parameter server.
  • The parameter type is enforced automatically.
  • The registered callback has access over all of the registered parameters, therefore the parameter server and the node is always in sync
  • It is easy to register a callback for additional checks before requested parameter value is accepted.
  • The user can define the lifecycle states, in which parameter changes are allowed using the ParameterSetAccessRights structure.
  • There is a different endpoint for static parameters, which cannot be changed after initialization.

The Parameter<T> class supports the following parameter types (identical to the types supported by rclcpp::Parameter):

  • bool
  • int64_t (or type satisfying std::is_integral except bool)
  • double (or type satisfying std::is_floating_point)
  • std::string
  • std::vector<uint8_t>
  • std::vector<bool>
  • std::vector<int64_t>
  • std::vector<double>
  • std::vector<std::string>

The nodes provide the registerParameter() and registerStaticParameter() endpoints with the following arguments:

  • name [std::string]: name of the parameter
  • value [T]: default value of the parameter

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kuka_drivers_core

0.9.2 (2024-07-10)

  • Fix GCC warning causing unstable build

0.9.1 (2024-07-08)

  • Add missing test dependency

0.9.0 (2024-07-08)

  • Add package with core features necessary for all KUKA drivers
  • Contributors: Aron Svastits, Gergely Kovacs, Mark Szitanics, Sandor Komaromi

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kuka_drivers_core at Robotics Stack Exchange

No version for distro jazzy showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.9.2
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/kroshu/kuka_drivers.git
VCS Type git
VCS Version humble
Last Updated 2025-03-26
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing ROS2 core functions for KUKA robots

Additional Links

No additional links.

Maintainers

  • Aron Svastits
  • Gergely Kovacs
  • Mark Szitanics

Authors

No additional authors.

Core functionalities for the drivers

This package contains two libraries that implement the common functionalities of the 3 kuka drivers to reduce code duplications and make the code more maintainable.

Wrapper methods for specific services

The kuka_drivers_core::communication_helpers is a header-only library providing wrapper methods for commonly used features.

Synchronous service calls

rclcpp does not provide synchronous service calls, this is implemented in the service_tools.hpp

It provides the sendRequest() endpoint with following arguments:

  • client [ClientT]: the initialized service client
  • request [RequestT]: the filled request with appropriate type
  • service_timeout_ms [int] (default: 2000): timeout for service discovery
  • response_timeout_ms [int] (default: 1000): timeout for getting the response

The method returns the service response (as a shared pointer).

Example for calling the ListControllers service of the controller_manager:

rclcpp::Client<controller_manager_msgs::srv::ListControllers>::SharedPtr get_controllers_client_;
auto request = std::make_shared<controller_manager_msgs::srv::ListControllers::Request>();

// [...]

auto response =  kuka_drivers_core::sendRequest<controller_manager_msgs::srv::ListControllers::Response>(get_controllers_client_, request, 0, 1000);

ros2_control state handling

The library also contains the ros2_control_tools.hpp header, which implements wrapper methods for modifying the states of controllers and hardware components.

Endpoints:

The changeHardwareState() can change the state of one hardware component and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr]: initialized client
  • hardware_name` [std::string]: name of the hardware component
  • state [uint8_t of enum]: desired state after state change (only one transition is possible with one call)
  • timeout_ms [int] (default: 1000): timeout for the response

The method returns whether the transition was successful.

The changeControllerState() can change the state of more controllers and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr]: initialized client
  • activate_controllers [std::vector<std::string>]: names of the controllers to activate
  • deactivate_controllers [std::vector<std::string>]: names of the controllers to deactivate
  • strictness [int32_t] (default: STRICT): whether to fail if one state change is unsuccessful

The method returns whether the transitions were successful.

Examples:

rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr change_hardware_state_client_;
rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr change_controller_state_client_;

// [...]

// Activate hardware named 'lbr_iisy3_r760'
bool success1 = changeHardwareState(change_hardware_state_client_, "lbr_iisy3_r760", State::PRIMARY_STATE_ACTIVE);

// Activate 'joint_state_broadcaster' and 'joint_trajectory_controller'
bool success2 = changeControllerState(change_controller_state_client_, {"joint_state_broadcaster", "joint_trajectory_controller"}, {/*nothing to deactivate*/});

Core classes

Base classes with improved parameter handling

There are two core classes implemented in this repository, ROS2BaseNode for improved parameter handling, and ROS2BaseLCNode, which derives from the rclcpp_lifecycle::LifecycleNode class and implements lifecycle state transitions which would be usually implemented in the same way in every case. These are virtual functions, so it is possible to override them in the case of a different desired implementation.

Parameter handling

The base classes provide a wrapper method for parameter registration, which makes handling of parameters more convenient. This is done with the help of the ParameterHandler class, which includes a ParameterBase and a template Parameter<T> nested class for this purpose.

Improvements:

  • The add_on_set_parameters_callback() is called in both of the constructors to register the callback for parameter change requests. This makes sure that the initial values of the parameters are synced from the parameter server.
  • The parameter type is enforced automatically.
  • The registered callback has access over all of the registered parameters, therefore the parameter server and the node is always in sync
  • It is easy to register a callback for additional checks before requested parameter value is accepted.
  • The user can define the lifecycle states, in which parameter changes are allowed using the ParameterSetAccessRights structure.
  • There is a different endpoint for static parameters, which cannot be changed after initialization.

The Parameter<T> class supports the following parameter types (identical to the types supported by rclcpp::Parameter):

  • bool
  • int64_t (or type satisfying std::is_integral except bool)
  • double (or type satisfying std::is_floating_point)
  • std::string
  • std::vector<uint8_t>
  • std::vector<bool>
  • std::vector<int64_t>
  • std::vector<double>
  • std::vector<std::string>

The nodes provide the registerParameter() and registerStaticParameter() endpoints with the following arguments:

  • name [std::string]: name of the parameter
  • value [T]: default value of the parameter

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kuka_drivers_core

0.9.2 (2024-07-10)

  • Fix GCC warning causing unstable build

0.9.1 (2024-07-08)

  • Add missing test dependency

0.9.0 (2024-07-08)

  • Add package with core features necessary for all KUKA drivers
  • Contributors: Aron Svastits, Gergely Kovacs, Mark Szitanics, Sandor Komaromi

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kuka_drivers_core at Robotics Stack Exchange

No version for distro kilted showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.9.2
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/kroshu/kuka_drivers.git
VCS Type git
VCS Version humble
Last Updated 2025-03-26
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing ROS2 core functions for KUKA robots

Additional Links

No additional links.

Maintainers

  • Aron Svastits
  • Gergely Kovacs
  • Mark Szitanics

Authors

No additional authors.

Core functionalities for the drivers

This package contains two libraries that implement the common functionalities of the 3 kuka drivers to reduce code duplications and make the code more maintainable.

Wrapper methods for specific services

The kuka_drivers_core::communication_helpers is a header-only library providing wrapper methods for commonly used features.

Synchronous service calls

rclcpp does not provide synchronous service calls, this is implemented in the service_tools.hpp

It provides the sendRequest() endpoint with following arguments:

  • client [ClientT]: the initialized service client
  • request [RequestT]: the filled request with appropriate type
  • service_timeout_ms [int] (default: 2000): timeout for service discovery
  • response_timeout_ms [int] (default: 1000): timeout for getting the response

The method returns the service response (as a shared pointer).

Example for calling the ListControllers service of the controller_manager:

rclcpp::Client<controller_manager_msgs::srv::ListControllers>::SharedPtr get_controllers_client_;
auto request = std::make_shared<controller_manager_msgs::srv::ListControllers::Request>();

// [...]

auto response =  kuka_drivers_core::sendRequest<controller_manager_msgs::srv::ListControllers::Response>(get_controllers_client_, request, 0, 1000);

ros2_control state handling

The library also contains the ros2_control_tools.hpp header, which implements wrapper methods for modifying the states of controllers and hardware components.

Endpoints:

The changeHardwareState() can change the state of one hardware component and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr]: initialized client
  • hardware_name` [std::string]: name of the hardware component
  • state [uint8_t of enum]: desired state after state change (only one transition is possible with one call)
  • timeout_ms [int] (default: 1000): timeout for the response

The method returns whether the transition was successful.

The changeControllerState() can change the state of more controllers and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr]: initialized client
  • activate_controllers [std::vector<std::string>]: names of the controllers to activate
  • deactivate_controllers [std::vector<std::string>]: names of the controllers to deactivate
  • strictness [int32_t] (default: STRICT): whether to fail if one state change is unsuccessful

The method returns whether the transitions were successful.

Examples:

rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr change_hardware_state_client_;
rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr change_controller_state_client_;

// [...]

// Activate hardware named 'lbr_iisy3_r760'
bool success1 = changeHardwareState(change_hardware_state_client_, "lbr_iisy3_r760", State::PRIMARY_STATE_ACTIVE);

// Activate 'joint_state_broadcaster' and 'joint_trajectory_controller'
bool success2 = changeControllerState(change_controller_state_client_, {"joint_state_broadcaster", "joint_trajectory_controller"}, {/*nothing to deactivate*/});

Core classes

Base classes with improved parameter handling

There are two core classes implemented in this repository, ROS2BaseNode for improved parameter handling, and ROS2BaseLCNode, which derives from the rclcpp_lifecycle::LifecycleNode class and implements lifecycle state transitions which would be usually implemented in the same way in every case. These are virtual functions, so it is possible to override them in the case of a different desired implementation.

Parameter handling

The base classes provide a wrapper method for parameter registration, which makes handling of parameters more convenient. This is done with the help of the ParameterHandler class, which includes a ParameterBase and a template Parameter<T> nested class for this purpose.

Improvements:

  • The add_on_set_parameters_callback() is called in both of the constructors to register the callback for parameter change requests. This makes sure that the initial values of the parameters are synced from the parameter server.
  • The parameter type is enforced automatically.
  • The registered callback has access over all of the registered parameters, therefore the parameter server and the node is always in sync
  • It is easy to register a callback for additional checks before requested parameter value is accepted.
  • The user can define the lifecycle states, in which parameter changes are allowed using the ParameterSetAccessRights structure.
  • There is a different endpoint for static parameters, which cannot be changed after initialization.

The Parameter<T> class supports the following parameter types (identical to the types supported by rclcpp::Parameter):

  • bool
  • int64_t (or type satisfying std::is_integral except bool)
  • double (or type satisfying std::is_floating_point)
  • std::string
  • std::vector<uint8_t>
  • std::vector<bool>
  • std::vector<int64_t>
  • std::vector<double>
  • std::vector<std::string>

The nodes provide the registerParameter() and registerStaticParameter() endpoints with the following arguments:

  • name [std::string]: name of the parameter
  • value [T]: default value of the parameter

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kuka_drivers_core

0.9.2 (2024-07-10)

  • Fix GCC warning causing unstable build

0.9.1 (2024-07-08)

  • Add missing test dependency

0.9.0 (2024-07-08)

  • Add package with core features necessary for all KUKA drivers
  • Contributors: Aron Svastits, Gergely Kovacs, Mark Szitanics, Sandor Komaromi

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kuka_drivers_core at Robotics Stack Exchange

No version for distro rolling showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.9.2
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/kroshu/kuka_drivers.git
VCS Type git
VCS Version humble
Last Updated 2025-03-26
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing ROS2 core functions for KUKA robots

Additional Links

No additional links.

Maintainers

  • Aron Svastits
  • Gergely Kovacs
  • Mark Szitanics

Authors

No additional authors.

Core functionalities for the drivers

This package contains two libraries that implement the common functionalities of the 3 kuka drivers to reduce code duplications and make the code more maintainable.

Wrapper methods for specific services

The kuka_drivers_core::communication_helpers is a header-only library providing wrapper methods for commonly used features.

Synchronous service calls

rclcpp does not provide synchronous service calls, this is implemented in the service_tools.hpp

It provides the sendRequest() endpoint with following arguments:

  • client [ClientT]: the initialized service client
  • request [RequestT]: the filled request with appropriate type
  • service_timeout_ms [int] (default: 2000): timeout for service discovery
  • response_timeout_ms [int] (default: 1000): timeout for getting the response

The method returns the service response (as a shared pointer).

Example for calling the ListControllers service of the controller_manager:

rclcpp::Client<controller_manager_msgs::srv::ListControllers>::SharedPtr get_controllers_client_;
auto request = std::make_shared<controller_manager_msgs::srv::ListControllers::Request>();

// [...]

auto response =  kuka_drivers_core::sendRequest<controller_manager_msgs::srv::ListControllers::Response>(get_controllers_client_, request, 0, 1000);

ros2_control state handling

The library also contains the ros2_control_tools.hpp header, which implements wrapper methods for modifying the states of controllers and hardware components.

Endpoints:

The changeHardwareState() can change the state of one hardware component and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr]: initialized client
  • hardware_name` [std::string]: name of the hardware component
  • state [uint8_t of enum]: desired state after state change (only one transition is possible with one call)
  • timeout_ms [int] (default: 1000): timeout for the response

The method returns whether the transition was successful.

The changeControllerState() can change the state of more controllers and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr]: initialized client
  • activate_controllers [std::vector<std::string>]: names of the controllers to activate
  • deactivate_controllers [std::vector<std::string>]: names of the controllers to deactivate
  • strictness [int32_t] (default: STRICT): whether to fail if one state change is unsuccessful

The method returns whether the transitions were successful.

Examples:

rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr change_hardware_state_client_;
rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr change_controller_state_client_;

// [...]

// Activate hardware named 'lbr_iisy3_r760'
bool success1 = changeHardwareState(change_hardware_state_client_, "lbr_iisy3_r760", State::PRIMARY_STATE_ACTIVE);

// Activate 'joint_state_broadcaster' and 'joint_trajectory_controller'
bool success2 = changeControllerState(change_controller_state_client_, {"joint_state_broadcaster", "joint_trajectory_controller"}, {/*nothing to deactivate*/});

Core classes

Base classes with improved parameter handling

There are two core classes implemented in this repository, ROS2BaseNode for improved parameter handling, and ROS2BaseLCNode, which derives from the rclcpp_lifecycle::LifecycleNode class and implements lifecycle state transitions which would be usually implemented in the same way in every case. These are virtual functions, so it is possible to override them in the case of a different desired implementation.

Parameter handling

The base classes provide a wrapper method for parameter registration, which makes handling of parameters more convenient. This is done with the help of the ParameterHandler class, which includes a ParameterBase and a template Parameter<T> nested class for this purpose.

Improvements:

  • The add_on_set_parameters_callback() is called in both of the constructors to register the callback for parameter change requests. This makes sure that the initial values of the parameters are synced from the parameter server.
  • The parameter type is enforced automatically.
  • The registered callback has access over all of the registered parameters, therefore the parameter server and the node is always in sync
  • It is easy to register a callback for additional checks before requested parameter value is accepted.
  • The user can define the lifecycle states, in which parameter changes are allowed using the ParameterSetAccessRights structure.
  • There is a different endpoint for static parameters, which cannot be changed after initialization.

The Parameter<T> class supports the following parameter types (identical to the types supported by rclcpp::Parameter):

  • bool
  • int64_t (or type satisfying std::is_integral except bool)
  • double (or type satisfying std::is_floating_point)
  • std::string
  • std::vector<uint8_t>
  • std::vector<bool>
  • std::vector<int64_t>
  • std::vector<double>
  • std::vector<std::string>

The nodes provide the registerParameter() and registerStaticParameter() endpoints with the following arguments:

  • name [std::string]: name of the parameter
  • value [T]: default value of the parameter

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kuka_drivers_core

0.9.2 (2024-07-10)

  • Fix GCC warning causing unstable build

0.9.1 (2024-07-08)

  • Add missing test dependency

0.9.0 (2024-07-08)

  • Add package with core features necessary for all KUKA drivers
  • Contributors: Aron Svastits, Gergely Kovacs, Mark Szitanics, Sandor Komaromi

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kuka_drivers_core at Robotics Stack Exchange

No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.9.2
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/kroshu/kuka_drivers.git
VCS Type git
VCS Version humble
Last Updated 2025-03-26
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing ROS2 core functions for KUKA robots

Additional Links

No additional links.

Maintainers

  • Aron Svastits
  • Gergely Kovacs
  • Mark Szitanics

Authors

No additional authors.

Core functionalities for the drivers

This package contains two libraries that implement the common functionalities of the 3 kuka drivers to reduce code duplications and make the code more maintainable.

Wrapper methods for specific services

The kuka_drivers_core::communication_helpers is a header-only library providing wrapper methods for commonly used features.

Synchronous service calls

rclcpp does not provide synchronous service calls, this is implemented in the service_tools.hpp

It provides the sendRequest() endpoint with following arguments:

  • client [ClientT]: the initialized service client
  • request [RequestT]: the filled request with appropriate type
  • service_timeout_ms [int] (default: 2000): timeout for service discovery
  • response_timeout_ms [int] (default: 1000): timeout for getting the response

The method returns the service response (as a shared pointer).

Example for calling the ListControllers service of the controller_manager:

rclcpp::Client<controller_manager_msgs::srv::ListControllers>::SharedPtr get_controllers_client_;
auto request = std::make_shared<controller_manager_msgs::srv::ListControllers::Request>();

// [...]

auto response =  kuka_drivers_core::sendRequest<controller_manager_msgs::srv::ListControllers::Response>(get_controllers_client_, request, 0, 1000);

ros2_control state handling

The library also contains the ros2_control_tools.hpp header, which implements wrapper methods for modifying the states of controllers and hardware components.

Endpoints:

The changeHardwareState() can change the state of one hardware component and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr]: initialized client
  • hardware_name` [std::string]: name of the hardware component
  • state [uint8_t of enum]: desired state after state change (only one transition is possible with one call)
  • timeout_ms [int] (default: 1000): timeout for the response

The method returns whether the transition was successful.

The changeControllerState() can change the state of more controllers and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr]: initialized client
  • activate_controllers [std::vector<std::string>]: names of the controllers to activate
  • deactivate_controllers [std::vector<std::string>]: names of the controllers to deactivate
  • strictness [int32_t] (default: STRICT): whether to fail if one state change is unsuccessful

The method returns whether the transitions were successful.

Examples:

rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr change_hardware_state_client_;
rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr change_controller_state_client_;

// [...]

// Activate hardware named 'lbr_iisy3_r760'
bool success1 = changeHardwareState(change_hardware_state_client_, "lbr_iisy3_r760", State::PRIMARY_STATE_ACTIVE);

// Activate 'joint_state_broadcaster' and 'joint_trajectory_controller'
bool success2 = changeControllerState(change_controller_state_client_, {"joint_state_broadcaster", "joint_trajectory_controller"}, {/*nothing to deactivate*/});

Core classes

Base classes with improved parameter handling

There are two core classes implemented in this repository, ROS2BaseNode for improved parameter handling, and ROS2BaseLCNode, which derives from the rclcpp_lifecycle::LifecycleNode class and implements lifecycle state transitions which would be usually implemented in the same way in every case. These are virtual functions, so it is possible to override them in the case of a different desired implementation.

Parameter handling

The base classes provide a wrapper method for parameter registration, which makes handling of parameters more convenient. This is done with the help of the ParameterHandler class, which includes a ParameterBase and a template Parameter<T> nested class for this purpose.

Improvements:

  • The add_on_set_parameters_callback() is called in both of the constructors to register the callback for parameter change requests. This makes sure that the initial values of the parameters are synced from the parameter server.
  • The parameter type is enforced automatically.
  • The registered callback has access over all of the registered parameters, therefore the parameter server and the node is always in sync
  • It is easy to register a callback for additional checks before requested parameter value is accepted.
  • The user can define the lifecycle states, in which parameter changes are allowed using the ParameterSetAccessRights structure.
  • There is a different endpoint for static parameters, which cannot be changed after initialization.

The Parameter<T> class supports the following parameter types (identical to the types supported by rclcpp::Parameter):

  • bool
  • int64_t (or type satisfying std::is_integral except bool)
  • double (or type satisfying std::is_floating_point)
  • std::string
  • std::vector<uint8_t>
  • std::vector<bool>
  • std::vector<int64_t>
  • std::vector<double>
  • std::vector<std::string>

The nodes provide the registerParameter() and registerStaticParameter() endpoints with the following arguments:

  • name [std::string]: name of the parameter
  • value [T]: default value of the parameter

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kuka_drivers_core

0.9.2 (2024-07-10)

  • Fix GCC warning causing unstable build

0.9.1 (2024-07-08)

  • Add missing test dependency

0.9.0 (2024-07-08)

  • Add package with core features necessary for all KUKA drivers
  • Contributors: Aron Svastits, Gergely Kovacs, Mark Szitanics, Sandor Komaromi

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kuka_drivers_core at Robotics Stack Exchange

No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.9.2
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/kroshu/kuka_drivers.git
VCS Type git
VCS Version humble
Last Updated 2025-03-26
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing ROS2 core functions for KUKA robots

Additional Links

No additional links.

Maintainers

  • Aron Svastits
  • Gergely Kovacs
  • Mark Szitanics

Authors

No additional authors.

Core functionalities for the drivers

This package contains two libraries that implement the common functionalities of the 3 kuka drivers to reduce code duplications and make the code more maintainable.

Wrapper methods for specific services

The kuka_drivers_core::communication_helpers is a header-only library providing wrapper methods for commonly used features.

Synchronous service calls

rclcpp does not provide synchronous service calls, this is implemented in the service_tools.hpp

It provides the sendRequest() endpoint with following arguments:

  • client [ClientT]: the initialized service client
  • request [RequestT]: the filled request with appropriate type
  • service_timeout_ms [int] (default: 2000): timeout for service discovery
  • response_timeout_ms [int] (default: 1000): timeout for getting the response

The method returns the service response (as a shared pointer).

Example for calling the ListControllers service of the controller_manager:

rclcpp::Client<controller_manager_msgs::srv::ListControllers>::SharedPtr get_controllers_client_;
auto request = std::make_shared<controller_manager_msgs::srv::ListControllers::Request>();

// [...]

auto response =  kuka_drivers_core::sendRequest<controller_manager_msgs::srv::ListControllers::Response>(get_controllers_client_, request, 0, 1000);

ros2_control state handling

The library also contains the ros2_control_tools.hpp header, which implements wrapper methods for modifying the states of controllers and hardware components.

Endpoints:

The changeHardwareState() can change the state of one hardware component and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr]: initialized client
  • hardware_name` [std::string]: name of the hardware component
  • state [uint8_t of enum]: desired state after state change (only one transition is possible with one call)
  • timeout_ms [int] (default: 1000): timeout for the response

The method returns whether the transition was successful.

The changeControllerState() can change the state of more controllers and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr]: initialized client
  • activate_controllers [std::vector<std::string>]: names of the controllers to activate
  • deactivate_controllers [std::vector<std::string>]: names of the controllers to deactivate
  • strictness [int32_t] (default: STRICT): whether to fail if one state change is unsuccessful

The method returns whether the transitions were successful.

Examples:

rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr change_hardware_state_client_;
rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr change_controller_state_client_;

// [...]

// Activate hardware named 'lbr_iisy3_r760'
bool success1 = changeHardwareState(change_hardware_state_client_, "lbr_iisy3_r760", State::PRIMARY_STATE_ACTIVE);

// Activate 'joint_state_broadcaster' and 'joint_trajectory_controller'
bool success2 = changeControllerState(change_controller_state_client_, {"joint_state_broadcaster", "joint_trajectory_controller"}, {/*nothing to deactivate*/});

Core classes

Base classes with improved parameter handling

There are two core classes implemented in this repository, ROS2BaseNode for improved parameter handling, and ROS2BaseLCNode, which derives from the rclcpp_lifecycle::LifecycleNode class and implements lifecycle state transitions which would be usually implemented in the same way in every case. These are virtual functions, so it is possible to override them in the case of a different desired implementation.

Parameter handling

The base classes provide a wrapper method for parameter registration, which makes handling of parameters more convenient. This is done with the help of the ParameterHandler class, which includes a ParameterBase and a template Parameter<T> nested class for this purpose.

Improvements:

  • The add_on_set_parameters_callback() is called in both of the constructors to register the callback for parameter change requests. This makes sure that the initial values of the parameters are synced from the parameter server.
  • The parameter type is enforced automatically.
  • The registered callback has access over all of the registered parameters, therefore the parameter server and the node is always in sync
  • It is easy to register a callback for additional checks before requested parameter value is accepted.
  • The user can define the lifecycle states, in which parameter changes are allowed using the ParameterSetAccessRights structure.
  • There is a different endpoint for static parameters, which cannot be changed after initialization.

The Parameter<T> class supports the following parameter types (identical to the types supported by rclcpp::Parameter):

  • bool
  • int64_t (or type satisfying std::is_integral except bool)
  • double (or type satisfying std::is_floating_point)
  • std::string
  • std::vector<uint8_t>
  • std::vector<bool>
  • std::vector<int64_t>
  • std::vector<double>
  • std::vector<std::string>

The nodes provide the registerParameter() and registerStaticParameter() endpoints with the following arguments:

  • name [std::string]: name of the parameter
  • value [T]: default value of the parameter

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kuka_drivers_core

0.9.2 (2024-07-10)

  • Fix GCC warning causing unstable build

0.9.1 (2024-07-08)

  • Add missing test dependency

0.9.0 (2024-07-08)

  • Add package with core features necessary for all KUKA drivers
  • Contributors: Aron Svastits, Gergely Kovacs, Mark Szitanics, Sandor Komaromi

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kuka_drivers_core at Robotics Stack Exchange

No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.9.2
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/kroshu/kuka_drivers.git
VCS Type git
VCS Version humble
Last Updated 2025-03-26
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing ROS2 core functions for KUKA robots

Additional Links

No additional links.

Maintainers

  • Aron Svastits
  • Gergely Kovacs
  • Mark Szitanics

Authors

No additional authors.

Core functionalities for the drivers

This package contains two libraries that implement the common functionalities of the 3 kuka drivers to reduce code duplications and make the code more maintainable.

Wrapper methods for specific services

The kuka_drivers_core::communication_helpers is a header-only library providing wrapper methods for commonly used features.

Synchronous service calls

rclcpp does not provide synchronous service calls, this is implemented in the service_tools.hpp

It provides the sendRequest() endpoint with following arguments:

  • client [ClientT]: the initialized service client
  • request [RequestT]: the filled request with appropriate type
  • service_timeout_ms [int] (default: 2000): timeout for service discovery
  • response_timeout_ms [int] (default: 1000): timeout for getting the response

The method returns the service response (as a shared pointer).

Example for calling the ListControllers service of the controller_manager:

rclcpp::Client<controller_manager_msgs::srv::ListControllers>::SharedPtr get_controllers_client_;
auto request = std::make_shared<controller_manager_msgs::srv::ListControllers::Request>();

// [...]

auto response =  kuka_drivers_core::sendRequest<controller_manager_msgs::srv::ListControllers::Response>(get_controllers_client_, request, 0, 1000);

ros2_control state handling

The library also contains the ros2_control_tools.hpp header, which implements wrapper methods for modifying the states of controllers and hardware components.

Endpoints:

The changeHardwareState() can change the state of one hardware component and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr]: initialized client
  • hardware_name` [std::string]: name of the hardware component
  • state [uint8_t of enum]: desired state after state change (only one transition is possible with one call)
  • timeout_ms [int] (default: 1000): timeout for the response

The method returns whether the transition was successful.

The changeControllerState() can change the state of more controllers and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr]: initialized client
  • activate_controllers [std::vector<std::string>]: names of the controllers to activate
  • deactivate_controllers [std::vector<std::string>]: names of the controllers to deactivate
  • strictness [int32_t] (default: STRICT): whether to fail if one state change is unsuccessful

The method returns whether the transitions were successful.

Examples:

rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr change_hardware_state_client_;
rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr change_controller_state_client_;

// [...]

// Activate hardware named 'lbr_iisy3_r760'
bool success1 = changeHardwareState(change_hardware_state_client_, "lbr_iisy3_r760", State::PRIMARY_STATE_ACTIVE);

// Activate 'joint_state_broadcaster' and 'joint_trajectory_controller'
bool success2 = changeControllerState(change_controller_state_client_, {"joint_state_broadcaster", "joint_trajectory_controller"}, {/*nothing to deactivate*/});

Core classes

Base classes with improved parameter handling

There are two core classes implemented in this repository, ROS2BaseNode for improved parameter handling, and ROS2BaseLCNode, which derives from the rclcpp_lifecycle::LifecycleNode class and implements lifecycle state transitions which would be usually implemented in the same way in every case. These are virtual functions, so it is possible to override them in the case of a different desired implementation.

Parameter handling

The base classes provide a wrapper method for parameter registration, which makes handling of parameters more convenient. This is done with the help of the ParameterHandler class, which includes a ParameterBase and a template Parameter<T> nested class for this purpose.

Improvements:

  • The add_on_set_parameters_callback() is called in both of the constructors to register the callback for parameter change requests. This makes sure that the initial values of the parameters are synced from the parameter server.
  • The parameter type is enforced automatically.
  • The registered callback has access over all of the registered parameters, therefore the parameter server and the node is always in sync
  • It is easy to register a callback for additional checks before requested parameter value is accepted.
  • The user can define the lifecycle states, in which parameter changes are allowed using the ParameterSetAccessRights structure.
  • There is a different endpoint for static parameters, which cannot be changed after initialization.

The Parameter<T> class supports the following parameter types (identical to the types supported by rclcpp::Parameter):

  • bool
  • int64_t (or type satisfying std::is_integral except bool)
  • double (or type satisfying std::is_floating_point)
  • std::string
  • std::vector<uint8_t>
  • std::vector<bool>
  • std::vector<int64_t>
  • std::vector<double>
  • std::vector<std::string>

The nodes provide the registerParameter() and registerStaticParameter() endpoints with the following arguments:

  • name [std::string]: name of the parameter
  • value [T]: default value of the parameter

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kuka_drivers_core

0.9.2 (2024-07-10)

  • Fix GCC warning causing unstable build

0.9.1 (2024-07-08)

  • Add missing test dependency

0.9.0 (2024-07-08)

  • Add package with core features necessary for all KUKA drivers
  • Contributors: Aron Svastits, Gergely Kovacs, Mark Szitanics, Sandor Komaromi

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kuka_drivers_core at Robotics Stack Exchange

No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.9.2
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/kroshu/kuka_drivers.git
VCS Type git
VCS Version humble
Last Updated 2025-03-26
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing ROS2 core functions for KUKA robots

Additional Links

No additional links.

Maintainers

  • Aron Svastits
  • Gergely Kovacs
  • Mark Szitanics

Authors

No additional authors.

Core functionalities for the drivers

This package contains two libraries that implement the common functionalities of the 3 kuka drivers to reduce code duplications and make the code more maintainable.

Wrapper methods for specific services

The kuka_drivers_core::communication_helpers is a header-only library providing wrapper methods for commonly used features.

Synchronous service calls

rclcpp does not provide synchronous service calls, this is implemented in the service_tools.hpp

It provides the sendRequest() endpoint with following arguments:

  • client [ClientT]: the initialized service client
  • request [RequestT]: the filled request with appropriate type
  • service_timeout_ms [int] (default: 2000): timeout for service discovery
  • response_timeout_ms [int] (default: 1000): timeout for getting the response

The method returns the service response (as a shared pointer).

Example for calling the ListControllers service of the controller_manager:

rclcpp::Client<controller_manager_msgs::srv::ListControllers>::SharedPtr get_controllers_client_;
auto request = std::make_shared<controller_manager_msgs::srv::ListControllers::Request>();

// [...]

auto response =  kuka_drivers_core::sendRequest<controller_manager_msgs::srv::ListControllers::Response>(get_controllers_client_, request, 0, 1000);

ros2_control state handling

The library also contains the ros2_control_tools.hpp header, which implements wrapper methods for modifying the states of controllers and hardware components.

Endpoints:

The changeHardwareState() can change the state of one hardware component and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr]: initialized client
  • hardware_name` [std::string]: name of the hardware component
  • state [uint8_t of enum]: desired state after state change (only one transition is possible with one call)
  • timeout_ms [int] (default: 1000): timeout for the response

The method returns whether the transition was successful.

The changeControllerState() can change the state of more controllers and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr]: initialized client
  • activate_controllers [std::vector<std::string>]: names of the controllers to activate
  • deactivate_controllers [std::vector<std::string>]: names of the controllers to deactivate
  • strictness [int32_t] (default: STRICT): whether to fail if one state change is unsuccessful

The method returns whether the transitions were successful.

Examples:

rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr change_hardware_state_client_;
rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr change_controller_state_client_;

// [...]

// Activate hardware named 'lbr_iisy3_r760'
bool success1 = changeHardwareState(change_hardware_state_client_, "lbr_iisy3_r760", State::PRIMARY_STATE_ACTIVE);

// Activate 'joint_state_broadcaster' and 'joint_trajectory_controller'
bool success2 = changeControllerState(change_controller_state_client_, {"joint_state_broadcaster", "joint_trajectory_controller"}, {/*nothing to deactivate*/});

Core classes

Base classes with improved parameter handling

There are two core classes implemented in this repository, ROS2BaseNode for improved parameter handling, and ROS2BaseLCNode, which derives from the rclcpp_lifecycle::LifecycleNode class and implements lifecycle state transitions which would be usually implemented in the same way in every case. These are virtual functions, so it is possible to override them in the case of a different desired implementation.

Parameter handling

The base classes provide a wrapper method for parameter registration, which makes handling of parameters more convenient. This is done with the help of the ParameterHandler class, which includes a ParameterBase and a template Parameter<T> nested class for this purpose.

Improvements:

  • The add_on_set_parameters_callback() is called in both of the constructors to register the callback for parameter change requests. This makes sure that the initial values of the parameters are synced from the parameter server.
  • The parameter type is enforced automatically.
  • The registered callback has access over all of the registered parameters, therefore the parameter server and the node is always in sync
  • It is easy to register a callback for additional checks before requested parameter value is accepted.
  • The user can define the lifecycle states, in which parameter changes are allowed using the ParameterSetAccessRights structure.
  • There is a different endpoint for static parameters, which cannot be changed after initialization.

The Parameter<T> class supports the following parameter types (identical to the types supported by rclcpp::Parameter):

  • bool
  • int64_t (or type satisfying std::is_integral except bool)
  • double (or type satisfying std::is_floating_point)
  • std::string
  • std::vector<uint8_t>
  • std::vector<bool>
  • std::vector<int64_t>
  • std::vector<double>
  • std::vector<std::string>

The nodes provide the registerParameter() and registerStaticParameter() endpoints with the following arguments:

  • name [std::string]: name of the parameter
  • value [T]: default value of the parameter

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kuka_drivers_core

0.9.2 (2024-07-10)

  • Fix GCC warning causing unstable build

0.9.1 (2024-07-08)

  • Add missing test dependency

0.9.0 (2024-07-08)

  • Add package with core features necessary for all KUKA drivers
  • Contributors: Aron Svastits, Gergely Kovacs, Mark Szitanics, Sandor Komaromi

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kuka_drivers_core at Robotics Stack Exchange

No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.9.2
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/kroshu/kuka_drivers.git
VCS Type git
VCS Version humble
Last Updated 2025-03-26
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing ROS2 core functions for KUKA robots

Additional Links

No additional links.

Maintainers

  • Aron Svastits
  • Gergely Kovacs
  • Mark Szitanics

Authors

No additional authors.

Core functionalities for the drivers

This package contains two libraries that implement the common functionalities of the 3 kuka drivers to reduce code duplications and make the code more maintainable.

Wrapper methods for specific services

The kuka_drivers_core::communication_helpers is a header-only library providing wrapper methods for commonly used features.

Synchronous service calls

rclcpp does not provide synchronous service calls, this is implemented in the service_tools.hpp

It provides the sendRequest() endpoint with following arguments:

  • client [ClientT]: the initialized service client
  • request [RequestT]: the filled request with appropriate type
  • service_timeout_ms [int] (default: 2000): timeout for service discovery
  • response_timeout_ms [int] (default: 1000): timeout for getting the response

The method returns the service response (as a shared pointer).

Example for calling the ListControllers service of the controller_manager:

rclcpp::Client<controller_manager_msgs::srv::ListControllers>::SharedPtr get_controllers_client_;
auto request = std::make_shared<controller_manager_msgs::srv::ListControllers::Request>();

// [...]

auto response =  kuka_drivers_core::sendRequest<controller_manager_msgs::srv::ListControllers::Response>(get_controllers_client_, request, 0, 1000);

ros2_control state handling

The library also contains the ros2_control_tools.hpp header, which implements wrapper methods for modifying the states of controllers and hardware components.

Endpoints:

The changeHardwareState() can change the state of one hardware component and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr]: initialized client
  • hardware_name` [std::string]: name of the hardware component
  • state [uint8_t of enum]: desired state after state change (only one transition is possible with one call)
  • timeout_ms [int] (default: 1000): timeout for the response

The method returns whether the transition was successful.

The changeControllerState() can change the state of more controllers and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr]: initialized client
  • activate_controllers [std::vector<std::string>]: names of the controllers to activate
  • deactivate_controllers [std::vector<std::string>]: names of the controllers to deactivate
  • strictness [int32_t] (default: STRICT): whether to fail if one state change is unsuccessful

The method returns whether the transitions were successful.

Examples:

rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr change_hardware_state_client_;
rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr change_controller_state_client_;

// [...]

// Activate hardware named 'lbr_iisy3_r760'
bool success1 = changeHardwareState(change_hardware_state_client_, "lbr_iisy3_r760", State::PRIMARY_STATE_ACTIVE);

// Activate 'joint_state_broadcaster' and 'joint_trajectory_controller'
bool success2 = changeControllerState(change_controller_state_client_, {"joint_state_broadcaster", "joint_trajectory_controller"}, {/*nothing to deactivate*/});

Core classes

Base classes with improved parameter handling

There are two core classes implemented in this repository, ROS2BaseNode for improved parameter handling, and ROS2BaseLCNode, which derives from the rclcpp_lifecycle::LifecycleNode class and implements lifecycle state transitions which would be usually implemented in the same way in every case. These are virtual functions, so it is possible to override them in the case of a different desired implementation.

Parameter handling

The base classes provide a wrapper method for parameter registration, which makes handling of parameters more convenient. This is done with the help of the ParameterHandler class, which includes a ParameterBase and a template Parameter<T> nested class for this purpose.

Improvements:

  • The add_on_set_parameters_callback() is called in both of the constructors to register the callback for parameter change requests. This makes sure that the initial values of the parameters are synced from the parameter server.
  • The parameter type is enforced automatically.
  • The registered callback has access over all of the registered parameters, therefore the parameter server and the node is always in sync
  • It is easy to register a callback for additional checks before requested parameter value is accepted.
  • The user can define the lifecycle states, in which parameter changes are allowed using the ParameterSetAccessRights structure.
  • There is a different endpoint for static parameters, which cannot be changed after initialization.

The Parameter<T> class supports the following parameter types (identical to the types supported by rclcpp::Parameter):

  • bool
  • int64_t (or type satisfying std::is_integral except bool)
  • double (or type satisfying std::is_floating_point)
  • std::string
  • std::vector<uint8_t>
  • std::vector<bool>
  • std::vector<int64_t>
  • std::vector<double>
  • std::vector<std::string>

The nodes provide the registerParameter() and registerStaticParameter() endpoints with the following arguments:

  • name [std::string]: name of the parameter
  • value [T]: default value of the parameter

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kuka_drivers_core

0.9.2 (2024-07-10)

  • Fix GCC warning causing unstable build

0.9.1 (2024-07-08)

  • Add missing test dependency

0.9.0 (2024-07-08)

  • Add package with core features necessary for all KUKA drivers
  • Contributors: Aron Svastits, Gergely Kovacs, Mark Szitanics, Sandor Komaromi

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kuka_drivers_core at Robotics Stack Exchange

No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.9.2
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/kroshu/kuka_drivers.git
VCS Type git
VCS Version humble
Last Updated 2025-03-26
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing ROS2 core functions for KUKA robots

Additional Links

No additional links.

Maintainers

  • Aron Svastits
  • Gergely Kovacs
  • Mark Szitanics

Authors

No additional authors.

Core functionalities for the drivers

This package contains two libraries that implement the common functionalities of the 3 kuka drivers to reduce code duplications and make the code more maintainable.

Wrapper methods for specific services

The kuka_drivers_core::communication_helpers is a header-only library providing wrapper methods for commonly used features.

Synchronous service calls

rclcpp does not provide synchronous service calls, this is implemented in the service_tools.hpp

It provides the sendRequest() endpoint with following arguments:

  • client [ClientT]: the initialized service client
  • request [RequestT]: the filled request with appropriate type
  • service_timeout_ms [int] (default: 2000): timeout for service discovery
  • response_timeout_ms [int] (default: 1000): timeout for getting the response

The method returns the service response (as a shared pointer).

Example for calling the ListControllers service of the controller_manager:

rclcpp::Client<controller_manager_msgs::srv::ListControllers>::SharedPtr get_controllers_client_;
auto request = std::make_shared<controller_manager_msgs::srv::ListControllers::Request>();

// [...]

auto response =  kuka_drivers_core::sendRequest<controller_manager_msgs::srv::ListControllers::Response>(get_controllers_client_, request, 0, 1000);

ros2_control state handling

The library also contains the ros2_control_tools.hpp header, which implements wrapper methods for modifying the states of controllers and hardware components.

Endpoints:

The changeHardwareState() can change the state of one hardware component and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr]: initialized client
  • hardware_name` [std::string]: name of the hardware component
  • state [uint8_t of enum]: desired state after state change (only one transition is possible with one call)
  • timeout_ms [int] (default: 1000): timeout for the response

The method returns whether the transition was successful.

The changeControllerState() can change the state of more controllers and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr]: initialized client
  • activate_controllers [std::vector<std::string>]: names of the controllers to activate
  • deactivate_controllers [std::vector<std::string>]: names of the controllers to deactivate
  • strictness [int32_t] (default: STRICT): whether to fail if one state change is unsuccessful

The method returns whether the transitions were successful.

Examples:

rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr change_hardware_state_client_;
rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr change_controller_state_client_;

// [...]

// Activate hardware named 'lbr_iisy3_r760'
bool success1 = changeHardwareState(change_hardware_state_client_, "lbr_iisy3_r760", State::PRIMARY_STATE_ACTIVE);

// Activate 'joint_state_broadcaster' and 'joint_trajectory_controller'
bool success2 = changeControllerState(change_controller_state_client_, {"joint_state_broadcaster", "joint_trajectory_controller"}, {/*nothing to deactivate*/});

Core classes

Base classes with improved parameter handling

There are two core classes implemented in this repository, ROS2BaseNode for improved parameter handling, and ROS2BaseLCNode, which derives from the rclcpp_lifecycle::LifecycleNode class and implements lifecycle state transitions which would be usually implemented in the same way in every case. These are virtual functions, so it is possible to override them in the case of a different desired implementation.

Parameter handling

The base classes provide a wrapper method for parameter registration, which makes handling of parameters more convenient. This is done with the help of the ParameterHandler class, which includes a ParameterBase and a template Parameter<T> nested class for this purpose.

Improvements:

  • The add_on_set_parameters_callback() is called in both of the constructors to register the callback for parameter change requests. This makes sure that the initial values of the parameters are synced from the parameter server.
  • The parameter type is enforced automatically.
  • The registered callback has access over all of the registered parameters, therefore the parameter server and the node is always in sync
  • It is easy to register a callback for additional checks before requested parameter value is accepted.
  • The user can define the lifecycle states, in which parameter changes are allowed using the ParameterSetAccessRights structure.
  • There is a different endpoint for static parameters, which cannot be changed after initialization.

The Parameter<T> class supports the following parameter types (identical to the types supported by rclcpp::Parameter):

  • bool
  • int64_t (or type satisfying std::is_integral except bool)
  • double (or type satisfying std::is_floating_point)
  • std::string
  • std::vector<uint8_t>
  • std::vector<bool>
  • std::vector<int64_t>
  • std::vector<double>
  • std::vector<std::string>

The nodes provide the registerParameter() and registerStaticParameter() endpoints with the following arguments:

  • name [std::string]: name of the parameter
  • value [T]: default value of the parameter

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kuka_drivers_core

0.9.2 (2024-07-10)

  • Fix GCC warning causing unstable build

0.9.1 (2024-07-08)

  • Add missing test dependency

0.9.0 (2024-07-08)

  • Add package with core features necessary for all KUKA drivers
  • Contributors: Aron Svastits, Gergely Kovacs, Mark Szitanics, Sandor Komaromi

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kuka_drivers_core at Robotics Stack Exchange

No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.9.2
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/kroshu/kuka_drivers.git
VCS Type git
VCS Version humble
Last Updated 2025-03-26
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing ROS2 core functions for KUKA robots

Additional Links

No additional links.

Maintainers

  • Aron Svastits
  • Gergely Kovacs
  • Mark Szitanics

Authors

No additional authors.

Core functionalities for the drivers

This package contains two libraries that implement the common functionalities of the 3 kuka drivers to reduce code duplications and make the code more maintainable.

Wrapper methods for specific services

The kuka_drivers_core::communication_helpers is a header-only library providing wrapper methods for commonly used features.

Synchronous service calls

rclcpp does not provide synchronous service calls, this is implemented in the service_tools.hpp

It provides the sendRequest() endpoint with following arguments:

  • client [ClientT]: the initialized service client
  • request [RequestT]: the filled request with appropriate type
  • service_timeout_ms [int] (default: 2000): timeout for service discovery
  • response_timeout_ms [int] (default: 1000): timeout for getting the response

The method returns the service response (as a shared pointer).

Example for calling the ListControllers service of the controller_manager:

rclcpp::Client<controller_manager_msgs::srv::ListControllers>::SharedPtr get_controllers_client_;
auto request = std::make_shared<controller_manager_msgs::srv::ListControllers::Request>();

// [...]

auto response =  kuka_drivers_core::sendRequest<controller_manager_msgs::srv::ListControllers::Response>(get_controllers_client_, request, 0, 1000);

ros2_control state handling

The library also contains the ros2_control_tools.hpp header, which implements wrapper methods for modifying the states of controllers and hardware components.

Endpoints:

The changeHardwareState() can change the state of one hardware component and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr]: initialized client
  • hardware_name` [std::string]: name of the hardware component
  • state [uint8_t of enum]: desired state after state change (only one transition is possible with one call)
  • timeout_ms [int] (default: 1000): timeout for the response

The method returns whether the transition was successful.

The changeControllerState() can change the state of more controllers and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr]: initialized client
  • activate_controllers [std::vector<std::string>]: names of the controllers to activate
  • deactivate_controllers [std::vector<std::string>]: names of the controllers to deactivate
  • strictness [int32_t] (default: STRICT): whether to fail if one state change is unsuccessful

The method returns whether the transitions were successful.

Examples:

rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr change_hardware_state_client_;
rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr change_controller_state_client_;

// [...]

// Activate hardware named 'lbr_iisy3_r760'
bool success1 = changeHardwareState(change_hardware_state_client_, "lbr_iisy3_r760", State::PRIMARY_STATE_ACTIVE);

// Activate 'joint_state_broadcaster' and 'joint_trajectory_controller'
bool success2 = changeControllerState(change_controller_state_client_, {"joint_state_broadcaster", "joint_trajectory_controller"}, {/*nothing to deactivate*/});

Core classes

Base classes with improved parameter handling

There are two core classes implemented in this repository, ROS2BaseNode for improved parameter handling, and ROS2BaseLCNode, which derives from the rclcpp_lifecycle::LifecycleNode class and implements lifecycle state transitions which would be usually implemented in the same way in every case. These are virtual functions, so it is possible to override them in the case of a different desired implementation.

Parameter handling

The base classes provide a wrapper method for parameter registration, which makes handling of parameters more convenient. This is done with the help of the ParameterHandler class, which includes a ParameterBase and a template Parameter<T> nested class for this purpose.

Improvements:

  • The add_on_set_parameters_callback() is called in both of the constructors to register the callback for parameter change requests. This makes sure that the initial values of the parameters are synced from the parameter server.
  • The parameter type is enforced automatically.
  • The registered callback has access over all of the registered parameters, therefore the parameter server and the node is always in sync
  • It is easy to register a callback for additional checks before requested parameter value is accepted.
  • The user can define the lifecycle states, in which parameter changes are allowed using the ParameterSetAccessRights structure.
  • There is a different endpoint for static parameters, which cannot be changed after initialization.

The Parameter<T> class supports the following parameter types (identical to the types supported by rclcpp::Parameter):

  • bool
  • int64_t (or type satisfying std::is_integral except bool)
  • double (or type satisfying std::is_floating_point)
  • std::string
  • std::vector<uint8_t>
  • std::vector<bool>
  • std::vector<int64_t>
  • std::vector<double>
  • std::vector<std::string>

The nodes provide the registerParameter() and registerStaticParameter() endpoints with the following arguments:

  • name [std::string]: name of the parameter
  • value [T]: default value of the parameter

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kuka_drivers_core

0.9.2 (2024-07-10)

  • Fix GCC warning causing unstable build

0.9.1 (2024-07-08)

  • Add missing test dependency

0.9.0 (2024-07-08)

  • Add package with core features necessary for all KUKA drivers
  • Contributors: Aron Svastits, Gergely Kovacs, Mark Szitanics, Sandor Komaromi

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kuka_drivers_core at Robotics Stack Exchange

No version for distro iron showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.9.2
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/kroshu/kuka_drivers.git
VCS Type git
VCS Version humble
Last Updated 2025-03-26
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing ROS2 core functions for KUKA robots

Additional Links

No additional links.

Maintainers

  • Aron Svastits
  • Gergely Kovacs
  • Mark Szitanics

Authors

No additional authors.

Core functionalities for the drivers

This package contains two libraries that implement the common functionalities of the 3 kuka drivers to reduce code duplications and make the code more maintainable.

Wrapper methods for specific services

The kuka_drivers_core::communication_helpers is a header-only library providing wrapper methods for commonly used features.

Synchronous service calls

rclcpp does not provide synchronous service calls, this is implemented in the service_tools.hpp

It provides the sendRequest() endpoint with following arguments:

  • client [ClientT]: the initialized service client
  • request [RequestT]: the filled request with appropriate type
  • service_timeout_ms [int] (default: 2000): timeout for service discovery
  • response_timeout_ms [int] (default: 1000): timeout for getting the response

The method returns the service response (as a shared pointer).

Example for calling the ListControllers service of the controller_manager:

rclcpp::Client<controller_manager_msgs::srv::ListControllers>::SharedPtr get_controllers_client_;
auto request = std::make_shared<controller_manager_msgs::srv::ListControllers::Request>();

// [...]

auto response =  kuka_drivers_core::sendRequest<controller_manager_msgs::srv::ListControllers::Response>(get_controllers_client_, request, 0, 1000);

ros2_control state handling

The library also contains the ros2_control_tools.hpp header, which implements wrapper methods for modifying the states of controllers and hardware components.

Endpoints:

The changeHardwareState() can change the state of one hardware component and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr]: initialized client
  • hardware_name` [std::string]: name of the hardware component
  • state [uint8_t of enum]: desired state after state change (only one transition is possible with one call)
  • timeout_ms [int] (default: 1000): timeout for the response

The method returns whether the transition was successful.

The changeControllerState() can change the state of more controllers and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr]: initialized client
  • activate_controllers [std::vector<std::string>]: names of the controllers to activate
  • deactivate_controllers [std::vector<std::string>]: names of the controllers to deactivate
  • strictness [int32_t] (default: STRICT): whether to fail if one state change is unsuccessful

The method returns whether the transitions were successful.

Examples:

rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr change_hardware_state_client_;
rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr change_controller_state_client_;

// [...]

// Activate hardware named 'lbr_iisy3_r760'
bool success1 = changeHardwareState(change_hardware_state_client_, "lbr_iisy3_r760", State::PRIMARY_STATE_ACTIVE);

// Activate 'joint_state_broadcaster' and 'joint_trajectory_controller'
bool success2 = changeControllerState(change_controller_state_client_, {"joint_state_broadcaster", "joint_trajectory_controller"}, {/*nothing to deactivate*/});

Core classes

Base classes with improved parameter handling

There are two core classes implemented in this repository, ROS2BaseNode for improved parameter handling, and ROS2BaseLCNode, which derives from the rclcpp_lifecycle::LifecycleNode class and implements lifecycle state transitions which would be usually implemented in the same way in every case. These are virtual functions, so it is possible to override them in the case of a different desired implementation.

Parameter handling

The base classes provide a wrapper method for parameter registration, which makes handling of parameters more convenient. This is done with the help of the ParameterHandler class, which includes a ParameterBase and a template Parameter<T> nested class for this purpose.

Improvements:

  • The add_on_set_parameters_callback() is called in both of the constructors to register the callback for parameter change requests. This makes sure that the initial values of the parameters are synced from the parameter server.
  • The parameter type is enforced automatically.
  • The registered callback has access over all of the registered parameters, therefore the parameter server and the node is always in sync
  • It is easy to register a callback for additional checks before requested parameter value is accepted.
  • The user can define the lifecycle states, in which parameter changes are allowed using the ParameterSetAccessRights structure.
  • There is a different endpoint for static parameters, which cannot be changed after initialization.

The Parameter<T> class supports the following parameter types (identical to the types supported by rclcpp::Parameter):

  • bool
  • int64_t (or type satisfying std::is_integral except bool)
  • double (or type satisfying std::is_floating_point)
  • std::string
  • std::vector<uint8_t>
  • std::vector<bool>
  • std::vector<int64_t>
  • std::vector<double>
  • std::vector<std::string>

The nodes provide the registerParameter() and registerStaticParameter() endpoints with the following arguments:

  • name [std::string]: name of the parameter
  • value [T]: default value of the parameter

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kuka_drivers_core

0.9.2 (2024-07-10)

  • Fix GCC warning causing unstable build

0.9.1 (2024-07-08)

  • Add missing test dependency

0.9.0 (2024-07-08)

  • Add package with core features necessary for all KUKA drivers
  • Contributors: Aron Svastits, Gergely Kovacs, Mark Szitanics, Sandor Komaromi

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kuka_drivers_core at Robotics Stack Exchange

No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.9.2
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/kroshu/kuka_drivers.git
VCS Type git
VCS Version humble
Last Updated 2025-03-26
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing ROS2 core functions for KUKA robots

Additional Links

No additional links.

Maintainers

  • Aron Svastits
  • Gergely Kovacs
  • Mark Szitanics

Authors

No additional authors.

Core functionalities for the drivers

This package contains two libraries that implement the common functionalities of the 3 kuka drivers to reduce code duplications and make the code more maintainable.

Wrapper methods for specific services

The kuka_drivers_core::communication_helpers is a header-only library providing wrapper methods for commonly used features.

Synchronous service calls

rclcpp does not provide synchronous service calls, this is implemented in the service_tools.hpp

It provides the sendRequest() endpoint with following arguments:

  • client [ClientT]: the initialized service client
  • request [RequestT]: the filled request with appropriate type
  • service_timeout_ms [int] (default: 2000): timeout for service discovery
  • response_timeout_ms [int] (default: 1000): timeout for getting the response

The method returns the service response (as a shared pointer).

Example for calling the ListControllers service of the controller_manager:

rclcpp::Client<controller_manager_msgs::srv::ListControllers>::SharedPtr get_controllers_client_;
auto request = std::make_shared<controller_manager_msgs::srv::ListControllers::Request>();

// [...]

auto response =  kuka_drivers_core::sendRequest<controller_manager_msgs::srv::ListControllers::Response>(get_controllers_client_, request, 0, 1000);

ros2_control state handling

The library also contains the ros2_control_tools.hpp header, which implements wrapper methods for modifying the states of controllers and hardware components.

Endpoints:

The changeHardwareState() can change the state of one hardware component and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr]: initialized client
  • hardware_name` [std::string]: name of the hardware component
  • state [uint8_t of enum]: desired state after state change (only one transition is possible with one call)
  • timeout_ms [int] (default: 1000): timeout for the response

The method returns whether the transition was successful.

The changeControllerState() can change the state of more controllers and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr]: initialized client
  • activate_controllers [std::vector<std::string>]: names of the controllers to activate
  • deactivate_controllers [std::vector<std::string>]: names of the controllers to deactivate
  • strictness [int32_t] (default: STRICT): whether to fail if one state change is unsuccessful

The method returns whether the transitions were successful.

Examples:

rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr change_hardware_state_client_;
rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr change_controller_state_client_;

// [...]

// Activate hardware named 'lbr_iisy3_r760'
bool success1 = changeHardwareState(change_hardware_state_client_, "lbr_iisy3_r760", State::PRIMARY_STATE_ACTIVE);

// Activate 'joint_state_broadcaster' and 'joint_trajectory_controller'
bool success2 = changeControllerState(change_controller_state_client_, {"joint_state_broadcaster", "joint_trajectory_controller"}, {/*nothing to deactivate*/});

Core classes

Base classes with improved parameter handling

There are two core classes implemented in this repository, ROS2BaseNode for improved parameter handling, and ROS2BaseLCNode, which derives from the rclcpp_lifecycle::LifecycleNode class and implements lifecycle state transitions which would be usually implemented in the same way in every case. These are virtual functions, so it is possible to override them in the case of a different desired implementation.

Parameter handling

The base classes provide a wrapper method for parameter registration, which makes handling of parameters more convenient. This is done with the help of the ParameterHandler class, which includes a ParameterBase and a template Parameter<T> nested class for this purpose.

Improvements:

  • The add_on_set_parameters_callback() is called in both of the constructors to register the callback for parameter change requests. This makes sure that the initial values of the parameters are synced from the parameter server.
  • The parameter type is enforced automatically.
  • The registered callback has access over all of the registered parameters, therefore the parameter server and the node is always in sync
  • It is easy to register a callback for additional checks before requested parameter value is accepted.
  • The user can define the lifecycle states, in which parameter changes are allowed using the ParameterSetAccessRights structure.
  • There is a different endpoint for static parameters, which cannot be changed after initialization.

The Parameter<T> class supports the following parameter types (identical to the types supported by rclcpp::Parameter):

  • bool
  • int64_t (or type satisfying std::is_integral except bool)
  • double (or type satisfying std::is_floating_point)
  • std::string
  • std::vector<uint8_t>
  • std::vector<bool>
  • std::vector<int64_t>
  • std::vector<double>
  • std::vector<std::string>

The nodes provide the registerParameter() and registerStaticParameter() endpoints with the following arguments:

  • name [std::string]: name of the parameter
  • value [T]: default value of the parameter

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kuka_drivers_core

0.9.2 (2024-07-10)

  • Fix GCC warning causing unstable build

0.9.1 (2024-07-08)

  • Add missing test dependency

0.9.0 (2024-07-08)

  • Add package with core features necessary for all KUKA drivers
  • Contributors: Aron Svastits, Gergely Kovacs, Mark Szitanics, Sandor Komaromi

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kuka_drivers_core at Robotics Stack Exchange

No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.9.2
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/kroshu/kuka_drivers.git
VCS Type git
VCS Version humble
Last Updated 2025-03-26
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing ROS2 core functions for KUKA robots

Additional Links

No additional links.

Maintainers

  • Aron Svastits
  • Gergely Kovacs
  • Mark Szitanics

Authors

No additional authors.

Core functionalities for the drivers

This package contains two libraries that implement the common functionalities of the 3 kuka drivers to reduce code duplications and make the code more maintainable.

Wrapper methods for specific services

The kuka_drivers_core::communication_helpers is a header-only library providing wrapper methods for commonly used features.

Synchronous service calls

rclcpp does not provide synchronous service calls, this is implemented in the service_tools.hpp

It provides the sendRequest() endpoint with following arguments:

  • client [ClientT]: the initialized service client
  • request [RequestT]: the filled request with appropriate type
  • service_timeout_ms [int] (default: 2000): timeout for service discovery
  • response_timeout_ms [int] (default: 1000): timeout for getting the response

The method returns the service response (as a shared pointer).

Example for calling the ListControllers service of the controller_manager:

rclcpp::Client<controller_manager_msgs::srv::ListControllers>::SharedPtr get_controllers_client_;
auto request = std::make_shared<controller_manager_msgs::srv::ListControllers::Request>();

// [...]

auto response =  kuka_drivers_core::sendRequest<controller_manager_msgs::srv::ListControllers::Response>(get_controllers_client_, request, 0, 1000);

ros2_control state handling

The library also contains the ros2_control_tools.hpp header, which implements wrapper methods for modifying the states of controllers and hardware components.

Endpoints:

The changeHardwareState() can change the state of one hardware component and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr]: initialized client
  • hardware_name` [std::string]: name of the hardware component
  • state [uint8_t of enum]: desired state after state change (only one transition is possible with one call)
  • timeout_ms [int] (default: 1000): timeout for the response

The method returns whether the transition was successful.

The changeControllerState() can change the state of more controllers and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr]: initialized client
  • activate_controllers [std::vector<std::string>]: names of the controllers to activate
  • deactivate_controllers [std::vector<std::string>]: names of the controllers to deactivate
  • strictness [int32_t] (default: STRICT): whether to fail if one state change is unsuccessful

The method returns whether the transitions were successful.

Examples:

rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr change_hardware_state_client_;
rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr change_controller_state_client_;

// [...]

// Activate hardware named 'lbr_iisy3_r760'
bool success1 = changeHardwareState(change_hardware_state_client_, "lbr_iisy3_r760", State::PRIMARY_STATE_ACTIVE);

// Activate 'joint_state_broadcaster' and 'joint_trajectory_controller'
bool success2 = changeControllerState(change_controller_state_client_, {"joint_state_broadcaster", "joint_trajectory_controller"}, {/*nothing to deactivate*/});

Core classes

Base classes with improved parameter handling

There are two core classes implemented in this repository, ROS2BaseNode for improved parameter handling, and ROS2BaseLCNode, which derives from the rclcpp_lifecycle::LifecycleNode class and implements lifecycle state transitions which would be usually implemented in the same way in every case. These are virtual functions, so it is possible to override them in the case of a different desired implementation.

Parameter handling

The base classes provide a wrapper method for parameter registration, which makes handling of parameters more convenient. This is done with the help of the ParameterHandler class, which includes a ParameterBase and a template Parameter<T> nested class for this purpose.

Improvements:

  • The add_on_set_parameters_callback() is called in both of the constructors to register the callback for parameter change requests. This makes sure that the initial values of the parameters are synced from the parameter server.
  • The parameter type is enforced automatically.
  • The registered callback has access over all of the registered parameters, therefore the parameter server and the node is always in sync
  • It is easy to register a callback for additional checks before requested parameter value is accepted.
  • The user can define the lifecycle states, in which parameter changes are allowed using the ParameterSetAccessRights structure.
  • There is a different endpoint for static parameters, which cannot be changed after initialization.

The Parameter<T> class supports the following parameter types (identical to the types supported by rclcpp::Parameter):

  • bool
  • int64_t (or type satisfying std::is_integral except bool)
  • double (or type satisfying std::is_floating_point)
  • std::string
  • std::vector<uint8_t>
  • std::vector<bool>
  • std::vector<int64_t>
  • std::vector<double>
  • std::vector<std::string>

The nodes provide the registerParameter() and registerStaticParameter() endpoints with the following arguments:

  • name [std::string]: name of the parameter
  • value [T]: default value of the parameter

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kuka_drivers_core

0.9.2 (2024-07-10)

  • Fix GCC warning causing unstable build

0.9.1 (2024-07-08)

  • Add missing test dependency

0.9.0 (2024-07-08)

  • Add package with core features necessary for all KUKA drivers
  • Contributors: Aron Svastits, Gergely Kovacs, Mark Szitanics, Sandor Komaromi

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kuka_drivers_core at Robotics Stack Exchange

No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.9.2
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/kroshu/kuka_drivers.git
VCS Type git
VCS Version humble
Last Updated 2025-03-26
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing ROS2 core functions for KUKA robots

Additional Links

No additional links.

Maintainers

  • Aron Svastits
  • Gergely Kovacs
  • Mark Szitanics

Authors

No additional authors.

Core functionalities for the drivers

This package contains two libraries that implement the common functionalities of the 3 kuka drivers to reduce code duplications and make the code more maintainable.

Wrapper methods for specific services

The kuka_drivers_core::communication_helpers is a header-only library providing wrapper methods for commonly used features.

Synchronous service calls

rclcpp does not provide synchronous service calls, this is implemented in the service_tools.hpp

It provides the sendRequest() endpoint with following arguments:

  • client [ClientT]: the initialized service client
  • request [RequestT]: the filled request with appropriate type
  • service_timeout_ms [int] (default: 2000): timeout for service discovery
  • response_timeout_ms [int] (default: 1000): timeout for getting the response

The method returns the service response (as a shared pointer).

Example for calling the ListControllers service of the controller_manager:

rclcpp::Client<controller_manager_msgs::srv::ListControllers>::SharedPtr get_controllers_client_;
auto request = std::make_shared<controller_manager_msgs::srv::ListControllers::Request>();

// [...]

auto response =  kuka_drivers_core::sendRequest<controller_manager_msgs::srv::ListControllers::Response>(get_controllers_client_, request, 0, 1000);

ros2_control state handling

The library also contains the ros2_control_tools.hpp header, which implements wrapper methods for modifying the states of controllers and hardware components.

Endpoints:

The changeHardwareState() can change the state of one hardware component and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr]: initialized client
  • hardware_name` [std::string]: name of the hardware component
  • state [uint8_t of enum]: desired state after state change (only one transition is possible with one call)
  • timeout_ms [int] (default: 1000): timeout for the response

The method returns whether the transition was successful.

The changeControllerState() can change the state of more controllers and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr]: initialized client
  • activate_controllers [std::vector<std::string>]: names of the controllers to activate
  • deactivate_controllers [std::vector<std::string>]: names of the controllers to deactivate
  • strictness [int32_t] (default: STRICT): whether to fail if one state change is unsuccessful

The method returns whether the transitions were successful.

Examples:

rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr change_hardware_state_client_;
rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr change_controller_state_client_;

// [...]

// Activate hardware named 'lbr_iisy3_r760'
bool success1 = changeHardwareState(change_hardware_state_client_, "lbr_iisy3_r760", State::PRIMARY_STATE_ACTIVE);

// Activate 'joint_state_broadcaster' and 'joint_trajectory_controller'
bool success2 = changeControllerState(change_controller_state_client_, {"joint_state_broadcaster", "joint_trajectory_controller"}, {/*nothing to deactivate*/});

Core classes

Base classes with improved parameter handling

There are two core classes implemented in this repository, ROS2BaseNode for improved parameter handling, and ROS2BaseLCNode, which derives from the rclcpp_lifecycle::LifecycleNode class and implements lifecycle state transitions which would be usually implemented in the same way in every case. These are virtual functions, so it is possible to override them in the case of a different desired implementation.

Parameter handling

The base classes provide a wrapper method for parameter registration, which makes handling of parameters more convenient. This is done with the help of the ParameterHandler class, which includes a ParameterBase and a template Parameter<T> nested class for this purpose.

Improvements:

  • The add_on_set_parameters_callback() is called in both of the constructors to register the callback for parameter change requests. This makes sure that the initial values of the parameters are synced from the parameter server.
  • The parameter type is enforced automatically.
  • The registered callback has access over all of the registered parameters, therefore the parameter server and the node is always in sync
  • It is easy to register a callback for additional checks before requested parameter value is accepted.
  • The user can define the lifecycle states, in which parameter changes are allowed using the ParameterSetAccessRights structure.
  • There is a different endpoint for static parameters, which cannot be changed after initialization.

The Parameter<T> class supports the following parameter types (identical to the types supported by rclcpp::Parameter):

  • bool
  • int64_t (or type satisfying std::is_integral except bool)
  • double (or type satisfying std::is_floating_point)
  • std::string
  • std::vector<uint8_t>
  • std::vector<bool>
  • std::vector<int64_t>
  • std::vector<double>
  • std::vector<std::string>

The nodes provide the registerParameter() and registerStaticParameter() endpoints with the following arguments:

  • name [std::string]: name of the parameter
  • value [T]: default value of the parameter

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kuka_drivers_core

0.9.2 (2024-07-10)

  • Fix GCC warning causing unstable build

0.9.1 (2024-07-08)

  • Add missing test dependency

0.9.0 (2024-07-08)

  • Add package with core features necessary for all KUKA drivers
  • Contributors: Aron Svastits, Gergely Kovacs, Mark Szitanics, Sandor Komaromi

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kuka_drivers_core at Robotics Stack Exchange

No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.9.2
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/kroshu/kuka_drivers.git
VCS Type git
VCS Version humble
Last Updated 2025-03-26
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing ROS2 core functions for KUKA robots

Additional Links

No additional links.

Maintainers

  • Aron Svastits
  • Gergely Kovacs
  • Mark Szitanics

Authors

No additional authors.

Core functionalities for the drivers

This package contains two libraries that implement the common functionalities of the 3 kuka drivers to reduce code duplications and make the code more maintainable.

Wrapper methods for specific services

The kuka_drivers_core::communication_helpers is a header-only library providing wrapper methods for commonly used features.

Synchronous service calls

rclcpp does not provide synchronous service calls, this is implemented in the service_tools.hpp

It provides the sendRequest() endpoint with following arguments:

  • client [ClientT]: the initialized service client
  • request [RequestT]: the filled request with appropriate type
  • service_timeout_ms [int] (default: 2000): timeout for service discovery
  • response_timeout_ms [int] (default: 1000): timeout for getting the response

The method returns the service response (as a shared pointer).

Example for calling the ListControllers service of the controller_manager:

rclcpp::Client<controller_manager_msgs::srv::ListControllers>::SharedPtr get_controllers_client_;
auto request = std::make_shared<controller_manager_msgs::srv::ListControllers::Request>();

// [...]

auto response =  kuka_drivers_core::sendRequest<controller_manager_msgs::srv::ListControllers::Response>(get_controllers_client_, request, 0, 1000);

ros2_control state handling

The library also contains the ros2_control_tools.hpp header, which implements wrapper methods for modifying the states of controllers and hardware components.

Endpoints:

The changeHardwareState() can change the state of one hardware component and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr]: initialized client
  • hardware_name` [std::string]: name of the hardware component
  • state [uint8_t of enum]: desired state after state change (only one transition is possible with one call)
  • timeout_ms [int] (default: 1000): timeout for the response

The method returns whether the transition was successful.

The changeControllerState() can change the state of more controllers and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr]: initialized client
  • activate_controllers [std::vector<std::string>]: names of the controllers to activate
  • deactivate_controllers [std::vector<std::string>]: names of the controllers to deactivate
  • strictness [int32_t] (default: STRICT): whether to fail if one state change is unsuccessful

The method returns whether the transitions were successful.

Examples:

rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr change_hardware_state_client_;
rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr change_controller_state_client_;

// [...]

// Activate hardware named 'lbr_iisy3_r760'
bool success1 = changeHardwareState(change_hardware_state_client_, "lbr_iisy3_r760", State::PRIMARY_STATE_ACTIVE);

// Activate 'joint_state_broadcaster' and 'joint_trajectory_controller'
bool success2 = changeControllerState(change_controller_state_client_, {"joint_state_broadcaster", "joint_trajectory_controller"}, {/*nothing to deactivate*/});

Core classes

Base classes with improved parameter handling

There are two core classes implemented in this repository, ROS2BaseNode for improved parameter handling, and ROS2BaseLCNode, which derives from the rclcpp_lifecycle::LifecycleNode class and implements lifecycle state transitions which would be usually implemented in the same way in every case. These are virtual functions, so it is possible to override them in the case of a different desired implementation.

Parameter handling

The base classes provide a wrapper method for parameter registration, which makes handling of parameters more convenient. This is done with the help of the ParameterHandler class, which includes a ParameterBase and a template Parameter<T> nested class for this purpose.

Improvements:

  • The add_on_set_parameters_callback() is called in both of the constructors to register the callback for parameter change requests. This makes sure that the initial values of the parameters are synced from the parameter server.
  • The parameter type is enforced automatically.
  • The registered callback has access over all of the registered parameters, therefore the parameter server and the node is always in sync
  • It is easy to register a callback for additional checks before requested parameter value is accepted.
  • The user can define the lifecycle states, in which parameter changes are allowed using the ParameterSetAccessRights structure.
  • There is a different endpoint for static parameters, which cannot be changed after initialization.

The Parameter<T> class supports the following parameter types (identical to the types supported by rclcpp::Parameter):

  • bool
  • int64_t (or type satisfying std::is_integral except bool)
  • double (or type satisfying std::is_floating_point)
  • std::string
  • std::vector<uint8_t>
  • std::vector<bool>
  • std::vector<int64_t>
  • std::vector<double>
  • std::vector<std::string>

The nodes provide the registerParameter() and registerStaticParameter() endpoints with the following arguments:

  • name [std::string]: name of the parameter
  • value [T]: default value of the parameter

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kuka_drivers_core

0.9.2 (2024-07-10)

  • Fix GCC warning causing unstable build

0.9.1 (2024-07-08)

  • Add missing test dependency

0.9.0 (2024-07-08)

  • Add package with core features necessary for all KUKA drivers
  • Contributors: Aron Svastits, Gergely Kovacs, Mark Szitanics, Sandor Komaromi

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kuka_drivers_core at Robotics Stack Exchange

No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.9.2
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/kroshu/kuka_drivers.git
VCS Type git
VCS Version humble
Last Updated 2025-03-26
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing ROS2 core functions for KUKA robots

Additional Links

No additional links.

Maintainers

  • Aron Svastits
  • Gergely Kovacs
  • Mark Szitanics

Authors

No additional authors.

Core functionalities for the drivers

This package contains two libraries that implement the common functionalities of the 3 kuka drivers to reduce code duplications and make the code more maintainable.

Wrapper methods for specific services

The kuka_drivers_core::communication_helpers is a header-only library providing wrapper methods for commonly used features.

Synchronous service calls

rclcpp does not provide synchronous service calls, this is implemented in the service_tools.hpp

It provides the sendRequest() endpoint with following arguments:

  • client [ClientT]: the initialized service client
  • request [RequestT]: the filled request with appropriate type
  • service_timeout_ms [int] (default: 2000): timeout for service discovery
  • response_timeout_ms [int] (default: 1000): timeout for getting the response

The method returns the service response (as a shared pointer).

Example for calling the ListControllers service of the controller_manager:

rclcpp::Client<controller_manager_msgs::srv::ListControllers>::SharedPtr get_controllers_client_;
auto request = std::make_shared<controller_manager_msgs::srv::ListControllers::Request>();

// [...]

auto response =  kuka_drivers_core::sendRequest<controller_manager_msgs::srv::ListControllers::Response>(get_controllers_client_, request, 0, 1000);

ros2_control state handling

The library also contains the ros2_control_tools.hpp header, which implements wrapper methods for modifying the states of controllers and hardware components.

Endpoints:

The changeHardwareState() can change the state of one hardware component and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr]: initialized client
  • hardware_name` [std::string]: name of the hardware component
  • state [uint8_t of enum]: desired state after state change (only one transition is possible with one call)
  • timeout_ms [int] (default: 1000): timeout for the response

The method returns whether the transition was successful.

The changeControllerState() can change the state of more controllers and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr]: initialized client
  • activate_controllers [std::vector<std::string>]: names of the controllers to activate
  • deactivate_controllers [std::vector<std::string>]: names of the controllers to deactivate
  • strictness [int32_t] (default: STRICT): whether to fail if one state change is unsuccessful

The method returns whether the transitions were successful.

Examples:

rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr change_hardware_state_client_;
rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr change_controller_state_client_;

// [...]

// Activate hardware named 'lbr_iisy3_r760'
bool success1 = changeHardwareState(change_hardware_state_client_, "lbr_iisy3_r760", State::PRIMARY_STATE_ACTIVE);

// Activate 'joint_state_broadcaster' and 'joint_trajectory_controller'
bool success2 = changeControllerState(change_controller_state_client_, {"joint_state_broadcaster", "joint_trajectory_controller"}, {/*nothing to deactivate*/});

Core classes

Base classes with improved parameter handling

There are two core classes implemented in this repository, ROS2BaseNode for improved parameter handling, and ROS2BaseLCNode, which derives from the rclcpp_lifecycle::LifecycleNode class and implements lifecycle state transitions which would be usually implemented in the same way in every case. These are virtual functions, so it is possible to override them in the case of a different desired implementation.

Parameter handling

The base classes provide a wrapper method for parameter registration, which makes handling of parameters more convenient. This is done with the help of the ParameterHandler class, which includes a ParameterBase and a template Parameter<T> nested class for this purpose.

Improvements:

  • The add_on_set_parameters_callback() is called in both of the constructors to register the callback for parameter change requests. This makes sure that the initial values of the parameters are synced from the parameter server.
  • The parameter type is enforced automatically.
  • The registered callback has access over all of the registered parameters, therefore the parameter server and the node is always in sync
  • It is easy to register a callback for additional checks before requested parameter value is accepted.
  • The user can define the lifecycle states, in which parameter changes are allowed using the ParameterSetAccessRights structure.
  • There is a different endpoint for static parameters, which cannot be changed after initialization.

The Parameter<T> class supports the following parameter types (identical to the types supported by rclcpp::Parameter):

  • bool
  • int64_t (or type satisfying std::is_integral except bool)
  • double (or type satisfying std::is_floating_point)
  • std::string
  • std::vector<uint8_t>
  • std::vector<bool>
  • std::vector<int64_t>
  • std::vector<double>
  • std::vector<std::string>

The nodes provide the registerParameter() and registerStaticParameter() endpoints with the following arguments:

  • name [std::string]: name of the parameter
  • value [T]: default value of the parameter

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kuka_drivers_core

0.9.2 (2024-07-10)

  • Fix GCC warning causing unstable build

0.9.1 (2024-07-08)

  • Add missing test dependency

0.9.0 (2024-07-08)

  • Add package with core features necessary for all KUKA drivers
  • Contributors: Aron Svastits, Gergely Kovacs, Mark Szitanics, Sandor Komaromi

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kuka_drivers_core at Robotics Stack Exchange

No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.9.2
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/kroshu/kuka_drivers.git
VCS Type git
VCS Version humble
Last Updated 2025-03-26
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing ROS2 core functions for KUKA robots

Additional Links

No additional links.

Maintainers

  • Aron Svastits
  • Gergely Kovacs
  • Mark Szitanics

Authors

No additional authors.

Core functionalities for the drivers

This package contains two libraries that implement the common functionalities of the 3 kuka drivers to reduce code duplications and make the code more maintainable.

Wrapper methods for specific services

The kuka_drivers_core::communication_helpers is a header-only library providing wrapper methods for commonly used features.

Synchronous service calls

rclcpp does not provide synchronous service calls, this is implemented in the service_tools.hpp

It provides the sendRequest() endpoint with following arguments:

  • client [ClientT]: the initialized service client
  • request [RequestT]: the filled request with appropriate type
  • service_timeout_ms [int] (default: 2000): timeout for service discovery
  • response_timeout_ms [int] (default: 1000): timeout for getting the response

The method returns the service response (as a shared pointer).

Example for calling the ListControllers service of the controller_manager:

rclcpp::Client<controller_manager_msgs::srv::ListControllers>::SharedPtr get_controllers_client_;
auto request = std::make_shared<controller_manager_msgs::srv::ListControllers::Request>();

// [...]

auto response =  kuka_drivers_core::sendRequest<controller_manager_msgs::srv::ListControllers::Response>(get_controllers_client_, request, 0, 1000);

ros2_control state handling

The library also contains the ros2_control_tools.hpp header, which implements wrapper methods for modifying the states of controllers and hardware components.

Endpoints:

The changeHardwareState() can change the state of one hardware component and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr]: initialized client
  • hardware_name` [std::string]: name of the hardware component
  • state [uint8_t of enum]: desired state after state change (only one transition is possible with one call)
  • timeout_ms [int] (default: 1000): timeout for the response

The method returns whether the transition was successful.

The changeControllerState() can change the state of more controllers and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr]: initialized client
  • activate_controllers [std::vector<std::string>]: names of the controllers to activate
  • deactivate_controllers [std::vector<std::string>]: names of the controllers to deactivate
  • strictness [int32_t] (default: STRICT): whether to fail if one state change is unsuccessful

The method returns whether the transitions were successful.

Examples:

rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr change_hardware_state_client_;
rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr change_controller_state_client_;

// [...]

// Activate hardware named 'lbr_iisy3_r760'
bool success1 = changeHardwareState(change_hardware_state_client_, "lbr_iisy3_r760", State::PRIMARY_STATE_ACTIVE);

// Activate 'joint_state_broadcaster' and 'joint_trajectory_controller'
bool success2 = changeControllerState(change_controller_state_client_, {"joint_state_broadcaster", "joint_trajectory_controller"}, {/*nothing to deactivate*/});

Core classes

Base classes with improved parameter handling

There are two core classes implemented in this repository, ROS2BaseNode for improved parameter handling, and ROS2BaseLCNode, which derives from the rclcpp_lifecycle::LifecycleNode class and implements lifecycle state transitions which would be usually implemented in the same way in every case. These are virtual functions, so it is possible to override them in the case of a different desired implementation.

Parameter handling

The base classes provide a wrapper method for parameter registration, which makes handling of parameters more convenient. This is done with the help of the ParameterHandler class, which includes a ParameterBase and a template Parameter<T> nested class for this purpose.

Improvements:

  • The add_on_set_parameters_callback() is called in both of the constructors to register the callback for parameter change requests. This makes sure that the initial values of the parameters are synced from the parameter server.
  • The parameter type is enforced automatically.
  • The registered callback has access over all of the registered parameters, therefore the parameter server and the node is always in sync
  • It is easy to register a callback for additional checks before requested parameter value is accepted.
  • The user can define the lifecycle states, in which parameter changes are allowed using the ParameterSetAccessRights structure.
  • There is a different endpoint for static parameters, which cannot be changed after initialization.

The Parameter<T> class supports the following parameter types (identical to the types supported by rclcpp::Parameter):

  • bool
  • int64_t (or type satisfying std::is_integral except bool)
  • double (or type satisfying std::is_floating_point)
  • std::string
  • std::vector<uint8_t>
  • std::vector<bool>
  • std::vector<int64_t>
  • std::vector<double>
  • std::vector<std::string>

The nodes provide the registerParameter() and registerStaticParameter() endpoints with the following arguments:

  • name [std::string]: name of the parameter
  • value [T]: default value of the parameter

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kuka_drivers_core

0.9.2 (2024-07-10)

  • Fix GCC warning causing unstable build

0.9.1 (2024-07-08)

  • Add missing test dependency

0.9.0 (2024-07-08)

  • Add package with core features necessary for all KUKA drivers
  • Contributors: Aron Svastits, Gergely Kovacs, Mark Szitanics, Sandor Komaromi

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kuka_drivers_core at Robotics Stack Exchange

No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.9.2
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/kroshu/kuka_drivers.git
VCS Type git
VCS Version humble
Last Updated 2025-03-26
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing ROS2 core functions for KUKA robots

Additional Links

No additional links.

Maintainers

  • Aron Svastits
  • Gergely Kovacs
  • Mark Szitanics

Authors

No additional authors.

Core functionalities for the drivers

This package contains two libraries that implement the common functionalities of the 3 kuka drivers to reduce code duplications and make the code more maintainable.

Wrapper methods for specific services

The kuka_drivers_core::communication_helpers is a header-only library providing wrapper methods for commonly used features.

Synchronous service calls

rclcpp does not provide synchronous service calls, this is implemented in the service_tools.hpp

It provides the sendRequest() endpoint with following arguments:

  • client [ClientT]: the initialized service client
  • request [RequestT]: the filled request with appropriate type
  • service_timeout_ms [int] (default: 2000): timeout for service discovery
  • response_timeout_ms [int] (default: 1000): timeout for getting the response

The method returns the service response (as a shared pointer).

Example for calling the ListControllers service of the controller_manager:

rclcpp::Client<controller_manager_msgs::srv::ListControllers>::SharedPtr get_controllers_client_;
auto request = std::make_shared<controller_manager_msgs::srv::ListControllers::Request>();

// [...]

auto response =  kuka_drivers_core::sendRequest<controller_manager_msgs::srv::ListControllers::Response>(get_controllers_client_, request, 0, 1000);

ros2_control state handling

The library also contains the ros2_control_tools.hpp header, which implements wrapper methods for modifying the states of controllers and hardware components.

Endpoints:

The changeHardwareState() can change the state of one hardware component and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr]: initialized client
  • hardware_name` [std::string]: name of the hardware component
  • state [uint8_t of enum]: desired state after state change (only one transition is possible with one call)
  • timeout_ms [int] (default: 1000): timeout for the response

The method returns whether the transition was successful.

The changeControllerState() can change the state of more controllers and has the following arguments:

  • client [rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr]: initialized client
  • activate_controllers [std::vector<std::string>]: names of the controllers to activate
  • deactivate_controllers [std::vector<std::string>]: names of the controllers to deactivate
  • strictness [int32_t] (default: STRICT): whether to fail if one state change is unsuccessful

The method returns whether the transitions were successful.

Examples:

rclcpp::Client<controller_manager_msgs::srv::SetHardwareComponentState>::SharedPtr change_hardware_state_client_;
rclcpp::Client<controller_manager_msgs::srv::SwitchController>::SharedPtr change_controller_state_client_;

// [...]

// Activate hardware named 'lbr_iisy3_r760'
bool success1 = changeHardwareState(change_hardware_state_client_, "lbr_iisy3_r760", State::PRIMARY_STATE_ACTIVE);

// Activate 'joint_state_broadcaster' and 'joint_trajectory_controller'
bool success2 = changeControllerState(change_controller_state_client_, {"joint_state_broadcaster", "joint_trajectory_controller"}, {/*nothing to deactivate*/});

Core classes

Base classes with improved parameter handling

There are two core classes implemented in this repository, ROS2BaseNode for improved parameter handling, and ROS2BaseLCNode, which derives from the rclcpp_lifecycle::LifecycleNode class and implements lifecycle state transitions which would be usually implemented in the same way in every case. These are virtual functions, so it is possible to override them in the case of a different desired implementation.

Parameter handling

The base classes provide a wrapper method for parameter registration, which makes handling of parameters more convenient. This is done with the help of the ParameterHandler class, which includes a ParameterBase and a template Parameter<T> nested class for this purpose.

Improvements:

  • The add_on_set_parameters_callback() is called in both of the constructors to register the callback for parameter change requests. This makes sure that the initial values of the parameters are synced from the parameter server.
  • The parameter type is enforced automatically.
  • The registered callback has access over all of the registered parameters, therefore the parameter server and the node is always in sync
  • It is easy to register a callback for additional checks before requested parameter value is accepted.
  • The user can define the lifecycle states, in which parameter changes are allowed using the ParameterSetAccessRights structure.
  • There is a different endpoint for static parameters, which cannot be changed after initialization.

The Parameter<T> class supports the following parameter types (identical to the types supported by rclcpp::Parameter):

  • bool
  • int64_t (or type satisfying std::is_integral except bool)
  • double (or type satisfying std::is_floating_point)
  • std::string
  • std::vector<uint8_t>
  • std::vector<bool>
  • std::vector<int64_t>
  • std::vector<double>
  • std::vector<std::string>

The nodes provide the registerParameter() and registerStaticParameter() endpoints with the following arguments:

  • name [std::string]: name of the parameter
  • value [T]: default value of the parameter

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package kuka_drivers_core

0.9.2 (2024-07-10)

  • Fix GCC warning causing unstable build

0.9.1 (2024-07-08)

  • Add missing test dependency

0.9.0 (2024-07-08)

  • Add package with core features necessary for all KUKA drivers
  • Contributors: Aron Svastits, Gergely Kovacs, Mark Szitanics, Sandor Komaromi

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged kuka_drivers_core at Robotics Stack Exchange