|
Package Summary
Tags | No category tags. |
Version | 0.20.5 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/demos.git |
VCS Type | git |
VCS Version | humble |
Last Updated | 2024-07-26 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Audrow Nash
- Michael Jeronimo
Authors
- Jackie Kay
- Mabel Zhang
- Michael Carroll
- Mikael Arguedas
Build instructions
This pendulum control demo is available in the default ROS 2 install. Follow the instructions to build ROS 2 from source: https://docs.ros.org/en/rolling/Installation/Linux-Development-Setup.html
Running the demo
. install/setup.bash
. install/pendulum_control/bin/pendulum_demo
A few command line arguments related to real-time performance profiling are provided by rttest. See https://github.com/ros2/rttest/blob/master/README.md for more information.
Running with real-time performance
The demo will print out its performance statistics continuously and at the end of the program.
Example final output:
rttest statistics:
- Minor pagefaults: 0
- Major pagefaults: 0
Latency (time after deadline was missed):
- Min: 2414 ns
- Max: 45949 ns
- Mean: 8712.12 ns
- Standard deviation: 1438.74
Ideally you want to see 0 minor or major pagefaults and an average latency of less than 30,000 nanosceonds (3% of the 1 millisecond update period).
If you see pagefaults, you may not have permission to lock memory via mlockall
.
You need to adjust the system limits for memory locking.
Add to /etc/security/limits.conf
:
<user> - memlock <limit in kB>
A limit of -1
is unlimited.
If you choose this, you may need to accompany it with ulimit -l unlimited
after editing the file.
After saving the file, log out and log back in.
If you see a high mean latency in the results, you may need to adjust the maximum priority for processes.
Add to /etc/security/limits.conf
:
<user> - rtprio <maximum priority>
The range of the priority is 0-99. However, do NOT set the limit to 99 because then your processes could interfere with important system processes that run at the top priority (e.g. watchdog). This demo will attempt to run the control loop at priority 98.
With these settings you can get decent average performance even if you don’t have the RT_PREEMPT kernel installed, but you will likely see an unacceptably large maximum latency and periodic latency spikes.
Dynamic allocation
The demo will also print to the console whenever malloc
is called, along with debug symbols from the backtrace for that stack.
If you search the output of the demo, you will see that malloc
is only called during the initialization phase of the program.
This is consistent with the requirements of real-time programming (to prevent non-determinstic blocking in the allocator).
However, without memory locking, you may still see some pagefaults due to reading memory that was allocated but not read into cache.
Changelog for package pendulum_control
0.20.5 (2024-07-26)
0.20.4 (2024-05-15)
0.20.3 (2023-01-10)
0.20.2 (2022-05-10)
0.20.1 (2022-04-08)
0.20.0 (2022-03-01)
0.19.0 (2022-01-14)
- Fix include order and relative paths for cpplint (#551)
- Contributors: Jacob Perron
0.18.0 (2021-12-17)
- Remove the malloc_hook from the pendulum_demo. (#544)
- Update maintainers to Audrow Nash and Michael Jeronimo (#543)
- Additional fixes for documentation in demos. (#538)
- Fix documentation for pendulum_control. (#537)
- Contributors: Audrow Nash, Chris Lalancette
0.17.0 (2021-10-18)
0.16.0 (2021-08-11)
0.15.0 (2021-05-14)
0.14.2 (2021-04-26)
0.14.1 (2021-04-19)
0.14.0 (2021-04-06)
0.13.0 (2021-03-25)
- Replace rmw_connext_cpp with rmw_connextdds (#489)
- Contributors: Andrea Sorbini
0.12.1 (2021-03-18)
0.12.0 (2021-01-25)
0.11.0 (2020-12-10)
- Update the package.xml files with the latest Open Robotics maintainers (#466)
- Contributors: Michael Jeronimo
0.10.1 (2020-09-21)
- Remove deprecated warning (#459)
- Contributors: Anas Abou Allaban
0.10.0 (2020-06-17)
- Follow API/file name changes (ros2/realtime_support#94) (#451)
- Contributors: y-okumura-isp
0.9.3 (2020-06-01)
0.9.2 (2020-05-26)
0.9.1 (2020-05-12)
0.9.0 (2020-04-30)
- avoid new deprecations (#442)
- fix CMake warning about using uninitialized variables (#439)
- Fix pendulum_control tests to use stdout stream. (#430)
- code style only: wrap after open parenthesis if not in one line (#429)
- Contributors: Chris Lalancette, Dirk Thomas, William Woodall
0.8.4 (2019-11-19)
0.8.3 (2019-11-11)
0.8.2 (2019-11-08)
0.8.1 (2019-10-23)
- Replace ready_fn with ReadyToTest action (#404)
- Contributors: Peter Baughman
0.8.0 (2019-09-26)
-
- Fixes to pendulum_control demo (#385)
-
- Add asserts to ensure that the latency is never negative
- Switch last_sample to int64_t to match new rttest interface
- Allow any number of spaces
- Make sure to expect the extra newline for the pendulum_demo
- Only publish statistics if they are available.
- Remove some unused functions from rtt_executor.hpp
- Fix armhf build warnings (#372)
- Contributors: Chris Lalancette, Prajakta Gokhale
0.7.6 (2019-05-30)
0.7.5 (2019-05-29)
0.7.4 (2019-05-20)
0.7.3 (2019-05-10)
0.7.2 (2019-05-08)
- changes to avoid deprecated API's (#332)
- Corrected publish calls with shared_ptr signature (#327)
- Migrate launch tests to new launch_testing features & API (#318)
- Contributors: Michel Hidalgo, William Woodall, ivanpauno
0.7.1 (2019-04-26)
0.7.0 (2019-04-14)
- Removed unused lambda capture. (#315)
- Added launch along with launch_testing as test dependencies. (#313)
- Dropped legacy launch API usage. (#311)
- Contributors: Emerson Knapp, Michel Hidalgo
0.6.2 (2019-01-15)
0.6.1 (2018-12-13)
0.6.0 (2018-12-07)
- Updated package maintainer. (#286)
- Updated to match rmw_fastrtps_dynamic_cpp (#271)
- Fixed spacing to comply with uncrusity 0.67 (#267)
- Fixed no return code for main() in several files (#266)
- Contributors: Dirk Thomas, Michael Carroll, Mikael Arguedas, testkit
0.5.1 (2018-06-28)
- make Mikael Arguedas the maintainer (#263)
- Contributors: Mikael Arguedas
0.5.0 (2018-06-27)
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Name | Deps |
---|---|
desktop |
Launch files
Messages
Services
Plugins
Recent questions tagged pendulum_control at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 0.27.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/demos.git |
VCS Type | git |
VCS Version | iron |
Last Updated | 2024-07-11 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Aditya Pande
- Audrow Nash
- Michael Jeronimo
Authors
- Jackie Kay
- Mabel Zhang
- Michael Carroll
- Mikael Arguedas
Build instructions
This pendulum control demo is available in the default ROS 2 install. Follow the instructions to build ROS 2 from source: https://docs.ros.org/en/rolling/Installation/Linux-Development-Setup.html
Running the demo
. install/setup.bash
. install/pendulum_control/bin/pendulum_demo
A few command line arguments related to real-time performance profiling are provided by rttest. See https://github.com/ros2/rttest/blob/master/README.md for more information.
Running with real-time performance
The demo will print out its performance statistics continuously and at the end of the program.
Example final output:
rttest statistics:
- Minor pagefaults: 0
- Major pagefaults: 0
Latency (time after deadline was missed):
- Min: 2414 ns
- Max: 45949 ns
- Mean: 8712.12 ns
- Standard deviation: 1438.74
Ideally you want to see 0 minor or major pagefaults and an average latency of less than 30,000 nanosceonds (3% of the 1 millisecond update period).
If you see pagefaults, you may not have permission to lock memory via mlockall
.
You need to adjust the system limits for memory locking.
Add to /etc/security/limits.conf
:
<user> - memlock <limit in kB>
A limit of -1
is unlimited.
If you choose this, you may need to accompany it with ulimit -l unlimited
after editing the file.
After saving the file, log out and log back in.
If you see a high mean latency in the results, you may need to adjust the maximum priority for processes.
Add to /etc/security/limits.conf
:
<user> - rtprio <maximum priority>
The range of the priority is 0-99. However, do NOT set the limit to 99 because then your processes could interfere with important system processes that run at the top priority (e.g. watchdog). This demo will attempt to run the control loop at priority 98.
With these settings you can get decent average performance even if you don’t have the RT_PREEMPT kernel installed, but you will likely see an unacceptably large maximum latency and periodic latency spikes.
Dynamic allocation
The demo will also print to the console whenever malloc
is called, along with debug symbols from the backtrace for that stack.
If you search the output of the demo, you will see that malloc
is only called during the initialization phase of the program.
This is consistent with the requirements of real-time programming (to prevent non-determinstic blocking in the allocator).
However, without memory locking, you may still see some pagefaults due to reading memory that was allocated but not read into cache.
Changelog for package pendulum_control
0.27.2 (2024-07-10)
0.27.1 (2023-05-11)
0.27.0 (2023-04-13)
0.26.0 (2023-04-11)
0.25.0 (2023-03-01)
0.24.1 (2023-02-24)
0.24.0 (2023-02-14)
- Update the demos to C++17. (#594)
- [rolling] Update maintainers - 2022-11-07 (#589)
- Contributors: Audrow Nash, Chris Lalancette
0.23.0 (2022-11-02)
0.22.0 (2022-09-13)
0.21.0 (2022-04-29)
0.20.1 (2022-04-08)
0.20.0 (2022-03-01)
0.19.0 (2022-01-14)
- Fix include order and relative paths for cpplint (#551)
- Contributors: Jacob Perron
0.18.0 (2021-12-17)
- Remove the malloc_hook from the pendulum_demo. (#544)
- Update maintainers to Audrow Nash and Michael Jeronimo (#543)
- Additional fixes for documentation in demos. (#538)
- Fix documentation for pendulum_control. (#537)
- Contributors: Audrow Nash, Chris Lalancette
0.17.0 (2021-10-18)
0.16.0 (2021-08-11)
0.15.0 (2021-05-14)
0.14.2 (2021-04-26)
0.14.1 (2021-04-19)
0.14.0 (2021-04-06)
0.13.0 (2021-03-25)
- Replace rmw_connext_cpp with rmw_connextdds (#489)
- Contributors: Andrea Sorbini
0.12.1 (2021-03-18)
0.12.0 (2021-01-25)
0.11.0 (2020-12-10)
- Update the package.xml files with the latest Open Robotics maintainers (#466)
- Contributors: Michael Jeronimo
0.10.1 (2020-09-21)
- Remove deprecated warning (#459)
- Contributors: Anas Abou Allaban
0.10.0 (2020-06-17)
- Follow API/file name changes (ros2/realtime_support#94) (#451)
- Contributors: y-okumura-isp
0.9.3 (2020-06-01)
0.9.2 (2020-05-26)
0.9.1 (2020-05-12)
0.9.0 (2020-04-30)
- avoid new deprecations (#442)
- fix CMake warning about using uninitialized variables (#439)
- Fix pendulum_control tests to use stdout stream. (#430)
- code style only: wrap after open parenthesis if not in one line (#429)
- Contributors: Chris Lalancette, Dirk Thomas, William Woodall
0.8.4 (2019-11-19)
0.8.3 (2019-11-11)
0.8.2 (2019-11-08)
0.8.1 (2019-10-23)
- Replace ready_fn with ReadyToTest action (#404)
- Contributors: Peter Baughman
0.8.0 (2019-09-26)
-
- Fixes to pendulum_control demo (#385)
-
- Add asserts to ensure that the latency is never negative
- Switch last_sample to int64_t to match new rttest interface
- Allow any number of spaces
- Make sure to expect the extra newline for the pendulum_demo
- Only publish statistics if they are available.
- Remove some unused functions from rtt_executor.hpp
- Fix armhf build warnings (#372)
- Contributors: Chris Lalancette, Prajakta Gokhale
0.7.6 (2019-05-30)
0.7.5 (2019-05-29)
0.7.4 (2019-05-20)
0.7.3 (2019-05-10)
0.7.2 (2019-05-08)
- changes to avoid deprecated API's (#332)
- Corrected publish calls with shared_ptr signature (#327)
- Migrate launch tests to new launch_testing features & API (#318)
- Contributors: Michel Hidalgo, William Woodall, ivanpauno
0.7.1 (2019-04-26)
0.7.0 (2019-04-14)
- Removed unused lambda capture. (#315)
- Added launch along with launch_testing as test dependencies. (#313)
- Dropped legacy launch API usage. (#311)
- Contributors: Emerson Knapp, Michel Hidalgo
0.6.2 (2019-01-15)
0.6.1 (2018-12-13)
0.6.0 (2018-12-07)
- Updated package maintainer. (#286)
- Updated to match rmw_fastrtps_dynamic_cpp (#271)
- Fixed spacing to comply with uncrusity 0.67 (#267)
- Fixed no return code for main() in several files (#266)
- Contributors: Dirk Thomas, Michael Carroll, Mikael Arguedas, testkit
0.5.1 (2018-06-28)
- make Mikael Arguedas the maintainer (#263)
- Contributors: Mikael Arguedas
0.5.0 (2018-06-27)
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Name | Deps |
---|---|
desktop |
Launch files
Messages
Services
Plugins
Recent questions tagged pendulum_control at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 0.33.5 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/demos.git |
VCS Type | git |
VCS Version | jazzy |
Last Updated | 2024-09-06 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Aditya Pande
- Audrow Nash
Authors
- Jackie Kay
- Mabel Zhang
- Michael Carroll
- Mikael Arguedas
Build instructions
This pendulum control demo is available in the default ROS 2 install. Follow the instructions to build ROS 2 from source: https://docs.ros.org/en/rolling/Installation/Linux-Development-Setup.html
Running the demo
. install/setup.bash
. install/pendulum_control/bin/pendulum_demo
A few command line arguments related to real-time performance profiling are provided by rttest. See https://github.com/ros2/rttest/blob/master/README.md for more information.
Running with real-time performance
The demo will print out its performance statistics continuously and at the end of the program.
Example final output:
rttest statistics:
- Minor pagefaults: 0
- Major pagefaults: 0
Latency (time after deadline was missed):
- Min: 2414 ns
- Max: 45949 ns
- Mean: 8712.12 ns
- Standard deviation: 1438.74
Ideally you want to see 0 minor or major pagefaults and an average latency of less than 30,000 nanosceonds (3% of the 1 millisecond update period).
If you see pagefaults, you may not have permission to lock memory via mlockall
.
You need to adjust the system limits for memory locking.
Add to /etc/security/limits.conf
:
<user> - memlock <limit in kB>
A limit of -1
is unlimited.
If you choose this, you may need to accompany it with ulimit -l unlimited
after editing the file.
After saving the file, log out and log back in.
If you see a high mean latency in the results, you may need to adjust the maximum priority for processes.
Add to /etc/security/limits.conf
:
<user> - rtprio <maximum priority>
The range of the priority is 0-99. However, do NOT set the limit to 99 because then your processes could interfere with important system processes that run at the top priority (e.g. watchdog). This demo will attempt to run the control loop at priority 98.
With these settings you can get decent average performance even if you don’t have the RT_PREEMPT kernel installed, but you will likely see an unacceptably large maximum latency and periodic latency spikes.
Dynamic allocation
The demo will also print to the console whenever malloc
is called, along with debug symbols from the backtrace for that stack.
If you search the output of the demo, you will see that malloc
is only called during the initialization phase of the program.
This is consistent with the requirements of real-time programming (to prevent non-determinstic blocking in the allocator).
However, without memory locking, you may still see some pagefaults due to reading memory that was allocated but not read into cache.
Changelog for package pendulum_control
0.33.5 (2024-09-06)
0.33.4 (2024-06-27)
0.33.3 (2024-05-13)
0.33.2 (2024-03-28)
- Update maintainer list in package.xml files (#665)
- Contributors: Michael Jeronimo
0.33.1 (2024-02-07)
0.33.0 (2024-01-24)
0.32.1 (2023-12-26)
0.32.0 (2023-11-06)
0.31.1 (2023-09-07)
0.31.0 (2023-08-21)
0.30.1 (2023-07-11)
0.30.0 (2023-06-12)
0.29.0 (2023-06-07)
- [pendulum_control Install targets to project lib (#624)
- Contributors: Yadu
0.28.1 (2023-05-11)
0.28.0 (2023-04-27)
0.27.0 (2023-04-13)
0.26.0 (2023-04-11)
0.25.0 (2023-03-01)
0.24.1 (2023-02-24)
0.24.0 (2023-02-14)
- Update the demos to C++17. (#594)
- [rolling] Update maintainers - 2022-11-07 (#589)
- Contributors: Audrow Nash, Chris Lalancette
0.23.0 (2022-11-02)
0.22.0 (2022-09-13)
0.21.0 (2022-04-29)
0.20.1 (2022-04-08)
0.20.0 (2022-03-01)
0.19.0 (2022-01-14)
- Fix include order and relative paths for cpplint (#551)
- Contributors: Jacob Perron
0.18.0 (2021-12-17)
- Remove the malloc_hook from the pendulum_demo. (#544)
- Update maintainers to Audrow Nash and Michael Jeronimo (#543)
- Additional fixes for documentation in demos. (#538)
- Fix documentation for pendulum_control. (#537)
- Contributors: Audrow Nash, Chris Lalancette
0.17.0 (2021-10-18)
0.16.0 (2021-08-11)
0.15.0 (2021-05-14)
0.14.2 (2021-04-26)
0.14.1 (2021-04-19)
0.14.0 (2021-04-06)
0.13.0 (2021-03-25)
- Replace rmw_connext_cpp with rmw_connextdds (#489)
- Contributors: Andrea Sorbini
0.12.1 (2021-03-18)
0.12.0 (2021-01-25)
0.11.0 (2020-12-10)
- Update the package.xml files with the latest Open Robotics maintainers (#466)
- Contributors: Michael Jeronimo
0.10.1 (2020-09-21)
- Remove deprecated warning (#459)
- Contributors: Anas Abou Allaban
0.10.0 (2020-06-17)
- Follow API/file name changes (ros2/realtime_support#94) (#451)
- Contributors: y-okumura-isp
0.9.3 (2020-06-01)
0.9.2 (2020-05-26)
0.9.1 (2020-05-12)
0.9.0 (2020-04-30)
- avoid new deprecations (#442)
- fix CMake warning about using uninitialized variables (#439)
- Fix pendulum_control tests to use stdout stream. (#430)
- code style only: wrap after open parenthesis if not in one line (#429)
- Contributors: Chris Lalancette, Dirk Thomas, William Woodall
0.8.4 (2019-11-19)
0.8.3 (2019-11-11)
0.8.2 (2019-11-08)
0.8.1 (2019-10-23)
- Replace ready_fn with ReadyToTest action (#404)
- Contributors: Peter Baughman
0.8.0 (2019-09-26)
-
- Fixes to pendulum_control demo (#385)
-
- Add asserts to ensure that the latency is never negative
- Switch last_sample to int64_t to match new rttest interface
- Allow any number of spaces
- Make sure to expect the extra newline for the pendulum_demo
- Only publish statistics if they are available.
- Remove some unused functions from rtt_executor.hpp
- Fix armhf build warnings (#372)
- Contributors: Chris Lalancette, Prajakta Gokhale
0.7.6 (2019-05-30)
0.7.5 (2019-05-29)
0.7.4 (2019-05-20)
0.7.3 (2019-05-10)
0.7.2 (2019-05-08)
- changes to avoid deprecated API's (#332)
- Corrected publish calls with shared_ptr signature (#327)
- Migrate launch tests to new launch_testing features & API (#318)
- Contributors: Michel Hidalgo, William Woodall, ivanpauno
0.7.1 (2019-04-26)
0.7.0 (2019-04-14)
- Removed unused lambda capture. (#315)
- Added launch along with launch_testing as test dependencies. (#313)
- Dropped legacy launch API usage. (#311)
- Contributors: Emerson Knapp, Michel Hidalgo
0.6.2 (2019-01-15)
0.6.1 (2018-12-13)
0.6.0 (2018-12-07)
- Updated package maintainer. (#286)
- Updated to match rmw_fastrtps_dynamic_cpp (#271)
- Fixed spacing to comply with uncrusity 0.67 (#267)
- Fixed no return code for main() in several files (#266)
- Contributors: Dirk Thomas, Michael Carroll, Mikael Arguedas, testkit
0.5.1 (2018-06-28)
- make Mikael Arguedas the maintainer (#263)
- Contributors: Mikael Arguedas
0.5.0 (2018-06-27)
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Name | Deps |
---|---|
desktop |
Launch files
Messages
Services
Plugins
Recent questions tagged pendulum_control at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 0.35.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/demos.git |
VCS Type | git |
VCS Version | rolling |
Last Updated | 2024-11-20 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Aditya Pande
- Audrow Nash
Authors
- Jackie Kay
- Mabel Zhang
- Michael Carroll
- Mikael Arguedas
Build instructions
This pendulum control demo is available in the default ROS 2 install. Follow the instructions to build ROS 2 from source: https://docs.ros.org/en/rolling/Installation/Linux-Development-Setup.html
Running the demo
. install/setup.bash
. install/pendulum_control/bin/pendulum_demo
A few command line arguments related to real-time performance profiling are provided by rttest. See https://github.com/ros2/rttest/blob/master/README.md for more information.
Running with real-time performance
The demo will print out its performance statistics continuously and at the end of the program.
Example final output:
rttest statistics:
- Minor pagefaults: 0
- Major pagefaults: 0
Latency (time after deadline was missed):
- Min: 2414 ns
- Max: 45949 ns
- Mean: 8712.12 ns
- Standard deviation: 1438.74
Ideally you want to see 0 minor or major pagefaults and an average latency of less than 30,000 nanosceonds (3% of the 1 millisecond update period).
If you see pagefaults, you may not have permission to lock memory via mlockall
.
You need to adjust the system limits for memory locking.
Add to /etc/security/limits.conf
:
<user> - memlock <limit in kB>
A limit of -1
is unlimited.
If you choose this, you may need to accompany it with ulimit -l unlimited
after editing the file.
After saving the file, log out and log back in.
If you see a high mean latency in the results, you may need to adjust the maximum priority for processes.
Add to /etc/security/limits.conf
:
<user> - rtprio <maximum priority>
The range of the priority is 0-99. However, do NOT set the limit to 99 because then your processes could interfere with important system processes that run at the top priority (e.g. watchdog). This demo will attempt to run the control loop at priority 98.
With these settings you can get decent average performance even if you don’t have the RT_PREEMPT kernel installed, but you will likely see an unacceptably large maximum latency and periodic latency spikes.
Dynamic allocation
The demo will also print to the console whenever malloc
is called, along with debug symbols from the backtrace for that stack.
If you search the output of the demo, you will see that malloc
is only called during the initialization phase of the program.
This is consistent with the requirements of real-time programming (to prevent non-determinstic blocking in the allocator).
However, without memory locking, you may still see some pagefaults due to reading memory that was allocated but not read into cache.
Changelog for package pendulum_control
0.35.1 (2024-11-20)
0.35.0 (2024-10-03)
0.34.2 (2024-07-29)
0.34.1 (2024-06-17)
0.34.0 (2024-04-26)
0.33.2 (2024-03-28)
- Update maintainer list in package.xml files (#665)
- Contributors: Michael Jeronimo
0.33.1 (2024-02-07)
0.33.0 (2024-01-24)
0.32.1 (2023-12-26)
0.32.0 (2023-11-06)
0.31.1 (2023-09-07)
0.31.0 (2023-08-21)
0.30.1 (2023-07-11)
0.30.0 (2023-06-12)
0.29.0 (2023-06-07)
- [pendulum_control Install targets to project lib (#624)
- Contributors: Yadu
0.28.1 (2023-05-11)
0.28.0 (2023-04-27)
0.27.0 (2023-04-13)
0.26.0 (2023-04-11)
0.25.0 (2023-03-01)
0.24.1 (2023-02-24)
0.24.0 (2023-02-14)
- Update the demos to C++17. (#594)
- [rolling] Update maintainers - 2022-11-07 (#589)
- Contributors: Audrow Nash, Chris Lalancette
0.23.0 (2022-11-02)
0.22.0 (2022-09-13)
0.21.0 (2022-04-29)
0.20.1 (2022-04-08)
0.20.0 (2022-03-01)
0.19.0 (2022-01-14)
- Fix include order and relative paths for cpplint (#551)
- Contributors: Jacob Perron
0.18.0 (2021-12-17)
- Remove the malloc_hook from the pendulum_demo. (#544)
- Update maintainers to Audrow Nash and Michael Jeronimo (#543)
- Additional fixes for documentation in demos. (#538)
- Fix documentation for pendulum_control. (#537)
- Contributors: Audrow Nash, Chris Lalancette
0.17.0 (2021-10-18)
0.16.0 (2021-08-11)
0.15.0 (2021-05-14)
0.14.2 (2021-04-26)
0.14.1 (2021-04-19)
0.14.0 (2021-04-06)
0.13.0 (2021-03-25)
- Replace rmw_connext_cpp with rmw_connextdds (#489)
- Contributors: Andrea Sorbini
0.12.1 (2021-03-18)
0.12.0 (2021-01-25)
0.11.0 (2020-12-10)
- Update the package.xml files with the latest Open Robotics maintainers (#466)
- Contributors: Michael Jeronimo
0.10.1 (2020-09-21)
- Remove deprecated warning (#459)
- Contributors: Anas Abou Allaban
0.10.0 (2020-06-17)
- Follow API/file name changes (ros2/realtime_support#94) (#451)
- Contributors: y-okumura-isp
0.9.3 (2020-06-01)
0.9.2 (2020-05-26)
0.9.1 (2020-05-12)
0.9.0 (2020-04-30)
- avoid new deprecations (#442)
- fix CMake warning about using uninitialized variables (#439)
- Fix pendulum_control tests to use stdout stream. (#430)
- code style only: wrap after open parenthesis if not in one line (#429)
- Contributors: Chris Lalancette, Dirk Thomas, William Woodall
0.8.4 (2019-11-19)
0.8.3 (2019-11-11)
0.8.2 (2019-11-08)
0.8.1 (2019-10-23)
- Replace ready_fn with ReadyToTest action (#404)
- Contributors: Peter Baughman
0.8.0 (2019-09-26)
-
- Fixes to pendulum_control demo (#385)
-
- Add asserts to ensure that the latency is never negative
- Switch last_sample to int64_t to match new rttest interface
- Allow any number of spaces
- Make sure to expect the extra newline for the pendulum_demo
- Only publish statistics if they are available.
- Remove some unused functions from rtt_executor.hpp
- Fix armhf build warnings (#372)
- Contributors: Chris Lalancette, Prajakta Gokhale
0.7.6 (2019-05-30)
0.7.5 (2019-05-29)
0.7.4 (2019-05-20)
0.7.3 (2019-05-10)
0.7.2 (2019-05-08)
- changes to avoid deprecated API's (#332)
- Corrected publish calls with shared_ptr signature (#327)
- Migrate launch tests to new launch_testing features & API (#318)
- Contributors: Michel Hidalgo, William Woodall, ivanpauno
0.7.1 (2019-04-26)
0.7.0 (2019-04-14)
- Removed unused lambda capture. (#315)
- Added launch along with launch_testing as test dependencies. (#313)
- Dropped legacy launch API usage. (#311)
- Contributors: Emerson Knapp, Michel Hidalgo
0.6.2 (2019-01-15)
0.6.1 (2018-12-13)
0.6.0 (2018-12-07)
- Updated package maintainer. (#286)
- Updated to match rmw_fastrtps_dynamic_cpp (#271)
- Fixed spacing to comply with uncrusity 0.67 (#267)
- Fixed no return code for main() in several files (#266)
- Contributors: Dirk Thomas, Michael Carroll, Mikael Arguedas, testkit
0.5.1 (2018-06-28)
- make Mikael Arguedas the maintainer (#263)
- Contributors: Mikael Arguedas
0.5.0 (2018-06-27)
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Name | Deps |
---|---|
desktop |
Launch files
Messages
Services
Plugins
Recent questions tagged pendulum_control at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 0.4.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/demos.git |
VCS Type | git |
VCS Version | ardent |
Last Updated | 2017-12-09 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Jackie Kay
Authors
Build instructions
If you haven’t already, clone rttest into your ament workspace.
Build your ament workspace:
./src/ament/ament_tools/scripts/ament.py build --symlink-install
You can add --only pendulum_control
if you want to only rebuild this package.
Run:
. install/setup.bash
pendulum_demo[__rmw_opensplice/__rmw_connext]
The demo runs with both PrismTech OpenSplice and RTI Connext (if RTI Connext is available). However, it has better performance with RTI Connext.
A few command line arguments related to real-time performance profiling are provided by rttest. See https://github.com/ros2/rttest/blob/master/README.md for more information.
The demo will spit out a lot of output as it runs. Try redirecting the results to a file:
pendulum_demo[__rmw_opensplice/__rmw_connext] > output.txt
Running with real-time performance
The demo will print out its performance statistics continuously and at the end of the program.
Example final output:
rttest statistics:
- Minor pagefaults: 0
- Major pagefaults: 0
Latency (time after deadline was missed):
- Min: 2414 ns
- Max: 45949 ns
- Mean: 8712.12 ns
- Standard deviation: 1438.74
Ideally you want to see 0 minor or major pagefaults and an average latency of less than 30,000 nanosceonds (3% of the 1 millisecond update period).
If you see pagefaults, you may not have permission to lock memory via mlockall
.
You need to adjust the system limits for memory locking.
Add to /etc/security/limits.conf
:
<user> - memlock <limit in kB>
A limit of -1
is unlimited.
If you choose this, you may need to accompany it with ulimit -l unlimited
after editing the file.
After saving the file, log out and log back in.
If you see a high mean latency in the results, you may need to adjust the maximum priority for processes.
Add to /etc/security/limits.conf
:
<user> - rtprio <maximum priority>
The range of the priority is 0-99. However, do NOT set the limit to 99 because then your processes could interfere with important system processes that run at the top priority (e.g. watchdog). This demo will attempt to run the control loop at priority 98.
With these settings you can get decent average performance even if you don’t have the RT_PREEMPT kernel installed, but you will likely see an unacceptably large maximum latency and periodic latency spikes.
Dynamic allocation
The demo will also print to the console whenever malloc
is called, along with debug symbols from the backtrace for that stack.
If you search the output of the demo, you will see that malloc
is only called during the initialization phase of the program.
This is consistent with the requirements of real-time programming (to prevent non-determinstic blocking in the allocator).
However, without memory locking, you may still see some pagefaults due to reading memory that was allocated but not read into cache.
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
rclcpp | |
pendulum_msgs | |
rttest | |
tlsf_cpp | |
ament_cmake | |
ament_cmake_pytest | |
ament_lint_auto | |
ament_lint_common | |
launch | |
launch_testing | |
rmw_implementation_cmake | |
ros2run |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
desktop |
Launch files
Messages
Services
Plugins
Recent questions tagged pendulum_control at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 0.5.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/demos.git |
VCS Type | git |
VCS Version | bouncy |
Last Updated | 2018-10-30 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Mikael Arguedas
Authors
- Jackie Kay
Build instructions
If you haven’t already, clone rttest into your ament workspace.
Build your ament workspace:
./src/ament/ament_tools/scripts/ament.py build --symlink-install
You can add --only pendulum_control
if you want to only rebuild this package.
Run:
. install/setup.bash
pendulum_demo[__rmw_opensplice/__rmw_connext]
The demo runs with both PrismTech OpenSplice and RTI Connext (if RTI Connext is available). However, it has better performance with RTI Connext.
A few command line arguments related to real-time performance profiling are provided by rttest. See https://github.com/ros2/rttest/blob/master/README.md for more information.
The demo will spit out a lot of output as it runs. Try redirecting the results to a file:
pendulum_demo[__rmw_opensplice/__rmw_connext] > output.txt
Running with real-time performance
The demo will print out its performance statistics continuously and at the end of the program.
Example final output:
rttest statistics:
- Minor pagefaults: 0
- Major pagefaults: 0
Latency (time after deadline was missed):
- Min: 2414 ns
- Max: 45949 ns
- Mean: 8712.12 ns
- Standard deviation: 1438.74
Ideally you want to see 0 minor or major pagefaults and an average latency of less than 30,000 nanosceonds (3% of the 1 millisecond update period).
If you see pagefaults, you may not have permission to lock memory via mlockall
.
You need to adjust the system limits for memory locking.
Add to /etc/security/limits.conf
:
<user> - memlock <limit in kB>
A limit of -1
is unlimited.
If you choose this, you may need to accompany it with ulimit -l unlimited
after editing the file.
After saving the file, log out and log back in.
If you see a high mean latency in the results, you may need to adjust the maximum priority for processes.
Add to /etc/security/limits.conf
:
<user> - rtprio <maximum priority>
The range of the priority is 0-99. However, do NOT set the limit to 99 because then your processes could interfere with important system processes that run at the top priority (e.g. watchdog). This demo will attempt to run the control loop at priority 98.
With these settings you can get decent average performance even if you don’t have the RT_PREEMPT kernel installed, but you will likely see an unacceptably large maximum latency and periodic latency spikes.
Dynamic allocation
The demo will also print to the console whenever malloc
is called, along with debug symbols from the backtrace for that stack.
If you search the output of the demo, you will see that malloc
is only called during the initialization phase of the program.
This is consistent with the requirements of real-time programming (to prevent non-determinstic blocking in the allocator).
However, without memory locking, you may still see some pagefaults due to reading memory that was allocated but not read into cache.
Changelog for package pendulum_control
0.5.1 (2018-06-28)
- make Mikael Arguedas the maintainer (#263)
- Contributors: Mikael Arguedas
0.5.0 (2018-06-27)
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
rclcpp | |
pendulum_msgs | |
rttest | |
tlsf_cpp | |
ament_cmake | |
ament_cmake_pytest | |
ament_lint_auto | |
ament_lint_common | |
launch | |
launch_testing | |
rmw_implementation_cmake | |
ros2run |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
desktop |
Launch files
Messages
Services
Plugins
Recent questions tagged pendulum_control at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 0.6.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/demos.git |
VCS Type | git |
VCS Version | crystal |
Last Updated | 2019-01-15 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Michael Carroll
Authors
- Jackie Kay
- Mikael Arguedas
Build instructions
If you haven’t already, clone rttest into your ament workspace.
Build your ament workspace:
./src/ament/ament_tools/scripts/ament.py build --symlink-install
You can add --only pendulum_control
if you want to only rebuild this package.
Run:
. install/setup.bash
pendulum_demo[__rmw_opensplice/__rmw_connext]
The demo runs with both PrismTech OpenSplice and RTI Connext (if RTI Connext is available). However, it has better performance with RTI Connext.
A few command line arguments related to real-time performance profiling are provided by rttest. See https://github.com/ros2/rttest/blob/master/README.md for more information.
The demo will spit out a lot of output as it runs. Try redirecting the results to a file:
pendulum_demo[__rmw_opensplice/__rmw_connext] > output.txt
Running with real-time performance
The demo will print out its performance statistics continuously and at the end of the program.
Example final output:
rttest statistics:
- Minor pagefaults: 0
- Major pagefaults: 0
Latency (time after deadline was missed):
- Min: 2414 ns
- Max: 45949 ns
- Mean: 8712.12 ns
- Standard deviation: 1438.74
Ideally you want to see 0 minor or major pagefaults and an average latency of less than 30,000 nanosceonds (3% of the 1 millisecond update period).
If you see pagefaults, you may not have permission to lock memory via mlockall
.
You need to adjust the system limits for memory locking.
Add to /etc/security/limits.conf
:
<user> - memlock <limit in kB>
A limit of -1
is unlimited.
If you choose this, you may need to accompany it with ulimit -l unlimited
after editing the file.
After saving the file, log out and log back in.
If you see a high mean latency in the results, you may need to adjust the maximum priority for processes.
Add to /etc/security/limits.conf
:
<user> - rtprio <maximum priority>
The range of the priority is 0-99. However, do NOT set the limit to 99 because then your processes could interfere with important system processes that run at the top priority (e.g. watchdog). This demo will attempt to run the control loop at priority 98.
With these settings you can get decent average performance even if you don’t have the RT_PREEMPT kernel installed, but you will likely see an unacceptably large maximum latency and periodic latency spikes.
Dynamic allocation
The demo will also print to the console whenever malloc
is called, along with debug symbols from the backtrace for that stack.
If you search the output of the demo, you will see that malloc
is only called during the initialization phase of the program.
This is consistent with the requirements of real-time programming (to prevent non-determinstic blocking in the allocator).
However, without memory locking, you may still see some pagefaults due to reading memory that was allocated but not read into cache.
Changelog for package pendulum_control
0.6.2 (2019-01-15)
0.6.1 (2018-12-13)
0.6.0 (2018-12-07)
- Updated package maintainer. (#286)
- Updated to match rmw_fastrtps_dynamic_cpp (#271)
- Fixed spacing to comply with uncrusity 0.67 (#267)
- Fixed no return code for main() in several files (#266)
- Contributors: Dirk Thomas, Michael Carroll, Mikael Arguedas, testkit
0.5.1 (2018-06-28)
- make Mikael Arguedas the maintainer (#263)
- Contributors: Mikael Arguedas
0.5.0 (2018-06-27)
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
rclcpp | |
pendulum_msgs | |
rttest | |
tlsf_cpp | |
ament_cmake | |
ament_cmake_pytest | |
ament_lint_auto | |
ament_lint_common | |
launch | |
launch_testing | |
rmw_implementation_cmake | |
ros2run |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
desktop |
Launch files
Messages
Services
Plugins
Recent questions tagged pendulum_control at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 0.8.4 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/demos.git |
VCS Type | git |
VCS Version | eloquent |
Last Updated | 2020-11-04 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Mabel Zhang
- Michael Jeronimo
Authors
- Jackie Kay
- Mikael Arguedas
- Michael Carroll
Build instructions
If you haven’t already, clone rttest into your ament workspace.
Build your ament workspace:
./src/ament/ament_tools/scripts/ament.py build --symlink-install
You can add --only pendulum_control
if you want to only rebuild this package.
Run:
. install/setup.bash
pendulum_demo[__rmw_opensplice/__rmw_connext]
The demo runs with both PrismTech OpenSplice and RTI Connext (if RTI Connext is available). However, it has better performance with RTI Connext.
A few command line arguments related to real-time performance profiling are provided by rttest. See https://github.com/ros2/rttest/blob/master/README.md for more information.
The demo will spit out a lot of output as it runs. Try redirecting the results to a file:
pendulum_demo[__rmw_opensplice/__rmw_connext] > output.txt
Running with real-time performance
The demo will print out its performance statistics continuously and at the end of the program.
Example final output:
rttest statistics:
- Minor pagefaults: 0
- Major pagefaults: 0
Latency (time after deadline was missed):
- Min: 2414 ns
- Max: 45949 ns
- Mean: 8712.12 ns
- Standard deviation: 1438.74
Ideally you want to see 0 minor or major pagefaults and an average latency of less than 30,000 nanosceonds (3% of the 1 millisecond update period).
If you see pagefaults, you may not have permission to lock memory via mlockall
.
You need to adjust the system limits for memory locking.
Add to /etc/security/limits.conf
:
<user> - memlock <limit in kB>
A limit of -1
is unlimited.
If you choose this, you may need to accompany it with ulimit -l unlimited
after editing the file.
After saving the file, log out and log back in.
If you see a high mean latency in the results, you may need to adjust the maximum priority for processes.
Add to /etc/security/limits.conf
:
<user> - rtprio <maximum priority>
The range of the priority is 0-99. However, do NOT set the limit to 99 because then your processes could interfere with important system processes that run at the top priority (e.g. watchdog). This demo will attempt to run the control loop at priority 98.
With these settings you can get decent average performance even if you don’t have the RT_PREEMPT kernel installed, but you will likely see an unacceptably large maximum latency and periodic latency spikes.
Dynamic allocation
The demo will also print to the console whenever malloc
is called, along with debug symbols from the backtrace for that stack.
If you search the output of the demo, you will see that malloc
is only called during the initialization phase of the program.
This is consistent with the requirements of real-time programming (to prevent non-determinstic blocking in the allocator).
However, without memory locking, you may still see some pagefaults due to reading memory that was allocated but not read into cache.
Changelog for package pendulum_control
0.8.4 (2019-11-19)
0.8.3 (2019-11-11)
0.8.2 (2019-11-08)
0.8.1 (2019-10-23)
- Replace ready_fn with ReadyToTest action (#404)
- Contributors: Peter Baughman
0.8.0 (2019-09-26)
-
- Fixes to pendulum_control demo (#385)
-
- Add asserts to ensure that the latency is never negative
- Switch last_sample to int64_t to match new rttest interface
- Allow any number of spaces
- Make sure to expect the extra newline for the pendulum_demo
- Only publish statistics if they are available.
- Remove some unused functions from rtt_executor.hpp
- Fix armhf build warnings (#372)
- Contributors: Chris Lalancette, Prajakta Gokhale
0.7.6 (2019-05-30)
0.7.5 (2019-05-29)
0.7.4 (2019-05-20)
0.7.3 (2019-05-10)
0.7.2 (2019-05-08)
- changes to avoid deprecated API's (#332)
- Corrected publish calls with shared_ptr signature (#327)
- Migrate launch tests to new launch_testing features & API (#318)
- Contributors: Michel Hidalgo, William Woodall, ivanpauno
0.7.1 (2019-04-26)
0.7.0 (2019-04-14)
- Removed unused lambda capture. (#315)
- Added launch along with launch_testing as test dependencies. (#313)
- Dropped legacy launch API usage. (#311)
- Contributors: Emerson Knapp, Michel Hidalgo
0.6.2 (2019-01-15)
0.6.1 (2018-12-13)
0.6.0 (2018-12-07)
- Updated package maintainer. (#286)
- Updated to match rmw_fastrtps_dynamic_cpp (#271)
- Fixed spacing to comply with uncrusity 0.67 (#267)
- Fixed no return code for main() in several files (#266)
- Contributors: Dirk Thomas, Michael Carroll, Mikael Arguedas, testkit
0.5.1 (2018-06-28)
- make Mikael Arguedas the maintainer (#263)
- Contributors: Mikael Arguedas
0.5.0 (2018-06-27)
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Name | Deps |
---|---|
desktop |
Launch files
Messages
Services
Plugins
Recent questions tagged pendulum_control at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 0.7.9 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/demos.git |
VCS Type | git |
VCS Version | dashing |
Last Updated | 2020-10-28 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Mabel Zhang
- Michael Jeronimo
Authors
- Jackie Kay
- Mikael Arguedas
- Michael Carroll
Build instructions
If you haven’t already, clone rttest into your ament workspace.
Build your ament workspace:
./src/ament/ament_tools/scripts/ament.py build --symlink-install
You can add --only pendulum_control
if you want to only rebuild this package.
Run:
. install/setup.bash
pendulum_demo[__rmw_opensplice/__rmw_connext]
The demo runs with both PrismTech OpenSplice and RTI Connext (if RTI Connext is available). However, it has better performance with RTI Connext.
A few command line arguments related to real-time performance profiling are provided by rttest. See https://github.com/ros2/rttest/blob/master/README.md for more information.
The demo will spit out a lot of output as it runs. Try redirecting the results to a file:
pendulum_demo[__rmw_opensplice/__rmw_connext] > output.txt
Running with real-time performance
The demo will print out its performance statistics continuously and at the end of the program.
Example final output:
rttest statistics:
- Minor pagefaults: 0
- Major pagefaults: 0
Latency (time after deadline was missed):
- Min: 2414 ns
- Max: 45949 ns
- Mean: 8712.12 ns
- Standard deviation: 1438.74
Ideally you want to see 0 minor or major pagefaults and an average latency of less than 30,000 nanosceonds (3% of the 1 millisecond update period).
If you see pagefaults, you may not have permission to lock memory via mlockall
.
You need to adjust the system limits for memory locking.
Add to /etc/security/limits.conf
:
<user> - memlock <limit in kB>
A limit of -1
is unlimited.
If you choose this, you may need to accompany it with ulimit -l unlimited
after editing the file.
After saving the file, log out and log back in.
If you see a high mean latency in the results, you may need to adjust the maximum priority for processes.
Add to /etc/security/limits.conf
:
<user> - rtprio <maximum priority>
The range of the priority is 0-99. However, do NOT set the limit to 99 because then your processes could interfere with important system processes that run at the top priority (e.g. watchdog). This demo will attempt to run the control loop at priority 98.
With these settings you can get decent average performance even if you don’t have the RT_PREEMPT kernel installed, but you will likely see an unacceptably large maximum latency and periodic latency spikes.
Dynamic allocation
The demo will also print to the console whenever malloc
is called, along with debug symbols from the backtrace for that stack.
If you search the output of the demo, you will see that malloc
is only called during the initialization phase of the program.
This is consistent with the requirements of real-time programming (to prevent non-determinstic blocking in the allocator).
However, without memory locking, you may still see some pagefaults due to reading memory that was allocated but not read into cache.
Changelog for package pendulum_control
0.7.6 (2019-05-30)
0.7.5 (2019-05-29)
0.7.4 (2019-05-20)
0.7.3 (2019-05-10)
0.7.2 (2019-05-08)
- changes to avoid deprecated API's (#332)
- Corrected publish calls with shared_ptr signature (#327)
- Migrate launch tests to new launch_testing features & API (#318)
- Contributors: Michel Hidalgo, William Woodall, ivanpauno
0.7.1 (2019-04-26)
0.7.0 (2019-04-14)
- Removed unused lambda capture. (#315)
- Added launch along with launch_testing as test dependencies. (#313)
- Dropped legacy launch API usage. (#311)
- Contributors: Emerson Knapp, Michel Hidalgo
0.6.2 (2019-01-15)
0.6.1 (2018-12-13)
0.6.0 (2018-12-07)
- Updated package maintainer. (#286)
- Updated to match rmw_fastrtps_dynamic_cpp (#271)
- Fixed spacing to comply with uncrusity 0.67 (#267)
- Fixed no return code for main() in several files (#266)
- Contributors: Dirk Thomas, Michael Carroll, Mikael Arguedas, testkit
0.5.1 (2018-06-28)
- make Mikael Arguedas the maintainer (#263)
- Contributors: Mikael Arguedas
0.5.0 (2018-06-27)
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Name | Deps |
---|---|
desktop |
Launch files
Messages
Services
Plugins
Recent questions tagged pendulum_control at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 0.14.4 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/demos.git |
VCS Type | git |
VCS Version | galactic |
Last Updated | 2022-12-07 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Mabel Zhang
- Michael Jeronimo
Authors
- Jackie Kay
- Mikael Arguedas
- Michael Carroll
Build instructions
This pendulum control demo is available in the default ROS 2 install. Follow the instructions to build ROS 2 from source: https://docs.ros.org/en/rolling/Installation/Linux-Development-Setup.html
Running the demo
. install/setup.bash
. install/pendulum_control/bin/pendulum_demo
A few command line arguments related to real-time performance profiling are provided by rttest. See https://github.com/ros2/rttest/blob/master/README.md for more information.
Running with real-time performance
The demo will print out its performance statistics continuously and at the end of the program.
Example final output:
rttest statistics:
- Minor pagefaults: 0
- Major pagefaults: 0
Latency (time after deadline was missed):
- Min: 2414 ns
- Max: 45949 ns
- Mean: 8712.12 ns
- Standard deviation: 1438.74
Ideally you want to see 0 minor or major pagefaults and an average latency of less than 30,000 nanosceonds (3% of the 1 millisecond update period).
If you see pagefaults, you may not have permission to lock memory via mlockall
.
You need to adjust the system limits for memory locking.
Add to /etc/security/limits.conf
:
<user> - memlock <limit in kB>
A limit of -1
is unlimited.
If you choose this, you may need to accompany it with ulimit -l unlimited
after editing the file.
After saving the file, log out and log back in.
If you see a high mean latency in the results, you may need to adjust the maximum priority for processes.
Add to /etc/security/limits.conf
:
<user> - rtprio <maximum priority>
The range of the priority is 0-99. However, do NOT set the limit to 99 because then your processes could interfere with important system processes that run at the top priority (e.g. watchdog). This demo will attempt to run the control loop at priority 98.
With these settings you can get decent average performance even if you don’t have the RT_PREEMPT kernel installed, but you will likely see an unacceptably large maximum latency and periodic latency spikes.
Dynamic allocation
The demo will also print to the console whenever malloc
is called, along with debug symbols from the backtrace for that stack.
If you search the output of the demo, you will see that malloc
is only called during the initialization phase of the program.
This is consistent with the requirements of real-time programming (to prevent non-determinstic blocking in the allocator).
However, without memory locking, you may still see some pagefaults due to reading memory that was allocated but not read into cache.
Changelog for package pendulum_control
0.14.4 (2022-12-06)
0.14.3 (2021-05-10)
0.14.2 (2021-04-26)
0.14.1 (2021-04-19)
0.14.0 (2021-04-06)
0.13.0 (2021-03-25)
- Replace rmw_connext_cpp with rmw_connextdds (#489)
- Contributors: Andrea Sorbini
0.12.1 (2021-03-18)
0.12.0 (2021-01-25)
0.11.0 (2020-12-10)
- Update the package.xml files with the latest Open Robotics maintainers (#466)
- Contributors: Michael Jeronimo
0.10.1 (2020-09-21)
- Remove deprecated warning (#459)
- Contributors: Anas Abou Allaban
0.10.0 (2020-06-17)
- Follow API/file name changes (ros2/realtime_support#94) (#451)
- Contributors: y-okumura-isp
0.9.3 (2020-06-01)
0.9.2 (2020-05-26)
0.9.1 (2020-05-12)
0.9.0 (2020-04-30)
- avoid new deprecations (#442)
- fix CMake warning about using uninitialized variables (#439)
- Fix pendulum_control tests to use stdout stream. (#430)
- code style only: wrap after open parenthesis if not in one line (#429)
- Contributors: Chris Lalancette, Dirk Thomas, William Woodall
0.8.4 (2019-11-19)
0.8.3 (2019-11-11)
0.8.2 (2019-11-08)
0.8.1 (2019-10-23)
- Replace ready_fn with ReadyToTest action (#404)
- Contributors: Peter Baughman
0.8.0 (2019-09-26)
-
- Fixes to pendulum_control demo (#385)
-
- Add asserts to ensure that the latency is never negative
- Switch last_sample to int64_t to match new rttest interface
- Allow any number of spaces
- Make sure to expect the extra newline for the pendulum_demo
- Only publish statistics if they are available.
- Remove some unused functions from rtt_executor.hpp
- Fix armhf build warnings (#372)
- Contributors: Chris Lalancette, Prajakta Gokhale
0.7.6 (2019-05-30)
0.7.5 (2019-05-29)
0.7.4 (2019-05-20)
0.7.3 (2019-05-10)
0.7.2 (2019-05-08)
- changes to avoid deprecated API's (#332)
- Corrected publish calls with shared_ptr signature (#327)
- Migrate launch tests to new launch_testing features & API (#318)
- Contributors: Michel Hidalgo, William Woodall, ivanpauno
0.7.1 (2019-04-26)
0.7.0 (2019-04-14)
- Removed unused lambda capture. (#315)
- Added launch along with launch_testing as test dependencies. (#313)
- Dropped legacy launch API usage. (#311)
- Contributors: Emerson Knapp, Michel Hidalgo
0.6.2 (2019-01-15)
0.6.1 (2018-12-13)
0.6.0 (2018-12-07)
- Updated package maintainer. (#286)
- Updated to match rmw_fastrtps_dynamic_cpp (#271)
- Fixed spacing to comply with uncrusity 0.67 (#267)
- Fixed no return code for main() in several files (#266)
- Contributors: Dirk Thomas, Michael Carroll, Mikael Arguedas, testkit
0.5.1 (2018-06-28)
- make Mikael Arguedas the maintainer (#263)
- Contributors: Mikael Arguedas
0.5.0 (2018-06-27)
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Name | Deps |
---|---|
desktop |
Launch files
Messages
Services
Plugins
Recent questions tagged pendulum_control at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 0.9.4 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/demos.git |
VCS Type | git |
VCS Version | foxy |
Last Updated | 2022-07-25 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Mabel Zhang
- Michael Jeronimo
Authors
- Jackie Kay
- Mikael Arguedas
- Michael Carroll
Build instructions
If you haven’t already, clone rttest into your ament workspace.
Build your ament workspace:
./src/ament/ament_tools/scripts/ament.py build --symlink-install
You can add --only pendulum_control
if you want to only rebuild this package.
Run:
. install/setup.bash
pendulum_demo[__rmw_opensplice/__rmw_connext]
The demo runs with both PrismTech OpenSplice and RTI Connext (if RTI Connext is available). However, it has better performance with RTI Connext.
A few command line arguments related to real-time performance profiling are provided by rttest. See https://github.com/ros2/rttest/blob/master/README.md for more information.
The demo will spit out a lot of output as it runs. Try redirecting the results to a file:
pendulum_demo[__rmw_opensplice/__rmw_connext] > output.txt
Running with real-time performance
The demo will print out its performance statistics continuously and at the end of the program.
Example final output:
rttest statistics:
- Minor pagefaults: 0
- Major pagefaults: 0
Latency (time after deadline was missed):
- Min: 2414 ns
- Max: 45949 ns
- Mean: 8712.12 ns
- Standard deviation: 1438.74
Ideally you want to see 0 minor or major pagefaults and an average latency of less than 30,000 nanosceonds (3% of the 1 millisecond update period).
If you see pagefaults, you may not have permission to lock memory via mlockall
.
You need to adjust the system limits for memory locking.
Add to /etc/security/limits.conf
:
<user> - memlock <limit in kB>
A limit of -1
is unlimited.
If you choose this, you may need to accompany it with ulimit -l unlimited
after editing the file.
After saving the file, log out and log back in.
If you see a high mean latency in the results, you may need to adjust the maximum priority for processes.
Add to /etc/security/limits.conf
:
<user> - rtprio <maximum priority>
The range of the priority is 0-99. However, do NOT set the limit to 99 because then your processes could interfere with important system processes that run at the top priority (e.g. watchdog). This demo will attempt to run the control loop at priority 98.
With these settings you can get decent average performance even if you don’t have the RT_PREEMPT kernel installed, but you will likely see an unacceptably large maximum latency and periodic latency spikes.
Dynamic allocation
The demo will also print to the console whenever malloc
is called, along with debug symbols from the backtrace for that stack.
If you search the output of the demo, you will see that malloc
is only called during the initialization phase of the program.
This is consistent with the requirements of real-time programming (to prevent non-determinstic blocking in the allocator).
However, without memory locking, you may still see some pagefaults due to reading memory that was allocated but not read into cache.
Changelog for package pendulum_control
0.9.4 (2022-07-25)
- Update maintainer list for Foxy (#471)
- Contributors: Michael Jeronimo
0.9.3 (2020-06-01)
0.9.2 (2020-05-26)
0.9.1 (2020-05-12)
0.9.0 (2020-04-30)
- avoid new deprecations (#442)
- fix CMake warning about using uninitialized variables (#439)
- Fix pendulum_control tests to use stdout stream. (#430)
- code style only: wrap after open parenthesis if not in one line (#429)
- Contributors: Chris Lalancette, Dirk Thomas, William Woodall
0.8.4 (2019-11-19)
0.8.3 (2019-11-11)
0.8.2 (2019-11-08)
0.8.1 (2019-10-23)
- Replace ready_fn with ReadyToTest action (#404)
- Contributors: Peter Baughman
0.8.0 (2019-09-26)
-
- Fixes to pendulum_control demo (#385)
-
- Add asserts to ensure that the latency is never negative
- Switch last_sample to int64_t to match new rttest interface
- Allow any number of spaces
- Make sure to expect the extra newline for the pendulum_demo
- Only publish statistics if they are available.
- Remove some unused functions from rtt_executor.hpp
- Fix armhf build warnings (#372)
- Contributors: Chris Lalancette, Prajakta Gokhale
0.7.6 (2019-05-30)
0.7.5 (2019-05-29)
0.7.4 (2019-05-20)
0.7.3 (2019-05-10)
0.7.2 (2019-05-08)
- changes to avoid deprecated API's (#332)
- Corrected publish calls with shared_ptr signature (#327)
- Migrate launch tests to new launch_testing features & API (#318)
- Contributors: Michel Hidalgo, William Woodall, ivanpauno
0.7.1 (2019-04-26)
0.7.0 (2019-04-14)
- Removed unused lambda capture. (#315)
- Added launch along with launch_testing as test dependencies. (#313)
- Dropped legacy launch API usage. (#311)
- Contributors: Emerson Knapp, Michel Hidalgo
0.6.2 (2019-01-15)
0.6.1 (2018-12-13)
0.6.0 (2018-12-07)
- Updated package maintainer. (#286)
- Updated to match rmw_fastrtps_dynamic_cpp (#271)
- Fixed spacing to comply with uncrusity 0.67 (#267)
- Fixed no return code for main() in several files (#266)
- Contributors: Dirk Thomas, Michael Carroll, Mikael Arguedas, testkit
0.5.1 (2018-06-28)
- make Mikael Arguedas the maintainer (#263)
- Contributors: Mikael Arguedas
0.5.0 (2018-06-27)
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Name | Deps |
---|---|
desktop |