cob_gazebo_ros_control package from cob_gazebo_plugins repo

cob_gazebo_plugins cob_gazebo_ros_control

Package Summary

Tags No category tags.
Version 0.7.8
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ipa320/cob_gazebo_plugins.git
VCS Type git
VCS Version kinetic_dev
Last Updated 2024-02-19
Dev Status MAINTAINED
CI status Continuous Integration : 0 / 0
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

This package contains a specialization of the gazebo_ros_control plugin. The cob_gazebo_ros_control plugin allows Multi-HardwareInterface-Support.

Additional Links

Maintainers

  • Felix Messmer

Authors

  • Felix Messmer

Gazebo ros_control Interfaces

This is a ROS package for integrating the ros_control controller architecture with the Gazebo simulator.

This package provides a Gazebo plugin which instantiates a ros_control controller manager and connects it to a Gazebo model.

It extends the default plugin available in gazebo_ros_control.
This plugin has originally been discussed and proposed here.

Besides the features provided by the default gazebo_ros_control plugin, this plugin here adds the following additional features: - Support for HardwareInterface-Switching - Enable joint filtering

NOTE: The control_methods POSITION_PID and VELOCITY_PID are not supported anymore, i.e. PID parameters loaded to the parameter server under namespace /gazebo_ros_control/pid_gains/ are ignored. In case you want to command e.g. positions but want to write efforts to Gazebo, use the effort_controllers/JointPositionController (or similar) and set your PID values thers.


Usage

Documentation related to the default plugin is provided on Gazebo's website.

To use the plugin, add the following to your robot's URDF:

  <gazebo>
    <plugin name="gazebo_ros_control" filename="libhwi_switch_gazebo_ros_control.so">
      <robotNamespace>NAMESPACE</robotNamespace>
    </plugin>
  </gazebo>

The robotNamespace is used as a prefix for the controller_manager instantiated by the plugin.
The tag is optional and will default to global namespace '/' if not set.
In the example above the services will be advertised under /NAMESPACE/controller_manager .
NOTE: Do not use a trailing '/' before NAMESPACE!

You can also use the tags robotParam and controlPeriod as for the default plugin.

The tag robotSimType is ignored and defaults to cob_gazebo_ros_control/HWISwitchRobotHWSim which is a specialized HardwareInterface which is also provided in this package. HWISwitchRobotHWSim derives from DefaultRobotHWSim of the default plugin.

Support for HardwareInterface-Switching

With this plugin, you can now specify multiple HardwareInterfaces for the transmissions of your joints, like this:

    <transmission name="arm_1_trans">
      <type>transmission_interface/SimpleTransmission</type>
      <joint name="arm_1_joint">
        <hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
        <hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface>
      </joint>
      <actuator name="arm_1_motor">
        <mechanicalReduction>1</mechanicalReduction>
      </actuator>
    </transmission>

You can specify any HardwareInterface out of [ PositionJointInterface , VelocityJointInterface , EffortJointInterface ]. The order of does not matter.

Enable joint filtering

The default gazebo_ros_control plugin creates JointHandles for all the joints present in your URDF. In order to only assign a specific set of joints to one plugin - and then use several plugins under different robotNamespaces - you can use the new tag filterJointsParam .

  <gazebo>
    <plugin name="gazebo_ros_control" filename="libhwi_switch_gazebo_ros_control.so">
      <robotNamespace>NAMESPACE</robotNamespace>
      <filterJointsParam>joint_names</filterJointsParam>
    </plugin>
  </gazebo>

The plugin will only create JointHandles given in the list loaded to the parameter server under /NAMESPACE/joint_names . In case the parameter cannot be found, the plugin fails to load.

The joint_names parameter might look like this:

joint_names: [arm_1_joint, arm_2_joint, arm_3_joint, arm_4_joint, arm_5_joint, arm_6_joint, arm_7_joint]


Benefit

This plugin allows to use ros_controllers requiring different HardwareInterfaces within the same gazebo session.
(No need to change the URDF for a different control_mode).

For example:

