control_toolbox package from control_toolbox repocontrol_toolbox |
|
Package Summary
Tags | No category tags. |
Version | 3.3.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros-controls/control_toolbox.git |
VCS Type | git |
VCS Version | ros2-master |
Last Updated | 2024-11-05 |
Dev Status | MAINTAINED |
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
Additional Links
Maintainers
- Bence Magyar
- Denis Štogl
- Christoph Froehlich
- Sai Kishor Kothakota
Authors
- Melonee Wise
- Sachin Chitta
- John Hsu
control_toolbox
This package contains several C++ classes useful in writing controllers.
See the documentation of ros2_control and release infos on index.ros.org.
Build status
ROS2 Distro | Branch | Build status | Documentation | Released packages
:———: | :—-: | :———-: | :———–: | :—————:
Rolling | ros2-master
|
| API | control_toolbox
Jazzy | ros2-master
| see above | API | control_toolbox
Iron | ros2-master
| see above | API | control_toolbox
Humble | ros2-master
| see above | API | control_toolbox
Publication
If you find this work useful please give credits to the authors by citing:
- S. Chitta, E. Marder-Eppstein, W. Meeussen, V. Pradeep, A. Rodríguez Tsouroukdissian, J. Bohren, D. Coleman, B. Magyar, G. Raiola, M. Lüdtke and E. Fernandez Perdomo “ros_control: A generic and simple control framework for ROS”, The Journal of Open Source Software, 2017. (PDF)
@article{ros_control,
author = {Chitta, Sachin and Marder-Eppstein, Eitan and Meeussen, Wim and Pradeep, Vijay and Rodr{\'i}guez Tsouroukdissian, Adolfo and Bohren, Jonathan and Coleman, David and Magyar, Bence and Raiola, Gennaro and L{\"u}dtke, Mathias and Fern{\'a}ndez Perdomo, Enrique},
title = {ros\_control: A generic and simple control framework for ROS},
journal = {The Journal of Open Source Software},
year = {2017},
doi = {10.21105/joss.00456},
URL = {http://www.theoj.org/joss-papers/joss.00456/10.21105.joss.00456.pdf}
}
Changelog for package control_toolbox
3.3.0 (2024-10-28)
- PID: Improve the API docs and change default value of antiwindup (#202)
- [CI] Specify runner/container images and add Jazzy jobs (#200)
- Add custom rosdoc2 config (#199)
- [CI] Update pre-commit and remove ros-lint (#187)
- Use Eigen CMake target (#190)
- [CI] Use wf from ros2_control_ci for coverage build (#188)
- Contributors: Christoph Fröhlich, dependabot[bot], github-actions[bot]
3.2.0 (2023-12-12)
- [CI] fix source build (#168)
- Bump actions/setup-python from 4 to 5 (#167)
- [CI] Touchups (#166)
- [PID] Update documentation to reflect ROS 2 usage of time (#165)
- Bump actions/checkout from 3 to 4 (#163)
- Bump ros-tooling/setup-ros from 0.6 to 0.7 (#161)
- Add filters structure and lowpass filter (#152)
- Bump codecov/codecov-action from 3.1.2 to 3.1.4 (#160)
- Contributors: Christoph Fröhlich, GuiHome, Patrick Roncagliolo
3.1.0 (2023-04-29)
- Check for i_min <= i_max at initialization (#139)
- Contributors: Christoph Fröhlich
3.0.0 (2023-04-05)
- [PidROS] Enable interpreting prefix as param prefix. (#129)
- Use std::clamp (#140)
- [CI] Fixes and update for branch out (#155)
- Enable subclassing of PID implementation. (#148)
- [CI] Add Humble job (#147)
- Finally update formatting to other repositories convention. (#131)
- [CI] 🔧 Update pre-commit hooks and sync actions to other repositories. (#130)
- Contributors: Bence Magyar, Christoph Fröhlich, Dr. Denis, dependabot[bot]
2.2.0 (2023-02-20)
- Fix overriding of package (#145)
- Various dependabot version bumps
- [CI] Add dependabot configuration to automatically update actions.
- Contributors: Christoph Fröhlich, Dr. Denis, Tyler Weaver, dependabot[bot]
2.1.2 (2022-11-15)
- export missing dependency (#128)
- Contributors: Noel Jiménez García
2.1.1 (2022-11-05)
- Add declaration of parameters in ROSPid.
- Fix namespace collision and parameter_callback problems in PidROS
- Contributors: Aris Synodinos, Denis Štogl
2.1.0 (2022-06-30)
- Fix parameter loading log levels
- Support pass in a precomputed derivative error
- Add getParametersCallbackHandle function
- Add topic_prefix_ to declareParam & setParameter
- Update include/control_toolbox/dither.hpp
- Correct contributing and license files for ament_copyright.
- Added license text file and contributing guidelines, corrected license short identifier.
- Remove build of downstream workspace.
- Update CI config and add pre-commit-config.
- Contributors: Bence Magyar, ChenJun, Denis Štogl, Timon Engelke
2.0.2 (2021-05-25)
- remove unused variables
- Update visibility_control.hpp
- Windows bringup.
- Contributors: Karsten Knese, Sean Yen, Bence Magyar
2.0.1 (2020-08-01)
- Fix dependencies
- Export ament_cmake build type
- Contributors: ahcorde
2.0.0 (2020-07-28)
- Refactor the Pid class to be completely ROS agnostic and added a ROS 2 wrapper
- Avoid crash when the type of the parameter doesn't match
- Added topic_prefix to publisher topic name (#95)
- Created a shared library (#93)
- Aliases not part of the public API are now private
- Removing pid_gains_setter
- Removed unnecessary dependencies
- Cleared empty non virtual destructors
- Removed unused limited proxy variables
- Added pid state real-time publisher
- Removed all references to tinyxml
- Removed tune_pid.py
- Adding missing copyright licenses
- Adapted dither, sine_sweep and sinusoid to ROS2
- Removed dynamic reconfigure completely
- Removed deprecated functions
- Contributors: Alejandro Hernández Cordero, Bence Magyar, James Xu, Jordan Palacios, Shane Loretz, ahcorde
1.17.0 (2019-01-31)
- update anti windup clamping
- update negativeIntegrationAntiwindupTest
- Address catkin_lint issues
- Add executable flag
- convert to package xml format 2
- Remove doc header
- Contributors: Bence Magyar, Cong, Gennaro Raiola
1.16.0 (2017-11-30)
- switched to industrial_ci
- Add control_msgs to CATKIN_DEPENDS.
- Contributors: Bence Magyar, Mathias Luedtke, Mike Purvis
1.15.0 (2016-06-28)
- avoid ABI breaks in PID class
- fix add_dependencies call
- rollback API changes in PID class
- cfg: removed rosbuild support related error handling
- Contributors: Bence Magyar, Igor Napolskikh, ipa-mig
1.14.0 (2016-05-03)
- Fix negative gains issue and add tests; update gains setting through DynamicReconfig
- Add antiwindup and tests to PID controller; rename old behaviour 'clamping'
- Move message to control_toolbox
- Add optional state publishing to PID controller, for logging/debugging/etc
- Fix some typos in comments
- changed the range of dynamic reconfigure to allow negative ones
- Address -Wunused-parameter warnings
- Factor out updatePid as negative calls to computeCommand
- Increasing covergae of PID class test suite.
- Chain calls of computeCommand and updatePid for code reuse
- Contributors: Adolfo Rodriguez Tsouroukdissian, Bence Magyar, Carlos Rosales, Guillaume Walck, Paul Bovbel, VahidAminZ
1.13.2 (2015-05-22)
- CRITICAL BUGFIX: Fix broken PID command computation.
- Contributors: Adolfo Rodriguez Tsouroukdissian, Paul Bovbel
1.13.1 (2015-04-30)
- Improvement in integral contribution implementation. Resolve #32.
- Contributors: Adolfo Rodriguez Tsouroukdissian, Carlos Rosales
1.13.0 (2014-10-31)
- Harmonize pid gain names between rosparam and dynamic_reconfigure
- Read i_clamp_min and i_clamp_max form parameter server - if available
- Contributors: Adolfo Rodriguez Tsouroukdissian, Dave Coleman, ipa-fxm
1.12.1 (2014-06-12)
- Remove broken test code. Hotfix for #18.
- Contributors: Adolfo Rodriguez Tsouroukdissian
1.12.0 (2014-06-12)
- pid: Adding quiet flag to suppress error message
- Contributors: Jonathan Bohren
1.11.0 (2014-05-12)
- Remove rosbuild artifacts
- Cleaned up CMake and removed unnecessary dependencies
- Made default value negative to match valid range
- Fix for i_clamp_min to be negative in dynamic reconfigure
- Fix abs/fabs problem with Clang and libc++
- Contributors: Adolfo Rodriguez Tsouroukdissian, Dave Coleman, Marco Esposito
1.10.4 (2014-02-05)
- Added Travis support
- Renamed manifest.xml so it doesn't break rosdep
- Expanded range of PID and windup gains for certain applications.
- Expanded range of PID and windup gains for certain applications. Lowered default integral and derivative gain
- check for CATKIN_ENABLE_TESTING
- Add some comments to Parameters.cfg
- Add support for dynamic_reconfigure for rosbuild
- Contributors: Austin Hendrix, Dave Coleman, Lukas Bulwahn, Paul Dinh
1.10.3 (2013-08-02)
- Fix bug in copy constructor.
- Contributors: Austin Hendrix
1.10.2 (2013-07-29)
- Fix copy constructor.
- Merge pull request #1 from davetcoleman/hydro-devel Added dynamic reconfigure for PID gains
- Removed const getGains function
- Small fixes
- Compatibility changes for realtime_tools, tweaked getests
- Made realtime_buffer copiable
- Added test for getting/settings gains, copying/assigning pid class
- Removed const read, added copy constructor and print values function
- Added new function getGainsConst that allows one to get the PID gains from a const PID class
- Added realtime_tools as a dependency in package.xml and CMakeLists
- Added realtime buffer to PID, re-ordered functions to more logical order and to match header file
- Fixes per Austin review
- Updated CMakeLists.txt and made fixes per Adolfo
- Merged hydro-devel
- Added dynamic reconfigure for PID gains
- Tests build.
- Contributors: Austin Hendrix, Dave Coleman
1.10.1 (2013-06-26)
- Add dependency on tinyxml.
- Contributors: Austin Hendrix
1.10.0 (2013-06-25)
- Version 1.10.0
- comment format consistentcy
- Fixing comment in pid source code
- Install tune_pid.py under catkin.
- adding install targets
- adding missing manifests
- merging CMakeLists.txt files from rosbuild and catkin
- adding hybrid-buildsystem makefiles
- Merging from master, re-adding manifest.xml files
- using more standard way of depending on gencpp
- Add .gitignore file.
- Fixing library export
- catkinizing, could still be cleaned up
- Fixing doc errors in PID
- Changing @ commands to commands
- Enforcing i_min <= 0 and i_max >= 0 in integral bound parameters, reducing duplicated code
- Merge pull request #14 from bobholmberg/fix-PID-unbounded-i_error Using zero i_gain to turn off integral control did unsavory things.
- Adding alternative name for new pid command computation API
- Fixing merge error
- Merge branch 'fix-pid-backwards-compatibility' into fix-PID-unbounded-i_error
- Removing lie from documentation
- Adding Bob's fixes to the backwards-compatibility API
- Merge branch 'fix-pid-backwards-compatibility' into fix-PID-unbounded-i_error
- bringing back old updatePid function contents
- adding documentation warning
- This makes the internal computations of updatePid() keep the same sign that they did before the API change
- Merge typo
- Resolving conflict from new Pid API
- Merge branch 'master' into test-bad-integral-bounds
- Merge branch 'test-bad-integral-bounds' into fix-PID-unbounded-i_error
- Specifying div-by-zero test, adding other integral term tests
- Merge branch 'test-bad-integral-bounds' into fix-PID-unbounded-i_error
- Adding test to expose Pid class zero-division vulnerability
- If the user did not want integral control and set i_gain to zero, then dividing by i_gain would set i_error to NaN. This is not desired. Instead, replace the use of division to create i_term with direct integration of i_term. Replace private member i_error with i_term. In getCurrentPIDErrors() create & return i_error with the same old meaning and units. NOTE: i_error is not needed internally anywhere else.
- Cleaning up documentation, making argument names in function declaration match those in the implementation
- adding doxygen deprecation flags
- Fixing documentation
- Merging changes from other branch
- Adding conventional PID computation
- Fixing inconsistent formatting, and reducing some duplicated code
- remove .svn folder
- move control_toolbox into ros_control
- Contributors: Adolfo Rodriguez Tsouroukdissian, Austin Hendrix, Bob Holmberg, Jonathan Bohren, Wim Meeussen, wmeeusse
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_gmock | |
ament_cmake_gtest | |
rclcpp_lifecycle | |
control_msgs | |
filters | |
generate_parameter_library | |
geometry_msgs | |
pluginlib | |
rclcpp | |
rcutils | |
realtime_tools |
System Dependencies
Name |
---|
eigen |
Launch files
Messages
Services
Plugins
Recent questions tagged control_toolbox at Robotics Stack Exchange
control_toolbox package from control_toolbox repocontrol_toolbox |
|
Package Summary
Tags | No category tags. |
Version | 3.3.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros-controls/control_toolbox.git |
VCS Type | git |
VCS Version | ros2-master |
Last Updated | 2024-11-05 |
Dev Status | MAINTAINED |
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
Additional Links
Maintainers
- Bence Magyar
- Denis Štogl
- Christoph Froehlich
- Sai Kishor Kothakota
Authors
- Melonee Wise
- Sachin Chitta
- John Hsu
control_toolbox
This package contains several C++ classes useful in writing controllers.
See the documentation of ros2_control and release infos on index.ros.org.
Build status
ROS2 Distro | Branch | Build status | Documentation | Released packages
:———: | :—-: | :———-: | :———–: | :—————:
Rolling | ros2-master
|
| API | control_toolbox
Jazzy | ros2-master
| see above | API | control_toolbox
Iron | ros2-master
| see above | API | control_toolbox
Humble | ros2-master
| see above | API | control_toolbox
Publication
If you find this work useful please give credits to the authors by citing:
- S. Chitta, E. Marder-Eppstein, W. Meeussen, V. Pradeep, A. Rodríguez Tsouroukdissian, J. Bohren, D. Coleman, B. Magyar, G. Raiola, M. Lüdtke and E. Fernandez Perdomo “ros_control: A generic and simple control framework for ROS”, The Journal of Open Source Software, 2017. (PDF)
@article{ros_control,
author = {Chitta, Sachin and Marder-Eppstein, Eitan and Meeussen, Wim and Pradeep, Vijay and Rodr{\'i}guez Tsouroukdissian, Adolfo and Bohren, Jonathan and Coleman, David and Magyar, Bence and Raiola, Gennaro and L{\"u}dtke, Mathias and Fern{\'a}ndez Perdomo, Enrique},
title = {ros\_control: A generic and simple control framework for ROS},
journal = {The Journal of Open Source Software},
year = {2017},
doi = {10.21105/joss.00456},
URL = {http://www.theoj.org/joss-papers/joss.00456/10.21105.joss.00456.pdf}
}
Changelog for package control_toolbox
3.3.0 (2024-10-28)
- PID: Improve the API docs and change default value of antiwindup (#202)
- [CI] Specify runner/container images and add Jazzy jobs (#200)
- Add custom rosdoc2 config (#199)
- [CI] Update pre-commit and remove ros-lint (#187)
- Use Eigen CMake target (#190)
- [CI] Use wf from ros2_control_ci for coverage build (#188)
- Contributors: Christoph Fröhlich, dependabot[bot], github-actions[bot]
3.2.0 (2023-12-12)
- [CI] fix source build (#168)
- Bump actions/setup-python from 4 to 5 (#167)
- [CI] Touchups (#166)
- [PID] Update documentation to reflect ROS 2 usage of time (#165)
- Bump actions/checkout from 3 to 4 (#163)
- Bump ros-tooling/setup-ros from 0.6 to 0.7 (#161)
- Add filters structure and lowpass filter (#152)
- Bump codecov/codecov-action from 3.1.2 to 3.1.4 (#160)
- Contributors: Christoph Fröhlich, GuiHome, Patrick Roncagliolo
3.1.0 (2023-04-29)
- Check for i_min <= i_max at initialization (#139)
- Contributors: Christoph Fröhlich
3.0.0 (2023-04-05)
- [PidROS] Enable interpreting prefix as param prefix. (#129)
- Use std::clamp (#140)
- [CI] Fixes and update for branch out (#155)
- Enable subclassing of PID implementation. (#148)
- [CI] Add Humble job (#147)
- Finally update formatting to other repositories convention. (#131)
- [CI] 🔧 Update pre-commit hooks and sync actions to other repositories. (#130)
- Contributors: Bence Magyar, Christoph Fröhlich, Dr. Denis, dependabot[bot]
2.2.0 (2023-02-20)
- Fix overriding of package (#145)
- Various dependabot version bumps
- [CI] Add dependabot configuration to automatically update actions.
- Contributors: Christoph Fröhlich, Dr. Denis, Tyler Weaver, dependabot[bot]
2.1.2 (2022-11-15)
- export missing dependency (#128)
- Contributors: Noel Jiménez García
2.1.1 (2022-11-05)
- Add declaration of parameters in ROSPid.
- Fix namespace collision and parameter_callback problems in PidROS
- Contributors: Aris Synodinos, Denis Štogl
2.1.0 (2022-06-30)
- Fix parameter loading log levels
- Support pass in a precomputed derivative error
- Add getParametersCallbackHandle function
- Add topic_prefix_ to declareParam & setParameter
- Update include/control_toolbox/dither.hpp
- Correct contributing and license files for ament_copyright.
- Added license text file and contributing guidelines, corrected license short identifier.
- Remove build of downstream workspace.
- Update CI config and add pre-commit-config.
- Contributors: Bence Magyar, ChenJun, Denis Štogl, Timon Engelke
2.0.2 (2021-05-25)
- remove unused variables
- Update visibility_control.hpp
- Windows bringup.
- Contributors: Karsten Knese, Sean Yen, Bence Magyar
2.0.1 (2020-08-01)
- Fix dependencies
- Export ament_cmake build type
- Contributors: ahcorde
2.0.0 (2020-07-28)
- Refactor the Pid class to be completely ROS agnostic and added a ROS 2 wrapper
- Avoid crash when the type of the parameter doesn't match
- Added topic_prefix to publisher topic name (#95)
- Created a shared library (#93)
- Aliases not part of the public API are now private
- Removing pid_gains_setter
- Removed unnecessary dependencies
- Cleared empty non virtual destructors
- Removed unused limited proxy variables
- Added pid state real-time publisher
- Removed all references to tinyxml
- Removed tune_pid.py
- Adding missing copyright licenses
- Adapted dither, sine_sweep and sinusoid to ROS2
- Removed dynamic reconfigure completely
- Removed deprecated functions
- Contributors: Alejandro Hernández Cordero, Bence Magyar, James Xu, Jordan Palacios, Shane Loretz, ahcorde
1.17.0 (2019-01-31)
- update anti windup clamping
- update negativeIntegrationAntiwindupTest
- Address catkin_lint issues
- Add executable flag
- convert to package xml format 2
- Remove doc header
- Contributors: Bence Magyar, Cong, Gennaro Raiola
1.16.0 (2017-11-30)
- switched to industrial_ci
- Add control_msgs to CATKIN_DEPENDS.
- Contributors: Bence Magyar, Mathias Luedtke, Mike Purvis
1.15.0 (2016-06-28)
- avoid ABI breaks in PID class
- fix add_dependencies call
- rollback API changes in PID class
- cfg: removed rosbuild support related error handling
- Contributors: Bence Magyar, Igor Napolskikh, ipa-mig
1.14.0 (2016-05-03)
- Fix negative gains issue and add tests; update gains setting through DynamicReconfig
- Add antiwindup and tests to PID controller; rename old behaviour 'clamping'
- Move message to control_toolbox
- Add optional state publishing to PID controller, for logging/debugging/etc
- Fix some typos in comments
- changed the range of dynamic reconfigure to allow negative ones
- Address -Wunused-parameter warnings
- Factor out updatePid as negative calls to computeCommand
- Increasing covergae of PID class test suite.
- Chain calls of computeCommand and updatePid for code reuse
- Contributors: Adolfo Rodriguez Tsouroukdissian, Bence Magyar, Carlos Rosales, Guillaume Walck, Paul Bovbel, VahidAminZ
1.13.2 (2015-05-22)
- CRITICAL BUGFIX: Fix broken PID command computation.
- Contributors: Adolfo Rodriguez Tsouroukdissian, Paul Bovbel
1.13.1 (2015-04-30)
- Improvement in integral contribution implementation. Resolve #32.
- Contributors: Adolfo Rodriguez Tsouroukdissian, Carlos Rosales
1.13.0 (2014-10-31)
- Harmonize pid gain names between rosparam and dynamic_reconfigure
- Read i_clamp_min and i_clamp_max form parameter server - if available
- Contributors: Adolfo Rodriguez Tsouroukdissian, Dave Coleman, ipa-fxm
1.12.1 (2014-06-12)
- Remove broken test code. Hotfix for #18.
- Contributors: Adolfo Rodriguez Tsouroukdissian
1.12.0 (2014-06-12)
- pid: Adding quiet flag to suppress error message
- Contributors: Jonathan Bohren
1.11.0 (2014-05-12)
- Remove rosbuild artifacts
- Cleaned up CMake and removed unnecessary dependencies
- Made default value negative to match valid range
- Fix for i_clamp_min to be negative in dynamic reconfigure
- Fix abs/fabs problem with Clang and libc++
- Contributors: Adolfo Rodriguez Tsouroukdissian, Dave Coleman, Marco Esposito
1.10.4 (2014-02-05)
- Added Travis support
- Renamed manifest.xml so it doesn't break rosdep
- Expanded range of PID and windup gains for certain applications.
- Expanded range of PID and windup gains for certain applications. Lowered default integral and derivative gain
- check for CATKIN_ENABLE_TESTING
- Add some comments to Parameters.cfg
- Add support for dynamic_reconfigure for rosbuild
- Contributors: Austin Hendrix, Dave Coleman, Lukas Bulwahn, Paul Dinh
1.10.3 (2013-08-02)
- Fix bug in copy constructor.
- Contributors: Austin Hendrix
1.10.2 (2013-07-29)
- Fix copy constructor.
- Merge pull request #1 from davetcoleman/hydro-devel Added dynamic reconfigure for PID gains
- Removed const getGains function
- Small fixes
- Compatibility changes for realtime_tools, tweaked getests
- Made realtime_buffer copiable
- Added test for getting/settings gains, copying/assigning pid class
- Removed const read, added copy constructor and print values function
- Added new function getGainsConst that allows one to get the PID gains from a const PID class
- Added realtime_tools as a dependency in package.xml and CMakeLists
- Added realtime buffer to PID, re-ordered functions to more logical order and to match header file
- Fixes per Austin review
- Updated CMakeLists.txt and made fixes per Adolfo
- Merged hydro-devel
- Added dynamic reconfigure for PID gains
- Tests build.
- Contributors: Austin Hendrix, Dave Coleman
1.10.1 (2013-06-26)
- Add dependency on tinyxml.
- Contributors: Austin Hendrix
1.10.0 (2013-06-25)
- Version 1.10.0
- comment format consistentcy
- Fixing comment in pid source code
- Install tune_pid.py under catkin.
- adding install targets
- adding missing manifests
- merging CMakeLists.txt files from rosbuild and catkin
- adding hybrid-buildsystem makefiles
- Merging from master, re-adding manifest.xml files
- using more standard way of depending on gencpp
- Add .gitignore file.
- Fixing library export
- catkinizing, could still be cleaned up
- Fixing doc errors in PID
- Changing @ commands to commands
- Enforcing i_min <= 0 and i_max >= 0 in integral bound parameters, reducing duplicated code
- Merge pull request #14 from bobholmberg/fix-PID-unbounded-i_error Using zero i_gain to turn off integral control did unsavory things.
- Adding alternative name for new pid command computation API
- Fixing merge error
- Merge branch 'fix-pid-backwards-compatibility' into fix-PID-unbounded-i_error
- Removing lie from documentation
- Adding Bob's fixes to the backwards-compatibility API
- Merge branch 'fix-pid-backwards-compatibility' into fix-PID-unbounded-i_error
- bringing back old updatePid function contents
- adding documentation warning
- This makes the internal computations of updatePid() keep the same sign that they did before the API change
- Merge typo
- Resolving conflict from new Pid API
- Merge branch 'master' into test-bad-integral-bounds
- Merge branch 'test-bad-integral-bounds' into fix-PID-unbounded-i_error
- Specifying div-by-zero test, adding other integral term tests
- Merge branch 'test-bad-integral-bounds' into fix-PID-unbounded-i_error
- Adding test to expose Pid class zero-division vulnerability
- If the user did not want integral control and set i_gain to zero, then dividing by i_gain would set i_error to NaN. This is not desired. Instead, replace the use of division to create i_term with direct integration of i_term. Replace private member i_error with i_term. In getCurrentPIDErrors() create & return i_error with the same old meaning and units. NOTE: i_error is not needed internally anywhere else.
- Cleaning up documentation, making argument names in function declaration match those in the implementation
- adding doxygen deprecation flags
- Fixing documentation
- Merging changes from other branch
- Adding conventional PID computation
- Fixing inconsistent formatting, and reducing some duplicated code
- remove .svn folder
- move control_toolbox into ros_control
- Contributors: Adolfo Rodriguez Tsouroukdissian, Austin Hendrix, Bob Holmberg, Jonathan Bohren, Wim Meeussen, wmeeusse
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_gmock | |
ament_cmake_gtest | |
rclcpp_lifecycle | |
control_msgs | |
filters | |
generate_parameter_library | |
geometry_msgs | |
pluginlib | |
rclcpp | |
rcutils | |
realtime_tools |
System Dependencies
Name |
---|
eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged control_toolbox at Robotics Stack Exchange
control_toolbox package from control_toolbox repocontrol_toolbox |
|
Package Summary
Tags | No category tags. |
Version | 3.3.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros-controls/control_toolbox.git |
VCS Type | git |
VCS Version | ros2-master |
Last Updated | 2024-11-05 |
Dev Status | MAINTAINED |
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
Additional Links
Maintainers
- Bence Magyar
- Denis Štogl
- Christoph Froehlich
- Sai Kishor Kothakota
Authors
- Melonee Wise
- Sachin Chitta
- John Hsu
control_toolbox
This package contains several C++ classes useful in writing controllers.
See the documentation of ros2_control and release infos on index.ros.org.
Build status
ROS2 Distro | Branch | Build status | Documentation | Released packages
:———: | :—-: | :———-: | :———–: | :—————:
Rolling | ros2-master
|
| API | control_toolbox
Jazzy | ros2-master
| see above | API | control_toolbox
Iron | ros2-master
| see above | API | control_toolbox
Humble | ros2-master
| see above | API | control_toolbox
Publication
If you find this work useful please give credits to the authors by citing:
- S. Chitta, E. Marder-Eppstein, W. Meeussen, V. Pradeep, A. Rodríguez Tsouroukdissian, J. Bohren, D. Coleman, B. Magyar, G. Raiola, M. Lüdtke and E. Fernandez Perdomo “ros_control: A generic and simple control framework for ROS”, The Journal of Open Source Software, 2017. (PDF)
@article{ros_control,
author = {Chitta, Sachin and Marder-Eppstein, Eitan and Meeussen, Wim and Pradeep, Vijay and Rodr{\'i}guez Tsouroukdissian, Adolfo and Bohren, Jonathan and Coleman, David and Magyar, Bence and Raiola, Gennaro and L{\"u}dtke, Mathias and Fern{\'a}ndez Perdomo, Enrique},
title = {ros\_control: A generic and simple control framework for ROS},
journal = {The Journal of Open Source Software},
year = {2017},
doi = {10.21105/joss.00456},
URL = {http://www.theoj.org/joss-papers/joss.00456/10.21105.joss.00456.pdf}
}
Changelog for package control_toolbox
3.3.0 (2024-10-28)
- PID: Improve the API docs and change default value of antiwindup (#202)
- [CI] Specify runner/container images and add Jazzy jobs (#200)
- Add custom rosdoc2 config (#199)
- [CI] Update pre-commit and remove ros-lint (#187)
- Use Eigen CMake target (#190)
- [CI] Use wf from ros2_control_ci for coverage build (#188)
- Contributors: Christoph Fröhlich, dependabot[bot], github-actions[bot]
3.2.0 (2023-12-12)
- [CI] fix source build (#168)
- Bump actions/setup-python from 4 to 5 (#167)
- [CI] Touchups (#166)
- [PID] Update documentation to reflect ROS 2 usage of time (#165)
- Bump actions/checkout from 3 to 4 (#163)
- Bump ros-tooling/setup-ros from 0.6 to 0.7 (#161)
- Add filters structure and lowpass filter (#152)
- Bump codecov/codecov-action from 3.1.2 to 3.1.4 (#160)
- Contributors: Christoph Fröhlich, GuiHome, Patrick Roncagliolo
3.1.0 (2023-04-29)
- Check for i_min <= i_max at initialization (#139)
- Contributors: Christoph Fröhlich
3.0.0 (2023-04-05)
- [PidROS] Enable interpreting prefix as param prefix. (#129)
- Use std::clamp (#140)
- [CI] Fixes and update for branch out (#155)
- Enable subclassing of PID implementation. (#148)
- [CI] Add Humble job (#147)
- Finally update formatting to other repositories convention. (#131)
- [CI] 🔧 Update pre-commit hooks and sync actions to other repositories. (#130)
- Contributors: Bence Magyar, Christoph Fröhlich, Dr. Denis, dependabot[bot]
2.2.0 (2023-02-20)
- Fix overriding of package (#145)
- Various dependabot version bumps
- [CI] Add dependabot configuration to automatically update actions.
- Contributors: Christoph Fröhlich, Dr. Denis, Tyler Weaver, dependabot[bot]
2.1.2 (2022-11-15)
- export missing dependency (#128)
- Contributors: Noel Jiménez García
2.1.1 (2022-11-05)
- Add declaration of parameters in ROSPid.
- Fix namespace collision and parameter_callback problems in PidROS
- Contributors: Aris Synodinos, Denis Štogl
2.1.0 (2022-06-30)
- Fix parameter loading log levels
- Support pass in a precomputed derivative error
- Add getParametersCallbackHandle function
- Add topic_prefix_ to declareParam & setParameter
- Update include/control_toolbox/dither.hpp
- Correct contributing and license files for ament_copyright.
- Added license text file and contributing guidelines, corrected license short identifier.
- Remove build of downstream workspace.
- Update CI config and add pre-commit-config.
- Contributors: Bence Magyar, ChenJun, Denis Štogl, Timon Engelke
2.0.2 (2021-05-25)
- remove unused variables
- Update visibility_control.hpp
- Windows bringup.
- Contributors: Karsten Knese, Sean Yen, Bence Magyar
2.0.1 (2020-08-01)
- Fix dependencies
- Export ament_cmake build type
- Contributors: ahcorde
2.0.0 (2020-07-28)
- Refactor the Pid class to be completely ROS agnostic and added a ROS 2 wrapper
- Avoid crash when the type of the parameter doesn't match
- Added topic_prefix to publisher topic name (#95)
- Created a shared library (#93)
- Aliases not part of the public API are now private
- Removing pid_gains_setter
- Removed unnecessary dependencies
- Cleared empty non virtual destructors
- Removed unused limited proxy variables
- Added pid state real-time publisher
- Removed all references to tinyxml
- Removed tune_pid.py
- Adding missing copyright licenses
- Adapted dither, sine_sweep and sinusoid to ROS2
- Removed dynamic reconfigure completely
- Removed deprecated functions
- Contributors: Alejandro Hernández Cordero, Bence Magyar, James Xu, Jordan Palacios, Shane Loretz, ahcorde
1.17.0 (2019-01-31)
- update anti windup clamping
- update negativeIntegrationAntiwindupTest
- Address catkin_lint issues
- Add executable flag
- convert to package xml format 2
- Remove doc header
- Contributors: Bence Magyar, Cong, Gennaro Raiola
1.16.0 (2017-11-30)
- switched to industrial_ci
- Add control_msgs to CATKIN_DEPENDS.
- Contributors: Bence Magyar, Mathias Luedtke, Mike Purvis
1.15.0 (2016-06-28)
- avoid ABI breaks in PID class
- fix add_dependencies call
- rollback API changes in PID class
- cfg: removed rosbuild support related error handling
- Contributors: Bence Magyar, Igor Napolskikh, ipa-mig
1.14.0 (2016-05-03)
- Fix negative gains issue and add tests; update gains setting through DynamicReconfig
- Add antiwindup and tests to PID controller; rename old behaviour 'clamping'
- Move message to control_toolbox
- Add optional state publishing to PID controller, for logging/debugging/etc
- Fix some typos in comments
- changed the range of dynamic reconfigure to allow negative ones
- Address -Wunused-parameter warnings
- Factor out updatePid as negative calls to computeCommand
- Increasing covergae of PID class test suite.
- Chain calls of computeCommand and updatePid for code reuse
- Contributors: Adolfo Rodriguez Tsouroukdissian, Bence Magyar, Carlos Rosales, Guillaume Walck, Paul Bovbel, VahidAminZ
1.13.2 (2015-05-22)
- CRITICAL BUGFIX: Fix broken PID command computation.
- Contributors: Adolfo Rodriguez Tsouroukdissian, Paul Bovbel
1.13.1 (2015-04-30)
- Improvement in integral contribution implementation. Resolve #32.
- Contributors: Adolfo Rodriguez Tsouroukdissian, Carlos Rosales
1.13.0 (2014-10-31)
- Harmonize pid gain names between rosparam and dynamic_reconfigure
- Read i_clamp_min and i_clamp_max form parameter server - if available
- Contributors: Adolfo Rodriguez Tsouroukdissian, Dave Coleman, ipa-fxm
1.12.1 (2014-06-12)
- Remove broken test code. Hotfix for #18.
- Contributors: Adolfo Rodriguez Tsouroukdissian
1.12.0 (2014-06-12)
- pid: Adding quiet flag to suppress error message
- Contributors: Jonathan Bohren
1.11.0 (2014-05-12)
- Remove rosbuild artifacts
- Cleaned up CMake and removed unnecessary dependencies
- Made default value negative to match valid range
- Fix for i_clamp_min to be negative in dynamic reconfigure
- Fix abs/fabs problem with Clang and libc++
- Contributors: Adolfo Rodriguez Tsouroukdissian, Dave Coleman, Marco Esposito
1.10.4 (2014-02-05)
- Added Travis support
- Renamed manifest.xml so it doesn't break rosdep
- Expanded range of PID and windup gains for certain applications.
- Expanded range of PID and windup gains for certain applications. Lowered default integral and derivative gain
- check for CATKIN_ENABLE_TESTING
- Add some comments to Parameters.cfg
- Add support for dynamic_reconfigure for rosbuild
- Contributors: Austin Hendrix, Dave Coleman, Lukas Bulwahn, Paul Dinh
1.10.3 (2013-08-02)
- Fix bug in copy constructor.
- Contributors: Austin Hendrix
1.10.2 (2013-07-29)
- Fix copy constructor.
- Merge pull request #1 from davetcoleman/hydro-devel Added dynamic reconfigure for PID gains
- Removed const getGains function
- Small fixes
- Compatibility changes for realtime_tools, tweaked getests
- Made realtime_buffer copiable
- Added test for getting/settings gains, copying/assigning pid class
- Removed const read, added copy constructor and print values function
- Added new function getGainsConst that allows one to get the PID gains from a const PID class
- Added realtime_tools as a dependency in package.xml and CMakeLists
- Added realtime buffer to PID, re-ordered functions to more logical order and to match header file
- Fixes per Austin review
- Updated CMakeLists.txt and made fixes per Adolfo
- Merged hydro-devel
- Added dynamic reconfigure for PID gains
- Tests build.
- Contributors: Austin Hendrix, Dave Coleman
1.10.1 (2013-06-26)
- Add dependency on tinyxml.
- Contributors: Austin Hendrix
1.10.0 (2013-06-25)
- Version 1.10.0
- comment format consistentcy
- Fixing comment in pid source code
- Install tune_pid.py under catkin.
- adding install targets
- adding missing manifests
- merging CMakeLists.txt files from rosbuild and catkin
- adding hybrid-buildsystem makefiles
- Merging from master, re-adding manifest.xml files
- using more standard way of depending on gencpp
- Add .gitignore file.
- Fixing library export
- catkinizing, could still be cleaned up
- Fixing doc errors in PID
- Changing @ commands to commands
- Enforcing i_min <= 0 and i_max >= 0 in integral bound parameters, reducing duplicated code
- Merge pull request #14 from bobholmberg/fix-PID-unbounded-i_error Using zero i_gain to turn off integral control did unsavory things.
- Adding alternative name for new pid command computation API
- Fixing merge error
- Merge branch 'fix-pid-backwards-compatibility' into fix-PID-unbounded-i_error
- Removing lie from documentation
- Adding Bob's fixes to the backwards-compatibility API
- Merge branch 'fix-pid-backwards-compatibility' into fix-PID-unbounded-i_error
- bringing back old updatePid function contents
- adding documentation warning
- This makes the internal computations of updatePid() keep the same sign that they did before the API change
- Merge typo
- Resolving conflict from new Pid API
- Merge branch 'master' into test-bad-integral-bounds
- Merge branch 'test-bad-integral-bounds' into fix-PID-unbounded-i_error
- Specifying div-by-zero test, adding other integral term tests
- Merge branch 'test-bad-integral-bounds' into fix-PID-unbounded-i_error
- Adding test to expose Pid class zero-division vulnerability
- If the user did not want integral control and set i_gain to zero, then dividing by i_gain would set i_error to NaN. This is not desired. Instead, replace the use of division to create i_term with direct integration of i_term. Replace private member i_error with i_term. In getCurrentPIDErrors() create & return i_error with the same old meaning and units. NOTE: i_error is not needed internally anywhere else.
- Cleaning up documentation, making argument names in function declaration match those in the implementation
- adding doxygen deprecation flags
- Fixing documentation
- Merging changes from other branch
- Adding conventional PID computation
- Fixing inconsistent formatting, and reducing some duplicated code
- remove .svn folder
- move control_toolbox into ros_control
- Contributors: Adolfo Rodriguez Tsouroukdissian, Austin Hendrix, Bob Holmberg, Jonathan Bohren, Wim Meeussen, wmeeusse
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_gmock | |
ament_cmake_gtest | |
rclcpp_lifecycle | |
control_msgs | |
filters | |
generate_parameter_library | |
geometry_msgs | |
pluginlib | |
rclcpp | |
rcutils | |
realtime_tools |
System Dependencies
Name |
---|
eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged control_toolbox at Robotics Stack Exchange
control_toolbox package from control_toolbox repocontrol_toolbox |
|
Package Summary
Tags | No category tags. |
Version | 3.3.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros-controls/control_toolbox.git |
VCS Type | git |
VCS Version | ros2-master |
Last Updated | 2024-11-05 |
Dev Status | MAINTAINED |
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
Additional Links
Maintainers
- Bence Magyar
- Denis Štogl
- Christoph Froehlich
- Sai Kishor Kothakota
Authors
- Melonee Wise
- Sachin Chitta
- John Hsu
control_toolbox
This package contains several C++ classes useful in writing controllers.
See the documentation of ros2_control and release infos on index.ros.org.
Build status
ROS2 Distro | Branch | Build status | Documentation | Released packages
:———: | :—-: | :———-: | :———–: | :—————:
Rolling | ros2-master
|
| API | control_toolbox
Jazzy | ros2-master
| see above | API | control_toolbox
Iron | ros2-master
| see above | API | control_toolbox
Humble | ros2-master
| see above | API | control_toolbox
Publication
If you find this work useful please give credits to the authors by citing:
- S. Chitta, E. Marder-Eppstein, W. Meeussen, V. Pradeep, A. Rodríguez Tsouroukdissian, J. Bohren, D. Coleman, B. Magyar, G. Raiola, M. Lüdtke and E. Fernandez Perdomo “ros_control: A generic and simple control framework for ROS”, The Journal of Open Source Software, 2017. (PDF)
@article{ros_control,
author = {Chitta, Sachin and Marder-Eppstein, Eitan and Meeussen, Wim and Pradeep, Vijay and Rodr{\'i}guez Tsouroukdissian, Adolfo and Bohren, Jonathan and Coleman, David and Magyar, Bence and Raiola, Gennaro and L{\"u}dtke, Mathias and Fern{\'a}ndez Perdomo, Enrique},
title = {ros\_control: A generic and simple control framework for ROS},
journal = {The Journal of Open Source Software},
year = {2017},
doi = {10.21105/joss.00456},
URL = {http://www.theoj.org/joss-papers/joss.00456/10.21105.joss.00456.pdf}
}
Changelog for package control_toolbox
3.3.0 (2024-10-28)
- PID: Improve the API docs and change default value of antiwindup (#202)
- [CI] Specify runner/container images and add Jazzy jobs (#200)
- Add custom rosdoc2 config (#199)
- [CI] Update pre-commit and remove ros-lint (#187)
- Use Eigen CMake target (#190)
- [CI] Use wf from ros2_control_ci for coverage build (#188)
- Contributors: Christoph Fröhlich, dependabot[bot], github-actions[bot]
3.2.0 (2023-12-12)
- [CI] fix source build (#168)
- Bump actions/setup-python from 4 to 5 (#167)
- [CI] Touchups (#166)
- [PID] Update documentation to reflect ROS 2 usage of time (#165)
- Bump actions/checkout from 3 to 4 (#163)
- Bump ros-tooling/setup-ros from 0.6 to 0.7 (#161)
- Add filters structure and lowpass filter (#152)
- Bump codecov/codecov-action from 3.1.2 to 3.1.4 (#160)
- Contributors: Christoph Fröhlich, GuiHome, Patrick Roncagliolo
3.1.0 (2023-04-29)
- Check for i_min <= i_max at initialization (#139)
- Contributors: Christoph Fröhlich
3.0.0 (2023-04-05)
- [PidROS] Enable interpreting prefix as param prefix. (#129)
- Use std::clamp (#140)
- [CI] Fixes and update for branch out (#155)
- Enable subclassing of PID implementation. (#148)
- [CI] Add Humble job (#147)
- Finally update formatting to other repositories convention. (#131)
- [CI] 🔧 Update pre-commit hooks and sync actions to other repositories. (#130)
- Contributors: Bence Magyar, Christoph Fröhlich, Dr. Denis, dependabot[bot]
2.2.0 (2023-02-20)
- Fix overriding of package (#145)
- Various dependabot version bumps
- [CI] Add dependabot configuration to automatically update actions.
- Contributors: Christoph Fröhlich, Dr. Denis, Tyler Weaver, dependabot[bot]
2.1.2 (2022-11-15)
- export missing dependency (#128)
- Contributors: Noel Jiménez García
2.1.1 (2022-11-05)
- Add declaration of parameters in ROSPid.
- Fix namespace collision and parameter_callback problems in PidROS
- Contributors: Aris Synodinos, Denis Štogl
2.1.0 (2022-06-30)
- Fix parameter loading log levels
- Support pass in a precomputed derivative error
- Add getParametersCallbackHandle function
- Add topic_prefix_ to declareParam & setParameter
- Update include/control_toolbox/dither.hpp
- Correct contributing and license files for ament_copyright.
- Added license text file and contributing guidelines, corrected license short identifier.
- Remove build of downstream workspace.
- Update CI config and add pre-commit-config.
- Contributors: Bence Magyar, ChenJun, Denis Štogl, Timon Engelke
2.0.2 (2021-05-25)
- remove unused variables
- Update visibility_control.hpp
- Windows bringup.
- Contributors: Karsten Knese, Sean Yen, Bence Magyar
2.0.1 (2020-08-01)
- Fix dependencies
- Export ament_cmake build type
- Contributors: ahcorde
2.0.0 (2020-07-28)
- Refactor the Pid class to be completely ROS agnostic and added a ROS 2 wrapper
- Avoid crash when the type of the parameter doesn't match
- Added topic_prefix to publisher topic name (#95)
- Created a shared library (#93)
- Aliases not part of the public API are now private
- Removing pid_gains_setter
- Removed unnecessary dependencies
- Cleared empty non virtual destructors
- Removed unused limited proxy variables
- Added pid state real-time publisher
- Removed all references to tinyxml
- Removed tune_pid.py
- Adding missing copyright licenses
- Adapted dither, sine_sweep and sinusoid to ROS2
- Removed dynamic reconfigure completely
- Removed deprecated functions
- Contributors: Alejandro Hernández Cordero, Bence Magyar, James Xu, Jordan Palacios, Shane Loretz, ahcorde
1.17.0 (2019-01-31)
- update anti windup clamping
- update negativeIntegrationAntiwindupTest
- Address catkin_lint issues
- Add executable flag
- convert to package xml format 2
- Remove doc header
- Contributors: Bence Magyar, Cong, Gennaro Raiola
1.16.0 (2017-11-30)
- switched to industrial_ci
- Add control_msgs to CATKIN_DEPENDS.
- Contributors: Bence Magyar, Mathias Luedtke, Mike Purvis
1.15.0 (2016-06-28)
- avoid ABI breaks in PID class
- fix add_dependencies call
- rollback API changes in PID class
- cfg: removed rosbuild support related error handling
- Contributors: Bence Magyar, Igor Napolskikh, ipa-mig
1.14.0 (2016-05-03)
- Fix negative gains issue and add tests; update gains setting through DynamicReconfig
- Add antiwindup and tests to PID controller; rename old behaviour 'clamping'
- Move message to control_toolbox
- Add optional state publishing to PID controller, for logging/debugging/etc
- Fix some typos in comments
- changed the range of dynamic reconfigure to allow negative ones
- Address -Wunused-parameter warnings
- Factor out updatePid as negative calls to computeCommand
- Increasing covergae of PID class test suite.
- Chain calls of computeCommand and updatePid for code reuse
- Contributors: Adolfo Rodriguez Tsouroukdissian, Bence Magyar, Carlos Rosales, Guillaume Walck, Paul Bovbel, VahidAminZ
1.13.2 (2015-05-22)
- CRITICAL BUGFIX: Fix broken PID command computation.
- Contributors: Adolfo Rodriguez Tsouroukdissian, Paul Bovbel
1.13.1 (2015-04-30)
- Improvement in integral contribution implementation. Resolve #32.
- Contributors: Adolfo Rodriguez Tsouroukdissian, Carlos Rosales
1.13.0 (2014-10-31)
- Harmonize pid gain names between rosparam and dynamic_reconfigure
- Read i_clamp_min and i_clamp_max form parameter server - if available
- Contributors: Adolfo Rodriguez Tsouroukdissian, Dave Coleman, ipa-fxm
1.12.1 (2014-06-12)
- Remove broken test code. Hotfix for #18.
- Contributors: Adolfo Rodriguez Tsouroukdissian
1.12.0 (2014-06-12)
- pid: Adding quiet flag to suppress error message
- Contributors: Jonathan Bohren
1.11.0 (2014-05-12)
- Remove rosbuild artifacts
- Cleaned up CMake and removed unnecessary dependencies
- Made default value negative to match valid range
- Fix for i_clamp_min to be negative in dynamic reconfigure
- Fix abs/fabs problem with Clang and libc++
- Contributors: Adolfo Rodriguez Tsouroukdissian, Dave Coleman, Marco Esposito
1.10.4 (2014-02-05)
- Added Travis support
- Renamed manifest.xml so it doesn't break rosdep
- Expanded range of PID and windup gains for certain applications.
- Expanded range of PID and windup gains for certain applications. Lowered default integral and derivative gain
- check for CATKIN_ENABLE_TESTING
- Add some comments to Parameters.cfg
- Add support for dynamic_reconfigure for rosbuild
- Contributors: Austin Hendrix, Dave Coleman, Lukas Bulwahn, Paul Dinh
1.10.3 (2013-08-02)
- Fix bug in copy constructor.
- Contributors: Austin Hendrix
1.10.2 (2013-07-29)
- Fix copy constructor.
- Merge pull request #1 from davetcoleman/hydro-devel Added dynamic reconfigure for PID gains
- Removed const getGains function
- Small fixes
- Compatibility changes for realtime_tools, tweaked getests
- Made realtime_buffer copiable
- Added test for getting/settings gains, copying/assigning pid class
- Removed const read, added copy constructor and print values function
- Added new function getGainsConst that allows one to get the PID gains from a const PID class
- Added realtime_tools as a dependency in package.xml and CMakeLists
- Added realtime buffer to PID, re-ordered functions to more logical order and to match header file
- Fixes per Austin review
- Updated CMakeLists.txt and made fixes per Adolfo
- Merged hydro-devel
- Added dynamic reconfigure for PID gains
- Tests build.
- Contributors: Austin Hendrix, Dave Coleman
1.10.1 (2013-06-26)
- Add dependency on tinyxml.
- Contributors: Austin Hendrix
1.10.0 (2013-06-25)
- Version 1.10.0
- comment format consistentcy
- Fixing comment in pid source code
- Install tune_pid.py under catkin.
- adding install targets
- adding missing manifests
- merging CMakeLists.txt files from rosbuild and catkin
- adding hybrid-buildsystem makefiles
- Merging from master, re-adding manifest.xml files
- using more standard way of depending on gencpp
- Add .gitignore file.
- Fixing library export
- catkinizing, could still be cleaned up
- Fixing doc errors in PID
- Changing @ commands to commands
- Enforcing i_min <= 0 and i_max >= 0 in integral bound parameters, reducing duplicated code
- Merge pull request #14 from bobholmberg/fix-PID-unbounded-i_error Using zero i_gain to turn off integral control did unsavory things.
- Adding alternative name for new pid command computation API
- Fixing merge error
- Merge branch 'fix-pid-backwards-compatibility' into fix-PID-unbounded-i_error
- Removing lie from documentation
- Adding Bob's fixes to the backwards-compatibility API
- Merge branch 'fix-pid-backwards-compatibility' into fix-PID-unbounded-i_error
- bringing back old updatePid function contents
- adding documentation warning
- This makes the internal computations of updatePid() keep the same sign that they did before the API change
- Merge typo
- Resolving conflict from new Pid API
- Merge branch 'master' into test-bad-integral-bounds
- Merge branch 'test-bad-integral-bounds' into fix-PID-unbounded-i_error
- Specifying div-by-zero test, adding other integral term tests
- Merge branch 'test-bad-integral-bounds' into fix-PID-unbounded-i_error
- Adding test to expose Pid class zero-division vulnerability
- If the user did not want integral control and set i_gain to zero, then dividing by i_gain would set i_error to NaN. This is not desired. Instead, replace the use of division to create i_term with direct integration of i_term. Replace private member i_error with i_term. In getCurrentPIDErrors() create & return i_error with the same old meaning and units. NOTE: i_error is not needed internally anywhere else.
- Cleaning up documentation, making argument names in function declaration match those in the implementation
- adding doxygen deprecation flags
- Fixing documentation
- Merging changes from other branch
- Adding conventional PID computation
- Fixing inconsistent formatting, and reducing some duplicated code
- remove .svn folder
- move control_toolbox into ros_control
- Contributors: Adolfo Rodriguez Tsouroukdissian, Austin Hendrix, Bob Holmberg, Jonathan Bohren, Wim Meeussen, wmeeusse
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_gmock | |
ament_cmake_gtest | |
rclcpp_lifecycle | |
control_msgs | |
filters | |
generate_parameter_library | |
geometry_msgs | |
pluginlib | |
rclcpp | |
rcutils | |
realtime_tools |
System Dependencies
Name |
---|
eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged control_toolbox at Robotics Stack Exchange
control_toolbox package from control_toolbox repocontrol_toolbox |
|
Package Summary
Tags | No category tags. |
Version | 1.19.0 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros-controls/control_toolbox.git |
VCS Type | git |
VCS Version | melodic-devel |
Last Updated | 2022-05-10 |
Dev Status | MAINTAINED |
CI status |
|
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Bence Magyar
Authors
- Melonee Wise
- Sachin Chitta
- John Hsu
control_toolbox
See ros_control and control_toolbox documentation on ros.org
Build Status (Melodic & Noetic)
Publication
If you find this work useful please give credits to the authors by citing:
- S. Chitta, E. Marder-Eppstein, W. Meeussen, V. Pradeep, A. Rodríguez Tsouroukdissian, J. Bohren, D. Coleman, B. Magyar, G. Raiola, M. Lüdtke and E. Fernandez Perdomo “ros_control: A generic and simple control framework for ROS”, The Journal of Open Source Software, 2017. (PDF)
@article{ros_control,
author = {Chitta, Sachin and Marder-Eppstein, Eitan and Meeussen, Wim and Pradeep, Vijay and Rodr{\'i}guez Tsouroukdissian, Adolfo and Bohren, Jonathan and Coleman, David and Magyar, Bence and Raiola, Gennaro and L{\"u}dtke, Mathias and Fern{\'a}ndez Perdomo, Enrique},
title = {ros\_control: A generic and simple control framework for ROS},
journal = {The Journal of Open Source Software},
year = {2017},
doi = {10.21105/joss.00456},
URL = {http://www.theoj.org/joss-papers/joss.00456/10.21105.joss.00456.pdf}
}
Changelog for package control_toolbox
1.19.0 (2022-05-10)
- Switch to std::bind
- Increased integral gains & windup limits from +-1000 to +-100000
- Update README build status badge
- Remove Travis CI config
- Add GH actions CI workflow
- Update include/control_toolbox/pid.h
- code review fixes
- Allow smoother resets
1. Currently after a reset (or init), since p_error_last is_ set to
0, the first computeCommand is calculating a false large derivative
error. Proposed fix: only calculate error_dot if p_error_last_
contains a real value. The PR leaves reset() behavior untouched, and
provides an additional reset function that allows setting the initial
values for d_error and i_error
2. Allow setting initial i_error. This allows PID to be used in a
smoother manner in systems switching from manual to automatic modes.
See:
http://brettbeauregard.com/blog/2011/04/improving-the-beginner%E2%80%99s-pid-initialization/
- Improve cases where dt==0 or invalid errors were given (return last cmd_ instead of 0)
- Contributors: Jochen Sprickerhof, Koby Aizer, Matt Reynolds, Steve Golton, Bence Magyar
1.18.2 (2020-06-04)
- Python 3 compat part II
- Contributors: Tobias Fischer
1.18.1 (2020-06-01)
- Python 3 compat
- Migrate to new industrial_ci
- Contributors: Matt Reynolds, Tobias Fischer
1.18.0 (2020-03-27)
- Bump CMake version to avoid CMP0048 warning
- add static method to generate non-deterministic seed
- migrate to STL random library
- Contributors: James Xu, Shane Loretz, ahcorde
1.17.0 (2019-01-31)
- update anti windup clamping
- update negativeIntegrationAntiwindupTest
- Address catkin_lint issues
- Add executable flag
- convert to package xml format 2
- Remove doc header
- Contributors: Bence Magyar, Cong, Gennaro Raiola
1.16.0 (2017-11-30)
- switched to industrial_ci
- Add control_msgs to CATKIN_DEPENDS.
- Contributors: Bence Magyar, Mathias Luedtke, Mike Purvis
1.15.0 (2016-06-28)
- avoid ABI breaks in PID class
- fix add_dependencies call
- rollback API changes in PID class
- cfg: removed rosbuild support related error handling
- Contributors: Bence Magyar, Igor Napolskikh, ipa-mig
1.14.0 (2016-05-03)
- Fix negative gains issue and add tests; update gains setting through DynamicReconfig
- Add antiwindup and tests to PID controller; rename old behaviour 'clamping'
- Move message to control_toolbox
- Add optional state publishing to PID controller, for logging/debugging/etc
- Fix some typos in comments
- changed the range of dynamic reconfigure to allow negative ones
- Address -Wunused-parameter warnings
- Factor out updatePid as negative calls to computeCommand
- Increasing covergae of PID class test suite.
- Chain calls of computeCommand and updatePid for code reuse
- Contributors: Adolfo Rodriguez Tsouroukdissian, Bence Magyar, Carlos Rosales, Guillaume Walck, Paul Bovbel, VahidAminZ
1.13.2 (2015-05-22)
- CRITICAL BUGFIX: Fix broken PID command computation.
- Contributors: Adolfo Rodriguez Tsouroukdissian, Paul Bovbel
1.13.1 (2015-04-30)
- Improvement in integral contribution implementation. Resolve #32.
- Contributors: Adolfo Rodriguez Tsouroukdissian, Carlos Rosales
1.13.0 (2014-10-31)
- Harmonize pid gain names between rosparam and dynamic_reconfigure
- Read i_clamp_min and i_clamp_max form parameter server - if available
- Contributors: Adolfo Rodriguez Tsouroukdissian, Dave Coleman, ipa-fxm
1.12.1 (2014-06-12)
- Remove broken test code. Hotfix for #18.
- Contributors: Adolfo Rodriguez Tsouroukdissian
1.12.0 (2014-06-12)
- pid: Adding quiet flag to suppress error message
- Contributors: Jonathan Bohren
1.11.0 (2014-05-12)
- Remove rosbuild artifacts
- Cleaned up CMake and removed unnecessary dependencies
- Made default value negative to match valid range
- Fix for i_clamp_min to be negative in dynamic reconfigure
- Fix abs/fabs problem with Clang and libc++
- Contributors: Adolfo Rodriguez Tsouroukdissian, Dave Coleman, Marco Esposito
1.10.4 (2014-02-05)
- Added Travis support
- Renamed manifest.xml so it doesn't break rosdep
- Expanded range of PID and windup gains for certain applications.
- Expanded range of PID and windup gains for certain applications. Lowered default integral and derivative gain
- check for CATKIN_ENABLE_TESTING
- Add some comments to Parameters.cfg
- Add support for dynamic_reconfigure for rosbuild
- Contributors: Austin Hendrix, Dave Coleman, Lukas Bulwahn, Paul Dinh
1.10.3 (2013-08-02)
- Fix bug in copy constructor.
- Contributors: Austin Hendrix
1.10.2 (2013-07-29)
- Fix copy constructor.
- Merge pull request #1 from davetcoleman/hydro-devel Added dynamic reconfigure for PID gains
- Removed const getGains function
- Small fixes
- Compatibility changes for realtime_tools, tweaked getests
- Made realtime_buffer copiable
- Added test for getting/settings gains, copying/assigning pid class
- Removed const read, added copy constructor and print values function
- Added new function getGainsConst that allows one to get the PID gains from a const PID class
- Added realtime_tools as a dependency in package.xml and CMakeLists
- Added realtime buffer to PID, re-ordered functions to more logical order and to match header file
- Fixes per Austin review
- Updated CMakeLists.txt and made fixes per Adolfo
- Merged hydro-devel
- Added dynamic reconfigure for PID gains
- Tests build.
- Contributors: Austin Hendrix, Dave Coleman
1.10.1 (2013-06-26)
- Add dependency on tinyxml.
- Contributors: Austin Hendrix
1.10.0 (2013-06-25)
- Version 1.10.0
- comment format consistentcy
- Fixing comment in pid source code
- Install tune_pid.py under catkin.
- adding install targets
- adding missing manifests
- merging CMakeLists.txt files from rosbuild and catkin
- adding hybrid-buildsystem makefiles
- Merging from master, re-adding manifest.xml files
- using more standard way of depending on gencpp
- Add .gitignore file.
- Fixing library export
- catkinizing, could still be cleaned up
- Fixing doc errors in PID
- Changing @ commands to commands
- Enforcing i_min <= 0 and i_max >= 0 in integral bound parameters, reducing duplicated code
- Merge pull request #14 from bobholmberg/fix-PID-unbounded-i_error Using zero i_gain to turn off integral control did unsavory things.
- Adding alternative name for new pid command computation API
- Fixing merge error
- Merge branch 'fix-pid-backwards-compatibility' into fix-PID-unbounded-i_error
- Removing lie from documentation
- Adding Bob's fixes to the backwards-compatibility API
- Merge branch 'fix-pid-backwards-compatibility' into fix-PID-unbounded-i_error
- bringing back old updatePid function contents
- adding documentation warning
- This makes the internal computations of updatePid() keep the same sign that they did before the API change
- Merge typo
- Resolving conflict from new Pid API
- Merge branch 'master' into test-bad-integral-bounds
- Merge branch 'test-bad-integral-bounds' into fix-PID-unbounded-i_error
- Specifying div-by-zero test, adding other integral term tests
- Merge branch 'test-bad-integral-bounds' into fix-PID-unbounded-i_error
- Adding test to expose Pid class zero-division vulnerability
- If the user did not want integral control and set i_gain to zero, then dividing by i_gain would set i_error to NaN. This is not desired. Instead, replace the use of division to create i_term with direct integration of i_term. Replace private member i_error with i_term. In getCurrentPIDErrors() create & return i_error with the same old meaning and units. NOTE: i_error is not needed internally anywhere else.
- Cleaning up documentation, making argument names in function declaration match those in the implementation
- adding doxygen deprecation flags
- Fixing documentation
- Merging changes from other branch
- Adding conventional PID computation
- Fixing inconsistent formatting, and reducing some duplicated code
- remove .svn folder
- move control_toolbox into ros_control
- Contributors: Adolfo Rodriguez Tsouroukdissian, Austin Hendrix, Bob Holmberg, Jonathan Bohren, Wim Meeussen, wmeeusse
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
cmake_modules | |
message_generation | |
catkin | |
message_runtime | |
rosunit | |
control_msgs | |
std_msgs | |
roscpp | |
dynamic_reconfigure | |
realtime_tools |
System Dependencies
Name |
---|
tinyxml |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged control_toolbox at Robotics Stack Exchange
control_toolbox package from control_toolbox repocontrol_toolbox |
|
Package Summary
Tags | No category tags. |
Version | 3.3.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros-controls/control_toolbox.git |
VCS Type | git |
VCS Version | ros2-master |
Last Updated | 2024-11-05 |
Dev Status | MAINTAINED |
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
Additional Links
Maintainers
- Bence Magyar
- Denis Štogl
- Christoph Froehlich
- Sai Kishor Kothakota
Authors
- Melonee Wise
- Sachin Chitta
- John Hsu
control_toolbox
This package contains several C++ classes useful in writing controllers.
See the documentation of ros2_control and release infos on index.ros.org.
Build status
ROS2 Distro | Branch | Build status | Documentation | Released packages
:———: | :—-: | :———-: | :———–: | :—————:
Rolling | ros2-master
|
| API | control_toolbox
Jazzy | ros2-master
| see above | API | control_toolbox
Iron | ros2-master
| see above | API | control_toolbox
Humble | ros2-master
| see above | API | control_toolbox
Publication
If you find this work useful please give credits to the authors by citing:
- S. Chitta, E. Marder-Eppstein, W. Meeussen, V. Pradeep, A. Rodríguez Tsouroukdissian, J. Bohren, D. Coleman, B. Magyar, G. Raiola, M. Lüdtke and E. Fernandez Perdomo “ros_control: A generic and simple control framework for ROS”, The Journal of Open Source Software, 2017. (PDF)
@article{ros_control,
author = {Chitta, Sachin and Marder-Eppstein, Eitan and Meeussen, Wim and Pradeep, Vijay and Rodr{\'i}guez Tsouroukdissian, Adolfo and Bohren, Jonathan and Coleman, David and Magyar, Bence and Raiola, Gennaro and L{\"u}dtke, Mathias and Fern{\'a}ndez Perdomo, Enrique},
title = {ros\_control: A generic and simple control framework for ROS},
journal = {The Journal of Open Source Software},
year = {2017},
doi = {10.21105/joss.00456},
URL = {http://www.theoj.org/joss-papers/joss.00456/10.21105.joss.00456.pdf}
}
Changelog for package control_toolbox
3.3.0 (2024-10-28)
- PID: Improve the API docs and change default value of antiwindup (#202)
- [CI] Specify runner/container images and add Jazzy jobs (#200)
- Add custom rosdoc2 config (#199)
- [CI] Update pre-commit and remove ros-lint (#187)
- Use Eigen CMake target (#190)
- [CI] Use wf from ros2_control_ci for coverage build (#188)
- Contributors: Christoph Fröhlich, dependabot[bot], github-actions[bot]
3.2.0 (2023-12-12)
- [CI] fix source build (#168)
- Bump actions/setup-python from 4 to 5 (#167)
- [CI] Touchups (#166)
- [PID] Update documentation to reflect ROS 2 usage of time (#165)
- Bump actions/checkout from 3 to 4 (#163)
- Bump ros-tooling/setup-ros from 0.6 to 0.7 (#161)
- Add filters structure and lowpass filter (#152)
- Bump codecov/codecov-action from 3.1.2 to 3.1.4 (#160)
- Contributors: Christoph Fröhlich, GuiHome, Patrick Roncagliolo
3.1.0 (2023-04-29)
- Check for i_min <= i_max at initialization (#139)
- Contributors: Christoph Fröhlich
3.0.0 (2023-04-05)
- [PidROS] Enable interpreting prefix as param prefix. (#129)
- Use std::clamp (#140)
- [CI] Fixes and update for branch out (#155)
- Enable subclassing of PID implementation. (#148)
- [CI] Add Humble job (#147)
- Finally update formatting to other repositories convention. (#131)
- [CI] 🔧 Update pre-commit hooks and sync actions to other repositories. (#130)
- Contributors: Bence Magyar, Christoph Fröhlich, Dr. Denis, dependabot[bot]
2.2.0 (2023-02-20)
- Fix overriding of package (#145)
- Various dependabot version bumps
- [CI] Add dependabot configuration to automatically update actions.
- Contributors: Christoph Fröhlich, Dr. Denis, Tyler Weaver, dependabot[bot]
2.1.2 (2022-11-15)
- export missing dependency (#128)
- Contributors: Noel Jiménez García
2.1.1 (2022-11-05)
- Add declaration of parameters in ROSPid.
- Fix namespace collision and parameter_callback problems in PidROS
- Contributors: Aris Synodinos, Denis Štogl
2.1.0 (2022-06-30)
- Fix parameter loading log levels
- Support pass in a precomputed derivative error
- Add getParametersCallbackHandle function
- Add topic_prefix_ to declareParam & setParameter
- Update include/control_toolbox/dither.hpp
- Correct contributing and license files for ament_copyright.
- Added license text file and contributing guidelines, corrected license short identifier.
- Remove build of downstream workspace.
- Update CI config and add pre-commit-config.
- Contributors: Bence Magyar, ChenJun, Denis Štogl, Timon Engelke
2.0.2 (2021-05-25)
- remove unused variables
- Update visibility_control.hpp
- Windows bringup.
- Contributors: Karsten Knese, Sean Yen, Bence Magyar
2.0.1 (2020-08-01)
- Fix dependencies
- Export ament_cmake build type
- Contributors: ahcorde
2.0.0 (2020-07-28)
- Refactor the Pid class to be completely ROS agnostic and added a ROS 2 wrapper
- Avoid crash when the type of the parameter doesn't match
- Added topic_prefix to publisher topic name (#95)
- Created a shared library (#93)
- Aliases not part of the public API are now private
- Removing pid_gains_setter
- Removed unnecessary dependencies
- Cleared empty non virtual destructors
- Removed unused limited proxy variables
- Added pid state real-time publisher
- Removed all references to tinyxml
- Removed tune_pid.py
- Adding missing copyright licenses
- Adapted dither, sine_sweep and sinusoid to ROS2
- Removed dynamic reconfigure completely
- Removed deprecated functions
- Contributors: Alejandro Hernández Cordero, Bence Magyar, James Xu, Jordan Palacios, Shane Loretz, ahcorde
1.17.0 (2019-01-31)
- update anti windup clamping
- update negativeIntegrationAntiwindupTest
- Address catkin_lint issues
- Add executable flag
- convert to package xml format 2
- Remove doc header
- Contributors: Bence Magyar, Cong, Gennaro Raiola
1.16.0 (2017-11-30)
- switched to industrial_ci
- Add control_msgs to CATKIN_DEPENDS.
- Contributors: Bence Magyar, Mathias Luedtke, Mike Purvis
1.15.0 (2016-06-28)
- avoid ABI breaks in PID class
- fix add_dependencies call
- rollback API changes in PID class
- cfg: removed rosbuild support related error handling
- Contributors: Bence Magyar, Igor Napolskikh, ipa-mig
1.14.0 (2016-05-03)
- Fix negative gains issue and add tests; update gains setting through DynamicReconfig
- Add antiwindup and tests to PID controller; rename old behaviour 'clamping'
- Move message to control_toolbox
- Add optional state publishing to PID controller, for logging/debugging/etc
- Fix some typos in comments
- changed the range of dynamic reconfigure to allow negative ones
- Address -Wunused-parameter warnings
- Factor out updatePid as negative calls to computeCommand
- Increasing covergae of PID class test suite.
- Chain calls of computeCommand and updatePid for code reuse
- Contributors: Adolfo Rodriguez Tsouroukdissian, Bence Magyar, Carlos Rosales, Guillaume Walck, Paul Bovbel, VahidAminZ
1.13.2 (2015-05-22)
- CRITICAL BUGFIX: Fix broken PID command computation.
- Contributors: Adolfo Rodriguez Tsouroukdissian, Paul Bovbel
1.13.1 (2015-04-30)
- Improvement in integral contribution implementation. Resolve #32.
- Contributors: Adolfo Rodriguez Tsouroukdissian, Carlos Rosales
1.13.0 (2014-10-31)
- Harmonize pid gain names between rosparam and dynamic_reconfigure
- Read i_clamp_min and i_clamp_max form parameter server - if available
- Contributors: Adolfo Rodriguez Tsouroukdissian, Dave Coleman, ipa-fxm
1.12.1 (2014-06-12)
- Remove broken test code. Hotfix for #18.
- Contributors: Adolfo Rodriguez Tsouroukdissian
1.12.0 (2014-06-12)
- pid: Adding quiet flag to suppress error message
- Contributors: Jonathan Bohren
1.11.0 (2014-05-12)
- Remove rosbuild artifacts
- Cleaned up CMake and removed unnecessary dependencies
- Made default value negative to match valid range
- Fix for i_clamp_min to be negative in dynamic reconfigure
- Fix abs/fabs problem with Clang and libc++
- Contributors: Adolfo Rodriguez Tsouroukdissian, Dave Coleman, Marco Esposito
1.10.4 (2014-02-05)
- Added Travis support
- Renamed manifest.xml so it doesn't break rosdep
- Expanded range of PID and windup gains for certain applications.
- Expanded range of PID and windup gains for certain applications. Lowered default integral and derivative gain
- check for CATKIN_ENABLE_TESTING
- Add some comments to Parameters.cfg
- Add support for dynamic_reconfigure for rosbuild
- Contributors: Austin Hendrix, Dave Coleman, Lukas Bulwahn, Paul Dinh
1.10.3 (2013-08-02)
- Fix bug in copy constructor.
- Contributors: Austin Hendrix
1.10.2 (2013-07-29)
- Fix copy constructor.
- Merge pull request #1 from davetcoleman/hydro-devel Added dynamic reconfigure for PID gains
- Removed const getGains function
- Small fixes
- Compatibility changes for realtime_tools, tweaked getests
- Made realtime_buffer copiable
- Added test for getting/settings gains, copying/assigning pid class
- Removed const read, added copy constructor and print values function
- Added new function getGainsConst that allows one to get the PID gains from a const PID class
- Added realtime_tools as a dependency in package.xml and CMakeLists
- Added realtime buffer to PID, re-ordered functions to more logical order and to match header file
- Fixes per Austin review
- Updated CMakeLists.txt and made fixes per Adolfo
- Merged hydro-devel
- Added dynamic reconfigure for PID gains
- Tests build.
- Contributors: Austin Hendrix, Dave Coleman
1.10.1 (2013-06-26)
- Add dependency on tinyxml.
- Contributors: Austin Hendrix
1.10.0 (2013-06-25)
- Version 1.10.0
- comment format consistentcy
- Fixing comment in pid source code
- Install tune_pid.py under catkin.
- adding install targets
- adding missing manifests
- merging CMakeLists.txt files from rosbuild and catkin
- adding hybrid-buildsystem makefiles
- Merging from master, re-adding manifest.xml files
- using more standard way of depending on gencpp
- Add .gitignore file.
- Fixing library export
- catkinizing, could still be cleaned up
- Fixing doc errors in PID
- Changing @ commands to commands
- Enforcing i_min <= 0 and i_max >= 0 in integral bound parameters, reducing duplicated code
- Merge pull request #14 from bobholmberg/fix-PID-unbounded-i_error Using zero i_gain to turn off integral control did unsavory things.
- Adding alternative name for new pid command computation API
- Fixing merge error
- Merge branch 'fix-pid-backwards-compatibility' into fix-PID-unbounded-i_error
- Removing lie from documentation
- Adding Bob's fixes to the backwards-compatibility API
- Merge branch 'fix-pid-backwards-compatibility' into fix-PID-unbounded-i_error
- bringing back old updatePid function contents
- adding documentation warning
- This makes the internal computations of updatePid() keep the same sign that they did before the API change
- Merge typo
- Resolving conflict from new Pid API
- Merge branch 'master' into test-bad-integral-bounds
- Merge branch 'test-bad-integral-bounds' into fix-PID-unbounded-i_error
- Specifying div-by-zero test, adding other integral term tests
- Merge branch 'test-bad-integral-bounds' into fix-PID-unbounded-i_error
- Adding test to expose Pid class zero-division vulnerability
- If the user did not want integral control and set i_gain to zero, then dividing by i_gain would set i_error to NaN. This is not desired. Instead, replace the use of division to create i_term with direct integration of i_term. Replace private member i_error with i_term. In getCurrentPIDErrors() create & return i_error with the same old meaning and units. NOTE: i_error is not needed internally anywhere else.
- Cleaning up documentation, making argument names in function declaration match those in the implementation
- adding doxygen deprecation flags
- Fixing documentation
- Merging changes from other branch
- Adding conventional PID computation
- Fixing inconsistent formatting, and reducing some duplicated code
- remove .svn folder
- move control_toolbox into ros_control
- Contributors: Adolfo Rodriguez Tsouroukdissian, Austin Hendrix, Bob Holmberg, Jonathan Bohren, Wim Meeussen, wmeeusse
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_gmock | |
ament_cmake_gtest | |
rclcpp_lifecycle | |
control_msgs | |
filters | |
generate_parameter_library | |
geometry_msgs | |
pluginlib | |
rclcpp | |
rcutils | |
realtime_tools |
System Dependencies
Name |
---|
eigen |
Dependant Packages
Name | Deps |
---|---|
gripper_controllers |
Launch files
Messages
Services
Plugins
Recent questions tagged control_toolbox at Robotics Stack Exchange
control_toolbox package from control_toolbox repocontrol_toolbox |
|
Package Summary
Tags | No category tags. |
Version | 1.19.0 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros-controls/control_toolbox.git |
VCS Type | git |
VCS Version | melodic-devel |
Last Updated | 2022-05-10 |
Dev Status | MAINTAINED |
CI status |
|
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Bence Magyar
Authors
- Melonee Wise
- Sachin Chitta
- John Hsu
control_toolbox
See ros_control and control_toolbox documentation on ros.org
Build Status (Melodic & Noetic)
Publication
If you find this work useful please give credits to the authors by citing:
- S. Chitta, E. Marder-Eppstein, W. Meeussen, V. Pradeep, A. Rodríguez Tsouroukdissian, J. Bohren, D. Coleman, B. Magyar, G. Raiola, M. Lüdtke and E. Fernandez Perdomo “ros_control: A generic and simple control framework for ROS”, The Journal of Open Source Software, 2017. (PDF)
@article{ros_control,
author = {Chitta, Sachin and Marder-Eppstein, Eitan and Meeussen, Wim and Pradeep, Vijay and Rodr{\'i}guez Tsouroukdissian, Adolfo and Bohren, Jonathan and Coleman, David and Magyar, Bence and Raiola, Gennaro and L{\"u}dtke, Mathias and Fern{\'a}ndez Perdomo, Enrique},
title = {ros\_control: A generic and simple control framework for ROS},
journal = {The Journal of Open Source Software},
year = {2017},
doi = {10.21105/joss.00456},
URL = {http://www.theoj.org/joss-papers/joss.00456/10.21105.joss.00456.pdf}
}
Changelog for package control_toolbox
1.19.0 (2022-05-10)
- Switch to std::bind
- Increased integral gains & windup limits from +-1000 to +-100000
- Update README build status badge
- Remove Travis CI config
- Add GH actions CI workflow
- Update include/control_toolbox/pid.h
- code review fixes
- Allow smoother resets
1. Currently after a reset (or init), since p_error_last is_ set to
0, the first computeCommand is calculating a false large derivative
error. Proposed fix: only calculate error_dot if p_error_last_
contains a real value. The PR leaves reset() behavior untouched, and
provides an additional reset function that allows setting the initial
values for d_error and i_error
2. Allow setting initial i_error. This allows PID to be used in a
smoother manner in systems switching from manual to automatic modes.
See:
http://brettbeauregard.com/blog/2011/04/improving-the-beginner%E2%80%99s-pid-initialization/
- Improve cases where dt==0 or invalid errors were given (return last cmd_ instead of 0)
- Contributors: Jochen Sprickerhof, Koby Aizer, Matt Reynolds, Steve Golton, Bence Magyar
1.18.2 (2020-06-04)
- Python 3 compat part II
- Contributors: Tobias Fischer
1.18.1 (2020-06-01)
- Python 3 compat
- Migrate to new industrial_ci
- Contributors: Matt Reynolds, Tobias Fischer
1.18.0 (2020-03-27)
- Bump CMake version to avoid CMP0048 warning
- add static method to generate non-deterministic seed
- migrate to STL random library
- Contributors: James Xu, Shane Loretz, ahcorde
1.17.0 (2019-01-31)
- update anti windup clamping
- update negativeIntegrationAntiwindupTest
- Address catkin_lint issues
- Add executable flag
- convert to package xml format 2
- Remove doc header
- Contributors: Bence Magyar, Cong, Gennaro Raiola
1.16.0 (2017-11-30)
- switched to industrial_ci
- Add control_msgs to CATKIN_DEPENDS.
- Contributors: Bence Magyar, Mathias Luedtke, Mike Purvis
1.15.0 (2016-06-28)
- avoid ABI breaks in PID class
- fix add_dependencies call
- rollback API changes in PID class
- cfg: removed rosbuild support related error handling
- Contributors: Bence Magyar, Igor Napolskikh, ipa-mig
1.14.0 (2016-05-03)
- Fix negative gains issue and add tests; update gains setting through DynamicReconfig
- Add antiwindup and tests to PID controller; rename old behaviour 'clamping'
- Move message to control_toolbox
- Add optional state publishing to PID controller, for logging/debugging/etc
- Fix some typos in comments
- changed the range of dynamic reconfigure to allow negative ones
- Address -Wunused-parameter warnings
- Factor out updatePid as negative calls to computeCommand
- Increasing covergae of PID class test suite.
- Chain calls of computeCommand and updatePid for code reuse
- Contributors: Adolfo Rodriguez Tsouroukdissian, Bence Magyar, Carlos Rosales, Guillaume Walck, Paul Bovbel, VahidAminZ
1.13.2 (2015-05-22)
- CRITICAL BUGFIX: Fix broken PID command computation.
- Contributors: Adolfo Rodriguez Tsouroukdissian, Paul Bovbel
1.13.1 (2015-04-30)
- Improvement in integral contribution implementation. Resolve #32.
- Contributors: Adolfo Rodriguez Tsouroukdissian, Carlos Rosales
1.13.0 (2014-10-31)
- Harmonize pid gain names between rosparam and dynamic_reconfigure
- Read i_clamp_min and i_clamp_max form parameter server - if available
- Contributors: Adolfo Rodriguez Tsouroukdissian, Dave Coleman, ipa-fxm
1.12.1 (2014-06-12)
- Remove broken test code. Hotfix for #18.
- Contributors: Adolfo Rodriguez Tsouroukdissian
1.12.0 (2014-06-12)
- pid: Adding quiet flag to suppress error message
- Contributors: Jonathan Bohren
1.11.0 (2014-05-12)
- Remove rosbuild artifacts
- Cleaned up CMake and removed unnecessary dependencies
- Made default value negative to match valid range
- Fix for i_clamp_min to be negative in dynamic reconfigure
- Fix abs/fabs problem with Clang and libc++
- Contributors: Adolfo Rodriguez Tsouroukdissian, Dave Coleman, Marco Esposito
1.10.4 (2014-02-05)
- Added Travis support
- Renamed manifest.xml so it doesn't break rosdep
- Expanded range of PID and windup gains for certain applications.
- Expanded range of PID and windup gains for certain applications. Lowered default integral and derivative gain
- check for CATKIN_ENABLE_TESTING
- Add some comments to Parameters.cfg
- Add support for dynamic_reconfigure for rosbuild
- Contributors: Austin Hendrix, Dave Coleman, Lukas Bulwahn, Paul Dinh
1.10.3 (2013-08-02)
- Fix bug in copy constructor.
- Contributors: Austin Hendrix
1.10.2 (2013-07-29)
- Fix copy constructor.
- Merge pull request #1 from davetcoleman/hydro-devel Added dynamic reconfigure for PID gains
- Removed const getGains function
- Small fixes
- Compatibility changes for realtime_tools, tweaked getests
- Made realtime_buffer copiable
- Added test for getting/settings gains, copying/assigning pid class
- Removed const read, added copy constructor and print values function
- Added new function getGainsConst that allows one to get the PID gains from a const PID class
- Added realtime_tools as a dependency in package.xml and CMakeLists
- Added realtime buffer to PID, re-ordered functions to more logical order and to match header file
- Fixes per Austin review
- Updated CMakeLists.txt and made fixes per Adolfo
- Merged hydro-devel
- Added dynamic reconfigure for PID gains
- Tests build.
- Contributors: Austin Hendrix, Dave Coleman
1.10.1 (2013-06-26)
- Add dependency on tinyxml.
- Contributors: Austin Hendrix
1.10.0 (2013-06-25)
- Version 1.10.0
- comment format consistentcy
- Fixing comment in pid source code
- Install tune_pid.py under catkin.
- adding install targets
- adding missing manifests
- merging CMakeLists.txt files from rosbuild and catkin
- adding hybrid-buildsystem makefiles
- Merging from master, re-adding manifest.xml files
- using more standard way of depending on gencpp
- Add .gitignore file.
- Fixing library export
- catkinizing, could still be cleaned up
- Fixing doc errors in PID
- Changing @ commands to commands
- Enforcing i_min <= 0 and i_max >= 0 in integral bound parameters, reducing duplicated code
- Merge pull request #14 from bobholmberg/fix-PID-unbounded-i_error Using zero i_gain to turn off integral control did unsavory things.
- Adding alternative name for new pid command computation API
- Fixing merge error
- Merge branch 'fix-pid-backwards-compatibility' into fix-PID-unbounded-i_error
- Removing lie from documentation
- Adding Bob's fixes to the backwards-compatibility API
- Merge branch 'fix-pid-backwards-compatibility' into fix-PID-unbounded-i_error
- bringing back old updatePid function contents
- adding documentation warning
- This makes the internal computations of updatePid() keep the same sign that they did before the API change
- Merge typo
- Resolving conflict from new Pid API
- Merge branch 'master' into test-bad-integral-bounds
- Merge branch 'test-bad-integral-bounds' into fix-PID-unbounded-i_error
- Specifying div-by-zero test, adding other integral term tests
- Merge branch 'test-bad-integral-bounds' into fix-PID-unbounded-i_error
- Adding test to expose Pid class zero-division vulnerability
- If the user did not want integral control and set i_gain to zero, then dividing by i_gain would set i_error to NaN. This is not desired. Instead, replace the use of division to create i_term with direct integration of i_term. Replace private member i_error with i_term. In getCurrentPIDErrors() create & return i_error with the same old meaning and units. NOTE: i_error is not needed internally anywhere else.
- Cleaning up documentation, making argument names in function declaration match those in the implementation
- adding doxygen deprecation flags
- Fixing documentation
- Merging changes from other branch
- Adding conventional PID computation
- Fixing inconsistent formatting, and reducing some duplicated code
- remove .svn folder
- move control_toolbox into ros_control
- Contributors: Adolfo Rodriguez Tsouroukdissian, Austin Hendrix, Bob Holmberg, Jonathan Bohren, Wim Meeussen, wmeeusse
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
cmake_modules | |
message_generation | |
catkin | |
message_runtime | |
rosunit | |
control_msgs | |
std_msgs | |
roscpp | |
dynamic_reconfigure | |
realtime_tools |
System Dependencies
Name |
---|
tinyxml |