#position controller
arm_1_joint_position_controller:
  type: position_controllers/JointPositionController
  joint: arm_1_joint

#velocity controller
arm_1_joint_velocity_controller:
  type: velocity_controllers/JointVelocityController
  joint: arm_1_joint

can be loaded to the parameter server (under the NAMESPACE of the controller_manager) and then those two controllers can be switched using the ControllerManagers switch_controller -Service "on-the-fly".

A side-benefit of this is that no "PID-Parameter-Tuning" would be required for simulation anymore, as gazebo supports all the (Standard-)HardwareInterfaces.

CHANGELOG

Changelog for package cob_gazebo_ros_control

0.7.8 (2024-02-19)

0.7.7 (2022-07-29)

0.7.6 (2021-12-23)

0.7.5 (2020-09-26)

  • Merge pull request #47 from fmessmer/test_noetic test noetic
  • Bump CMake version to avoid CMP0048 warning
  • Merge pull request #44 from MatthiasNieuwenhuisen/fix_joint_filtering_segfault Fix wrong array index occuring if using joint filtering
  • Fix wrong array index occuring if using joint filtering
  • Contributors: Felix Messmer, Matthias Nieuwenhuisen, fmessmer

0.7.4 (2020-03-18)

  • Merge pull request #41 from fmessmer/ci_updates [travis] ci updates
  • catkin_lint fixes
  • Merge pull request #40 from fmessmer/fix_warnings fix catkin_package DEPENDS warning
  • fix catkin_package DEPENDS warning
  • Contributors: Felix Messmer, fmessmer

0.7.3 (2019-08-06)

  • Merge pull request #38 from benmaidel/melodic-devel [Melodic]
  • backwards compatibility wrt hardware interface prefix
  • query physics engine type
  • remove obsolete member variable
  • adjust plugin readme
  • fix get simulation time for older gazebo version
  • fix interface_type inference
  • joint_interface should have prefix \'hardware_interface\'
  • fix compilation error
  • Contributors: Benjamin Maidel, Felix Messmer, Shohei Fujii, fmessmer

0.7.2 (2018-01-07)

  • Merge pull request #34 from ipa320/kinetic_release_candidate Kinetic release candidate
  • Merge pull request #32 from ipa-fxm/kinetic_dev [kinetic] updates from indigo_dev
  • Merge branch \'indigo_dev\' of github.com:ipa320/cob_gazebo_plugins into kinetic_dev Conflicts: .travis.yml
  • Merge pull request #31 from ipa-fxm/update_maintainer update maintainer
  • update maintainer
  • Merge pull request #28 from ipa-fxm/APACHE_license use license apache 2.0
  • use license apache 2.0
  • Contributors: Felix Messmer, ipa-fxm, ipa-uhr-mk

0.7.1 (2017-07-17)

  • fix dependencies
  • Contributors: Richard Bormann

0.7.0 (2017-07-17)

  • Merge branch \'indigo_dev\' of github.com:ipa320/cob_gazebo_plugins into multi_distro_travis_kinetic Conflicts: .travis.yml README.md
  • compile with c++11
  • Kinetic and Gazebo > 2, fixed hardware_interface::ControllerInfo API change
  • Contributors: Benjamin Maidel, Dinesh Thakur, ipa-fxm

0.6.6 (2017-07-17)

  • add state_valid behavior
  • add estop behavior
  • manually fix changelog
  • Contributors: ipa-fxm

0.6.5 (2016-10-10)

0.6.4 (2016-04-01)

0.6.3 (2015-08-25)

  • boost revision
  • remove trailing whitespaces
  • migration to package format 2
  • fix missing dependency
  • review dependencies
  • Contributors: ipa-fxm

0.6.2 (2015-06-17)

  • using strict_hwi_switch api
  • more suitable name for plugin
  • beautify CMakeLists
  • use hwi_switch api
  • proper reset of joint limit interface
  • cleanup output
  • Contributors: ipa-fxm

0.6.1 (2014-12-12)

  • Update README.md
  • Update README.md
  • Update README.md
  • Update README.md
  • Update README.md
  • enable joint filtering for multi_hwi_gazebo plugin
  • remove support for X_PID control_methods for simplicity (obsolete anyway)
  • unify ROS STREAM output
  • ignore \'robotSimType\'
  • Update README.md
  • Update README.md
  • add README for new plugin
  • correctly reset all interfaces in doSwitchHWInterface
  • new gazebo_ros_control_plugin supporting multiple hardwareinterfaces and switch on controller_switching
  • Contributors: Felix Messmer, ipa-fxm

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged cob_gazebo_ros_control at Robotics Stack Exchange

cob_gazebo_ros_control package from cob_gazebo_plugins repo

cob_gazebo_plugins cob_gazebo_ros_control

Package Summary

Tags No category tags.
Version 0.6.7
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ipa320/cob_gazebo_plugins.git
VCS Type git
VCS Version indigo_dev
Last Updated 2018-01-07
Dev Status MAINTAINED
CI status Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

This package contains a specialization of the gazebo_ros_control plugin. The cob_gazebo_ros_control plugin allows Multi-HardwareInterface-Support.

Additional Links

Maintainers

  • Felix Messmer

Authors

  • Felix Messmer

Gazebo ros_control Interfaces

This is a ROS package for integrating the ros_control controller architecture with the Gazebo simulator.

This package provides a Gazebo plugin which instantiates a ros_control controller manager and connects it to a Gazebo model.

It extends the default plugin available in gazebo_ros_control.
This plugin has originally been discussed and proposed here.

Besides the features provided by the default gazebo_ros_control plugin, this plugin here adds the following additional features: - Support for HardwareInterface-Switching - Enable joint filtering

NOTE: The control_methods POSITION_PID and VELOCITY_PID are not supported anymore, i.e. PID parameters loaded to the parameter server under namespace /gazebo_ros_control/pid_gains/ are ignored. In case you want to command e.g. positions but want to write efforts to Gazebo, use the effort_controllers/JointPositionController (or similar) and set your PID values thers.


Usage

Documentation related to the default plugin is provided on Gazebo's website.

To use the plugin, add the following to your robot's URDF:

  <gazebo>
    <plugin name="gazebo_ros_control" filename="libhwi_switch_gazebo_ros_control.so">
      <robotNamespace>NAMESPACE</robotNamespace>
    </plugin>
  </gazebo>

The robotNamespace is used as a prefix for the controller_manager instantiated by the plugin.
The tag is optional and will default to global namespace '/' if not set.
In the example above the services will be advertised under /NAMESPACE/controller_manager .
NOTE: Do not use a trailing '/' before NAMESPACE!

You can also use the tags robotParam and controlPeriod as for the default plugin.

The tag robotSimType is ignored and defaults to cob_gazebo_ros_control/HWISwitchRobotHWSim which is a specialized HardwareInterface which is also provided in this package. HWISwitchRobotHWSim derives from DefaultRobotHWSim of the default plugin.

Support for HardwareInterface-Switching

With this plugin, you can now specify multiple HardwareInterfaces for the transmissions of your joints, like this:

    <transmission name="arm_1_trans">
      <type>transmission_interface/SimpleTransmission</type>
      <joint name="arm_1_joint">
        <hardwareInterface>PositionJointInterface</hardwareInterface>
        <hardwareInterface>VelocityJointInterface</hardwareInterface>
      </joint>
      <actuator name="arm_1_motor">
        <mechanicalReduction>1</mechanicalReduction>
      </actuator>
    </transmission>

You can specify any HardwareInterface out of [ PositionJointInterface , VelocityJointInterface , EffortJointInterface ]. The order of does not matter.

Enable joint filtering

The default gazebo_ros_control plugin creates JointHandles for all the joints present in your URDF. In order to only assign a specific set of joints to one plugin - and then use several plugins under different robotNamespaces - you can use the new tag filterJointsParam .

  <gazebo>
    <plugin name="gazebo_ros_control" filename="libhwi_switch_gazebo_ros_control.so">
      <robotNamespace>NAMESPACE</robotNamespace>
      <filterJointsParam>joint_names</filterJointsParam>
    </plugin>
  </gazebo>

The plugin will only create JointHandles given in the list loaded to the parameter server under /NAMESPACE/joint_names . In case the parameter cannot be found, the plugin fails to load.

The joint_names parameter might look like this:

joint_names: [arm_1_joint, arm_2_joint, arm_3_joint, arm_4_joint, arm_5_joint, arm_6_joint, arm_7_joint]


Benefit

This plugin allows to use ros_controllers requiring different HardwareInterfaces within the same gazebo session.
(No need to change the URDF for a different control_mode).

For example:

#position controller
arm_1_joint_position_controller:
  type: position_controllers/JointPositionController
  joint: arm_1_joint

#velocity controller
arm_1_joint_velocity_controller:
  type: velocity_controllers/JointVelocityController
  joint: arm_1_joint

can be loaded to the parameter server (under the NAMESPACE of the controller_manager) and then those two controllers can be switched using the ControllerManagers switch_controller -Service "on-the-fly".

A side-benefit of this is that no "PID-Parameter-Tuning" would be required for simulation anymore, as gazebo supports all the (Standard-)HardwareInterfaces.

CHANGELOG

Changelog for package cob_gazebo_ros_control

0.6.7 (2018-01-07)

  • Merge pull request #33 from ipa320/indigo_release_candidate Indigo release candidate
  • Merge pull request #31 from ipa-fxm/update_maintainer update maintainer
  • update maintainer
  • Merge pull request #28 from ipa-fxm/APACHE_license use license apache 2.0
  • use license apache 2.0
  • Contributors: Felix Messmer, ipa-fxm, ipa-uhr-mk

0.6.6 (2017-07-17)

  • add state_valid behavior
  • add estop behavior
  • manually fix changelog
  • Contributors: ipa-fxm

0.6.5 (2016-10-10)

0.6.4 (2016-04-01)

0.6.3 (2015-08-25)

  • boost revision
  • remove trailing whitespaces
  • migration to package format 2
  • fix missing dependency
  • review dependencies
  • Contributors: ipa-fxm

0.6.2 (2015-06-17)

  • using strict_hwi_switch api
  • more suitable name for plugin
  • beautify CMakeLists
  • use hwi_switch api
  • proper reset of joint limit interface
  • cleanup output
  • Contributors: ipa-fxm

0.6.1 (2014-12-12)

  • Update README.md
  • Update README.md
  • Update README.md
  • Update README.md
  • Update README.md
  • enable joint filtering for multi_hwi_gazebo plugin
  • remove support for X_PID control_methods for simplicity (obsolete anyway)
  • unify ROS STREAM output
  • ignore \'robotSimType\'
  • Update README.md
  • Update README.md
  • add README for new plugin
  • correctly reset all interfaces in doSwitchHWInterface
  • new gazebo_ros_control_plugin supporting multiple hardwareinterfaces and switch on controller_switching
  • Contributors: Felix Messmer, ipa-fxm

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged cob_gazebo_ros_control at Robotics Stack Exchange

cob_gazebo_ros_control package from cob_gazebo_plugins repo

cob_gazebo_plugins cob_gazebo_ros_control

Package Summary

Tags No category tags.
Version 0.7.8
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ipa320/cob_gazebo_plugins.git
VCS Type git
VCS Version kinetic_dev
Last Updated 2024-02-19
Dev Status MAINTAINED
CI status Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

This package contains a specialization of the gazebo_ros_control plugin. The cob_gazebo_ros_control plugin allows Multi-HardwareInterface-Support.

Additional Links

Maintainers

  • Felix Messmer

Authors

  • Felix Messmer

Gazebo ros_control Interfaces

This is a ROS package for integrating the ros_control controller architecture with the Gazebo simulator.

This package provides a Gazebo plugin which instantiates a ros_control controller manager and connects it to a Gazebo model.

It extends the default plugin available in gazebo_ros_control.
This plugin has originally been discussed and proposed here.

Besides the features provided by the default gazebo_ros_control plugin, this plugin here adds the following additional features: - Support for HardwareInterface-Switching - Enable joint filtering

NOTE: The control_methods POSITION_PID and VELOCITY_PID are not supported anymore, i.e. PID parameters loaded to the parameter server under namespace /gazebo_ros_control/pid_gains/ are ignored. In case you want to command e.g. positions but want to write efforts to Gazebo, use the effort_controllers/JointPositionController (or similar) and set your PID values thers.


Usage

Documentation related to the default plugin is provided on Gazebo's website.

To use the plugin, add the following to your robot's URDF:

  <gazebo>
    <plugin name="gazebo_ros_control" filename="libhwi_switch_gazebo_ros_control.so">
      <robotNamespace>NAMESPACE</robotNamespace>
    </plugin>
  </gazebo>

The robotNamespace is used as a prefix for the controller_manager instantiated by the plugin.
The tag is optional and will default to global namespace '/' if not set.
In the example above the services will be advertised under /NAMESPACE/controller_manager .
NOTE: Do not use a trailing '/' before NAMESPACE!

You can also use the tags robotParam and controlPeriod as for the default plugin.

The tag robotSimType is ignored and defaults to cob_gazebo_ros_control/HWISwitchRobotHWSim which is a specialized HardwareInterface which is also provided in this package. HWISwitchRobotHWSim derives from DefaultRobotHWSim of the default plugin.

Support for HardwareInterface-Switching

With this plugin, you can now specify multiple HardwareInterfaces for the transmissions of your joints, like this:

    <transmission name="arm_1_trans">
      <type>transmission_interface/SimpleTransmission</type>
      <joint name="arm_1_joint">
        <hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
        <hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface>
      </joint>
      <actuator name="arm_1_motor">
        <mechanicalReduction>1</mechanicalReduction>
      </actuator>
    </transmission>

You can specify any HardwareInterface out of [ PositionJointInterface , VelocityJointInterface , EffortJointInterface ]. The order of does not matter.

Enable joint filtering

The default gazebo_ros_control plugin creates JointHandles for all the joints present in your URDF. In order to only assign a specific set of joints to one plugin - and then use several plugins under different robotNamespaces - you can use the new tag filterJointsParam .

  <gazebo>
    <plugin name="gazebo_ros_control" filename="libhwi_switch_gazebo_ros_control.so">
      <robotNamespace>NAMESPACE</robotNamespace>
      <filterJointsParam>joint_names</filterJointsParam>
    </plugin>
  </gazebo>

The plugin will only create JointHandles given in the list loaded to the parameter server under /NAMESPACE/joint_names . In case the parameter cannot be found, the plugin fails to load.

The joint_names parameter might look like this:

joint_names: [arm_1_joint, arm_2_joint, arm_3_joint, arm_4_joint, arm_5_joint, arm_6_joint, arm_7_joint]


Benefit

This plugin allows to use ros_controllers requiring different HardwareInterfaces within the same gazebo session.
(No need to change the URDF for a different control_mode).

For example:

#position controller
arm_1_joint_position_controller:
  type: position_controllers/JointPositionController
  joint: arm_1_joint

#velocity controller
arm_1_joint_velocity_controller:
  type: velocity_controllers/JointVelocityController
  joint: arm_1_joint

can be loaded to the parameter server (under the NAMESPACE of the controller_manager) and then those two controllers can be switched using the ControllerManagers switch_controller -Service "on-the-fly".

A side-benefit of this is that no "PID-Parameter-Tuning" would be required for simulation anymore, as gazebo supports all the (Standard-)HardwareInterfaces.

CHANGELOG

Changelog for package cob_gazebo_ros_control

0.7.8 (2024-02-19)

0.7.7 (2022-07-29)

0.7.6 (2021-12-23)

0.7.5 (2020-09-26)

  • Merge pull request #47 from fmessmer/test_noetic test noetic
  • Bump CMake version to avoid CMP0048 warning
  • Merge pull request #44 from MatthiasNieuwenhuisen/fix_joint_filtering_segfault Fix wrong array index occuring if using joint filtering
  • Fix wrong array index occuring if using joint filtering
  • Contributors: Felix Messmer, Matthias Nieuwenhuisen, fmessmer

0.7.4 (2020-03-18)

  • Merge pull request #41 from fmessmer/ci_updates [travis] ci updates
  • catkin_lint fixes
  • Merge pull request #40 from fmessmer/fix_warnings fix catkin_package DEPENDS warning
  • fix catkin_package DEPENDS warning
  • Contributors: Felix Messmer, fmessmer

0.7.3 (2019-08-06)

  • Merge pull request #38 from benmaidel/melodic-devel [Melodic]
  • backwards compatibility wrt hardware interface prefix
  • query physics engine type
  • remove obsolete member variable
  • adjust plugin readme
  • fix get simulation time for older gazebo version
  • fix interface_type inference
  • joint_interface should have prefix \'hardware_interface\'
  • fix compilation error
  • Contributors: Benjamin Maidel, Felix Messmer, Shohei Fujii, fmessmer

0.7.2 (2018-01-07)

  • Merge pull request #34 from ipa320/kinetic_release_candidate Kinetic release candidate
  • Merge pull request #32 from ipa-fxm/kinetic_dev [kinetic] updates from indigo_dev
  • Merge branch \'indigo_dev\' of github.com:ipa320/cob_gazebo_plugins into kinetic_dev Conflicts: .travis.yml
  • Merge pull request #31 from ipa-fxm/update_maintainer update maintainer
  • update maintainer
  • Merge pull request #28 from ipa-fxm/APACHE_license use license apache 2.0
  • use license apache 2.0
  • Contributors: Felix Messmer, ipa-fxm, ipa-uhr-mk

0.7.1 (2017-07-17)

  • fix dependencies
  • Contributors: Richard Bormann

0.7.0 (2017-07-17)

  • Merge branch \'indigo_dev\' of github.com:ipa320/cob_gazebo_plugins into multi_distro_travis_kinetic Conflicts: .travis.yml README.md
  • compile with c++11
  • Kinetic and Gazebo > 2, fixed hardware_interface::ControllerInfo API change
  • Contributors: Benjamin Maidel, Dinesh Thakur, ipa-fxm

0.6.6 (2017-07-17)

  • add state_valid behavior
  • add estop behavior
  • manually fix changelog
  • Contributors: ipa-fxm

0.6.5 (2016-10-10)

0.6.4 (2016-04-01)

0.6.3 (2015-08-25)

  • boost revision
  • remove trailing whitespaces
  • migration to package format 2
  • fix missing dependency
  • review dependencies
  • Contributors: ipa-fxm

0.6.2 (2015-06-17)

  • using strict_hwi_switch api
  • more suitable name for plugin
  • beautify CMakeLists
  • use hwi_switch api
  • proper reset of joint limit interface
  • cleanup output
  • Contributors: ipa-fxm

0.6.1 (2014-12-12)

  • Update README.md
  • Update README.md
  • Update README.md
  • Update README.md
  • Update README.md
  • enable joint filtering for multi_hwi_gazebo plugin
  • remove support for X_PID control_methods for simplicity (obsolete anyway)
  • unify ROS STREAM output
  • ignore \'robotSimType\'
  • Update README.md
  • Update README.md
  • add README for new plugin
  • correctly reset all interfaces in doSwitchHWInterface
  • new gazebo_ros_control_plugin supporting multiple hardwareinterfaces and switch on controller_switching
  • Contributors: Felix Messmer, ipa-fxm

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged cob_gazebo_ros_control at Robotics Stack Exchange

cob_gazebo_ros_control package from cob_gazebo_plugins repo

cob_gazebo_plugins cob_gazebo_ros_control

Package Summary

Tags No category tags.
Version 0.7.8
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ipa320/cob_gazebo_plugins.git
VCS Type git
VCS Version kinetic_dev
Last Updated 2024-02-19
Dev Status MAINTAINED
CI status Continuous Integration : 0 / 0
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

This package contains a specialization of the gazebo_ros_control plugin. The cob_gazebo_ros_control plugin allows Multi-HardwareInterface-Support.

Additional Links

Maintainers

  • Felix Messmer

Authors

  • Felix Messmer

Gazebo ros_control Interfaces

This is a ROS package for integrating the ros_control controller architecture with the Gazebo simulator.

This package provides a Gazebo plugin which instantiates a ros_control controller manager and connects it to a Gazebo model.

It extends the default plugin available in gazebo_ros_control.
This plugin has originally been discussed and proposed here.

Besides the features provided by the default gazebo_ros_control plugin, this plugin here adds the following additional features: - Support for HardwareInterface-Switching - Enable joint filtering

NOTE: The control_methods POSITION_PID and VELOCITY_PID are not supported anymore, i.e. PID parameters loaded to the parameter server under namespace /gazebo_ros_control/pid_gains/ are ignored. In case you want to command e.g. positions but want to write efforts to Gazebo, use the effort_controllers/JointPositionController (or similar) and set your PID values thers.


Usage

Documentation related to the default plugin is provided on Gazebo's website.

To use the plugin, add the following to your robot's URDF:

  <gazebo>
    <plugin name="gazebo_ros_control" filename="libhwi_switch_gazebo_ros_control.so">
      <robotNamespace>NAMESPACE</robotNamespace>
    </plugin>
  </gazebo>

The robotNamespace is used as a prefix for the controller_manager instantiated by the plugin.
The tag is optional and will default to global namespace '/' if not set.
In the example above the services will be advertised under /NAMESPACE/controller_manager .
NOTE: Do not use a trailing '/' before NAMESPACE!

You can also use the tags robotParam and controlPeriod as for the default plugin.

The tag robotSimType is ignored and defaults to cob_gazebo_ros_control/HWISwitchRobotHWSim which is a specialized HardwareInterface which is also provided in this package. HWISwitchRobotHWSim derives from DefaultRobotHWSim of the default plugin.

Support for HardwareInterface-Switching

With this plugin, you can now specify multiple HardwareInterfaces for the transmissions of your joints, like this:

    <transmission name="arm_1_trans">
      <type>transmission_interface/SimpleTransmission</type>
      <joint name="arm_1_joint">
        <hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
        <hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface>
      </joint>
      <actuator name="arm_1_motor">
        <mechanicalReduction>1</mechanicalReduction>
      </actuator>
    </transmission>

You can specify any HardwareInterface out of [ PositionJointInterface , VelocityJointInterface , EffortJointInterface ]. The order of does not matter.

Enable joint filtering

The default gazebo_ros_control plugin creates JointHandles for all the joints present in your URDF. In order to only assign a specific set of joints to one plugin - and then use several plugins under different robotNamespaces - you can use the new tag filterJointsParam .

  <gazebo>
    <plugin name="gazebo_ros_control" filename="libhwi_switch_gazebo_ros_control.so">
      <robotNamespace>NAMESPACE</robotNamespace>
      <filterJointsParam>joint_names</filterJointsParam>
    </plugin>
  </gazebo>

The plugin will only create JointHandles given in the list loaded to the parameter server under /NAMESPACE/joint_names . In case the parameter cannot be found, the plugin fails to load.

The joint_names parameter might look like this:

joint_names: [arm_1_joint, arm_2_joint, arm_3_joint, arm_4_joint, arm_5_joint, arm_6_joint, arm_7_joint]


Benefit

This plugin allows to use ros_controllers requiring different HardwareInterfaces within the same gazebo session.
(No need to change the URDF for a different control_mode).

For example:

#position controller
arm_1_joint_position_controller:
  type: position_controllers/JointPositionController
  joint: arm_1_joint

#velocity controller
arm_1_joint_velocity_controller:
  type: velocity_controllers/JointVelocityController
  joint: arm_1_joint

can be loaded to the parameter server (under the NAMESPACE of the controller_manager) and then those two controllers can be switched using the ControllerManagers switch_controller -Service "on-the-fly".

A side-benefit of this is that no "PID-Parameter-Tuning" would be required for simulation anymore, as gazebo supports all the (Standard-)HardwareInterfaces.

CHANGELOG

Changelog for package cob_gazebo_ros_control

0.7.8 (2024-02-19)

0.7.7 (2022-07-29)

0.7.6 (2021-12-23)

0.7.5 (2020-09-26)

  • Merge pull request #47 from fmessmer/test_noetic test noetic
  • Bump CMake version to avoid CMP0048 warning
  • Merge pull request #44 from MatthiasNieuwenhuisen/fix_joint_filtering_segfault Fix wrong array index occuring if using joint filtering
  • Fix wrong array index occuring if using joint filtering
  • Contributors: Felix Messmer, Matthias Nieuwenhuisen, fmessmer

0.7.4 (2020-03-18)

  • Merge pull request #41 from fmessmer/ci_updates [travis] ci updates
  • catkin_lint fixes
  • Merge pull request #40 from fmessmer/fix_warnings fix catkin_package DEPENDS warning
  • fix catkin_package DEPENDS warning
  • Contributors: Felix Messmer, fmessmer

0.7.3 (2019-08-06)

  • Merge pull request #38 from benmaidel/melodic-devel [Melodic]
  • backwards compatibility wrt hardware interface prefix
  • query physics engine type
  • remove obsolete member variable
  • adjust plugin readme
  • fix get simulation time for older gazebo version
  • fix interface_type inference
  • joint_interface should have prefix \'hardware_interface\'
  • fix compilation error
  • Contributors: Benjamin Maidel, Felix Messmer, Shohei Fujii, fmessmer

0.7.2 (2018-01-07)

  • Merge pull request #34 from ipa320/kinetic_release_candidate Kinetic release candidate
  • Merge pull request #32 from ipa-fxm/kinetic_dev [kinetic] updates from indigo_dev
  • Merge branch \'indigo_dev\' of github.com:ipa320/cob_gazebo_plugins into kinetic_dev Conflicts: .travis.yml
  • Merge pull request #31 from ipa-fxm/update_maintainer update maintainer
  • update maintainer
  • Merge pull request #28 from ipa-fxm/APACHE_license use license apache 2.0
  • use license apache 2.0
  • Contributors: Felix Messmer, ipa-fxm, ipa-uhr-mk

0.7.1 (2017-07-17)

  • fix dependencies
  • Contributors: Richard Bormann

0.7.0 (2017-07-17)

  • Merge branch \'indigo_dev\' of github.com:ipa320/cob_gazebo_plugins into multi_distro_travis_kinetic Conflicts: .travis.yml README.md
  • compile with c++11
  • Kinetic and Gazebo > 2, fixed hardware_interface::ControllerInfo API change
  • Contributors: Benjamin Maidel, Dinesh Thakur, ipa-fxm

0.6.6 (2017-07-17)

  • add state_valid behavior
  • add estop behavior
  • manually fix changelog
  • Contributors: ipa-fxm

0.6.5 (2016-10-10)

0.6.4 (2016-04-01)

0.6.3 (2015-08-25)

  • boost revision
  • remove trailing whitespaces
  • migration to package format 2
  • fix missing dependency
  • review dependencies
  • Contributors: ipa-fxm

0.6.2 (2015-06-17)

  • using strict_hwi_switch api
  • more suitable name for plugin
  • beautify CMakeLists
  • use hwi_switch api
  • proper reset of joint limit interface
  • cleanup output
  • Contributors: ipa-fxm

0.6.1 (2014-12-12)

  • Update README.md
  • Update README.md
  • Update README.md
  • Update README.md
  • Update README.md
  • enable joint filtering for multi_hwi_gazebo plugin
  • remove support for X_PID control_methods for simplicity (obsolete anyway)
  • unify ROS STREAM output
  • ignore \'robotSimType\'
  • Update README.md
  • Update README.md
  • add README for new plugin
  • correctly reset all interfaces in doSwitchHWInterface
  • new gazebo_ros_control_plugin supporting multiple hardwareinterfaces and switch on controller_switching
  • Contributors: Felix Messmer, ipa-fxm

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged cob_gazebo_ros_control at Robotics Stack Exchange