From d40e7f4c37080bb0a0fd792c9f0f18d563048107 Mon Sep 17 00:00:00 2001 From: bmagyar Date: Sun, 31 Dec 2023 05:32:08 +0000 Subject: [PATCH] deploy: 1d8bd318092b64a865e956bb88833f3fa18b031f --- foxy/.buildinfo | 2 +- .../acknowledgements/acknowledgements.doctree | Bin 7434 -> 7434 bytes .../doc/contributing/contributing.doctree | Bin 24361 -> 24361 bytes .../differences_to_ros1.doctree | Bin 34748 -> 34748 bytes .../getting_started/getting_started.doctree | Bin 50559 -> 50559 bytes foxy/.doctrees/doc/project_ideas.doctree | Bin 38260 -> 38260 bytes .../.doctrees/doc/resources/resources.doctree | Bin 67145 -> 67145 bytes .../controller_manager/doc/userdoc.doctree | Bin 9211 -> 9211 bytes .../doc/ros2_control/doc/index.doctree | Bin 5962 -> 5962 bytes .../doc/fake_components_userdoc.doctree | Bin 13533 -> 13533 bytes .../ros2controlcli/doc/userdoc.doctree | Bin 24766 -> 24766 bytes .../doc/ros2_control_demos/doc/index.doctree | Bin 12763 -> 12763 bytes .../diff_drive_controller/doc/userdoc.doctree | Bin 5687 -> 5687 bytes .../doc/controllers_index.doctree | Bin 12858 -> 12858 bytes .../doc/writing_new_controller.doctree | Bin 59925 -> 59925 bytes .../effort_controllers/doc/userdoc.doctree | Bin 4124 -> 4124 bytes .../doc/userdoc.doctree | Bin 8657 -> 8657 bytes .../doc/userdoc.doctree | Bin 4196 -> 4196 bytes .../doc/userdoc.doctree | Bin 5895 -> 5895 bytes .../doc/userdoc.doctree | Bin 7851 -> 7851 bytes .../doc/userdoc.doctree | Bin 5225 -> 5225 bytes .../doc/userdoc.doctree | Bin 33758 -> 33758 bytes .../position_controllers/doc/userdoc.doctree | Bin 4154 -> 4154 bytes .../tricycle_controller/doc/userdoc.doctree | Bin 5149 -> 5149 bytes .../velocity_controllers/doc/userdoc.doctree | Bin 4154 -> 4154 bytes foxy/.doctrees/environment.pickle | Bin 653256 -> 653256 bytes foxy/.doctrees/index.doctree | Bin 28593 -> 28593 bytes foxy/index.html | 2 +- foxy/searchindex.js | 2 +- galactic/.buildinfo | 2 +- .../acknowledgements/acknowledgements.doctree | Bin 7434 -> 7434 bytes .../doc/contributing/contributing.doctree | Bin 24361 -> 24361 bytes .../differences_to_ros1.doctree | Bin 34748 -> 34748 bytes .../getting_started/getting_started.doctree | Bin 50559 -> 50559 bytes galactic/.doctrees/doc/project_ideas.doctree | Bin 38260 -> 38260 bytes .../.doctrees/doc/resources/resources.doctree | Bin 67145 -> 67145 bytes .../controller_manager/doc/userdoc.doctree | Bin 11589 -> 11589 bytes .../doc/ros2_control/doc/index.doctree | Bin 6066 -> 6066 bytes .../doc/fake_components_userdoc.doctree | Bin 13533 -> 13533 bytes .../doc/hardware_components_userdoc.doctree | Bin 20103 -> 20103 bytes .../ros2controlcli/doc/userdoc.doctree | Bin 23385 -> 23385 bytes .../doc/ros2_control_demos/doc/index.doctree | Bin 12635 -> 12635 bytes .../diff_drive_controller/doc/userdoc.doctree | Bin 5687 -> 5687 bytes .../doc/controllers_index.doctree | Bin 13250 -> 13250 bytes .../doc/writing_new_controller.doctree | Bin 59945 -> 59945 bytes .../effort_controllers/doc/userdoc.doctree | Bin 4124 -> 4124 bytes .../doc/userdoc.doctree | Bin 8657 -> 8657 bytes .../doc/userdoc.doctree | Bin 4196 -> 4196 bytes .../doc/userdoc.doctree | Bin 5895 -> 5895 bytes .../doc/userdoc.doctree | Bin 18436 -> 18436 bytes .../doc/userdoc.doctree | Bin 33758 -> 33758 bytes .../position_controllers/doc/userdoc.doctree | Bin 4154 -> 4154 bytes .../velocity_controllers/doc/userdoc.doctree | Bin 4154 -> 4154 bytes galactic/.doctrees/environment.pickle | Bin 681619 -> 681619 bytes galactic/.doctrees/index.doctree | Bin 28609 -> 28609 bytes galactic/index.html | 2 +- galactic/searchindex.js | 2 +- humble/.buildinfo | 2 +- .../acknowledgements/acknowledgements.doctree | Bin 512252 -> 512192 bytes .../doc/contributing/contributing.doctree | Bin 26269 -> 26269 bytes .../differences_to_ros1.doctree | Bin 34672 -> 34672 bytes .../doc/gazebo_ros2_control/doc/index.doctree | Bin 38208 -> 38208 bytes .../getting_started/getting_started.doctree | Bin 48743 -> 48743 bytes .../doc/gz_ros2_control/doc/index.doctree | Bin 36685 -> 36685 bytes humble/.doctrees/doc/project_ideas.doctree | Bin 29987 -> 29987 bytes .../.doctrees/doc/resources/resources.doctree | Bin 83622 -> 83622 bytes .../doc/controller_chaining.doctree | Bin 25466 -> 25466 bytes .../controller_manager/doc/userdoc.doctree | Bin 30138 -> 30138 bytes .../doc/ros2_control/doc/index.doctree | Bin 6372 -> 6372 bytes .../doc/hardware_components_userdoc.doctree | Bin 21564 -> 21564 bytes .../hardware_interface_types_userdoc.doctree | Bin 27199 -> 27199 bytes .../doc/mock_components_userdoc.doctree | Bin 16420 -> 16420 bytes .../writing_new_hardware_component.doctree | Bin 65671 -> 65671 bytes .../ros2controlcli/doc/userdoc.doctree | Bin 28562 -> 28562 bytes .../doc/ros2_control_demos/doc/index.doctree | Bin 49806 -> 49806 bytes .../doc/run_from_docker.doctree | Bin 3337 -> 3337 bytes .../example_1/doc/userdoc.doctree | Bin 82059 -> 82059 bytes .../example_10/doc/userdoc.doctree | Bin 24375 -> 24375 bytes .../example_12/doc/userdoc.doctree | Bin 48925 -> 48925 bytes .../example_14/doc/userdoc.doctree | Bin 37903 -> 37903 bytes .../example_2/doc/userdoc.doctree | Bin 38515 -> 38515 bytes .../example_3/doc/userdoc.doctree | Bin 46764 -> 46764 bytes .../example_4/doc/userdoc.doctree | Bin 37786 -> 37786 bytes .../example_5/doc/userdoc.doctree | Bin 41016 -> 41016 bytes .../example_6/doc/userdoc.doctree | Bin 33191 -> 33191 bytes .../example_7/doc/userdoc.doctree | Bin 106728 -> 106728 bytes .../example_8/doc/userdoc.doctree | Bin 31438 -> 31438 bytes .../example_9/doc/userdoc.doctree | Bin 36729 -> 36729 bytes .../doc/userdoc.doctree | Bin 11527 -> 11527 bytes .../admittance_controller/doc/userdoc.doctree | Bin 19525 -> 19525 bytes .../doc/userdoc.doctree | Bin 9918 -> 9918 bytes .../diff_drive_controller/doc/userdoc.doctree | Bin 18426 -> 18426 bytes .../doc/controllers_index.doctree | Bin 12882 -> 12882 bytes .../doc/writing_new_controller.doctree | Bin 60202 -> 60202 bytes .../effort_controllers/doc/userdoc.doctree | Bin 8222 -> 8222 bytes .../doc/userdoc.doctree | Bin 8657 -> 8657 bytes .../doc/userdoc.doctree | Bin 12873 -> 12873 bytes .../gripper_controllers/doc/userdoc.doctree | Bin 10371 -> 10371 bytes .../doc/userdoc.doctree | Bin 12929 -> 12929 bytes .../doc/userdoc.doctree | Bin 18101 -> 18101 bytes .../doc/parameters.doctree | Bin 32630 -> 32630 bytes .../doc/trajectory.doctree | Bin 38596 -> 38596 bytes .../doc/userdoc.doctree | Bin 43981 -> 43981 bytes .../position_controllers/doc/userdoc.doctree | Bin 8292 -> 8292 bytes .../doc/userdoc.doctree | Bin 8603 -> 8603 bytes .../doc/userdoc.doctree | Bin 39154 -> 39154 bytes .../tricycle_controller/doc/userdoc.doctree | Bin 5149 -> 5149 bytes .../doc/userdoc.doctree | Bin 10471 -> 10471 bytes .../velocity_controllers/doc/userdoc.doctree | Bin 8292 -> 8292 bytes .../doc/simulators/simulators.doctree | Bin 6157 -> 6157 bytes .../supported_robots/supported_robots.doctree | Bin 20670 -> 20670 bytes humble/.doctrees/environment.pickle | Bin 2605600 -> 2605540 bytes humble/.doctrees/index.doctree | Bin 27593 -> 27593 bytes .../acknowledgements/acknowledgements.html | 82 +++++++++--------- humble/index.html | 2 +- humble/searchindex.js | 2 +- iron/.buildinfo | 2 +- .../acknowledgements/acknowledgements.doctree | Bin 512252 -> 512192 bytes .../doc/contributing/contributing.doctree | Bin 26269 -> 26269 bytes .../differences_to_ros1.doctree | Bin 34672 -> 34672 bytes .../doc/gazebo_ros2_control/doc/index.doctree | Bin 38208 -> 38208 bytes .../getting_started/getting_started.doctree | Bin 49733 -> 49733 bytes .../doc/gz_ros2_control/doc/index.doctree | Bin 36685 -> 36685 bytes iron/.doctrees/doc/project_ideas.doctree | Bin 29987 -> 29987 bytes .../.doctrees/doc/resources/resources.doctree | Bin 83622 -> 83622 bytes .../doc/controller_chaining.doctree | Bin 25452 -> 25452 bytes .../controller_manager/doc/userdoc.doctree | Bin 29330 -> 29330 bytes .../doc/ros2_control/doc/index.doctree | Bin 6372 -> 6372 bytes .../doc/hardware_components_userdoc.doctree | Bin 21564 -> 21564 bytes .../hardware_interface_types_userdoc.doctree | Bin 27199 -> 27199 bytes .../doc/mock_components_userdoc.doctree | Bin 14975 -> 14975 bytes .../writing_new_hardware_component.doctree | Bin 65637 -> 65637 bytes .../ros2controlcli/doc/userdoc.doctree | Bin 28284 -> 28284 bytes .../doc/ros2_control_demos/doc/index.doctree | Bin 49791 -> 49791 bytes .../doc/run_from_docker.doctree | Bin 3337 -> 3337 bytes .../example_1/doc/userdoc.doctree | Bin 81917 -> 81917 bytes .../example_10/doc/userdoc.doctree | Bin 24291 -> 24291 bytes .../example_12/doc/userdoc.doctree | Bin 48835 -> 48835 bytes .../example_14/doc/userdoc.doctree | Bin 37816 -> 37816 bytes .../example_2/doc/userdoc.doctree | Bin 38429 -> 38429 bytes .../example_3/doc/userdoc.doctree | Bin 46688 -> 46688 bytes .../example_4/doc/userdoc.doctree | Bin 37698 -> 37698 bytes .../example_5/doc/userdoc.doctree | Bin 40910 -> 40910 bytes .../example_6/doc/userdoc.doctree | Bin 33113 -> 33113 bytes .../example_7/doc/userdoc.doctree | Bin 106688 -> 106688 bytes .../example_8/doc/userdoc.doctree | Bin 31360 -> 31360 bytes .../example_9/doc/userdoc.doctree | Bin 36633 -> 36633 bytes .../doc/userdoc.doctree | Bin 11527 -> 11527 bytes .../admittance_controller/doc/userdoc.doctree | Bin 19485 -> 19485 bytes .../doc/userdoc.doctree | Bin 9918 -> 9918 bytes .../diff_drive_controller/doc/userdoc.doctree | Bin 18410 -> 18410 bytes .../doc/controllers_index.doctree | Bin 15985 -> 15985 bytes .../doc/writing_new_controller.doctree | Bin 60194 -> 60194 bytes .../effort_controllers/doc/userdoc.doctree | Bin 8222 -> 8222 bytes .../doc/userdoc.doctree | Bin 8657 -> 8657 bytes .../doc/userdoc.doctree | Bin 12873 -> 12873 bytes .../gripper_controllers/doc/userdoc.doctree | Bin 10371 -> 10371 bytes .../doc/userdoc.doctree | Bin 12929 -> 12929 bytes .../doc/userdoc.doctree | Bin 18101 -> 18101 bytes .../doc/parameters.doctree | Bin 31949 -> 31949 bytes .../doc/trajectory.doctree | Bin 38596 -> 38596 bytes .../doc/userdoc.doctree | Bin 43498 -> 43498 bytes .../position_controllers/doc/userdoc.doctree | Bin 8292 -> 8292 bytes .../doc/userdoc.doctree | Bin 9190 -> 9190 bytes .../doc/userdoc.doctree | Bin 3871 -> 3871 bytes .../doc/userdoc.doctree | Bin 39154 -> 39154 bytes .../tricycle_controller/doc/userdoc.doctree | Bin 5149 -> 5149 bytes .../doc/userdoc.doctree | Bin 10471 -> 10471 bytes .../velocity_controllers/doc/userdoc.doctree | Bin 8292 -> 8292 bytes .../doc/simulators/simulators.doctree | Bin 6157 -> 6157 bytes .../supported_robots/supported_robots.doctree | Bin 20670 -> 20670 bytes iron/.doctrees/environment.pickle | Bin 2610438 -> 2610378 bytes iron/.doctrees/index.doctree | Bin 27549 -> 27549 bytes .../acknowledgements/acknowledgements.html | 82 +++++++++--------- iron/index.html | 2 +- iron/searchindex.js | 2 +- master/.buildinfo | 2 +- .../acknowledgements/acknowledgements.doctree | Bin 512252 -> 512192 bytes .../doc/contributing/contributing.doctree | Bin 26269 -> 26269 bytes .../differences_to_ros1.doctree | Bin 34672 -> 34672 bytes .../doc/gazebo_ros2_control/doc/index.doctree | Bin 38208 -> 38208 bytes .../getting_started/getting_started.doctree | Bin 49811 -> 49811 bytes .../doc/gz_ros2_control/doc/index.doctree | Bin 36685 -> 36685 bytes master/.doctrees/doc/project_ideas.doctree | Bin 29987 -> 29987 bytes .../.doctrees/doc/resources/resources.doctree | Bin 85475 -> 85475 bytes .../doc/resources/roscon2023_workshop.doctree | Bin 15191 -> 15191 bytes .../doc/controller_chaining.doctree | Bin 27598 -> 27598 bytes .../controller_manager/doc/userdoc.doctree | Bin 30893 -> 30893 bytes .../doc/ros2_control/doc/index.doctree | Bin 6372 -> 6372 bytes .../doc/hardware_components_userdoc.doctree | Bin 21564 -> 21564 bytes .../hardware_interface_types_userdoc.doctree | Bin 27199 -> 27199 bytes .../doc/mock_components_userdoc.doctree | Bin 14975 -> 14975 bytes .../writing_new_hardware_component.doctree | Bin 65671 -> 65671 bytes .../ros2controlcli/doc/userdoc.doctree | Bin 28284 -> 28284 bytes .../doc/ros2_control_demos/doc/index.doctree | Bin 49816 -> 49816 bytes .../doc/run_from_docker.doctree | Bin 3337 -> 3337 bytes .../example_1/doc/userdoc.doctree | Bin 82059 -> 82059 bytes .../example_10/doc/userdoc.doctree | Bin 24375 -> 24375 bytes .../example_12/doc/userdoc.doctree | Bin 48925 -> 48925 bytes .../example_14/doc/userdoc.doctree | Bin 37903 -> 37903 bytes .../example_2/doc/userdoc.doctree | Bin 38515 -> 38515 bytes .../example_3/doc/userdoc.doctree | Bin 46764 -> 46764 bytes .../example_4/doc/userdoc.doctree | Bin 37786 -> 37786 bytes .../example_5/doc/userdoc.doctree | Bin 41016 -> 41016 bytes .../example_6/doc/userdoc.doctree | Bin 33191 -> 33191 bytes .../example_7/doc/userdoc.doctree | Bin 106731 -> 106731 bytes .../example_8/doc/userdoc.doctree | Bin 31438 -> 31438 bytes .../example_9/doc/userdoc.doctree | Bin 36729 -> 36729 bytes .../doc/userdoc.doctree | Bin 11527 -> 11527 bytes .../admittance_controller/doc/userdoc.doctree | Bin 19525 -> 19525 bytes .../doc/userdoc.doctree | Bin 9918 -> 9918 bytes .../diff_drive_controller/doc/userdoc.doctree | Bin 17142 -> 17142 bytes .../doc/controllers_index.doctree | Bin 16068 -> 16068 bytes .../doc/writing_new_controller.doctree | Bin 60206 -> 60206 bytes .../effort_controllers/doc/userdoc.doctree | Bin 8222 -> 8222 bytes .../doc/userdoc.doctree | Bin 8657 -> 8657 bytes .../doc/userdoc.doctree | Bin 12873 -> 12873 bytes .../gripper_controllers/doc/userdoc.doctree | Bin 10371 -> 10371 bytes .../doc/userdoc.doctree | Bin 12929 -> 12929 bytes .../doc/userdoc.doctree | Bin 18101 -> 18101 bytes .../doc/parameters.doctree | Bin 31949 -> 31949 bytes .../doc/trajectory.doctree | Bin 38596 -> 38596 bytes .../doc/userdoc.doctree | Bin 44004 -> 44004 bytes .../pid_controller/doc/userdoc.doctree | Bin 28515 -> 28515 bytes .../position_controllers/doc/userdoc.doctree | Bin 8292 -> 8292 bytes .../doc/userdoc.doctree | Bin 9190 -> 9190 bytes .../doc/userdoc.doctree | Bin 3871 -> 3871 bytes .../doc/userdoc.doctree | Bin 39154 -> 39154 bytes .../tricycle_controller/doc/userdoc.doctree | Bin 5149 -> 5149 bytes .../doc/userdoc.doctree | Bin 10471 -> 10471 bytes .../velocity_controllers/doc/userdoc.doctree | Bin 8292 -> 8292 bytes .../doc/simulators/simulators.doctree | Bin 6157 -> 6157 bytes .../supported_robots/supported_robots.doctree | Bin 20670 -> 20670 bytes master/.doctrees/environment.pickle | Bin 2682478 -> 2682418 bytes master/.doctrees/index.doctree | Bin 27559 -> 27559 bytes .../acknowledgements/acknowledgements.html | 82 +++++++++--------- master/index.html | 2 +- master/searchindex.js | 2 +- 238 files changed, 138 insertions(+), 138 deletions(-) diff --git a/foxy/.buildinfo b/foxy/.buildinfo index 27b3c884c25..cd7fa650fe0 100644 --- a/foxy/.buildinfo +++ b/foxy/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 8c13c0abfc9eab5a0317d9d49375ded4 +config: 5543e616c332e4dc462ddedcfc9b3896 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/foxy/.doctrees/doc/acknowledgements/acknowledgements.doctree b/foxy/.doctrees/doc/acknowledgements/acknowledgements.doctree index 0e6206b72d9415b188e3b260b682039a6c76aa15..f18f8154052720f0a308f05dae3fbe3b4d2e2e2d 100644 GIT binary patch delta 66 zcmeCO>ayBk#As+W@wUTmTGC9Y;Ka6WMOD& VYGhayBk#AujXnro0!T3o7cX_RPWo?>E{WMph$WRz%PY-(VbWSp3kl#*(hWMN@$ Vo@iofU~ZW_*^otSb0y{5{=ALObnBZj17#85>1Rv4Gfcv6O)osQZ17# UEX>UlO-v2UEt5AtV|I=P0L9o8lK=n! diff --git a/foxy/.doctrees/doc/differences_to_ros1/differences_to_ros1.doctree b/foxy/.doctrees/doc/differences_to_ros1/differences_to_ros1.doctree index 9d0071b5ac0e5ee5264a2dfd3ac6af67819d60d7..cb2ef9394748857078658a93f6383a5ab22eeb7a 100644 GIT binary patch delta 64 zcmdnf&$OqXX@eG{p?O(esYPLCk$zHAT1u)(nuVE>Wm>9ons#>6%Ns|ypi delta 64 zcmdnf&$OqXX@eG{VQy)zK}u6%Nm(>%D diff --git a/foxy/.doctrees/doc/getting_started/getting_started.doctree b/foxy/.doctrees/doc/getting_started/getting_started.doctree index 36dde32b6d1cbef17178df6e26c97f188e8ac17e..6e258cc5a8bc0426d442895afc42beb3676d5fbc 100644 GIT binary patch delta 64 zcmez0#r(gEd4mC?p?O(esYPLCk$zHAT1u)(nuVE>Wm>9onIM!6#Z%K8*M delta 64 zcmez0#r(gEd4mC?VQy)zK}u(^b delta 64 zcmeyeis{QLrVTobhPkD=1}UY*rTUgeiALrrCWc8y#s)@4i6+LT28Kz-iAhN*sg_9= U7Ut%OCZ-1FmdTrA8O5gn0Kgg(`Tzg` diff --git a/foxy/.doctrees/doc/resources/resources.doctree b/foxy/.doctrees/doc/resources/resources.doctree index e48f94e1e0f561ce1889bca44beff7c2450dd348..bbbb891ec4c36bc6cd4a5c76db0db2c228e32ea3 100644 GIT binary patch delta 68 zcmX@v!*a5RWrGT%p?O(esYPLCk$zHAT1u)(nuVE>Wm>9c2+=+c diff --git a/foxy/.doctrees/doc/ros2_control/controller_manager/doc/userdoc.doctree b/foxy/.doctrees/doc/ros2_control/controller_manager/doc/userdoc.doctree index 1ba60561e2901d405daf1c74bea41698ca851fc0..1da4116b2825073654991f4c0de96db060b3480f 100644 GIT binary patch delta 62 zcmezE{@Z69lSzf6{VP=tjQc_w<@k6PN%1 delta 62 zcmezE{@Z3-vX|6#^X>qB(rBR}hd5Vc)l9922kx`)A9iyRnSzf6{VP=tjQc_w)A9iw4xX|6#^X>qB(rBR}hd5Vc)l9922kx` delta 62 zcmcbcc{g)|1EXPXX|6#^X>qB(rBR}hd5Vc)l9922kx`rA8Ka?jSzf6{VP=tjQc_wqB(rBR}hd5Vc)l9922kx`WT65{{> diff --git a/foxy/.doctrees/doc/ros2_controllers/doc/controllers_index.doctree b/foxy/.doctrees/doc/ros2_controllers/doc/controllers_index.doctree index 6c98893f20b0e0d6f892bfa30bf9dd88b7d250f2..b86dcc459ee496591fe394bdae1d76c8cad16655 100644 GIT binary patch delta 71 zcmdm$vMXhS2BVRASzf6{VP=tjQc_wqB(rBR}hd5Vc)l9922kx`69lSzf6{VP=tjQc_wx5}5!1 delta 62 zcmbQEFh^m78>3-vX|6#^X>qB(rBR}hd5Vc)l9922kx`qB(rBR}hd5Vc)l9922kx`qB(rBR}hd5Vc)l9922kx`W@wUTmTGC9Y;Ka6WMOD& RYGhE{WMph$WRz%PY-(VbWSp3kl#*(hWMN@$ Ro@iofU~ZYbxt_5@6aZAW5?TNN diff --git a/foxy/.doctrees/doc/ros2_controllers/joint_state_broadcaster/doc/userdoc.doctree b/foxy/.doctrees/doc/ros2_controllers/joint_state_broadcaster/doc/userdoc.doctree index f45a2289858395d765a9f831586a97864818ee69..c5098c06e50d4ebe143690fadca9d3e6952672a2 100644 GIT binary patch delta 62 zcmZ2&yV`a`0HdLKSzf6{VP=tjQc_wSpa|I5}5!1 delta 62 zcmZ2&yV`a`0Ha}UX|6#^X>qB(rBR}hd5Vc)l9922kx`SpaOU5^ewh diff --git a/foxy/.doctrees/doc/ros2_controllers/joint_state_controller/doc/userdoc.doctree b/foxy/.doctrees/doc/ros2_controllers/joint_state_controller/doc/userdoc.doctree index 429d45f310be8c561c54a18b4cbce1568683ea5f..846649074b56f1b968ca680ae3e312375692ba05 100644 GIT binary patch delta 62 zcmaE<@ls=hAETjpSzf6{VP=tjQc_wqB(rBR}hd5Vc)l9922kx`Wm>9onS#?U4J!lx8B delta 64 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 delta 14399 zcmeHN3s{xK*6xG7`SysUfP&mN$W0X3TsIrMK;jiIpqQ6b*swv_3Ytn*W>lsL?Bp{0 zG~G_7S;x*P(?hw-KaH}Bm8q4L3W|5UA$TiKr&Ir0GvEG_=bYnn;`yKdIsYY}X4ZOV z&6+jy&CFVBHhVgw_H;(opGqpPEH_vxmsZ+s(WXRmqS2C^P?VTtNK7;*C#4t?ijvGl zMV1m%QCgbOXiiQs7){00N1Cm3_G@}jn%S?HL2pP&PfAEnFw&#_1FD>j@&BqyyNxVe zRJo+M#8S4zZp(;YR=ybj|IK>h<3Q6Qy4mPN%C=JJxI_Br-wTPh757E5=f zxzp9Y!|7{-*J2e=0@9(Z;M~`umh1dTpi; z>$;*1rS(xmsXo<*zPQfc-EPyCRai>yx7!A?6U}5GZ3rJgGaLF-{Zx1QRKy_3NV5hF zVQoi=JH2d4qn2z>ni=8E7W=wrsXiu{_MH?=r-WzGeThEwml?j?!i7d3mbp<5q(4Ww zOL25tWH^0yd~f=^UpoCb!;`+4PH5l3-gIlE5sXcwo9`MzKN+3RGOud&v@jx-dW1yN zr2!-9@L(U>Ro9zl*1Oa7{_b>ibQ&$s^P#x`1L@dNLn)0(poXDfE6mW6okB;H`p~T* zp>$ymA3uujALiYd(vQ}KxYPT`dC{%o2hfLMwXV%fqtDc4x!CkHYq&4%8rO^ZhK{XL zH;zd^*Z}|8=Wnx_{_gV^Sq#OciH1a@*;HgUCMKFpCWFablx8#;jHwo*CCyNhmXc^m zvd?e&2bTrA>%*Z z4Mzr#qR%9HDQCl*?h1FOvtx|^(yrJW3p>*f;KGHDy=)nFo@a`Dp!1kkbtS9Zt z?n8el=?hYx&hwc!J%>)M)^n|&8vD>4GvYzBmbREo@HN1+@e%aFjNWvrZzA4m(rCIN zFq#e@tEWq=6D2L3JZ~5sI>wV8$c>=A{kz>oFug$fVval94_ayn6c+wBT>68AjK}^?}3I?XC~v zpRI6sUn*soK*ZgmE zzD^ZK&|_hq|7GV49s0lP`Qj(!fA6W9G4&Q7m2$gNWi%ESr6i@9l1dYjF^EYu8x2MS z_$p(mDJ{ipOh`yD8WW0>|FMs{O>d8G-D&5LQM5eY``43oo37n@{{P8RqiNNH{a-m* z1vA6J)BDhf(mu4l;J?j(m8W=8ed%xVW8Ni|l{W3NMHce|c3bc4l45<5p=s~Dbg-Rb^1H_dTG&4IpshCONE8F5lXOn~7#h(K zfbk9FlMQZ~^C(jv<=fa0K_{=%(lE$XGaDkSt^i(X>x*#|CfWtd78NWuFPm>)X^*zH zK%4aj7N@cJ9*a|0{D8$7EN)_P5sSZIaTSXnvFO6$uUO#fS%1Rf5*B~M0$0xZGZa-; zTrcY{SRBFP4lNWHkdlzt9u_LFC*C-sVhxO8~eFd;UsJ16?YD~ugSxWPqap!IZbdl*%~?OO~K)W zYvd;e#d1kprW*Oa7X^n)P$O%K;&>Y_Lydg&VZq^2)W|v}I9!ezxvp7oomHI8`io$3 zS!(1z1jlnVxHL6#PJ-ZYd1~Yz=L!y&s74-eUU0ZfHS$|O3J#a5Mjq>9;979GYUJ2( z!QqnC$a(34JFA(4Y)=TziH5>qn7m1*kF!TyYzZox%X~;Z-%lXM@}71vxz<~| z=(wkY=%i;1^r@#!H23K-kSXLn9mX}VJwtz6GOIHrkb!}dz{p6J0>F-PPV(*D!ZX<NXNv$&u-HE@wXdK6KW0YjT|}A@!iWB&oFjln@c?N-J{v~+f}gxdr1HryGonr zFn+3;)l0hMX#84J<_h&s-)cUVrB-3+m1CMsJz1d*fg@OZ09cxKTm#RKt&YNrn*Y#2 z9e7jiX{j?icTYIp&4bd__kcNt{74f##}G2K=dJCIxtF#5U8D}jvMz117V1}TXtO+|b}_i0tJ|g?4h|31A?&FkQtT7C z8aGF-MxN;-oe)|N`O7`n&5SS7@#tWtpQTH5_yx-O?$S}A@%bqE!{2VF12palm5vJ? zYsbqwe!C8|%C9kMpaag?c6X^w=(10j|J*ZO_y!i{cw>fqqMvjYm7VOVp02uRb}2xP zb@W*z!>6cR;2O{NuIss7B2)`-T&k19Jf(ADqQf@G@Al9@2mILZBa_YxMP=!_Ej?7k zLq^;bN$i_zy8dj^qb@qOc$UtM{j#0}I65UOK1;XDU1||}I!biU8h)#LVp*%SCP!DPZjL0iI3~^4y-+F{93A^~+a##h zAJ7dNAe~~zFY3bB#dEq=7I95CkhMr8p7~wSWwO(kbm45}1>J1+!c}Pa>4L6|wOs^i z?M2;mX6XPb){E#_*d-7?d;!=`?jj*<6SA5sz|I&?f>?M5usf~;`@Fw4n7!Pg8_hmB z5A2_xPz*919?wOs`jldk|)bP2G!H6)yUi|qVPV1sH%1e<#m*b zD$XFqvx=)o@jLvN`Bgyjw4!$zP&}>hLyD&rkx22hA_*y;R%9Z@(~5~m@w8$VQar7g zhZIjMmLbKnibs*cP}sT-DV|Y12UMj^vuu%DF-DfrEMyHave+MVZ?eC_qC2!Vb)|$| zZGhd-x0d*`=D+DoxX+d|JtLlMYaa1-+~-1~B;>suZ@7|5K{9tg;?7*}CV`GQT9U7{ z?{*`-U4-Zf9hsq^Ilahz3i-7=Sthabrp!BumxQFJqqq+_ zt&lT3$uNa{#fw-KGPEBlR>v3q>yF)WUWHF1d`Pfi>oK8V#aWQ z2C6xAX#AoadVuHC#6ag@GBJZQX*M? ztJH(ZPASprhZJ&5wD+=+ftE7!yd~yx_Gpfax5G7!m=rA&O=OG4EYMe&y=y`O^Gdg3@m`_sD!b{of=MzM+<=Wa=1?*se)v^9wot!dnb}H zO4DbP$d3}s-VFWu{gszTCb6JbVFtVNh`)rSr{nSzQm&8-^KtWX^y)OSNFkR@CrcFa z#td9oF0gVIsZhwD?jZ{l^8Ps}yFh}8cfCRUn7)A6*?yhV>_Y`4R6-uiHj{f5a$ONw zDzPoqU?$wA3s`flQ~nnV36PNYVsl?65sti4GG5_#ZGdd*&^(eQc*o!}v}cTmb7X!_ z`E9IU0JHAf&#AL<0r8QL_j2r5NaiYJOa+-QNVaJaIS0YwlZ(k<1^Mh=(gw&Mmykaz zNX0U89FWPCB;5rr`Or0_g25#p$%5~PO>*J~UAUv>elk#!+8tXS!1M8p6=wJA<-cbI zh*d0rFOmEZ(Mw2rvYi{q5J$sGGC^W>>p>j+LM3}`gVXRcRm59D-pc_W8qW8Hxghkb zw{TwtIv*->iZ5SXj*4g8)op>muPkJ_W1M|Lp1>i1_Y!-lXf5`sUJm1c z%PD8CKj4(yQiE3z@LrCuYVmX-DF&*167M0-^9^}&9V$5-1y@NuA!(|&a%0W)VDa%3 zMJF55Kt5(EFTr5o!3MFKMrife1Z(ttBP=D7o{kthxnGcCx!Qh*I{=$lOc~_G`3w&c z7v1?ZnWd1?&yq(J@}1|%5Emiv{qM;$u!?``wj$s%t*r13=R9pM;wl2~<$zU$%`aKN zK5(R=?4y^!z7`AEm#_)9>2vcy2(~FK29gYRWSHaTD>!-63g`qrH;jF=89McS2s&lG zikg8`KKu)RM9HHMgEhZ88t~3fu$zxKS4jIh*$&aryRVZ?62e}NC2x?)3i(heX#mkfLqGJ+ zIWF8aLxp}BDs;+Fp+|=5Yz)>K?u@|-^u#$j?uMZeeK06R2Mk;b3v41I12JBJzYnqc zK+(*}EpSy8ycH_3I zTmg1`TV;{k(T#hz8@H<)*L*8iY4e!3a8VIFF&8geQUb4Pd<7j9Z-M9Gn`n-mZz8BL z2!skFK&UYMg9>9ms4(z@N_<7WiGagR1QiB*P+_D86@DG4a1%j=@f}pSiJ-zw1Ql)~ zsQ4y=8Y4QWa1%j=u^d#miJ-zw1XT+=?;sPnz17^@YHn>cH@2GFTFp(Z=9X4-L#w%+ z)!fW#Ze=w$vYOji%}uQ47FKfutGRvE+`MWYaaMENs<~;^*7IIqOf|Qxnj2PaZE<}3 zHi69L6nkg~31)ZgfT-e>1L!d>GLNb2d$Z;tQY7nomrNDNJ$DLZ@lH6=7g_U8aLX52 z+%E9L7ugHD$V#XJ-y_R~w6`bQn=k3vj`zrDXpovA0=>!xHIp!?CNz^^s1`Jn=>iO7 zZOtSBXwUb-fnH^^-zQU{+WJ13F5_pluJ&Q|SEc@J;0GiH8fJa~He6+|e!vw-yNLz3 z(%ldpTxG4hiBaY`KwvP-ZF14G^bbiAJVjP~2s1v-_I^l8Mf>_Nw!Xz>5G(qKq(Q@T zAHh^kGxv{S4!nPRB-<51V#yPBYfcIn(Z$~Tm}J0%Bvii4>k|?UbjBxS3RLSpff%EU z{rCxluw87<9u98ZL#D|*2{|6mjvL?=FX~e=651Dh3Kn;<1D`tE4<@pEQ=om!XCx9D zDn28|0NybZ2DZ74D>u)BBLIecnhJ&-W6htD5}7A8AEmO;0WQ95t93U zdW6LvB#|;t=AGB9NC9WbYwJoazsfPV%~*9)gg#gH;_OgJhm!-ppp9havmle~9Ej_!e*&0?>9=cbLS& zJKoO2q)g`dXW|s**`@Pk*+<~}aU^C6+8E+?Wh#7$qwM`7q+aF;YR6P24U)szLoFl^ zUhej_kRW(`yVL?n%yCxHN*;!)qm{(SJas*s&)&GA3t*@3^g2BV#19c`pi=4tTO8En^8 zT>ze}5#Tbc=h&0S$>TEKq}GfA*1S>Hv$PXrwm_E8WLsW=7le0CkXZtGZKlwlb`tJ^ zb8PKN2%pX|a*EW5_I`6%@Bul9IZnZjImZG{lh>fya~hV3r`)yz_T@Dl{2XwGE>!08u;W_TpU#stUi>H3W$-)F8oM=j1&niwjl4igs+3!s;}*m@aL=6_n5P0+ z9vrZ$z&QbwtH4yzWw8pJ@aA2Xs(`mA2kujW!`^pPp*_3%!MOas&HxI4MqelJm=6aw z2Reb$0UW48CAW5YOa&Z5$7&V0S9Dpc0_Xa39kl>d2_>t=FzZy2bzlJ)(x3umLWx}k zHi1bX!BimHp99aT!1F@lS|pgNI2JCk9wj)?840gLpk$+pxac|XvI?vZ`{T(1P*+z0=`vZ+o`3Rpbmff9PY&2NC`zJscG9WYXvZ01s)N=htohpi2!()a+Kge zGcJq67yv zLKE2jx(bvDV5m;<#XeZ01`cwF8BWAr$+#!2@;W~uu7{1io0+?Yh#Nus7C9M~%+eD=k`ssR` zA1hp~@$<4n!}x9u>_Cks0p)YL!Fo2rrqO$#{3K@sV>d_)nV_a diff --git a/foxy/index.html b/foxy/index.html index 896bf2085c7..60e54f3e8b5 100644 --- a/foxy/index.html +++ b/foxy/index.html @@ -152,7 +152,7 @@

Development Organisation and Communication -

Built on 2023-12-30 at 05:31 GMT

+

Built on 2023-12-31 at 05:31 GMT

diff --git a/foxy/searchindex.js b/foxy/searchindex.js index 08ca0947efe..0cf27bf5fdd 100644 --- a/foxy/searchindex.js +++ b/foxy/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["doc/acknowledgements/acknowledgements", "doc/contributing/contributing", "doc/differences_to_ros1/differences_to_ros1", "doc/getting_started/getting_started", "doc/project_ideas", "doc/resources/resources", "doc/ros2_control/controller_manager/doc/userdoc", "doc/ros2_control/doc/index", "doc/ros2_control/hardware_interface/doc/fake_components_userdoc", "doc/ros2_control/ros2controlcli/doc/userdoc", "doc/ros2_control_demos/doc/index", "doc/ros2_controllers/diff_drive_controller/doc/userdoc", "doc/ros2_controllers/doc/controllers_index", "doc/ros2_controllers/doc/writing_new_controller", "doc/ros2_controllers/effort_controllers/doc/userdoc", "doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/forward_command_controller/doc/userdoc", "doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/joint_state_broadcaster/doc/userdoc", "doc/ros2_controllers/joint_state_controller/doc/userdoc", "doc/ros2_controllers/joint_trajectory_controller/doc/userdoc", "doc/ros2_controllers/position_controllers/doc/userdoc", "doc/ros2_controllers/tricycle_controller/doc/userdoc", "doc/ros2_controllers/velocity_controllers/doc/userdoc", "index"], "filenames": ["doc/acknowledgements/acknowledgements.rst", "doc/contributing/contributing.rst", "doc/differences_to_ros1/differences_to_ros1.rst", "doc/getting_started/getting_started.rst", "doc/project_ideas.rst", "doc/resources/resources.rst", "doc/ros2_control/controller_manager/doc/userdoc.rst", "doc/ros2_control/doc/index.rst", "doc/ros2_control/hardware_interface/doc/fake_components_userdoc.rst", "doc/ros2_control/ros2controlcli/doc/userdoc.rst", "doc/ros2_control_demos/doc/index.rst", "doc/ros2_controllers/diff_drive_controller/doc/userdoc.rst", "doc/ros2_controllers/doc/controllers_index.rst", "doc/ros2_controllers/doc/writing_new_controller.rst", "doc/ros2_controllers/effort_controllers/doc/userdoc.rst", "doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/forward_command_controller/doc/userdoc.rst", "doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/joint_state_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/joint_state_controller/doc/userdoc.rst", "doc/ros2_controllers/joint_trajectory_controller/doc/userdoc.rst", "doc/ros2_controllers/position_controllers/doc/userdoc.rst", "doc/ros2_controllers/tricycle_controller/doc/userdoc.rst", "doc/ros2_controllers/velocity_controllers/doc/userdoc.rst", "index.rst"], "titles": ["Acknowledgements", "Pull Requests", "Differences to ros_control (ROS1)", "Getting Started", "Project Ideas for GSoC 2022", "Resources", "Controller Manager", "API Documentation", "Fake Components", "Command Line Interface", "Demos", "diff_drive_controller", "ros2_controllers", "Writing a new controller", "effort_controllers", "Force Torque Sensor Broadcaster", "forward_command_controller", "IMU Sensor Broadcaster", "joint_state_broadcaster", "joint_state_controller", "joint_trajectory_controller", "position_controllers", "tricycle_controller", "velocity_controllers", "Welcome to the ros2_control documentation - Foxy!"], "terms": {"The": [0, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 15, 17, 18, 19, 20, 22, 24], "project": [0, 1, 24], "ha": [0, 1, 3, 4, 5, 13, 19], "receiv": [0, 2], "major": 0, "contribut": [0, 1, 5], "from": [0, 1, 2, 3, 5, 6, 8, 9, 11, 13, 15, 17, 20, 22, 24], "follow": [0, 1, 2, 3, 4, 8, 9, 10, 12, 13, 20, 24], "compani": [0, 5], "institut": 0, "support": [0, 2, 3, 5, 8, 9, 13, 20, 24], "rosin": 0, "ro": [0, 1, 3, 4, 6, 8, 9, 19, 24], "industri": [0, 3, 4], "qualiti": [0, 1], "assur": 0, "robot": [0, 2, 4, 10, 11, 15, 22, 24], "softwar": [0, 3], "compon": [0, 5, 6, 7, 11, 15, 17, 22, 24], "more": [0, 1, 2, 3, 4, 8, 13], "inform": [0, 8, 13, 24], "http": [0, 1, 3, 4], "eu": 0, "thi": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 13, 14, 15, 16, 18, 19, 20, 21, 23, 24], "fund": 0, "european": 0, "union": 0, "": [0, 1, 3, 4, 5, 10, 13, 24], "horizon": 0, "2020": 0, "research": [0, 5], "innov": 0, "programm": 0, "under": [0, 5, 13, 24], "grant": 0, "agreement": 0, "732287": 0, "first": [1, 2, 13], "thank": 1, "you": [1, 2, 3, 5, 8, 13, 24], "consid": [1, 9], "ros2_control": [1, 3, 5, 6, 8, 10, 13], "As": [1, 13], "an": [1, 2, 3, 4, 5, 8, 9, 13, 20], "open": [1, 20], "sourc": [1, 3, 5, 13], "we": [1, 4, 5], "welcom": 1, "each": [1, 3, 4], "contributor": 1, "regardless": 1, "background": 1, "experi": 1, "To": [1, 2, 3, 24], "reduc": [1, 8], "entropi": 1, "univers": [1, 4, 5], "our": [1, 3, 4, 5], "vivid": 1, "collabor": 1, "environ": [1, 3, 5], "have": [1, 2, 3, 4, 8, 10, 13, 20], "set": [1, 2, 4, 5, 8, 9, 14, 16, 18, 20, 21, 23], "up": [1, 5, 10], "some": [1, 4, 5, 20, 24], "standard": [1, 2, 3, 4, 5, 9, 12, 15], "method": [1, 2, 3, 13], "requir": [1, 2, 3, 4, 13], "ar": [1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 15, 17, 18, 20, 22, 24], "limit": [1, 4, 5, 11, 22], "scope": 1, "your": [1, 2, 5, 8, 13, 24], "pr": 1, "should": [1, 2, 4, 5, 6, 9, 10, 13, 18], "do": [1, 2, 3, 4, 5, 6, 13, 20], "one": [1, 2, 3, 4, 5, 13, 15, 24], "thing": 1, "avoid": [1, 13], "ad": [1, 4, 8, 13, 18], "random": 1, "fix": [1, 2], "put": [1, 13], "those": [1, 2, 3, 4, 8, 13, 15, 20], "separ": [1, 2, 3], "give": [1, 3, 5, 24], "descript": [1, 2, 5, 13], "titl": 1, "add": [1, 2, 13], "short": [1, 13, 24], "summari": [1, 5, 24], "make": [1, 2, 4, 5, 24], "sure": [1, 4, 24], "pipelin": 1, "i": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 22, 23, 24], "green": 1, "don": 1, "t": [1, 6], "afraid": 1, "review": [1, 4, 24], "maintain": [1, 3, 4], "new": [1, 5, 12, 20, 24], "code": [1, 2, 4, 5, 13], "test": [1, 4, 8, 10, 13], "If": [1, 2, 3, 6, 13, 15, 20, 24], "function": [1, 2, 3, 4, 5], "alwai": 1, "exercis": 1, "serv": [1, 3, 4], "live": [1, 5], "origin": [1, 5], "intent": [1, 8], "section": [1, 2, 13], "target": [1, 12, 13, 20], "also": [1, 2, 3, 4, 5, 13], "read": [1, 2, 3, 13, 18, 20], "understand": [1, 4], "how": [1, 4, 5, 13], "handl": [1, 2, 4, 5, 20], "organ": [1, 5, 24], "guidelin": 1, "especi": [1, 2], "applic": [1, 3, 5, 6], "ros2_control_demo": [1, 3, 24], "pleas": [1, 24], "keep": [1, 13], "mind": [1, 13], "work": [1, 4, 5, 11, 13, 14, 16, 20, 21, 22, 23, 24], "fork": 1, "when": [1, 2, 3, 4, 8, 9, 13, 20], "submit": [1, 5], "That": [1, 13], "wai": [1, 13, 15], "main": [1, 3, 4, 5, 6, 8, 13, 24], "repo": [1, 3], "clean": [1, 4], "featur": [1, 5, 8, 24], "branch": 1, "all": [1, 2, 3, 4, 5, 8, 10, 13, 18, 20], "check": [1, 2, 3, 4, 8, 10, 13, 20, 24], "satisfi": 1, "befor": [1, 2, 6, 13], "thei": [1, 2, 3, 4, 5, 8, 9, 12, 13, 20], "can": [1, 2, 3, 4, 5, 7, 8, 13, 15, 19, 20, 24], "must": 1, "approv": 1, "two": [1, 3, 4, 6, 13, 15], "explicitli": 1, "onli": [1, 2, 3, 4, 5, 6, 9, 13, 15, 20], "except": 1, "other": [1, 2, 3, 5, 13], "activ": [1, 2, 3, 9], "where": [1, 4, 13], "back": 1, "traceabl": 1, "discuss": [1, 5, 24], "suffici": [1, 15], "note": [1, 3, 10, 24], "still": [1, 2, 3], "encourag": 1, "help": [1, 6, 9, 13], "u": [1, 6], "increas": 1, "pace": 1, "veri": [1, 2, 4], "like": [1, 2, 3, 4, 5], "find": 1, "issu": [1, 4, 24], "nobodi": 1, "els": 1, "see": [1, 2, 3, 10, 13, 15, 17, 20], "squash": 1, "commit": 1, "messag": [1, 4, 6, 9, 15, 17, 18, 20, 24], "comment": 1, "fixup": 1, "linter": 1, "us": [1, 2, 3, 4, 5, 8, 9, 12, 14, 15, 16, 17, 18, 19, 21, 23, 24], "pre": 1, "correct": [1, 2, 20], "header": [1, 13], "address": [1, 4], "similar": [1, 3, 5], "mean": [1, 2, 8], "result": [1, 3], "exactli": 1, "1": [1, 3, 4, 5, 8, 13], "cowboi": 1, "style": [1, 13], "over": [1, 4], "weekend": 1, "It": [1, 2, 3, 4, 6, 15], "doesn": 1, "matter": 1, "trivial": [1, 8], "peopl": 1, "chanc": 1, "proper": [1, 20], "Be": 1, "awar": 1, "impact": 1, "time": [1, 2, 4, 5, 6, 8, 9, 11, 13, 15, 20, 24], "proport": 1, "its": [1, 2, 3, 4, 5, 15, 17], "ping": 1, "them": [1, 3, 4, 6, 13, 18], "necessari": 1, "repeatedli": 1, "start": [1, 2, 5, 6, 9, 10, 13, 20, 24], "part": [1, 4, 5, 13], "For": [1, 3, 4, 5, 8, 13, 20], "detail": [1, 2, 3, 8, 13], "thoma": 1, "cokela": 1, "info": 1, "tutori": 1, "sphinx": 1, "rest_syntax": 1, "html": 1, "id8": 1, "type": [1, 2, 3, 5, 6, 9, 12, 13, 15, 17], "develop": [1, 5, 8, 10, 13], "stabl": [1, 4], "against": 1, "accept": [1, 13, 14, 16, 21, 23], "api": [1, 4], "abi": 1, "chang": [1, 2, 3, 5, 9, 13, 20], "e": [1, 2, 3, 4, 5, 8, 13, 14, 15, 16, 18, 20, 21, 23, 24], "name": [1, 2, 3, 5, 6, 8, 9, 13, 15, 17, 18, 20], "convent": 1, "master": [1, 3, 4], "semi": 1, "binari": 1, "good": [1, 4], "same": [1, 3, 4, 15], "build": [1, 13], "dai": 1, "2": [1, 3, 5, 8], "ros_distro": 1, "g": [1, 2, 3, 4, 5, 8, 13, 14, 16, 18, 21, 23, 24], "foxi": [1, 3, 5], "galact": 1, "releas": [1, 3, 5], "version": [1, 4], "non": [1, 5, 15], "brake": 1, "distribut": [1, 24], "three": [1, 2, 3, 13], "stage": 1, "current": [1, 4, 9, 20], "futur": [1, 5], "compat": [1, 2, 5], "framework": [1, 2, 4, 5, 6, 8, 9, 10, 12, 13, 24], "packag": [1, 2, 3, 10, 13, 15, 17, 19, 20, 24], "show": [1, 3, 5, 6, 9], "direct": [1, 2, 4, 13], "local": [1, 18], "possibl": [1, 3, 4, 13, 20], "core": 1, "immedi": 1, "depend": [1, 3, 13, 20], "fail": 1, "expect": [1, 4, 20], "after": [1, 11, 13, 22], "next": [1, 20], "sync": 1, "abl": 1, "potenti": [1, 13], "mid": 1, "robothw": 2, "rigid": 2, "ani": [2, 3, 5, 13], "imposs": 2, "extend": [2, 3, 4, 13], "exist": [2, 3, 4, 6, 13], "addit": [2, 4], "sensor": [2, 3, 4, 8, 12], "actuat": [2, 3, 4, 8], "tool": [2, 4, 5], "without": [2, 3, 8, 13], "combinedrobothardwar": 2, "drawback": [2, 24], "solut": [2, 5], "optim": 2, "combin": [2, 8, 20], "extern": [2, 3, 4, 8], "defin": [2, 3, 4, 8, 12, 13, 15, 17, 18, 20], "system": [2, 3, 4, 5, 10, 20, 24], "composit": [2, 5], "basic": [2, 3, 4, 5, 13], "physic": [2, 3, 8], "cell": [2, 15], "surround": 2, "describ": [2, 3], "multi": [2, 3, 4, 5, 10], "gripper": [2, 3, 8], "out": [2, 11], "box": 2, "allow": [2, 20], "joint": [2, 3, 5, 11, 12, 13, 14, 16, 18, 21, 23, 24], "posit": [2, 3, 5, 6, 9, 10, 12, 14, 16, 20, 21, 23], "veloc": [2, 3, 5, 10, 12, 20, 21, 23], "effort": [2, 12, 14, 16, 20], "hard": [2, 4], "data": [2, 3, 4, 8, 19], "approach": 2, "doe": [2, 13, 20], "enforc": [2, 20], "string": [2, 8, 13, 18, 20], "ensur": [2, 5], "constant": 2, "hardware_interfac": [2, 3, 8, 12, 13], "In": [2, 3, 4, 5, 13], "had": 2, "request": [2, 24], "itself": 2, "took": 2, "care": [2, 4, 13], "regist": 2, "resourc": 2, "conflict": [2, 3, 4], "resourcemanag": 2, "take": [2, 4, 13, 18], "state": [2, 3, 4, 5, 8, 9, 10, 12, 13, 15, 18, 20], "avail": [2, 3, 5, 9, 10, 13, 18, 20], "enabl": [2, 3, 4, 5, 10, 15], "anymor": 2, "controllermanag": 2, "implement": [2, 3, 4, 5, 8, 10, 11, 12, 13, 20, 22, 24], "systeminterfac": [2, 8], "granular": 2, "sensorinterfac": 2, "actuatorinterfac": 2, "abov": [2, 20], "choos": 2, "suitabl": [2, 5], "strategi": [2, 20], "decid": 2, "which": [2, 3, 4, 5, 9, 11, 13, 15, 17, 20, 22], "case": [2, 4, 5, 13, 20, 24], "mayb": 2, "sens": [2, 3, 15], "multipl": [2, 3, 20], "constructor": [2, 13], "initi": [2, 13], "variabl": [2, 4, 13], "need": [2, 3, 4, 5, 13], "commun": [2, 3, 4, 5], "default": [2, 3, 8, 18, 20], "configur": [2, 3, 4, 5, 6, 9, 10, 13, 20], "paramet": [2, 5, 13], "pars": [2, 7], "urdf": 2, "snippet": 2, "hardwareinfo": 2, "here": [2, 7, 13, 19, 20], "cross": 2, "valu": [2, 3, 4, 8, 13, 20], "export_": 2, "_interfac": 2, "joint_a2": 2, "extract": [2, 11, 22], "sensibl": 2, "stop": [2, 5, 6, 9, 10, 11, 22], "usual": [2, 8, 13], "includ": [2, 4, 9, 13], "command": [2, 3, 4, 5, 7, 8, 10, 12, 13, 14, 16, 20, 21, 23, 24], "safe": [2, 11, 13, 20, 22], "interrupt": [2, 6], "stream": [2, 5], "write": [2, 3, 4, 5, 12], "exchang": [2, 4], "equival": 2, "forget": 2, "pluginlib_export_class": [2, 13], "macro": [2, 3, 13], "end": [2, 3, 13, 20], "cpp": [2, 13], "file": [2, 3, 4, 5, 6, 8, 13, 20], "creat": [2, 3, 5, 8, 13], "xml": [2, 13], "librari": [2, 3, 4, 9, 13], "pluginlib": [2, 3, 13], "exampl": [2, 3, 4, 5, 8, 9, 10, 15, 20, 24], "rrbotsystempositiononlyhardwar": [2, 3], "excel": 2, "jointtrajectorycontrol": [2, 9], "real": [2, 4, 5, 8, 13, 18, 20, 24], "critic": [2, 4], "mark": 2, "controllerinterfac": [2, 3, 9, 13], "member": [2, 13], "init": [2, 13], "call": [2, 3, 13], "lifecycl": [2, 3, 5, 6], "declar": [2, 13], "state_interface_configur": [2, 13], "command_interface_configur": [2, 13], "design": [2, 3, 4, 5, 24], "updat": [2, 3, 4, 13], "manag": [2, 4, 5, 7, 9, 13, 24], "option": [2, 6, 8, 9, 13, 15, 18, 20], "on_configur": [2, 13], "on_activ": [2, 13], "on_deactiv": [2, 13], "deactiv": [2, 3], "final": [2, 5], "joint_trajectory_plugin": 2, "ros2": [3, 4, 5, 6, 9, 10, 13, 24], "instal": [3, 13], "automat": [3, 11, 22], "want": 3, "workspac": [3, 13], "folder": [3, 5, 13], "wget": 3, "raw": 3, "githubusercont": 3, "com": [3, 4], "vc": 3, "import": [3, 13, 20], "src": [3, 13], "found": [3, 7, 13, 19, 20, 24], "github": [3, 4, 7, 12, 24], "repositori": [3, 4, 7, 12, 24], "figur": 3, "cm": 3, "connect": 3, "abstract": [3, 5], "side": [3, 4, 5], "entri": [3, 13], "point": [3, 12, 13, 24], "through": [3, 4, 9, 11, 12, 13, 20, 24], "servic": [3, 4, 6], "node": [3, 6, 8, 9, 10, 13], "executor": 3, "so": [3, 13], "integr": [3, 4, 5, 8, 10, 20, 24], "custom": [3, 8, 15], "setup": [3, 4, 13], "recommend": [3, 5], "ros2_control_nod": 3, "controller_manag": [3, 4, 6, 9, 13, 20], "manual": [3, 4, 13, 24], "assum": 3, "On": 3, "load": [3, 6, 9, 10, 13], "unload": [3, 6, 9], "access": [3, 4, 5, 6, 8, 13], "match": 3, "provid": [3, 4, 5, 6, 8, 10, 12, 13, 20, 24], "report": [3, 4, 18, 24], "error": [3, 4, 13, 20], "execut": [3, 13, 20], "loop": [3, 5, 13, 20], "output": [3, 4, 5, 9, 15, 17, 20], "rm": 3, "driver": [3, 5], "re": 3, "usabl": 3, "flexibl": 3, "motor": [3, 4], "encod": 3, "deal": 3, "theori": [3, 24], "compar": [3, 4, 5], "refer": 3, "measur": [3, 8, 15], "base": [3, 5, 9, 11, 13, 22], "calcul": 3, "input": [3, 4, 5, 11, 20, 22], "visit": 3, "wikipedia": [3, 24], "object": 3, "deriv": 3, "controller_interfac": [3, 4, 9, 13, 15, 17], "export": [3, 13], "plugin": [3, 13], "forwardcommandcontrol": 3, "lifecyclenod": 3, "class": [3, 5, 9, 13], "machin": [3, 4], "document": [3, 4, 5, 8, 19], "latest": 3, "interact": [3, 5, 6, 9], "list": [3, 5, 9, 10, 12, 13, 20, 24], "definit": [3, 12, 13, 15], "srv": 3, "controller_manager_msg": 3, "while": [3, 4, 5, 10, 20], "directli": [3, 24], "line": [3, 7, 13], "via": 3, "friendli": 3, "cli": [3, 7, 9], "auto": 3, "complet": [3, 12], "rang": 3, "common": [3, 4, 12, 24], "capabl": [3, 4], "readm": 3, "md": 3, "ros2controlcli": 3, "realiz": [3, 5], "repres": 3, "dynam": [3, 13], "There": [3, 6, 13], "complex": [3, 4, 5], "dof": 3, "differ": [3, 4, 5, 14, 15, 16, 21, 23], "between": [3, 4, 19, 20], "transmiss": 3, "humanoid": 3, "hand": 3, "logic": 3, "channel": 3, "kuka": 3, "rsi": 3, "A": [3, 5, 13, 20], "relat": [3, 4, 5], "link": [3, 5], "forc": [3, 5, 9, 12], "torqu": [3, 12], "simpl": [3, 4, 5, 10, 13, 19], "valv": 3, "mandatori": [3, 15, 17, 20], "dc": 3, "arduino": 3, "board": 3, "modular": [3, 5], "independ": 3, "explan": 3, "given": [3, 20], "tag": [3, 13, 24], "chosen": 3, "structur": [3, 4, 13, 20], "track": [3, 24], "togeth": 3, "xacro": 3, "hereund": 3, "rrbot": [3, 10], "parallel": [3, 8], "effector": 3, "rrbotsystempositiononli": 3, "ros2_control_demo_hardwar": [3, 10], "param": [3, 6, 8], "example_param_write_for_sec": 3, "example_param_read_for_sec": 3, "joint1": [3, 8, 9, 10, 20], "command_interfac": [3, 20], "min": 3, "max": 3, "state_interfac": [3, 20], "joint2": [3, 9, 10, 20], "rrbotforcetorquesensor1d": 3, "forcetorquesensor1dhardwar": 3, "0": [3, 8, 18, 20], "43": 3, "tcp_fts_sensor": 3, "frame_id": [3, 15, 17], "rrbot_tcp": 3, "min_forc": 3, "100": 3, "max_forc": 3, "rrbotgripp": 3, "positionactuatorhardwar": 3, "23": 3, "3": [3, 4], "gripper_joint": 3, "50": [3, 20], "yaml": [3, 4, 20], "instead": [3, 8, 19, 20], "pure": [3, 20], "launch": [3, 6, 8, 10], "stack": [3, 5], "could": [3, 5, 13, 20], "altern": [3, 20], "script": [3, 4, 13], "skeleton": 3, "orbit": 4, "around": [4, 15, 17], "everyth": [4, 13], "goal": [4, 5, 20, 24], "long": 4, "run": [4, 5, 6, 9], "task": [4, 5, 11], "interfac": [4, 5, 6, 7, 8, 10, 12, 13, 15, 17, 24], "user": 4, "thread": 4, "protect": [4, 13], "memori": [4, 13], "buffer": [4, 24], "control_toolbox": [4, 24], "second": [4, 9, 13, 24], "frequenc": 4, "high": 4, "rate": [4, 20], "khz": 4, "variou": 4, "anoth": 4, "heartbeat": 4, "signal": 4, "sent": 4, "onc": [4, 5], "per": [4, 15], "500": 4, "hz": 4, "failur": 4, "relev": [4, 24], "draft": 4, "trigger": 4, "skill": 4, "prefer": 4, "c": [4, 6, 9, 13], "trick": 4, "mentor": 4, "benc": [4, 5], "magyar": [4, 5], "deni": [4, 5], "\u0161togl": [4, 5], "size": 4, "350": 4, "hour": 4, "difficulti": 4, "about": [4, 8, 24], "org": 4, "gener": [4, 5, 13, 20, 24], "envis": 4, "simul": [4, 8, 10], "gazebo": 4, "ignit": 4, "showcas": [4, 5], "grace": 4, "degrad": 4, "architectur": [4, 5], "roadmap": [4, 24], "place": [4, 13, 20], "gpio": 4, "mode": [4, 20], "switch": [4, 9], "movement": 4, "safeti": 4, "familiar": [4, 24], "medium": 4, "focus": [4, 5], "although": 4, "easi": 4, "therefor": [4, 13, 18, 20], "often": [4, 8, 13], "orchestr": 4, "purpos": 4, "conductor": 4, "scenario": 4, "appropri": 4, "moment": 4, "right": 4, "replac": 4, "level": [4, 5, 14, 16, 20, 21, 23], "moveit2": [4, 5], "simplecontrollermanag": 4, "form": 4, "behavior": [4, 8], "benchmark": 4, "statu": [4, 9, 20], "publish": [4, 11, 15, 17, 18, 20, 22, 24], "topic": [4, 5, 20], "format": 4, "preset": 4, "modul": 4, "specif": [4, 20], "reli": 4, "doubl": [4, 8, 20], "desir": [4, 20], "howev": [4, 6], "both": [4, 5], "improv": 4, "readabl": 4, "earlier": 4, "concept": [4, 5, 8, 10], "were": 4, "introduc": [4, 5], "essenti": 4, "group": [4, 20, 24], "instanc": 4, "imu": [4, 12], "typic": [4, 20], "9": 4, "axi": [4, 15], "aceleromet": 4, "gyroscop": 4, "compass": 4, "respect": [4, 5], "Such": 4, "struct": 4, "low": [4, 5], "profil": 4, "intern": [4, 20], "addition": [4, 24], "few": [4, 5], "pull": 4, "45": 4, "tree": 4, "semantic_compon": 4, "175": 4, "rewrit": [4, 24], "ros_control": [4, 5, 24], "rich": 4, "wa": [4, 13], "motiv": 4, "adopt": 4, "port": 4, "most": [4, 13], "quit": 4, "miss": 4, "diff_drive_control": [4, 9], "joint_trajectory_control": [4, 9], "consist": [4, 20, 24], "identifi": 4, "much": [4, 13], "303": 4, "304": 4, "stretch": 4, "realtime_tool": [4, 24], "81": 4, "302": 4, "unit": 4, "gmock": 4, "cc": 5, "BY": 5, "licens": 5, "author": 5, "either": 5, "down": 5, "below": 5, "my": 5, "company_nam": 5, "tricycl": [5, 12, 22], "control": [5, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24], "event": 5, "pixel": 5, "prefac": 5, "introduct": [5, 20], "johann": 5, "plapp": 5, "toni": 5, "najjar": 5, "kernel": 5, "hardwar": [5, 6, 8, 10, 12, 13, 22, 24], "agnost": 5, "share": [5, 13], "well": [5, 9, 20], "perform": 5, "heavi": 5, "dr": 5, "stogl": 5, "consult": 5, "practition": 5, "guid": [5, 13], "top": 5, "virtual": 5, "talk": 5, "delv": 5, "deeper": 5, "what": 5, "explicit": [5, 20], "chain": 5, "emerg": 5, "handler": 5, "mock": 5, "usag": [5, 6, 9], "openli": 5, "record": 5, "fiveai": 5, "ltd": 5, "best": [5, 13], "focu": 5, "becom": 5, "util": 5, "3rd": 5, "parti": 5, "nav2": 5, "practic": 5, "tip": 5, "hot": 5, "shown": 5, "furthermor": 5, "get": [5, 24], "reus": 5, "inject": 5, "offer": [5, 6], "expos": 5, "problem": [5, 24], "manipul": [5, 20], "path": 5, "plan": [5, 24], "autonom": 5, "navig": 5, "ideal": [5, 8], "made": 5, "mobil": [5, 11, 22], "arm": 5, "extra": [5, 18], "readi": [5, 13], "power": 5, "studi": 5, "ur": 5, "With": 5, "moveit": [5, 8], "ingredi": 5, "scale": 5, "factor": 5, "teach": 5, "pendant": 5, "influenc": 5, "picknik": 5, "inc": 5, "nathan": 5, "brook": 5, "lovro": 5, "ivanov": 5, "andi": 5, "zelenak": 5, "rune": 5, "s\u00f8e": 5, "knudsen": 5, "onlin": [5, 13], "trajectori": [5, 12, 24], "admitt": 5, "One": 5, "reason": 5, "upgrad": 5, "ros1": 5, "better": 5, "realtim": [5, 11, 20, 22, 24], "contact": 5, "insert": 5, "singl": 5, "waypoint": [5, 12, 20], "mani": [5, 13], "teleoper": 5, "involv": 5, "kinemat": 5, "acceler": [5, 10, 11, 12, 20, 22], "jerk": [5, 11, 22], "obei": 5, "demo": 5, "booth": 5, "zeleank": 5, "unifi": 5, "life": 5, "cycl": 5, "go": [5, 13], "_control": 5, "wild": 5, "materi": 5, "quick": 5, "overview": 5, "layer": 5, "aka": 5, "systemcompon": 5, "forward": [5, 8, 12, 20, 24], "done": [5, 13], "look": 5, "modifi": 5, "simpli": [5, 20], "net": 5, "edit": 5, "collect": [5, 14, 16, 21, 23], "semant": [5, 15, 17], "world": [6, 8], "startup": 6, "h": [6, 9, 13, 19], "p": 6, "param_fil": 6, "controller_typ": 6, "timeout": [6, 9, 22], "controller_manager_timeout": 6, "controller_nam": [6, 9, 13], "argument": [6, 9], "exit": [6, 9], "leav": 6, "unconfigur": 6, "namespac": [6, 12, 13, 18, 20], "kill": [6, 9], "wait": [6, 9], "until": 6, "doxygen": 7, "fake": 7, "mirror": 8, "correspond": [8, 13, 24], "offlin": 8, "advantag": 8, "pipe": 8, "insid": 8, "broadcast": [8, 18, 19], "even": 8, "debug": 8, "boost": 8, "mimic": 8, "offset": [8, 20], "fake_sensor_command": 8, "boolean": [8, 18, 20], "fals": [8, 18, 20], "position_state_following_offset": 8, "custom_interface_with_following_offset": 8, "map": [8, 20], "multipli": 8, "mimick": 8, "deprec": [9, 12], "configure_control": 9, "configure_start_control": 9, "load_configure_control": 9, "load_start_control": 9, "spin": 9, "spin_tim": 9, "hidden": 9, "discoveri": 9, "appli": 9, "alreadi": [9, 13, 20], "daemon": 9, "test_controller_nam": 9, "test_control": 9, "diffdrivecontrol": 9, "joint_state_control": [9, 10], "jointstatecontrol": 9, "unclaim": [9, 10], "set_stat": 9, "reload": 9, "adjust": 9, "strict": 9, "asap": 9, "switch_timeout": 9, "templat": [10, 13, 20], "demonstr": 10, "prove": 10, "comprehens": 10, "ros2_control_demo_bringup": 10, "gui": 10, "ros2_control_test_nod": 10, "rrbot_system_multi_interfac": 10, "py": 10, "list_hardware_interfac": 10, "load_control": 10, "forward_command_controller_posit": 10, "forward_command_controller_veloc": 10, "forward_command_controller_acceler": 10, "forward_command_controller_illegal1": 10, "forward_command_controller_illegal2": 10, "set_controller_st": 10, "claim": 10, "now": [10, 13], "let": 10, "switch_control": 10, "again": 10, "inde": 10, "been": [10, 19], "differenti": [11, 12, 19, 24], "drive": [11, 12, 22, 24], "bodi": 11, "translat": [11, 22], "wheel": 11, "odometri": [11, 22], "comput": [11, 22], "feedback": [11, 20, 22], "twist": [11, 22], "x": [11, 15, 17, 22], "linear": [11, 20, 22], "z": [11, 15, 22], "angular": [11, 22], "ignor": [11, 20, 22], "space": [11, 20], "sort": [12, 13], "accord": [12, 20], "position_control": [12, 20], "hw_if_posit": 12, "velocity_control": 12, "hw_if_veloc": 12, "effort_control": 12, "hw_if_effort": 12, "interpol": [12, 20], "step": [13, 20, 24], "compil": 13, "rule": 13, "prepar": 13, "ament_cmak": 13, "easiest": 13, "search": 13, "recent": 13, "process": 13, "pkg": 13, "flag": [13, 20], "least": [13, 20], "cmakelist": 13, "txt": 13, "package_nam": 13, "hpp": 13, "visibility_control": 13, "window": 13, "copi": 13, "prefix": [13, 15, 17], "guard": 13, "ifndef": 13, "preprocessor": 13, "engin": 13, "friend": 13, "uniqu": 13, "written": 13, "snake_cas": 13, "controllernam": 13, "public": 13, "overrid": 13, "exact": 13, "vector": 13, "store": 13, "simplifi": [13, 24], "further": 13, "parent": 13, "reserv": 13, "importantli": 13, "fine": 13, "return": 13, "return_typ": 13, "ok": 13, "otherwis": 13, "individu": 13, "none": 13, "ask": 13, "full": 13, "joint_nam": [13, 20], "interface_typ": 13, "assign": 13, "opposit": 13, "empti": 13, "constraint": [13, 20], "At": 13, "close": 13, "class_list_macro": 13, "controller_name_namespac": 13, "visibl": 13, "controller_name_packag": 13, "bottom": 13, "test_load_": 13, "content": 13, "last": [13, 20], "specifi": [13, 20], "find_packag": 13, "rclcpp": 13, "rclcpp_lifecycl": 13, "directori": 13, "ament": 13, "cmake": 13, "pluginlib_export_plugin_description_fil": 13, "ament_cmake_gmock": 13, "ros2_control_test_asset": 13, "ament_add_gmock": 13, "ament_export_librari": 13, "ament_packag": 13, "test_depend": 13, "colcon": 13, "rememb": 13, "root": 13, "success": 13, "bash": 13, "enjoi": 13, "great": 13, "shell": 13, "mai": [14, 16, 21, 23], "certain": [14, 16, 21, 23], "achiev": [14, 16, 21, 23], "These": [14, 16, 21, 23], "geometry_msg": 15, "msg": [15, 17, 20], "wrenchstamp": 15, "wrapper": [15, 17], "forcetorquesensor": 15, "sensor_nam": [15, 17], "interface_nam": 15, "frame": [15, 17], "6d": 15, "ft": 15, "y": 15, "less": 15, "six": 15, "ax": 15, "example_nam": 15, "example_interfac": 15, "sensor_msg": 17, "imusensor": 17, "orient": 17, "angular_veloc": 17, "linear_acceler": 17, "joint_stat": 18, "dynamic_joint_st": 18, "use_local_top": 18, "my_state_broadcast": 18, "extra_joint": 18, "arrai": 18, "renam": 19, "joint_state_broadcast": 19, "order": 19, "true": [19, 20], "remov": 19, "turtl": 19, "reach": 20, "instant": 20, "attempt": 20, "mechan": 20, "By": 20, "spline": 20, "guarante": 20, "continu": 20, "discourag": 20, "becaus": 20, "yield": 20, "discontinu": 20, "cubic": 20, "quintic": 20, "pid": [20, 24], "similarli": 20, "eg": 20, "proxi": 20, "wrap": 20, "robust": 20, "clock": 20, "caus": 20, "queu": 20, "segment": 20, "ros__paramet": 20, "joint3": 20, "joint4": 20, "joint5": 20, "joint6": 20, "state_publish_r": 20, "action_monitor_r": 20, "20": 20, "allow_partial_joints_go": 20, "open_loop_control": 20, "stopped_velocity_toler": 20, "01": 20, "goal_tim": 20, "05": [20, 24], "03": 20, "monitor": 20, "action": 20, "control_msg": [20, 24], "followjointtrajectori": 20, "hydraul": 20, "tri": 20, "numer": 20, "nan": 20, "std": 20, "numeric_limit": 20, "quiet_nan": 20, "toler": 20, "jointtrajectori": 20, "deviat": 20, "maxim": 20, "predefin": 20, "joint_trajectori": 20, "trajectory_msg": 20, "jointtrajectorycontrollerst": 20, "follow_joint_trajectori": 20, "server": 20, "position_velocity_control": 20, "position_velocity_acceleration_control": 20, "Not": 20, "yet": 20, "feedforward": 20, "term": [20, 24], "plu": 20, "171": 20, "base_link": 22, "traction": 22, "steer": 22, "Its": 24, "oper": 24, "overcom": 24, "idea": 24, "wide": 24, "toolkit": 24, "unreleas": 24, "smooth": 24, "doc": 24, "wg": 24, "meet": 24, "everi": 24, "wednesdai": 24, "join": 24, "announc": 24, "discours": 24, "googl": 24, "propos": 24, "previou": 24, "bug": 24, "tracker": 24, "minim": 24, "reproduc": 24, "regard": 24, "etc": 24, "question": 24, "answer": 24, "2023": 24, "12": 24, "30": 24, "31": 24, "built": 24, "gmt": 24}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"acknowledg": 0, "pull": 1, "request": 1, "rule": 1, "repositori": [1, 10], "process": 1, "merg": 1, "write": [1, 13], "document": [1, 7, 24], "structur": [1, 2], "ci": 1, "configur": 1, "differ": 2, "ros_control": 2, "ros1": [2, 4], "hardwar": [2, 3, 4, 11, 14, 16, 18, 20, 21, 23], "class": 2, "interfac": [2, 3, 9, 11, 14, 16, 18, 20, 21, 23], "control": [2, 3, 4, 6, 12, 13, 20], "": [2, 20], "access": 2, "migrat": 2, "guid": 2, "ros2_control": [2, 4, 12, 24], "robothardwar": 2, "compon": [2, 3, 4, 8], "get": 3, "start": 3, "compil": 3, "architectur": 3, "manag": [3, 6], "resourc": [3, 5], "user": 3, "descript": 3, "urdf": 3, "run": 3, "framework": 3, "your": 3, "robot": [3, 5], "project": 4, "idea": 4, "gsoc": 4, "2022": [4, 5], "asynchron": 4, "tutori": 4, "demo": [4, 10], "mission": 4, "add": 4, "support": 4, "semant": 4, "featur": [4, 7, 11, 20, 22], "pariti": 4, "from": 4, "present": 5, "2023": 5, "02": 5, "ro": 5, "meetup": 5, "munich": 5, "5": 5, "12": 5, "industri": 5, "confer": 5, "10": 5, "roscon": 5, "06": 5, "fr": 5, "2021": 5, "world": 5, "07": 5, "weekli": 5, "13": 5, "rosdevdai": 5, "05": 5, "diagram": 5, "imag": 5, "helper": 6, "script": 6, "spawner": 6, "py": 6, "unspawn": 6, "api": 7, "core": 7, "function": 7, "concept": 7, "fake": 8, "gener": 8, "system": 8, "paramet": [8, 15, 17, 18, 20], "per": 8, "joint": [8, 20], "command": [9, 11, 18, 22], "line": 9, "list_control": 9, "list_controller_typ": 9, "list_hardware_interfac": 9, "load_control": 9, "reload_controller_librari": 9, "set_controller_st": 9, "switch_control": 9, "unload_control": 9, "organ": 10, "mode": 10, "switch": 10, "diff_drive_control": 11, "veloc": [11, 22], "type": [11, 14, 16, 18, 20, 21, 23], "other": [11, 20, 22], "nomenclatur": 12, "guidelin": 12, "best": 12, "practic": 12, "avail": 12, "broadcast": [12, 15, 17], "new": 13, "us": [13, 20], "extern": 13, "refer": 13, "effort_control": 14, "forc": 15, "torqu": 15, "sensor": [15, 17], "forward_command_control": 16, "imu": 17, "joint_state_broadcast": 18, "joint_state_control": 19, "joint_trajectory_control": 20, "trajectori": 20, "represent": 20, "detail": 20, "about": 20, "ros2": 20, "special": 20, "version": 20, "jointtrajectorycontrol": 20, "tbd": 20, "position_control": 21, "tricycle_control": 22, "velocity_control": 23, "welcom": 24, "foxi": 24, "overview": 24, "develop": 24, "organis": 24, "commun": 24}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx": 60}, "alltitles": {"Acknowledgements": [[0, "acknowledgements"]], "Pull Requests": [[1, "pull-requests"]], "Rules for the repositories and process of merging pull requests": [[1, "rules-for-the-repositories-and-process-of-merging-pull-requests"]], "Writing documentation": [[1, "writing-documentation"]], "Repository structure and CI configuration": [[1, "repository-structure-and-ci-configuration"]], "CI configuration": [[1, "ci-configuration"]], "Differences to ros_control (ROS1)": [[2, "differences-to-ros-control-ros1"]], "Hardware Structures - classes": [[2, "hardware-structures-classes"]], "Hardware Interfaces": [[2, "hardware-interfaces"]], "Controller\u2019s Access to Hardware": [[2, "controller-s-access-to-hardware"]], "Migration Guide to ros2_control": [[2, "migration-guide-to-ros2-control"]], "RobotHardware to Components": [[2, "robothardware-to-components"]], "Controller Migration": [[2, "controller-migration"]], "Getting Started": [[3, "getting-started"]], "Compiling": [[3, "compiling"]], "Architecture": [[3, "architecture"]], "Controller Manager": [[3, "controller-manager"], [6, "controller-manager"]], "Resource Manager": [[3, "resource-manager"]], "Controllers": [[3, "controllers"], [12, "id1"]], "User Interfaces": [[3, "user-interfaces"]], "Hardware Components": [[3, "hardware-components"]], "Hardware Description in URDF": [[3, "hardware-description-in-urdf"]], "Running the Framework for Your Robot": [[3, "running-the-framework-for-your-robot"]], "Project Ideas for GSoC 2022": [[4, "project-ideas-for-gsoc-2022"]], "Asynchronous Control Components": [[4, "asynchronous-control-components"]], "Tutorials and Demos for ros2_control": [[4, "tutorials-and-demos-for-ros2-control"]], "Mission-Control for ros2_control": [[4, "mission-control-for-ros2-control"]], "Add support for hardware semantic components": [[4, "add-support-for-hardware-semantic-components"]], "Feature-parity for controllers from ROS1": [[4, "feature-parity-for-controllers-from-ros1"]], "Resources": [[5, "resources"]], "Presentations": [[5, "presentations"]], "2023-02 ROS Meetup Munich #5": [[5, "ros-meetup-munich-5"]], "2022-12 ROS-Industrial Conference 2022": [[5, "ros-industrial-conference-2022"]], "2022-10 ROSCon 2022": [[5, "roscon-2022"]], "2022-06 ROSCon Fr 2022": [[5, "roscon-fr-2022"]], "2021-10 ROS World 2021": [[5, "ros-world-2021"]], "2021-10-07 Weekly Robotics Meetup #13": [[5, "weekly-robotics-meetup-13"]], "2021-06 ROSDevDay 2021": [[5, "rosdevday-2021"]], "2021-05 ROSCon Fr 2021": [[5, "roscon-fr-2021"]], "Diagrams": [[5, "diagrams"]], "Images": [[5, "images"]], "Helper scripts": [[6, "helper-scripts"]], "spawner.py": [[6, "spawner-py"]], "unspawner.py": [[6, "unspawner-py"]], "API Documentation": [[7, "api-documentation"]], "Core functionalities": [[7, "core-functionalities"]], "Features": [[7, "features"]], "Concepts": [[7, "concepts"]], "Fake Components": [[8, "fake-components"]], "Generic System": [[8, "generic-system"]], "Parameters": [[8, "parameters"], [15, "parameters"], [17, "parameters"], [18, "parameters"]], "Per-joint Parameters": [[8, "per-joint-parameters"]], "Command Line Interface": [[9, "command-line-interface"]], "list_controllers": [[9, "list-controllers"]], "list_controller_types": [[9, "list-controller-types"]], "list_hardware_interfaces": [[9, "list-hardware-interfaces"]], "load_controller": [[9, "load-controller"]], "reload_controller_libraries": [[9, "reload-controller-libraries"]], "set_controller_state": [[9, "set-controller-state"]], "switch_controllers": [[9, "switch-controllers"]], "unload_controller": [[9, "unload-controller"]], "Demos": [[10, "demos"]], "Repository organization": [[10, "repository-organization"]], "Mode switching demo": [[10, "mode-switching-demo"]], "diff_drive_controller": [[11, "diff-drive-controller"]], "Velocity commands": [[11, "velocity-commands"], [22, "velocity-commands"]], "Hardware interface type": [[11, "hardware-interface-type"], [14, "hardware-interface-type"], [16, "hardware-interface-type"], [18, "hardware-interface-type"], [20, "hardware-interface-type"], [21, "hardware-interface-type"], [23, "hardware-interface-type"]], "Other features": [[11, "other-features"], [20, "other-features"], [22, "other-features"]], "ros2_controllers": [[12, "ros2-controllers"]], "Nomenclature": [[12, "nomenclature"]], "Guidelines and Best Practices": [[12, "guidelines-and-best-practices"]], "Available Controllers": [[12, "available-controllers"]], "Available Broadcasters": [[12, "available-broadcasters"]], "Writing a new controller": [[13, "writing-a-new-controller"]], "Useful External References": [[13, "useful-external-references"]], "effort_controllers": [[14, "effort-controllers"]], "Force Torque Sensor Broadcaster": [[15, "force-torque-sensor-broadcaster"]], "forward_command_controller": [[16, "forward-command-controller"]], "IMU Sensor Broadcaster": [[17, "imu-sensor-broadcaster"]], "joint_state_broadcaster": [[18, "joint-state-broadcaster"]], "Commands": [[18, "commands"]], "joint_state_controller": [[19, "joint-state-controller"]], "joint_trajectory_controller": [[20, "joint-trajectory-controller"]], "Trajectory representation": [[20, "trajectory-representation"]], "Using Joint Trajectory Controller(s)": [[20, "using-joint-trajectory-controller-s"]], "Details about parameters": [[20, "details-about-parameters"]], "ROS2 interface of the controller": [[20, "ros2-interface-of-the-controller"]], "Specialized versions of JointTrajectoryController (TBD in \u2026)": [[20, "specialized-versions-of-jointtrajectorycontroller-tbd-in"]], "position_controllers": [[21, "position-controllers"]], "tricycle_controller": [[22, "tricycle-controller"]], "velocity_controllers": [[23, "velocity-controllers"]], "Welcome to the ros2_control documentation - Foxy!": [[24, "welcome-to-the-ros2-control-documentation-foxy"]], "Overview": [[24, "overview"]], "Development Organisation and Communication": [[24, "development-organisation-and-communication"]]}, "indexentries": {}}) \ No newline at end of file +Search.setIndex({"docnames": ["doc/acknowledgements/acknowledgements", "doc/contributing/contributing", "doc/differences_to_ros1/differences_to_ros1", "doc/getting_started/getting_started", "doc/project_ideas", "doc/resources/resources", "doc/ros2_control/controller_manager/doc/userdoc", "doc/ros2_control/doc/index", "doc/ros2_control/hardware_interface/doc/fake_components_userdoc", "doc/ros2_control/ros2controlcli/doc/userdoc", "doc/ros2_control_demos/doc/index", "doc/ros2_controllers/diff_drive_controller/doc/userdoc", "doc/ros2_controllers/doc/controllers_index", "doc/ros2_controllers/doc/writing_new_controller", "doc/ros2_controllers/effort_controllers/doc/userdoc", "doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/forward_command_controller/doc/userdoc", "doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/joint_state_broadcaster/doc/userdoc", "doc/ros2_controllers/joint_state_controller/doc/userdoc", "doc/ros2_controllers/joint_trajectory_controller/doc/userdoc", "doc/ros2_controllers/position_controllers/doc/userdoc", "doc/ros2_controllers/tricycle_controller/doc/userdoc", "doc/ros2_controllers/velocity_controllers/doc/userdoc", "index"], "filenames": ["doc/acknowledgements/acknowledgements.rst", "doc/contributing/contributing.rst", "doc/differences_to_ros1/differences_to_ros1.rst", "doc/getting_started/getting_started.rst", "doc/project_ideas.rst", "doc/resources/resources.rst", "doc/ros2_control/controller_manager/doc/userdoc.rst", "doc/ros2_control/doc/index.rst", "doc/ros2_control/hardware_interface/doc/fake_components_userdoc.rst", "doc/ros2_control/ros2controlcli/doc/userdoc.rst", "doc/ros2_control_demos/doc/index.rst", "doc/ros2_controllers/diff_drive_controller/doc/userdoc.rst", "doc/ros2_controllers/doc/controllers_index.rst", "doc/ros2_controllers/doc/writing_new_controller.rst", "doc/ros2_controllers/effort_controllers/doc/userdoc.rst", "doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/forward_command_controller/doc/userdoc.rst", "doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/joint_state_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/joint_state_controller/doc/userdoc.rst", "doc/ros2_controllers/joint_trajectory_controller/doc/userdoc.rst", "doc/ros2_controllers/position_controllers/doc/userdoc.rst", "doc/ros2_controllers/tricycle_controller/doc/userdoc.rst", "doc/ros2_controllers/velocity_controllers/doc/userdoc.rst", "index.rst"], "titles": ["Acknowledgements", "Pull Requests", "Differences to ros_control (ROS1)", "Getting Started", "Project Ideas for GSoC 2022", "Resources", "Controller Manager", "API Documentation", "Fake Components", "Command Line Interface", "Demos", "diff_drive_controller", "ros2_controllers", "Writing a new controller", "effort_controllers", "Force Torque Sensor Broadcaster", "forward_command_controller", "IMU Sensor Broadcaster", "joint_state_broadcaster", "joint_state_controller", "joint_trajectory_controller", "position_controllers", "tricycle_controller", "velocity_controllers", "Welcome to the ros2_control documentation - Foxy!"], "terms": {"The": [0, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 15, 17, 18, 19, 20, 22, 24], "project": [0, 1, 24], "ha": [0, 1, 3, 4, 5, 13, 19], "receiv": [0, 2], "major": 0, "contribut": [0, 1, 5], "from": [0, 1, 2, 3, 5, 6, 8, 9, 11, 13, 15, 17, 20, 22, 24], "follow": [0, 1, 2, 3, 4, 8, 9, 10, 12, 13, 20, 24], "compani": [0, 5], "institut": 0, "support": [0, 2, 3, 5, 8, 9, 13, 20, 24], "rosin": 0, "ro": [0, 1, 3, 4, 6, 8, 9, 19, 24], "industri": [0, 3, 4], "qualiti": [0, 1], "assur": 0, "robot": [0, 2, 4, 10, 11, 15, 22, 24], "softwar": [0, 3], "compon": [0, 5, 6, 7, 11, 15, 17, 22, 24], "more": [0, 1, 2, 3, 4, 8, 13], "inform": [0, 8, 13, 24], "http": [0, 1, 3, 4], "eu": 0, "thi": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 13, 14, 15, 16, 18, 19, 20, 21, 23, 24], "fund": 0, "european": 0, "union": 0, "": [0, 1, 3, 4, 5, 10, 13, 24], "horizon": 0, "2020": 0, "research": [0, 5], "innov": 0, "programm": 0, "under": [0, 5, 13, 24], "grant": 0, "agreement": 0, "732287": 0, "first": [1, 2, 13], "thank": 1, "you": [1, 2, 3, 5, 8, 13, 24], "consid": [1, 9], "ros2_control": [1, 3, 5, 6, 8, 10, 13], "As": [1, 13], "an": [1, 2, 3, 4, 5, 8, 9, 13, 20], "open": [1, 20], "sourc": [1, 3, 5, 13], "we": [1, 4, 5], "welcom": 1, "each": [1, 3, 4], "contributor": 1, "regardless": 1, "background": 1, "experi": 1, "To": [1, 2, 3, 24], "reduc": [1, 8], "entropi": 1, "univers": [1, 4, 5], "our": [1, 3, 4, 5], "vivid": 1, "collabor": 1, "environ": [1, 3, 5], "have": [1, 2, 3, 4, 8, 10, 13, 20], "set": [1, 2, 4, 5, 8, 9, 14, 16, 18, 20, 21, 23], "up": [1, 5, 10], "some": [1, 4, 5, 20, 24], "standard": [1, 2, 3, 4, 5, 9, 12, 15], "method": [1, 2, 3, 13], "requir": [1, 2, 3, 4, 13], "ar": [1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 15, 17, 18, 20, 22, 24], "limit": [1, 4, 5, 11, 22], "scope": 1, "your": [1, 2, 5, 8, 13, 24], "pr": 1, "should": [1, 2, 4, 5, 6, 9, 10, 13, 18], "do": [1, 2, 3, 4, 5, 6, 13, 20], "one": [1, 2, 3, 4, 5, 13, 15, 24], "thing": 1, "avoid": [1, 13], "ad": [1, 4, 8, 13, 18], "random": 1, "fix": [1, 2], "put": [1, 13], "those": [1, 2, 3, 4, 8, 13, 15, 20], "separ": [1, 2, 3], "give": [1, 3, 5, 24], "descript": [1, 2, 5, 13], "titl": 1, "add": [1, 2, 13], "short": [1, 13, 24], "summari": [1, 5, 24], "make": [1, 2, 4, 5, 24], "sure": [1, 4, 24], "pipelin": 1, "i": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 22, 23, 24], "green": 1, "don": 1, "t": [1, 6], "afraid": 1, "review": [1, 4, 24], "maintain": [1, 3, 4], "new": [1, 5, 12, 20, 24], "code": [1, 2, 4, 5, 13], "test": [1, 4, 8, 10, 13], "If": [1, 2, 3, 6, 13, 15, 20, 24], "function": [1, 2, 3, 4, 5], "alwai": 1, "exercis": 1, "serv": [1, 3, 4], "live": [1, 5], "origin": [1, 5], "intent": [1, 8], "section": [1, 2, 13], "target": [1, 12, 13, 20], "also": [1, 2, 3, 4, 5, 13], "read": [1, 2, 3, 13, 18, 20], "understand": [1, 4], "how": [1, 4, 5, 13], "handl": [1, 2, 4, 5, 20], "organ": [1, 5, 24], "guidelin": 1, "especi": [1, 2], "applic": [1, 3, 5, 6], "ros2_control_demo": [1, 3, 24], "pleas": [1, 24], "keep": [1, 13], "mind": [1, 13], "work": [1, 4, 5, 11, 13, 14, 16, 20, 21, 22, 23, 24], "fork": 1, "when": [1, 2, 3, 4, 8, 9, 13, 20], "submit": [1, 5], "That": [1, 13], "wai": [1, 13, 15], "main": [1, 3, 4, 5, 6, 8, 13, 24], "repo": [1, 3], "clean": [1, 4], "featur": [1, 5, 8, 24], "branch": 1, "all": [1, 2, 3, 4, 5, 8, 10, 13, 18, 20], "check": [1, 2, 3, 4, 8, 10, 13, 20, 24], "satisfi": 1, "befor": [1, 2, 6, 13], "thei": [1, 2, 3, 4, 5, 8, 9, 12, 13, 20], "can": [1, 2, 3, 4, 5, 7, 8, 13, 15, 19, 20, 24], "must": 1, "approv": 1, "two": [1, 3, 4, 6, 13, 15], "explicitli": 1, "onli": [1, 2, 3, 4, 5, 6, 9, 13, 15, 20], "except": 1, "other": [1, 2, 3, 5, 13], "activ": [1, 2, 3, 9], "where": [1, 4, 13], "back": 1, "traceabl": 1, "discuss": [1, 5, 24], "suffici": [1, 15], "note": [1, 3, 10, 24], "still": [1, 2, 3], "encourag": 1, "help": [1, 6, 9, 13], "u": [1, 6], "increas": 1, "pace": 1, "veri": [1, 2, 4], "like": [1, 2, 3, 4, 5], "find": 1, "issu": [1, 4, 24], "nobodi": 1, "els": 1, "see": [1, 2, 3, 10, 13, 15, 17, 20], "squash": 1, "commit": 1, "messag": [1, 4, 6, 9, 15, 17, 18, 20, 24], "comment": 1, "fixup": 1, "linter": 1, "us": [1, 2, 3, 4, 5, 8, 9, 12, 14, 15, 16, 17, 18, 19, 21, 23, 24], "pre": 1, "correct": [1, 2, 20], "header": [1, 13], "address": [1, 4], "similar": [1, 3, 5], "mean": [1, 2, 8], "result": [1, 3], "exactli": 1, "1": [1, 3, 4, 5, 8, 13], "cowboi": 1, "style": [1, 13], "over": [1, 4], "weekend": 1, "It": [1, 2, 3, 4, 6, 15], "doesn": 1, "matter": 1, "trivial": [1, 8], "peopl": 1, "chanc": 1, "proper": [1, 20], "Be": 1, "awar": 1, "impact": 1, "time": [1, 2, 4, 5, 6, 8, 9, 11, 13, 15, 20, 24], "proport": 1, "its": [1, 2, 3, 4, 5, 15, 17], "ping": 1, "them": [1, 3, 4, 6, 13, 18], "necessari": 1, "repeatedli": 1, "start": [1, 2, 5, 6, 9, 10, 13, 20, 24], "part": [1, 4, 5, 13], "For": [1, 3, 4, 5, 8, 13, 20], "detail": [1, 2, 3, 8, 13], "thoma": 1, "cokela": 1, "info": 1, "tutori": 1, "sphinx": 1, "rest_syntax": 1, "html": 1, "id8": 1, "type": [1, 2, 3, 5, 6, 9, 12, 13, 15, 17], "develop": [1, 5, 8, 10, 13], "stabl": [1, 4], "against": 1, "accept": [1, 13, 14, 16, 21, 23], "api": [1, 4], "abi": 1, "chang": [1, 2, 3, 5, 9, 13, 20], "e": [1, 2, 3, 4, 5, 8, 13, 14, 15, 16, 18, 20, 21, 23, 24], "name": [1, 2, 3, 5, 6, 8, 9, 13, 15, 17, 18, 20], "convent": 1, "master": [1, 3, 4], "semi": 1, "binari": 1, "good": [1, 4], "same": [1, 3, 4, 15], "build": [1, 13], "dai": 1, "2": [1, 3, 5, 8], "ros_distro": 1, "g": [1, 2, 3, 4, 5, 8, 13, 14, 16, 18, 21, 23, 24], "foxi": [1, 3, 5], "galact": 1, "releas": [1, 3, 5], "version": [1, 4], "non": [1, 5, 15], "brake": 1, "distribut": [1, 24], "three": [1, 2, 3, 13], "stage": 1, "current": [1, 4, 9, 20], "futur": [1, 5], "compat": [1, 2, 5], "framework": [1, 2, 4, 5, 6, 8, 9, 10, 12, 13, 24], "packag": [1, 2, 3, 10, 13, 15, 17, 19, 20, 24], "show": [1, 3, 5, 6, 9], "direct": [1, 2, 4, 13], "local": [1, 18], "possibl": [1, 3, 4, 13, 20], "core": 1, "immedi": 1, "depend": [1, 3, 13, 20], "fail": 1, "expect": [1, 4, 20], "after": [1, 11, 13, 22], "next": [1, 20], "sync": 1, "abl": 1, "potenti": [1, 13], "mid": 1, "robothw": 2, "rigid": 2, "ani": [2, 3, 5, 13], "imposs": 2, "extend": [2, 3, 4, 13], "exist": [2, 3, 4, 6, 13], "addit": [2, 4], "sensor": [2, 3, 4, 8, 12], "actuat": [2, 3, 4, 8], "tool": [2, 4, 5], "without": [2, 3, 8, 13], "combinedrobothardwar": 2, "drawback": [2, 24], "solut": [2, 5], "optim": 2, "combin": [2, 8, 20], "extern": [2, 3, 4, 8], "defin": [2, 3, 4, 8, 12, 13, 15, 17, 18, 20], "system": [2, 3, 4, 5, 10, 20, 24], "composit": [2, 5], "basic": [2, 3, 4, 5, 13], "physic": [2, 3, 8], "cell": [2, 15], "surround": 2, "describ": [2, 3], "multi": [2, 3, 4, 5, 10], "gripper": [2, 3, 8], "out": [2, 11], "box": 2, "allow": [2, 20], "joint": [2, 3, 5, 11, 12, 13, 14, 16, 18, 21, 23, 24], "posit": [2, 3, 5, 6, 9, 10, 12, 14, 16, 20, 21, 23], "veloc": [2, 3, 5, 10, 12, 20, 21, 23], "effort": [2, 12, 14, 16, 20], "hard": [2, 4], "data": [2, 3, 4, 8, 19], "approach": 2, "doe": [2, 13, 20], "enforc": [2, 20], "string": [2, 8, 13, 18, 20], "ensur": [2, 5], "constant": 2, "hardware_interfac": [2, 3, 8, 12, 13], "In": [2, 3, 4, 5, 13], "had": 2, "request": [2, 24], "itself": 2, "took": 2, "care": [2, 4, 13], "regist": 2, "resourc": 2, "conflict": [2, 3, 4], "resourcemanag": 2, "take": [2, 4, 13, 18], "state": [2, 3, 4, 5, 8, 9, 10, 12, 13, 15, 18, 20], "avail": [2, 3, 5, 9, 10, 13, 18, 20], "enabl": [2, 3, 4, 5, 10, 15], "anymor": 2, "controllermanag": 2, "implement": [2, 3, 4, 5, 8, 10, 11, 12, 13, 20, 22, 24], "systeminterfac": [2, 8], "granular": 2, "sensorinterfac": 2, "actuatorinterfac": 2, "abov": [2, 20], "choos": 2, "suitabl": [2, 5], "strategi": [2, 20], "decid": 2, "which": [2, 3, 4, 5, 9, 11, 13, 15, 17, 20, 22], "case": [2, 4, 5, 13, 20, 24], "mayb": 2, "sens": [2, 3, 15], "multipl": [2, 3, 20], "constructor": [2, 13], "initi": [2, 13], "variabl": [2, 4, 13], "need": [2, 3, 4, 5, 13], "commun": [2, 3, 4, 5], "default": [2, 3, 8, 18, 20], "configur": [2, 3, 4, 5, 6, 9, 10, 13, 20], "paramet": [2, 5, 13], "pars": [2, 7], "urdf": 2, "snippet": 2, "hardwareinfo": 2, "here": [2, 7, 13, 19, 20], "cross": 2, "valu": [2, 3, 4, 8, 13, 20], "export_": 2, "_interfac": 2, "joint_a2": 2, "extract": [2, 11, 22], "sensibl": 2, "stop": [2, 5, 6, 9, 10, 11, 22], "usual": [2, 8, 13], "includ": [2, 4, 9, 13], "command": [2, 3, 4, 5, 7, 8, 10, 12, 13, 14, 16, 20, 21, 23, 24], "safe": [2, 11, 13, 20, 22], "interrupt": [2, 6], "stream": [2, 5], "write": [2, 3, 4, 5, 12], "exchang": [2, 4], "equival": 2, "forget": 2, "pluginlib_export_class": [2, 13], "macro": [2, 3, 13], "end": [2, 3, 13, 20], "cpp": [2, 13], "file": [2, 3, 4, 5, 6, 8, 13, 20], "creat": [2, 3, 5, 8, 13], "xml": [2, 13], "librari": [2, 3, 4, 9, 13], "pluginlib": [2, 3, 13], "exampl": [2, 3, 4, 5, 8, 9, 10, 15, 20, 24], "rrbotsystempositiononlyhardwar": [2, 3], "excel": 2, "jointtrajectorycontrol": [2, 9], "real": [2, 4, 5, 8, 13, 18, 20, 24], "critic": [2, 4], "mark": 2, "controllerinterfac": [2, 3, 9, 13], "member": [2, 13], "init": [2, 13], "call": [2, 3, 13], "lifecycl": [2, 3, 5, 6], "declar": [2, 13], "state_interface_configur": [2, 13], "command_interface_configur": [2, 13], "design": [2, 3, 4, 5, 24], "updat": [2, 3, 4, 13], "manag": [2, 4, 5, 7, 9, 13, 24], "option": [2, 6, 8, 9, 13, 15, 18, 20], "on_configur": [2, 13], "on_activ": [2, 13], "on_deactiv": [2, 13], "deactiv": [2, 3], "final": [2, 5], "joint_trajectory_plugin": 2, "ros2": [3, 4, 5, 6, 9, 10, 13, 24], "instal": [3, 13], "automat": [3, 11, 22], "want": 3, "workspac": [3, 13], "folder": [3, 5, 13], "wget": 3, "raw": 3, "githubusercont": 3, "com": [3, 4], "vc": 3, "import": [3, 13, 20], "src": [3, 13], "found": [3, 7, 13, 19, 20, 24], "github": [3, 4, 7, 12, 24], "repositori": [3, 4, 7, 12, 24], "figur": 3, "cm": 3, "connect": 3, "abstract": [3, 5], "side": [3, 4, 5], "entri": [3, 13], "point": [3, 12, 13, 24], "through": [3, 4, 9, 11, 12, 13, 20, 24], "servic": [3, 4, 6], "node": [3, 6, 8, 9, 10, 13], "executor": 3, "so": [3, 13], "integr": [3, 4, 5, 8, 10, 20, 24], "custom": [3, 8, 15], "setup": [3, 4, 13], "recommend": [3, 5], "ros2_control_nod": 3, "controller_manag": [3, 4, 6, 9, 13, 20], "manual": [3, 4, 13, 24], "assum": 3, "On": 3, "load": [3, 6, 9, 10, 13], "unload": [3, 6, 9], "access": [3, 4, 5, 6, 8, 13], "match": 3, "provid": [3, 4, 5, 6, 8, 10, 12, 13, 20, 24], "report": [3, 4, 18, 24], "error": [3, 4, 13, 20], "execut": [3, 13, 20], "loop": [3, 5, 13, 20], "output": [3, 4, 5, 9, 15, 17, 20], "rm": 3, "driver": [3, 5], "re": 3, "usabl": 3, "flexibl": 3, "motor": [3, 4], "encod": 3, "deal": 3, "theori": [3, 24], "compar": [3, 4, 5], "refer": 3, "measur": [3, 8, 15], "base": [3, 5, 9, 11, 13, 22], "calcul": 3, "input": [3, 4, 5, 11, 20, 22], "visit": 3, "wikipedia": [3, 24], "object": 3, "deriv": 3, "controller_interfac": [3, 4, 9, 13, 15, 17], "export": [3, 13], "plugin": [3, 13], "forwardcommandcontrol": 3, "lifecyclenod": 3, "class": [3, 5, 9, 13], "machin": [3, 4], "document": [3, 4, 5, 8, 19], "latest": 3, "interact": [3, 5, 6, 9], "list": [3, 5, 9, 10, 12, 13, 20, 24], "definit": [3, 12, 13, 15], "srv": 3, "controller_manager_msg": 3, "while": [3, 4, 5, 10, 20], "directli": [3, 24], "line": [3, 7, 13], "via": 3, "friendli": 3, "cli": [3, 7, 9], "auto": 3, "complet": [3, 12], "rang": 3, "common": [3, 4, 12, 24], "capabl": [3, 4], "readm": 3, "md": 3, "ros2controlcli": 3, "realiz": [3, 5], "repres": 3, "dynam": [3, 13], "There": [3, 6, 13], "complex": [3, 4, 5], "dof": 3, "differ": [3, 4, 5, 14, 15, 16, 21, 23], "between": [3, 4, 19, 20], "transmiss": 3, "humanoid": 3, "hand": 3, "logic": 3, "channel": 3, "kuka": 3, "rsi": 3, "A": [3, 5, 13, 20], "relat": [3, 4, 5], "link": [3, 5], "forc": [3, 5, 9, 12], "torqu": [3, 12], "simpl": [3, 4, 5, 10, 13, 19], "valv": 3, "mandatori": [3, 15, 17, 20], "dc": 3, "arduino": 3, "board": 3, "modular": [3, 5], "independ": 3, "explan": 3, "given": [3, 20], "tag": [3, 13, 24], "chosen": 3, "structur": [3, 4, 13, 20], "track": [3, 24], "togeth": 3, "xacro": 3, "hereund": 3, "rrbot": [3, 10], "parallel": [3, 8], "effector": 3, "rrbotsystempositiononli": 3, "ros2_control_demo_hardwar": [3, 10], "param": [3, 6, 8], "example_param_write_for_sec": 3, "example_param_read_for_sec": 3, "joint1": [3, 8, 9, 10, 20], "command_interfac": [3, 20], "min": 3, "max": 3, "state_interfac": [3, 20], "joint2": [3, 9, 10, 20], "rrbotforcetorquesensor1d": 3, "forcetorquesensor1dhardwar": 3, "0": [3, 8, 18, 20], "43": 3, "tcp_fts_sensor": 3, "frame_id": [3, 15, 17], "rrbot_tcp": 3, "min_forc": 3, "100": 3, "max_forc": 3, "rrbotgripp": 3, "positionactuatorhardwar": 3, "23": 3, "3": [3, 4], "gripper_joint": 3, "50": [3, 20], "yaml": [3, 4, 20], "instead": [3, 8, 19, 20], "pure": [3, 20], "launch": [3, 6, 8, 10], "stack": [3, 5], "could": [3, 5, 13, 20], "altern": [3, 20], "script": [3, 4, 13], "skeleton": 3, "orbit": 4, "around": [4, 15, 17], "everyth": [4, 13], "goal": [4, 5, 20, 24], "long": 4, "run": [4, 5, 6, 9], "task": [4, 5, 11], "interfac": [4, 5, 6, 7, 8, 10, 12, 13, 15, 17, 24], "user": 4, "thread": 4, "protect": [4, 13], "memori": [4, 13], "buffer": [4, 24], "control_toolbox": [4, 24], "second": [4, 9, 13, 24], "frequenc": 4, "high": 4, "rate": [4, 20], "khz": 4, "variou": 4, "anoth": 4, "heartbeat": 4, "signal": 4, "sent": 4, "onc": [4, 5], "per": [4, 15], "500": 4, "hz": 4, "failur": 4, "relev": [4, 24], "draft": 4, "trigger": 4, "skill": 4, "prefer": 4, "c": [4, 6, 9, 13], "trick": 4, "mentor": 4, "benc": [4, 5], "magyar": [4, 5], "deni": [4, 5], "\u0161togl": [4, 5], "size": 4, "350": 4, "hour": 4, "difficulti": 4, "about": [4, 8, 24], "org": 4, "gener": [4, 5, 13, 20, 24], "envis": 4, "simul": [4, 8, 10], "gazebo": 4, "ignit": 4, "showcas": [4, 5], "grace": 4, "degrad": 4, "architectur": [4, 5], "roadmap": [4, 24], "place": [4, 13, 20], "gpio": 4, "mode": [4, 20], "switch": [4, 9], "movement": 4, "safeti": 4, "familiar": [4, 24], "medium": 4, "focus": [4, 5], "although": 4, "easi": 4, "therefor": [4, 13, 18, 20], "often": [4, 8, 13], "orchestr": 4, "purpos": 4, "conductor": 4, "scenario": 4, "appropri": 4, "moment": 4, "right": 4, "replac": 4, "level": [4, 5, 14, 16, 20, 21, 23], "moveit2": [4, 5], "simplecontrollermanag": 4, "form": 4, "behavior": [4, 8], "benchmark": 4, "statu": [4, 9, 20], "publish": [4, 11, 15, 17, 18, 20, 22, 24], "topic": [4, 5, 20], "format": 4, "preset": 4, "modul": 4, "specif": [4, 20], "reli": 4, "doubl": [4, 8, 20], "desir": [4, 20], "howev": [4, 6], "both": [4, 5], "improv": 4, "readabl": 4, "earlier": 4, "concept": [4, 5, 8, 10], "were": 4, "introduc": [4, 5], "essenti": 4, "group": [4, 20, 24], "instanc": 4, "imu": [4, 12], "typic": [4, 20], "9": 4, "axi": [4, 15], "aceleromet": 4, "gyroscop": 4, "compass": 4, "respect": [4, 5], "Such": 4, "struct": 4, "low": [4, 5], "profil": 4, "intern": [4, 20], "addition": [4, 24], "few": [4, 5], "pull": 4, "45": 4, "tree": 4, "semantic_compon": 4, "175": 4, "rewrit": [4, 24], "ros_control": [4, 5, 24], "rich": 4, "wa": [4, 13], "motiv": 4, "adopt": 4, "port": 4, "most": [4, 13], "quit": 4, "miss": 4, "diff_drive_control": [4, 9], "joint_trajectory_control": [4, 9], "consist": [4, 20, 24], "identifi": 4, "much": [4, 13], "303": 4, "304": 4, "stretch": 4, "realtime_tool": [4, 24], "81": 4, "302": 4, "unit": 4, "gmock": 4, "cc": 5, "BY": 5, "licens": 5, "author": 5, "either": 5, "down": 5, "below": 5, "my": 5, "company_nam": 5, "tricycl": [5, 12, 22], "control": [5, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24], "event": 5, "pixel": 5, "prefac": 5, "introduct": [5, 20], "johann": 5, "plapp": 5, "toni": 5, "najjar": 5, "kernel": 5, "hardwar": [5, 6, 8, 10, 12, 13, 22, 24], "agnost": 5, "share": [5, 13], "well": [5, 9, 20], "perform": 5, "heavi": 5, "dr": 5, "stogl": 5, "consult": 5, "practition": 5, "guid": [5, 13], "top": 5, "virtual": 5, "talk": 5, "delv": 5, "deeper": 5, "what": 5, "explicit": [5, 20], "chain": 5, "emerg": 5, "handler": 5, "mock": 5, "usag": [5, 6, 9], "openli": 5, "record": 5, "fiveai": 5, "ltd": 5, "best": [5, 13], "focu": 5, "becom": 5, "util": 5, "3rd": 5, "parti": 5, "nav2": 5, "practic": 5, "tip": 5, "hot": 5, "shown": 5, "furthermor": 5, "get": [5, 24], "reus": 5, "inject": 5, "offer": [5, 6], "expos": 5, "problem": [5, 24], "manipul": [5, 20], "path": 5, "plan": [5, 24], "autonom": 5, "navig": 5, "ideal": [5, 8], "made": 5, "mobil": [5, 11, 22], "arm": 5, "extra": [5, 18], "readi": [5, 13], "power": 5, "studi": 5, "ur": 5, "With": 5, "moveit": [5, 8], "ingredi": 5, "scale": 5, "factor": 5, "teach": 5, "pendant": 5, "influenc": 5, "picknik": 5, "inc": 5, "nathan": 5, "brook": 5, "lovro": 5, "ivanov": 5, "andi": 5, "zelenak": 5, "rune": 5, "s\u00f8e": 5, "knudsen": 5, "onlin": [5, 13], "trajectori": [5, 12, 24], "admitt": 5, "One": 5, "reason": 5, "upgrad": 5, "ros1": 5, "better": 5, "realtim": [5, 11, 20, 22, 24], "contact": 5, "insert": 5, "singl": 5, "waypoint": [5, 12, 20], "mani": [5, 13], "teleoper": 5, "involv": 5, "kinemat": 5, "acceler": [5, 10, 11, 12, 20, 22], "jerk": [5, 11, 22], "obei": 5, "demo": 5, "booth": 5, "zeleank": 5, "unifi": 5, "life": 5, "cycl": 5, "go": [5, 13], "_control": 5, "wild": 5, "materi": 5, "quick": 5, "overview": 5, "layer": 5, "aka": 5, "systemcompon": 5, "forward": [5, 8, 12, 20, 24], "done": [5, 13], "look": 5, "modifi": 5, "simpli": [5, 20], "net": 5, "edit": 5, "collect": [5, 14, 16, 21, 23], "semant": [5, 15, 17], "world": [6, 8], "startup": 6, "h": [6, 9, 13, 19], "p": 6, "param_fil": 6, "controller_typ": 6, "timeout": [6, 9, 22], "controller_manager_timeout": 6, "controller_nam": [6, 9, 13], "argument": [6, 9], "exit": [6, 9], "leav": 6, "unconfigur": 6, "namespac": [6, 12, 13, 18, 20], "kill": [6, 9], "wait": [6, 9], "until": 6, "doxygen": 7, "fake": 7, "mirror": 8, "correspond": [8, 13, 24], "offlin": 8, "advantag": 8, "pipe": 8, "insid": 8, "broadcast": [8, 18, 19], "even": 8, "debug": 8, "boost": 8, "mimic": 8, "offset": [8, 20], "fake_sensor_command": 8, "boolean": [8, 18, 20], "fals": [8, 18, 20], "position_state_following_offset": 8, "custom_interface_with_following_offset": 8, "map": [8, 20], "multipli": 8, "mimick": 8, "deprec": [9, 12], "configure_control": 9, "configure_start_control": 9, "load_configure_control": 9, "load_start_control": 9, "spin": 9, "spin_tim": 9, "hidden": 9, "discoveri": 9, "appli": 9, "alreadi": [9, 13, 20], "daemon": 9, "test_controller_nam": 9, "test_control": 9, "diffdrivecontrol": 9, "joint_state_control": [9, 10], "jointstatecontrol": 9, "unclaim": [9, 10], "set_stat": 9, "reload": 9, "adjust": 9, "strict": 9, "asap": 9, "switch_timeout": 9, "templat": [10, 13, 20], "demonstr": 10, "prove": 10, "comprehens": 10, "ros2_control_demo_bringup": 10, "gui": 10, "ros2_control_test_nod": 10, "rrbot_system_multi_interfac": 10, "py": 10, "list_hardware_interfac": 10, "load_control": 10, "forward_command_controller_posit": 10, "forward_command_controller_veloc": 10, "forward_command_controller_acceler": 10, "forward_command_controller_illegal1": 10, "forward_command_controller_illegal2": 10, "set_controller_st": 10, "claim": 10, "now": [10, 13], "let": 10, "switch_control": 10, "again": 10, "inde": 10, "been": [10, 19], "differenti": [11, 12, 19, 24], "drive": [11, 12, 22, 24], "bodi": 11, "translat": [11, 22], "wheel": 11, "odometri": [11, 22], "comput": [11, 22], "feedback": [11, 20, 22], "twist": [11, 22], "x": [11, 15, 17, 22], "linear": [11, 20, 22], "z": [11, 15, 22], "angular": [11, 22], "ignor": [11, 20, 22], "space": [11, 20], "sort": [12, 13], "accord": [12, 20], "position_control": [12, 20], "hw_if_posit": 12, "velocity_control": 12, "hw_if_veloc": 12, "effort_control": 12, "hw_if_effort": 12, "interpol": [12, 20], "step": [13, 20, 24], "compil": 13, "rule": 13, "prepar": 13, "ament_cmak": 13, "easiest": 13, "search": 13, "recent": 13, "process": 13, "pkg": 13, "flag": [13, 20], "least": [13, 20], "cmakelist": 13, "txt": 13, "package_nam": 13, "hpp": 13, "visibility_control": 13, "window": 13, "copi": 13, "prefix": [13, 15, 17], "guard": 13, "ifndef": 13, "preprocessor": 13, "engin": 13, "friend": 13, "uniqu": 13, "written": 13, "snake_cas": 13, "controllernam": 13, "public": 13, "overrid": 13, "exact": 13, "vector": 13, "store": 13, "simplifi": [13, 24], "further": 13, "parent": 13, "reserv": 13, "importantli": 13, "fine": 13, "return": 13, "return_typ": 13, "ok": 13, "otherwis": 13, "individu": 13, "none": 13, "ask": 13, "full": 13, "joint_nam": [13, 20], "interface_typ": 13, "assign": 13, "opposit": 13, "empti": 13, "constraint": [13, 20], "At": 13, "close": 13, "class_list_macro": 13, "controller_name_namespac": 13, "visibl": 13, "controller_name_packag": 13, "bottom": 13, "test_load_": 13, "content": 13, "last": [13, 20], "specifi": [13, 20], "find_packag": 13, "rclcpp": 13, "rclcpp_lifecycl": 13, "directori": 13, "ament": 13, "cmake": 13, "pluginlib_export_plugin_description_fil": 13, "ament_cmake_gmock": 13, "ros2_control_test_asset": 13, "ament_add_gmock": 13, "ament_export_librari": 13, "ament_packag": 13, "test_depend": 13, "colcon": 13, "rememb": 13, "root": 13, "success": 13, "bash": 13, "enjoi": 13, "great": 13, "shell": 13, "mai": [14, 16, 21, 23], "certain": [14, 16, 21, 23], "achiev": [14, 16, 21, 23], "These": [14, 16, 21, 23], "geometry_msg": 15, "msg": [15, 17, 20], "wrenchstamp": 15, "wrapper": [15, 17], "forcetorquesensor": 15, "sensor_nam": [15, 17], "interface_nam": 15, "frame": [15, 17], "6d": 15, "ft": 15, "y": 15, "less": 15, "six": 15, "ax": 15, "example_nam": 15, "example_interfac": 15, "sensor_msg": 17, "imusensor": 17, "orient": 17, "angular_veloc": 17, "linear_acceler": 17, "joint_stat": 18, "dynamic_joint_st": 18, "use_local_top": 18, "my_state_broadcast": 18, "extra_joint": 18, "arrai": 18, "renam": 19, "joint_state_broadcast": 19, "order": 19, "true": [19, 20], "remov": 19, "turtl": 19, "reach": 20, "instant": 20, "attempt": 20, "mechan": 20, "By": 20, "spline": 20, "guarante": 20, "continu": 20, "discourag": 20, "becaus": 20, "yield": 20, "discontinu": 20, "cubic": 20, "quintic": 20, "pid": [20, 24], "similarli": 20, "eg": 20, "proxi": 20, "wrap": 20, "robust": 20, "clock": 20, "caus": 20, "queu": 20, "segment": 20, "ros__paramet": 20, "joint3": 20, "joint4": 20, "joint5": 20, "joint6": 20, "state_publish_r": 20, "action_monitor_r": 20, "20": 20, "allow_partial_joints_go": 20, "open_loop_control": 20, "stopped_velocity_toler": 20, "01": 20, "goal_tim": 20, "05": [20, 24], "03": 20, "monitor": 20, "action": 20, "control_msg": [20, 24], "followjointtrajectori": 20, "hydraul": 20, "tri": 20, "numer": 20, "nan": 20, "std": 20, "numeric_limit": 20, "quiet_nan": 20, "toler": 20, "jointtrajectori": 20, "deviat": 20, "maxim": 20, "predefin": 20, "joint_trajectori": 20, "trajectory_msg": 20, "jointtrajectorycontrollerst": 20, "follow_joint_trajectori": 20, "server": 20, "position_velocity_control": 20, "position_velocity_acceleration_control": 20, "Not": 20, "yet": 20, "feedforward": 20, "term": [20, 24], "plu": 20, "171": 20, "base_link": 22, "traction": 22, "steer": 22, "Its": 24, "oper": 24, "overcom": 24, "idea": 24, "wide": 24, "toolkit": 24, "unreleas": 24, "smooth": 24, "doc": 24, "wg": 24, "meet": 24, "everi": 24, "wednesdai": 24, "join": 24, "announc": 24, "discours": 24, "googl": 24, "propos": 24, "previou": 24, "bug": 24, "tracker": 24, "minim": 24, "reproduc": 24, "regard": 24, "etc": 24, "question": 24, "answer": 24, "2023": 24, "12": 24, "31": 24, "built": 24, "gmt": 24}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"acknowledg": 0, "pull": 1, "request": 1, "rule": 1, "repositori": [1, 10], "process": 1, "merg": 1, "write": [1, 13], "document": [1, 7, 24], "structur": [1, 2], "ci": 1, "configur": 1, "differ": 2, "ros_control": 2, "ros1": [2, 4], "hardwar": [2, 3, 4, 11, 14, 16, 18, 20, 21, 23], "class": 2, "interfac": [2, 3, 9, 11, 14, 16, 18, 20, 21, 23], "control": [2, 3, 4, 6, 12, 13, 20], "": [2, 20], "access": 2, "migrat": 2, "guid": 2, "ros2_control": [2, 4, 12, 24], "robothardwar": 2, "compon": [2, 3, 4, 8], "get": 3, "start": 3, "compil": 3, "architectur": 3, "manag": [3, 6], "resourc": [3, 5], "user": 3, "descript": 3, "urdf": 3, "run": 3, "framework": 3, "your": 3, "robot": [3, 5], "project": 4, "idea": 4, "gsoc": 4, "2022": [4, 5], "asynchron": 4, "tutori": 4, "demo": [4, 10], "mission": 4, "add": 4, "support": 4, "semant": 4, "featur": [4, 7, 11, 20, 22], "pariti": 4, "from": 4, "present": 5, "2023": 5, "02": 5, "ro": 5, "meetup": 5, "munich": 5, "5": 5, "12": 5, "industri": 5, "confer": 5, "10": 5, "roscon": 5, "06": 5, "fr": 5, "2021": 5, "world": 5, "07": 5, "weekli": 5, "13": 5, "rosdevdai": 5, "05": 5, "diagram": 5, "imag": 5, "helper": 6, "script": 6, "spawner": 6, "py": 6, "unspawn": 6, "api": 7, "core": 7, "function": 7, "concept": 7, "fake": 8, "gener": 8, "system": 8, "paramet": [8, 15, 17, 18, 20], "per": 8, "joint": [8, 20], "command": [9, 11, 18, 22], "line": 9, "list_control": 9, "list_controller_typ": 9, "list_hardware_interfac": 9, "load_control": 9, "reload_controller_librari": 9, "set_controller_st": 9, "switch_control": 9, "unload_control": 9, "organ": 10, "mode": 10, "switch": 10, "diff_drive_control": 11, "veloc": [11, 22], "type": [11, 14, 16, 18, 20, 21, 23], "other": [11, 20, 22], "nomenclatur": 12, "guidelin": 12, "best": 12, "practic": 12, "avail": 12, "broadcast": [12, 15, 17], "new": 13, "us": [13, 20], "extern": 13, "refer": 13, "effort_control": 14, "forc": 15, "torqu": 15, "sensor": [15, 17], "forward_command_control": 16, "imu": 17, "joint_state_broadcast": 18, "joint_state_control": 19, "joint_trajectory_control": 20, "trajectori": 20, "represent": 20, "detail": 20, "about": 20, "ros2": 20, "special": 20, "version": 20, "jointtrajectorycontrol": 20, "tbd": 20, "position_control": 21, "tricycle_control": 22, "velocity_control": 23, "welcom": 24, "foxi": 24, "overview": 24, "develop": 24, "organis": 24, "commun": 24}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx": 60}, "alltitles": {"Acknowledgements": [[0, "acknowledgements"]], "Pull Requests": [[1, "pull-requests"]], "Rules for the repositories and process of merging pull requests": [[1, "rules-for-the-repositories-and-process-of-merging-pull-requests"]], "Writing documentation": [[1, "writing-documentation"]], "Repository structure and CI configuration": [[1, "repository-structure-and-ci-configuration"]], "CI configuration": [[1, "ci-configuration"]], "Differences to ros_control (ROS1)": [[2, "differences-to-ros-control-ros1"]], "Hardware Structures - classes": [[2, "hardware-structures-classes"]], "Hardware Interfaces": [[2, "hardware-interfaces"]], "Controller\u2019s Access to Hardware": [[2, "controller-s-access-to-hardware"]], "Migration Guide to ros2_control": [[2, "migration-guide-to-ros2-control"]], "RobotHardware to Components": [[2, "robothardware-to-components"]], "Controller Migration": [[2, "controller-migration"]], "Getting Started": [[3, "getting-started"]], "Compiling": [[3, "compiling"]], "Architecture": [[3, "architecture"]], "Controller Manager": [[3, "controller-manager"], [6, "controller-manager"]], "Resource Manager": [[3, "resource-manager"]], "Controllers": [[3, "controllers"], [12, "id1"]], "User Interfaces": [[3, "user-interfaces"]], "Hardware Components": [[3, "hardware-components"]], "Hardware Description in URDF": [[3, "hardware-description-in-urdf"]], "Running the Framework for Your Robot": [[3, "running-the-framework-for-your-robot"]], "Project Ideas for GSoC 2022": [[4, "project-ideas-for-gsoc-2022"]], "Asynchronous Control Components": [[4, "asynchronous-control-components"]], "Tutorials and Demos for ros2_control": [[4, "tutorials-and-demos-for-ros2-control"]], "Mission-Control for ros2_control": [[4, "mission-control-for-ros2-control"]], "Add support for hardware semantic components": [[4, "add-support-for-hardware-semantic-components"]], "Feature-parity for controllers from ROS1": [[4, "feature-parity-for-controllers-from-ros1"]], "Resources": [[5, "resources"]], "Presentations": [[5, "presentations"]], "2023-02 ROS Meetup Munich #5": [[5, "ros-meetup-munich-5"]], "2022-12 ROS-Industrial Conference 2022": [[5, "ros-industrial-conference-2022"]], "2022-10 ROSCon 2022": [[5, "roscon-2022"]], "2022-06 ROSCon Fr 2022": [[5, "roscon-fr-2022"]], "2021-10 ROS World 2021": [[5, "ros-world-2021"]], "2021-10-07 Weekly Robotics Meetup #13": [[5, "weekly-robotics-meetup-13"]], "2021-06 ROSDevDay 2021": [[5, "rosdevday-2021"]], "2021-05 ROSCon Fr 2021": [[5, "roscon-fr-2021"]], "Diagrams": [[5, "diagrams"]], "Images": [[5, "images"]], "Helper scripts": [[6, "helper-scripts"]], "spawner.py": [[6, "spawner-py"]], "unspawner.py": [[6, "unspawner-py"]], "API Documentation": [[7, "api-documentation"]], "Core functionalities": [[7, "core-functionalities"]], "Features": [[7, "features"]], "Concepts": [[7, "concepts"]], "Fake Components": [[8, "fake-components"]], "Generic System": [[8, "generic-system"]], "Parameters": [[8, "parameters"], [15, "parameters"], [17, "parameters"], [18, "parameters"]], "Per-joint Parameters": [[8, "per-joint-parameters"]], "Command Line Interface": [[9, "command-line-interface"]], "list_controllers": [[9, "list-controllers"]], "list_controller_types": [[9, "list-controller-types"]], "list_hardware_interfaces": [[9, "list-hardware-interfaces"]], "load_controller": [[9, "load-controller"]], "reload_controller_libraries": [[9, "reload-controller-libraries"]], "set_controller_state": [[9, "set-controller-state"]], "switch_controllers": [[9, "switch-controllers"]], "unload_controller": [[9, "unload-controller"]], "Demos": [[10, "demos"]], "Repository organization": [[10, "repository-organization"]], "Mode switching demo": [[10, "mode-switching-demo"]], "diff_drive_controller": [[11, "diff-drive-controller"]], "Velocity commands": [[11, "velocity-commands"], [22, "velocity-commands"]], "Hardware interface type": [[11, "hardware-interface-type"], [14, "hardware-interface-type"], [16, "hardware-interface-type"], [18, "hardware-interface-type"], [20, "hardware-interface-type"], [21, "hardware-interface-type"], [23, "hardware-interface-type"]], "Other features": [[11, "other-features"], [20, "other-features"], [22, "other-features"]], "ros2_controllers": [[12, "ros2-controllers"]], "Nomenclature": [[12, "nomenclature"]], "Guidelines and Best Practices": [[12, "guidelines-and-best-practices"]], "Available Controllers": [[12, "available-controllers"]], "Available Broadcasters": [[12, "available-broadcasters"]], "Writing a new controller": [[13, "writing-a-new-controller"]], "Useful External References": [[13, "useful-external-references"]], "effort_controllers": [[14, "effort-controllers"]], "Force Torque Sensor Broadcaster": [[15, "force-torque-sensor-broadcaster"]], "forward_command_controller": [[16, "forward-command-controller"]], "IMU Sensor Broadcaster": [[17, "imu-sensor-broadcaster"]], "joint_state_broadcaster": [[18, "joint-state-broadcaster"]], "Commands": [[18, "commands"]], "joint_state_controller": [[19, "joint-state-controller"]], "joint_trajectory_controller": [[20, "joint-trajectory-controller"]], "Trajectory representation": [[20, "trajectory-representation"]], "Using Joint Trajectory Controller(s)": [[20, "using-joint-trajectory-controller-s"]], "Details about parameters": [[20, "details-about-parameters"]], "ROS2 interface of the controller": [[20, "ros2-interface-of-the-controller"]], "Specialized versions of JointTrajectoryController (TBD in \u2026)": [[20, "specialized-versions-of-jointtrajectorycontroller-tbd-in"]], "position_controllers": [[21, "position-controllers"]], "tricycle_controller": [[22, "tricycle-controller"]], "velocity_controllers": [[23, "velocity-controllers"]], "Welcome to the ros2_control documentation - Foxy!": [[24, "welcome-to-the-ros2-control-documentation-foxy"]], "Overview": [[24, "overview"]], "Development Organisation and Communication": [[24, "development-organisation-and-communication"]]}, "indexentries": {}}) \ No newline at end of file diff --git a/galactic/.buildinfo b/galactic/.buildinfo index ff98a2fa5c3..dcdf69f84fe 100644 --- a/galactic/.buildinfo +++ b/galactic/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 67a256d0f516ed48ae86fe83708acd38 +config: d8c154f1f9f90f4de25ded7260ce5901 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/galactic/.doctrees/doc/acknowledgements/acknowledgements.doctree b/galactic/.doctrees/doc/acknowledgements/acknowledgements.doctree index a9b56b94fbea6dabc35d4dfd2dc6b8766db5f221..8db1cda686df169676e6bcda8fd59c3b36682757 100644 GIT binary patch delta 66 zcmeCO>ayBk#As+ayBk#AujXnro0!T3o81lwy#aW@KPwo@kkrXl`U=X=!O-nV4i@ZfRg{mSUb_ VVUTKJYLsF;*^otSb0yDj7$yF%nS@n UQ%qAWk_-$jOp-P~V|I=P0KVK5E&u=k delta 64 zcmZ3vk8$Nb#tmDU4RcF#4N^*rOZAgd43g7~42;YZEt3+>jf^ZUEe$LalPt_F4b06_ U%u_53QY}o4Qj9l0V|I=P0Mld?vj6}9 diff --git a/galactic/.doctrees/doc/differences_to_ros1/differences_to_ros1.doctree b/galactic/.doctrees/doc/differences_to_ros1/differences_to_ros1.doctree index 4d55af8b9094e3f63b6141e60f5685a4830b0831..5b77b51115c3990bce9ef564d966f5f09d7cb4dc 100644 GIT binary patch delta 64 zcmdnf&$OqXX@eG{p?O(esYPLCk$!S=qPd~DMUuI3nz5;Yp+S;?fmxD?k*Q&tnSp_6 TifO7vl7XRxNz&$M#>6%Nkl7O_ delta 64 zcmdnf&$OqXX@eG{VQy)zK}u6%NrC}4S diff --git a/galactic/.doctrees/doc/getting_started/getting_started.doctree b/galactic/.doctrees/doc/getting_started/getting_started.doctree index e0dfca588ce82f6846a33d4981829054b8295da7..00786990f13c4009b324259285ea7f14765beb70 100644 GIT binary patch delta 64 zcmez0#r(gEd4mC?p?O(esYPLCk$!S=qPd~DMUuI3nz5;Yp+S;?fmxD?k*Q&tnSp_6 TifO7vl7XRxNz&#-M!6#Zu*egv delta 64 zcmez0#r(gEd4mC?VQy)zK}uh($ delta 64 zcmeyeis{QLrVTobhPkD=1}UY*rTR%J2FYng21e$ImPv``Mn;yFmIjuINfzdo2Igid U<|!5isTQV2DaM;)8O5gn0L`Wp8UO$Q diff --git a/galactic/.doctrees/doc/resources/resources.doctree b/galactic/.doctrees/doc/resources/resources.doctree index 237bd039beb2c68e88a9e0a505337e800ad37a38..a11dd7f2c44c7fe44d94e18f7dd5b1b5424cd6c8 100644 GIT binary patch delta 68 zcmX@v!*a5RWrGT%p?O(esYPLCk$!S=qPd~DMUuI3nz5;Yp+S;?fmxD?k*Q&tnSp_6 XifO7vl7XRxNm6qtabu?;&8>69lSzf6{VP=tja&n@%p}9qpxpA7Ysez$El7WF)l8KS2VVaqNfoY0q Rszs84p@m7(=5oe!+5mo`6BPge delta 62 zcmX>abu?;&8>3-vX|6#^X>qB3Qi?%xnvsE#d7@=fqPdZgrKP2TWnz+rxut=*S&Dgz Rg+Z!?sZomY=5oe!+5nR&6Pf@3 diff --git a/galactic/.doctrees/doc/ros2_control/doc/index.doctree b/galactic/.doctrees/doc/ros2_control/doc/index.doctree index 4f470a2e47e1511157f064c4531e2bda2c23b597..b041997e15d97ca3cce4c845162ea9579c42f9ec 100644 GIT binary patch delta 62 zcmdm_ze#_C9iyRnSzf6{VP=tja&n@%p}9qpxpA7Ysez$El7WF)l8KS2VVaqNfoY0q Rszs84p@m7(=6ptHF#ujz5$ON` delta 62 zcmdm_ze#_C9iw4xX|6#^X>qB3Qi?%xnvsE#d7@=fqPdZgrKP2TWnz+rxut=*S&Dgz Rg+Z!?sZomY=6ptHF#vMl5^ewh diff --git a/galactic/.doctrees/doc/ros2_control/hardware_interface/doc/fake_components_userdoc.doctree b/galactic/.doctrees/doc/ros2_control/hardware_interface/doc/fake_components_userdoc.doctree index f8e5979ec190800fc5c49ebb08abb32ad75ac237..f64074ea1e794282bfd94775387278876c4bcd51 100644 GIT binary patch delta 62 zcmcbcc{g)|1EZmNSzf6{VP=tja&n@%p}9qpxpA7Ysez$El7WF)l8KS2VVaqNfoY0q Rszs84p@m7(=0e6CV*rlt68!)G delta 62 zcmcbcc{g)|1EXPXX|6#^X>qB3Qi?%xnvsE#d7@=fqPdZgrKP2TWnz+rxut=*S&Dgz Rg+Z!?sZomY=0e6CV*sOf6M_H$ diff --git a/galactic/.doctrees/doc/ros2_control/hardware_interface/doc/hardware_components_userdoc.doctree b/galactic/.doctrees/doc/ros2_control/hardware_interface/doc/hardware_components_userdoc.doctree index 07b4f1079ba14a84648f32fc4aa5d2c8dddb5f31..a8ded19906f5e9c316faef0b8cfb16a1f15d97d3 100644 GIT binary patch delta 64 zcmZpl%h*1baf1h=p?O(esYPLCk$!S=qPd~DMUuI3nz5;Yp+S;?fmxD?k*Q&tnSp_6 TifO7vl7XRxNz&#@Mm}EvgMbo; delta 64 zcmZpl%h*1baf1h=VQy)zK}uqB3Qi?%xnvsE#d7@=fqPdZgrKP2TWnz+rxut=*S&Dgz Rg+Z!?sZomY=5)p{`T(8f6W{;< diff --git a/galactic/.doctrees/doc/ros2_controllers/diff_drive_controller/doc/userdoc.doctree b/galactic/.doctrees/doc/ros2_controllers/diff_drive_controller/doc/userdoc.doctree index 5e10d5623196a0a18ca23db6d953d2347d96430d..6f53a3e3dd77107b6117dd2d6401cf7c00ad6b66 100644 GIT binary patch delta 62 zcmdn4vt4I{52K-ZSzf6{VP=tja&n@%p}9qpxpA7Ysez$El7WF)l8KS2VVaqNfoY0q Rszs84p@m7(=32&GA^>BQ5`F*x delta 62 zcmdn4vt4I{52ImjX|6#^X>qB3Qi?%xnvsE#d7@=fqPdZgrKP2TWnz+rxut=*S&Dgz Rg+Z!?sZomY=32&GA^>QSzf6{VP=tja&n@%p}9qpxpA7Ysez$El7WF)l8KS2VVaqNfoY0q Vszs84p@m7(WJWou&BcuVMgYar6I%cP delta 66 zcmX?qB3Qi?%xnvsE#d7@=fqPdZgrKP2TWnz+rxut=*S&Dgz Vg+Z!?sZomYWJWou&BcuVMgZJz6W{;< diff --git a/galactic/.doctrees/doc/ros2_controllers/doc/writing_new_controller.doctree b/galactic/.doctrees/doc/ros2_controllers/doc/writing_new_controller.doctree index 676a1a24902ae1846ada409b735b8d55049acebd..39520b270bd5b1b8100660edcb76a829fdcf28aa 100644 GIT binary patch delta 64 zcmZ2^g?Z%_<_!*vhUR5?r51&mMf%CfiROmp7D?vDX~w1oh6YIn24+bnMy7^oW(EeP UDW<6wNd|@%CP|wM8F#z@0Iz@)asU7T delta 64 zcmZ2^g?Z%_<_!*vhPkD=1}UY*rTR%J2FYng21e$ImPv``Mn;yFmIjuINfzdo2Igid U<|!5isTQV2DaM-%8F#z@0K^Cs_W%F@ diff --git a/galactic/.doctrees/doc/ros2_controllers/effort_controllers/doc/userdoc.doctree b/galactic/.doctrees/doc/ros2_controllers/effort_controllers/doc/userdoc.doctree index 0ff1d6fb8b11503042f5cd1369c0d05b679e86fa..83d4a68512126a3434f3e376ce6a151f804e653a 100644 GIT binary patch delta 62 zcmbQEFh^m78>69lSzf6{VP=tja&n@%p}9qpxpA7Ysez$El7WF)l8KS2VVaqNfoY0q Rszs84p@m7(=5ofRd;m{)5(xkR delta 62 zcmbQEFh^m78>3-vX|6#^X>qB3Qi?%xnvsE#d7@=fqPdZgrKP2TWnz+rxut=*S&Dgz Rg+Z!?sZomY=5ofRd;nws5{>`> diff --git a/galactic/.doctrees/doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc.doctree b/galactic/.doctrees/doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc.doctree index ebce7f8d1579f31c829327341a043dec96b4c589..60e2880084dbe0b1897766762a81c1b596bc5b76 100644 GIT binary patch delta 62 zcmccUe9?JB0;8dMSzf6{VP=tja&n@%p}9qpxpA7Ysez$El7WF)l8KS2VVaqNfoY0q Rszs84p@m7(=823B3IKkb5}E)2 delta 62 zcmccUe9?JB0;6GWX|6#^X>qB3Qi?%xnvsE#d7@=fqPdZgrKP2TWnz+rxut=*S&Dgz Rg+Z!?sZomY=823B3ILNN6CVHo diff --git a/galactic/.doctrees/doc/ros2_controllers/forward_command_controller/doc/userdoc.doctree b/galactic/.doctrees/doc/ros2_controllers/forward_command_controller/doc/userdoc.doctree index 82ef341bf5753590a8f335d06dda20c6c0399a87..e29baa8a7e252fdf4307e52229825dfd98030a30 100644 GIT binary patch delta 62 zcmaE&@I+xl7^9(iSzf6{VP=tja&n@%p}9qpxpA7Ysez$El7WF)l8KS2VVaqNfoY0q Rszs84p@m7(=61%rd;oR`67c{4 delta 62 zcmaE&@I+xl7^7isX|6#^X>qB3Qi?%xnvsE#d7@=fqPdZgrKP2TWnz+rxut=*S&Dgz Rg+Z!?sZomY=61%rd;p4&6LtUq diff --git a/galactic/.doctrees/doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc.doctree b/galactic/.doctrees/doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc.doctree index 34282ab231c2a17cbd0b0d8d750c41ab7e60b3e2..7a89267d40a0eb29746b2764797b8c77ba12c477 100644 GIT binary patch delta 62 zcmZqIYuDT0$7pC?mRD*~m|3KsoSbNGXl{{YZk%RpYG7!PWME*HWMX7$m}X{RV47l@ RYLR4MXkn7Hxt_5@6aY=T5%mB7 delta 62 zcmZqIYuDT0$7q;anro0!T3o81lwy#aW@KPwo@kkrXl`U=X=!O-nV4i@ZfRg{mSUb_ RVUTKJYLsHUxt_5@6aZpF5_$jt diff --git a/galactic/.doctrees/doc/ros2_controllers/joint_state_broadcaster/doc/userdoc.doctree b/galactic/.doctrees/doc/ros2_controllers/joint_state_broadcaster/doc/userdoc.doctree index f1ee3937434bcebb7abb6d41068f054d977be03b..767427d61b62c575045e49bce0777814c1a4b50c 100644 GIT binary patch delta 64 zcmZpfz}PZ@aYF#3p?O(esYPLCk$!S=qPd~DMUuI3nz5;Yp+S;?fmxD?k*Q&tnSp_6 TifO7vl7XRxNz&#<#%4DFew7mC delta 64 zcmZpfz}PZ@aYF#3VQy)zK}uqB3Qi?%xnvsE#d7@=fqPdZgrKP2TWnz+rxut=*S&Dgz Rg+Z!?sZomY=4!_Md;oKF66^o~ diff --git a/galactic/.doctrees/doc/ros2_controllers/velocity_controllers/doc/userdoc.doctree b/galactic/.doctrees/doc/ros2_controllers/velocity_controllers/doc/userdoc.doctree index 47e6fe151446480a64a50e1e1e2a8957970404e6..0c5353c2f8ad615b58473e1bd5e5661c341dd3fc 100644 GIT binary patch delta 62 zcmdm`uuEZs7o(whSzf6{VP=tja&n@%p}9qpxpA7Ysez$El7WF)l8KS2VVaqNfoY0q Rszs84p@m7(=4!_Md;nhT5@!Ga delta 62 zcmdm`uuEZs7o%ZrX|6#^X>qB3Qi?%xnvsE#d7@=fqPdZgrKP2TWnz+rxut=*S&Dgz Rg+Z!?sZomY=4!_Md;oKF66^o~ diff --git a/galactic/.doctrees/environment.pickle b/galactic/.doctrees/environment.pickle index 28a435c236098da3ea6970261f820302b7bbff81..99de2942ac2ba6a243dbe2063dbd8e375e7bf09e 100644 GIT binary patch delta 14357 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 Rby)1e;&)i=*A delta 14205 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 G(tiOvYK!y$ diff --git a/galactic/.doctrees/index.doctree b/galactic/.doctrees/index.doctree index 9407954f5ae88254290c19a43311626631e89cb3..01d2f1b2cc23d94a48c8dedad5f78fd76d1849bf 100644 GIT binary patch delta 82 zcmX?jpYh;*#tmkShUR5?r51&mMf%CfiROmp7D?vDX~w1oh6YIn24+bnMy7^oW(EeP mDW<6wNd|@%CP|yq8Lx#f8g8}=Gh<{loP0lAdh>*ELkR#`;~CQc delta 82 zcmX?jpYh;*#tmkShPkD=1}UY*rTR%J2FYng21e$ImPv``Mn;yFmIjuINfzdo2Igid m<|!5isTQV2DaM=A8Lx#f8f>-;Gh<{ln0!B6dh>*ELkR$Psv1@R diff --git a/galactic/index.html b/galactic/index.html index 89cdc325a5c..30f3813caf2 100644 --- a/galactic/index.html +++ b/galactic/index.html @@ -152,7 +152,7 @@

Development Organisation and Communication -

Built on 2023-12-30 at 05:31 GMT

+

Built on 2023-12-31 at 05:31 GMT

diff --git a/galactic/searchindex.js b/galactic/searchindex.js index 504a368b838..14ab41e4499 100644 --- a/galactic/searchindex.js +++ b/galactic/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["doc/acknowledgements/acknowledgements", "doc/contributing/contributing", "doc/differences_to_ros1/differences_to_ros1", "doc/getting_started/getting_started", "doc/project_ideas", "doc/resources/resources", "doc/ros2_control/controller_manager/doc/userdoc", "doc/ros2_control/doc/index", "doc/ros2_control/hardware_interface/doc/fake_components_userdoc", "doc/ros2_control/hardware_interface/doc/hardware_components_userdoc", "doc/ros2_control/ros2controlcli/doc/userdoc", "doc/ros2_control_demos/doc/index", "doc/ros2_controllers/diff_drive_controller/doc/userdoc", "doc/ros2_controllers/doc/controllers_index", "doc/ros2_controllers/doc/writing_new_controller", "doc/ros2_controllers/effort_controllers/doc/userdoc", "doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/forward_command_controller/doc/userdoc", "doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/joint_state_broadcaster/doc/userdoc", "doc/ros2_controllers/joint_trajectory_controller/doc/userdoc", "doc/ros2_controllers/position_controllers/doc/userdoc", "doc/ros2_controllers/velocity_controllers/doc/userdoc", "index"], "filenames": ["doc/acknowledgements/acknowledgements.rst", "doc/contributing/contributing.rst", "doc/differences_to_ros1/differences_to_ros1.rst", "doc/getting_started/getting_started.rst", "doc/project_ideas.rst", "doc/resources/resources.rst", "doc/ros2_control/controller_manager/doc/userdoc.rst", "doc/ros2_control/doc/index.rst", "doc/ros2_control/hardware_interface/doc/fake_components_userdoc.rst", "doc/ros2_control/hardware_interface/doc/hardware_components_userdoc.rst", "doc/ros2_control/ros2controlcli/doc/userdoc.rst", "doc/ros2_control_demos/doc/index.rst", "doc/ros2_controllers/diff_drive_controller/doc/userdoc.rst", "doc/ros2_controllers/doc/controllers_index.rst", "doc/ros2_controllers/doc/writing_new_controller.rst", "doc/ros2_controllers/effort_controllers/doc/userdoc.rst", "doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/forward_command_controller/doc/userdoc.rst", "doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/joint_state_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/joint_trajectory_controller/doc/userdoc.rst", "doc/ros2_controllers/position_controllers/doc/userdoc.rst", "doc/ros2_controllers/velocity_controllers/doc/userdoc.rst", "index.rst"], "titles": ["Acknowledgements", "Pull Requests", "Differences to ros_control (ROS1)", "Getting Started", "Project Ideas for GSoC 2022", "Resources", "Controller Manager", "API Documentation", "Fake Components", "Hardware Components", "Command Line Interface", "Demos", "diff_drive_controller", "ros2_controllers", "Writing a new controller", "effort_controllers", "Force Torque Sensor Broadcaster", "forward_command_controller", "IMU Sensor Broadcaster", "joint_state_broadcaster", "joint_trajectory_controller", "position_controllers", "velocity_controllers", "Welcome to the ros2_control documentation - Galactic!"], "terms": {"The": [0, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, 18, 19, 20, 23], "project": [0, 1, 23], "ha": [0, 1, 3, 4, 5, 14, 19], "receiv": [0, 2], "major": 0, "contribut": [0, 1, 5], "from": [0, 1, 2, 3, 5, 6, 8, 10, 12, 14, 16, 18, 20, 23], "follow": [0, 1, 2, 3, 4, 8, 9, 10, 11, 13, 14, 20, 23], "compani": [0, 5], "institut": 0, "support": [0, 2, 3, 5, 8, 10, 14, 19, 20, 23], "rosin": 0, "ro": [0, 1, 3, 4, 6, 8, 10, 23], "industri": [0, 3, 4], "qualiti": [0, 1], "assur": 0, "robot": [0, 2, 4, 11, 12, 16, 19, 23], "softwar": [0, 3], "compon": [0, 5, 6, 7, 12, 16, 18, 23], "more": [0, 1, 2, 3, 4, 8, 14], "inform": [0, 8, 14, 23], "http": [0, 1, 3, 4, 6], "eu": 0, "thi": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 14, 15, 16, 17, 20, 21, 22, 23], "fund": 0, "european": 0, "union": 0, "": [0, 1, 3, 4, 5, 11, 14, 23], "horizon": 0, "2020": 0, "research": [0, 5], "innov": 0, "programm": 0, "under": [0, 5, 14, 23], "grant": 0, "agreement": 0, "732287": 0, "first": [1, 2, 9, 14], "thank": 1, "you": [1, 2, 3, 5, 6, 8, 9, 14, 23], "consid": [1, 10], "ros2_control": [1, 3, 5, 6, 8, 9, 11, 14], "As": [1, 14], "an": [1, 2, 3, 4, 5, 8, 10, 14, 19, 20], "open": [1, 19, 20], "sourc": [1, 3, 5, 14], "we": [1, 4, 5, 9, 19], "welcom": 1, "each": [1, 3, 4, 9, 19], "contributor": 1, "regardless": 1, "background": 1, "experi": 1, "To": [1, 2, 3, 6, 19, 23], "reduc": [1, 8], "entropi": 1, "univers": [1, 4, 5], "our": [1, 3, 4, 5], "vivid": 1, "collabor": 1, "environ": [1, 3, 5], "have": [1, 2, 3, 4, 6, 8, 9, 11, 14, 19, 20], "set": [1, 2, 4, 5, 6, 8, 9, 10, 11, 15, 17, 19, 20, 21, 22], "up": [1, 5, 11], "some": [1, 4, 5, 19, 20, 23], "standard": [1, 2, 3, 4, 5, 10, 13, 16, 19], "method": [1, 2, 3, 9, 14], "requir": [1, 2, 3, 4, 14], "ar": [1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 16, 18, 19, 20, 23], "limit": [1, 4, 5, 12], "scope": 1, "your": [1, 2, 5, 8, 14, 23], "pr": 1, "should": [1, 2, 4, 5, 6, 9, 10, 11, 14, 19], "do": [1, 2, 3, 4, 5, 6, 14, 20], "one": [1, 2, 3, 4, 5, 14, 16, 19, 23], "thing": 1, "avoid": [1, 14], "ad": [1, 4, 8, 14, 19], "random": 1, "fix": [1, 2], "put": [1, 14], "those": [1, 2, 3, 4, 8, 14, 16, 19, 20], "separ": [1, 2, 3, 19], "give": [1, 3, 5, 23], "descript": [1, 2, 5, 9, 14], "titl": 1, "add": [1, 2, 9, 14], "short": [1, 14, 23], "summari": [1, 5, 23], "make": [1, 2, 4, 5, 6, 23], "sure": [1, 4, 23], "pipelin": 1, "i": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], "green": 1, "don": 1, "t": [1, 6], "afraid": 1, "review": [1, 4, 23], "maintain": [1, 3, 4], "new": [1, 5, 13, 20, 23], "code": [1, 2, 4, 5, 14], "test": [1, 4, 8, 11, 14], "If": [1, 2, 3, 6, 9, 14, 16, 19, 20, 23], "function": [1, 2, 3, 4, 5, 6], "alwai": 1, "exercis": 1, "serv": [1, 3, 4], "live": [1, 5], "origin": [1, 5], "intent": [1, 8], "section": [1, 2, 14], "target": [1, 13, 14, 20], "also": [1, 2, 3, 4, 5, 14], "read": [1, 2, 3, 14, 19, 20], "understand": [1, 4], "how": [1, 4, 5, 14], "handl": [1, 2, 4, 5, 20], "organ": [1, 5, 23], "guidelin": 1, "especi": [1, 2], "applic": [1, 3, 5, 6], "ros2_control_demo": [1, 3, 23], "pleas": [1, 23], "keep": [1, 14], "mind": [1, 14], "work": [1, 4, 5, 12, 14, 15, 17, 19, 20, 21, 22, 23], "fork": 1, "when": [1, 2, 3, 4, 6, 8, 10, 14, 20], "submit": [1, 5], "That": [1, 14], "wai": [1, 14, 16], "main": [1, 3, 4, 5, 6, 8, 14, 23], "repo": [1, 3], "clean": [1, 4], "featur": [1, 5, 8, 23], "branch": 1, "all": [1, 2, 3, 4, 5, 8, 9, 11, 14, 19, 20], "check": [1, 2, 3, 4, 8, 9, 11, 14, 20, 23], "satisfi": 1, "befor": [1, 2, 6, 14], "thei": [1, 2, 3, 4, 5, 8, 10, 13, 14, 20], "can": [1, 2, 3, 4, 5, 7, 8, 9, 14, 16, 20, 23], "must": 1, "approv": 1, "two": [1, 3, 4, 6, 14, 16], "explicitli": 1, "onli": [1, 2, 3, 4, 5, 6, 9, 10, 14, 16, 19, 20], "except": 1, "other": [1, 2, 3, 5, 14, 19], "activ": [1, 2, 3, 10, 19], "where": [1, 4, 14, 19], "back": 1, "traceabl": 1, "discuss": [1, 5, 23], "suffici": [1, 16], "note": [1, 3, 11, 23], "still": [1, 2, 3], "encourag": 1, "help": [1, 6, 10, 14], "u": [1, 6], "increas": 1, "pace": 1, "veri": [1, 2, 4], "like": [1, 2, 3, 4, 5], "find": 1, "issu": [1, 4, 23], "nobodi": 1, "els": 1, "see": [1, 2, 3, 11, 14, 16, 18, 20], "squash": 1, "commit": 1, "messag": [1, 4, 6, 10, 16, 18, 19, 20, 23], "comment": 1, "fixup": 1, "linter": 1, "us": [1, 2, 3, 4, 5, 6, 8, 9, 10, 13, 15, 16, 17, 18, 19, 21, 22, 23], "pre": 1, "correct": [1, 2, 20], "header": [1, 9, 14], "address": [1, 4], "similar": [1, 3, 5], "mean": [1, 2, 8], "result": [1, 3, 19], "exactli": 1, "1": [1, 3, 4, 5, 8, 14], "cowboi": 1, "style": [1, 14], "over": [1, 4], "weekend": 1, "It": [1, 2, 3, 4, 6, 16, 19], "doesn": 1, "matter": 1, "trivial": [1, 8], "peopl": 1, "chanc": 1, "proper": [1, 20], "Be": 1, "awar": 1, "impact": 1, "time": [1, 2, 4, 5, 6, 8, 10, 12, 14, 16, 20, 23], "proport": 1, "its": [1, 2, 3, 4, 5, 6, 16, 18, 19], "ping": 1, "them": [1, 3, 4, 6, 14, 19], "necessari": [1, 9], "repeatedli": 1, "start": [1, 2, 5, 6, 9, 10, 11, 14, 20, 23], "part": [1, 4, 5, 14], "For": [1, 3, 4, 5, 6, 8, 9, 14, 20], "detail": [1, 2, 3, 8, 9, 14], "thoma": 1, "cokela": 1, "info": [1, 9], "tutori": 1, "sphinx": 1, "rest_syntax": 1, "html": 1, "id8": 1, "type": [1, 2, 3, 5, 6, 9, 10, 13, 14, 16, 18], "develop": [1, 5, 8, 11, 14], "stabl": [1, 4], "against": 1, "accept": [1, 14, 15, 17, 21, 22], "api": [1, 4], "abi": 1, "chang": [1, 2, 3, 5, 9, 10, 14, 20], "e": [1, 2, 3, 4, 5, 8, 14, 15, 16, 17, 19, 20, 21, 22, 23], "name": [1, 2, 3, 5, 6, 8, 10, 14, 16, 18, 19, 20], "convent": 1, "master": [1, 3, 4], "semi": 1, "binari": 1, "good": [1, 4], "same": [1, 3, 4, 16], "build": [1, 14], "dai": 1, "2": [1, 3, 5, 8], "ros_distro": 1, "g": [1, 2, 3, 4, 5, 8, 14, 15, 17, 19, 21, 22, 23], "foxi": [1, 3, 5], "galact": 1, "releas": [1, 3, 5, 6], "version": [1, 4], "non": [1, 5, 16], "brake": 1, "distribut": [1, 23], "three": [1, 2, 3, 9, 14], "stage": 1, "current": [1, 4, 9, 10, 20], "futur": [1, 5], "compat": [1, 2, 5], "framework": [1, 2, 4, 5, 6, 8, 9, 10, 11, 13, 14, 19, 23], "packag": [1, 2, 3, 6, 9, 11, 14, 16, 18, 20, 23], "show": [1, 3, 5, 6, 9, 10, 19], "direct": [1, 2, 4, 14], "local": [1, 19], "possibl": [1, 3, 4, 6, 14, 20], "core": 1, "immedi": 1, "depend": [1, 3, 9, 14, 20], "fail": 1, "expect": [1, 4, 20], "after": [1, 12, 14], "next": [1, 20], "sync": 1, "abl": 1, "potenti": [1, 14], "mid": 1, "robothw": 2, "rigid": 2, "ani": [2, 3, 5, 9, 14], "imposs": 2, "extend": [2, 3, 4, 14], "exist": [2, 3, 4, 6, 9, 14], "addit": [2, 4], "sensor": [2, 3, 4, 8, 9, 13], "actuat": [2, 3, 4, 8, 9], "tool": [2, 4, 5], "without": [2, 3, 8, 14], "combinedrobothardwar": 2, "drawback": [2, 23], "solut": [2, 5], "optim": [2, 6], "combin": [2, 8, 19, 20], "extern": [2, 3, 4, 8], "defin": [2, 3, 4, 8, 13, 14, 16, 18, 19, 20], "system": [2, 3, 4, 5, 9, 11, 20, 23], "composit": [2, 5], "basic": [2, 3, 4, 5, 14], "physic": [2, 3, 8, 9], "cell": [2, 16], "surround": 2, "describ": [2, 3], "multi": [2, 3, 4, 5, 11], "gripper": [2, 3, 8], "out": [2, 12], "box": 2, "allow": [2, 20], "joint": [2, 3, 5, 12, 13, 14, 15, 17, 19, 21, 22, 23], "posit": [2, 3, 5, 6, 10, 11, 13, 15, 17, 19, 20, 21, 22], "veloc": [2, 3, 5, 11, 13, 19, 20, 21, 22], "effort": [2, 13, 15, 17, 19, 20], "hard": [2, 4], "data": [2, 3, 4, 8, 19], "approach": 2, "doe": [2, 14, 20], "enforc": [2, 20], "string": [2, 8, 14, 19, 20], "ensur": [2, 5], "constant": 2, "hardware_interfac": [2, 3, 8, 9, 13, 14], "In": [2, 3, 4, 5, 14, 19], "had": 2, "request": [2, 19, 23], "itself": 2, "took": 2, "care": [2, 4, 14], "regist": 2, "resourc": 2, "conflict": [2, 3, 4], "resourcemanag": 2, "take": [2, 4, 14, 19], "state": [2, 3, 4, 5, 8, 9, 10, 11, 13, 14, 16, 19, 20], "avail": [2, 3, 5, 10, 11, 14, 19, 20], "enabl": [2, 3, 4, 5, 6, 9, 11, 16], "anymor": 2, "controllermanag": 2, "implement": [2, 3, 4, 5, 8, 11, 12, 13, 14, 20, 23], "systeminterfac": [2, 8], "granular": 2, "sensorinterfac": 2, "actuatorinterfac": 2, "abov": [2, 20], "choos": 2, "suitabl": [2, 5], "strategi": [2, 20], "decid": 2, "which": [2, 3, 4, 5, 10, 12, 14, 16, 18, 19, 20], "case": [2, 4, 5, 14, 19, 20, 23], "mayb": 2, "sens": [2, 3, 16], "multipl": [2, 3, 19, 20], "constructor": [2, 14], "initi": [2, 14], "variabl": [2, 4, 14], "need": [2, 3, 4, 5, 14], "commun": [2, 3, 4, 5], "default": [2, 3, 8, 19, 20], "configur": [2, 3, 4, 5, 6, 9, 10, 11, 14, 19, 20], "paramet": [2, 5, 14], "pars": [2, 7], "urdf": 2, "snippet": 2, "hardwareinfo": 2, "here": [2, 7, 14, 20], "cross": [2, 19], "valu": [2, 3, 4, 8, 14, 19, 20], "export_": 2, "_interfac": 2, "joint_a2": 2, "extract": [2, 12], "sensibl": 2, "stop": [2, 5, 6, 9, 10, 11, 12], "usual": [2, 8, 14], "includ": [2, 4, 9, 10, 14], "command": [2, 3, 4, 5, 7, 8, 11, 13, 14, 15, 17, 20, 21, 22, 23], "safe": [2, 12, 14, 20], "interrupt": [2, 6], "stream": [2, 5], "write": [2, 3, 4, 5, 13], "exchang": [2, 4], "equival": 2, "forget": 2, "pluginlib_export_class": [2, 14], "macro": [2, 3, 14], "end": [2, 3, 9, 14, 20], "cpp": [2, 14], "file": [2, 3, 4, 5, 6, 8, 14, 20], "creat": [2, 3, 5, 8, 14], "xml": [2, 9, 14], "librari": [2, 3, 4, 10, 14], "pluginlib": [2, 3, 14], "exampl": [2, 3, 4, 5, 8, 10, 11, 16, 19, 20, 23], "rrbotsystempositiononlyhardwar": [2, 3], "excel": 2, "jointtrajectorycontrol": [2, 10], "real": [2, 4, 5, 6, 8, 14, 19, 20, 23], "critic": [2, 4], "mark": 2, "controllerinterfac": [2, 3, 10, 14], "member": [2, 14], "init": [2, 14], "call": [2, 3, 14], "lifecycl": [2, 3, 5, 6, 9], "declar": [2, 14], "state_interface_configur": [2, 14], "command_interface_configur": [2, 14], "design": [2, 3, 4, 5, 23], "updat": [2, 3, 4, 14], "manag": [2, 4, 5, 7, 9, 10, 14, 23], "option": [2, 6, 8, 9, 10, 14, 16, 19, 20], "on_configur": [2, 14], "on_activ": [2, 9, 14], "on_deactiv": [2, 9, 14], "deactiv": [2, 3], "final": [2, 5, 9], "joint_trajectory_plugin": 2, "ros2": [3, 4, 5, 6, 10, 11, 14, 23], "instal": [3, 6, 14], "automat": [3, 12], "want": [3, 6], "workspac": [3, 14], "folder": [3, 5, 14], "wget": 3, "raw": 3, "githubusercont": 3, "com": [3, 4, 6], "vc": 3, "import": [3, 14, 20], "src": [3, 14], "found": [3, 7, 14, 20, 23], "github": [3, 4, 7, 13, 23], "repositori": [3, 4, 7, 13, 23], "figur": 3, "cm": 3, "connect": 3, "abstract": [3, 5, 9], "side": [3, 4, 5], "entri": [3, 14], "point": [3, 13, 14, 23], "through": [3, 4, 10, 12, 13, 14, 20, 23], "servic": [3, 4, 6, 9], "node": [3, 6, 8, 9, 10, 11, 14], "executor": 3, "so": [3, 14], "integr": [3, 4, 5, 8, 11, 20, 23], "custom": [3, 8, 16, 19], "setup": [3, 4, 14], "recommend": [3, 5], "ros2_control_nod": 3, "controller_manag": [3, 4, 6, 10, 14, 20], "manual": [3, 4, 14, 23], "assum": 3, "On": 3, "load": [3, 6, 10, 11, 14], "unload": [3, 6, 10], "access": [3, 4, 5, 6, 8, 14, 19], "match": 3, "provid": [3, 4, 5, 6, 8, 11, 13, 14, 19, 20, 23], "report": [3, 4, 19, 23], "error": [3, 4, 14, 19, 20], "execut": [3, 14, 20], "loop": [3, 5, 6, 14, 19, 20], "output": [3, 4, 5, 10, 16, 18, 20], "rm": 3, "driver": [3, 5], "re": 3, "usabl": 3, "flexibl": 3, "motor": [3, 4], "encod": 3, "deal": 3, "theori": [3, 23], "compar": [3, 4, 5], "refer": 3, "measur": [3, 8, 16, 19], "base": [3, 5, 9, 10, 12, 14], "calcul": 3, "input": [3, 4, 5, 12, 20], "visit": 3, "wikipedia": [3, 23], "object": 3, "deriv": 3, "controller_interfac": [3, 4, 10, 14, 16, 18], "export": [3, 14], "plugin": [3, 9, 14], "forwardcommandcontrol": 3, "lifecyclenod": 3, "class": [3, 5, 9, 10, 14], "machin": [3, 4], "document": [3, 4, 5, 8], "latest": 3, "interact": [3, 5, 6, 10], "list": [3, 5, 9, 10, 11, 13, 14, 20, 23], "definit": [3, 13, 14, 16], "srv": 3, "controller_manager_msg": 3, "while": [3, 4, 5, 11, 20], "directli": [3, 23], "line": [3, 7, 9, 14, 19], "via": 3, "friendli": 3, "cli": [3, 7, 10], "auto": 3, "complet": [3, 9, 13], "rang": 3, "common": [3, 4, 13, 19, 23], "capabl": [3, 4], "readm": 3, "md": 3, "ros2controlcli": 3, "realiz": [3, 5], "repres": [3, 9], "dynam": [3, 14], "There": [3, 6, 9, 14], "complex": [3, 4, 5], "dof": 3, "differ": [3, 4, 5, 15, 16, 17, 19, 21, 22], "between": [3, 4, 9, 19, 20], "transmiss": 3, "humanoid": 3, "hand": 3, "logic": 3, "channel": 3, "kuka": 3, "rsi": 3, "A": [3, 5, 14, 19, 20], "relat": [3, 4, 5], "link": [3, 5, 9], "forc": [3, 5, 10, 13], "torqu": [3, 13], "simpl": [3, 4, 5, 11, 14], "valv": 3, "mandatori": [3, 16, 18, 20], "dc": 3, "arduino": 3, "board": 3, "modular": [3, 5], "independ": 3, "explan": 3, "given": [3, 20], "tag": [3, 14, 23], "chosen": 3, "structur": [3, 4, 14, 20], "track": [3, 23], "togeth": 3, "xacro": 3, "hereund": 3, "rrbot": [3, 11], "parallel": [3, 8], "effector": 3, "rrbotsystempositiononli": 3, "ros2_control_demo_hardwar": [3, 11], "param": [3, 6, 8], "example_param_write_for_sec": 3, "example_param_read_for_sec": 3, "joint1": [3, 8, 10, 11, 20], "command_interfac": [3, 20], "min": 3, "max": 3, "state_interfac": [3, 20], "joint2": [3, 10, 11, 20], "rrbotforcetorquesensor1d": 3, "forcetorquesensor1dhardwar": 3, "0": [3, 8, 19, 20], "43": 3, "tcp_fts_sensor": 3, "frame_id": [3, 16, 18], "rrbot_tcp": 3, "min_forc": 3, "100": 3, "max_forc": 3, "rrbotgripp": 3, "positionactuatorhardwar": 3, "23": 3, "3": [3, 4], "gripper_joint": 3, "50": [3, 6, 20], "yaml": [3, 4, 20], "instead": [3, 8, 20], "pure": [3, 20], "launch": [3, 6, 8, 11], "stack": [3, 5], "could": [3, 5, 14, 19, 20], "altern": [3, 20], "script": [3, 4, 14], "skeleton": 3, "orbit": 4, "around": [4, 16, 18], "everyth": [4, 14], "goal": [4, 5, 20, 23], "long": 4, "run": [4, 5, 6, 10], "task": [4, 5, 12], "interfac": [4, 5, 6, 7, 8, 9, 11, 13, 14, 16, 18, 23], "user": 4, "thread": [4, 6], "protect": [4, 14], "memori": [4, 14], "buffer": [4, 23], "control_toolbox": [4, 23], "second": [4, 10, 14, 23], "frequenc": 4, "high": 4, "rate": [4, 20], "khz": 4, "variou": 4, "anoth": 4, "heartbeat": 4, "signal": 4, "sent": 4, "onc": [4, 5], "per": [4, 16], "500": 4, "hz": 4, "failur": [4, 9], "relev": [4, 23], "draft": 4, "trigger": 4, "skill": 4, "prefer": 4, "c": [4, 6, 10, 14], "trick": 4, "mentor": 4, "benc": [4, 5], "magyar": [4, 5], "deni": [4, 5], "\u0161togl": [4, 5], "size": 4, "350": 4, "hour": 4, "difficulti": 4, "about": [4, 8, 19, 23], "org": [4, 6], "gener": [4, 5, 14, 20, 23], "envis": 4, "simul": [4, 8, 11], "gazebo": 4, "ignit": 4, "showcas": [4, 5], "grace": 4, "degrad": 4, "architectur": [4, 5], "roadmap": [4, 23], "place": [4, 14, 20], "gpio": 4, "mode": [4, 20], "switch": [4, 10], "movement": 4, "safeti": 4, "familiar": [4, 23], "medium": 4, "focus": [4, 5], "although": [4, 9], "easi": 4, "therefor": [4, 6, 14, 19, 20], "often": [4, 8, 14, 19], "orchestr": 4, "purpos": 4, "conductor": 4, "scenario": 4, "appropri": 4, "moment": 4, "right": 4, "replac": [4, 9], "level": [4, 5, 15, 17, 20, 21, 22], "moveit2": [4, 5], "simplecontrollermanag": 4, "form": 4, "behavior": [4, 8], "benchmark": 4, "statu": [4, 9, 10, 20], "publish": [4, 12, 16, 18, 19, 20, 23], "topic": [4, 5, 20], "format": [4, 19], "preset": 4, "modul": 4, "specif": [4, 9, 19, 20], "reli": 4, "doubl": [4, 8, 20], "desir": [4, 20], "howev": [4, 6], "both": [4, 5, 19], "improv": 4, "readabl": 4, "earlier": 4, "concept": [4, 5, 8, 11], "were": 4, "introduc": [4, 5], "essenti": 4, "group": [4, 20, 23], "instanc": [4, 19], "imu": [4, 13], "typic": [4, 19, 20], "9": 4, "axi": [4, 16], "aceleromet": 4, "gyroscop": 4, "compass": 4, "respect": [4, 5], "Such": 4, "struct": 4, "low": [4, 5], "profil": 4, "intern": [4, 20], "addition": [4, 23], "few": [4, 5], "pull": 4, "45": 4, "tree": 4, "semantic_compon": 4, "175": 4, "rewrit": [4, 23], "ros_control": [4, 5, 23], "rich": 4, "wa": [4, 14], "motiv": 4, "adopt": 4, "port": [4, 9], "most": [4, 14], "quit": 4, "miss": [4, 19], "diff_drive_control": [4, 10], "joint_trajectory_control": [4, 10], "consist": [4, 20, 23], "identifi": 4, "much": [4, 14], "303": 4, "304": 4, "stretch": 4, "realtime_tool": [4, 23], "81": 4, "302": 4, "unit": 4, "gmock": 4, "cc": 5, "BY": 5, "licens": 5, "author": 5, "either": 5, "down": 5, "below": 5, "my": 5, "company_nam": 5, "tricycl": 5, "control": [5, 7, 8, 9, 10, 11, 12, 15, 16, 17, 18, 19, 21, 22, 23], "event": 5, "pixel": 5, "prefac": 5, "introduct": [5, 20], "johann": 5, "plapp": 5, "toni": 5, "najjar": 5, "kernel": [5, 6], "hardwar": [5, 6, 7, 8, 11, 13, 14, 23], "agnost": 5, "share": [5, 14], "well": [5, 6, 10, 20], "perform": [5, 6], "heavi": 5, "dr": 5, "stogl": 5, "consult": 5, "practition": 5, "guid": [5, 14], "top": 5, "virtual": 5, "talk": 5, "delv": 5, "deeper": 5, "what": 5, "explicit": [5, 20], "chain": 5, "emerg": 5, "handler": 5, "mock": 5, "usag": [5, 6, 10], "openli": 5, "record": 5, "fiveai": 5, "ltd": 5, "best": [5, 6, 14], "focu": 5, "becom": 5, "util": 5, "3rd": 5, "parti": 5, "nav2": 5, "practic": 5, "tip": 5, "hot": 5, "shown": 5, "furthermor": 5, "get": [5, 9, 23], "reus": 5, "inject": 5, "offer": [5, 6], "expos": 5, "problem": [5, 23], "manipul": [5, 20], "path": 5, "plan": [5, 23], "autonom": 5, "navig": 5, "ideal": [5, 8], "made": [5, 9], "mobil": [5, 12], "arm": 5, "extra": [5, 19], "readi": [5, 14], "power": 5, "studi": 5, "ur": 5, "With": 5, "moveit": [5, 8], "ingredi": 5, "scale": 5, "factor": 5, "teach": 5, "pendant": 5, "influenc": 5, "picknik": 5, "inc": 5, "nathan": 5, "brook": 5, "lovro": 5, "ivanov": 5, "andi": 5, "zelenak": 5, "rune": 5, "s\u00f8e": 5, "knudsen": 5, "onlin": [5, 14], "trajectori": [5, 13, 23], "admitt": 5, "One": 5, "reason": 5, "upgrad": 5, "ros1": 5, "better": 5, "realtim": [5, 12, 20, 23], "contact": 5, "insert": 5, "singl": 5, "waypoint": [5, 13, 20], "mani": [5, 14], "teleoper": 5, "involv": 5, "kinemat": 5, "acceler": [5, 11, 12, 13, 20], "jerk": [5, 12], "obei": 5, "demo": 5, "booth": 5, "zeleank": 5, "unifi": 5, "life": 5, "cycl": 5, "go": [5, 14], "_control": 5, "wild": 5, "materi": 5, "quick": [5, 9], "overview": 5, "layer": 5, "aka": 5, "systemcompon": 5, "forward": [5, 8, 13, 20, 23], "done": [5, 14], "look": 5, "modifi": 5, "simpli": [5, 20], "net": 5, "edit": 5, "collect": [5, 15, 17, 21, 22], "semant": [5, 16, 18], "world": [6, 8], "littl": 6, "jitter": 6, "normal": 6, "linux": 6, "comput": [6, 12], "throughput": 6, "suit": 6, "attempt": [6, 20], "sched_fifo": 6, "prioriti": 6, "rt": 6, "permiss": 6, "syscal": 6, "easiest": [6, 14], "ubuntu": 6, "22": 6, "04": 6, "lt": 6, "beta": 6, "blog": 6, "imag": 6, "amd64": 6, "debian": 6, "bullsey": 6, "startup": 6, "h": [6, 10, 14], "p": 6, "param_fil": 6, "controller_typ": 6, "timeout": [6, 10], "controller_manager_timeout": 6, "controller_nam": [6, 10, 14], "argument": [6, 10], "exit": [6, 10], "leav": 6, "unconfigur": [6, 9], "namespac": [6, 13, 14, 19, 20], "kill": [6, 10], "wait": [6, 10], "until": 6, "doxygen": 7, "fake": 7, "mirror": 8, "correspond": [8, 14, 23], "offlin": 8, "advantag": 8, "pipe": 8, "insid": 8, "broadcast": [8, 19], "even": 8, "debug": 8, "boost": 8, "mimic": 8, "offset": [8, 19, 20], "fake_sensor_command": 8, "boolean": [8, 19, 20], "fals": [8, 19, 20], "position_state_following_offset": 8, "custom_interface_with_following_offset": 8, "map": [8, 19, 20], "multipli": 8, "mimick": 8, "return_typ": [9, 14], "return": [9, 14, 19], "on_error": 9, "previous_st": 9, "success": [9, 14], "callbackreturn": 9, "again": [9, 11], "recov": 9, "reload": [9, 10], "substanti": 9, "renam": 9, "on_init": 9, "baseinterfac": 9, "remov": 9, "base_interfac": 9, "hpp": [9, 14], "hardware_interface_status_valu": 9, "rclcpp_lifecycl": [9, 14], "mai": [9, 15, 17, 21, 22], "strictli": 9, "last": [9, 14, 20], "status_": 9, "const": 9, "in_deactiv": 9, "undefin": 9, "refern": 9, "symbol": 9, "node_interfac": 9, "lifecyclenodeinterfac": 9, "rclcpp_lifecyl": 9, "cmakelist": [9, 14], "txt": [9, 14], "spin": 10, "spin_tim": 10, "hidden": 10, "discoveri": 10, "appli": 10, "alreadi": [10, 14, 20], "daemon": 10, "test_controller_nam": 10, "test_control": 10, "diffdrivecontrol": 10, "joint_state_control": 10, "jointstatecontrol": 10, "unclaim": [10, 11], "set_stat": 10, "adjust": 10, "strict": 10, "asap": 10, "switch_timeout": 10, "templat": [11, 14, 20], "demonstr": 11, "prove": 11, "comprehens": 11, "ros2_control_demo_bringup": 11, "gui": 11, "ros2_control_test_nod": 11, "rrbot_system_multi_interfac": 11, "py": 11, "list_hardware_interfac": 11, "load_control": 11, "forward_position_control": 11, "forward_velocity_control": 11, "forward_acceleration_control": 11, "forward_illegal1_control": 11, "forward_illegal2_control": 11, "joint_state_broadcast": 11, "set_controller_st": 11, "claim": 11, "now": [11, 14], "let": 11, "switch_control": 11, "inde": 11, "been": 11, "differenti": [12, 13, 23], "drive": [12, 13, 23], "bodi": 12, "translat": 12, "wheel": 12, "odometri": 12, "feedback": [12, 19, 20], "twist": 12, "x": [12, 16, 18], "linear": [12, 20], "z": [12, 16], "angular": 12, "ignor": [12, 20], "space": [12, 20], "sort": [13, 14], "accord": [13, 20], "position_control": [13, 20], "hw_if_posit": 13, "velocity_control": 13, "hw_if_veloc": 13, "effort_control": 13, "hw_if_acceler": 13, "hw_if_effort": 13, "interpol": [13, 20], "step": [14, 20, 23], "compil": 14, "rule": 14, "prepar": 14, "ament_cmak": 14, "search": 14, "recent": 14, "process": 14, "pkg": 14, "flag": [14, 20], "least": [14, 20], "package_nam": 14, "visibility_control": 14, "window": 14, "copi": 14, "prefix": [14, 16, 18], "guard": 14, "ifndef": 14, "preprocessor": 14, "engin": 14, "friend": 14, "uniqu": 14, "written": 14, "snake_cas": 14, "controllernam": 14, "public": 14, "overrid": 14, "exact": 14, "vector": 14, "store": 14, "simplifi": [14, 23], "further": 14, "parent": 14, "reserv": 14, "importantli": 14, "fine": 14, "ok": 14, "otherwis": [14, 19], "individu": 14, "none": [14, 19], "ask": [14, 19], "full": 14, "joint_nam": [14, 20], "interface_typ": 14, "assign": 14, "opposit": 14, "empti": 14, "constraint": [14, 20], "At": 14, "close": 14, "class_list_macro": 14, "controller_name_namespac": 14, "visibl": 14, "controller_name_packag": 14, "bottom": 14, "test_load_": 14, "content": 14, "specifi": [14, 20], "find_packag": 14, "rclcpp": 14, "directori": 14, "ament": 14, "cmake": 14, "pluginlib_export_plugin_description_fil": 14, "ament_cmake_gmock": 14, "ros2_control_test_asset": 14, "ament_add_gmock": 14, "ament_export_librari": 14, "ament_packag": 14, "test_depend": 14, "colcon": 14, "rememb": 14, "root": 14, "bash": 14, "enjoi": 14, "great": 14, "shell": 14, "certain": [15, 17, 21, 22], "achiev": [15, 17, 21, 22], "These": [15, 17, 21, 22], "geometry_msg": 16, "msg": [16, 18, 20], "wrenchstamp": 16, "wrapper": [16, 18], "forcetorquesensor": 16, "sensor_nam": [16, 18], "interface_nam": 16, "frame": [16, 18], "6d": 16, "ft": 16, "y": 16, "less": 16, "six": 16, "ax": 16, "example_nam": 16, "example_interfac": 16, "sensor_msg": 18, "imusensor": 18, "orient": 18, "angular_veloc": 18, "linear_acceler": 18, "joint_stat": 19, "dynamic_joint_st": 19, "By": [19, 20], "unless": 19, "latter": 19, "matrix": 19, "product": 19, "print": 19, "warn": 19, "use_local_top": 19, "my_state_broadcast": 19, "arrai": 19, "extra_joint": 19, "map_interface_to_joint_st": 19, "field": 19, "usecas": 19, "hydraul": [19, 20], "relianc": 19, "would": 19, "visual": 19, "robot_state_publish": 19, "rviz": 19, "techniqu": 19, "slightli": 19, "custom_interfac": 19, "kf_estimated_posit": 19, "derived_veloc": 19, "derived_effort": 19, "torque_sensor": 19, "current_sensor": 19, "reach": 20, "instant": 20, "mechan": 20, "spline": 20, "guarante": 20, "continu": 20, "discourag": 20, "becaus": 20, "yield": 20, "discontinu": 20, "cubic": 20, "quintic": 20, "pid": [20, 23], "similarli": 20, "eg": 20, "proxi": 20, "wrap": 20, "robust": 20, "clock": 20, "caus": 20, "queu": 20, "segment": 20, "ros__paramet": 20, "joint3": 20, "joint4": 20, "joint5": 20, "joint6": 20, "state_publish_r": 20, "action_monitor_r": 20, "20": 20, "allow_partial_joints_go": 20, "open_loop_control": 20, "true": 20, "stopped_velocity_toler": 20, "01": 20, "goal_tim": 20, "05": [20, 23], "03": 20, "monitor": 20, "action": 20, "control_msg": [20, 23], "followjointtrajectori": 20, "tri": 20, "numer": 20, "nan": 20, "std": 20, "numeric_limit": 20, "quiet_nan": 20, "toler": 20, "jointtrajectori": 20, "deviat": 20, "maxim": 20, "predefin": 20, "joint_trajectori": 20, "trajectory_msg": 20, "jointtrajectorycontrollerst": 20, "follow_joint_trajectori": 20, "server": 20, "position_velocity_control": 20, "position_velocity_acceleration_control": 20, "Not": 20, "yet": 20, "feedforward": 20, "term": [20, 23], "plu": 20, "171": 20, "Its": 23, "oper": 23, "overcom": 23, "idea": 23, "wide": 23, "toolkit": 23, "unreleas": 23, "smooth": 23, "doc": 23, "wg": 23, "meet": 23, "everi": 23, "wednesdai": 23, "join": 23, "announc": 23, "discours": 23, "googl": 23, "propos": 23, "previou": 23, "bug": 23, "tracker": 23, "minim": 23, "reproduc": 23, "regard": 23, "etc": 23, "question": 23, "answer": 23, "2023": 23, "12": 23, "30": 23, "31": 23, "built": 23, "gmt": 23}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"acknowledg": 0, "pull": 1, "request": 1, "rule": 1, "repositori": [1, 11], "process": 1, "merg": 1, "write": [1, 9, 14], "document": [1, 7, 23], "structur": [1, 2], "ci": 1, "configur": 1, "differ": 2, "ros_control": 2, "ros1": [2, 4], "hardwar": [2, 3, 4, 9, 12, 15, 17, 19, 20, 21, 22], "class": 2, "interfac": [2, 3, 10, 12, 15, 17, 19, 20, 21, 22], "control": [2, 3, 4, 6, 13, 14, 20], "": [2, 20], "access": 2, "migrat": [2, 9], "guid": 2, "ros2_control": [2, 4, 13, 23], "robothardwar": 2, "compon": [2, 3, 4, 8, 9], "get": 3, "start": 3, "compil": 3, "architectur": 3, "manag": [3, 6], "resourc": [3, 5], "user": 3, "descript": 3, "urdf": 3, "run": 3, "framework": 3, "your": 3, "robot": [3, 5], "project": 4, "idea": 4, "gsoc": 4, "2022": [4, 5], "asynchron": 4, "tutori": 4, "demo": [4, 11], "mission": 4, "add": 4, "support": 4, "semant": 4, "featur": [4, 7, 12, 20], "pariti": 4, "from": [4, 9], "present": 5, "2023": 5, "02": 5, "ro": 5, "meetup": 5, "munich": 5, "5": 5, "12": 5, "industri": 5, "confer": 5, "10": 5, "roscon": 5, "06": 5, "fr": 5, "2021": 5, "world": 5, "07": 5, "weekli": 5, "13": 5, "rosdevdai": 5, "05": 5, "diagram": 5, "imag": 5, "determin": 6, "helper": 6, "script": 6, "spawner": 6, "unspawn": 6, "api": 7, "core": 7, "function": 7, "concept": 7, "fake": 8, "gener": 8, "system": 8, "paramet": [8, 16, 18, 19, 20], "per": 8, "joint": [8, 20], "handl": 9, "error": 9, "happen": 9, "dure": 9, "read": 9, "call": 9, "foxi": 9, "galact": [9, 23], "command": [10, 12, 19], "line": 10, "list_control": 10, "list_controller_typ": 10, "list_hardware_interfac": 10, "load_control": 10, "reload_controller_librari": 10, "set_controller_st": 10, "switch_control": 10, "unload_control": 10, "organ": 11, "mode": 11, "switch": 11, "diff_drive_control": 12, "veloc": 12, "type": [12, 15, 17, 19, 20, 21, 22], "other": [12, 20], "nomenclatur": 13, "guidelin": 13, "best": 13, "practic": 13, "avail": 13, "broadcast": [13, 16, 18], "new": 14, "us": [14, 20], "extern": 14, "refer": 14, "effort_control": 15, "forc": 16, "torqu": 16, "sensor": [16, 18], "forward_command_control": 17, "imu": 18, "joint_state_broadcast": 19, "joint_trajectory_control": 20, "trajectori": 20, "represent": 20, "detail": 20, "about": 20, "ros2": 20, "special": 20, "version": 20, "jointtrajectorycontrol": 20, "tbd": 20, "position_control": 21, "velocity_control": 22, "welcom": 23, "overview": 23, "develop": 23, "organis": 23, "commun": 23}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx": 60}, "alltitles": {"Acknowledgements": [[0, "acknowledgements"]], "Pull Requests": [[1, "pull-requests"]], "Rules for the repositories and process of merging pull requests": [[1, "rules-for-the-repositories-and-process-of-merging-pull-requests"]], "Writing documentation": [[1, "writing-documentation"]], "Repository structure and CI configuration": [[1, "repository-structure-and-ci-configuration"]], "CI configuration": [[1, "ci-configuration"]], "Differences to ros_control (ROS1)": [[2, "differences-to-ros-control-ros1"]], "Hardware Structures - classes": [[2, "hardware-structures-classes"]], "Hardware Interfaces": [[2, "hardware-interfaces"]], "Controller\u2019s Access to Hardware": [[2, "controller-s-access-to-hardware"]], "Migration Guide to ros2_control": [[2, "migration-guide-to-ros2-control"]], "RobotHardware to Components": [[2, "robothardware-to-components"]], "Controller Migration": [[2, "controller-migration"]], "Getting Started": [[3, "getting-started"]], "Compiling": [[3, "compiling"]], "Architecture": [[3, "architecture"]], "Controller Manager": [[3, "controller-manager"], [6, "controller-manager"]], "Resource Manager": [[3, "resource-manager"]], "Controllers": [[3, "controllers"], [13, "id1"]], "User Interfaces": [[3, "user-interfaces"]], "Hardware Components": [[3, "hardware-components"], [9, "hardware-components"]], "Hardware Description in URDF": [[3, "hardware-description-in-urdf"]], "Running the Framework for Your Robot": [[3, "running-the-framework-for-your-robot"]], "Project Ideas for GSoC 2022": [[4, "project-ideas-for-gsoc-2022"]], "Asynchronous Control Components": [[4, "asynchronous-control-components"]], "Tutorials and Demos for ros2_control": [[4, "tutorials-and-demos-for-ros2-control"]], "Mission-Control for ros2_control": [[4, "mission-control-for-ros2-control"]], "Add support for hardware semantic components": [[4, "add-support-for-hardware-semantic-components"]], "Feature-parity for controllers from ROS1": [[4, "feature-parity-for-controllers-from-ros1"]], "Resources": [[5, "resources"]], "Presentations": [[5, "presentations"]], "2023-02 ROS Meetup Munich #5": [[5, "ros-meetup-munich-5"]], "2022-12 ROS-Industrial Conference 2022": [[5, "ros-industrial-conference-2022"]], "2022-10 ROSCon 2022": [[5, "roscon-2022"]], "2022-06 ROSCon Fr 2022": [[5, "roscon-fr-2022"]], "2021-10 ROS World 2021": [[5, "ros-world-2021"]], "2021-10-07 Weekly Robotics Meetup #13": [[5, "weekly-robotics-meetup-13"]], "2021-06 ROSDevDay 2021": [[5, "rosdevday-2021"]], "2021-05 ROSCon Fr 2021": [[5, "roscon-fr-2021"]], "Diagrams": [[5, "diagrams"]], "Images": [[5, "images"]], "Determinism": [[6, "determinism"]], "Helper scripts": [[6, "helper-scripts"]], "spawner": [[6, "spawner"]], "unspawner": [[6, "unspawner"]], "API Documentation": [[7, "api-documentation"]], "Core functionalities": [[7, "core-functionalities"]], "Features": [[7, "features"]], "Concepts": [[7, "concepts"]], "Fake Components": [[8, "fake-components"]], "Generic System": [[8, "generic-system"]], "Parameters": [[8, "parameters"], [16, "parameters"], [18, "parameters"], [19, "parameters"]], "Per-joint Parameters": [[8, "per-joint-parameters"]], "Handling of errors that happen during read() and write() calls": [[9, "handling-of-errors-that-happen-during-read-and-write-calls"]], "Migration from Foxy to Galactic": [[9, "migration-from-foxy-to-galactic"]], "Command Line Interface": [[10, "command-line-interface"]], "list_controllers": [[10, "list-controllers"]], "list_controller_types": [[10, "list-controller-types"]], "list_hardware_interfaces": [[10, "list-hardware-interfaces"]], "load_controller": [[10, "load-controller"]], "reload_controller_libraries": [[10, "reload-controller-libraries"]], "set_controller_state": [[10, "set-controller-state"]], "switch_controllers": [[10, "switch-controllers"]], "unload_controller": [[10, "unload-controller"]], "Demos": [[11, "demos"]], "Repository organization": [[11, "repository-organization"]], "Mode switching demo": [[11, "mode-switching-demo"]], "diff_drive_controller": [[12, "diff-drive-controller"]], "Velocity commands": [[12, "velocity-commands"]], "Hardware interface type": [[12, "hardware-interface-type"], [15, "hardware-interface-type"], [17, "hardware-interface-type"], [19, "hardware-interface-type"], [20, "hardware-interface-type"], [21, "hardware-interface-type"], [22, "hardware-interface-type"]], "Other features": [[12, "other-features"], [20, "other-features"]], "ros2_controllers": [[13, "ros2-controllers"]], "Nomenclature": [[13, "nomenclature"]], "Guidelines and Best Practices": [[13, "guidelines-and-best-practices"]], "Available Controllers": [[13, "available-controllers"]], "Available Broadcasters": [[13, "available-broadcasters"]], "Writing a new controller": [[14, "writing-a-new-controller"]], "Useful External References": [[14, "useful-external-references"]], "effort_controllers": [[15, "effort-controllers"]], "Force Torque Sensor Broadcaster": [[16, "force-torque-sensor-broadcaster"]], "forward_command_controller": [[17, "forward-command-controller"]], "IMU Sensor Broadcaster": [[18, "imu-sensor-broadcaster"]], "joint_state_broadcaster": [[19, "joint-state-broadcaster"]], "Commands": [[19, "commands"]], "joint_trajectory_controller": [[20, "joint-trajectory-controller"]], "Trajectory representation": [[20, "trajectory-representation"]], "Using Joint Trajectory Controller(s)": [[20, "using-joint-trajectory-controller-s"]], "Details about parameters": [[20, "details-about-parameters"]], "ROS2 interface of the controller": [[20, "ros2-interface-of-the-controller"]], "Specialized versions of JointTrajectoryController (TBD in \u2026)": [[20, "specialized-versions-of-jointtrajectorycontroller-tbd-in"]], "position_controllers": [[21, "position-controllers"]], "velocity_controllers": [[22, "velocity-controllers"]], "Welcome to the ros2_control documentation - Galactic!": [[23, "welcome-to-the-ros2-control-documentation-galactic"]], "Overview": [[23, "overview"]], "Development Organisation and Communication": [[23, "development-organisation-and-communication"]]}, "indexentries": {}}) \ No newline at end of file +Search.setIndex({"docnames": ["doc/acknowledgements/acknowledgements", "doc/contributing/contributing", "doc/differences_to_ros1/differences_to_ros1", "doc/getting_started/getting_started", "doc/project_ideas", "doc/resources/resources", "doc/ros2_control/controller_manager/doc/userdoc", "doc/ros2_control/doc/index", "doc/ros2_control/hardware_interface/doc/fake_components_userdoc", "doc/ros2_control/hardware_interface/doc/hardware_components_userdoc", "doc/ros2_control/ros2controlcli/doc/userdoc", "doc/ros2_control_demos/doc/index", "doc/ros2_controllers/diff_drive_controller/doc/userdoc", "doc/ros2_controllers/doc/controllers_index", "doc/ros2_controllers/doc/writing_new_controller", "doc/ros2_controllers/effort_controllers/doc/userdoc", "doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/forward_command_controller/doc/userdoc", "doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/joint_state_broadcaster/doc/userdoc", "doc/ros2_controllers/joint_trajectory_controller/doc/userdoc", "doc/ros2_controllers/position_controllers/doc/userdoc", "doc/ros2_controllers/velocity_controllers/doc/userdoc", "index"], "filenames": ["doc/acknowledgements/acknowledgements.rst", "doc/contributing/contributing.rst", "doc/differences_to_ros1/differences_to_ros1.rst", "doc/getting_started/getting_started.rst", "doc/project_ideas.rst", "doc/resources/resources.rst", "doc/ros2_control/controller_manager/doc/userdoc.rst", "doc/ros2_control/doc/index.rst", "doc/ros2_control/hardware_interface/doc/fake_components_userdoc.rst", "doc/ros2_control/hardware_interface/doc/hardware_components_userdoc.rst", "doc/ros2_control/ros2controlcli/doc/userdoc.rst", "doc/ros2_control_demos/doc/index.rst", "doc/ros2_controllers/diff_drive_controller/doc/userdoc.rst", "doc/ros2_controllers/doc/controllers_index.rst", "doc/ros2_controllers/doc/writing_new_controller.rst", "doc/ros2_controllers/effort_controllers/doc/userdoc.rst", "doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/forward_command_controller/doc/userdoc.rst", "doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/joint_state_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/joint_trajectory_controller/doc/userdoc.rst", "doc/ros2_controllers/position_controllers/doc/userdoc.rst", "doc/ros2_controllers/velocity_controllers/doc/userdoc.rst", "index.rst"], "titles": ["Acknowledgements", "Pull Requests", "Differences to ros_control (ROS1)", "Getting Started", "Project Ideas for GSoC 2022", "Resources", "Controller Manager", "API Documentation", "Fake Components", "Hardware Components", "Command Line Interface", "Demos", "diff_drive_controller", "ros2_controllers", "Writing a new controller", "effort_controllers", "Force Torque Sensor Broadcaster", "forward_command_controller", "IMU Sensor Broadcaster", "joint_state_broadcaster", "joint_trajectory_controller", "position_controllers", "velocity_controllers", "Welcome to the ros2_control documentation - Galactic!"], "terms": {"The": [0, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, 18, 19, 20, 23], "project": [0, 1, 23], "ha": [0, 1, 3, 4, 5, 14, 19], "receiv": [0, 2], "major": 0, "contribut": [0, 1, 5], "from": [0, 1, 2, 3, 5, 6, 8, 10, 12, 14, 16, 18, 20, 23], "follow": [0, 1, 2, 3, 4, 8, 9, 10, 11, 13, 14, 20, 23], "compani": [0, 5], "institut": 0, "support": [0, 2, 3, 5, 8, 10, 14, 19, 20, 23], "rosin": 0, "ro": [0, 1, 3, 4, 6, 8, 10, 23], "industri": [0, 3, 4], "qualiti": [0, 1], "assur": 0, "robot": [0, 2, 4, 11, 12, 16, 19, 23], "softwar": [0, 3], "compon": [0, 5, 6, 7, 12, 16, 18, 23], "more": [0, 1, 2, 3, 4, 8, 14], "inform": [0, 8, 14, 23], "http": [0, 1, 3, 4, 6], "eu": 0, "thi": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 14, 15, 16, 17, 20, 21, 22, 23], "fund": 0, "european": 0, "union": 0, "": [0, 1, 3, 4, 5, 11, 14, 23], "horizon": 0, "2020": 0, "research": [0, 5], "innov": 0, "programm": 0, "under": [0, 5, 14, 23], "grant": 0, "agreement": 0, "732287": 0, "first": [1, 2, 9, 14], "thank": 1, "you": [1, 2, 3, 5, 6, 8, 9, 14, 23], "consid": [1, 10], "ros2_control": [1, 3, 5, 6, 8, 9, 11, 14], "As": [1, 14], "an": [1, 2, 3, 4, 5, 8, 10, 14, 19, 20], "open": [1, 19, 20], "sourc": [1, 3, 5, 14], "we": [1, 4, 5, 9, 19], "welcom": 1, "each": [1, 3, 4, 9, 19], "contributor": 1, "regardless": 1, "background": 1, "experi": 1, "To": [1, 2, 3, 6, 19, 23], "reduc": [1, 8], "entropi": 1, "univers": [1, 4, 5], "our": [1, 3, 4, 5], "vivid": 1, "collabor": 1, "environ": [1, 3, 5], "have": [1, 2, 3, 4, 6, 8, 9, 11, 14, 19, 20], "set": [1, 2, 4, 5, 6, 8, 9, 10, 11, 15, 17, 19, 20, 21, 22], "up": [1, 5, 11], "some": [1, 4, 5, 19, 20, 23], "standard": [1, 2, 3, 4, 5, 10, 13, 16, 19], "method": [1, 2, 3, 9, 14], "requir": [1, 2, 3, 4, 14], "ar": [1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 16, 18, 19, 20, 23], "limit": [1, 4, 5, 12], "scope": 1, "your": [1, 2, 5, 8, 14, 23], "pr": 1, "should": [1, 2, 4, 5, 6, 9, 10, 11, 14, 19], "do": [1, 2, 3, 4, 5, 6, 14, 20], "one": [1, 2, 3, 4, 5, 14, 16, 19, 23], "thing": 1, "avoid": [1, 14], "ad": [1, 4, 8, 14, 19], "random": 1, "fix": [1, 2], "put": [1, 14], "those": [1, 2, 3, 4, 8, 14, 16, 19, 20], "separ": [1, 2, 3, 19], "give": [1, 3, 5, 23], "descript": [1, 2, 5, 9, 14], "titl": 1, "add": [1, 2, 9, 14], "short": [1, 14, 23], "summari": [1, 5, 23], "make": [1, 2, 4, 5, 6, 23], "sure": [1, 4, 23], "pipelin": 1, "i": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], "green": 1, "don": 1, "t": [1, 6], "afraid": 1, "review": [1, 4, 23], "maintain": [1, 3, 4], "new": [1, 5, 13, 20, 23], "code": [1, 2, 4, 5, 14], "test": [1, 4, 8, 11, 14], "If": [1, 2, 3, 6, 9, 14, 16, 19, 20, 23], "function": [1, 2, 3, 4, 5, 6], "alwai": 1, "exercis": 1, "serv": [1, 3, 4], "live": [1, 5], "origin": [1, 5], "intent": [1, 8], "section": [1, 2, 14], "target": [1, 13, 14, 20], "also": [1, 2, 3, 4, 5, 14], "read": [1, 2, 3, 14, 19, 20], "understand": [1, 4], "how": [1, 4, 5, 14], "handl": [1, 2, 4, 5, 20], "organ": [1, 5, 23], "guidelin": 1, "especi": [1, 2], "applic": [1, 3, 5, 6], "ros2_control_demo": [1, 3, 23], "pleas": [1, 23], "keep": [1, 14], "mind": [1, 14], "work": [1, 4, 5, 12, 14, 15, 17, 19, 20, 21, 22, 23], "fork": 1, "when": [1, 2, 3, 4, 6, 8, 10, 14, 20], "submit": [1, 5], "That": [1, 14], "wai": [1, 14, 16], "main": [1, 3, 4, 5, 6, 8, 14, 23], "repo": [1, 3], "clean": [1, 4], "featur": [1, 5, 8, 23], "branch": 1, "all": [1, 2, 3, 4, 5, 8, 9, 11, 14, 19, 20], "check": [1, 2, 3, 4, 8, 9, 11, 14, 20, 23], "satisfi": 1, "befor": [1, 2, 6, 14], "thei": [1, 2, 3, 4, 5, 8, 10, 13, 14, 20], "can": [1, 2, 3, 4, 5, 7, 8, 9, 14, 16, 20, 23], "must": 1, "approv": 1, "two": [1, 3, 4, 6, 14, 16], "explicitli": 1, "onli": [1, 2, 3, 4, 5, 6, 9, 10, 14, 16, 19, 20], "except": 1, "other": [1, 2, 3, 5, 14, 19], "activ": [1, 2, 3, 10, 19], "where": [1, 4, 14, 19], "back": 1, "traceabl": 1, "discuss": [1, 5, 23], "suffici": [1, 16], "note": [1, 3, 11, 23], "still": [1, 2, 3], "encourag": 1, "help": [1, 6, 10, 14], "u": [1, 6], "increas": 1, "pace": 1, "veri": [1, 2, 4], "like": [1, 2, 3, 4, 5], "find": 1, "issu": [1, 4, 23], "nobodi": 1, "els": 1, "see": [1, 2, 3, 11, 14, 16, 18, 20], "squash": 1, "commit": 1, "messag": [1, 4, 6, 10, 16, 18, 19, 20, 23], "comment": 1, "fixup": 1, "linter": 1, "us": [1, 2, 3, 4, 5, 6, 8, 9, 10, 13, 15, 16, 17, 18, 19, 21, 22, 23], "pre": 1, "correct": [1, 2, 20], "header": [1, 9, 14], "address": [1, 4], "similar": [1, 3, 5], "mean": [1, 2, 8], "result": [1, 3, 19], "exactli": 1, "1": [1, 3, 4, 5, 8, 14], "cowboi": 1, "style": [1, 14], "over": [1, 4], "weekend": 1, "It": [1, 2, 3, 4, 6, 16, 19], "doesn": 1, "matter": 1, "trivial": [1, 8], "peopl": 1, "chanc": 1, "proper": [1, 20], "Be": 1, "awar": 1, "impact": 1, "time": [1, 2, 4, 5, 6, 8, 10, 12, 14, 16, 20, 23], "proport": 1, "its": [1, 2, 3, 4, 5, 6, 16, 18, 19], "ping": 1, "them": [1, 3, 4, 6, 14, 19], "necessari": [1, 9], "repeatedli": 1, "start": [1, 2, 5, 6, 9, 10, 11, 14, 20, 23], "part": [1, 4, 5, 14], "For": [1, 3, 4, 5, 6, 8, 9, 14, 20], "detail": [1, 2, 3, 8, 9, 14], "thoma": 1, "cokela": 1, "info": [1, 9], "tutori": 1, "sphinx": 1, "rest_syntax": 1, "html": 1, "id8": 1, "type": [1, 2, 3, 5, 6, 9, 10, 13, 14, 16, 18], "develop": [1, 5, 8, 11, 14], "stabl": [1, 4], "against": 1, "accept": [1, 14, 15, 17, 21, 22], "api": [1, 4], "abi": 1, "chang": [1, 2, 3, 5, 9, 10, 14, 20], "e": [1, 2, 3, 4, 5, 8, 14, 15, 16, 17, 19, 20, 21, 22, 23], "name": [1, 2, 3, 5, 6, 8, 10, 14, 16, 18, 19, 20], "convent": 1, "master": [1, 3, 4], "semi": 1, "binari": 1, "good": [1, 4], "same": [1, 3, 4, 16], "build": [1, 14], "dai": 1, "2": [1, 3, 5, 8], "ros_distro": 1, "g": [1, 2, 3, 4, 5, 8, 14, 15, 17, 19, 21, 22, 23], "foxi": [1, 3, 5], "galact": 1, "releas": [1, 3, 5, 6], "version": [1, 4], "non": [1, 5, 16], "brake": 1, "distribut": [1, 23], "three": [1, 2, 3, 9, 14], "stage": 1, "current": [1, 4, 9, 10, 20], "futur": [1, 5], "compat": [1, 2, 5], "framework": [1, 2, 4, 5, 6, 8, 9, 10, 11, 13, 14, 19, 23], "packag": [1, 2, 3, 6, 9, 11, 14, 16, 18, 20, 23], "show": [1, 3, 5, 6, 9, 10, 19], "direct": [1, 2, 4, 14], "local": [1, 19], "possibl": [1, 3, 4, 6, 14, 20], "core": 1, "immedi": 1, "depend": [1, 3, 9, 14, 20], "fail": 1, "expect": [1, 4, 20], "after": [1, 12, 14], "next": [1, 20], "sync": 1, "abl": 1, "potenti": [1, 14], "mid": 1, "robothw": 2, "rigid": 2, "ani": [2, 3, 5, 9, 14], "imposs": 2, "extend": [2, 3, 4, 14], "exist": [2, 3, 4, 6, 9, 14], "addit": [2, 4], "sensor": [2, 3, 4, 8, 9, 13], "actuat": [2, 3, 4, 8, 9], "tool": [2, 4, 5], "without": [2, 3, 8, 14], "combinedrobothardwar": 2, "drawback": [2, 23], "solut": [2, 5], "optim": [2, 6], "combin": [2, 8, 19, 20], "extern": [2, 3, 4, 8], "defin": [2, 3, 4, 8, 13, 14, 16, 18, 19, 20], "system": [2, 3, 4, 5, 9, 11, 20, 23], "composit": [2, 5], "basic": [2, 3, 4, 5, 14], "physic": [2, 3, 8, 9], "cell": [2, 16], "surround": 2, "describ": [2, 3], "multi": [2, 3, 4, 5, 11], "gripper": [2, 3, 8], "out": [2, 12], "box": 2, "allow": [2, 20], "joint": [2, 3, 5, 12, 13, 14, 15, 17, 19, 21, 22, 23], "posit": [2, 3, 5, 6, 10, 11, 13, 15, 17, 19, 20, 21, 22], "veloc": [2, 3, 5, 11, 13, 19, 20, 21, 22], "effort": [2, 13, 15, 17, 19, 20], "hard": [2, 4], "data": [2, 3, 4, 8, 19], "approach": 2, "doe": [2, 14, 20], "enforc": [2, 20], "string": [2, 8, 14, 19, 20], "ensur": [2, 5], "constant": 2, "hardware_interfac": [2, 3, 8, 9, 13, 14], "In": [2, 3, 4, 5, 14, 19], "had": 2, "request": [2, 19, 23], "itself": 2, "took": 2, "care": [2, 4, 14], "regist": 2, "resourc": 2, "conflict": [2, 3, 4], "resourcemanag": 2, "take": [2, 4, 14, 19], "state": [2, 3, 4, 5, 8, 9, 10, 11, 13, 14, 16, 19, 20], "avail": [2, 3, 5, 10, 11, 14, 19, 20], "enabl": [2, 3, 4, 5, 6, 9, 11, 16], "anymor": 2, "controllermanag": 2, "implement": [2, 3, 4, 5, 8, 11, 12, 13, 14, 20, 23], "systeminterfac": [2, 8], "granular": 2, "sensorinterfac": 2, "actuatorinterfac": 2, "abov": [2, 20], "choos": 2, "suitabl": [2, 5], "strategi": [2, 20], "decid": 2, "which": [2, 3, 4, 5, 10, 12, 14, 16, 18, 19, 20], "case": [2, 4, 5, 14, 19, 20, 23], "mayb": 2, "sens": [2, 3, 16], "multipl": [2, 3, 19, 20], "constructor": [2, 14], "initi": [2, 14], "variabl": [2, 4, 14], "need": [2, 3, 4, 5, 14], "commun": [2, 3, 4, 5], "default": [2, 3, 8, 19, 20], "configur": [2, 3, 4, 5, 6, 9, 10, 11, 14, 19, 20], "paramet": [2, 5, 14], "pars": [2, 7], "urdf": 2, "snippet": 2, "hardwareinfo": 2, "here": [2, 7, 14, 20], "cross": [2, 19], "valu": [2, 3, 4, 8, 14, 19, 20], "export_": 2, "_interfac": 2, "joint_a2": 2, "extract": [2, 12], "sensibl": 2, "stop": [2, 5, 6, 9, 10, 11, 12], "usual": [2, 8, 14], "includ": [2, 4, 9, 10, 14], "command": [2, 3, 4, 5, 7, 8, 11, 13, 14, 15, 17, 20, 21, 22, 23], "safe": [2, 12, 14, 20], "interrupt": [2, 6], "stream": [2, 5], "write": [2, 3, 4, 5, 13], "exchang": [2, 4], "equival": 2, "forget": 2, "pluginlib_export_class": [2, 14], "macro": [2, 3, 14], "end": [2, 3, 9, 14, 20], "cpp": [2, 14], "file": [2, 3, 4, 5, 6, 8, 14, 20], "creat": [2, 3, 5, 8, 14], "xml": [2, 9, 14], "librari": [2, 3, 4, 10, 14], "pluginlib": [2, 3, 14], "exampl": [2, 3, 4, 5, 8, 10, 11, 16, 19, 20, 23], "rrbotsystempositiononlyhardwar": [2, 3], "excel": 2, "jointtrajectorycontrol": [2, 10], "real": [2, 4, 5, 6, 8, 14, 19, 20, 23], "critic": [2, 4], "mark": 2, "controllerinterfac": [2, 3, 10, 14], "member": [2, 14], "init": [2, 14], "call": [2, 3, 14], "lifecycl": [2, 3, 5, 6, 9], "declar": [2, 14], "state_interface_configur": [2, 14], "command_interface_configur": [2, 14], "design": [2, 3, 4, 5, 23], "updat": [2, 3, 4, 14], "manag": [2, 4, 5, 7, 9, 10, 14, 23], "option": [2, 6, 8, 9, 10, 14, 16, 19, 20], "on_configur": [2, 14], "on_activ": [2, 9, 14], "on_deactiv": [2, 9, 14], "deactiv": [2, 3], "final": [2, 5, 9], "joint_trajectory_plugin": 2, "ros2": [3, 4, 5, 6, 10, 11, 14, 23], "instal": [3, 6, 14], "automat": [3, 12], "want": [3, 6], "workspac": [3, 14], "folder": [3, 5, 14], "wget": 3, "raw": 3, "githubusercont": 3, "com": [3, 4, 6], "vc": 3, "import": [3, 14, 20], "src": [3, 14], "found": [3, 7, 14, 20, 23], "github": [3, 4, 7, 13, 23], "repositori": [3, 4, 7, 13, 23], "figur": 3, "cm": 3, "connect": 3, "abstract": [3, 5, 9], "side": [3, 4, 5], "entri": [3, 14], "point": [3, 13, 14, 23], "through": [3, 4, 10, 12, 13, 14, 20, 23], "servic": [3, 4, 6, 9], "node": [3, 6, 8, 9, 10, 11, 14], "executor": 3, "so": [3, 14], "integr": [3, 4, 5, 8, 11, 20, 23], "custom": [3, 8, 16, 19], "setup": [3, 4, 14], "recommend": [3, 5], "ros2_control_nod": 3, "controller_manag": [3, 4, 6, 10, 14, 20], "manual": [3, 4, 14, 23], "assum": 3, "On": 3, "load": [3, 6, 10, 11, 14], "unload": [3, 6, 10], "access": [3, 4, 5, 6, 8, 14, 19], "match": 3, "provid": [3, 4, 5, 6, 8, 11, 13, 14, 19, 20, 23], "report": [3, 4, 19, 23], "error": [3, 4, 14, 19, 20], "execut": [3, 14, 20], "loop": [3, 5, 6, 14, 19, 20], "output": [3, 4, 5, 10, 16, 18, 20], "rm": 3, "driver": [3, 5], "re": 3, "usabl": 3, "flexibl": 3, "motor": [3, 4], "encod": 3, "deal": 3, "theori": [3, 23], "compar": [3, 4, 5], "refer": 3, "measur": [3, 8, 16, 19], "base": [3, 5, 9, 10, 12, 14], "calcul": 3, "input": [3, 4, 5, 12, 20], "visit": 3, "wikipedia": [3, 23], "object": 3, "deriv": 3, "controller_interfac": [3, 4, 10, 14, 16, 18], "export": [3, 14], "plugin": [3, 9, 14], "forwardcommandcontrol": 3, "lifecyclenod": 3, "class": [3, 5, 9, 10, 14], "machin": [3, 4], "document": [3, 4, 5, 8], "latest": 3, "interact": [3, 5, 6, 10], "list": [3, 5, 9, 10, 11, 13, 14, 20, 23], "definit": [3, 13, 14, 16], "srv": 3, "controller_manager_msg": 3, "while": [3, 4, 5, 11, 20], "directli": [3, 23], "line": [3, 7, 9, 14, 19], "via": 3, "friendli": 3, "cli": [3, 7, 10], "auto": 3, "complet": [3, 9, 13], "rang": 3, "common": [3, 4, 13, 19, 23], "capabl": [3, 4], "readm": 3, "md": 3, "ros2controlcli": 3, "realiz": [3, 5], "repres": [3, 9], "dynam": [3, 14], "There": [3, 6, 9, 14], "complex": [3, 4, 5], "dof": 3, "differ": [3, 4, 5, 15, 16, 17, 19, 21, 22], "between": [3, 4, 9, 19, 20], "transmiss": 3, "humanoid": 3, "hand": 3, "logic": 3, "channel": 3, "kuka": 3, "rsi": 3, "A": [3, 5, 14, 19, 20], "relat": [3, 4, 5], "link": [3, 5, 9], "forc": [3, 5, 10, 13], "torqu": [3, 13], "simpl": [3, 4, 5, 11, 14], "valv": 3, "mandatori": [3, 16, 18, 20], "dc": 3, "arduino": 3, "board": 3, "modular": [3, 5], "independ": 3, "explan": 3, "given": [3, 20], "tag": [3, 14, 23], "chosen": 3, "structur": [3, 4, 14, 20], "track": [3, 23], "togeth": 3, "xacro": 3, "hereund": 3, "rrbot": [3, 11], "parallel": [3, 8], "effector": 3, "rrbotsystempositiononli": 3, "ros2_control_demo_hardwar": [3, 11], "param": [3, 6, 8], "example_param_write_for_sec": 3, "example_param_read_for_sec": 3, "joint1": [3, 8, 10, 11, 20], "command_interfac": [3, 20], "min": 3, "max": 3, "state_interfac": [3, 20], "joint2": [3, 10, 11, 20], "rrbotforcetorquesensor1d": 3, "forcetorquesensor1dhardwar": 3, "0": [3, 8, 19, 20], "43": 3, "tcp_fts_sensor": 3, "frame_id": [3, 16, 18], "rrbot_tcp": 3, "min_forc": 3, "100": 3, "max_forc": 3, "rrbotgripp": 3, "positionactuatorhardwar": 3, "23": 3, "3": [3, 4], "gripper_joint": 3, "50": [3, 6, 20], "yaml": [3, 4, 20], "instead": [3, 8, 20], "pure": [3, 20], "launch": [3, 6, 8, 11], "stack": [3, 5], "could": [3, 5, 14, 19, 20], "altern": [3, 20], "script": [3, 4, 14], "skeleton": 3, "orbit": 4, "around": [4, 16, 18], "everyth": [4, 14], "goal": [4, 5, 20, 23], "long": 4, "run": [4, 5, 6, 10], "task": [4, 5, 12], "interfac": [4, 5, 6, 7, 8, 9, 11, 13, 14, 16, 18, 23], "user": 4, "thread": [4, 6], "protect": [4, 14], "memori": [4, 14], "buffer": [4, 23], "control_toolbox": [4, 23], "second": [4, 10, 14, 23], "frequenc": 4, "high": 4, "rate": [4, 20], "khz": 4, "variou": 4, "anoth": 4, "heartbeat": 4, "signal": 4, "sent": 4, "onc": [4, 5], "per": [4, 16], "500": 4, "hz": 4, "failur": [4, 9], "relev": [4, 23], "draft": 4, "trigger": 4, "skill": 4, "prefer": 4, "c": [4, 6, 10, 14], "trick": 4, "mentor": 4, "benc": [4, 5], "magyar": [4, 5], "deni": [4, 5], "\u0161togl": [4, 5], "size": 4, "350": 4, "hour": 4, "difficulti": 4, "about": [4, 8, 19, 23], "org": [4, 6], "gener": [4, 5, 14, 20, 23], "envis": 4, "simul": [4, 8, 11], "gazebo": 4, "ignit": 4, "showcas": [4, 5], "grace": 4, "degrad": 4, "architectur": [4, 5], "roadmap": [4, 23], "place": [4, 14, 20], "gpio": 4, "mode": [4, 20], "switch": [4, 10], "movement": 4, "safeti": 4, "familiar": [4, 23], "medium": 4, "focus": [4, 5], "although": [4, 9], "easi": 4, "therefor": [4, 6, 14, 19, 20], "often": [4, 8, 14, 19], "orchestr": 4, "purpos": 4, "conductor": 4, "scenario": 4, "appropri": 4, "moment": 4, "right": 4, "replac": [4, 9], "level": [4, 5, 15, 17, 20, 21, 22], "moveit2": [4, 5], "simplecontrollermanag": 4, "form": 4, "behavior": [4, 8], "benchmark": 4, "statu": [4, 9, 10, 20], "publish": [4, 12, 16, 18, 19, 20, 23], "topic": [4, 5, 20], "format": [4, 19], "preset": 4, "modul": 4, "specif": [4, 9, 19, 20], "reli": 4, "doubl": [4, 8, 20], "desir": [4, 20], "howev": [4, 6], "both": [4, 5, 19], "improv": 4, "readabl": 4, "earlier": 4, "concept": [4, 5, 8, 11], "were": 4, "introduc": [4, 5], "essenti": 4, "group": [4, 20, 23], "instanc": [4, 19], "imu": [4, 13], "typic": [4, 19, 20], "9": 4, "axi": [4, 16], "aceleromet": 4, "gyroscop": 4, "compass": 4, "respect": [4, 5], "Such": 4, "struct": 4, "low": [4, 5], "profil": 4, "intern": [4, 20], "addition": [4, 23], "few": [4, 5], "pull": 4, "45": 4, "tree": 4, "semantic_compon": 4, "175": 4, "rewrit": [4, 23], "ros_control": [4, 5, 23], "rich": 4, "wa": [4, 14], "motiv": 4, "adopt": 4, "port": [4, 9], "most": [4, 14], "quit": 4, "miss": [4, 19], "diff_drive_control": [4, 10], "joint_trajectory_control": [4, 10], "consist": [4, 20, 23], "identifi": 4, "much": [4, 14], "303": 4, "304": 4, "stretch": 4, "realtime_tool": [4, 23], "81": 4, "302": 4, "unit": 4, "gmock": 4, "cc": 5, "BY": 5, "licens": 5, "author": 5, "either": 5, "down": 5, "below": 5, "my": 5, "company_nam": 5, "tricycl": 5, "control": [5, 7, 8, 9, 10, 11, 12, 15, 16, 17, 18, 19, 21, 22, 23], "event": 5, "pixel": 5, "prefac": 5, "introduct": [5, 20], "johann": 5, "plapp": 5, "toni": 5, "najjar": 5, "kernel": [5, 6], "hardwar": [5, 6, 7, 8, 11, 13, 14, 23], "agnost": 5, "share": [5, 14], "well": [5, 6, 10, 20], "perform": [5, 6], "heavi": 5, "dr": 5, "stogl": 5, "consult": 5, "practition": 5, "guid": [5, 14], "top": 5, "virtual": 5, "talk": 5, "delv": 5, "deeper": 5, "what": 5, "explicit": [5, 20], "chain": 5, "emerg": 5, "handler": 5, "mock": 5, "usag": [5, 6, 10], "openli": 5, "record": 5, "fiveai": 5, "ltd": 5, "best": [5, 6, 14], "focu": 5, "becom": 5, "util": 5, "3rd": 5, "parti": 5, "nav2": 5, "practic": 5, "tip": 5, "hot": 5, "shown": 5, "furthermor": 5, "get": [5, 9, 23], "reus": 5, "inject": 5, "offer": [5, 6], "expos": 5, "problem": [5, 23], "manipul": [5, 20], "path": 5, "plan": [5, 23], "autonom": 5, "navig": 5, "ideal": [5, 8], "made": [5, 9], "mobil": [5, 12], "arm": 5, "extra": [5, 19], "readi": [5, 14], "power": 5, "studi": 5, "ur": 5, "With": 5, "moveit": [5, 8], "ingredi": 5, "scale": 5, "factor": 5, "teach": 5, "pendant": 5, "influenc": 5, "picknik": 5, "inc": 5, "nathan": 5, "brook": 5, "lovro": 5, "ivanov": 5, "andi": 5, "zelenak": 5, "rune": 5, "s\u00f8e": 5, "knudsen": 5, "onlin": [5, 14], "trajectori": [5, 13, 23], "admitt": 5, "One": 5, "reason": 5, "upgrad": 5, "ros1": 5, "better": 5, "realtim": [5, 12, 20, 23], "contact": 5, "insert": 5, "singl": 5, "waypoint": [5, 13, 20], "mani": [5, 14], "teleoper": 5, "involv": 5, "kinemat": 5, "acceler": [5, 11, 12, 13, 20], "jerk": [5, 12], "obei": 5, "demo": 5, "booth": 5, "zeleank": 5, "unifi": 5, "life": 5, "cycl": 5, "go": [5, 14], "_control": 5, "wild": 5, "materi": 5, "quick": [5, 9], "overview": 5, "layer": 5, "aka": 5, "systemcompon": 5, "forward": [5, 8, 13, 20, 23], "done": [5, 14], "look": 5, "modifi": 5, "simpli": [5, 20], "net": 5, "edit": 5, "collect": [5, 15, 17, 21, 22], "semant": [5, 16, 18], "world": [6, 8], "littl": 6, "jitter": 6, "normal": 6, "linux": 6, "comput": [6, 12], "throughput": 6, "suit": 6, "attempt": [6, 20], "sched_fifo": 6, "prioriti": 6, "rt": 6, "permiss": 6, "syscal": 6, "easiest": [6, 14], "ubuntu": 6, "22": 6, "04": 6, "lt": 6, "beta": 6, "blog": 6, "imag": 6, "amd64": 6, "debian": 6, "bullsey": 6, "startup": 6, "h": [6, 10, 14], "p": 6, "param_fil": 6, "controller_typ": 6, "timeout": [6, 10], "controller_manager_timeout": 6, "controller_nam": [6, 10, 14], "argument": [6, 10], "exit": [6, 10], "leav": 6, "unconfigur": [6, 9], "namespac": [6, 13, 14, 19, 20], "kill": [6, 10], "wait": [6, 10], "until": 6, "doxygen": 7, "fake": 7, "mirror": 8, "correspond": [8, 14, 23], "offlin": 8, "advantag": 8, "pipe": 8, "insid": 8, "broadcast": [8, 19], "even": 8, "debug": 8, "boost": 8, "mimic": 8, "offset": [8, 19, 20], "fake_sensor_command": 8, "boolean": [8, 19, 20], "fals": [8, 19, 20], "position_state_following_offset": 8, "custom_interface_with_following_offset": 8, "map": [8, 19, 20], "multipli": 8, "mimick": 8, "return_typ": [9, 14], "return": [9, 14, 19], "on_error": 9, "previous_st": 9, "success": [9, 14], "callbackreturn": 9, "again": [9, 11], "recov": 9, "reload": [9, 10], "substanti": 9, "renam": 9, "on_init": 9, "baseinterfac": 9, "remov": 9, "base_interfac": 9, "hpp": [9, 14], "hardware_interface_status_valu": 9, "rclcpp_lifecycl": [9, 14], "mai": [9, 15, 17, 21, 22], "strictli": 9, "last": [9, 14, 20], "status_": 9, "const": 9, "in_deactiv": 9, "undefin": 9, "refern": 9, "symbol": 9, "node_interfac": 9, "lifecyclenodeinterfac": 9, "rclcpp_lifecyl": 9, "cmakelist": [9, 14], "txt": [9, 14], "spin": 10, "spin_tim": 10, "hidden": 10, "discoveri": 10, "appli": 10, "alreadi": [10, 14, 20], "daemon": 10, "test_controller_nam": 10, "test_control": 10, "diffdrivecontrol": 10, "joint_state_control": 10, "jointstatecontrol": 10, "unclaim": [10, 11], "set_stat": 10, "adjust": 10, "strict": 10, "asap": 10, "switch_timeout": 10, "templat": [11, 14, 20], "demonstr": 11, "prove": 11, "comprehens": 11, "ros2_control_demo_bringup": 11, "gui": 11, "ros2_control_test_nod": 11, "rrbot_system_multi_interfac": 11, "py": 11, "list_hardware_interfac": 11, "load_control": 11, "forward_position_control": 11, "forward_velocity_control": 11, "forward_acceleration_control": 11, "forward_illegal1_control": 11, "forward_illegal2_control": 11, "joint_state_broadcast": 11, "set_controller_st": 11, "claim": 11, "now": [11, 14], "let": 11, "switch_control": 11, "inde": 11, "been": 11, "differenti": [12, 13, 23], "drive": [12, 13, 23], "bodi": 12, "translat": 12, "wheel": 12, "odometri": 12, "feedback": [12, 19, 20], "twist": 12, "x": [12, 16, 18], "linear": [12, 20], "z": [12, 16], "angular": 12, "ignor": [12, 20], "space": [12, 20], "sort": [13, 14], "accord": [13, 20], "position_control": [13, 20], "hw_if_posit": 13, "velocity_control": 13, "hw_if_veloc": 13, "effort_control": 13, "hw_if_acceler": 13, "hw_if_effort": 13, "interpol": [13, 20], "step": [14, 20, 23], "compil": 14, "rule": 14, "prepar": 14, "ament_cmak": 14, "search": 14, "recent": 14, "process": 14, "pkg": 14, "flag": [14, 20], "least": [14, 20], "package_nam": 14, "visibility_control": 14, "window": 14, "copi": 14, "prefix": [14, 16, 18], "guard": 14, "ifndef": 14, "preprocessor": 14, "engin": 14, "friend": 14, "uniqu": 14, "written": 14, "snake_cas": 14, "controllernam": 14, "public": 14, "overrid": 14, "exact": 14, "vector": 14, "store": 14, "simplifi": [14, 23], "further": 14, "parent": 14, "reserv": 14, "importantli": 14, "fine": 14, "ok": 14, "otherwis": [14, 19], "individu": 14, "none": [14, 19], "ask": [14, 19], "full": 14, "joint_nam": [14, 20], "interface_typ": 14, "assign": 14, "opposit": 14, "empti": 14, "constraint": [14, 20], "At": 14, "close": 14, "class_list_macro": 14, "controller_name_namespac": 14, "visibl": 14, "controller_name_packag": 14, "bottom": 14, "test_load_": 14, "content": 14, "specifi": [14, 20], "find_packag": 14, "rclcpp": 14, "directori": 14, "ament": 14, "cmake": 14, "pluginlib_export_plugin_description_fil": 14, "ament_cmake_gmock": 14, "ros2_control_test_asset": 14, "ament_add_gmock": 14, "ament_export_librari": 14, "ament_packag": 14, "test_depend": 14, "colcon": 14, "rememb": 14, "root": 14, "bash": 14, "enjoi": 14, "great": 14, "shell": 14, "certain": [15, 17, 21, 22], "achiev": [15, 17, 21, 22], "These": [15, 17, 21, 22], "geometry_msg": 16, "msg": [16, 18, 20], "wrenchstamp": 16, "wrapper": [16, 18], "forcetorquesensor": 16, "sensor_nam": [16, 18], "interface_nam": 16, "frame": [16, 18], "6d": 16, "ft": 16, "y": 16, "less": 16, "six": 16, "ax": 16, "example_nam": 16, "example_interfac": 16, "sensor_msg": 18, "imusensor": 18, "orient": 18, "angular_veloc": 18, "linear_acceler": 18, "joint_stat": 19, "dynamic_joint_st": 19, "By": [19, 20], "unless": 19, "latter": 19, "matrix": 19, "product": 19, "print": 19, "warn": 19, "use_local_top": 19, "my_state_broadcast": 19, "arrai": 19, "extra_joint": 19, "map_interface_to_joint_st": 19, "field": 19, "usecas": 19, "hydraul": [19, 20], "relianc": 19, "would": 19, "visual": 19, "robot_state_publish": 19, "rviz": 19, "techniqu": 19, "slightli": 19, "custom_interfac": 19, "kf_estimated_posit": 19, "derived_veloc": 19, "derived_effort": 19, "torque_sensor": 19, "current_sensor": 19, "reach": 20, "instant": 20, "mechan": 20, "spline": 20, "guarante": 20, "continu": 20, "discourag": 20, "becaus": 20, "yield": 20, "discontinu": 20, "cubic": 20, "quintic": 20, "pid": [20, 23], "similarli": 20, "eg": 20, "proxi": 20, "wrap": 20, "robust": 20, "clock": 20, "caus": 20, "queu": 20, "segment": 20, "ros__paramet": 20, "joint3": 20, "joint4": 20, "joint5": 20, "joint6": 20, "state_publish_r": 20, "action_monitor_r": 20, "20": 20, "allow_partial_joints_go": 20, "open_loop_control": 20, "true": 20, "stopped_velocity_toler": 20, "01": 20, "goal_tim": 20, "05": [20, 23], "03": 20, "monitor": 20, "action": 20, "control_msg": [20, 23], "followjointtrajectori": 20, "tri": 20, "numer": 20, "nan": 20, "std": 20, "numeric_limit": 20, "quiet_nan": 20, "toler": 20, "jointtrajectori": 20, "deviat": 20, "maxim": 20, "predefin": 20, "joint_trajectori": 20, "trajectory_msg": 20, "jointtrajectorycontrollerst": 20, "follow_joint_trajectori": 20, "server": 20, "position_velocity_control": 20, "position_velocity_acceleration_control": 20, "Not": 20, "yet": 20, "feedforward": 20, "term": [20, 23], "plu": 20, "171": 20, "Its": 23, "oper": 23, "overcom": 23, "idea": 23, "wide": 23, "toolkit": 23, "unreleas": 23, "smooth": 23, "doc": 23, "wg": 23, "meet": 23, "everi": 23, "wednesdai": 23, "join": 23, "announc": 23, "discours": 23, "googl": 23, "propos": 23, "previou": 23, "bug": 23, "tracker": 23, "minim": 23, "reproduc": 23, "regard": 23, "etc": 23, "question": 23, "answer": 23, "2023": 23, "12": 23, "31": 23, "built": 23, "gmt": 23}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"acknowledg": 0, "pull": 1, "request": 1, "rule": 1, "repositori": [1, 11], "process": 1, "merg": 1, "write": [1, 9, 14], "document": [1, 7, 23], "structur": [1, 2], "ci": 1, "configur": 1, "differ": 2, "ros_control": 2, "ros1": [2, 4], "hardwar": [2, 3, 4, 9, 12, 15, 17, 19, 20, 21, 22], "class": 2, "interfac": [2, 3, 10, 12, 15, 17, 19, 20, 21, 22], "control": [2, 3, 4, 6, 13, 14, 20], "": [2, 20], "access": 2, "migrat": [2, 9], "guid": 2, "ros2_control": [2, 4, 13, 23], "robothardwar": 2, "compon": [2, 3, 4, 8, 9], "get": 3, "start": 3, "compil": 3, "architectur": 3, "manag": [3, 6], "resourc": [3, 5], "user": 3, "descript": 3, "urdf": 3, "run": 3, "framework": 3, "your": 3, "robot": [3, 5], "project": 4, "idea": 4, "gsoc": 4, "2022": [4, 5], "asynchron": 4, "tutori": 4, "demo": [4, 11], "mission": 4, "add": 4, "support": 4, "semant": 4, "featur": [4, 7, 12, 20], "pariti": 4, "from": [4, 9], "present": 5, "2023": 5, "02": 5, "ro": 5, "meetup": 5, "munich": 5, "5": 5, "12": 5, "industri": 5, "confer": 5, "10": 5, "roscon": 5, "06": 5, "fr": 5, "2021": 5, "world": 5, "07": 5, "weekli": 5, "13": 5, "rosdevdai": 5, "05": 5, "diagram": 5, "imag": 5, "determin": 6, "helper": 6, "script": 6, "spawner": 6, "unspawn": 6, "api": 7, "core": 7, "function": 7, "concept": 7, "fake": 8, "gener": 8, "system": 8, "paramet": [8, 16, 18, 19, 20], "per": 8, "joint": [8, 20], "handl": 9, "error": 9, "happen": 9, "dure": 9, "read": 9, "call": 9, "foxi": 9, "galact": [9, 23], "command": [10, 12, 19], "line": 10, "list_control": 10, "list_controller_typ": 10, "list_hardware_interfac": 10, "load_control": 10, "reload_controller_librari": 10, "set_controller_st": 10, "switch_control": 10, "unload_control": 10, "organ": 11, "mode": 11, "switch": 11, "diff_drive_control": 12, "veloc": 12, "type": [12, 15, 17, 19, 20, 21, 22], "other": [12, 20], "nomenclatur": 13, "guidelin": 13, "best": 13, "practic": 13, "avail": 13, "broadcast": [13, 16, 18], "new": 14, "us": [14, 20], "extern": 14, "refer": 14, "effort_control": 15, "forc": 16, "torqu": 16, "sensor": [16, 18], "forward_command_control": 17, "imu": 18, "joint_state_broadcast": 19, "joint_trajectory_control": 20, "trajectori": 20, "represent": 20, "detail": 20, "about": 20, "ros2": 20, "special": 20, "version": 20, "jointtrajectorycontrol": 20, "tbd": 20, "position_control": 21, "velocity_control": 22, "welcom": 23, "overview": 23, "develop": 23, "organis": 23, "commun": 23}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx": 60}, "alltitles": {"Acknowledgements": [[0, "acknowledgements"]], "Pull Requests": [[1, "pull-requests"]], "Rules for the repositories and process of merging pull requests": [[1, "rules-for-the-repositories-and-process-of-merging-pull-requests"]], "Writing documentation": [[1, "writing-documentation"]], "Repository structure and CI configuration": [[1, "repository-structure-and-ci-configuration"]], "CI configuration": [[1, "ci-configuration"]], "Differences to ros_control (ROS1)": [[2, "differences-to-ros-control-ros1"]], "Hardware Structures - classes": [[2, "hardware-structures-classes"]], "Hardware Interfaces": [[2, "hardware-interfaces"]], "Controller\u2019s Access to Hardware": [[2, "controller-s-access-to-hardware"]], "Migration Guide to ros2_control": [[2, "migration-guide-to-ros2-control"]], "RobotHardware to Components": [[2, "robothardware-to-components"]], "Controller Migration": [[2, "controller-migration"]], "Getting Started": [[3, "getting-started"]], "Compiling": [[3, "compiling"]], "Architecture": [[3, "architecture"]], "Controller Manager": [[3, "controller-manager"], [6, "controller-manager"]], "Resource Manager": [[3, "resource-manager"]], "Controllers": [[3, "controllers"], [13, "id1"]], "User Interfaces": [[3, "user-interfaces"]], "Hardware Components": [[3, "hardware-components"], [9, "hardware-components"]], "Hardware Description in URDF": [[3, "hardware-description-in-urdf"]], "Running the Framework for Your Robot": [[3, "running-the-framework-for-your-robot"]], "Project Ideas for GSoC 2022": [[4, "project-ideas-for-gsoc-2022"]], "Asynchronous Control Components": [[4, "asynchronous-control-components"]], "Tutorials and Demos for ros2_control": [[4, "tutorials-and-demos-for-ros2-control"]], "Mission-Control for ros2_control": [[4, "mission-control-for-ros2-control"]], "Add support for hardware semantic components": [[4, "add-support-for-hardware-semantic-components"]], "Feature-parity for controllers from ROS1": [[4, "feature-parity-for-controllers-from-ros1"]], "Resources": [[5, "resources"]], "Presentations": [[5, "presentations"]], "2023-02 ROS Meetup Munich #5": [[5, "ros-meetup-munich-5"]], "2022-12 ROS-Industrial Conference 2022": [[5, "ros-industrial-conference-2022"]], "2022-10 ROSCon 2022": [[5, "roscon-2022"]], "2022-06 ROSCon Fr 2022": [[5, "roscon-fr-2022"]], "2021-10 ROS World 2021": [[5, "ros-world-2021"]], "2021-10-07 Weekly Robotics Meetup #13": [[5, "weekly-robotics-meetup-13"]], "2021-06 ROSDevDay 2021": [[5, "rosdevday-2021"]], "2021-05 ROSCon Fr 2021": [[5, "roscon-fr-2021"]], "Diagrams": [[5, "diagrams"]], "Images": [[5, "images"]], "Determinism": [[6, "determinism"]], "Helper scripts": [[6, "helper-scripts"]], "spawner": [[6, "spawner"]], "unspawner": [[6, "unspawner"]], "API Documentation": [[7, "api-documentation"]], "Core functionalities": [[7, "core-functionalities"]], "Features": [[7, "features"]], "Concepts": [[7, "concepts"]], "Fake Components": [[8, "fake-components"]], "Generic System": [[8, "generic-system"]], "Parameters": [[8, "parameters"], [16, "parameters"], [18, "parameters"], [19, "parameters"]], "Per-joint Parameters": [[8, "per-joint-parameters"]], "Handling of errors that happen during read() and write() calls": [[9, "handling-of-errors-that-happen-during-read-and-write-calls"]], "Migration from Foxy to Galactic": [[9, "migration-from-foxy-to-galactic"]], "Command Line Interface": [[10, "command-line-interface"]], "list_controllers": [[10, "list-controllers"]], "list_controller_types": [[10, "list-controller-types"]], "list_hardware_interfaces": [[10, "list-hardware-interfaces"]], "load_controller": [[10, "load-controller"]], "reload_controller_libraries": [[10, "reload-controller-libraries"]], "set_controller_state": [[10, "set-controller-state"]], "switch_controllers": [[10, "switch-controllers"]], "unload_controller": [[10, "unload-controller"]], "Demos": [[11, "demos"]], "Repository organization": [[11, "repository-organization"]], "Mode switching demo": [[11, "mode-switching-demo"]], "diff_drive_controller": [[12, "diff-drive-controller"]], "Velocity commands": [[12, "velocity-commands"]], "Hardware interface type": [[12, "hardware-interface-type"], [15, "hardware-interface-type"], [17, "hardware-interface-type"], [19, "hardware-interface-type"], [20, "hardware-interface-type"], [21, "hardware-interface-type"], [22, "hardware-interface-type"]], "Other features": [[12, "other-features"], [20, "other-features"]], "ros2_controllers": [[13, "ros2-controllers"]], "Nomenclature": [[13, "nomenclature"]], "Guidelines and Best Practices": [[13, "guidelines-and-best-practices"]], "Available Controllers": [[13, "available-controllers"]], "Available Broadcasters": [[13, "available-broadcasters"]], "Writing a new controller": [[14, "writing-a-new-controller"]], "Useful External References": [[14, "useful-external-references"]], "effort_controllers": [[15, "effort-controllers"]], "Force Torque Sensor Broadcaster": [[16, "force-torque-sensor-broadcaster"]], "forward_command_controller": [[17, "forward-command-controller"]], "IMU Sensor Broadcaster": [[18, "imu-sensor-broadcaster"]], "joint_state_broadcaster": [[19, "joint-state-broadcaster"]], "Commands": [[19, "commands"]], "joint_trajectory_controller": [[20, "joint-trajectory-controller"]], "Trajectory representation": [[20, "trajectory-representation"]], "Using Joint Trajectory Controller(s)": [[20, "using-joint-trajectory-controller-s"]], "Details about parameters": [[20, "details-about-parameters"]], "ROS2 interface of the controller": [[20, "ros2-interface-of-the-controller"]], "Specialized versions of JointTrajectoryController (TBD in \u2026)": [[20, "specialized-versions-of-jointtrajectorycontroller-tbd-in"]], "position_controllers": [[21, "position-controllers"]], "velocity_controllers": [[22, "velocity-controllers"]], "Welcome to the ros2_control documentation - Galactic!": [[23, "welcome-to-the-ros2-control-documentation-galactic"]], "Overview": [[23, "overview"]], "Development Organisation and Communication": [[23, "development-organisation-and-communication"]]}, "indexentries": {}}) \ No newline at end of file diff --git a/humble/.buildinfo b/humble/.buildinfo index 4724d10ac11..a85a8f3af76 100644 --- a/humble/.buildinfo +++ b/humble/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 99fff7a72341596a9d77ced0d4f0c43c +config: 1cb8c07fd819994e46a823caa98cd946 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/humble/.doctrees/doc/acknowledgements/acknowledgements.doctree b/humble/.doctrees/doc/acknowledgements/acknowledgements.doctree index 8327d8dc315b9f64194d9d9e59bebcc2372bc696..54b1872e51370e67b1efa25d6ad7dc585111798a 100644 GIT binary patch delta 1669 zcmds%&ud&&6vw^q&U;guOeTX(tC>I&ty$P%dVjuq?`TaZ7Hq2>1`DYPhD?)ACl%CG zDz?*^L{y|$tnsP`g+f9tt%8>1E$&K95u}AIBEdzVSd?zuSi8uk74c2LMWO#dT%E;* z!}okY_xt^Ou6uE=J2CBlIzFGsBc|Sb^@N_BIKHz&D&-?o9v(9lBl)-)A6H{U%d(_g z5~0gVSIA*jp*x}dyJUxbZMZ!;gE}$ZyX7G_zvL~T=-bX86R^-oW<5$^rWTyGAB_## zmexiKm6S3m2sI4a*SwKUoE&7Nz@+V6J7x!t+=vF+wt6Up(l0^QUfVvEP+C%;Bze#l zGgEEagi=z)1m((b`0WdSC_3AB4cp1?F2v#O$MNYT&&O)xM|3GD!tAOS*n3;+t(u0$ za1jb38D!SHvd!nJn`sZ>1r`>lu(P?#o2$u}KdF*K8~c)IHuw6b*pRFz2=spG*P8Cb z;w@ZH3C1Ybnukg;V}Fhg*y+CXgBWb_u;9kt`Mt{?Ei_V^6D_1tlnTM1{4OflXP>IK zle|$z7_CD}gwnjZF`DjM!ARKBJ28D`C!efkILS++2o;7&t~li|e+#{6{~V~NLTVI^ zx0{$41=N9u?CcK-yCe6?{b>5_@?i4g!HMYZ?)QTK<82Fr$9=TTU0L$#B@{+?zBz%? zvAt3oA}Cp(Fn`+{j+U=H|FHe1qYI`#2x@Sf<6l!!X(JR5wP11HN~>NG7Q0c(eRw0- zkD@(4$z4do%-3EPdQRe-aQ;zr5(((thezD7kIudk$L%V{S=avu9zw05(IF?4Hz$-X zqLKHnpF-~XDesBW{Y>)k)kKiCXCA4-`6Vy2Vb#0Ur~Tas-`jzj^>r1woBjUGc6h1i zuNzi_7moQWZIV&N4dq1e_^aEwl>;!k%}=|w9=sp9b4UFPIiPz{7M@uSmZ4EZjWms` zCgk)#Jk4~#Uw6H9)Ai?&8_nQO&s9J7MaOzi#(>=D_kIzGSclikFPkdl%H z3^6exqC(Mzu@1dy6YPcF*pC-FR4}%fdLgC63$Lu2f;WaB)*Gc*>+A*!h5iFp24>(e zGv_?dZ_ZqpY5#ksJu!)n_Mb`Q0T~<_#FdfZk*8R%WLoM9A(&HMuESGsUl7Gz(>9_Gc%W zFpeUwg;0W0JM%N#pCqKfaRFPf4OY#@zN>LD-2(0E&p>FtSv#4ESfsF)N^zo@U2_QR zG}G(G(^_ywxS}{Blti_7m))@oW#T6{%mwD*uO9(yIr)*6L<(cAlpu;=DY)4*y3;JR zOxQ;cfzH~Q`%ErZU5T@p6{sk1X^!VUZLB6=`KXFtzE?EG$8$rC_UtJbLXIt&MQ_-l z*Fbj-i=F-@7*8=JG}9i9q<+K2-(cO&<`w#-yYRUmLe9*!_d-)HOr|vvln|{jRy-oM z=cGsU%=)nm$zy>jjTot~-uK&xE(Lbeub>T3)06Ep^KU=cjPsl_%`vG};7eI1y;K}e z3Cbf%r52b8ZppW(WQw~E+{vrMT-lwpM+O?I=J$sh<6BQpH2fdL#{IijBJfyzaNl^h z?K~fZ@rut&pk_Sd-ZUj5NwGB72TCs6k2*mdp1HNE?!5hB4;r&Svf!t*q*M?ogru4< zUF*rc@t<>VZ3Nu*`~yRGVK^v(G?ft-(!UblkJ|V34Y<#3Md0voJ+B@509>_KM!}mI zr9JQ4>6s-d=-6?vupAo{P-lAw+FU^i6%mo z-!2sAGBO8eci7YIAmv^_U<+_vtAbYOoff_i@N>ZfD#%82~D>7Ki`< delta 69 zcmX@Gis`^ArVSR1M!BWA1}UY*rTWH6X2zCgmMMmY1|~)($th+j7G?%Om||*fk(iWf XV3M4iWMXM*kLm0@rVR#+2IggXr51&mMfzz5X^E+Zrb)?`X_ltODV8ZI=E(*YrirG8#-;`) T7K!E-X$DC~X`2%m-}V9ktK1Z^ delta 63 zcmX>*kLm0@rVR#+2DzoV1}UY*rTWH6X2zCgmMMmY1|~)($th+j7G?%Om||*fk(iWf RV3M4iWMXN)If3zQF94Dy6dC{k diff --git a/humble/.doctrees/doc/project_ideas.doctree b/humble/.doctrees/doc/project_ideas.doctree index 04f1a2de912951ac6096a8092601ee53668cce0a..d635c6b5fa95d6ce7463d0ff88858ca683e3a8ac 100644 GIT binary patch delta 63 zcmZ4digEEP#tk}*2IggXr51&mMfzz5X^E+Zrb)?`X_ltODV8ZI=E(*YrirG8#-;`) T7K!E-X$DC~X`5phj~4>~xy=-- delta 63 zcmZ4digEEP#tk}*2DzoV1}UY*rTWH6X2zCgmMMmY1|~)($th+j7G?%Om||*fk(iWf RV3M4iWMXN)Ifn6gF#wl9-E delta 63 zcmex$jPcho#tjyX2DzoV1}UY*rTWH6X2zCgmMMmY1|~)($th+j7G?%Om||*fk(iWf RV3M4iWMXN)IfGFs2>`k@6U+br diff --git a/humble/.doctrees/doc/ros2_control/controller_manager/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_control/controller_manager/doc/userdoc.doctree index 18361f3525c780f7b515367d8eb54ad932bc05c9..5649d3160f395d12370a613b2cdff0eb71de76f8 100644 GIT binary patch delta 63 zcmdn>nsL`_#tm+a2IggXr51&mMfzz5X^E+Zrb)?`X_ltODV8ZI=E(*YrirG8#-;`) S7K!E-X$DC~X`9O!T}lATW)zJ8 delta 63 zcmdn>nsL`_#tm+a2DzoV1}UY*rTWH6X2zCgmMMmY1|~)($th+j7G?%Om||*fk(iWf RV3M4iWMXN)xs1`J1OTwF6ZQZA diff --git a/humble/.doctrees/doc/ros2_control/doc/index.doctree b/humble/.doctrees/doc/ros2_control/doc/index.doctree index 8ca229ae9e41c232672f691f801ca19a6cbdee66..c204d4f67b0b7955230c6864e79575c1d349a56f 100644 GIT binary patch delta 61 zcmaE2_{4C79ixGHSzf6{VP=tjnn7A(s-bC8vSpg3sd0*BN{V^1frV+JsiCo{fr&+; QxkZ{ml2O{`JjOC{0D&13FaQ7m delta 61 zcmaE2_{4C79iu^RX|6#^X>qB(agv#_rI}@lp`n3^kx6ojS&D_30T8B`np-3$r5czd PCnuR$ns3fyEE5L+XJQhW diff --git a/humble/.doctrees/doc/ros2_control/hardware_interface/doc/hardware_components_userdoc.doctree b/humble/.doctrees/doc/ros2_control/hardware_interface/doc/hardware_components_userdoc.doctree index 2bf1c8aea50052a3c078324617cc426f4e10ae0d..bd19765b79d21cf0db398f6acb3e747f9addcd6b 100644 GIT binary patch delta 69 zcmdn9f^p9Z#tj~fM&@OCr51&mMfzz5X^E+Zrb)?`X_ltODV8ZI=E(*YrirG8#-;`) Z7K!E-X$DC~X@>ff{aKwi?`5nH0stsu75M-F delta 69 zcmdn9f^p9Z#tj~fM!BWA1}UY*rTWH6X2zCgmMMmY1|~)($th+j7G?%Om||*fk(iWf XV3M4iWMXMnBC#tlJ?M&@OCr51&mMfzz5X^E+Zrb)?`X_ltODV8ZI=E(*YrirG8#-;`) Z7K!E-X$DC~X@>ffPjY!|KEqg?0RTsf7XAPL delta 69 zcmdmgg>nBC#tlJ?M!BWA1}UY*rTWH6X2zCgmMMmY1|~)($th+j7G?%Om||*fk(iWf XV3M4iWMXMKYiAkvj RCdtW3CYI)#>liuz0|04m6CwZr diff --git a/humble/.doctrees/doc/ros2_control/ros2controlcli/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_control/ros2controlcli/doc/userdoc.doctree index 38634ca8642535ddf2628988b115a9ac03363004..b36db74cfc558d8798140c17164a91769cb45ae2 100644 GIT binary patch delta 63 zcmbPqpK;QC#tn9i2IggXr51&mMfzz5X^E+Zrb)?`X_ltODV8ZI=E(*YrirG8#-;`) S7K!E-X$DC~X`AyHRq_C@TodmA delta 63 zcmbPqpK;QC#tn9i2DzoV1}UY*rTWH6X2zCgmMMmY1|~)($th+j7G?%Om||*fk(iWf RV3M4iWMXN)Ige2#4*->=6IcKM diff --git a/humble/.doctrees/doc/ros2_control_demos/doc/index.doctree b/humble/.doctrees/doc/ros2_control_demos/doc/index.doctree index f339fb9941d7e90a4ca64a0fc778d65a62d20467..793544a3df0c621611fe4e2a5a1e0f901fb5da0b 100644 GIT binary patch delta 73 zcmeBcW$tTb-eAUPWL}n6YEhV3q@QMxmY8a2nv`srW@&1iVwsX+o@`)YnrLchY-(U) dk!Ws_W{_l*W~e{;!6xy^2R3kS?qFm)2moRg7$^V$ delta 73 zcmeBcW$tTb-eAUPlv|o>kWyM)s&AZRW^8F@nPO;YU}9vFoMM(@VP*h?DW>KYiAkvj bCdtW3CYI)g`ja1Q5}$lv1Lx)rMz(_hLUXh2h&thO+mRD*~m|3KsW{{ScYG|62Y?)?hYMf%3l4720U}2hQYG`a~U}BMI QZjok?WR$jfKZ_R!0ACssxc~qF delta 61 zcmeB_>Xh2h&ti~Unro0!T3o7coMdKfX=a&XXlP(!WRjd>mSSOM0E8)~<`#)bsRky= P$w?-b=9~AkcyRy#MPm{o diff --git a/humble/.doctrees/doc/ros2_control_demos/example_1/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_control_demos/example_1/doc/userdoc.doctree index 4cdf9fa0e9766a4fa93ebfbca7240e80f6ab3615..aec8912f5d21163586c651ed03f09b7d92c88e50 100644 GIT binary patch delta 76 zcmeBfWbJNb-4MlSWL}n6YEhV3q@QMxmY8a2nv`srW@&1iVwsX+o@`)YnrLchY-(U) gk!Ws_W{_l*W~e`jUwpExfN1j$#_c;8886!b0GAsVLI3~& delta 76 zcmeBfWbJNb-4MlSlv|o>kWyM)s&AZRW^8F@nPO;YU}9vFoMM(@VP*h?DW>KYiAkvj eCdtW3CYI)g`jhy@C(8ffCvb^xUdmXp7XV8$7UKW_ delta 69 zcmbRHk7@2drVTNSM!BWA1}UY*rTWH6X2zCgmMMmY1|~)($th+j7G?%Om||*fk(iWf XV3M4iWMXMQ5Hr7oS|qC$@PvW5^@`N!u0$ diff --git a/humble/.doctrees/doc/ros2_control_demos/example_2/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_control_demos/example_2/doc/userdoc.doctree index 613f37a903fda02304716cc27a2edc33ac1d63a9..717968baf5cff416a2124cf81b3ce87bbacbbc3d 100644 GIT binary patch delta 73 zcmeyohUxPfrVUYyM&@OCr51&mMfzz5X^E+Zrb)?`X_ltODV8ZI=E(*YrirG8#-;`) d7K!E-X$DC~X@>ff9i>z!drafmyq9s?6ac8}7-9eb delta 73 zcmeyohUxPfrVUYyM!BWA1}UY*rTWH6X2zCgmMMmY1|~)($th+j7G?%Om||*fk(iWf cV3M4iWMXMff1^L7$Z{-!;yo2$}7676q7*YTL delta 73 zcmZ4UmTApfrVUYyM!BWA1}UY*rTWH6X2zCgmMMmY1|~)($th+j7G?%Om||*fk(iWf cV3M4iWMXMff75K#`_wtEu-of~2A^>p77ghiO delta 73 zcmbQWoN3l_rVUYyM!BWA1}UY*rTWH6X2zCgmMMmY1|~)($th+j7G?%Om||*fk(iWf cV3M4iWMXMepXlZtjE^P)08uO!zW@LL diff --git a/humble/.doctrees/doc/ros2_control_demos/example_5/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_control_demos/example_5/doc/userdoc.doctree index a0789fa705c2967b09bd39202b5ab51f9a7bb33a..097307fb8879401d4cada418e8cb3b58782010b2 100644 GIT binary patch delta 73 zcmdmSfN948rVUYyM&@OCr51&mMfzz5X^E+Zrb)?`X_ltODV8ZI=E(*YrirG8#-;`) d7K!E-X$DC~X@>ffC&s8w=3T(Ec`sx2JOG!H7(@U7 delta 73 zcmdmSfN948rVUYyM!BWA1}UY*rTWH6X2zCgmMMmY1|~)($th+j7G?%Om||*fk(iWf cV3M4iWMXMQ4^j5uYr;E4q0Hff?>VV9Z)DuQk&)4SJ^;8;7=Qo( delta 73 zcmaEHknP1mwhd8?M!BWA1}UY*rTWH6X2zCgmMMmY1|~)($th+j7G?%Om||*fk(iWf cV3M4iWMXMPx# diff --git a/humble/.doctrees/doc/ros2_control_demos/example_8/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_control_demos/example_8/doc/userdoc.doctree index f9a5c906cd318ff511ee022a3b7534b92d339b06..1c9442517303acb1733e457e79ed410c78352717 100644 GIT binary patch delta 73 zcmX^2mGRtH#tl)7M&@OCr51&mMfzz5X^E+Zrb)?`X_ltODV8ZI=E(*YrirG8#-;`) d7K!E-X$DC~X@>ff5Aujlo?0cfc`u`2B>=%!7>fV^ delta 73 zcmX^2mGRtH#tl)7M!BWA1}UY*rTWH6X2zCgmMMmY1|~)($th+j7G?%Om||*fk(iWf cV3M4iWMXMeK`N@+%Mu<#4$Irca9pmX<0Q)!^WdHyG delta 76 zcmex4kLl+;rVUYyrn#lL1}UY*rTWH6X2zCgmMMmY1|~)($th+j7G?%Om||*fk(iWf fV3M4iWMXMmSSOM0E8)~<`#)bsRky= Z$w?-b=7#!{FY=2{juw{Ne2~#i8vq`56^{S_ diff --git a/humble/.doctrees/doc/ros2_controllers/admittance_controller/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_controllers/admittance_controller/doc/userdoc.doctree index 119d6c3dfbcaf02368211b26e8d49472119e1315..5603735f4960b646715298d254427dbd581a1491 100644 GIT binary patch delta 63 zcmX>)gYoDL#tlA<2IggXr51&mMfzz5X^E+Zrb)?`X_ltODV8ZI=E(*YrirG8#-;`) T7K!E-X$DC~X`5>pPkI3Ws=O3r delta 63 zcmX>)gYoDL#tlA<2DzoV1}UY*rTWH6X2zCgmMMmY1|~)($th+j7G?%Om||*fk(iWf RV3M4iWMXN)xrXti7XXn36U_hs diff --git a/humble/.doctrees/doc/ros2_controllers/bicycle_steering_controller/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_controllers/bicycle_steering_controller/doc/userdoc.doctree index f587cddab536a74e1bbca0495b47c55d3d2a0f47..9a076763954311c07ba737284250f053d4f4b29b 100644 GIT binary patch delta 71 zcmdnzyU%w+1f!98Szf6{VP=tjnn7A(s-bC8vSpg3sd0*BN{V^1frV+JsiCo{fr&+; bxkZ{ml2MwW{$xQx(a94;WH#?+WL5qB(agv#_rI}@lp`n3^kx6ojS&D_30T8B`np-3$r5czd ZCnuR$nj7j*78DenJV8We^KM3FRRAoN6$StR diff --git a/humble/.doctrees/doc/ros2_controllers/diff_drive_controller/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_controllers/diff_drive_controller/doc/userdoc.doctree index c811fe94e9afab0f42c16316b64d884ecd043509..be5c13a5ca98abf5eb5563e541ed7b70bc560562 100644 GIT binary patch delta 63 zcmey>&-kmKaf1(|fq7Y8sYPLCk$##%T4Ji9X;QLfnx(06ie*ZQd9s0pX`-p2v8jQH SMWVSynn99L+U6R@IyV5nSQKpl delta 63 zcmey>&-kmKaf1(|L2hZTK}uT@`8o delta 67 zcmcbVaw%nl2BT4KX|6#^X>qB(agv#_rI}@lp`n3^kx6ojS&D_30T8B`np-3$r5czd VCnuR$nj7j*F60s2oX_~!008F=6w?3z diff --git a/humble/.doctrees/doc/ros2_controllers/doc/writing_new_controller.doctree b/humble/.doctrees/doc/ros2_controllers/doc/writing_new_controller.doctree index aafefc0533a1536f63d963e3e231e9442ddc88e0..1cc8855bdf8118e1c69062c672f5964d9a8de378 100644 GIT binary patch delta 63 zcmZ2=jd|5I<_!*v2IggXr51&mMfzz5X^E+Zrb)?`X_ltODV8ZI=E(*YrirG8#-;`) T7K!E-X$DC~X`2fecfAAvxv&)` delta 63 zcmZ2=jd|5I<_!*v2DzoV1}UY*rTWH6X2zCgmMMmY1|~)($th+j7G?%Om||*fk(iWf RV3M4iWMXN)xqxxkO8}qw6psJ^ diff --git a/humble/.doctrees/doc/ros2_controllers/effort_controllers/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_controllers/effort_controllers/doc/userdoc.doctree index d9f5da0ae063de8ae258909993d14b9d0d9a5512..5339eff5c41bad069837a047af8240e64ac40619 100644 GIT binary patch delta 61 zcmbQ|FwbFw8>4}FSzf6{VP=tjnn7A(s-bC8vSpg3sd0*BN{V^1frV+JsiCo{fr&+; QxkZ{ml2O{`GR75h0BL>`3jhEB delta 61 zcmbQ|FwbFw8>2yPX|6#^X>qB(agv#_rI}@lp`n3^kx6ojS&D_30T8B`np-3$r5czd PCnuR$nr|*+TpSzf6{VP=tjnn7A(s-bC8vSpg3sd0*BN{V^1frV+JsiCo{fr&+; QxkZ{ml2O{`35<>k0EiS5MgRZ+ delta 61 zcmccUe9?JB0;550X|6#^X>qB(agv#_rI}@lp`n3^kx6ojS&D_30T8B`np-3$r5czd PCnuR$ns1)K=%@eyZe0?u diff --git a/humble/.doctrees/doc/ros2_controllers/forward_command_controller/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_controllers/forward_command_controller/doc/userdoc.doctree index 39b09eb2a5cfa387238ccf0a7c52f53cb39f6591..9288ab6432598b76660da4629627403f505b2400 100644 GIT binary patch delta 67 zcmX?^ax!H@7^9JSSzf6{VP=tjnn7A(s-bC8vSpg3sd0*BN{V^1frV+JsiCo{fr&+; XxkZ{ml2MwW{$xf)gUve_CmH|%2@(}O delta 67 zcmX?^ax!H@7^6{cX|6#^X>qB(agv#_rI}@lp`n3^kx6ojS&D_30T8B`np-3$r5czd VCnuR$nj7j*W>hrTyn}I~0RZd56s7mSSOM0E8)~<`#)bsRky= O$w?-b=9?=RxzzzmJQ2_U diff --git a/humble/.doctrees/doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc.doctree index 7b96be0ed33a72eee243c2020126845fb27b4b30..48990fb27a552705e83245c711515905166a87b5 100644 GIT binary patch delta 61 zcmZonZA{(Z$7o<)mRD*~m|3KsW{{ScYG|62Y?)?hYMf%3l4720U}2hQYG`a~U}BMI QZjok?WR$kKj*;0A0BxNTnE(I) delta 61 zcmZonZA{(Z$7qmSnro0!T3o7coMdKfX=a&XXlP(!WRjd>mSSOM0E8)~<`#)bsRky= O$w?-b=9}vnnGFF`<`Mz` diff --git a/humble/.doctrees/doc/ros2_controllers/joint_state_broadcaster/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_controllers/joint_state_broadcaster/doc/userdoc.doctree index 22b040625c56c99ad65eaf95653eb27bbdb3cec8..572a421676b69393064243c47d17a10ee8361966 100644 GIT binary patch delta 63 zcmdnm%eb|daYF#3fq7Y8sYPLCk$##%T4Ji9X;QLfnx(06ie*ZQd9s0pX`-p2v8jQH SMWVSynn99L+U5pEQ&#|;oD-b@ delta 63 zcmdnm%eb|daYF#3L2hZTK}uff<6G@Fzh%5W1pqff9eHdvA7f-+1prM;7G?kd delta 69 zcmX?mo$2g#rVSB{M!BWA1}UY*rTWH6X2zCgmMMmY1|~)($th+j7G?%Om||*fk(iWf XV3M4iWMXMqB(agv#_rI}@lp`n3^kx6ojS&D_30T8B`np-3$r5czd PCnuR$ns2URd?g0}atjkm diff --git a/humble/.doctrees/doc/ros2_controllers/range_sensor_broadcaster/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_controllers/range_sensor_broadcaster/doc/userdoc.doctree index 8ed69f4b1e7b72f8b7e5fc1c105d452553ce79b0..a065ce2c220056da5cec0c5ce58dd04644153971 100644 GIT binary patch delta 61 zcmbR3JllCg5Tk*4Szf6{VP=tjnn7A(s-bC8vSpg3sd0*BN{V^1frV+JsiCo{fr&+; QxkZ{ml2O{`CPqmG0BbA~mH+?% delta 61 zcmbR3JllCg5TikEX|6#^X>qB(agv#_rI}@lp`n3^kx6ojS&D_30T8B`np-3$r5czd PCnuR$ns07mlvDr!QFRgj diff --git a/humble/.doctrees/doc/ros2_controllers/steering_controllers_library/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_controllers/steering_controllers_library/doc/userdoc.doctree index 48328014726efd54816b091a52d9a3be2138373e..22691eed0894fd22a7d53c6c96d414c5750435c2 100644 GIT binary patch delta 69 zcmeygk?GS$rVUYyM&@OCr51&mMfzz5X^E+Zrb)?`X_ltODV8ZI=E(*YrirG8#-;`) Z7K!E-X$DC~X@>ff`-E*bpJddW4ggSS7R>+v delta 69 zcmeygk?GS$rVUYyM!BWA1}UY*rTWH6X2zCgmMMmY1|~)($th+j7G?%Om||*fk(iWf XV3M4iWMXMqB(agv#_rI}@lp`n3^kx6ojS&D_30T8B`np-3$r5czd PCnuR$ns2UPTq*qB(agv#_rI}@lp`n3^kx6ojS&D_30T8B`np-3$r5czd ZCnuR$nj7j*?&lYs{F7Z{^GQZIbpTH!7I6Ro diff --git a/humble/.doctrees/doc/ros2_controllers/velocity_controllers/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_controllers/velocity_controllers/doc/userdoc.doctree index d98f626d4bee21655a508ecb3c875e3f3995fac7..2a2a10761b4e5d477d513d3017963202e43df6c5 100644 GIT binary patch delta 61 zcmaFj@Wf$*7o&lBSzf6{VP=tjnn7A(s-bC8vSpg3sd0*BN{V^1frV+JsiCo{fr&+; QxkZ{ml2O{`D#llG0E@yC;Q#;t delta 61 zcmaFj@Wf$*7o$OLX|6#^X>qB(agv#_rI}@lp`n3^kx6ojS&D_30T8B`np-3$r5czd PCnuR$ns2URd?g0}atjkm diff --git a/humble/.doctrees/doc/simulators/simulators.doctree b/humble/.doctrees/doc/simulators/simulators.doctree index 465964568ec31bebf02a0f1da1641f00f8c43900..781000818e58f4aa24d22304defabb5ac52c22d1 100644 GIT binary patch delta 61 zcmeA*=r!1&#%N$(mRD*~m|3KsW{{ScYG|62Y?)?hYMf%3l4720U}2hQYG`a~U}BMI QZjok?WR$i!jB&dd08+dXkN^Mx delta 61 zcmeA*=r!1&#%PdRnro0!T3o7coMdKfX=a&XXlP(!WRjd>mSSOM0E8)~<`#)bsRky= P$w?-b=9|M9w~GM)IRz2< diff --git a/humble/.doctrees/doc/supported_robots/supported_robots.doctree b/humble/.doctrees/doc/supported_robots/supported_robots.doctree index 40d7b944a9f9b6fd9cdcf25617452f3c695aa290..141c2b287a66d59fe81976fe3834a8a14e51b1a5 100644 GIT binary patch delta 63 zcmdnDka6Ea#trd|2IggXr51&mMfzz5X^E+Zrb)?`X_ltODV8ZI=E(*YrirG8#-;`) S7K!E-X$DC~X`A~Q_5A^^eLm2{UnD4E9co?icK0lY*g~_L51a|QF-RP%v?)CR(48WNY=54S@z9pTCKWHIr-VcGKc1lDDP7qB@eIdC!6d0$Y}{W`KHlV-de{)&i8kd ze~3txt&Mz97ABAAUtjh}jhExvM9RNsqfShayd~XLz7=SeKlP87H%9u-7lWbo%@ALC z(&BJ=Vxp_Oqk%76O!9Gqr|B*(a=l=8d1co`c|{`!c~S#U*<*RQ{JhvKdxs`tZBIG8 zyT4o^Yvu6`z2%ObjPfM0mOM2yMgFR6iaaSWQI3yKl9#ojGe^nC!<))^18T!+m(cq1 zqB?%^%DKUE$9}HzL6d{rF*Hsd6CN&q7hG2^j`Nfc86D&oS>bYzacm8s}zOHm0sQ4l>P)_xCl`ph#koz==lH&}miqwcn2(M$t|H=pMC{6jd zanH`qOtK^;XC=kuVF+5xS!Q!$R(x!NB`?uzPRL2fP0lh~lH;?=2Y&P)qULXE>#9_j zwGlm2)PVV$YE^1sunpWtaboV}S0y&86BFbpk6BWnT+zh!UqeBNfx`(>%>P&f=zCKD zOL7K=)&B-jP)lCduDRTxZUZ$EEOCDq3ID~p$?~5g;csfYRhim^=pGH!K=_+luUE2E z21047EM&yV`qnx&B}B)hvMHcfzi>FT$4@7p@$;Aa&#TFXxL12$Ip)pU@_Z>tKGxJ1 z4&4k1mQS>DmD~2NEBERb!>&K9DZgx{mv@+bATmhbM!w$NBEQu<{NJxL+jJx}gZm97 z3v~3+d&#@IN5F|}Nhd4W{&;B{<%#JH}{$sH>f)b^LRrW$1T zbOX%ogrm1Uui>jn_e#UAa+kP7bt+xhI8D8P%*lUu0c9s!vNGdy&GFfZ=A8J1*tk4P zwmCi_F*!Egl8|T4&dSNm&BOoy^9A%bwY{oTr)xoxm-?p3YtlSlT}ppb|KF<9oLZer zX>pzZa2eTkHM7C~?|vC2V35)p^NNO#^xntW#wkYo3pdyb28&H6H*cq z6H?4^|M}Ybo7%c6)#V0ny!q;q`kQK1YWp+0)#zj`0@&K)(X)L~?PPUc(X zrEclD+2L`P9Tx`73j@QaUIw~7$`_i&$aQ8$$?3EBI^lRY-nEy;$iw@$lUKI!;P=Xg z>Hg}S`Kz*KSSg$@fsTdO;j4yLr6OBBp&7m?n>O2@7B>cYQ-%efpYU;IA}+Npc-uIi z5hAZ@mWm727HnlhD;ZjmY%w;#rIfFHJUc*M*c_pr# z#&@UnNwj=&MzCCnDb$NimK;rfgZ{sBv?UU&=jtJdgSmDpUPF8pRGN=l2#k}WNZr?P(eTpSkk3B@}4EGf>Ay^J6t}r zz)|yuJ>37=Cti3eUtDN}{GYtM&YaFxNS*_E(^gS_h9 zR*vrEkNUDD8HeG%(ZRub13Mrej`E{Xkr<}6dN3uJmoITGJL{jUGd>g`fpG68Rjh$Z z@}>HI^Tj|pe6gebOEM$``(c=c%I4*cj*rMS>GH{tG#Nc_e+5~XG#~;WNn=dxM0VD@ z_VTc00T?)8RKwnxOs;H3%jXDI=OWb^ZWkH?1rwzZf`kY1p(SmETX?LGi(VJG!%|24 z3v_DigIusQTF}YMm!=6C`NGn4Ip$pldD}8ten;6H{+!O3so(_R@xJJ?-q9{bI!E|t=LkJxxKCPidQCwQX9E$KL5Fbtl3PY=bD2hL8 z1W~t%iX`d}qKrg6B}yd9l@2C4{6&~V)ET0ph`K~nEuwA`Rhy{mMAaecJW@s0xPE<3Z?C6kA2Z|7DbB7v!HLMgL))oXh(V-h_T~3k7q)Pof2(OKIbTYO0*&V6PS!bs6@M~FXt$XO0@6K=NyGn ziS|U@iA>x>hb7v#HPe}lVzESPO`AyDJFqddQZd=M! zDWFTVXGYIv90hfW_N}>`qrfiFR-ES?#de8y=L^nJe3xhs`_5tY&M{efYtGR;SfXuO z#<)?XZaKLHx$@T^rfKOKm`lm&wQ(BTeZ1aUU-|NyMEn;b!5;$EGD{CuOg(3_p);0axje1EGS_-)dK+m)C0 zWR)9l4wT7Mum7-xmR*7BQ7+r1mpgvsXisg2RW704kk(hKiLi@9VSZNrNI8608~CKJWU^_x zAmE74L!Om-zVfs^DnquqVl%H&JDln2qi!~mCufA=($P`ws03*#oDr4Hdq>NOdpgJ$ zcXvY*8NwU#rQL1q3o=KHl)u?C0HH?mu)R(&Dc;~9C+ta;zuoO6H`v!jQ#x2axu++@ zbT)Xxys?tM+;Ml3d`NMVKiu0|p0h86e0hI=Ji4%Ae}Zs{9dEMZb#^>YN4eL51da79 z1FqsRUM@S(PI$88{DEY_@{bd(7}dD^jq=zr^k6@Gq4kbqpN?^a!ZfEKjl~R|8fnKv z|E)r2nDjQTD$6cRbhRW{EU^jkW=l#e2rY!ZPI2ZpV$Jnq6Tt9XV}&gX?auBPbj()+ znhM7tdGYZ{_DRVJ7Faddu^Zee)QU)kk(E+ z4lceUoYy5JC8xwE#U&=k$KsXQWHF9Z#Th%j(s8-AwV>>LY?shTNPv?+3qi1@J64*M zV1E(5|IVSea;UpwD?vH&rI238PaRWV(@StmOi50RGh5=Q1j}$uuNes&?UjU$4pE(| zj!-?A-rY$L?>~1K1V?7u`Tn2X4+Z;S(bzq!BkVZ->2^Wc6s=upgv3VLAO-!_UT{x{ zwIs!*SmMm_aTxV5yt#dQrJ_LSDJT;T*hw0tppN7C+R(|W2?BKFI5;~)`@OpbXQ9M6 zi*1mg$#}=!%E#Ru-}R?yR4_OOL)m)A6X3o{I}yJ7&Y_pme!2F8u|l$P@}^_YwEy7m zBIfG(Wa75r#yk(ZUWM>Y`8I+Sb65sbvD7QvA8FjB7Onl&4_RsyC`n&7)xv(S4KL*04y3MRcOE9x&^qWyJ)lI3Gsxum3 z(*<2HY}>1=3CmaO+@OU%&`ZhwK=-`{JZ_<+)knJ4%96D@ogIAllP*~KY=h3-4r)Hq z1q%{*Y|=@J?-tz-4Scs*XH@QN(}if^yYErYv`2T-4(2{Uy*6O@S{JAEKcL%Z2ObAd zm~>co$`00UK(f~7x-)j*^8u3KU+d1pwc z!j(op=rG!gub}m|a;NpJ;Lwjcd!@l?U7;49AH`ZTstz6_kZv5r!7Pv>C=E_=}2h6g&U z9W=YfeNz(-JPgg-`KnF z8H#C1Zf<*_`}%5Fs?2XXz{L(e(aOCM?sKLKcX$+TeCqz*KaawR&)j>vYVO!8XC3vK zc0@FG(SPp*)9VGtK!-J94$#6|zvds?1#^-|ZAfb<1woq%eJsp5;gYVL_R%l3gM&?j zJ(X$x`q3KUp7K|qzI$&t`FUgvc&v9V+zE%GI&@2QJ`oJknFS zHdX(&mXn3E^nn<&gf5$-ukhmJ@>Tj1j+`u7tDn(A_?0^|;hz5e>a~Ni{C)~{x|=KX zJ>uu7Y9#Wm3LJ$wVw&?|PgW zC)`$}!5KoWo{OpzWt8QH10&pHl@^0NZ;poF26@InzssJB|8XN>-c8>CdNOs!T)BhN z@rq}!v%(+B#)Do4ceu17B1E})%xjdL=BYhop7biMzI}V}_{PVe^!m>0lpQ`8@~f=> zDX)*KWzwKv9)GbH8k*sH(@Sx^={+S!_zO<%_2~fjR_UFg);^!^(5Qn?!rJM z2kSced}Is zeK`GY&1&`m=5&&5omji5=1x7d4i-F>q3ddE{ebZ}=|w$0t-UOk3%N>&h=r ze7z3|=U+40aIar=J214njt{bRpWj10G#C@+spKE=O9$cpYbVfT`&ah__q-e z)s+Ymjx8?X6i@63m?)PzqrG2GHMcf>4vI(Rv4hmMhDguVOFZew$SXuHS;7tuY zx)%_v=!L+qox#or(T6U9cnuc42nZG;JqotX)<-CJokM?i5?=D&KJp5!#&U()$=~WaO!o=h)ao7tt@bX3vcWWE=Sv5~I zX|b7y!^iEy`Wl40yyY4BVSB4-u=0I1vkFBeVV#vn1z}6t?77Fk^$Ne$7OwO&#=!M{;U(3xiQfi<6XzI$q2hp)tSDU!>zp8bp&?jk1osa} zvC5X-hB{7=-365&{d9%TU8{T=S$Mws?+Vx)$Du#|j2m1qMHSb>XV?TWEMD zz{#bkF#26XFMH_uE-K(Iqosy0MYqh*!I8}LU2O<+(&%i_wQ+-?n)4>^lc>uF%xRP1 z6IVf}9NBHC840y!;>>yfjA3;cCqH;*=n;t0mo+1FjvNXJj!5$6WNu7^gB>Tw#YVJn z;^cSrBbwV`9sksb?{O_j7XNA)@reUM2irx|4Z!ktUc?WMSRNi4QOi@K;oVvIMWh3S z7DcS9=HT|97mj;KY_Z*cQpDF<_{9-dhV^GgjCJAUr}HC1b;9pFj_|Q^S2a(?_E#} zz0%`c#6UYDKD`)moDt<$Bi>kzTUyjf#{q(8MponDoZX=KhefWhtpIuzN4E2TsfF%r z?d||)7e(%=W_M_J`iW&m?z+S!kuM!Jm+h6L_aYCu5bH$)ZFB-?fgI|%lan~3PTQ3=#Lg%~4I$k!8hEsQtD!Xj#CH%op@$#~}+K5;S<}|8(xs;%0)b2#oqV?$6CA)X~?;a zsN-))ZNG+xkAK5jXSw`0L9OodyM|(Ep|}3i2-@yY!~9C#<5Tp_if|?UN8MXno5V4ran8 z+%jehSGdK8w~Ph2+F;hvx6v>uD8v&|8u|pniQ9N~FLL4I+r}JtK!)@07zYRsxcbdI z#(}~uPNS3i((Mnvy=&CsU60vAFdt6SSYd02;I0OwZr?NJLepzV77Ah{-1{9{aQPt$JmN$Hy!R0Gz#av=hq(Ab@E^u6V4VZ9n|^nVgs4Zx z77IQ{uKqi2p70)WV0?~MkCljVkop*_PIX1;*7jmJ942b&R;*Po%F+zka8e;MC|{aU1s{p95j=l{YsZYRA9&&0+s{Wx_+V?5l?+FVW7?-_Z_MOoq!ZQKhXD z+A#;4(iTh;)8I1=a^rIR(-#zBPh$myR{w?i-_|m{0XK+^B6gD*tG}Z`HiX=|KHby_ zlI@UvLcLsKCk}%SbehJUO?9BVJqoTrLUymcm<=K1%`^vb5d1`^KI(v2=u?zBe-`Qw zY2$+(p}-MqWWGS`&8a36JR$ZA8lvduA%R?FycV&Ee;OkfmYJf#%?Y{7f1pOblQ?#fbJ&i=q z!4Z*AmS=K=wC zY)cf|+S!9BwzV^lDB6~19nrT4Nw&3fHi2ww=VGGR*3LCVv8|muiDFwj4->_2)=n!?Y-{HjqS)5XcZgzJJLeI_9#WSRMO){r8;D|CJ9iUBJLasP6Lq(U z$nS_`TRSfh#kO|dCW>wCd_ol4+UeLIDcVb9^(KmK?F=W1ZS9OEif!$zPZZnQ*^(%> zwet<4*w)TWqS(&PVf_W%2#fcsQ@m|Woc(Dm5;dvi1R!L73n=;-vc5RNCd$tdZN1%+yp6mU+`B4hc{W45TS>MP8`{X) z9mGL4@`H{v++;=x=qzU1$kHxi1t+1bw&Po$5T6emMGi>DaH%0uy);aJijDtk4Dwf&EH|K~2 zHu9Ib;+r-yeI7Xib$yg8^TpXVbV@lzE3>d_A)SVif$xg>0(9MpK4FUt|HT;o6`xg( z{X2`rnga1&%7!IkZ${RHmv5Sal%!=eQcN^!xwza$HdrZsVk7nMi7#zr`1|BO(uG5Z z@cQ2J0YwO_`}{+?5*aylErt8LzhPS{S2*pV;2Mt4@C{-R`sEsq&$5jaJB-wCri+e9 zIC#k90BF@87H$!D(OcN|Tg4p$_+_9mTpA66zcSFy^X+s=Bk2hVJH;FL{xs|(u?t6( zsk_8AHnPEP(Mh{{Gb3@Az{g|;Q7`4IgW?-D zvfg2Fpa6%1unn(PU=g39hhKzO+MDw!g&y)=%I?p^L{9GdLd>;+W4;uh3eb3+DUnZ7 zxNIwgp!L|9(cg%X0+ASq(@ZhS&qu_z0vvn~&xVUR-1~A2Pqbt;Y8t;40|g>Il@7;g zre)-@6BMXK!rAXJ&hXL;RwjKXX4vEiVrVec-am?kHuAzLifM)pI4ut2Bos6g?UkE9 zQ&=%k))}?#<+D^lJccoiE6ZLBzZH#2%L{nbBIT(}zbFppl+$Hg6EJMd6}+Mtb@!^6 z%Be=bVY?W%=o-#^j0(9S-sV)`EsQ6I4Y-XnHLrU|9Is*2xC)G1qHw!3E{z=?h`aC= z>i!4fM*>Xw0T(!B&Y`uTppobbbLN@~`8v1#A2>N|oL4zahyI{pLf#7+_?aRUx5wmc z#vgnxMl0~A*v`h|9ju;Wd`j{j=dstgPM!hhu2x>jC4bSdA&*o4bMb9X(rvGv^43eL zbYlvRVC8Ch4Ctm+w&Ap3!ZsjpYlG3wgzAiEZP;RO!Zsl9qj)%)#tOnEx)Be9$6AvN zdLQ)rW+$?Mq$iZMFhwd)oyh{@Jz8M{rn!;@#_J6jQeHZex7>@@&#RUDS$9)=2tHid zpZ0pPiM*{&umBe8Of*qM4d2`1LAH0S9{=8*SN(9sxQ zL;|yP-JdKmo>>|dNS2~xbQeA}%!Km`D?N2Kn2aEAYg1IH38R{LWm=dCry@q85p;ip zbgZvFW;Ba5wSuA+m4>!Nk|E^dm1jme+sl@w#>#XPH3U)I1VQ8G9YvxqAL3x+!^u)u z`Um=YPHn1+q|MjA)FCCtGhgRMlM%)D!(Y$9*7IiwxcVLY?>xINiqJhS;uN0K)RLKowM+z3b$ zD+A_KXOp);yw}1n#84&R4N~k|f{J_Tf#z{nJa0icPBk67nHuBmq8!7iVxcKPIn~|d z!+BOQu!kwdChq&t6sQ#SG@azUlGXcF%>$-Ts|RrYvPHnkIZ-p<`Q)XtSlP!S(HBVl14wsYcAoUJtj$TdiMDs={$iZ}^# z_nR6hj|NebNd)%}n8K9$gE0uW>f9kFTt%>2kA|9lwUM{;P4#URj$Sf_E8T~i8rk?0 zcTDz>dIj&~pB26ihAEbj)Q5$ipbK9;2bYb;_TBxw((8YXHsO*Uc`ryDYq~}++QQy4 z?Y2QT-saGE<4j-Kpp6quk4fu;i6*?uvWk5tnNAUuIN7uV<423Gz-R1XP~wDMxH;8? z(bsWDtn=Qu;11O|p>~XU#du&z<=$ottTGU1X}jICaNfVRj%NYU{Dn?=5BL)MK}B zc*2xlm(fXwe~l-_oWT%Sbfofp=9Q$0Ja65IRiwCRIvT=k!cZuffz}SLHhE!)&BC6u z*nIiEsf~@tHr7$5e@Lw%IrGHtYtY7mX#AA5Vu6@UX^3GU3X%~TuQz=G`7f$GD`8eb zf~6bK2hCpMshl>N)(J#SUfy#)3rUo`u^vatyvi2t?TuV|d1wOTrHTmTc{<&IV=ohAZ4Yzgo zE7LiAHFNZ9(@p`#ug4L>RE!l~Y^ofg2}h|K@?Od}$4t0PCz6Nc z@oXS!e@7viYDVY0%IEm~h|Vd9#mk}KN0SMsoLJkieQ}D0-m(I3z`iWi|9F*Q{P{TJgMbmMJ`aU?wzG(T8?Rk0|?TvY@dy=Q8*FtO6r$rb2oWby8P zA3aSJcXY$w(a}tRe(ugF=HXxeAP=ADgbl@n*ATeTrLv6;pU`!Tycgs@HC?3F7oDD& zR&z*kd~U*Lzea!JVtnPdm@zp2!jubrp4uwIfR}io*o`*jW1_4W+D@v(TMLo`C&rmv z6c>%O0Ur(~p$opWlS*u4wu7`%U^%r62li2HhL&a1u%J|0h8xSHVL?eWEGUD9nv_06 zj&f%i&Ma}3;li?J8TKq?h6UxzP?K_H$Wfv!L&LIU8LlivmZ4+$u?$R((YLXvL#eS0 zJC+wij*?3dM*D7%FmrM9r3ycQazq*jK&GFqrY>8uQQmdiqp z5?QE8SuAu3rLeFsl)pldl2@ogi7NytYlT+mE6ohMQKjx9VUm+nADPK6E++Vx$IN~g?2>9 zfQMX6k?nDovWqCUS!S()cJTv0HfCj3yDFSx6^@!gn$)Z^)}B|KJcY|B?|Ls&L1vaNkwoeyqZsuEJ4V zQ12;Dipp4oRI+6(LWrZ_EMuYaiuy-OU`T#ezmfUbBMWo!iyZ0#UFBt^p2J2B&B`sz&9Mm;U!Am@ z&v>|fi+&RV3wnQm10YUJS^x{0Ty&EVZpChHsc{jGaeQ+ z<6%MX1+bti1Pgj2fCZcJu%sCe3wjfP10YUJS=F&!{P!j z_(a2IJOpXR!-8f!ENI5Vf@VA{XvV{Wf(i?o@vxvU>Qj!t)}w(852*>e?G&>yC}u-Y z%toM?4L~vTe=&1^G4p;gbAB=NeKB)=G4p&eb9^!Ldogo+G4pycb9yoJc``k@^L8`e>^K>zDbTRXDF>`Y<^KvnBaxwF9F>`S-^KdbH zb5hLQTg<#$%$!@yd|S+1Ta2D0P26Ztm>h*mrF;HTbCM(mNW-{frWeesBbwl3fYga2zW%T+S~NntK&c(+ zE)A3hQ|TNenS|fK93=JNg#k7MNwtwa6(n`TB05;=kHs8b+zZD3{RZtqq<&az3Xw)> z*{i_aVc_ZDB0Xr$Dh_+gP!H?Fy<7C+mSNT~%$>KLVwSSqWG z(gl0r8BDH)?s*1hYDrmGq}G-OXlcH(&P;^RLQ#a1wWV~9oJxXCP24Qdu8x$3s&nc{ z4TNj(4KEz)N{x|gQ5Rdt-i(fE0K?zLW%QxCSf3%i8p6EQZgn6rTC$+(z-WxFYp^dG zqw5-Y){}Cu7|n|_^%!W0ky;}7R*aN{#kLqJfWF8&8Y3;#vUjeFI>5;oDH;}S#Y+Y)d$W5Jzau8Ezl@h!apc3U9LY_Pn$YK6YZLJ5!185+^d{Fh(FKHE z?%oj5TJovyr(U6Q0iDkmmM!>PQVBxP|sQdih? z)jbT}N|suaB!!6n%<1ftWWHYgaIj^TD2&ZT3xv-;geL;LNX z;V`(l)Pf^LqoK)O&j2{t90Qo?tQ`$6Kk@W~xE4|~j+`6~;m16EL2e zY97ig9>N7})iKa7z;@yO*U1@pxnOxQL+V9kqqb6xmhCurB*Q$dPbioNNRjfEHaa-+ z2F_zlWVZme{pcH}$FaP=2<^~P#QOFEIQvXYgo*8>TrEScF5*addz_yCvWNWk(r_+0 zyNDTZMg#R%W8E{L?;y!qTFY1ySA&JN z>#!=@3sJlp?k}p@6b5&ahU2S*bDg9TEfd`T5DXoqB>ELLcX*K_1)=nKXQ_}&8?9ru zD8>u7qAlD7JiLpPp~3RwE;zNZ-4#7HlL=oqkt5NM3+v!{jugyAo435?E)p?!v08as znQ0tC$w|xhW*puMTf0iJ(4ni;6F0)G?<$SP!q5#p$K?0&tad0Hl^d*n4gzHDamBNI(N`r1iI#QexaDaUxv@Ako- zv#l%T$Dph)`Z1=j)RSI1%<3zR=aO%aL#K}d0wJm&PR}SA+z+RAED!a=+a#7A{c(C_ zHV&T!_uT;oSlk~caFpEdFOA`nJ!iq(0Mm!1nNmxRY`F}njZ6XXd#2Q#blYZ0JFUo6Z8QZ^Rl1-Q8T6CM;uy|L&p z96MVBS4qQhy2J9waA}|u+rQ*eLjXeqOdIzr#H$`f8w;grRK|_KWfPX`Mo6JrdI+*M z)n?s`1c=1<`%NsMlUZ+y#=nnVbF8}BlAVZhr`9}|#Ab$0rG= z@lq$@BJ>)dD< zT7<*ZV3L$c%F8E7GpUT4EKTHowo{~ff)2(_ z!PT!0lqpgO7C%mrMq!aL6-Pk_$EHdnv1s~^G|7pccdf1QHCBN`L=-%D2k-nkXg^Jw zp=FZP`Y?G4hOp~&3?dzLpN>JRgI&|HUpnxffr}I!jGckb(7|QSwVa6$Ejm~`69bHy zIDy88e}&C97fVj~!62URB|(Rh~B9SfKxg*dTYcT=%K=BkKbI6X^xQ}`V$rP5F= zR+QrP^&D@RrP6dKdbqc4$9FeHr%mB7WVV#+#-K?}Fdz)g;lghb26!-B4X2LuVp9!&C zHcuKvrPF*Vhst5|rEvTt0m|lMOW9Vz8~En7-;&61NR{y(fucDwPM;6$VWW)eQ7nVY zrCC(2E0^ANVtWc_b+BDz!xl(QNwj@|)Qw7)g;KB+B`~bFQN?gQG7wfS#ETb>s5rjskexK>42wrCKD41f2iQ!3dBdg%<#T^F8H0tZuzw8AuJF+q<|begPBS z#X0Wnfgvj3 zz^mlXO|ERoIgS*nDx0v?*w#@hut8$LSPnqhQt5UPOL~;XGQnyRFkoZ~13pxN*aQZw zQ-PU@4A`gwr;-@3MFoa%8^IaqN0tcroC7;aqY_|OkD?-3&6$zCDln!20}iM_uZ9db zqyjS=G2l}b_$-wHU#LJ{QwDsk0y~;9;3xt`yd}%h8FE}z>B$@NoeC^(!8CqU0Z;4~ zdUsg|>>kUs%;dl?q+v_bFpYC6U~bERiz@J}Ex&rMsK`(4naXb}kimf)DzKIVw^iUc z2kxnW2Q~>?_CN*ZabSH{Y^p7x!!#bVtA`;Uq73Uir8*3#=*WQQDsZhc18S62YMki8 z06P^}$N@(c_=*G0DzN7bR>e&PmKX8!>QzMIfR_p^thc1kp}zRz=$Gj zd!PzT#4pYf2vLFWIS{S_!Mw_%-spdp3b&5p2=3Cg0SkIFBT*_an*()J;O94)Mm-gn z#x-nNBD5UbhiSx-21^G`%w#~K3KZ?-Dk&;5xGz&_r~-ZaF`%&uP)-TEXGIMQPT8e|`5w8~{hI+F$ix}pfr+f@bHalmm5 zR$-ZI8Vt~&2&?o_fkvYk(7zHWvcAKS>`KIXgadghU_YAG8KeTy92lYk-8hi1 z0!17sRDrb|7^MOyIZ!lKMV@lx=oIXYn#{t+-(*QFdqlU6XANOKV;WzfE^1668w_an z76YcKz;zDHRDm7b#w;5^cQ3S$M&_t0yC*VWo(lXjfdSfC_i>#|vgz{wA5L1P%Yk#G z!4hJ_wz4W089;B+tUWd}6#x2rdzy=iI;N4XL*u{YR zDsW3-z(W;Sja7=U&i;dF)s{1ibY1mS13~(W!h#|c{V~9>wiTQ#79x4!v=CC2Jr`H%zlQdXKdi47iRWv}#g;Z;vyemI{1xiUD<1VBL2N zh*5!0xJIlB96rl55)dfjr}_B|Ly}dMJzS-M3T(N|G*VUI=SvJ|q5^BUM!E`IlL6gH!4b5RgQXZmJ_T}Ai4&+iD1|*;eH3q6cGzYr;iB(u; zZaN2sk_H1hpa`oJsDR%i28>XFxkZ04WVDLtxyoBA(2^S&uL6^~Mv)4XJZ3hgs6b<0 zW%g5S8O!_a8kuq6Unm6CZymB?gN#qF-RVwn=3ufef6%d~@V2uh?aA3U(Jmgg>aO(_vnQ!gN zo4SQGSbp&~im+wdRR9x?1boE2$W+>JWVfoal-Jp(0#`Y(%pI-TQjyHaA<|&LA{3$3 zPgP(Z2UdEZ21_?K&@+v%NP~bPD<&$b&XG#QTF!xQRiKmuCsn|i13#$1I~=g(EpY_z zaNuXss7zqeSO$R9SOhLtj%2)v%$WWZC>U`b79OlqRWa}}U0 zCjzf0HW{Fqk5yQvvlMflsNtXjhgg*&tCNa^gfJCX6?li&afw1Bwgf2C@E{EaIHCxx z%Fzg1pee392RzJ`0H#Dq!;h*kjkz2MERRB|@WF%4rFhNQH z&y6~ujqx04%95o7j7ek~FX{1|7TBs_`cw1YmfUWUuRe&|V z+}c3}e#L%aLprNKB0q0e6~KfoX(Tqn?pCI2+4`d=sW1eSw4~BU1u!#9Kz|j8;6Szt ztZ2wI@>C#@YZNs`qm{{8vN4!67%&b+2n-{jh#@05vI{e*{A22)92h|=m5E%cGg<{G zjf=orDzF|aBQRbCE_00{6~H<{3|LJX3|N99)c8;ZWDcxT0ZbT^#zqxz>QKaxEh;jVt32z7Rx2~eRA(n?FyJwY z5KvSgnge@P;2sAK5O9trg&DZx5vzFgMu26L_j2Hq`GROe+)#!ppHm&C63~MIUoim2 zZI$9#q8az%{okFB=!E~}J0C}tLf!3>*>fsRShPo#lKf?*-UXR(a67(>dIGbyO9uUv zD$<%D%yg;=C$>xW&XX%8aBjO)%aM}TWu=gL%(*7}dpuBYhvZs`9(Kn~Xe$mo>viQA z6D78qzd`;EDG)cmmF%!>X)7xY!e8s~@`HX!xOwE89a0bY7^k+xFt0 z$QkybE`r%ys^YVDN-56osqC?xQf=o&mF&Wgq}uxBl^knwI#@o}Ma%f-ecZ5Z<&`q% zzXvyj;UD)2h6x`@Zn$mi;zv?9XIYgu-X*niUa7KWyQG%R^HuiZE~%q_RVB+#)RLVD z=nn+ZnU+)v0d=G4SIi@wSF6}<1>cZegH^kwIJxm=AJ}+C=gc~~SXDvU8_vsA_Qh_g zhw}$2i_LGRhf0<;pcM?itE(rQH?s4;TPXw2y;7$0hblX6uN3XPLS@mStkEABs+4_RMdmVO(6GV%ES17f zs|dZAFt%UjkU;~6<>pi>9cD`QQTV_J8T;||9hO7)OTqdts?-jUGd>E`Vf(*SVK}&7 z3Zoqm7xzmB-S;+}7DHu_A8+s_?Gq{rmIG+?N0q0(1k1zsg?OOa53j?}u!Vu0>N^#M zt@tB>E~j4cw+~2-^~Y46jPYL*1pFmIH!n2#Z55%PJYDn6Fn^~bA7LP-+pO&9LTDgypV7l-Y-H-^Tv~lPMN7 delta 34063 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 diff --git a/humble/.doctrees/index.doctree b/humble/.doctrees/index.doctree index 8ce306ece33f967203ab3ef4c549e751b8f24ff5..c312dd0de6e8ffe4e7c613f083d7f9a70e830bd3 100644 GIT binary patch delta 81 zcmX?ko$=&##tmkS2IggXr51&mMfzz5X^E+Zrb)?`X_ltODV8ZI=E(*YrirG8#-;`) l7K!E-X$DC~X`9m+J%bnxH*W|wV`Ma(92hFSnJM(R7yx8P8PWg% delta 81 zcmX?ko$=&##tmkS2DzoV1}UY*rTWH6X2zCgmMMmY1|~)($th+j7G?%Om||*fk(iWf kV3M4iWMXN)IgQaXh|ys4hF~*BMuW+Lq0*a~LXV3906*6mIRF3v diff --git a/humble/doc/acknowledgements/acknowledgements.html b/humble/doc/acknowledgements/acknowledgements.html index 9f866702388..5f65900536e 100644 --- a/humble/doc/acknowledgements/acknowledgements.html +++ b/humble/doc/acknowledgements/acknowledgements.html @@ -154,18 +154,18 @@

Maintainers
0.82
-
+
- + @@ -183,15 +183,15 @@

Maintainers -
+
0.57
-
+
@@ -212,15 +212,15 @@

Maintainers -
+
0.88
-
+
@@ -228,7 +228,7 @@

Maintainers
0.75
-
+
- + @@ -308,15 +308,15 @@

Maintainers -
+
0.31
-
+
@@ -337,15 +337,15 @@

Maintainers -
+
0.87
-
+
@@ -353,7 +353,7 @@

Maintainers
@@ -821,7 +821,7 @@

Reviewers’ Stats -
+
@@ -929,7 +929,7 @@

Reviewers’ Stats
@@ -937,7 +937,7 @@

Reviewers’ Stats -
+
@@ -1277,7 +1277,7 @@

Reviewers’ Stats
@@ -1285,7 +1285,7 @@

Reviewers’ Stats -
+
@@ -1915,7 +1915,7 @@

Reviewers’ Stats
@@ -1923,7 +1923,7 @@

Reviewers’ Stats -
+
@@ -3758,7 +3758,7 @@

Reviewers’ Stats
@@ -3991,7 +3991,7 @@

Reviewers’ Stats -
+
@@ -4244,7 +4244,7 @@

Reviewers’ Stats
@@ -4252,7 +4252,7 @@

Reviewers’ Stats -
+
@@ -4389,7 +4389,7 @@

Reviewers’ Stats
@@ -4397,7 +4397,7 @@

Reviewers’ Stats -
+
@@ -5056,7 +5056,7 @@

Reviewers’ Stats
@@ -5420,7 +5420,7 @@

Reviewers’ Stats -

Built on 2023-12-30 at 05:31 GMT

+

Built on 2023-12-31 at 05:31 GMT

diff --git a/humble/searchindex.js b/humble/searchindex.js index 9b9d56e712d..f511b64ffe5 100644 --- a/humble/searchindex.js +++ b/humble/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["doc/acknowledgements/acknowledgements", "doc/contributing/contributing", "doc/differences_to_ros1/differences_to_ros1", "doc/gazebo_ros2_control/doc/index", "doc/getting_started/getting_started", "doc/gz_ros2_control/doc/index", "doc/project_ideas", "doc/resources/resources", "doc/ros2_control/controller_manager/doc/controller_chaining", "doc/ros2_control/controller_manager/doc/userdoc", "doc/ros2_control/doc/index", "doc/ros2_control/hardware_interface/doc/hardware_components_userdoc", "doc/ros2_control/hardware_interface/doc/hardware_interface_types_userdoc", "doc/ros2_control/hardware_interface/doc/mock_components_userdoc", "doc/ros2_control/hardware_interface/doc/writing_new_hardware_component", "doc/ros2_control/ros2controlcli/doc/userdoc", "doc/ros2_control_demos/doc/index", "doc/ros2_control_demos/doc/run_from_docker", "doc/ros2_control_demos/example_1/doc/userdoc", "doc/ros2_control_demos/example_10/doc/userdoc", "doc/ros2_control_demos/example_12/doc/userdoc", "doc/ros2_control_demos/example_14/doc/userdoc", "doc/ros2_control_demos/example_2/doc/userdoc", "doc/ros2_control_demos/example_3/doc/userdoc", "doc/ros2_control_demos/example_4/doc/userdoc", "doc/ros2_control_demos/example_5/doc/userdoc", "doc/ros2_control_demos/example_6/doc/userdoc", "doc/ros2_control_demos/example_7/doc/userdoc", "doc/ros2_control_demos/example_8/doc/userdoc", "doc/ros2_control_demos/example_9/doc/userdoc", "doc/ros2_controllers/ackermann_steering_controller/doc/userdoc", "doc/ros2_controllers/admittance_controller/doc/userdoc", "doc/ros2_controllers/bicycle_steering_controller/doc/userdoc", "doc/ros2_controllers/diff_drive_controller/doc/userdoc", "doc/ros2_controllers/doc/controllers_index", "doc/ros2_controllers/doc/writing_new_controller", "doc/ros2_controllers/effort_controllers/doc/userdoc", "doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/forward_command_controller/doc/userdoc", "doc/ros2_controllers/gripper_controllers/doc/userdoc", "doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/joint_state_broadcaster/doc/userdoc", "doc/ros2_controllers/joint_trajectory_controller/doc/parameters", "doc/ros2_controllers/joint_trajectory_controller/doc/trajectory", "doc/ros2_controllers/joint_trajectory_controller/doc/userdoc", "doc/ros2_controllers/position_controllers/doc/userdoc", "doc/ros2_controllers/range_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/steering_controllers_library/doc/userdoc", "doc/ros2_controllers/tricycle_controller/doc/userdoc", "doc/ros2_controllers/tricycle_steering_controller/doc/userdoc", "doc/ros2_controllers/velocity_controllers/doc/userdoc", "doc/simulators/simulators", "doc/supported_robots/supported_robots", "index"], "filenames": ["doc/acknowledgements/acknowledgements.rst", "doc/contributing/contributing.rst", "doc/differences_to_ros1/differences_to_ros1.rst", "doc/gazebo_ros2_control/doc/index.rst", "doc/getting_started/getting_started.rst", "doc/gz_ros2_control/doc/index.rst", "doc/project_ideas.rst", "doc/resources/resources.rst", "doc/ros2_control/controller_manager/doc/controller_chaining.rst", "doc/ros2_control/controller_manager/doc/userdoc.rst", "doc/ros2_control/doc/index.rst", "doc/ros2_control/hardware_interface/doc/hardware_components_userdoc.rst", "doc/ros2_control/hardware_interface/doc/hardware_interface_types_userdoc.rst", "doc/ros2_control/hardware_interface/doc/mock_components_userdoc.rst", "doc/ros2_control/hardware_interface/doc/writing_new_hardware_component.rst", "doc/ros2_control/ros2controlcli/doc/userdoc.rst", "doc/ros2_control_demos/doc/index.rst", "doc/ros2_control_demos/doc/run_from_docker.rst", "doc/ros2_control_demos/example_1/doc/userdoc.rst", "doc/ros2_control_demos/example_10/doc/userdoc.rst", "doc/ros2_control_demos/example_12/doc/userdoc.rst", "doc/ros2_control_demos/example_14/doc/userdoc.rst", "doc/ros2_control_demos/example_2/doc/userdoc.rst", "doc/ros2_control_demos/example_3/doc/userdoc.rst", "doc/ros2_control_demos/example_4/doc/userdoc.rst", "doc/ros2_control_demos/example_5/doc/userdoc.rst", "doc/ros2_control_demos/example_6/doc/userdoc.rst", "doc/ros2_control_demos/example_7/doc/userdoc.rst", "doc/ros2_control_demos/example_8/doc/userdoc.rst", "doc/ros2_control_demos/example_9/doc/userdoc.rst", "doc/ros2_controllers/ackermann_steering_controller/doc/userdoc.rst", "doc/ros2_controllers/admittance_controller/doc/userdoc.rst", "doc/ros2_controllers/bicycle_steering_controller/doc/userdoc.rst", "doc/ros2_controllers/diff_drive_controller/doc/userdoc.rst", "doc/ros2_controllers/doc/controllers_index.rst", "doc/ros2_controllers/doc/writing_new_controller.rst", "doc/ros2_controllers/effort_controllers/doc/userdoc.rst", "doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/forward_command_controller/doc/userdoc.rst", "doc/ros2_controllers/gripper_controllers/doc/userdoc.rst", "doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/joint_state_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/joint_trajectory_controller/doc/parameters.rst", "doc/ros2_controllers/joint_trajectory_controller/doc/trajectory.rst", "doc/ros2_controllers/joint_trajectory_controller/doc/userdoc.rst", "doc/ros2_controllers/position_controllers/doc/userdoc.rst", "doc/ros2_controllers/range_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/steering_controllers_library/doc/userdoc.rst", "doc/ros2_controllers/tricycle_controller/doc/userdoc.rst", "doc/ros2_controllers/tricycle_steering_controller/doc/userdoc.rst", "doc/ros2_controllers/velocity_controllers/doc/userdoc.rst", "doc/simulators/simulators.rst", "doc/supported_robots/supported_robots.rst", "index.rst"], "titles": ["Acknowledgements", "Contributing", "Differences to ros_control (ROS1)", "gazebo_ros2_control", "Getting Started", "gz_ros2_control", "Project Ideas for GSoC 2024", "Resources", "Controller Chaining / Cascade Control", "Controller Manager", "ros2_control", "Hardware Components", "ros2_control hardware interface types", "Mock Components", "Writing a Hardware Component", "Command Line Interface", "Demos", "<no title>", "Example 1: RRBot", "Example 10: Industrial robot with GPIO interfaces", "Example 12: Controller chaining with RRBot", "Example 14: Modular robot with actuators not providing states", "DiffBot", "Example 3: Robots with multiple interfaces", "Example 4: Industrial robot with integrated sensor", "Example 5: Industrial robot with externally connected sensor", "Example 6: Modular Robots with separate communication to each actuator", "Example 7: Full tutorial with a 6DOF robot", "Example 8: Industrial Robots with an exposed transmission interface", "Example 9: Simulation with RRBot", "ackermann_steering_controller", "Admittance Controller", "bicycle_steering_controller", "diff_drive_controller", "ros2_controllers", "Writing a new controller", "effort_controllers", "Force Torque Sensor Broadcaster", "forward_command_controller", "Gripper Action Controller", "IMU Sensor Broadcaster", "joint_state_broadcaster", "Details about parameters", "Trajectory Representation", "joint_trajectory_controller", "position_controllers", "Range Sensor Broadcaster", "steering_controllers_library", "tricycle_controller", "tricycle_steering_controller", "velocity_controllers", "Simulator Integrations", "Supported Robots", "Welcome to the ros2_control documentation - Humble!"], "terms": {"The": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53], "follow": [0, 1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 42, 43, 44, 45, 49, 50, 53], "peopl": [0, 1], "were": [0, 6, 27, 33, 43, 44], "ros2_control": [0, 1, 4, 7, 9, 11, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 33, 35, 51], "framework": [0, 1, 2, 6, 7, 9, 10, 11, 12, 13, 15, 16, 27, 34, 35, 41, 53], "show": [0, 1, 3, 4, 5, 7, 9, 11, 12, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 41, 43], "all": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 35, 41, 42, 43, 44, 52], "time": [0, 1, 2, 6, 7, 9, 13, 15, 16, 18, 21, 22, 23, 24, 25, 26, 27, 28, 33, 35, 37, 42, 43, 44, 53], "activ": [0, 1, 2, 4, 9, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 41, 42, 44], "assign": [0, 35], "finish": 0, "rate": [0, 22, 42, 43, 44], "last": [0, 11, 14, 27, 31, 35, 42, 43, 44], "date": 0, "benc": [0, 6, 7], "magyar": [0, 6, 7], "bmagyar": 0, "1243": 0, "1023": 0, "0": [0, 3, 4, 5, 8, 12, 13, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 39, 40, 41, 42, 43, 44, 46, 47, 49], "82": 0, "2023": [0, 53], "12": [0, 16, 52, 53], "29t11": 0, "40": 0, "08z": 0, "dr": [0, 7], "deni": [0, 6, 7], "destogl": 0, "985": 0, "561": 0, "57": 0, "18t14": 0, "11": [0, 16], "03z": 0, "christoph": 0, "fr\u00f6hlich": 0, "christophfroehlich": 0, "152": 0, "133": 0, "88": 0, "26t09": 0, "00": 0, "02z": 0, "fetch": 0, "30": [0, 3, 5, 22, 53], "03": [0, 44], "25": 0, "46": 0, "utc": 0, "dure": [0, 16, 27, 44], "past": [0, 43], "month": 0, "532": 0, "401": 0, "75": 0, "438": 0, "136": 0, "31": [0, 53], "141": 0, "122": 0, "87": 0, "have": [0, 1, 2, 4, 6, 8, 9, 11, 12, 13, 14, 16, 18, 20, 22, 23, 27, 29, 30, 31, 32, 35, 41, 42, 44, 49], "contribut": [0, 4, 7], "develop": [0, 1, 7, 13, 14, 16, 35], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 27, 30, 32, 33, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 47, 49, 50, 51, 52, 53], "project": [0, 1, 53], "give": [0, 1, 7, 9, 16, 18, 22, 23, 43, 53], "valuabl": 0, "pull": [0, 14], "request": [0, 2, 14, 27, 41, 53], "see": [0, 1, 2, 4, 12, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 35, 37, 40, 42, 44, 46, 47, 49], "more": [0, 1, 2, 3, 4, 5, 6, 9, 13, 14, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 35, 44, 49], "inform": [0, 3, 5, 8, 13, 14, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 35, 53], "karsten": 0, "knese": 0, "karsten1987": 0, "186": 0, "118": 0, "63": 0, "2021": 0, "09": 0, "07t16": 0, "47": 0, "31z": 0, "alejandro": 0, "hern\u00e1ndez": 0, "cordero": 0, "ahcord": 0, "90": [0, 27], "80": 0, "89": 0, "27t10": 0, "54": 0, "11z": 0, "sai": 0, "kishor": 0, "kothakota": 0, "saikishor": 0, "69": 0, "67": 0, "97": 0, "29t05": 0, "18": [0, 27], "25z": 0, "victor": 0, "lopez": 0, "v": [0, 15, 24, 42], "93": 0, "60": 0, "65": 0, "10": [0, 3, 5, 16, 23, 47], "14t09": 0, "01": [0, 39, 42, 44], "andyz": 0, "45": 0, "98": 0, "23t02": 0, "17": 0, "26z": 0, "abrar": 0, "rahman": 0, "protyasha": 0, "aprotya": 0, "157": 0, "43": [0, 4, 12, 22], "27": 0, "25t12": 0, "02": 0, "18z": 0, "olivi": 0, "stass": 0, "52": [0, 46], "77": 0, "26t08": 0, "13z": 0, "jordan": 0, "palacio": 0, "78": 0, "34": 0, "44": 0, "15t08": 0, "45z": 0, "erick": 0, "g": [0, 1, 2, 4, 5, 6, 7, 8, 9, 12, 13, 14, 16, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 31, 35, 36, 41, 45, 47, 50, 53], "isla": 0, "osuna": 0, "erickiso": 0, "139": 0, "28": [0, 47], "20": [0, 39, 42, 44], "19t20": 0, "32": 0, "07z": 0, "louis": 0, "poubel": 0, "chapulina": 0, "29": 0, "23": [0, 4], "79": 0, "2022": 0, "08": 0, "30t16": 0, "41": 0, "23z": 0, "none": [0, 8, 35, 41, 42, 44], "bijoua29": 0, "160": 0, "21": [0, 47], "13": [0, 16], "06": 0, "01t20": 0, "48": [0, 3, 5], "32z": 0, "jaron": 0, "l": 0, "167": 0, "10t19": 0, "59": 0, "59z": 0, "livanov93": 0, "164": 0, "05": [0, 44, 53], "22t06": 0, "28z": 0, "tyler": 0, "weaver": 0, "tylerjw": 0, "94": 0, "27t13": 0, "arn": 0, "hitzmann": 0, "arne48": 0, "145": 0, "16": [0, 52], "25t06": 0, "15z": 0, "bailac": 0, "14": [0, 16, 47], "1": [0, 1, 2, 3, 4, 5, 6, 7, 12, 13, 14, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 35, 39, 43, 46, 47], "09t12": 0, "52z": 0, "m\u00e1rk": 0, "szitan": 0, "vx792": 0, "135": 0, "22t09": 0, "26": 0, "felix": 0, "exner": 0, "fexner": 0, "fmauch": 0, "24t22": 0, "ari": 0, "synodino": 0, "progtologist": 0, "151": 0, "07": 0, "30t19": 0, "58z": 0, "chen": 0, "bainian": 0, "briancbn": 0, "36": 0, "9": [0, 6, 16, 40], "25t01": 0, "51": 0, "12z": 0, "paul": 0, "gesel": 0, "pac48": 0, "14t18": 0, "maciej": 0, "bednarczyk": 0, "mcbed": 0, "123": 0, "8": [0, 16], "25t18": 0, "19z": 0, "jafar": 0, "uru\u00e7": 0, "jafarabdi": 0, "07t07": 0, "01z": 0, "ddengster": 0, "2020": 0, "01t03": 0, "andr": 0, "montano": 0, "anfemosa": 0, "7": [0, 16, 19, 22, 47], "29t15": 0, "37z": 0, "homalozoa": 0, "x": [0, 22, 24, 25, 27, 31, 33, 37, 40, 47, 48, 52], "130": 0, "23t11": 0, "22": [0, 9], "mahaarbo": 0, "01t11": 0, "44z": 0, "matt": 0, "reynold": 0, "matthew": 0, "18t19": 0, "56": 0, "34z": 0, "ana": 0, "abou": 0, "allaban": 0, "piraka9011": 0, "04": [0, 9], "09t00": 0, "38": [0, 3, 5], "06z": 0, "toni": [0, 7], "najjar": [0, 7], "tonynajjar": 0, "04t13": 0, "50": [0, 4, 9, 22, 42, 44], "48z": 0, "dasroteskelett": 0, "149": 0, "6": [0, 16, 18, 27], "28t09": 0, "36z": 0, "brewmast": 0, "harderthan": 0, "124": 0, "26t15": 0, "47z": 0, "A": [0, 4, 7, 12, 14, 16, 24, 25, 35, 41, 43, 44], "vd": 0, "hoorn": 0, "gavanderhoorn": 0, "19t13": 0, "39": 0, "alex": 0, "moriarti": 0, "5": [0, 14, 16, 18, 19, 20, 21, 23, 24, 26, 27, 28, 29, 43, 47, 52], "42": 0, "20t19": 0, "55": 0, "jack": 0, "jackcent": 0, "02t15": 0, "37": 0, "17z": 0, "han": 0, "martin": 0, "duringhof": 0, "4": [0, 12, 16, 21, 23, 25, 28, 46], "29t21": 0, "15": 0, "noel": 0, "jim\u00e9nez": 0, "garc\u00eda": 0, "noel215": 0, "20t07": 0, "40z": 0, "nathan": [0, 7], "brook": [0, 7], "nbbrook": 0, "05t22": 0, "marq": 0, "rasmussen": 0, "marqrazz": 0, "23t00": 0, "colin": 0, "mackenzi": 0, "guru": 0, "florida": 0, "19t23": 0, "49z": 0, "reza": 0, "kermani": 0, "ark3r": 0, "13t18": 0, "27z": 0, "chri": 0, "thrasher": 0, "christhrash": 0, "26t17": 0, "05z": 0, "michael": 0, "wiznitz": 0, "mechwiz": 0, "22t14": 0, "19": 0, "richard": 0, "osterloh": 0, "rosterloh": 0, "3": [0, 3, 4, 5, 6, 12, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28, 43, 44], "05t08": 0, "53": 0, "mrl1kor": 0, "malapatiravi": 0, "07t18": 0, "adam": 0, "serafin": 0, "serafadam": 0, "12t18": 0, "24": 0, "24z": 0, "manuel": 0, "muth": 0, "mamueluth": 0, "03t10": 0, "20z": 0, "melvin": 0, "wang": 0, "wmmc88": 0, "22t13": 0, "tim": 0, "clepha": 0, "timpl": 0, "13t07": 0, "yutaka": 0, "kondo": 0, "youtalk": 0, "22t00": 0, "guihom": 0, "guihomework": 0, "17t15": 0, "jose": 0, "lui": 0, "rivero": 0, "j": 0, "26t13": 0, "peter": 0, "david": 0, "fagan": 0, "peterdavidfagan": 0, "2": [0, 1, 3, 4, 5, 6, 7, 8, 12, 13, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 44, 47, 52, 53], "23t22": 0, "sebastian": 0, "jahr": 0, "sjahr": 0, "15t14": 0, "joseph": 0, "schornak": 0, "schornakj": 0, "27t03": 0, "57z": 0, "akash": 0, "ace314159": 0, "31t17": 0, "jo\u00e3o": 0, "torr": 0, "borg": 0, "borgesjvt": 0, "05t12": 0, "46z": 0, "patrick": 0, "roncagliolo": 0, "roncapat": 0, "01t12": 0, "49": 0, "carrol": 0, "mjcarrol": 0, "28t21": 0, "09z": 0, "vansh": 0, "gehlot": 0, "eth": 0, "vanshgehlot": 0, "13t11": 0, "mhubii": 0, "21t11": 0, "50z": 0, "luka": 0, "macha": 0, "lukasmacha97": 0, "85": 0, "17t18": 0, "sachin": 0, "kumar": 0, "sachinkum0009": 0, "lennart": 0, "nachtigal": 0, "firesurf": 0, "04t07": 0, "qiayuanliao": 0, "qiayuanl": 0, "35": [0, 47], "25t05": 0, "solomon": 0, "swiz23": 0, "15t15": 0, "andi": [0, 7], "mcevoi": 0, "mcevoyandi": 0, "08t14": 0, "kenji": 0, "brameld": 0, "ijnek": 0, "05t10": 0, "53z": 0, "bilal": 0, "gill": 0, "bgill92": 0, "01t13": 0, "22z": 0, "kvk": 0, "praneeth": 0, "kvkpraneeth": 0, "28t07": 0, "33z": 0, "cian": 0, "donovan": 0, "ciandonovan": 0, "26t23": 0, "schulz": 0, "schulze18": 0, "27t21": 0, "29z": 0, "shawn": 0, "schaerer": 0, "shawnschaer": 0, "14t15": 0, "franz": 0, "fjp": 0, "04t22": 0, "vatan": 0, "aksoi": 0, "tezer": 0, "vatanaksoytez": 0, "21t13": 0, "nour": 0, "saeed": 0, "d": [0, 16, 18, 29, 42], "dmitri": 0, "dignakov": 0, "13t16": 0, "ken551": 0, "03t11": 0, "54z": 0, "jonatan": 0, "olofsson": 0, "jonatanolofsson": 0, "05t14": 0, "bedard": 0, "christophebedard": 0, "27t18": 0, "august": 0, "bourgoi": 0, "augustebourgoi": 0, "19t14": 0, "ramon": 0, "wijnand": 0, "rayman": 0, "21t14": 0, "21z": 0, "flochr": 0, "20t10": 0, "castro": 0, "sea": 0, "bass": 0, "27t12": 0, "51z": 0, "abishalini": 0, "sivaraman": 0, "27t14": 0, "ramcharanthota": 0, "ben": 0, "holden": 0, "bobblebal": 0, "01t10": 0, "Will": 0, "baker": 0, "willcbak": 0, "22t15": 0, "robotgir": 0, "17t16": 0, "33": 0, "tomislav": 0, "petkovi\u0107": 0, "petkovich": 0, "17t10": 0, "ros2tori": 0, "28t15": 0, "kevin": 0, "demarco": 0, "syllogismrx": 0, "19t16": 0, "noe\u00ebl": 0, "moeskop": 0, "noeelmoeskop": 0, "18t09": 0, "josh": 0, "newan": 0, "joshnewan": 0, "14t08": 0, "emiliano": 0, "borghi": 0, "eborghi10": 0, "29t20": 0, "haider8645": 0, "26t10": 0, "stephen": 0, "street": 0, "sgstreet": 0, "05t20": 0, "jun": 0, "chenjunnn": 0, "09t06": 0, "daniel": 0, "zumkel": 0, "dzumkel": 0, "shane": 0, "loretz": 0, "sloretz": 0, "yoav": 0, "feket": 0, "yoavfeket": 0, "17t21": 0, "johann": [0, 7], "huemer": 0, "huemerj": 0, "31t15": 0, "keegan": 0, "soteb": 0, "ksoteb": 0, "00z": 0, "carlo": 0, "ag\u00fcero": 0, "caguero": 0, "26t11": 0, "35z": 0, "jacob": 0, "perron": 0, "jacobperron": 0, "09t18": 0, "reframesystem": 0, "krzysztof": 0, "wojciechowski": 0, "kotochleb": 0, "12t08": 0, "55z": 0, "addisu": 0, "z": [0, 22, 24, 25, 27, 31, 33, 37, 40, 47, 48], "taddes": 0, "azeei": 0, "14t20": 0, "thibault": 0, "poignonec": 0, "tpoignonec": 0, "09t08": 0, "sgmurrai": 0, "0000": 0, "00t00": 0, "kelli": 0, "kellyprankin": 0, "kasiceo": 0, "a10263790": 0, "tomoya": 0, "tomoyafujita2016": 0, "usamahamayun1": 0, "dave": 0, "coleman": 0, "davetcoleman": 0, "66": 0, "64": 0, "92": 0, "71": 0, "104": 0, "91": 0, "03t19": 0, "14z": 0, "86": 0, "99": [0, 9], "72": 0, "link": [0, 3, 4, 5, 7, 8, 11, 27, 34], "list": [0, 4, 7, 8, 9, 11, 14, 15, 20, 27, 35, 42, 51, 52, 53], "who": 0, "submit": [0, 1, 7, 51, 52], "respect": [0, 3, 5, 6, 7, 42, 43, 44], "repositori": [0, 4, 6, 10, 12, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 33, 34], "ros2_control_demo": [0, 1, 4, 16, 18, 27, 29, 53], "control_toolbox": [0, 53], "gazebo_ros2_control": [0, 29], "gz_ros2_control": 0, "realtime_tool": [0, 6, 53], "kinematics_interfac": [0, 31], "control_msg": [0, 3, 5, 31, 42, 44, 47, 53], "ha": [0, 1, 3, 4, 5, 7, 12, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 35, 41, 42, 43], "receiv": [0, 2, 27, 42, 43], "major": [0, 40], "from": [0, 1, 2, 7, 8, 9, 13, 14, 15, 17, 27, 31, 33, 34, 35, 36, 37, 40, 42, 43, 44, 45, 46, 48, 50, 52, 53], "support": [0, 2, 3, 4, 5, 7, 13, 14, 15, 27, 31, 35, 41, 43, 44, 47, 51, 53], "rosin": 0, "ro": [0, 1, 2, 3, 4, 5, 6, 9, 12, 13, 15, 16, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 34, 35, 43, 44, 53], "industri": [0, 4, 6, 16, 52], "qualiti": [0, 1], "assur": 0, "robot": [0, 2, 3, 5, 6, 8, 9, 12, 18, 20, 22, 29, 33, 37, 41, 47, 48, 53], "softwar": [0, 4, 27], "compon": [0, 7, 9, 10, 12, 15, 16, 21, 22, 23, 24, 25, 26, 27, 31, 33, 34, 37, 40, 46, 47, 48, 53], "http": [0, 1, 4, 6, 16, 27, 30, 32, 49], "www": 0, "eu": 0, "fund": 0, "european": 0, "union": 0, "": [0, 1, 4, 6, 7, 8, 9, 14, 15, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 35, 40, 42, 43, 46, 49, 53], "horizon": 0, "research": [0, 7, 52], "innov": 0, "programm": 0, "under": [0, 7, 14, 20, 35, 43, 44, 47, 53], "grant": [0, 4], "agreement": 0, "732287": 0, "first": [1, 2, 8, 11, 14, 16, 27, 29, 35, 42, 43], "thank": 1, "you": [1, 2, 3, 4, 5, 7, 8, 9, 11, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 35, 44, 53], "consid": [1, 15, 42], "As": [1, 8, 12, 14, 18, 27, 33, 35], "an": [1, 2, 3, 4, 5, 6, 7, 8, 12, 13, 14, 15, 16, 18, 20, 22, 25, 27, 29, 30, 31, 32, 33, 35, 36, 41, 42, 44, 45, 47, 49, 50], "open": [1, 13, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 41, 42, 47], "sourc": [1, 3, 5, 7, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "we": [1, 3, 5, 6, 7, 8, 11, 16, 18, 20, 22, 27, 28, 29, 41], "welcom": 1, "each": [1, 4, 6, 8, 11, 12, 14, 16, 18, 21, 27, 30, 41, 47, 49], "contributor": 1, "regardless": 1, "background": [1, 16], "experi": 1, "To": [1, 2, 4, 8, 9, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 41, 43, 51, 52, 53], "reduc": [1, 13], "entropi": 1, "univers": [1, 7, 27, 52], "our": [1, 3, 4, 5, 6, 7, 16, 18, 27], "vivid": 1, "collabor": 1, "environ": [1, 4, 7, 16], "set": [1, 2, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 27, 36, 41, 42, 43, 44, 45, 47, 50], "up": [1, 7, 14, 16, 43], "some": [1, 3, 5, 6, 7, 16, 18, 21, 22, 23, 24, 25, 26, 27, 28, 31, 41, 42, 44, 53], "standard": [1, 2, 6, 7, 14, 15, 21, 26, 27, 37, 41], "method": [1, 2, 4, 8, 9, 11, 14, 27, 35, 47], "requir": [1, 2, 4, 6, 14, 27, 31, 35, 36, 44, 45, 50], "ar": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 37, 40, 41, 42, 43, 44, 46, 47, 48, 49, 53], "limit": [1, 3, 5, 7, 9, 16, 27, 33, 48], "scope": 1, "your": [1, 2, 7, 9, 13, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 32, 35, 51, 52, 53], "pr": [1, 51, 52], "should": [1, 2, 3, 5, 6, 7, 8, 9, 11, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 35, 41, 43, 44], "do": [1, 2, 4, 6, 7, 8, 9, 14, 16, 31, 35, 44], "one": [1, 2, 4, 6, 7, 8, 9, 12, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 35, 36, 37, 41, 43, 44, 45, 47, 49, 50, 53], "thing": [1, 3, 5, 16], "avoid": [1, 18, 21, 22, 23, 24, 25, 26, 28, 35], "ad": [1, 3, 5, 6, 9, 13, 14, 20, 22, 27, 35, 41], "random": [1, 21, 23, 24, 25, 26], "fix": [1, 2, 27, 30, 32, 49], "put": [1, 14, 35], "those": [1, 2, 4, 6, 8, 13, 14, 16, 27, 33, 35, 37, 41, 42, 43], "separ": [1, 2, 4, 16, 21, 41], "descript": [1, 2, 7, 9, 11, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 35], "titl": 1, "add": [1, 2, 8, 9, 11, 14, 27, 30, 31, 32, 35, 49, 51, 52], "short": [1, 35, 53], "summari": [1, 7, 53], "make": [1, 2, 5, 6, 7, 20, 27, 39, 53], "sure": [1, 5, 6, 18, 20, 21, 22, 23, 24, 25, 26, 28, 53], "pipelin": 1, "i": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53], "green": [1, 43], "don": [1, 3, 8, 22, 42, 44], "t": [1, 3, 5, 8, 9, 16, 22, 42, 43, 44], "afraid": 1, "review": [1, 6, 53], "maintain": [1, 4, 6, 8, 16, 43], "new": [1, 7, 8, 14, 18, 20, 23, 27, 34, 43, 53], "code": [1, 2, 4, 6, 7, 14, 27], "test": [1, 3, 6, 13, 14, 16, 18, 22, 29, 30, 31, 32, 35, 47, 49], "If": [1, 2, 4, 8, 9, 11, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 35, 37, 41, 42, 43, 44, 47, 53], "function": [1, 2, 6, 7, 20, 27, 31, 47], "alwai": [1, 27], "exercis": 1, "serv": [1, 4, 6], "live": [1, 7], "origin": [1, 3, 5, 7, 18, 27, 43, 44], "intent": [1, 8, 13], "section": [1, 2, 12, 14, 35, 44], "target": [1, 9, 14, 31, 35, 38, 42, 44], "also": [1, 2, 3, 4, 5, 6, 7, 8, 9, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 35, 44], "read": [1, 2, 3, 4, 5, 9, 12, 14, 16, 20, 21, 24, 25, 27, 35, 41, 42, 46, 47], "understand": [1, 6, 43], "how": [1, 6, 7, 12, 14, 16, 19, 20, 21, 23, 24, 25, 26, 27, 29, 35], "handl": [1, 2, 4, 6, 7, 14, 24, 27, 30, 31, 32, 38, 39, 40, 44, 47, 49], "organ": [1, 7, 53], "guidelin": 1, "especi": [1, 2, 16, 47], "applic": [1, 4, 7, 9, 12, 27], "pleas": [1, 9, 26, 53], "keep": [1, 27, 35], "mind": [1, 35], "work": [1, 6, 7, 8, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 35, 36, 41, 45, 48, 50, 53], "fork": 1, "when": [1, 2, 3, 4, 5, 8, 9, 13, 14, 15, 20, 23, 27, 31, 35, 39, 42, 44, 47], "That": [1, 14, 35], "wai": [1, 9, 14, 27, 35, 37, 44], "main": [1, 4, 6, 7, 9, 13, 27, 35, 47, 53], "repo": [1, 4, 16], "clean": 1, "featur": [1, 7, 13, 16, 18, 28, 47, 53], "branch": [1, 16], "check": [1, 2, 4, 6, 8, 11, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 35, 42, 43, 44, 49, 53], "satisfi": 1, "befor": [1, 2, 8, 9, 14, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 35, 43], "thei": [1, 2, 4, 6, 7, 8, 12, 13, 14, 15, 20, 35, 42, 44, 47], "can": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 35, 37, 38, 42, 43, 44, 47, 53], "must": [1, 3, 5, 8, 9, 12, 16, 27, 40, 42, 44], "approv": 1, "two": [1, 4, 6, 8, 9, 14, 16, 18, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 32, 35, 37, 43, 44, 47, 49], "explicitli": 1, "onli": [1, 2, 4, 6, 7, 8, 9, 11, 14, 15, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 32, 33, 35, 36, 37, 41, 42, 43, 44, 45, 50], "except": [1, 27], "other": [1, 2, 3, 4, 7, 9, 14, 16, 21, 26, 27, 30, 32, 35, 41, 43, 47, 49], "where": [1, 3, 6, 8, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 30, 32, 33, 35, 41, 42, 43, 44, 47, 49], "back": 1, "traceabl": 1, "discuss": [1, 7, 20, 29, 43, 53], "suffici": [1, 3, 5, 8, 37], "note": [1, 4, 9, 18, 33, 44, 53], "still": [1, 2, 18, 20, 21, 22, 23, 24, 25, 26, 28, 34, 43], "encourag": 1, "help": [1, 9, 13, 14, 15, 35], "u": [1, 3, 5, 9, 16, 42], "increas": [1, 22], "pace": 1, "veri": [1, 2, 3, 5, 6, 12], "like": [1, 2, 3, 4, 5, 6, 7, 14, 16, 20, 27], "find": [1, 3, 5, 22], "issu": [1, 6, 53], "nobodi": 1, "els": 1, "squash": 1, "commit": 1, "messag": [1, 6, 9, 15, 23, 24, 25, 27, 37, 40, 41, 42, 43, 44, 46, 47, 53], "comment": [1, 27], "fixup": 1, "linter": 1, "us": [1, 2, 4, 6, 7, 11, 12, 13, 15, 17, 27, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 47, 49, 50, 53], "pre": 1, "correct": [1, 2, 43], "header": [1, 11, 14, 24, 25, 33, 35, 43], "address": [1, 27], "similar": [1, 4, 7, 12, 18, 20, 27], "mean": [1, 2, 8, 12, 13, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 43, 44], "result": [1, 4, 8, 9, 18, 27, 41, 43], "exactli": 1, "cowboi": 1, "style": [1, 14, 35], "over": [1, 6, 8, 22, 27], "weekend": 1, "It": [1, 2, 3, 4, 6, 8, 9, 18, 20, 21, 23, 24, 25, 26, 27, 28, 29, 37, 41, 42, 43], "doesn": [1, 8], "matter": 1, "trivial": [1, 13], "chanc": 1, "proper": [1, 8, 9, 44], "Be": 1, "awar": 1, "impact": 1, "proport": [1, 42], "its": [1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 37, 38, 39, 40, 41, 43, 47, 49], "ping": 1, "them": [1, 6, 8, 9, 14, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 35, 41, 43, 52], "necessari": [1, 8, 11], "repeatedli": 1, "start": [1, 2, 3, 5, 7, 8, 9, 11, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 42, 43, 53], "part": [1, 6, 7, 12, 27, 35, 43, 44], "For": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 35, 42, 44, 47, 49], "detail": [1, 2, 3, 4, 5, 11, 12, 13, 14, 20, 27, 29, 30, 32, 33, 35, 43, 44, 49], "thoma": 1, "cokela": 1, "info": [1, 9, 11, 14, 27], "tutori": [1, 16], "sphinx": 1, "rest_syntax": 1, "html": 1, "id8": 1, "type": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 16, 21, 22, 24, 25, 26, 27, 33, 34, 35, 36, 37, 40, 42, 45, 46, 47, 50], "stabl": 1, "against": 1, "accept": [1, 14, 23, 35, 36, 42, 43, 44, 45, 50], "api": [1, 3, 5, 6, 14, 18, 21, 22, 23, 24, 25, 26, 28], "abi": 1, "chang": [1, 2, 4, 7, 9, 11, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 42, 43, 44], "e": [1, 2, 4, 6, 7, 8, 9, 12, 13, 14, 16, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 31, 35, 36, 37, 41, 42, 43, 45, 47, 50, 53], "name": [1, 2, 3, 4, 5, 7, 9, 12, 13, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 29, 31, 35, 37, 38, 40, 41, 42, 46, 47], "convent": [1, 27], "master": [1, 4], "semi": 1, "binari": 1, "good": [1, 3, 5, 6], "same": [1, 8, 23, 27, 34, 37, 42, 43, 44], "build": [1, 14, 27, 31, 35], "dai": 1, "ros_distro": [1, 4, 16, 18], "foxi": [1, 7, 14], "galact": [1, 11, 14], "releas": [1, 4, 7, 16, 27], "version": [1, 6, 16, 44], "non": [1, 7, 20, 27, 37, 52], "brake": 1, "distribut": [1, 16, 53], "three": [1, 2, 4, 11, 12, 16, 27, 35, 43, 49], "stage": [1, 8, 20], "current": [1, 6, 11, 12, 14, 15, 43, 44, 47], "futur": [1, 7, 8, 43, 44], "compat": [1, 2, 7, 14, 16], "packag": [1, 2, 3, 5, 11, 14, 27, 30, 31, 32, 33, 35, 36, 37, 40, 44, 45, 46, 47, 49, 50, 53], "direct": [1, 2, 6, 14, 27, 35, 42], "local": [1, 3, 5, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 41], "possibl": [1, 4, 6, 9, 12, 16, 18, 21, 22, 23, 24, 25, 26, 28, 31, 35, 43], "core": [1, 10, 27], "immedi": [1, 18, 20, 21, 23, 24, 25, 26, 27, 28, 29], "depend": [1, 4, 11, 12, 14, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 34, 35, 43, 47], "fail": [1, 23, 27], "expect": [1, 6, 20, 27, 30, 32, 44, 47, 49], "after": [1, 8, 9, 14, 16, 18, 27, 33, 35, 42, 43, 44, 47, 48], "next": [1, 18, 27, 43], "sync": 1, "abl": 1, "potenti": [1, 35, 42], "mid": 1, "stat": 1, "power": [1, 3, 5, 7, 14], "plausibl": 1, "analyt": 1, "robothw": 2, "rigid": 2, "ani": [2, 4, 7, 8, 9, 11, 12, 16, 20, 27, 35, 42, 44], "imposs": 2, "extend": [2, 4, 6, 8, 14, 35], "exist": [2, 4, 6, 8, 9, 11, 12, 14, 18, 21, 22, 23, 24, 25, 26, 27, 28, 35, 44], "addit": [2, 3, 5, 8, 16, 19, 22, 27], "sensor": [2, 4, 6, 11, 13, 14, 16, 21, 26, 27, 31, 34, 52], "actuat": [2, 4, 6, 11, 12, 13, 14, 16, 20], "tool": [2, 3, 5, 6, 7, 27], "without": [2, 3, 4, 5, 7, 13, 14, 16, 20, 29, 35, 42, 43], "combinedrobothardwar": 2, "drawback": [2, 53], "solut": [2, 7], "optim": [2, 9], "combin": [2, 8, 12, 13, 16, 23, 41, 42, 43, 44], "extern": [2, 4, 6, 8, 13, 16, 31], "defin": [2, 3, 5, 6, 9, 13, 14, 16, 27, 31, 35, 37, 40, 41, 42, 43, 44, 46, 47], "system": [2, 3, 4, 5, 6, 7, 11, 12, 14, 15, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 44, 51, 52, 53], "composit": [2, 7], "basic": [2, 3, 4, 5, 6, 7, 14, 16, 22, 35], "physic": [2, 4, 11, 12, 13], "cell": [2, 37], "surround": 2, "describ": [2, 4, 8, 12, 16, 18, 23, 27, 29, 43], "multi": [2, 4, 6, 7, 16, 23], "gripper": [2, 3, 4, 5, 7, 12, 13, 34], "out": [2, 3, 5, 9, 27, 33], "box": [2, 16, 18, 22, 23, 24, 25, 28, 29], "allow": [2, 3, 4, 5, 16, 27, 39, 42, 43, 44], "joint": [2, 4, 7, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 41, 42, 43, 45, 47, 49, 50, 53], "posit": [2, 3, 4, 5, 7, 9, 12, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 36, 41, 42, 43, 44, 45, 47, 50], "veloc": [2, 3, 4, 5, 7, 8, 16, 21, 22, 23, 27, 31, 32, 33, 34, 39, 40, 41, 42, 43, 44, 45, 47, 50], "effort": [2, 3, 5, 16, 27, 34, 36, 39, 41, 42, 44], "hard": [2, 9], "data": [2, 4, 6, 13, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 34, 41, 43], "approach": [2, 8], "doe": [2, 8, 9, 14, 18, 21, 22, 23, 24, 25, 26, 27, 28, 35, 43, 44], "enforc": [2, 23, 27, 42], "string": [2, 9, 13, 16, 35, 38, 39, 40, 41, 42, 46, 47], "ensur": [2, 7, 9, 27, 43], "constant": [2, 16], "hardware_interfac": [2, 3, 4, 5, 11, 13, 14, 16, 21, 24, 25, 26, 27, 31, 33, 34, 35], "In": [2, 3, 4, 5, 6, 7, 8, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 34, 35, 41, 43, 47], "had": 2, "itself": [2, 8], "took": 2, "care": [2, 6, 9, 14, 23, 35, 44], "regist": [2, 3, 5], "resourc": [2, 3, 5, 14, 23], "conflict": [2, 4, 6], "resourcemanag": [2, 8], "take": [2, 6, 8, 14, 20, 23, 33, 35, 41, 43], "state": [2, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 22, 23, 24, 25, 26, 27, 28, 29, 34, 35, 37, 41, 42], "avail": [2, 4, 7, 9, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 41, 44], "enabl": [2, 4, 6, 7, 11, 14, 15, 16, 22, 31, 37, 47], "anymor": 2, "controllermanag": [2, 9], "implement": [2, 3, 4, 5, 6, 7, 9, 12, 13, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 35, 38, 43, 44, 47, 48, 49, 53], "systeminterfac": [2, 3, 5, 13, 24, 27], "granular": 2, "sensorinterfac": [2, 21, 25], "actuatorinterfac": [2, 21, 26], "abov": [2, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 34, 43], "choos": [2, 16, 47], "suitabl": [2, 7], "strategi": [2, 16, 43], "decid": 2, "which": [2, 3, 4, 5, 6, 7, 9, 14, 15, 16, 18, 22, 23, 24, 25, 26, 27, 28, 29, 33, 35, 37, 40, 41, 42, 43, 44, 46, 47, 48], "case": [2, 3, 5, 6, 7, 8, 16, 20, 27, 35, 41, 43, 44, 53], "mayb": [2, 8], "sens": [2, 4, 34, 37], "multipl": [2, 4, 7, 8, 12, 14, 16, 41, 42], "constructor": [2, 14, 27, 35], "initi": [2, 14, 27, 35, 43], "variabl": [2, 14, 27, 35, 42], "need": [2, 3, 4, 5, 6, 7, 8, 12, 14, 16, 18, 21, 22, 23, 24, 25, 26, 27, 28, 35, 43], "commun": [2, 4, 6, 7, 14, 16, 18, 21, 22, 23, 24, 25, 27, 28, 52], "default": [2, 4, 8, 9, 13, 23, 30, 32, 38, 39, 40, 41, 42, 43, 44, 46, 47, 49], "configur": [2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 41, 42, 43, 44, 47], "paramet": [2, 3, 5, 7, 14, 16, 18, 22, 27, 34, 35, 44], "pars": [2, 3, 5, 9, 10, 12], "urdf": [2, 7, 9, 12, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "snippet": 2, "hardwareinfo": [2, 27], "here": [2, 10, 14, 27, 35, 36, 44, 45, 50], "cross": [2, 41], "valu": [2, 4, 6, 12, 13, 14, 16, 18, 19, 20, 22, 24, 25, 27, 29, 35, 40, 41, 42, 44, 46, 47], "export_": 2, "_interfac": [2, 14], "joint_a2": 2, "extract": [2, 33, 48], "sensibl": 2, "stop": [2, 7, 8, 9, 11, 15, 18, 22, 23, 27, 33, 42, 48], "usual": [2, 4, 9, 13, 14, 27, 35], "includ": [2, 3, 5, 6, 11, 14, 15, 27, 35, 44, 52], "command": [2, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 38, 39, 42, 43, 45, 49, 50, 53], "safe": [2, 27, 33, 35, 44, 48], "interrupt": [2, 9], "stream": [2, 7], "write": [2, 4, 7, 8, 9, 10, 20, 21, 22, 26, 34], "exchang": [2, 6, 18, 21, 22, 23, 24, 25, 26, 28, 53], "equival": [2, 27], "forget": [2, 4, 16, 44], "pluginlib_export_class": [2, 14, 16, 27, 35], "macro": [2, 4, 14, 16, 27, 35], "end": [2, 4, 11, 14, 27, 35, 42, 52], "cpp": [2, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "file": [2, 3, 4, 5, 6, 7, 9, 13, 14, 16, 31, 33, 35, 36, 44, 45, 50], "creat": [2, 3, 4, 5, 7, 9, 13, 14, 16, 27, 35], "xml": [2, 3, 5, 11, 14, 27, 35], "librari": [2, 4, 14, 15, 16, 30, 32, 34, 35, 47, 49], "pluginlib": [2, 3, 4, 5, 9, 14, 27, 35], "exampl": [2, 3, 4, 5, 6, 7, 8, 13, 15, 22, 31, 36, 37, 41, 44, 45, 50, 53], "rrbotsystempositiononlyhardwar": [2, 4, 12, 15, 18, 20, 25], "excel": 2, "jointtrajectorycontrol": [2, 3, 5, 15, 18, 31, 44], "real": [2, 6, 7, 9, 13, 22, 35, 41, 42, 53], "critic": [2, 6], "mark": [2, 20], "controllerinterfac": [2, 4, 8, 15, 27, 35], "member": [2, 14, 27, 35, 43], "init": 2, "call": [2, 3, 4, 5, 8, 14, 22, 27, 35], "lifecycl": [2, 4, 7, 9, 11, 14, 27], "declar": [2, 14, 27, 35], "state_interface_configur": [2, 27, 35], "command_interface_configur": [2, 27, 35], "design": [2, 4, 6, 7, 8, 27, 53], "updat": [2, 4, 8, 9, 16, 27, 35, 44, 47], "manag": [2, 3, 5, 6, 7, 10, 11, 14, 15, 16, 27, 35, 44, 53], "option": [2, 3, 5, 9, 11, 13, 14, 15, 18, 23, 35, 37, 41, 44, 47], "on_configur": [2, 14, 27, 35], "on_activ": [2, 11, 14, 27, 35], "on_deactiv": [2, 11, 14, 27, 35], "deactiv": [2, 4, 15, 18, 42], "final": [2, 7, 11, 27], "joint_trajectory_plugin": 2, "integr": [3, 4, 5, 6, 7, 13, 16, 20, 22, 27, 42, 43, 44, 53], "architectur": [3, 5, 6, 7], "gazebo": [3, 5, 6, 16, 18, 29, 51], "classic": [3, 16, 29, 51], "provid": [3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 16, 18, 20, 23, 24, 25, 26, 27, 28, 29, 31, 35, 41, 42, 43, 44, 47, 53], "instanti": [3, 5, 9], "connect": [3, 4, 5, 13, 16, 24, 27], "model": [3, 5, 18, 27], "cd": [3, 4, 5, 16, 27], "docker": [3, 5, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29], "gui": [3, 5, 16, 18, 20, 21, 23, 24, 25, 26, 28, 29], "properli": [3, 5, 8, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "rm": [3, 4, 5, 16, 18, 29], "net": [3, 5, 7, 16, 18, 29], "host": [3, 5, 16, 18, 29, 52], "ros2": [3, 4, 5, 7, 9, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "launch": [3, 4, 5, 9, 13, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "cart_example_posit": [3, 5], "py": [3, 5, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "fals": [3, 5, 13, 16, 18, 29, 33, 39, 41, 42, 44, 47], "machin": [3, 4, 5, 6, 16, 29], "client": [3, 5, 29, 44], "gzclient": [3, 29], "rocker": [3, 5], "go": [3, 5, 7, 9, 14, 27, 35], "imag": [3, 5, 9, 29], "inject": [3, 5, 7], "nvidia": [3, 5], "And": 3, "user": [3, 5, 6, 9, 16, 27, 43], "id": [3, 5, 15, 18, 21, 22, 23, 24, 25, 26, 28], "specif": [3, 5, 6, 8, 9, 11, 12, 27, 29, 38, 41, 43, 44], "cleaner": [3, 5], "mount": [3, 5], "permiss": [3, 5, 9], "instal": [3, 5, 9, 14, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "instruct": [3, 5, 22, 27, 29], "x11": [3, 5], "latest": [3, 4, 5], "move": [3, 5, 16, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 39], "cart": [3, 5], "rail": [3, 5], "exec": [3, 5, 18], "bash": [3, 4, 5, 14, 16, 18, 27, 35], "home": [3, 5], "ros2_w": [3, 4, 5, 16], "example_posit": [3, 5], "element": [3, 5, 27], "access": [3, 4, 5, 7, 9, 13, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 41], "interfac": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 18, 20, 21, 22, 24, 25, 26, 29, 30, 32, 34, 35, 37, 40, 42, 43, 46, 49, 51, 52, 53], "gazebosystem": 3, "hardwar": [3, 5, 7, 8, 10, 13, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 33, 34, 35, 42, 48, 53], "slider_to_cart": [3, 5, 36, 45, 50], "command_interfac": [3, 4, 5, 12, 20, 27, 31, 42, 44], "param": [3, 4, 5, 9, 12, 13, 22, 27], "min": [3, 4, 5, 12, 27], "1000": [3, 5, 27], "max": [3, 4, 5, 12, 27, 39], "state_interfac": [3, 4, 5, 12, 27, 31, 42, 44], "initial_valu": [3, 5, 27], "mimick": [3, 5, 13], "manual": [3, 4, 5, 6, 9, 14, 16, 18, 23, 24, 25, 26, 28, 29, 35, 53], "multipli": [3, 5, 13], "definit": [3, 4, 5, 14, 27, 31, 33, 34, 35, 37, 42], "left_finger_joint": [3, 5], "prismat": [3, 5], "right_finger_joint": [3, 5], "axi": [3, 5, 6, 27, 30, 32, 33, 37, 49], "xyz": [3, 5, 27], "rpy": [3, 5, 27], "1415926535": [3, 5], "parent": [3, 5, 14, 27, 35], "base": [3, 4, 5, 7, 11, 14, 15, 16, 21, 22, 26, 27, 33, 35, 38, 47, 48, 51], "child": [3, 5, 12, 27], "finger_left": [3, 5], "lower": [3, 5, 27], "upper": [3, 5, 27], "actual": [3, 5, 8], "load": [3, 4, 5, 9, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "appropri": [3, 5, 6, 43], "By": [3, 5, 9, 27, 41, 43], "though": [3, 5, 20], "extens": [3, 5], "via": [3, 4, 5, 16, 18, 24, 25, 27, 29, 44], "between": [3, 4, 5, 6, 11, 12, 16, 27, 30, 32, 41, 42, 43, 44, 49], "filenam": [3, 5, 27], "libgazebo_ros2_control": 3, "so": [3, 4, 5, 8, 9, 14, 27, 31, 35, 44], "robot_param": [3, 5], "robot_descript": [3, 5, 9, 18, 27], "robot_param_nod": [3, 5], "robot_state_publish": [3, 5, 41], "config": [3, 5, 16], "cartpole_control": [3, 5], "yaml": [3, 4, 5, 6, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 44], "locat": [3, 27, 31], "server": [3, 39, 44], "node": [3, 4, 5, 9, 11, 13, 15, 18, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "attempt": [3, 5, 9, 44], "get": [3, 5, 7, 8, 9, 11, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 43, 53], "most": [3, 5, 6, 14, 16, 27, 35], "least": [3, 5, 12, 14, 35, 44], "jointstateinterfac": [3, 5], "effortjointinterfac": [3, 5], "velocityjointinterfac": [3, 5], "complex": [3, 4, 5, 6, 7, 8], "mechan": [3, 5, 8, 44], "nonlinear": [3, 5], "spring": [3, 5], "linkag": [3, 5, 18, 20, 28], "etc": [3, 5, 9, 23, 27, 53], "These": [3, 5, 16, 27], "inherit": [3, 5, 9, 27], "gazebosysteminterfac": 3, "level": [3, 5, 6, 7, 9, 20, 21, 26, 36, 43, 45, 50], "properti": [3, 5, 27], "sub": [3, 5], "class": [3, 4, 5, 7, 9, 11, 14, 15, 27, 35, 38, 43], "specifi": [3, 5, 9, 14, 16, 27, 35, 42, 43, 44], "insid": [3, 5, 13, 16, 18], "publish": [3, 5, 6, 8, 12, 16, 19, 27, 31, 34, 37, 40, 41, 42, 43, 46, 48, 53], "stateinterfac": [3, 5, 27], "topic": [3, 5, 6, 7, 8, 12, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 34, 42, 44, 51], "sensor_msg": [3, 5, 40, 46], "msg": [3, 5, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 33, 36, 37, 38, 40, 43, 44, 45, 46, 47, 50], "jointstat": [3, 5], "joint_state_control": [3, 5, 15], "ros__paramet": [3, 5, 36, 44, 45, 50], "jointstatecontrol": [3, 5, 15], "action": [3, 5, 8, 42], "cart_pole_control": [3, 5], "follow_joint_trajectori": [3, 5, 44], "followjointtrajectori": [3, 5, 42, 44], "joint_trajectory_control": [3, 5, 6, 15, 18, 34], "write_op_mod": [3, 5], "contain": [3, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 36, 42, 43, 45, 47, 50], "content": [3, 14, 27, 35], "There": [3, 4, 5, 9, 11, 14, 16, 21, 24, 25, 26, 35, 43, 44], "meter": [3, 5, 27], "cart_example_veloc": [3, 5], "cart_example_effort": [3, 5], "diff_driv": 3, "tricycle_dr": 3, "world": [3, 5, 9, 13, 27], "example_veloc": [3, 5], "example_effort": [3, 5], "example_diff_dr": [3, 5], "example_tricycle_dr": [3, 5], "parallel": [3, 4, 5, 12, 13], "gripper_mimic_joint_exampl": [3, 5], "send": [3, 5, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 43, 44], "example_gripp": [3, 5], "humbl": [4, 16, 27], "want": [4, 8, 9, 16], "download": [4, 16], "mkdir": [4, 16], "p": [4, 9, 16, 42], "src": [4, 14, 16, 18, 27, 29, 31, 35], "wget": 4, "raw": 4, "githubusercont": 4, "com": [4, 6, 16, 27], "org": [4, 6, 30, 32, 49], "ros_control": [4, 6, 7, 53], "vc": [4, 16], "import": [4, 14, 16, 27, 35, 42], "rosdep": [4, 16], "rosdistro": [4, 16], "sudo": [4, 9, 16], "apt": [4, 16], "path": [4, 7, 16, 27, 44], "ignor": [4, 9, 16, 33, 42, 47, 48], "r": [4, 16, 28], "y": [4, 16, 22, 24, 25, 31, 37, 40], "everyth": [4, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 35], "opt": [4, 16, 18], "setup": [4, 13, 14, 16, 18, 22, 27, 29, 35, 43], "sh": [4, 16, 18, 29], "colcon": [4, 14, 16, 27, 35], "symlink": [4, 16, 27], "folder": [4, 7, 14, 16, 18, 19, 22, 30, 31, 32, 35, 47, 49], "found": [4, 10, 14, 18, 19, 22, 31, 33, 35, 38, 44, 53], "github": [4, 6, 10, 16, 27, 34, 51, 52, 53], "figur": [4, 43], "cm": [4, 9], "abstract": [4, 7, 11, 27], "side": [4, 6, 7], "entri": [4, 35], "point": [4, 27, 35, 42, 43, 44, 53], "servic": [4, 6, 9, 11, 27], "executor": [4, 9], "custom": [4, 12, 13, 16, 21, 22, 37, 41, 51], "howev": [4, 6, 8, 9, 16, 20, 27], "recommend": [4, 7, 14], "ros2_control_nod": [4, 23, 27], "controller_manag": [4, 5, 6, 9, 15, 23, 35, 36, 44, 45, 50], "assum": [4, 8], "On": [4, 27], "hand": [4, 27, 52], "unload": [4, 9, 15], "match": [4, 16, 43], "report": [4, 6, 41, 53], "error": [4, 6, 9, 14, 20, 23, 27, 35, 41, 42, 44], "execut": [4, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 35, 39, 42, 43, 44, 49], "loop": [4, 7, 9, 13, 18, 23, 24, 25, 26, 27, 28, 29, 35, 41, 42, 44, 47], "output": [4, 6, 7, 12, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 37], "driver": [4, 7, 16, 27, 52], "reus": [4, 7, 8], "flexibl": 4, "motor": [4, 8, 52], "encod": [4, 27], "theori": [4, 53], "compar": [4, 6, 7], "refer": [4, 8, 20, 27, 52], "measur": [4, 13, 21, 31, 37, 41, 42, 52], "calcul": [4, 27, 31, 43, 47], "input": [4, 6, 7, 8, 12, 19, 20, 27, 31, 33, 36, 38, 42, 43, 45, 47, 48, 50], "object": [4, 27], "deriv": [4, 42, 43], "controller_interfac": [4, 15, 27, 31, 35, 37, 40, 46], "export": [4, 8, 9, 14, 16, 27, 31, 35], "plugin": [4, 9, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 35], "forwardcommandcontrol": [4, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29], "lifecyclenod": 4, "document": [4, 6, 7, 12, 13, 14, 16, 22, 33, 43, 44], "interact": [4, 7, 9, 15, 19, 27, 29], "srv": [4, 44], "controller_manager_msg": 4, "while": [4, 6, 7, 27, 43], "directli": [4, 18, 20, 29, 53], "line": [4, 10, 11, 14, 18, 27, 35, 41, 43], "friendli": 4, "cli": [4, 9, 10, 15, 18, 19, 22, 23, 24, 25, 26, 28, 29], "auto": [4, 9], "complet": [4, 11, 20, 27, 43], "rang": [4, 12, 34], "common": [4, 6, 16, 34, 41, 53], "capabl": [4, 6], "realiz": [4, 7, 43, 44], "repres": [4, 11, 27, 33, 43], "dynam": [4, 14, 27, 35], "dof": [4, 12, 16, 27, 39], "differ": [4, 6, 7, 12, 14, 16, 18, 19, 22, 23, 27, 36, 37, 41, 43, 45, 47, 50], "transmiss": [4, 16], "humanoid": 4, "logic": 4, "channel": [4, 52], "kuka": [4, 18, 23, 24, 25, 52], "rsi": [4, 18, 24, 25, 52], "relat": [4, 6, 7], "forc": [4, 7, 12, 15, 24, 25, 31, 34, 52], "torqu": [4, 12, 24, 25, 31, 34], "simpl": [4, 6, 7, 8, 14, 16, 18, 20, 22, 27, 28, 35, 39], "valv": [4, 12], "mandatori": [4, 9, 37, 42], "dc": 4, "arduino": [4, 21, 26], "board": 4, "modular": [4, 7, 16, 27], "independ": [4, 7, 25], "explan": [4, 14], "given": [4, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 36, 42, 43, 44, 45, 50], "through": [4, 6, 7, 8, 9, 14, 15, 16, 20, 27, 35, 44, 53], "tag": [4, 9, 12, 14, 16, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 35, 53], "chosen": [4, 12], "structur": [4, 6, 8, 14, 27, 33, 35, 42, 43], "track": [4, 30, 49, 53], "togeth": [4, 8, 12, 22, 24, 47], "xacro": [4, 9, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "hereund": 4, "rrbot": [4, 12, 15, 16, 19, 21, 23, 24, 25, 26, 28], "effector": [4, 52], "site": 4, "rrbotsystempositiononli": [4, 25], "ros2_control_demo_hardwar": [4, 12, 15], "example_param_write_for_sec": 4, "example_param_read_for_sec": [4, 12], "joint1": [4, 12, 13, 15, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 44], "joint2": [4, 12, 15, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 44], "rrbotforcetorquesensor1d": 4, "forcetorquesensor1dhardwar": 4, "tcp_fts_sensor": [4, 12, 24, 25], "frame_id": [4, 12, 24, 25, 37, 40, 46, 47], "rrbot_tcp": 4, "min_forc": 4, "100": [4, 12, 36, 45, 50], "max_forc": 4, "rrbotgripp": 4, "positionactuatorhardwar": 4, "gripper_joint": 4, "instead": [4, 13, 22, 27, 29, 42], "pure": 4, "stack": [4, 7, 53], "could": [4, 7, 8, 16, 23, 35, 41, 44], "altern": [4, 18, 44], "script": [4, 6, 14, 35], "skeleton": 4, "sim": [5, 15, 51], "dockerfil": [5, 16], "Then": [5, 8, 16, 27, 29, 43], "ign": 5, "meet": [5, 53], "prerequisit": 5, "along": 5, "gazebosimsystem": 5, "libgz_ros2_control": 5, "gazebosimros2controlplugin": 5, "gazebosimsysteminterfac": 5, "controller_manager_prefix_node_nam": 5, "diff_drive_exampl": 5, "tricycle_drive_exampl": 5, "about": [6, 8, 13, 14, 23, 33, 40, 41, 44, 53], "gener": [6, 7, 12, 14, 15, 21, 22, 23, 24, 25, 26, 27, 34, 35, 44, 47, 53], "task": [6, 7, 33], "envis": 6, "simul": [6, 13, 15, 16, 18, 20, 22, 24, 25, 27], "ignit": 6, "showcas": [6, 7], "grace": 6, "degrad": 6, "roadmap": [6, 16, 53], "place": [6, 35], "draft": 6, "gpio": [6, 16, 27], "mode": [6, 8, 14, 20, 23, 31, 42, 43, 47], "switch": [6, 15, 16, 18, 23], "movement": 6, "safeti": [6, 27], "skill": 6, "prefer": 6, "c": [6, 9, 12, 14, 15, 18, 27], "familiar": [6, 53], "mentor": 6, "\u0161togl": [6, 7], "size": [6, 46], "350": 6, "hour": 6, "difficulti": 6, "medium": 6, "focus": [6, 7, 8], "although": [6, 8, 11, 12, 44], "easi": 6, "therefor": [6, 8, 9, 16, 35, 41, 42, 44], "often": [6, 13, 22, 35, 41], "orchestr": 6, "purpos": [6, 18, 20, 21, 23, 24, 25, 26, 27, 28, 29], "conductor": 6, "scenario": [6, 43], "moment": [6, 8, 44], "right": [6, 16], "replac": [6, 11, 34, 44], "high": [6, 9, 43], "moveit2": [6, 7, 34, 52], "simplecontrollermanag": 6, "goal": [6, 7, 12, 18, 23, 24, 25, 26, 28, 29, 39, 42, 44, 53], "form": [6, 16], "behavior": [6, 13, 27, 43], "benchmark": 6, "statu": [6, 8, 11, 15, 18, 42], "format": [6, 27, 31, 41, 44], "preset": 6, "modul": [6, 20], "reli": 6, "doubl": [6, 9, 13, 18, 27, 30, 32, 39, 42, 46, 47, 49], "desir": [6, 42, 44], "both": [6, 7, 20, 27, 28, 41, 42, 43, 44], "improv": 6, "readabl": [6, 27], "earlier": 6, "concept": [6, 7, 8, 13, 16, 18], "introduc": [6, 7, 8, 18, 27], "essenti": [6, 18], "group": [6, 8, 9, 12, 44, 53], "instanc": [6, 9, 20, 41], "imu": [6, 12, 34], "typic": [6, 12, 22, 41, 42], "acceleromet": 6, "gyroscop": 6, "compass": 6, "Such": [6, 20], "struct": 6, "low": [6, 7], "profil": 6, "intern": [6, 8, 12, 14, 18, 20, 21, 22, 23, 24, 25, 26, 28, 31, 43, 44], "relev": [6, 42, 47, 53], "addition": [6, 27, 30, 32, 49, 53], "few": [6, 7], "175": 6, "rewrit": [6, 53], "rich": 6, "wa": [6, 14, 18, 22, 23, 27, 35, 43], "motiv": 6, "adopt": 6, "port": [6, 11, 12], "quit": 6, "miss": [6, 41, 43, 44], "diff_drive_control": [6, 8, 15, 22], "consist": [6, 44, 53], "onc": [6, 7, 18, 22, 23, 24, 25, 27, 28], "identifi": [6, 27], "much": [6, 8, 18, 21, 22, 23, 24, 25, 26, 28, 35, 44], "303": 6, "304": 6, "stretch": 6, "81": 6, "302": 6, "unit": 6, "gmock": 6, "cc": [7, 43, 44], "BY": [7, 43, 44], "licens": [7, 43, 44], "author": [7, 8], "either": [7, 9, 18, 23, 24, 25, 26, 28, 29, 43], "down": [7, 27], "below": [7, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 42, 43, 44], "compani": 7, "my": 7, "company_nam": 7, "tricycl": [7, 34, 48], "control": [7, 10, 11, 12, 13, 14, 15, 16, 30, 32, 37, 40, 41, 42, 43, 46, 48, 49, 52, 53], "event": 7, "pixel": 7, "prefac": 7, "introduct": 7, "plapp": 7, "kernel": [7, 9], "agnost": [7, 27], "share": [7, 14, 27, 29, 35, 47], "well": [7, 9, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 44], "perform": [7, 9, 27], "heavi": 7, "stogl": 7, "consult": 7, "practition": 7, "guid": [7, 14, 35], "top": 7, "virtual": [7, 8, 32], "talk": 7, "delv": 7, "deeper": 7, "what": [7, 18, 27], "explicit": [7, 27, 42], "chain": [7, 10, 15, 16, 27, 31, 42, 47], "emerg": 7, "handler": 7, "mock": [7, 10, 14], "usag": [7, 8, 9, 12, 15, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28], "openli": 7, "record": 7, "fiveai": 7, "ltd": 7, "best": [7, 9, 35], "focu": [7, 8], "becom": [7, 20], "util": 7, "3rd": 7, "parti": 7, "nav2": [7, 34], "practic": 7, "tip": [7, 27], "hot": 7, "shown": [7, 27, 43], "furthermor": [7, 22], "offer": [7, 9, 14, 27], "expos": [7, 16, 20], "problem": [7, 53], "manipul": [7, 16, 18, 20, 27, 28, 42], "plan": [7, 53], "autonom": 7, "navig": 7, "ideal": [7, 13], "made": [7, 11], "mobil": [7, 16, 22, 33, 47, 48], "arm": [7, 18, 20, 28], "extra": [7, 27, 41], "readi": [7, 14, 16, 20, 34, 35], "studi": 7, "ur": 7, "With": [7, 27, 29, 44], "moveit": [7, 13], "ingredi": 7, "run": [7, 8, 9, 13, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 43, 47], "scale": [7, 42], "factor": 7, "teach": 7, "pendant": 7, "influenc": 7, "picknik": 7, "inc": 7, "lovro": 7, "ivanov": 7, "zelenak": 7, "rune": 7, "s\u00f8e": 7, "knudsen": 7, "onlin": [7, 14, 35], "trajectori": [7, 18, 27, 34, 42, 53], "admitt": [7, 34], "One": [7, 8], "reason": [7, 8, 9, 27], "upgrad": 7, "ros1": [7, 16], "better": 7, "realtim": [7, 9, 27, 33, 44, 48, 53], "contact": 7, "insert": 7, "singl": [7, 24, 39], "waypoint": [7, 43, 44], "mani": [7, 27, 34, 35], "teleoper": 7, "involv": 7, "kinemat": [7, 8, 16, 22, 27, 30, 31, 32, 47, 49], "acceler": [7, 16, 23, 27, 31, 33, 40, 42, 43, 44, 48], "jerk": [7, 33, 48], "obei": [7, 27], "demo": [7, 12], "booth": 7, "zeleank": 7, "unifi": 7, "life": [7, 27], "cycl": [7, 27], "_control": [7, 16], "wild": 7, "materi": 7, "quick": [7, 11], "overview": 7, "layer": 7, "aka": 7, "systemcompon": 7, "forward": [7, 13, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 34, 42, 44, 53], "done": [7, 8, 14, 18, 21, 22, 23, 24, 25, 26, 27, 28, 35], "look": [7, 22], "modifi": 7, "simpli": [7, 9, 18, 43, 44], "edit": 7, "collect": [7, 36, 45, 50], "semant": [7, 12, 31, 37, 40, 46], "monolit": 7, "controlko": 7, "propos": [8, 53], "minim": [8, 53], "viabl": [8, 27], "serial": [8, 27], "tri": [8, 42], "clariti": 8, "arbitrari": [8, 27, 44], "order": [8, 27], "nevertheless": 8, "convinc": 8, "would": [8, 41], "unnecessari": 8, "long": 8, "term": [8, 53], "clearer": 8, "let": [8, 16, 18, 20, 21, 22, 23, 24, 25, 26, 28], "yet": [8, 9, 16, 20, 33, 43, 44], "controllers_chain": 8, "doc": [8, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 53], "position_track": 8, "pid": [8, 42, 43, 44, 53], "now": [8, 9, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 43], "imagin": 8, "flexibli": 8, "preced": 8, "step": [8, 14, 16, 35, 43, 53], "At": [8, 14, 20, 35], "attach": 8, "disabl": [8, 13, 47], "subscrib": [8, 19, 20, 27], "differenti": [8, 16, 22, 32, 33, 34, 53], "interfaceconfigur": [8, 27], "input_interface_configur": 8, "const": [8, 11, 27], "anoth": [8, 9, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 44], "simplic": [8, 27], "try": [8, 27], "exclus": [8, 27], "rather": [8, 16, 43], "void": 8, "set_chained_mod": 8, "bool": [8, 39, 42, 47], "flag": [8, 14, 35, 42], "on_set_chained_mod": 8, "pid_refer": 8, "controller_nam": [8, 9, 15, 31, 35, 44, 47], "v_x": 8, "v_y": 8, "w_z": 8, "cmd_vel": [8, 33], "cmd_vel_unstamp": [8, 22, 33], "Its": [8, 53], "continu": [8, 42, 43, 44], "chainabl": [8, 16, 20, 33, 44], "ownership": 8, "process": [8, 14, 27, 35, 43], "claim": [8, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "vector": [8, 20, 27, 35], "invers": [8, 27], "rule": [8, 9, 14, 35], "think": [8, 16], "break": [8, 13], "middl": [8, 32], "unavail": [8, 20], "anyth": 8, "confus": 8, "irelev": 8, "feasibl": 8, "interface_configuration_typ": 8, "littl": 9, "jitter": 9, "normal": [9, 27, 42], "linux": 9, "comput": [9, 16, 33, 47, 48], "throughput": 9, "suit": 9, "easiest": [9, 14, 35], "ubuntu": 9, "lt": 9, "beta": 9, "rt": 9, "amd64": 9, "debian": 9, "bullsey": 9, "thread": [9, 27], "sched_fifo": 9, "prioriti": 9, "addgroup": 9, "usermod": 9, "whoami": 9, "afterward": 9, "secur": 9, "conf": [9, 27], "soft": 9, "rtprio": 9, "memlock": 9, "102400": 9, "appli": [9, 15, 27, 33, 44], "log": 9, "again": [9, 11, 18, 22, 27], "activate_components_on_start": 9, "empti": [9, 35, 40, 44, 47], "attribut": [9, 27], "stai": 9, "unconfigur": [9, 11, 18, 27], "configure_components_on_start": 9, "update_r": [9, 36, 45, 50], "frequenc": 9, "startup": 9, "h": [9, 14, 15, 35], "param_fil": 9, "controller_typ": 9, "timeout": [9, 15, 39, 42, 47, 48], "controller_manager_timeout": 9, "argument": [9, 14, 15, 18, 21, 22, 23, 24, 25, 26, 28], "exit": [9, 15], "leav": 9, "namespac": [9, 14, 27, 34, 35, 41], "kill": [9, 15, 27], "wait": [9, 15, 26, 42], "until": [9, 27, 42, 43], "mai": [9, 11, 24, 34, 36, 45, 50], "taken": [9, 47], "becaus": [9, 12, 18, 20, 21, 22, 23, 24, 25, 26, 28, 43], "rclcpp": [9, 14, 27, 35], "than": [9, 39, 42, 44, 47], "global": 9, "remap": 9, "forcibli": 9, "lead": [9, 44], "duplic": [9, 47], "occur": [9, 27], "whether": 9, "sibl": 9, "hierarchi": 9, "workaround": 9, "nodeopt": 9, "pass": [9, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28], "caus": [9, 43, 44, 47], "get_cm_node_opt": 9, "arg": 9, "_target_node_nam": 9, "__node": 9, "dst_node_nam": 9, "std": [9, 27, 42], "make_shar": 9, "some_optional_namespac": 9, "simplest": 9, "switch_control": [9, 18], "broadcast": [9, 12, 13, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 41], "achiev": [9, 27, 36, 45, 50], "return": [9, 11, 14, 18, 27, 35, 39, 41, 43, 44], "NOT": 9, "FOR": 9, "detect": 9, "listen": [9, 42], "doxygen": [10, 14], "cascad": 10, "return_typ": [11, 27, 35], "on_error": [11, 14, 27], "previous_st": [11, 27], "success": [11, 14, 27, 35, 39, 44], "callbackreturn": [11, 14, 27], "failur": 11, "recov": 11, "reload": [11, 15], "substanti": 11, "renam": 11, "on_init": [11, 14, 27, 35], "baseinterfac": 11, "remov": 11, "base_interfac": 11, "hpp": [11, 14, 16, 27, 31, 35], "hardware_interface_status_valu": 11, "rclcpp_lifecycl": [11, 14, 27, 35], "strictli": [11, 12], "status_": 11, "in_deactiv": 11, "undefin": 11, "refern": 11, "symbol": 11, "node_interfac": [11, 27], "lifecyclenodeinterfac": [11, 14, 27], "rclcpp_lifecyl": 11, "cmakelist": [11, 14, 27, 35], "txt": [11, 14, 27, 35], "devic": [12, 52], "associ": 12, "joint_state_broadcast": [12, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "coupl": 12, "ship": 12, "cannot": [12, 20, 27, 44], "keyword": 12, "digit": 12, "signal": 12, "electr": 12, "analog": 12, "within": [12, 18, 44], "vacuum": [12, 19], "flang": 12, "off": 12, "rrbotsystemmutiplegpio": 12, "example_param_hw_start_duration_sec": 12, "example_param_hw_stop_duration_sec": 12, "example_param_hw_slowdown": 12, "flange_digital_io": 12, "digital_output1": 12, "know": 12, "digital_output2": 12, "digital_input1": 12, "digital_input2": 12, "flange_analog_io": [12, 19], "analog_output1": [12, 19], "analog_input1": [12, 19], "analog_input2": [12, 19], "flange_vacuum": [12, 19], "suction": 12, "grasp": 12, "multimod": 12, "multimodalgripp": 12, "parallel_fing": 12, "temperatur": [12, 16], "feedback": [12, 13, 21, 41, 42, 44, 47, 48], "adjust": [12, 15, 18, 27], "calibr": 12, "2d": [12, 24, 25], "ft": [12, 24, 25, 37], "choic": [12, 47], "matric": 12, "rrbotforcetorquesensor2d": 12, "forcetorquesensor2dhardwar": 12, "fx": 12, "tz": 12, "kuka_tcp": 12, "fx_rang": 12, "tz_rang": 12, "temp_feedback": 12, "calibration_matrix_nr": 12, "mirror": 13, "correspond": [13, 14, 27, 35, 47, 53], "offlin": 13, "advantag": 13, "pipe": 13, "even": [13, 20, 44], "debug": 13, "boost": 13, "mimic": 13, "offset": [13, 41, 42], "fake": 13, "disable_command": 13, "boolean": [13, 41, 42], "erron": [13, 27], "noth": 13, "suddenli": 13, "Or": [13, 18, 23, 24, 25, 26, 28, 29], "mock_sensor_command": 13, "position_state_following_offset": 13, "custom_interface_with_following_offset": 13, "map": [13, 41, 44], "compil": [14, 27, 29, 35], "prepar": [14, 23, 35], "ament_cmak": [14, 35], "search": [14, 35], "recent": [14, 35], "pkg": [14, 35], "package_nam": [14, 35], "alreadi": [14, 15, 16, 18, 20, 27, 29, 35, 44], "robot_hardware_interface_nam": 14, "visibility_control": [14, 35], "window": [14, 35], "copi": [14, 35], "prefix": [14, 31, 35, 37, 40, 46], "guard": [14, 35], "ifndef": [14, 35], "preprocessor": [14, 35], "engin": [14, 35], "friend": [14, 35], "interface_typ": [14, 35], "uniqu": [14, 27, 35], "written": [14, 21, 26, 27, 35], "snake_cas": [14, 35], "interfacetyp": 14, "hardwareinterfacenam": 14, "public": [14, 27, 35], "on_cleanup": [14, 27], "on_shutdown": [14, 27], "overrid": [14, 27, 35, 36, 44, 45, 50], "export_state_interfac": [14, 27], "export_command_interfac": [14, 27], "prepare_command_mode_switch": 14, "perform_command_mode_switch": 14, "further": [14, 35], "exact": [14, 35], "simplifi": [14, 27, 35, 53], "valid": [14, 16, 46], "fine": [14, 22, 35], "otherwis": [14, 16, 35, 41, 42], "opposit": [14, 35], "remind": 14, "full": [14, 16, 35], "joint_nam": [14, 31, 35, 42], "shutdown": [14, 27], "gracefulli": 14, "store": [14, 35], "close": [14, 35], "class_list_macro": [14, 27, 35], "my_hardware_interface_packag": 14, "robothardwareinterfacenam": 14, "second": [14, 15, 18, 20, 23, 24, 25, 26, 27, 28, 29, 35, 43, 53], "visibl": [14, 35], "mock_compon": [14, 22], "bottom": [14, 27, 35], "test_load_": [14, 35], "load_generic_system_2dof": 14, "test_generic_system": 14, "find_packag": [14, 35], "directori": [14, 35], "ament": [14, 35], "cmake": 14, "pluginlib_export_plugin_description_fil": [14, 27, 35], "ament_cmake_gmock": [14, 35], "ament_add_gmock": [14, 35], "ament_export_librari": [14, 35], "ament_packag": [14, 35], "test_depend": [14, 35], "rememb": [14, 35], "root": [14, 35], "workspac": [14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "enjoi": [14, 35], "great": [14, 35], "templat": [14, 16, 27, 35], "shell": [14, 35], "onward": 14, "spin": 15, "spin_tim": 15, "hidden": 15, "discoveri": 15, "daemon": 15, "test_controller_nam": 15, "test_control": 15, "diffdrivecontrol": [15, 22], "verbos": 15, "label": [15, 21, 22, 24, 25, 26, 43], "unclaim": [15, 20, 23], "inact": [15, 18, 23, 27], "ctrl1": 15, "ctrl2": 15, "strict": 15, "asap": 15, "switch_timeout": 15, "diagram": 15, "tmp": 15, "controller_diagram": 15, "gv": 15, "pdf": [15, 27], "demonstr": [16, 18, 20, 22, 23, 28, 29], "prove": 16, "checkout": 16, "roscon2022_workshop": 16, "hardwareinterfac": [16, 27], "diffbot": 16, "degre": [16, 27, 44, 47], "freedom": [16, 27, 47], "components_architecture_and_urdf_exampl": 16, "revolut": [16, 18, 20, 27, 28], "drive": [16, 22, 30, 32, 33, 34, 47, 48, 49, 53], "accord": [16, 22, 27], "intermedi": 16, "car": 16, "steer": [16, 30, 32, 34, 47, 48, 49], "tba": 16, "tabl": 16, "offici": [16, 52], "easili": 16, "aptitud": 16, "might": [16, 43], "own": [16, 18, 27], "git": [16, 27], "clone": [16, 27], "b": [16, 27], "merg": 16, "f": 16, "procedur": 16, "rviz2": [16, 18, 29], "visual": [16, 18, 25, 27, 41], "joint_state_publisher_gui": [16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "bring": 16, "ros2_control_demo_example_1": [16, 18], "view_robot": [16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "omit": 16, "termin": [16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "example_1": [16, 18, 19, 20, 29], "rviz": [16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 41], "slider": 16, "around": [16, 37, 40, 42, 46], "ros2_control_demo_example_2": [16, 22], "come": [16, 44], "categori": 16, "individu": [16, 35, 46], "position_in_degre": 16, "hardware_interface_type_valu": [16, 31], "6dof": 16, "variou": [18, 28], "invert": 18, "pendulum": 18, "fun": 18, "proprietari": [18, 21, 22, 23, 24, 25, 26, 28], "view": [18, 27], "recreat": 18, "robotmodel": 18, "displai": [18, 20, 21, 23, 24, 25, 26, 28, 29], "ros2_control_demo_descript": 18, "ok": [18, 21, 22, 23, 24, 25, 26, 27, 28, 35], "warn": [18, 21, 22, 23, 24, 25, 26, 28, 41], "invalid": [18, 21, 22, 23, 24, 25, 26, 28], "frame": [18, 21, 22, 23, 24, 25, 26, 27, 28, 37], "odom": [18, 21, 22, 23, 24, 25, 26, 28, 33, 47], "cantransform": [18, 21, 22, 23, 24, 25, 26, 28], "target_fram": [18, 21, 22, 23, 24, 25, 26, 28], "happen": [18, 21, 22, 23, 24, 25, 26, 27, 28], "ctrl": 18, "lot": [18, 20, 21, 22, 23, 24, 25, 26, 28], "exemplari": [18, 21, 23, 24, 25, 26, 28, 30, 32, 47, 49], "orang": [18, 20, 21, 22, 23, 24, 25, 26, 28, 29], "yellow": [18, 20, 21, 23, 24, 25, 26, 28, 29], "rectangl": [18, 20, 21, 23, 24, 25, 26, 28], "introspect": [18, 20, 21, 22, 23, 24, 25, 26, 28], "list_hardware_interfac": [18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "entrypoint": 18, "nomin": 18, "marker": [18, 20, 21, 22, 23, 24, 25, 26, 28, 29], "list_control": [18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "jointstatebroadcast": [18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "forward_position_control": [18, 19, 20, 23, 24, 25, 26, 28, 29], "forward_command_control": [18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 36, 45, 50], "pub": [18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "std_msg": [18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 36, 38, 45, 50], "float64multiarrai": [18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 36, 38, 45, 50], "everi": [18, 23, 24, 25, 26, 27, 28, 29, 38, 42, 53], "test_forward_position_control": [18, 23, 24, 25, 26, 28, 29], "block": [18, 20, 21, 23, 24, 25, 26, 27, 28], "got": [18, 19, 20, 21, 22, 23, 24, 25, 26], "50000": [18, 20, 24, 25, 26], "echo": [18, 19, 20, 22, 24, 25, 29], "joint_stat": [18, 20, 22, 29, 41], "dynamic_joint_st": [18, 20, 29, 41], "load_control": 18, "joint_trajectory_position_control": 18, "successfulli": [18, 21, 26], "set_controller_st": 18, "rrbot_control": [18, 19, 20, 28, 29], "four": [18, 21, 30], "test_joint_trajectory_control": 18, "rrbot_joint_trajectory_publish": 18, "rrbot_descript": [18, 19, 20, 21, 23, 24, 25, 26, 28, 29], "rrbot_forward_position_publish": [18, 29], "ros2_control_demo_example_10": 19, "contrast": 19, "gpio_control": 19, "gpiocontrol": 19, "interface_nam": [19, 37, 38], "1199574016": 19, "1676318848": 19, "rrbotsystemwithgpiohardwar": 19, "gp": 19, "example_12": 20, "been": 20, "known": 20, "passthrough_control": 20, "ros2_control_demo_example_12": 20, "ident": [20, 22, 27, 29, 43], "joint2_position_control": 20, "passthroughcontrol": 20, "joint1_position_control": 20, "someth": 20, "automat": [20, 27, 29, 33, 48], "appear": 20, "whose": [20, 43], "henc": [20, 27], "launch_chained_control": 20, "position_control": [20, 34, 38], "streamlin": 20, "clearli": 20, "sent": [20, 42], "reflect": 20, "canopen_402": [21, 26], "modbu": [21, 26], "rs232": [21, 26], "rs485": [21, 26], "ros2_control_demo_example_14": 21, "rrbot_modular_actuators_without_feedback_sensors_for_position_feedback": 21, "list_hardware_compon": [21, 22, 24, 25, 26], "rrbotmodularjoint2": [21, 26], "rrbotactuatorwithoutfeedback": 21, "rrbotmodularjoint1": [21, 26], "rrbotmodularpositionsensorjoint2": 21, "rrbotsensorpositionfeedback": 21, "rrbotmodularpositionsensorjoint1": 21, "forward_velocity_control": [21, 23], "000000": 21, "00000": [21, 22, 23], "25300": 21, "rrbot_actuator_without_feedback": 21, "rrbot_sensor_for_position_feedback": 21, "example_2": 22, "excess": 22, "print": [22, 41], "left_wheel_joint": 22, "right_wheel_joint": 22, "diffbot_base_control": 22, "diff": 22, "geometry_msg": [22, 24, 25, 33, 37, 47], "twist": [22, 33, 47, 48], "linear": [22, 27, 33, 40, 43, 47, 48], "angular": [22, 33, 40, 47, 48], "circl": 22, "diffbotsystemhardwar": 22, "33333": 22, "faster": 22, "genericsystem": 22, "use_mock_hardwar": 22, "true": [22, 29, 33, 42, 43, 44, 47], "calculate_dynam": 22, "diffbot_control": 22, "diffbot_descript": 22, "diffbot_system": 22, "example_3": 23, "fri": [23, 52], "abb": [23, 52], "yumi": 23, "schunk": [23, 52], "lwa4p": 23, "illeg": 23, "declin": 23, "faulti": 23, "ros2_control_demo_example_3": 23, "rrbot_system_multi_interfac": 23, "robot_control": [23, 27], "spawn": 23, "forward_acceleration_control": 23, "velocity_control": [23, 34, 38], "jointgroupvelocitycontrol": 23, "rrbotsystemmultiinterfacehardwar": 23, "po": [23, 43], "78500": 23, "vel": [23, 47], "acc": 23, "control_lvl": 23, "forward_illegal1_control": 23, "forward_illegal2_control": 23, "1676209982": 23, "531163501": 23, "resource_manag": 23, "rrbotsystemmultiinterfac": 23, "did": 23, "531223835": 23, "sinc": [23, 27, 32], "reject": [23, 42, 43], "spawner": 23, "531717376": 23, "spawner_forward_illegal1_control": 23, "indic": [23, 27], "rrbot_multi_interface_forward_control": 23, "krc": 24, "prototyp": 24, "odri": [24, 52], "ros2_control_demo_example_4": 24, "rrbot_system_with_sensor": 24, "rrbotsystemwithsensor": 24, "rrbotsystemwithsensorhardwar": 24, "fts_broadcast": [24, 25], "force_torque_sensor_broadcast": [24, 25], "forcetorquesensorbroadcast": [24, 25], "wrench": [24, 25, 31], "republish": [24, 25], "wrenchstamp": [24, 25, 37], "stamp": [24, 25, 47], "sec": [24, 25], "1676444704": [24, 25], "nanosec": [24, 25], "332221422": [24, 25], "tool_link": [24, 25], "946532964706421": 24, "nan": [24, 42], "0540995597839355": 24, "rrbot_with_sensor_control": 24, "pc": 25, "3d": [25, 27], "ros2_control_demo_example_5": 25, "rrbot_system_with_external_sensor": 25, "externalrrbotftsensor": 25, "externalrrbotforcetorquesensorhardwar": 25, "2126582860946655": 25, "3202226161956787": 25, "4302282333374023": 25, "540233612060547": 25, "647800624370575": 25, "7602499723434448": 25, "rrbot_with_external_sensor_control": 25, "rrbot_system_position_onli": 25, "external_rrbot_force_torque_sensor": 25, "mara": 26, "ros2_control_demo_example_6": 26, "rrbot_modular_actu": 26, "rrbotmodularjoint": 26, "rrbot_actu": 26, "queri": [27, 44], "enhanc": 27, "deploi": 27, "oper": [27, 53], "pattern": 27, "vendor": 27, "runtim": 27, "program": 27, "conform": 27, "newest": 27, "characterist": 27, "tree": [27, 33], "primari": [27, 44], "commerci": 27, "scratch": 27, "illustr": 27, "stl": 27, "dae": 27, "coars": 27, "mesh": 27, "fast": [27, 52], "collis": 27, "express": 27, "vertic": 27, "transform": 27, "rotat": [27, 33, 42], "translat": [27, 33, 48], "proxim": 27, "face": 27, "co": 27, "planer": 27, "xy": 27, "plane": 27, "align": 27, "blender": 27, "begin": 27, "neg": [27, 42], "roll": 27, "pitch": 27, "yaw": 27, "repeat": 27, "robot_6_dof": 27, "base_link": [27, 47, 48], "link_0": 27, "inerti": 27, "mass": 27, "inertia": 27, "ixx": 27, "ixi": 27, "ixz": 27, "iyi": 27, "iyz": 27, "izz": 27, "tool0": 27, "base_joint": 27, "joint_1": 27, "link_1": 27, "061584": 27, "141592653589793": 27, "name_spac": 27, "class_nam": 27, "pi": [27, 42], "enclos": 27, "previous": 27, "left": 27, "zero": [27, 31, 42, 43], "rel": [27, 43], "center": 27, "uniform": 27, "consecut": 27, "motion": [27, 42], "subsequ": 27, "join": [27, 53], "speci": 27, "verifi": 27, "urdf_to_graphviz": 27, "r6bot": 27, "explain": 27, "robotsystem": 27, "ur5": 27, "five": 27, "hardware_interface_return_valu": 27, "hardware_interface_publ": 27, "commandinterfac": 27, "durat": 27, "period": [27, 42], "privat": 27, "memori": [27, 35], "alloc": 27, "establish": 27, "angl": [27, 32, 47], "notabl": 27, "vari": 27, "fill": 27, "field": [27, 41, 43], "suppos": [27, 43], "tcp_force_torque_sensor": 27, "Their": 27, "pointer": 27, "info_": 27, "state_interfaces_": 27, "nearli": 27, "previou": [27, 43, 53], "command_interfaces_": 27, "constraint": [27, 35, 39, 40, 42, 44, 47], "respons": 27, "turn": 27, "oppos": [27, 44], "tcp": [27, 31], "packet": 27, "robot_6_dof_hardwar": 27, "discov": 27, "library_nam": 27, "base_class_typ": 27, "human": 27, "notic": [27, 43], "just": 27, "add_librari": 27, "robot_hardwar": 27, "unlik": 27, "finit": 27, "certain": [27, 36, 45, 50], "transit": [27, 43], "robotcontrol": 27, "nine": 27, "six": [27, 37], "callback": 27, "lifetim": 27, "restart": 27, "reconfigur": 27, "buffer": [27, 53], "reset": [27, 47], "transfer": 27, "eventu": 27, "mutex": 27, "guarante": [27, 43], "never": 27, "release_interfac": 27, "shut": 27, "free": [27, 33], "cleanup": 27, "r6bot_control": 27, "view_r6bot": 27, "ros2_control_demo_example_7": 27, "send_trajectori": 27, "circular": 27, "ros2_control_demo_example_8": 28, "rrbot_transmissions_system_position_onli": 28, "rrbottransmissionssystempositiononlyhardwar": 28, "transmission1": 28, "actuator1": 28, "transmission2": 28, "actuator2": 28, "383253": 28, "766505": 28, "53301": 28, "example_9": 29, "later": [29, 43], "ros2_control_demo_example_9": 29, "rrbot_gazebo_class": 29, "usr": 29, "ax": [30, 32, 37, 40, 49], "wheel": [30, 32, 33, 47, 49], "traction": [30, 32, 47, 48, 49], "steerabl": [30, 32, 49], "generate_parameter_librari": [30, 31, 32, 38, 39, 40, 47, 49], "parameter": [30, 32, 47, 49], "front_wheel_track": 30, "front": [30, 31, 32, 47, 49], "length": [30, 40, 47, 49], "en": [30, 32, 49], "wikipedia": [30, 32, 47, 49, 53], "wiki": [30, 32, 43, 44, 49], "wheelbas": [30, 32, 49], "rear_wheel_track": 30, "rear": [30, 32, 47, 49], "distanc": [30, 32, 44, 46, 49], "front_wheels_radiu": [30, 49], "radiu": [30, 32, 49], "rear_wheels_radiu": [30, 49], "chainedcontrollerinterfac": 31, "joint_refer": 31, "trajectory_msg": [31, 43, 44], "jointtrajectorypoint": [31, 43], "admittancecontrollerst": 31, "ft_sensor": 31, "sensor_nam": [31, 37, 40, 46], "ackermann": [32, 34, 47], "vehicl": 32, "probabl": 32, "front_wheel_radiu": 32, "rear_wheel_radiu": 32, "bodi": 33, "odometri": [33, 47, 48], "space": [33, 44], "hw_if_posit": [33, 34, 47], "hw_if_veloc": [33, 34, 47], "position_feedback": [33, 47], "twiststamp": [33, 47], "use_stamped_vel": [33, 47], "nav_msg": [33, 47], "estim": 33, "tf": [33, 47], "tf2_msg": [33, 47], "tfmessag": [33, 47], "enable_odom_tf": [33, 47], "cmd_vel_out": 33, "publish_limited_veloc": 33, "jointlimit": 33, "joint_limit": 33, "commonli": 34, "bicycl": [34, 47], "effort_control": [34, 38], "hw_if_acceler": 34, "hw_if_effort": 34, "represent": [34, 44], "controllernam": 35, "protect": 35, "reserv": 35, "importantli": 35, "ask": [35, 41], "sort": 35, "controller_name_namespac": 35, "controller_name_packag": 35, "ros2_control_test_asset": 35, "special": [36, 43, 45, 50], "hz": [36, 39, 45, 50], "wrapper": [37, 40, 46], "forcetorquesensor": 37, "6d": 37, "per": 37, "less": [37, 47], "example_nam": 37, "example_interfac": 37, "feedforward": 38, "multi_interface_forward_command_control": 38, "string_arrai": [38, 47], "action_monitor_r": [39, 42, 44], "greater": [39, 42], "equal": [39, 40], "goal_toler": 39, "max_effort": 39, "allow_stal": 39, "stall": 39, "stall_velocity_threshold": 39, "threshold": 39, "001": 39, "stall_timeout": 39, "imusensor": 40, "orient": 40, "angular_veloc": 40, "linear_acceler": 40, "static_covariance_orient": 40, "double_arrai": [40, 47], "static": 40, "covari": [40, 47], "row": 40, "static_covariance_angular_veloc": 40, "static_covariance_linear_acceler": 40, "unless": 41, "latter": 41, "matrix": [41, 47], "product": 41, "use_local_top": 41, "my_state_broadcast": 41, "arrai": 41, "extra_joint": 41, "map_interface_to_joint_st": 41, "usecas": 41, "hydraul": [41, 42], "relianc": 41, "techniqu": 41, "slightli": 41, "custom_interfac": 41, "kf_estimated_posit": 41, "derived_veloc": 41, "derived_effort": 41, "torque_sensor": 41, "current_sensor": 41, "command_joint": 42, "jtc": 42, "state_publish_r": [42, 44], "monitor": [42, 44], "allow_partial_joints_go": [42, 44], "allow_integration_in_goal_trajectori": [42, 43], "interpolation_method": 42, "interpol": [42, 44], "spline": 42, "open_loop_control": [42, 44], "gain": 42, "numer": 42, "numeric_limit": 42, "quiet_nan": 42, "start_with_hold": 42, "hold": [42, 43], "allow_nonzero_velocity_at_trajectory_end": 42, "cmd_timeout": 42, "stale": 42, "count": 42, "goal_tim": [42, 44], "toler": [42, 44], "jointtrajectori": [42, 43, 44], "stopped_velocity_toler": [42, 44], "deviat": 42, "maxim": 42, "reach": [42, 43, 44], "predefin": 42, "infinit": 42, "amount": 42, "law": [42, 44], "k_": 42, "ff": 42, "v_d": 42, "k_p": 42, "k_i": 42, "sum": 42, "dt": 42, "k_d": 42, "angle_wraparound": 42, "i_clamp": 42, "clamp": 42, "symmetr": 42, "ff_velocity_scal": 42, "feed": 42, "wrap": [42, 44], "ie": [42, 43], "shortest": 42, "s_d": 42, "saniti": 43, "sampl": [43, 47], "segment": [43, 44], "fault": 43, "datapoint": 43, "deduc": 43, "nor": 43, "discourag": 43, "yield": 43, "discontinu": [43, 44], "cubic": 43, "quintic": 43, "heun": 43, "grid": 43, "10m": 43, "deduct": 43, "nonzero": 43, "inconsist": 43, "overshoot": 43, "timestamp": 43, "arriv": 43, "necessarili": 43, "discard": 43, "substitut": 43, "smarter": 43, "preserv": 43, "flat": 43, "grei": 43, "red": 43, "traj": 43, "time_from_start": 43, "splice": 43, "append": 43, "held": [43, 44], "smooth": [43, 53], "longer": 43, "slower": 43, "effect": 43, "Of": 43, "interest": 43, "adolfo": [43, 44], "rodriguez": [43, 44], "instant": 44, "citat": 44, "adapt": 44, "restrict": 44, "present": 44, "robust": 44, "clock": 44, "queu": 44, "joint3": 44, "joint4": 44, "joint5": 44, "joint6": 44, "preempt": 44, "cancel": 44, "notifi": 44, "abort": 44, "legal": 44, "subset": 44, "favor": 44, "violat": 44, "joint_trajectori": 44, "fire": 44, "sender": 44, "query_st": 44, "cumbersom": 44, "controller_st": [44, 47], "jointtrajectorycontrollerst": 44, "querytrajectoryst": 44, "footnot": 44, "rangesensor": 46, "radiation_typ": 46, "int": [46, 47], "radiat": 46, "ultrason": 46, "infrar": 46, "field_of_view": 46, "arc": 46, "rad": [46, 47], "min_rang": 46, "minimum": 46, "m": [46, 47], "max_rang": 46, "maximum": 46, "nomenclatur": 47, "unstamp": 47, "concret": 47, "tricylc": 47, "seer": 47, "front_steer": 47, "front_wheels_nam": 47, "rear_wheels_nam": 47, "traction_feedback_typ": 47, "in_chained_mod": 47, "reference_unstamp": 47, "tf_odometri": 47, "steeringcontrollerstatu": 47, "reference_timeout": 47, "unwant": 47, "danger": 47, "behaviour": 47, "rear_wheels_state_nam": 47, "front_wheels_state_nam": 47, "open_loop": 47, "velocity_rolling_window_s": 47, "number": 47, "averag": 47, "base_frame_id": 47, "odom_frame_id": 47, "twist_covariance_diagon": 47, "diagon": 47, "pose_covariance_diagon": 47, "pose": 47, "wheel_track": 49, "page": [51, 52], "isaac": 51, "webot": 51, "manufactur": 52, "franka": 52, "emika": 52, "xarm": 52, "flexiv": 52, "rizon": 52, "igu": 52, "commonplac": 52, "husarion": 52, "rosbot": 52, "xl": 52, "2r": 52, "pro": 52, "openmanipul": 52, "clearpath": 52, "jackal": 52, "j100": 52, "huski": 52, "a200": 52, "unoffici": 52, "iiwa": 52, "lbr": 52, "iiqka": 52, "eci": 52, "sunris": 52, "kss": 52, "egm": 52, "mitsubishi": 52, "rv1a": 52, "protocol": 52, "ethercat": 52, "canopen": 52, "svh": 52, "finger": 52, "dimens": 52, "haptic": 52, "odriv": 52, "ndi": 52, "pca9685": 52, "bit": 52, "pwm": 52, "servo": 52, "hoverboard": 52, "overcom": 53, "idea": 53, "wide": 53, "toolkit": 53, "unreleas": 53, "question": 53, "wg": 53, "wednesdai": 53, "announc": 53, "discours": 53, "googl": 53, "bug": 53, "tracker": 53, "reproduc": 53, "regard": 53, "built": 53, "gmt": 53}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"acknowledg": 0, "maintain": 0, "review": 0, "stat": 0, "contributor": 0, "compani": 0, "institut": 0, "contribut": 1, "pull": 1, "request": 1, "rule": 1, "repositori": [1, 16, 53], "process": [1, 9], "merg": 1, "write": [1, 11, 14, 27, 35], "document": [1, 8, 10, 53], "structur": [1, 2], "ci": 1, "configur": 1, "usag": [1, 3, 5], "differ": 2, "ros_control": 2, "ros1": [2, 6], "hardwar": [2, 4, 6, 9, 11, 12, 14, 27, 38, 41, 44], "class": [2, 8], "interfac": [2, 4, 12, 15, 19, 23, 27, 28, 31, 33, 36, 38, 41, 44, 45, 47, 50], "control": [2, 3, 4, 5, 6, 8, 9, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 35, 36, 38, 39, 44, 45, 47, 50, 51], "": [2, 33, 44, 47], "access": 2, "migrat": [2, 11], "guid": 2, "ros2_control": [2, 3, 5, 6, 10, 12, 16, 27, 31, 34, 53], "robothardwar": 2, "compon": [2, 4, 6, 11, 13, 14], "gazebo_ros2_control": 3, "modifi": [3, 5], "build": [3, 4, 5, 16], "your": [3, 4, 5], "own": [3, 5], "To": [3, 5, 16], "run": [3, 4, 5, 16], "demo": [3, 5, 6, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "add": [3, 5, 6], "tag": [3, 5], "urdf": [3, 4, 5, 27], "simpl": [3, 5], "setup": [3, 5], "us": [3, 5, 8, 9, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 35, 44], "mimic": [3, 5], "joint": [3, 5, 12, 13, 44], "simul": [3, 5, 29, 51], "plugin": [3, 5, 27], "default": [3, 5], "behavior": [3, 5], "advanc": [3, 5], "custom": [3, 5], "set": [3, 5], "up": [3, 5], "gazebo_ros2_control_demo": 3, "get": 4, "start": 4, "instal": [4, 16], "binari": 4, "packag": [4, 16], "from": [4, 6, 11, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 47], "sourc": [4, 16], "architectur": 4, "manag": [4, 8, 9], "resourc": [4, 7, 8], "user": 4, "descript": [4, 27, 33, 44, 47], "framework": 4, "robot": [4, 7, 16, 19, 21, 23, 24, 25, 26, 27, 28, 34, 52], "gz_ros2_control": 5, "gz_ros2_control_demo": 5, "project": 6, "idea": 6, "gsoc": 6, "2024": 6, "tutori": [6, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "mission": 6, "support": [6, 52], "semant": 6, "featur": [6, 10, 33, 44, 48], "pariti": 6, "present": 7, "2023": 7, "02": 7, "ro": [7, 31, 33, 36, 38, 45, 50, 51], "meetup": 7, "munich": 7, "5": [7, 25], "2022": 7, "12": [7, 20], "industri": [7, 19, 24, 25, 28], "confer": 7, "10": [7, 19], "roscon": 7, "06": 7, "fr": 7, "2021": 7, "world": 7, "07": 7, "weekli": 7, "13": 7, "rosdevdai": 7, "05": 7, "diagram": 7, "imag": 7, "chain": [8, 20], "cascad": 8, "scope": 8, "background": 8, "knowledg": 8, "motiv": 8, "purpos": 8, "implement": 8, "A": 8, "base": 8, "chainablecontrol": 8, "inner": 8, "activ": 8, "deactiv": 8, "debug": 8, "output": [8, 33], "close": 8, "remark": 8, "determin": 9, "paramet": [9, 13, 30, 31, 32, 33, 36, 37, 38, 39, 40, 41, 42, 45, 46, 47, 49, 50], "helper": 9, "script": 9, "spawner": 9, "unspawn": 9, "concept": [9, 10], "restart": 9, "all": 9, "api": 10, "guidelin": [11, 34], "best": [11, 34], "practic": [11, 34], "handl": 11, "error": 11, "happen": 11, "dure": 11, "read": 11, "call": 11, "foxi": 11, "newer": 11, "version": 11, "type": [12, 38, 41, 44], "sensor": [12, 24, 25, 37, 40, 46], "gpio": [12, 19], "exampl": [12, 16, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 43], "mock": 13, "gener": 13, "system": 13, "per": 13, "extern": [14, 25, 35], "refer": [14, 31, 33, 35, 44, 47], "command": [15, 31, 41, 44, 47, 48], "line": 15, "list_control": 15, "list_controller_typ": 15, "list_hardware_compon": 15, "list_hardware_interfac": 15, "load_control": 15, "reload_controller_librari": 15, "set_controller_st": 15, "switch_control": 15, "unload_control": 15, "view_controller_chain": 15, "what": 16, "you": 16, "can": 16, "find": 16, "thi": [16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "goal": 16, "overview": [16, 27], "local": 16, "debian": 16, "docker": 16, "view": 16, "quick": 16, "hint": 16, "1": [18, 44], "rrbot": [18, 20, 29], "step": [18, 20, 21, 22, 23, 24, 25, 26, 28, 29], "file": [18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "14": 21, "modular": [21, 26], "actuat": [21, 26], "provid": 21, "state": [21, 31, 44, 47], "diffbot": 22, "3": 23, "multipl": 23, "4": 24, "integr": [24, 51], "connect": 25, "6": 26, "separ": 26, "commun": [26, 51, 53], "each": 26, "7": 27, "full": 27, "6dof": 27, "geometri": 27, "cmake": 27, "librari": 27, "launch": 27, "8": 28, "an": 28, "expos": 28, "transmiss": 28, "9": 29, "ackermann_steering_control": 30, "admitt": 31, "2": [31, 33, 36, 38, 45, 50], "topic": [31, 36, 38, 45, 50], "bicycle_steering_control": 32, "diff_drive_control": 33, "other": [33, 34, 44, 48], "feedback": 33, "subscrib": [33, 44, 47], "publish": [33, 44, 47], "mobil": 34, "manipul": 34, "broadcast": [34, 37, 40, 46], "new": 35, "effort_control": 36, "jointgroupeffortcontrol": 36, "forc": 37, "torqu": 37, "forward_command_control": 38, "gripper": 39, "action": [39, 44], "imu": 40, "joint_state_broadcast": 41, "detail": 42, "about": 42, "trajectori": [43, 44], "represent": 43, "interpol": 43, "method": 43, "none": 43, "spline": 43, "visual": 43, "replac": 43, "joint_trajectory_control": 44, "preemption": 44, "polici": 44, "servic": 44, "further": 44, "inform": 44, "position_control": 45, "jointgrouppositioncontrol": 45, "rang": 46, "steering_controllers_librari": 47, "execut": 47, "logic": 47, "preced": 47, "tricycle_control": 48, "veloc": 48, "tricycle_steering_control": 49, "velocity_control": 50, "jointgroupvelocitycontrol": 50, "host": 51, "welcom": 53, "humbl": 53, "develop": 53, "organis": 53}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx": 60}, "alltitles": {"Acknowledgements": [[0, "acknowledgements"]], "Maintainers": [[0, "maintainers"]], "Reviewers\u2019 Stats": [[0, "reviewers-stats"]], "Contributors": [[0, "contributors"]], "Companies and Institutions": [[0, "companies-and-institutions"]], "Contributing": [[1, "contributing"]], "Pull Requests": [[1, "pull-requests"]], "Rules for the repositories and process of merging pull requests": [[1, "rules-for-the-repositories-and-process-of-merging-pull-requests"]], "Writing documentation": [[1, "writing-documentation"]], "Repository structure and CI configuration": [[1, "repository-structure-and-ci-configuration"]], "CI configuration": [[1, "ci-configuration"]], "Documentation Usage": [[1, "documentation-usage"]], "Differences to ros_control (ROS1)": [[2, "differences-to-ros-control-ros1"]], "Hardware Structures - classes": [[2, "hardware-structures-classes"]], "Hardware Interfaces": [[2, "hardware-interfaces"]], "Controller\u2019s Access to Hardware": [[2, "controller-s-access-to-hardware"]], "Migration Guide to ros2_control": [[2, "migration-guide-to-ros2-control"]], "RobotHardware to Components": [[2, "robothardware-to-components"]], "Controller Migration": [[2, "controller-migration"]], "gazebo_ros2_control": [[3, "gazebo-ros2-control"]], "Usage": [[3, "usage"], [5, "usage"]], "Modifying or building your own": [[3, "modifying-or-building-your-own"], [5, "modifying-or-building-your-own"]], "To run the demo": [[3, "to-run-the-demo"], [5, "to-run-the-demo"]], "Add ros2_control tag to a URDF": [[3, "add-ros2-control-tag-to-a-urdf"], [5, "add-ros2-control-tag-to-a-urdf"]], "Simple setup": [[3, "simple-setup"], [5, "simple-setup"]], "Using mimic joints in simulation": [[3, "using-mimic-joints-in-simulation"], [5, "using-mimic-joints-in-simulation"]], "Add the gazebo_ros2_control plugin": [[3, "add-the-gazebo-ros2-control-plugin"]], "Default gazebo_ros2_control Behavior": [[3, "default-gazebo-ros2-control-behavior"]], "Advanced: custom gazebo_ros2_control Simulation Plugins": [[3, "advanced-custom-gazebo-ros2-control-simulation-plugins"]], "Set up controllers": [[3, "set-up-controllers"], [5, "set-up-controllers"]], "gazebo_ros2_control_demos": [[3, "gazebo-ros2-control-demos"]], "Getting Started": [[4, "getting-started"]], "Installation": [[4, "installation"], [16, "installation"]], "Binary packages": [[4, "binary-packages"]], "Building from Source": [[4, "building-from-source"]], "Architecture": [[4, "architecture"]], "Controller Manager": [[4, "controller-manager"], [9, "controller-manager"]], "Resource Manager": [[4, "resource-manager"]], "Controllers": [[4, "controllers"]], "User Interfaces": [[4, "user-interfaces"]], "Hardware Components": [[4, "hardware-components"], [11, "hardware-components"]], "Hardware Description in URDF": [[4, "hardware-description-in-urdf"]], "Running the Framework for Your Robot": [[4, "running-the-framework-for-your-robot"]], "gz_ros2_control": [[5, "gz-ros2-control"]], "Add the gz_ros2_control plugin": [[5, "add-the-gz-ros2-control-plugin"]], "Default gz_ros2_control Behavior": [[5, "default-gz-ros2-control-behavior"]], "Advanced: custom gz_ros2_control Simulation Plugins": [[5, "advanced-custom-gz-ros2-control-simulation-plugins"]], "gz_ros2_control_demos": [[5, "gz-ros2-control-demos"]], "Project Ideas for GSoC 2024": [[6, "project-ideas-for-gsoc-2024"]], "Tutorials and Demos for ros2_control": [[6, "tutorials-and-demos-for-ros2-control"]], "Mission-Control for ros2_control": [[6, "mission-control-for-ros2-control"]], "Add support for hardware semantic components": [[6, "add-support-for-hardware-semantic-components"]], "Feature-parity for controllers from ROS1": [[6, "feature-parity-for-controllers-from-ros1"]], "Resources": [[7, "resources"]], "Presentations": [[7, "presentations"]], "2023-02 ROS Meetup Munich #5": [[7, "ros-meetup-munich-5"]], "2022-12 ROS-Industrial Conference 2022": [[7, "ros-industrial-conference-2022"]], "2022-10 ROSCon 2022": [[7, "roscon-2022"]], "2022-06 ROSCon Fr 2022": [[7, "roscon-fr-2022"]], "2021-10 ROS World 2021": [[7, "ros-world-2021"]], "2021-10-07 Weekly Robotics Meetup #13": [[7, "weekly-robotics-meetup-13"]], "2021-06 ROSDevDay 2021": [[7, "rosdevday-2021"]], "2021-05 ROSCon Fr 2021": [[7, "roscon-fr-2021"]], "Diagrams": [[7, "diagrams"]], "Images": [[7, "images"]], "Controller Chaining / Cascade Control": [[8, "controller-chaining-cascade-control"]], "Scope of the Document and Background Knowledge": [[8, "scope-of-the-document-and-background-knowledge"]], "Motivation, Purpose and Use": [[8, "motivation-purpose-and-use"]], "Implementation": [[8, "implementation"]], "A Controller Base-Class: ChainableController": [[8, "a-controller-base-class-chainablecontroller"]], "Inner Resource Management": [[8, "inner-resource-management"]], "Activation and Deactivation Chained Controllers": [[8, "activation-and-deactivation-chained-controllers"]], "Debugging outputs": [[8, "debugging-outputs"]], "Closing remarks": [[8, "closing-remarks"]], "Determinism": [[9, "determinism"]], "Parameters": [[9, "parameters"], [13, "parameters"], [30, "parameters"], [31, "parameters"], [32, "parameters"], [33, "parameters"], [36, "parameters"], [37, "parameters"], [38, "parameters"], [39, "parameters"], [40, "parameters"], [41, "parameters"], [45, "parameters"], [46, "parameters"], [47, "parameters"], [49, "parameters"], [50, "parameters"]], "Helper scripts": [[9, "helper-scripts"]], "spawner": [[9, "spawner"]], "unspawner": [[9, "unspawner"]], "Using the Controller Manager in a Process": [[9, "using-the-controller-manager-in-a-process"]], "Concepts": [[9, "concepts"], [10, "concepts"]], "Restarting all controllers": [[9, "restarting-all-controllers"]], "Restarting hardware": [[9, "restarting-hardware"]], "ros2_control": [[10, "ros2-control"]], "API Documentation": [[10, "api-documentation"]], "Features": [[10, "features"]], "Guidelines and Best Practices": [[11, "guidelines-and-best-practices"], [34, "guidelines-and-best-practices"]], "Handling of errors that happen during read() and write() calls": [[11, "handling-of-errors-that-happen-during-read-and-write-calls"]], "Migration from Foxy to newer versions": [[11, "migration-from-foxy-to-newer-versions"]], "ros2_control hardware interface types": [[12, "ros2-control-hardware-interface-types"]], "Joints": [[12, "joints"]], "Sensors": [[12, "sensors"]], "GPIOs": [[12, "gpios"]], "Examples": [[12, "examples"], [16, "examples"]], "Mock Components": [[13, "mock-components"]], "Generic System": [[13, "generic-system"]], "Per-joint Parameters": [[13, "per-joint-parameters"]], "Writing a Hardware Component": [[14, "writing-a-hardware-component"]], "Useful External References": [[14, "useful-external-references"], [35, "useful-external-references"]], "Command Line Interface": [[15, "command-line-interface"]], "list_controllers": [[15, "list-controllers"]], "list_controller_types": [[15, "list-controller-types"]], "list_hardware_components": [[15, "list-hardware-components"]], "list_hardware_interfaces": [[15, "list-hardware-interfaces"]], "load_controller": [[15, "load-controller"]], "reload_controller_libraries": [[15, "reload-controller-libraries"]], "set_controller_state": [[15, "set-controller-state"]], "switch_controllers": [[15, "switch-controllers"]], "unload_controller": [[15, "unload-controller"]], "view_controller_chains": [[15, "view-controller-chains"]], "Demos": [[16, "demos"]], "What you can find in this repository": [[16, "what-you-can-find-in-this-repository"]], "Goals": [[16, "goals"]], "Examples Overview": [[16, "examples-overview"]], "Local installation": [[16, "local-installation"]], "Build from debian packages": [[16, "build-from-debian-packages"]], "Build from source": [[16, "build-from-source"]], "Using Docker": [[16, "using-docker"]], "To view the robot": [[16, "to-view-the-robot"]], "To run the ros2_control demos": [[16, "to-run-the-ros2-control-demos"]], "Quick Hints": [[16, "quick-hints"]], "Example 1: RRBot": [[18, "example-1-rrbot"]], "Tutorial steps": [[18, "tutorial-steps"], [20, "tutorial-steps"], [21, "tutorial-steps"], [22, "tutorial-steps"], [23, "tutorial-steps"], [24, "tutorial-steps"], [25, "tutorial-steps"], [26, "tutorial-steps"], [28, "tutorial-steps"], [29, "tutorial-steps"]], "Files used for this demos": [[18, "files-used-for-this-demos"], [19, "files-used-for-this-demos"], [20, "files-used-for-this-demos"], [21, "files-used-for-this-demos"], [22, "files-used-for-this-demos"], [23, "files-used-for-this-demos"], [25, "files-used-for-this-demos"], [26, "files-used-for-this-demos"], [28, "files-used-for-this-demos"], [29, "files-used-for-this-demos"]], "Controllers from this demo": [[18, "controllers-from-this-demo"], [19, "controllers-from-this-demo"], [20, "controllers-from-this-demo"], [21, "controllers-from-this-demo"], [22, "controllers-from-this-demo"], [23, "controllers-from-this-demo"], [24, "controllers-from-this-demo"], [25, "controllers-from-this-demo"], [26, "controllers-from-this-demo"], [28, "controllers-from-this-demo"], [29, "controllers-from-this-demo"]], "Example 10: Industrial robot with GPIO interfaces": [[19, "example-10-industrial-robot-with-gpio-interfaces"]], "Example 12: Controller chaining with RRBot": [[20, "example-12-controller-chaining-with-rrbot"]], "Example 14: Modular robot with actuators not providing states": [[21, "example-14-modular-robot-with-actuators-not-providing-states"]], "DiffBot": [[22, "diffbot"]], "Example 3: Robots with multiple interfaces": [[23, "example-3-robots-with-multiple-interfaces"]], "Example 4: Industrial robot with integrated sensor": [[24, "example-4-industrial-robot-with-integrated-sensor"]], "Files used for this demo": [[24, "files-used-for-this-demo"]], "Example 5: Industrial robot with externally connected sensor": [[25, "example-5-industrial-robot-with-externally-connected-sensor"]], "Example 6: Modular Robots with separate communication to each actuator": [[26, "example-6-modular-robots-with-separate-communication-to-each-actuator"]], "Example 7: Full tutorial with a 6DOF robot": [[27, "example-7-full-tutorial-with-a-6dof-robot"]], "ros2_control overview": [[27, "ros2-control-overview"]], "Writing a URDF": [[27, "writing-a-urdf"]], "Geometry": [[27, "geometry"]], "URDF file": [[27, "urdf-file"]], "Writing a hardware interface": [[27, "writing-a-hardware-interface"]], "Plugin description file (hardware)": [[27, "plugin-description-file-hardware"]], "CMake library (hardware)": [[27, "cmake-library-hardware"]], "Writing a controller": [[27, "writing-a-controller"]], "Plugin description file (controller)": [[27, "plugin-description-file-controller"]], "CMake library (controller)": [[27, "cmake-library-controller"]], "Launching the example": [[27, "launching-the-example"]], "Example 8: Industrial Robots with an exposed transmission interface": [[28, "example-8-industrial-robots-with-an-exposed-transmission-interface"]], "Example 9: Simulation with RRBot": [[29, "example-9-simulation-with-rrbot"]], "ackermann_steering_controller": [[30, "ackermann-steering-controller"]], "Admittance Controller": [[31, "admittance-controller"]], "ROS 2 interface of the controller": [[31, "ros-2-interface-of-the-controller"], [36, "ros-2-interface-of-the-controller"], [38, "ros-2-interface-of-the-controller"], [45, "ros-2-interface-of-the-controller"], [50, "ros-2-interface-of-the-controller"]], "Topics": [[31, "topics"], [36, "topics"], [38, "topics"], [45, "topics"], [50, "topics"]], "ros2_control interfaces": [[31, "ros2-control-interfaces"]], "References": [[31, "references"], [33, "references"], [44, "references"]], "States": [[31, "states"], [44, "states"], [47, "states"]], "Commands": [[31, "commands"], [41, "commands"], [44, "commands"], [47, "commands"]], "bicycle_steering_controller": [[32, "bicycle-steering-controller"]], "diff_drive_controller": [[33, "diff-drive-controller"]], "Other features": [[33, "other-features"], [44, "other-features"], [48, "other-features"]], "Description of controller\u2019s interfaces": [[33, "description-of-controller-s-interfaces"], [44, "description-of-controller-s-interfaces"], [47, "description-of-controller-s-interfaces"]], "Feedback": [[33, "feedback"]], "Output": [[33, "output"]], "ROS 2 Interfaces": [[33, "ros-2-interfaces"]], "Subscribers": [[33, "subscribers"], [47, "subscribers"]], "Publishers": [[33, "publishers"], [44, "publishers"], [47, "publishers"]], "ros2_controllers": [[34, "ros2-controllers"]], "Controllers for Mobile Robots": [[34, "controllers-for-mobile-robots"]], "Controllers for Manipulators and Other Robots": [[34, "controllers-for-manipulators-and-other-robots"]], "Broadcasters": [[34, "broadcasters"]], "Writing a new controller": [[35, "writing-a-new-controller"]], "effort_controllers": [[36, "effort-controllers"]], "effort_controllers/JointGroupEffortController": [[36, "effort-controllers-jointgroupeffortcontroller"]], "Force Torque Sensor Broadcaster": [[37, "force-torque-sensor-broadcaster"]], "forward_command_controller": [[38, "forward-command-controller"]], "Hardware interface type": [[38, "hardware-interface-type"], [41, "hardware-interface-type"]], "Gripper Action Controller": [[39, "gripper-action-controller"]], "IMU Sensor Broadcaster": [[40, "imu-sensor-broadcaster"]], "joint_state_broadcaster": [[41, "joint-state-broadcaster"]], "Details about parameters": [[42, "details-about-parameters"]], "Trajectory Representation": [[43, "trajectory-representation"]], "Interpolation Method none": [[43, "interpolation-method-none"]], "Interpolation Method spline": [[43, "interpolation-method-spline"]], "Visualized Examples": [[43, "visualized-examples"]], "Trajectory Replacement": [[43, "trajectory-replacement"]], "joint_trajectory_controller": [[44, "joint-trajectory-controller"]], "Hardware interface types": [[44, "hardware-interface-types"]], "Using Joint Trajectory Controller(s)": [[44, "using-joint-trajectory-controller-s"]], "Preemption policy 1": [[44, "preemption-policy"]], "Actions 1": [[44, "actions"]], "Subscriber 1": [[44, "subscriber"]], "Services": [[44, "services"]], "Further information": [[44, "further-information"]], "position_controllers": [[45, "position-controllers"]], "position_controllers/JointGroupPositionController": [[45, "position-controllers-jointgrouppositioncontroller"]], "Range Sensor Broadcaster": [[46, "range-sensor-broadcaster"]], "steering_controllers_library": [[47, "steering-controllers-library"]], "Execution logic of the controller": [[47, "execution-logic-of-the-controller"]], "References (from a preceding controller)": [[47, "references-from-a-preceding-controller"]], "tricycle_controller": [[48, "tricycle-controller"]], "Velocity commands": [[48, "velocity-commands"]], "tricycle_steering_controller": [[49, "tricycle-steering-controller"]], "velocity_controllers": [[50, "velocity-controllers"]], "velocity_controllers/JointGroupVelocityController": [[50, "velocity-controllers-jointgroupvelocitycontroller"]], "Simulator Integrations": [[51, "simulator-integrations"]], "Hosted by ros-controls": [[51, "hosted-by-ros-controls"]], "Community": [[51, "community"]], "Supported Robots": [[52, "supported-robots"]], "Welcome to the ros2_control documentation - Humble!": [[53, "welcome-to-the-ros2-control-documentation-humble"]], "ros2_control Repositories": [[53, "ros2-control-repositories"]], "Development Organisation and Communication": [[53, "development-organisation-and-communication"]]}, "indexentries": {}}) \ No newline at end of file +Search.setIndex({"docnames": ["doc/acknowledgements/acknowledgements", "doc/contributing/contributing", "doc/differences_to_ros1/differences_to_ros1", "doc/gazebo_ros2_control/doc/index", "doc/getting_started/getting_started", "doc/gz_ros2_control/doc/index", "doc/project_ideas", "doc/resources/resources", "doc/ros2_control/controller_manager/doc/controller_chaining", "doc/ros2_control/controller_manager/doc/userdoc", "doc/ros2_control/doc/index", "doc/ros2_control/hardware_interface/doc/hardware_components_userdoc", "doc/ros2_control/hardware_interface/doc/hardware_interface_types_userdoc", "doc/ros2_control/hardware_interface/doc/mock_components_userdoc", "doc/ros2_control/hardware_interface/doc/writing_new_hardware_component", "doc/ros2_control/ros2controlcli/doc/userdoc", "doc/ros2_control_demos/doc/index", "doc/ros2_control_demos/doc/run_from_docker", "doc/ros2_control_demos/example_1/doc/userdoc", "doc/ros2_control_demos/example_10/doc/userdoc", "doc/ros2_control_demos/example_12/doc/userdoc", "doc/ros2_control_demos/example_14/doc/userdoc", "doc/ros2_control_demos/example_2/doc/userdoc", "doc/ros2_control_demos/example_3/doc/userdoc", "doc/ros2_control_demos/example_4/doc/userdoc", "doc/ros2_control_demos/example_5/doc/userdoc", "doc/ros2_control_demos/example_6/doc/userdoc", "doc/ros2_control_demos/example_7/doc/userdoc", "doc/ros2_control_demos/example_8/doc/userdoc", "doc/ros2_control_demos/example_9/doc/userdoc", "doc/ros2_controllers/ackermann_steering_controller/doc/userdoc", "doc/ros2_controllers/admittance_controller/doc/userdoc", "doc/ros2_controllers/bicycle_steering_controller/doc/userdoc", "doc/ros2_controllers/diff_drive_controller/doc/userdoc", "doc/ros2_controllers/doc/controllers_index", "doc/ros2_controllers/doc/writing_new_controller", "doc/ros2_controllers/effort_controllers/doc/userdoc", "doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/forward_command_controller/doc/userdoc", "doc/ros2_controllers/gripper_controllers/doc/userdoc", "doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/joint_state_broadcaster/doc/userdoc", "doc/ros2_controllers/joint_trajectory_controller/doc/parameters", "doc/ros2_controllers/joint_trajectory_controller/doc/trajectory", "doc/ros2_controllers/joint_trajectory_controller/doc/userdoc", "doc/ros2_controllers/position_controllers/doc/userdoc", "doc/ros2_controllers/range_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/steering_controllers_library/doc/userdoc", "doc/ros2_controllers/tricycle_controller/doc/userdoc", "doc/ros2_controllers/tricycle_steering_controller/doc/userdoc", "doc/ros2_controllers/velocity_controllers/doc/userdoc", "doc/simulators/simulators", "doc/supported_robots/supported_robots", "index"], "filenames": ["doc/acknowledgements/acknowledgements.rst", "doc/contributing/contributing.rst", "doc/differences_to_ros1/differences_to_ros1.rst", "doc/gazebo_ros2_control/doc/index.rst", "doc/getting_started/getting_started.rst", "doc/gz_ros2_control/doc/index.rst", "doc/project_ideas.rst", "doc/resources/resources.rst", "doc/ros2_control/controller_manager/doc/controller_chaining.rst", "doc/ros2_control/controller_manager/doc/userdoc.rst", "doc/ros2_control/doc/index.rst", "doc/ros2_control/hardware_interface/doc/hardware_components_userdoc.rst", "doc/ros2_control/hardware_interface/doc/hardware_interface_types_userdoc.rst", "doc/ros2_control/hardware_interface/doc/mock_components_userdoc.rst", "doc/ros2_control/hardware_interface/doc/writing_new_hardware_component.rst", "doc/ros2_control/ros2controlcli/doc/userdoc.rst", "doc/ros2_control_demos/doc/index.rst", "doc/ros2_control_demos/doc/run_from_docker.rst", "doc/ros2_control_demos/example_1/doc/userdoc.rst", "doc/ros2_control_demos/example_10/doc/userdoc.rst", "doc/ros2_control_demos/example_12/doc/userdoc.rst", "doc/ros2_control_demos/example_14/doc/userdoc.rst", "doc/ros2_control_demos/example_2/doc/userdoc.rst", "doc/ros2_control_demos/example_3/doc/userdoc.rst", "doc/ros2_control_demos/example_4/doc/userdoc.rst", "doc/ros2_control_demos/example_5/doc/userdoc.rst", "doc/ros2_control_demos/example_6/doc/userdoc.rst", "doc/ros2_control_demos/example_7/doc/userdoc.rst", "doc/ros2_control_demos/example_8/doc/userdoc.rst", "doc/ros2_control_demos/example_9/doc/userdoc.rst", "doc/ros2_controllers/ackermann_steering_controller/doc/userdoc.rst", "doc/ros2_controllers/admittance_controller/doc/userdoc.rst", "doc/ros2_controllers/bicycle_steering_controller/doc/userdoc.rst", "doc/ros2_controllers/diff_drive_controller/doc/userdoc.rst", "doc/ros2_controllers/doc/controllers_index.rst", "doc/ros2_controllers/doc/writing_new_controller.rst", "doc/ros2_controllers/effort_controllers/doc/userdoc.rst", "doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/forward_command_controller/doc/userdoc.rst", "doc/ros2_controllers/gripper_controllers/doc/userdoc.rst", "doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/joint_state_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/joint_trajectory_controller/doc/parameters.rst", "doc/ros2_controllers/joint_trajectory_controller/doc/trajectory.rst", "doc/ros2_controllers/joint_trajectory_controller/doc/userdoc.rst", "doc/ros2_controllers/position_controllers/doc/userdoc.rst", "doc/ros2_controllers/range_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/steering_controllers_library/doc/userdoc.rst", "doc/ros2_controllers/tricycle_controller/doc/userdoc.rst", "doc/ros2_controllers/tricycle_steering_controller/doc/userdoc.rst", "doc/ros2_controllers/velocity_controllers/doc/userdoc.rst", "doc/simulators/simulators.rst", "doc/supported_robots/supported_robots.rst", "index.rst"], "titles": ["Acknowledgements", "Contributing", "Differences to ros_control (ROS1)", "gazebo_ros2_control", "Getting Started", "gz_ros2_control", "Project Ideas for GSoC 2024", "Resources", "Controller Chaining / Cascade Control", "Controller Manager", "ros2_control", "Hardware Components", "ros2_control hardware interface types", "Mock Components", "Writing a Hardware Component", "Command Line Interface", "Demos", "<no title>", "Example 1: RRBot", "Example 10: Industrial robot with GPIO interfaces", "Example 12: Controller chaining with RRBot", "Example 14: Modular robot with actuators not providing states", "DiffBot", "Example 3: Robots with multiple interfaces", "Example 4: Industrial robot with integrated sensor", "Example 5: Industrial robot with externally connected sensor", "Example 6: Modular Robots with separate communication to each actuator", "Example 7: Full tutorial with a 6DOF robot", "Example 8: Industrial Robots with an exposed transmission interface", "Example 9: Simulation with RRBot", "ackermann_steering_controller", "Admittance Controller", "bicycle_steering_controller", "diff_drive_controller", "ros2_controllers", "Writing a new controller", "effort_controllers", "Force Torque Sensor Broadcaster", "forward_command_controller", "Gripper Action Controller", "IMU Sensor Broadcaster", "joint_state_broadcaster", "Details about parameters", "Trajectory Representation", "joint_trajectory_controller", "position_controllers", "Range Sensor Broadcaster", "steering_controllers_library", "tricycle_controller", "tricycle_steering_controller", "velocity_controllers", "Simulator Integrations", "Supported Robots", "Welcome to the ros2_control documentation - Humble!"], "terms": {"The": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53], "follow": [0, 1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 42, 43, 44, 45, 49, 50, 53], "peopl": [0, 1], "were": [0, 6, 27, 33, 43, 44], "ros2_control": [0, 1, 4, 7, 9, 11, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 33, 35, 51], "framework": [0, 1, 2, 6, 7, 9, 10, 11, 12, 13, 15, 16, 27, 34, 35, 41, 53], "show": [0, 1, 3, 4, 5, 7, 9, 11, 12, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 41, 43], "all": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 35, 41, 42, 43, 44, 52], "time": [0, 1, 2, 6, 7, 9, 13, 15, 16, 18, 21, 22, 23, 24, 25, 26, 27, 28, 33, 35, 37, 42, 43, 44, 53], "activ": [0, 1, 2, 4, 9, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 41, 42, 44], "assign": [0, 35], "finish": 0, "rate": [0, 22, 42, 43, 44], "last": [0, 11, 14, 27, 31, 35, 42, 43, 44], "date": 0, "benc": [0, 6, 7], "magyar": [0, 6, 7], "bmagyar": 0, "1244": 0, "1024": 0, "0": [0, 3, 4, 5, 8, 12, 13, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 39, 40, 41, 42, 43, 44, 46, 47, 49], "82": 0, "2023": [0, 53], "12": [0, 16, 52, 53], "30t20": 0, "25": 0, "34z": 0, "dr": [0, 7], "deni": [0, 6, 7], "destogl": 0, "986": 0, "561": 0, "57": 0, "18t14": 0, "11": [0, 16], "03z": 0, "christoph": 0, "fr\u00f6hlich": 0, "christophfroehlich": 0, "153": 0, "134": 0, "88": 0, "26t09": 0, "00": 0, "02z": 0, "fetch": 0, "31": [0, 53], "03": [0, 44], "26": 0, "14": [0, 16, 47], "utc": 0, "dure": [0, 16, 27, 44], "past": [0, 43], "month": 0, "533": 0, "402": 0, "75": 0, "439": 0, "136": 0, "142": 0, "123": 0, "87": 0, "have": [0, 1, 2, 4, 6, 8, 9, 11, 12, 13, 14, 16, 18, 20, 22, 23, 27, 29, 30, 31, 32, 35, 41, 42, 44, 49], "contribut": [0, 4, 7], "develop": [0, 1, 7, 13, 14, 16, 35], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 27, 30, 32, 33, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 47, 49, 50, 51, 52, 53], "project": [0, 1, 53], "give": [0, 1, 7, 9, 16, 18, 22, 23, 43, 53], "valuabl": 0, "pull": [0, 14], "request": [0, 2, 14, 27, 41, 53], "see": [0, 1, 2, 4, 12, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 35, 37, 40, 42, 44, 46, 47, 49], "more": [0, 1, 2, 3, 4, 5, 6, 9, 13, 14, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 35, 44, 49], "inform": [0, 3, 5, 8, 13, 14, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 35, 53], "karsten": 0, "knese": 0, "karsten1987": 0, "186": 0, "118": 0, "63": 0, "2021": 0, "09": 0, "07t16": 0, "47": 0, "31z": 0, "alejandro": 0, "hern\u00e1ndez": 0, "cordero": 0, "ahcord": 0, "90": [0, 27], "80": 0, "89": 0, "27t10": 0, "54": 0, "11z": 0, "sai": 0, "kishor": 0, "kothakota": 0, "saikishor": 0, "69": 0, "67": 0, "97": 0, "29t05": 0, "18": [0, 27], "25z": 0, "victor": 0, "lopez": 0, "v": [0, 15, 24, 42], "93": 0, "60": 0, "65": 0, "10": [0, 3, 5, 16, 23, 47], "14t09": 0, "01": [0, 39, 42, 44], "andyz": 0, "46": 0, "45": 0, "98": 0, "23t02": 0, "17": 0, "26z": 0, "abrar": 0, "rahman": 0, "protyasha": 0, "aprotya": 0, "157": 0, "43": [0, 4, 12, 22], "27": 0, "25t12": 0, "02": 0, "18z": 0, "olivi": 0, "stass": 0, "52": [0, 46], "40": 0, "77": 0, "26t08": 0, "13z": 0, "jordan": 0, "palacio": 0, "78": 0, "34": 0, "44": 0, "15t08": 0, "45z": 0, "erick": 0, "g": [0, 1, 2, 4, 5, 6, 7, 8, 9, 12, 13, 14, 16, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 31, 35, 36, 41, 45, 47, 50, 53], "isla": 0, "osuna": 0, "erickiso": 0, "139": 0, "28": [0, 47], "20": [0, 39, 42, 44], "19t20": 0, "32": 0, "07z": 0, "louis": 0, "poubel": 0, "chapulina": 0, "29": 0, "23": [0, 4], "79": 0, "2022": 0, "08": 0, "30t16": 0, "41": 0, "23z": 0, "none": [0, 8, 35, 41, 42, 44], "bijoua29": 0, "160": 0, "21": [0, 47], "13": [0, 16], "06": 0, "01t20": 0, "48": [0, 3, 5], "32z": 0, "jaron": 0, "l": 0, "167": 0, "10t19": 0, "59": 0, "59z": 0, "livanov93": 0, "164": 0, "05": [0, 44, 53], "22t06": 0, "28z": 0, "tyler": 0, "weaver": 0, "tylerjw": 0, "94": 0, "27t13": 0, "arn": 0, "hitzmann": 0, "arne48": 0, "146": 0, "16": [0, 52], "25t06": 0, "15z": 0, "bailac": 0, "1": [0, 1, 2, 3, 4, 5, 6, 7, 12, 13, 14, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 35, 39, 43, 46, 47], "09t12": 0, "52z": 0, "m\u00e1rk": 0, "szitan": 0, "vx792": 0, "135": 0, "22t09": 0, "felix": 0, "exner": 0, "fexner": 0, "fmauch": 0, "24t22": 0, "ari": 0, "synodino": 0, "progtologist": 0, "152": 0, "07": 0, "30t19": 0, "58z": 0, "chen": 0, "bainian": 0, "briancbn": 0, "36": 0, "9": [0, 6, 16, 40], "25t01": 0, "51": 0, "12z": 0, "paul": 0, "gesel": 0, "pac48": 0, "14t18": 0, "maciej": 0, "bednarczyk": 0, "mcbed": 0, "8": [0, 16], "25t18": 0, "19z": 0, "jafar": 0, "uru\u00e7": 0, "jafarabdi": 0, "07t07": 0, "01z": 0, "ddengster": 0, "2020": 0, "01t03": 0, "andr": 0, "montano": 0, "anfemosa": 0, "133": 0, "7": [0, 16, 19, 22, 47], "29t15": 0, "37z": 0, "homalozoa": 0, "x": [0, 22, 24, 25, 27, 31, 33, 37, 40, 47, 48, 52], "130": 0, "23t11": 0, "22": [0, 9], "mahaarbo": 0, "01t11": 0, "44z": 0, "matt": 0, "reynold": 0, "matthew": 0, "18t19": 0, "56": 0, "ana": 0, "abou": 0, "allaban": 0, "piraka9011": 0, "04": [0, 9], "09t00": 0, "38": [0, 3, 5], "06z": 0, "toni": [0, 7], "najjar": [0, 7], "tonynajjar": 0, "04t13": 0, "50": [0, 4, 9, 22, 42, 44], "48z": 0, "dasroteskelett": 0, "150": 0, "6": [0, 16, 18, 27], "28t09": 0, "36z": 0, "brewmast": 0, "harderthan": 0, "124": 0, "26t15": 0, "47z": 0, "A": [0, 4, 7, 12, 14, 16, 24, 25, 35, 41, 43, 44], "vd": 0, "hoorn": 0, "gavanderhoorn": 0, "19t13": 0, "39": 0, "alex": 0, "moriarti": 0, "5": [0, 14, 16, 18, 19, 20, 21, 23, 24, 26, 27, 28, 29, 43, 47, 52], "42": 0, "20t19": 0, "55": 0, "jack": 0, "jackcent": 0, "02t15": 0, "37": 0, "17z": 0, "han": 0, "martin": 0, "duringhof": 0, "4": [0, 12, 16, 21, 23, 25, 28, 46], "29t21": 0, "15": 0, "noel": 0, "jim\u00e9nez": 0, "garc\u00eda": 0, "noel215": 0, "20t07": 0, "40z": 0, "nathan": [0, 7], "brook": [0, 7], "nbbrook": 0, "05t22": 0, "marq": 0, "rasmussen": 0, "marqrazz": 0, "23t00": 0, "colin": 0, "mackenzi": 0, "guru": 0, "florida": 0, "19t23": 0, "49z": 0, "reza": 0, "kermani": 0, "ark3r": 0, "13t18": 0, "27z": 0, "chri": 0, "thrasher": 0, "christhrash": 0, "26t17": 0, "05z": 0, "michael": 0, "wiznitz": 0, "mechwiz": 0, "22t14": 0, "19": 0, "richard": 0, "osterloh": 0, "rosterloh": 0, "145": 0, "3": [0, 3, 4, 5, 6, 12, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28, 43, 44], "05t08": 0, "53": 0, "08z": 0, "mrl1kor": 0, "malapatiravi": 0, "07t18": 0, "adam": 0, "serafin": 0, "serafadam": 0, "12t18": 0, "24": 0, "24z": 0, "manuel": 0, "muth": 0, "mamueluth": 0, "03t10": 0, "20z": 0, "melvin": 0, "wang": 0, "wmmc88": 0, "22t13": 0, "tim": 0, "clepha": 0, "timpl": 0, "13t07": 0, "yutaka": 0, "kondo": 0, "youtalk": 0, "22t00": 0, "guihom": 0, "guihomework": 0, "17t15": 0, "jose": 0, "lui": 0, "rivero": 0, "j": 0, "26t13": 0, "peter": 0, "david": 0, "fagan": 0, "peterdavidfagan": 0, "2": [0, 1, 3, 4, 5, 6, 7, 8, 12, 13, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 44, 47, 52, 53], "23t22": 0, "sebastian": 0, "jahr": 0, "sjahr": 0, "15t14": 0, "joseph": 0, "schornak": 0, "schornakj": 0, "27t03": 0, "57z": 0, "akash": 0, "ace314159": 0, "31t17": 0, "jo\u00e3o": 0, "torr": 0, "borg": 0, "borgesjvt": 0, "05t12": 0, "46z": 0, "patrick": 0, "roncagliolo": 0, "roncapat": 0, "01t12": 0, "49": 0, "carrol": 0, "mjcarrol": 0, "28t21": 0, "09z": 0, "vansh": 0, "gehlot": 0, "eth": 0, "vanshgehlot": 0, "13t11": 0, "mhubii": 0, "21t11": 0, "50z": 0, "luka": 0, "macha": 0, "lukasmacha97": 0, "85": 0, "17t18": 0, "sachin": 0, "kumar": 0, "sachinkum0009": 0, "lennart": 0, "nachtigal": 0, "firesurf": 0, "04t07": 0, "qiayuanliao": 0, "qiayuanl": 0, "35": [0, 47], "25t05": 0, "solomon": 0, "swiz23": 0, "15t15": 0, "andi": [0, 7], "mcevoi": 0, "mcevoyandi": 0, "08t14": 0, "kenji": 0, "brameld": 0, "ijnek": 0, "05t10": 0, "53z": 0, "bilal": 0, "gill": 0, "bgill92": 0, "01t13": 0, "22z": 0, "kvk": 0, "praneeth": 0, "kvkpraneeth": 0, "28t07": 0, "33z": 0, "cian": 0, "donovan": 0, "ciandonovan": 0, "26t23": 0, "schulz": 0, "schulze18": 0, "27t21": 0, "29z": 0, "shawn": 0, "schaerer": 0, "shawnschaer": 0, "14t15": 0, "franz": 0, "fjp": 0, "04t22": 0, "vatan": 0, "aksoi": 0, "tezer": 0, "vatanaksoytez": 0, "21t13": 0, "nour": 0, "saeed": 0, "d": [0, 16, 18, 29, 42], "dmitri": 0, "dignakov": 0, "13t16": 0, "30": [0, 3, 5, 22], "ken551": 0, "03t11": 0, "54z": 0, "jonatan": 0, "olofsson": 0, "jonatanolofsson": 0, "05t14": 0, "bedard": 0, "christophebedard": 0, "27t18": 0, "august": 0, "bourgoi": 0, "augustebourgoi": 0, "19t14": 0, "ramon": 0, "wijnand": 0, "rayman": 0, "21t14": 0, "21z": 0, "flochr": 0, "20t10": 0, "castro": 0, "sea": 0, "bass": 0, "27t12": 0, "51z": 0, "abishalini": 0, "sivaraman": 0, "27t14": 0, "ramcharanthota": 0, "ben": 0, "holden": 0, "bobblebal": 0, "01t10": 0, "Will": 0, "baker": 0, "willcbak": 0, "22t15": 0, "robotgir": 0, "17t16": 0, "33": 0, "tomislav": 0, "petkovi\u0107": 0, "petkovich": 0, "17t10": 0, "ros2tori": 0, "28t15": 0, "kevin": 0, "demarco": 0, "syllogismrx": 0, "19t16": 0, "noe\u00ebl": 0, "moeskop": 0, "noeelmoeskop": 0, "18t09": 0, "josh": 0, "newan": 0, "joshnewan": 0, "14t08": 0, "emiliano": 0, "borghi": 0, "eborghi10": 0, "29t20": 0, "haider8645": 0, "26t10": 0, "stephen": 0, "street": 0, "sgstreet": 0, "05t20": 0, "jun": 0, "chenjunnn": 0, "09t06": 0, "daniel": 0, "zumkel": 0, "dzumkel": 0, "shane": 0, "loretz": 0, "sloretz": 0, "yoav": 0, "feket": 0, "yoavfeket": 0, "17t21": 0, "johann": [0, 7], "huemer": 0, "huemerj": 0, "31t15": 0, "keegan": 0, "soteb": 0, "ksoteb": 0, "00z": 0, "carlo": 0, "ag\u00fcero": 0, "caguero": 0, "26t11": 0, "35z": 0, "jacob": 0, "perron": 0, "jacobperron": 0, "09t18": 0, "reframesystem": 0, "krzysztof": 0, "wojciechowski": 0, "kotochleb": 0, "12t08": 0, "55z": 0, "addisu": 0, "z": [0, 22, 24, 25, 27, 31, 33, 37, 40, 47, 48], "taddes": 0, "azeei": 0, "14t20": 0, "thibault": 0, "poignonec": 0, "tpoignonec": 0, "09t08": 0, "sgmurrai": 0, "0000": 0, "00t00": 0, "kelli": 0, "kellyprankin": 0, "kasiceo": 0, "a10263790": 0, "tomoya": 0, "tomoyafujita2016": 0, "usamahamayun1": 0, "dave": 0, "coleman": 0, "davetcoleman": 0, "66": 0, "64": 0, "92": 0, "71": 0, "104": 0, "03t19": 0, "14z": 0, "86": 0, "95": 0, "100": [0, 4, 12, 36, 45, 50], "99": [0, 9], "72": 0, "link": [0, 3, 4, 5, 7, 8, 11, 27, 34], "list": [0, 4, 7, 8, 9, 11, 14, 15, 20, 27, 35, 42, 51, 52, 53], "who": 0, "submit": [0, 1, 7, 51, 52], "respect": [0, 3, 5, 6, 7, 42, 43, 44], "repositori": [0, 4, 6, 10, 12, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 33, 34], "ros2_control_demo": [0, 1, 4, 16, 18, 27, 29, 53], "control_toolbox": [0, 53], "gazebo_ros2_control": [0, 29], "gz_ros2_control": 0, "realtime_tool": [0, 6, 53], "kinematics_interfac": [0, 31], "control_msg": [0, 3, 5, 31, 42, 44, 47, 53], "ha": [0, 1, 3, 4, 5, 7, 12, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 35, 41, 42, 43], "receiv": [0, 2, 27, 42, 43], "major": [0, 40], "from": [0, 1, 2, 7, 8, 9, 13, 14, 15, 17, 27, 31, 33, 34, 35, 36, 37, 40, 42, 43, 44, 45, 46, 48, 50, 52, 53], "support": [0, 2, 3, 4, 5, 7, 13, 14, 15, 27, 31, 35, 41, 43, 44, 47, 51, 53], "rosin": 0, "ro": [0, 1, 2, 3, 4, 5, 6, 9, 12, 13, 15, 16, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 34, 35, 43, 44, 53], "industri": [0, 4, 6, 16, 52], "qualiti": [0, 1], "assur": 0, "robot": [0, 2, 3, 5, 6, 8, 9, 12, 18, 20, 22, 29, 33, 37, 41, 47, 48, 53], "softwar": [0, 4, 27], "compon": [0, 7, 9, 10, 12, 15, 16, 21, 22, 23, 24, 25, 26, 27, 31, 33, 34, 37, 40, 46, 47, 48, 53], "http": [0, 1, 4, 6, 16, 27, 30, 32, 49], "www": 0, "eu": 0, "fund": 0, "european": 0, "union": 0, "": [0, 1, 4, 6, 7, 8, 9, 14, 15, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 35, 40, 42, 43, 46, 49, 53], "horizon": 0, "research": [0, 7, 52], "innov": 0, "programm": 0, "under": [0, 7, 14, 20, 35, 43, 44, 47, 53], "grant": [0, 4], "agreement": 0, "732287": 0, "first": [1, 2, 8, 11, 14, 16, 27, 29, 35, 42, 43], "thank": 1, "you": [1, 2, 3, 4, 5, 7, 8, 9, 11, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 35, 44, 53], "consid": [1, 15, 42], "As": [1, 8, 12, 14, 18, 27, 33, 35], "an": [1, 2, 3, 4, 5, 6, 7, 8, 12, 13, 14, 15, 16, 18, 20, 22, 25, 27, 29, 30, 31, 32, 33, 35, 36, 41, 42, 44, 45, 47, 49, 50], "open": [1, 13, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 41, 42, 47], "sourc": [1, 3, 5, 7, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "we": [1, 3, 5, 6, 7, 8, 11, 16, 18, 20, 22, 27, 28, 29, 41], "welcom": 1, "each": [1, 4, 6, 8, 11, 12, 14, 16, 18, 21, 27, 30, 41, 47, 49], "contributor": 1, "regardless": 1, "background": [1, 16], "experi": 1, "To": [1, 2, 4, 8, 9, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 41, 43, 51, 52, 53], "reduc": [1, 13], "entropi": 1, "univers": [1, 7, 27, 52], "our": [1, 3, 4, 5, 6, 7, 16, 18, 27], "vivid": 1, "collabor": 1, "environ": [1, 4, 7, 16], "set": [1, 2, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 27, 36, 41, 42, 43, 44, 45, 47, 50], "up": [1, 7, 14, 16, 43], "some": [1, 3, 5, 6, 7, 16, 18, 21, 22, 23, 24, 25, 26, 27, 28, 31, 41, 42, 44, 53], "standard": [1, 2, 6, 7, 14, 15, 21, 26, 27, 37, 41], "method": [1, 2, 4, 8, 9, 11, 14, 27, 35, 47], "requir": [1, 2, 4, 6, 14, 27, 31, 35, 36, 44, 45, 50], "ar": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 37, 40, 41, 42, 43, 44, 46, 47, 48, 49, 53], "limit": [1, 3, 5, 7, 9, 16, 27, 33, 48], "scope": 1, "your": [1, 2, 7, 9, 13, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 32, 35, 51, 52, 53], "pr": [1, 51, 52], "should": [1, 2, 3, 5, 6, 7, 8, 9, 11, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 35, 41, 43, 44], "do": [1, 2, 4, 6, 7, 8, 9, 14, 16, 31, 35, 44], "one": [1, 2, 4, 6, 7, 8, 9, 12, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 35, 36, 37, 41, 43, 44, 45, 47, 49, 50, 53], "thing": [1, 3, 5, 16], "avoid": [1, 18, 21, 22, 23, 24, 25, 26, 28, 35], "ad": [1, 3, 5, 6, 9, 13, 14, 20, 22, 27, 35, 41], "random": [1, 21, 23, 24, 25, 26], "fix": [1, 2, 27, 30, 32, 49], "put": [1, 14, 35], "those": [1, 2, 4, 6, 8, 13, 14, 16, 27, 33, 35, 37, 41, 42, 43], "separ": [1, 2, 4, 16, 21, 41], "descript": [1, 2, 7, 9, 11, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 35], "titl": 1, "add": [1, 2, 8, 9, 11, 14, 27, 30, 31, 32, 35, 49, 51, 52], "short": [1, 35, 53], "summari": [1, 7, 53], "make": [1, 2, 5, 6, 7, 20, 27, 39, 53], "sure": [1, 5, 6, 18, 20, 21, 22, 23, 24, 25, 26, 28, 53], "pipelin": 1, "i": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53], "green": [1, 43], "don": [1, 3, 8, 22, 42, 44], "t": [1, 3, 5, 8, 9, 16, 22, 42, 43, 44], "afraid": 1, "review": [1, 6, 53], "maintain": [1, 4, 6, 8, 16, 43], "new": [1, 7, 8, 14, 18, 20, 23, 27, 34, 43, 53], "code": [1, 2, 4, 6, 7, 14, 27], "test": [1, 3, 6, 13, 14, 16, 18, 22, 29, 30, 31, 32, 35, 47, 49], "If": [1, 2, 4, 8, 9, 11, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 35, 37, 41, 42, 43, 44, 47, 53], "function": [1, 2, 6, 7, 20, 27, 31, 47], "alwai": [1, 27], "exercis": 1, "serv": [1, 4, 6], "live": [1, 7], "origin": [1, 3, 5, 7, 18, 27, 43, 44], "intent": [1, 8, 13], "section": [1, 2, 12, 14, 35, 44], "target": [1, 9, 14, 31, 35, 38, 42, 44], "also": [1, 2, 3, 4, 5, 6, 7, 8, 9, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 35, 44], "read": [1, 2, 3, 4, 5, 9, 12, 14, 16, 20, 21, 24, 25, 27, 35, 41, 42, 46, 47], "understand": [1, 6, 43], "how": [1, 6, 7, 12, 14, 16, 19, 20, 21, 23, 24, 25, 26, 27, 29, 35], "handl": [1, 2, 4, 6, 7, 14, 24, 27, 30, 31, 32, 38, 39, 40, 44, 47, 49], "organ": [1, 7, 53], "guidelin": 1, "especi": [1, 2, 16, 47], "applic": [1, 4, 7, 9, 12, 27], "pleas": [1, 9, 26, 53], "keep": [1, 27, 35], "mind": [1, 35], "work": [1, 6, 7, 8, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 35, 36, 41, 45, 48, 50, 53], "fork": 1, "when": [1, 2, 3, 4, 5, 8, 9, 13, 14, 15, 20, 23, 27, 31, 35, 39, 42, 44, 47], "That": [1, 14, 35], "wai": [1, 9, 14, 27, 35, 37, 44], "main": [1, 4, 6, 7, 9, 13, 27, 35, 47, 53], "repo": [1, 4, 16], "clean": 1, "featur": [1, 7, 13, 16, 18, 28, 47, 53], "branch": [1, 16], "check": [1, 2, 4, 6, 8, 11, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 35, 42, 43, 44, 49, 53], "satisfi": 1, "befor": [1, 2, 8, 9, 14, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 35, 43], "thei": [1, 2, 4, 6, 7, 8, 12, 13, 14, 15, 20, 35, 42, 44, 47], "can": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 35, 37, 38, 42, 43, 44, 47, 53], "must": [1, 3, 5, 8, 9, 12, 16, 27, 40, 42, 44], "approv": 1, "two": [1, 4, 6, 8, 9, 14, 16, 18, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 32, 35, 37, 43, 44, 47, 49], "explicitli": 1, "onli": [1, 2, 4, 6, 7, 8, 9, 11, 14, 15, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 32, 33, 35, 36, 37, 41, 42, 43, 44, 45, 50], "except": [1, 27], "other": [1, 2, 3, 4, 7, 9, 14, 16, 21, 26, 27, 30, 32, 35, 41, 43, 47, 49], "where": [1, 3, 6, 8, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 30, 32, 33, 35, 41, 42, 43, 44, 47, 49], "back": 1, "traceabl": 1, "discuss": [1, 7, 20, 29, 43, 53], "suffici": [1, 3, 5, 8, 37], "note": [1, 4, 9, 18, 33, 44, 53], "still": [1, 2, 18, 20, 21, 22, 23, 24, 25, 26, 28, 34, 43], "encourag": 1, "help": [1, 9, 13, 14, 15, 35], "u": [1, 3, 5, 9, 16, 42], "increas": [1, 22], "pace": 1, "veri": [1, 2, 3, 5, 6, 12], "like": [1, 2, 3, 4, 5, 6, 7, 14, 16, 20, 27], "find": [1, 3, 5, 22], "issu": [1, 6, 53], "nobodi": 1, "els": 1, "squash": 1, "commit": 1, "messag": [1, 6, 9, 15, 23, 24, 25, 27, 37, 40, 41, 42, 43, 44, 46, 47, 53], "comment": [1, 27], "fixup": 1, "linter": 1, "us": [1, 2, 4, 6, 7, 11, 12, 13, 15, 17, 27, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 47, 49, 50, 53], "pre": 1, "correct": [1, 2, 43], "header": [1, 11, 14, 24, 25, 33, 35, 43], "address": [1, 27], "similar": [1, 4, 7, 12, 18, 20, 27], "mean": [1, 2, 8, 12, 13, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 43, 44], "result": [1, 4, 8, 9, 18, 27, 41, 43], "exactli": 1, "cowboi": 1, "style": [1, 14, 35], "over": [1, 6, 8, 22, 27], "weekend": 1, "It": [1, 2, 3, 4, 6, 8, 9, 18, 20, 21, 23, 24, 25, 26, 27, 28, 29, 37, 41, 42, 43], "doesn": [1, 8], "matter": 1, "trivial": [1, 13], "chanc": 1, "proper": [1, 8, 9, 44], "Be": 1, "awar": 1, "impact": 1, "proport": [1, 42], "its": [1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 37, 38, 39, 40, 41, 43, 47, 49], "ping": 1, "them": [1, 6, 8, 9, 14, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 35, 41, 43, 52], "necessari": [1, 8, 11], "repeatedli": 1, "start": [1, 2, 3, 5, 7, 8, 9, 11, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 42, 43, 53], "part": [1, 6, 7, 12, 27, 35, 43, 44], "For": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 35, 42, 44, 47, 49], "detail": [1, 2, 3, 4, 5, 11, 12, 13, 14, 20, 27, 29, 30, 32, 33, 35, 43, 44, 49], "thoma": 1, "cokela": 1, "info": [1, 9, 11, 14, 27], "tutori": [1, 16], "sphinx": 1, "rest_syntax": 1, "html": 1, "id8": 1, "type": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 16, 21, 22, 24, 25, 26, 27, 33, 34, 35, 36, 37, 40, 42, 45, 46, 47, 50], "stabl": 1, "against": 1, "accept": [1, 14, 23, 35, 36, 42, 43, 44, 45, 50], "api": [1, 3, 5, 6, 14, 18, 21, 22, 23, 24, 25, 26, 28], "abi": 1, "chang": [1, 2, 4, 7, 9, 11, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 42, 43, 44], "e": [1, 2, 4, 6, 7, 8, 9, 12, 13, 14, 16, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 31, 35, 36, 37, 41, 42, 43, 45, 47, 50, 53], "name": [1, 2, 3, 4, 5, 7, 9, 12, 13, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 29, 31, 35, 37, 38, 40, 41, 42, 46, 47], "convent": [1, 27], "master": [1, 4], "semi": 1, "binari": 1, "good": [1, 3, 5, 6], "same": [1, 8, 23, 27, 34, 37, 42, 43, 44], "build": [1, 14, 27, 31, 35], "dai": 1, "ros_distro": [1, 4, 16, 18], "foxi": [1, 7, 14], "galact": [1, 11, 14], "releas": [1, 4, 7, 16, 27], "version": [1, 6, 16, 44], "non": [1, 7, 20, 27, 37, 52], "brake": 1, "distribut": [1, 16, 53], "three": [1, 2, 4, 11, 12, 16, 27, 35, 43, 49], "stage": [1, 8, 20], "current": [1, 6, 11, 12, 14, 15, 43, 44, 47], "futur": [1, 7, 8, 43, 44], "compat": [1, 2, 7, 14, 16], "packag": [1, 2, 3, 5, 11, 14, 27, 30, 31, 32, 33, 35, 36, 37, 40, 44, 45, 46, 47, 49, 50, 53], "direct": [1, 2, 6, 14, 27, 35, 42], "local": [1, 3, 5, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 41], "possibl": [1, 4, 6, 9, 12, 16, 18, 21, 22, 23, 24, 25, 26, 28, 31, 35, 43], "core": [1, 10, 27], "immedi": [1, 18, 20, 21, 23, 24, 25, 26, 27, 28, 29], "depend": [1, 4, 11, 12, 14, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 34, 35, 43, 47], "fail": [1, 23, 27], "expect": [1, 6, 20, 27, 30, 32, 44, 47, 49], "after": [1, 8, 9, 14, 16, 18, 27, 33, 35, 42, 43, 44, 47, 48], "next": [1, 18, 27, 43], "sync": 1, "abl": 1, "potenti": [1, 35, 42], "mid": 1, "stat": 1, "power": [1, 3, 5, 7, 14], "plausibl": 1, "analyt": 1, "robothw": 2, "rigid": 2, "ani": [2, 4, 7, 8, 9, 11, 12, 16, 20, 27, 35, 42, 44], "imposs": 2, "extend": [2, 4, 6, 8, 14, 35], "exist": [2, 4, 6, 8, 9, 11, 12, 14, 18, 21, 22, 23, 24, 25, 26, 27, 28, 35, 44], "addit": [2, 3, 5, 8, 16, 19, 22, 27], "sensor": [2, 4, 6, 11, 13, 14, 16, 21, 26, 27, 31, 34, 52], "actuat": [2, 4, 6, 11, 12, 13, 14, 16, 20], "tool": [2, 3, 5, 6, 7, 27], "without": [2, 3, 4, 5, 7, 13, 14, 16, 20, 29, 35, 42, 43], "combinedrobothardwar": 2, "drawback": [2, 53], "solut": [2, 7], "optim": [2, 9], "combin": [2, 8, 12, 13, 16, 23, 41, 42, 43, 44], "extern": [2, 4, 6, 8, 13, 16, 31], "defin": [2, 3, 5, 6, 9, 13, 14, 16, 27, 31, 35, 37, 40, 41, 42, 43, 44, 46, 47], "system": [2, 3, 4, 5, 6, 7, 11, 12, 14, 15, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 44, 51, 52, 53], "composit": [2, 7], "basic": [2, 3, 4, 5, 6, 7, 14, 16, 22, 35], "physic": [2, 4, 11, 12, 13], "cell": [2, 37], "surround": 2, "describ": [2, 4, 8, 12, 16, 18, 23, 27, 29, 43], "multi": [2, 4, 6, 7, 16, 23], "gripper": [2, 3, 4, 5, 7, 12, 13, 34], "out": [2, 3, 5, 9, 27, 33], "box": [2, 16, 18, 22, 23, 24, 25, 28, 29], "allow": [2, 3, 4, 5, 16, 27, 39, 42, 43, 44], "joint": [2, 4, 7, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 41, 42, 43, 45, 47, 49, 50, 53], "posit": [2, 3, 4, 5, 7, 9, 12, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 36, 41, 42, 43, 44, 45, 47, 50], "veloc": [2, 3, 4, 5, 7, 8, 16, 21, 22, 23, 27, 31, 32, 33, 34, 39, 40, 41, 42, 43, 44, 45, 47, 50], "effort": [2, 3, 5, 16, 27, 34, 36, 39, 41, 42, 44], "hard": [2, 9], "data": [2, 4, 6, 13, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 34, 41, 43], "approach": [2, 8], "doe": [2, 8, 9, 14, 18, 21, 22, 23, 24, 25, 26, 27, 28, 35, 43, 44], "enforc": [2, 23, 27, 42], "string": [2, 9, 13, 16, 35, 38, 39, 40, 41, 42, 46, 47], "ensur": [2, 7, 9, 27, 43], "constant": [2, 16], "hardware_interfac": [2, 3, 4, 5, 11, 13, 14, 16, 21, 24, 25, 26, 27, 31, 33, 34, 35], "In": [2, 3, 4, 5, 6, 7, 8, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 34, 35, 41, 43, 47], "had": 2, "itself": [2, 8], "took": 2, "care": [2, 6, 9, 14, 23, 35, 44], "regist": [2, 3, 5], "resourc": [2, 3, 5, 14, 23], "conflict": [2, 4, 6], "resourcemanag": [2, 8], "take": [2, 6, 8, 14, 20, 23, 33, 35, 41, 43], "state": [2, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 22, 23, 24, 25, 26, 27, 28, 29, 34, 35, 37, 41, 42], "avail": [2, 4, 7, 9, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 41, 44], "enabl": [2, 4, 6, 7, 11, 14, 15, 16, 22, 31, 37, 47], "anymor": 2, "controllermanag": [2, 9], "implement": [2, 3, 4, 5, 6, 7, 9, 12, 13, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 35, 38, 43, 44, 47, 48, 49, 53], "systeminterfac": [2, 3, 5, 13, 24, 27], "granular": 2, "sensorinterfac": [2, 21, 25], "actuatorinterfac": [2, 21, 26], "abov": [2, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 34, 43], "choos": [2, 16, 47], "suitabl": [2, 7], "strategi": [2, 16, 43], "decid": 2, "which": [2, 3, 4, 5, 6, 7, 9, 14, 15, 16, 18, 22, 23, 24, 25, 26, 27, 28, 29, 33, 35, 37, 40, 41, 42, 43, 44, 46, 47, 48], "case": [2, 3, 5, 6, 7, 8, 16, 20, 27, 35, 41, 43, 44, 53], "mayb": [2, 8], "sens": [2, 4, 34, 37], "multipl": [2, 4, 7, 8, 12, 14, 16, 41, 42], "constructor": [2, 14, 27, 35], "initi": [2, 14, 27, 35, 43], "variabl": [2, 14, 27, 35, 42], "need": [2, 3, 4, 5, 6, 7, 8, 12, 14, 16, 18, 21, 22, 23, 24, 25, 26, 27, 28, 35, 43], "commun": [2, 4, 6, 7, 14, 16, 18, 21, 22, 23, 24, 25, 27, 28, 52], "default": [2, 4, 8, 9, 13, 23, 30, 32, 38, 39, 40, 41, 42, 43, 44, 46, 47, 49], "configur": [2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 41, 42, 43, 44, 47], "paramet": [2, 3, 5, 7, 14, 16, 18, 22, 27, 34, 35, 44], "pars": [2, 3, 5, 9, 10, 12], "urdf": [2, 7, 9, 12, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "snippet": 2, "hardwareinfo": [2, 27], "here": [2, 10, 14, 27, 35, 36, 44, 45, 50], "cross": [2, 41], "valu": [2, 4, 6, 12, 13, 14, 16, 18, 19, 20, 22, 24, 25, 27, 29, 35, 40, 41, 42, 44, 46, 47], "export_": 2, "_interfac": [2, 14], "joint_a2": 2, "extract": [2, 33, 48], "sensibl": 2, "stop": [2, 7, 8, 9, 11, 15, 18, 22, 23, 27, 33, 42, 48], "usual": [2, 4, 9, 13, 14, 27, 35], "includ": [2, 3, 5, 6, 11, 14, 15, 27, 35, 44, 52], "command": [2, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 38, 39, 42, 43, 45, 49, 50, 53], "safe": [2, 27, 33, 35, 44, 48], "interrupt": [2, 9], "stream": [2, 7], "write": [2, 4, 7, 8, 9, 10, 20, 21, 22, 26, 34], "exchang": [2, 6, 18, 21, 22, 23, 24, 25, 26, 28, 53], "equival": [2, 27], "forget": [2, 4, 16, 44], "pluginlib_export_class": [2, 14, 16, 27, 35], "macro": [2, 4, 14, 16, 27, 35], "end": [2, 4, 11, 14, 27, 35, 42, 52], "cpp": [2, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "file": [2, 3, 4, 5, 6, 7, 9, 13, 14, 16, 31, 33, 35, 36, 44, 45, 50], "creat": [2, 3, 4, 5, 7, 9, 13, 14, 16, 27, 35], "xml": [2, 3, 5, 11, 14, 27, 35], "librari": [2, 4, 14, 15, 16, 30, 32, 34, 35, 47, 49], "pluginlib": [2, 3, 4, 5, 9, 14, 27, 35], "exampl": [2, 3, 4, 5, 6, 7, 8, 13, 15, 22, 31, 36, 37, 41, 44, 45, 50, 53], "rrbotsystempositiononlyhardwar": [2, 4, 12, 15, 18, 20, 25], "excel": 2, "jointtrajectorycontrol": [2, 3, 5, 15, 18, 31, 44], "real": [2, 6, 7, 9, 13, 22, 35, 41, 42, 53], "critic": [2, 6], "mark": [2, 20], "controllerinterfac": [2, 4, 8, 15, 27, 35], "member": [2, 14, 27, 35, 43], "init": 2, "call": [2, 3, 4, 5, 8, 14, 22, 27, 35], "lifecycl": [2, 4, 7, 9, 11, 14, 27], "declar": [2, 14, 27, 35], "state_interface_configur": [2, 27, 35], "command_interface_configur": [2, 27, 35], "design": [2, 4, 6, 7, 8, 27, 53], "updat": [2, 4, 8, 9, 16, 27, 35, 44, 47], "manag": [2, 3, 5, 6, 7, 10, 11, 14, 15, 16, 27, 35, 44, 53], "option": [2, 3, 5, 9, 11, 13, 14, 15, 18, 23, 35, 37, 41, 44, 47], "on_configur": [2, 14, 27, 35], "on_activ": [2, 11, 14, 27, 35], "on_deactiv": [2, 11, 14, 27, 35], "deactiv": [2, 4, 15, 18, 42], "final": [2, 7, 11, 27], "joint_trajectory_plugin": 2, "integr": [3, 4, 5, 6, 7, 13, 16, 20, 22, 27, 42, 43, 44, 53], "architectur": [3, 5, 6, 7], "gazebo": [3, 5, 6, 16, 18, 29, 51], "classic": [3, 16, 29, 51], "provid": [3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 16, 18, 20, 23, 24, 25, 26, 27, 28, 29, 31, 35, 41, 42, 43, 44, 47, 53], "instanti": [3, 5, 9], "connect": [3, 4, 5, 13, 16, 24, 27], "model": [3, 5, 18, 27], "cd": [3, 4, 5, 16, 27], "docker": [3, 5, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29], "gui": [3, 5, 16, 18, 20, 21, 23, 24, 25, 26, 28, 29], "properli": [3, 5, 8, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "rm": [3, 4, 5, 16, 18, 29], "net": [3, 5, 7, 16, 18, 29], "host": [3, 5, 16, 18, 29, 52], "ros2": [3, 4, 5, 7, 9, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "launch": [3, 4, 5, 9, 13, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "cart_example_posit": [3, 5], "py": [3, 5, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "fals": [3, 5, 13, 16, 18, 29, 33, 39, 41, 42, 44, 47], "machin": [3, 4, 5, 6, 16, 29], "client": [3, 5, 29, 44], "gzclient": [3, 29], "rocker": [3, 5], "go": [3, 5, 7, 9, 14, 27, 35], "imag": [3, 5, 9, 29], "inject": [3, 5, 7], "nvidia": [3, 5], "And": 3, "user": [3, 5, 6, 9, 16, 27, 43], "id": [3, 5, 15, 18, 21, 22, 23, 24, 25, 26, 28], "specif": [3, 5, 6, 8, 9, 11, 12, 27, 29, 38, 41, 43, 44], "cleaner": [3, 5], "mount": [3, 5], "permiss": [3, 5, 9], "instal": [3, 5, 9, 14, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "instruct": [3, 5, 22, 27, 29], "x11": [3, 5], "latest": [3, 4, 5], "move": [3, 5, 16, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 39], "cart": [3, 5], "rail": [3, 5], "exec": [3, 5, 18], "bash": [3, 4, 5, 14, 16, 18, 27, 35], "home": [3, 5], "ros2_w": [3, 4, 5, 16], "example_posit": [3, 5], "element": [3, 5, 27], "access": [3, 4, 5, 7, 9, 13, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 41], "interfac": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 18, 20, 21, 22, 24, 25, 26, 29, 30, 32, 34, 35, 37, 40, 42, 43, 46, 49, 51, 52, 53], "gazebosystem": 3, "hardwar": [3, 5, 7, 8, 10, 13, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 33, 34, 35, 42, 48, 53], "slider_to_cart": [3, 5, 36, 45, 50], "command_interfac": [3, 4, 5, 12, 20, 27, 31, 42, 44], "param": [3, 4, 5, 9, 12, 13, 22, 27], "min": [3, 4, 5, 12, 27], "1000": [3, 5, 27], "max": [3, 4, 5, 12, 27, 39], "state_interfac": [3, 4, 5, 12, 27, 31, 42, 44], "initial_valu": [3, 5, 27], "mimick": [3, 5, 13], "manual": [3, 4, 5, 6, 9, 14, 16, 18, 23, 24, 25, 26, 28, 29, 35, 53], "multipli": [3, 5, 13], "definit": [3, 4, 5, 14, 27, 31, 33, 34, 35, 37, 42], "left_finger_joint": [3, 5], "prismat": [3, 5], "right_finger_joint": [3, 5], "axi": [3, 5, 6, 27, 30, 32, 33, 37, 49], "xyz": [3, 5, 27], "rpy": [3, 5, 27], "1415926535": [3, 5], "parent": [3, 5, 14, 27, 35], "base": [3, 4, 5, 7, 11, 14, 15, 16, 21, 22, 26, 27, 33, 35, 38, 47, 48, 51], "child": [3, 5, 12, 27], "finger_left": [3, 5], "lower": [3, 5, 27], "upper": [3, 5, 27], "actual": [3, 5, 8], "load": [3, 4, 5, 9, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "appropri": [3, 5, 6, 43], "By": [3, 5, 9, 27, 41, 43], "though": [3, 5, 20], "extens": [3, 5], "via": [3, 4, 5, 16, 18, 24, 25, 27, 29, 44], "between": [3, 4, 5, 6, 11, 12, 16, 27, 30, 32, 41, 42, 43, 44, 49], "filenam": [3, 5, 27], "libgazebo_ros2_control": 3, "so": [3, 4, 5, 8, 9, 14, 27, 31, 35, 44], "robot_param": [3, 5], "robot_descript": [3, 5, 9, 18, 27], "robot_param_nod": [3, 5], "robot_state_publish": [3, 5, 41], "config": [3, 5, 16], "cartpole_control": [3, 5], "yaml": [3, 4, 5, 6, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 44], "locat": [3, 27, 31], "server": [3, 39, 44], "node": [3, 4, 5, 9, 11, 13, 15, 18, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "attempt": [3, 5, 9, 44], "get": [3, 5, 7, 8, 9, 11, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 43, 53], "most": [3, 5, 6, 14, 16, 27, 35], "least": [3, 5, 12, 14, 35, 44], "jointstateinterfac": [3, 5], "effortjointinterfac": [3, 5], "velocityjointinterfac": [3, 5], "complex": [3, 4, 5, 6, 7, 8], "mechan": [3, 5, 8, 44], "nonlinear": [3, 5], "spring": [3, 5], "linkag": [3, 5, 18, 20, 28], "etc": [3, 5, 9, 23, 27, 53], "These": [3, 5, 16, 27], "inherit": [3, 5, 9, 27], "gazebosysteminterfac": 3, "level": [3, 5, 6, 7, 9, 20, 21, 26, 36, 43, 45, 50], "properti": [3, 5, 27], "sub": [3, 5], "class": [3, 4, 5, 7, 9, 11, 14, 15, 27, 35, 38, 43], "specifi": [3, 5, 9, 14, 16, 27, 35, 42, 43, 44], "insid": [3, 5, 13, 16, 18], "publish": [3, 5, 6, 8, 12, 16, 19, 27, 31, 34, 37, 40, 41, 42, 43, 46, 48, 53], "stateinterfac": [3, 5, 27], "topic": [3, 5, 6, 7, 8, 12, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 34, 42, 44, 51], "sensor_msg": [3, 5, 40, 46], "msg": [3, 5, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 33, 36, 37, 38, 40, 43, 44, 45, 46, 47, 50], "jointstat": [3, 5], "joint_state_control": [3, 5, 15], "ros__paramet": [3, 5, 36, 44, 45, 50], "jointstatecontrol": [3, 5, 15], "action": [3, 5, 8, 42], "cart_pole_control": [3, 5], "follow_joint_trajectori": [3, 5, 44], "followjointtrajectori": [3, 5, 42, 44], "joint_trajectory_control": [3, 5, 6, 15, 18, 34], "write_op_mod": [3, 5], "contain": [3, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 36, 42, 43, 45, 47, 50], "content": [3, 14, 27, 35], "There": [3, 4, 5, 9, 11, 14, 16, 21, 24, 25, 26, 35, 43, 44], "meter": [3, 5, 27], "cart_example_veloc": [3, 5], "cart_example_effort": [3, 5], "diff_driv": 3, "tricycle_dr": 3, "world": [3, 5, 9, 13, 27], "example_veloc": [3, 5], "example_effort": [3, 5], "example_diff_dr": [3, 5], "example_tricycle_dr": [3, 5], "parallel": [3, 4, 5, 12, 13], "gripper_mimic_joint_exampl": [3, 5], "send": [3, 5, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 43, 44], "example_gripp": [3, 5], "humbl": [4, 16, 27], "want": [4, 8, 9, 16], "download": [4, 16], "mkdir": [4, 16], "p": [4, 9, 16, 42], "src": [4, 14, 16, 18, 27, 29, 31, 35], "wget": 4, "raw": 4, "githubusercont": 4, "com": [4, 6, 16, 27], "org": [4, 6, 30, 32, 49], "ros_control": [4, 6, 7, 53], "vc": [4, 16], "import": [4, 14, 16, 27, 35, 42], "rosdep": [4, 16], "rosdistro": [4, 16], "sudo": [4, 9, 16], "apt": [4, 16], "path": [4, 7, 16, 27, 44], "ignor": [4, 9, 16, 33, 42, 47, 48], "r": [4, 16, 28], "y": [4, 16, 22, 24, 25, 31, 37, 40], "everyth": [4, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 35], "opt": [4, 16, 18], "setup": [4, 13, 14, 16, 18, 22, 27, 29, 35, 43], "sh": [4, 16, 18, 29], "colcon": [4, 14, 16, 27, 35], "symlink": [4, 16, 27], "folder": [4, 7, 14, 16, 18, 19, 22, 30, 31, 32, 35, 47, 49], "found": [4, 10, 14, 18, 19, 22, 31, 33, 35, 38, 44, 53], "github": [4, 6, 10, 16, 27, 34, 51, 52, 53], "figur": [4, 43], "cm": [4, 9], "abstract": [4, 7, 11, 27], "side": [4, 6, 7], "entri": [4, 35], "point": [4, 27, 35, 42, 43, 44, 53], "servic": [4, 6, 9, 11, 27], "executor": [4, 9], "custom": [4, 12, 13, 16, 21, 22, 37, 41, 51], "howev": [4, 6, 8, 9, 16, 20, 27], "recommend": [4, 7, 14], "ros2_control_nod": [4, 23, 27], "controller_manag": [4, 5, 6, 9, 15, 23, 35, 36, 44, 45, 50], "assum": [4, 8], "On": [4, 27], "hand": [4, 27, 52], "unload": [4, 9, 15], "match": [4, 16, 43], "report": [4, 6, 41, 53], "error": [4, 6, 9, 14, 20, 23, 27, 35, 41, 42, 44], "execut": [4, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 35, 39, 42, 43, 44, 49], "loop": [4, 7, 9, 13, 18, 23, 24, 25, 26, 27, 28, 29, 35, 41, 42, 44, 47], "output": [4, 6, 7, 12, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 37], "driver": [4, 7, 16, 27, 52], "reus": [4, 7, 8], "flexibl": 4, "motor": [4, 8, 52], "encod": [4, 27], "theori": [4, 53], "compar": [4, 6, 7], "refer": [4, 8, 20, 27, 52], "measur": [4, 13, 21, 31, 37, 41, 42, 52], "calcul": [4, 27, 31, 43, 47], "input": [4, 6, 7, 8, 12, 19, 20, 27, 31, 33, 36, 38, 42, 43, 45, 47, 48, 50], "object": [4, 27], "deriv": [4, 42, 43], "controller_interfac": [4, 15, 27, 31, 35, 37, 40, 46], "export": [4, 8, 9, 14, 16, 27, 31, 35], "plugin": [4, 9, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 35], "forwardcommandcontrol": [4, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29], "lifecyclenod": 4, "document": [4, 6, 7, 12, 13, 14, 16, 22, 33, 43, 44], "interact": [4, 7, 9, 15, 19, 27, 29], "srv": [4, 44], "controller_manager_msg": 4, "while": [4, 6, 7, 27, 43], "directli": [4, 18, 20, 29, 53], "line": [4, 10, 11, 14, 18, 27, 35, 41, 43], "friendli": 4, "cli": [4, 9, 10, 15, 18, 19, 22, 23, 24, 25, 26, 28, 29], "auto": [4, 9], "complet": [4, 11, 20, 27, 43], "rang": [4, 12, 34], "common": [4, 6, 16, 34, 41, 53], "capabl": [4, 6], "realiz": [4, 7, 43, 44], "repres": [4, 11, 27, 33, 43], "dynam": [4, 14, 27, 35], "dof": [4, 12, 16, 27, 39], "differ": [4, 6, 7, 12, 14, 16, 18, 19, 22, 23, 27, 36, 37, 41, 43, 45, 47, 50], "transmiss": [4, 16], "humanoid": 4, "logic": 4, "channel": [4, 52], "kuka": [4, 18, 23, 24, 25, 52], "rsi": [4, 18, 24, 25, 52], "relat": [4, 6, 7], "forc": [4, 7, 12, 15, 24, 25, 31, 34, 52], "torqu": [4, 12, 24, 25, 31, 34], "simpl": [4, 6, 7, 8, 14, 16, 18, 20, 22, 27, 28, 35, 39], "valv": [4, 12], "mandatori": [4, 9, 37, 42], "dc": 4, "arduino": [4, 21, 26], "board": 4, "modular": [4, 7, 16, 27], "independ": [4, 7, 25], "explan": [4, 14], "given": [4, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 36, 42, 43, 44, 45, 50], "through": [4, 6, 7, 8, 9, 14, 15, 16, 20, 27, 35, 44, 53], "tag": [4, 9, 12, 14, 16, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 35, 53], "chosen": [4, 12], "structur": [4, 6, 8, 14, 27, 33, 35, 42, 43], "track": [4, 30, 49, 53], "togeth": [4, 8, 12, 22, 24, 47], "xacro": [4, 9, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "hereund": 4, "rrbot": [4, 12, 15, 16, 19, 21, 23, 24, 25, 26, 28], "effector": [4, 52], "site": 4, "rrbotsystempositiononli": [4, 25], "ros2_control_demo_hardwar": [4, 12, 15], "example_param_write_for_sec": 4, "example_param_read_for_sec": [4, 12], "joint1": [4, 12, 13, 15, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 44], "joint2": [4, 12, 15, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 44], "rrbotforcetorquesensor1d": 4, "forcetorquesensor1dhardwar": 4, "tcp_fts_sensor": [4, 12, 24, 25], "frame_id": [4, 12, 24, 25, 37, 40, 46, 47], "rrbot_tcp": 4, "min_forc": 4, "max_forc": 4, "rrbotgripp": 4, "positionactuatorhardwar": 4, "gripper_joint": 4, "instead": [4, 13, 22, 27, 29, 42], "pure": 4, "stack": [4, 7, 53], "could": [4, 7, 8, 16, 23, 35, 41, 44], "altern": [4, 18, 44], "script": [4, 6, 14, 35], "skeleton": 4, "sim": [5, 15, 51], "dockerfil": [5, 16], "Then": [5, 8, 16, 27, 29, 43], "ign": 5, "meet": [5, 53], "prerequisit": 5, "along": 5, "gazebosimsystem": 5, "libgz_ros2_control": 5, "gazebosimros2controlplugin": 5, "gazebosimsysteminterfac": 5, "controller_manager_prefix_node_nam": 5, "diff_drive_exampl": 5, "tricycle_drive_exampl": 5, "about": [6, 8, 13, 14, 23, 33, 40, 41, 44, 53], "gener": [6, 7, 12, 14, 15, 21, 22, 23, 24, 25, 26, 27, 34, 35, 44, 47, 53], "task": [6, 7, 33], "envis": 6, "simul": [6, 13, 15, 16, 18, 20, 22, 24, 25, 27], "ignit": 6, "showcas": [6, 7], "grace": 6, "degrad": 6, "roadmap": [6, 16, 53], "place": [6, 35], "draft": 6, "gpio": [6, 16, 27], "mode": [6, 8, 14, 20, 23, 31, 42, 43, 47], "switch": [6, 15, 16, 18, 23], "movement": 6, "safeti": [6, 27], "skill": 6, "prefer": 6, "c": [6, 9, 12, 14, 15, 18, 27], "familiar": [6, 53], "mentor": 6, "\u0161togl": [6, 7], "size": [6, 46], "350": 6, "hour": 6, "difficulti": 6, "medium": 6, "focus": [6, 7, 8], "although": [6, 8, 11, 12, 44], "easi": 6, "therefor": [6, 8, 9, 16, 35, 41, 42, 44], "often": [6, 13, 22, 35, 41], "orchestr": 6, "purpos": [6, 18, 20, 21, 23, 24, 25, 26, 27, 28, 29], "conductor": 6, "scenario": [6, 43], "moment": [6, 8, 44], "right": [6, 16], "replac": [6, 11, 34, 44], "high": [6, 9, 43], "moveit2": [6, 7, 34, 52], "simplecontrollermanag": 6, "goal": [6, 7, 12, 18, 23, 24, 25, 26, 28, 29, 39, 42, 44, 53], "form": [6, 16], "behavior": [6, 13, 27, 43], "benchmark": 6, "statu": [6, 8, 11, 15, 18, 42], "format": [6, 27, 31, 41, 44], "preset": 6, "modul": [6, 20], "reli": 6, "doubl": [6, 9, 13, 18, 27, 30, 32, 39, 42, 46, 47, 49], "desir": [6, 42, 44], "both": [6, 7, 20, 27, 28, 41, 42, 43, 44], "improv": 6, "readabl": [6, 27], "earlier": 6, "concept": [6, 7, 8, 13, 16, 18], "introduc": [6, 7, 8, 18, 27], "essenti": [6, 18], "group": [6, 8, 9, 12, 44, 53], "instanc": [6, 9, 20, 41], "imu": [6, 12, 34], "typic": [6, 12, 22, 41, 42], "acceleromet": 6, "gyroscop": 6, "compass": 6, "Such": [6, 20], "struct": 6, "low": [6, 7], "profil": 6, "intern": [6, 8, 12, 14, 18, 20, 21, 22, 23, 24, 25, 26, 28, 31, 43, 44], "relev": [6, 42, 47, 53], "addition": [6, 27, 30, 32, 49, 53], "few": [6, 7], "175": 6, "rewrit": [6, 53], "rich": 6, "wa": [6, 14, 18, 22, 23, 27, 35, 43], "motiv": 6, "adopt": 6, "port": [6, 11, 12], "quit": 6, "miss": [6, 41, 43, 44], "diff_drive_control": [6, 8, 15, 22], "consist": [6, 44, 53], "onc": [6, 7, 18, 22, 23, 24, 25, 27, 28], "identifi": [6, 27], "much": [6, 8, 18, 21, 22, 23, 24, 25, 26, 28, 35, 44], "303": 6, "304": 6, "stretch": 6, "81": 6, "302": 6, "unit": 6, "gmock": 6, "cc": [7, 43, 44], "BY": [7, 43, 44], "licens": [7, 43, 44], "author": [7, 8], "either": [7, 9, 18, 23, 24, 25, 26, 28, 29, 43], "down": [7, 27], "below": [7, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 42, 43, 44], "compani": 7, "my": 7, "company_nam": 7, "tricycl": [7, 34, 48], "control": [7, 10, 11, 12, 13, 14, 15, 16, 30, 32, 37, 40, 41, 42, 43, 46, 48, 49, 52, 53], "event": 7, "pixel": 7, "prefac": 7, "introduct": 7, "plapp": 7, "kernel": [7, 9], "agnost": [7, 27], "share": [7, 14, 27, 29, 35, 47], "well": [7, 9, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 44], "perform": [7, 9, 27], "heavi": 7, "stogl": 7, "consult": 7, "practition": 7, "guid": [7, 14, 35], "top": 7, "virtual": [7, 8, 32], "talk": 7, "delv": 7, "deeper": 7, "what": [7, 18, 27], "explicit": [7, 27, 42], "chain": [7, 10, 15, 16, 27, 31, 42, 47], "emerg": 7, "handler": 7, "mock": [7, 10, 14], "usag": [7, 8, 9, 12, 15, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28], "openli": 7, "record": 7, "fiveai": 7, "ltd": 7, "best": [7, 9, 35], "focu": [7, 8], "becom": [7, 20], "util": 7, "3rd": 7, "parti": 7, "nav2": [7, 34], "practic": 7, "tip": [7, 27], "hot": 7, "shown": [7, 27, 43], "furthermor": [7, 22], "offer": [7, 9, 14, 27], "expos": [7, 16, 20], "problem": [7, 53], "manipul": [7, 16, 18, 20, 27, 28, 42], "plan": [7, 53], "autonom": 7, "navig": 7, "ideal": [7, 13], "made": [7, 11], "mobil": [7, 16, 22, 33, 47, 48], "arm": [7, 18, 20, 28], "extra": [7, 27, 41], "readi": [7, 14, 16, 20, 34, 35], "studi": 7, "ur": 7, "With": [7, 27, 29, 44], "moveit": [7, 13], "ingredi": 7, "run": [7, 8, 9, 13, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 43, 47], "scale": [7, 42], "factor": 7, "teach": 7, "pendant": 7, "influenc": 7, "picknik": 7, "inc": 7, "lovro": 7, "ivanov": 7, "zelenak": 7, "rune": 7, "s\u00f8e": 7, "knudsen": 7, "onlin": [7, 14, 35], "trajectori": [7, 18, 27, 34, 42, 53], "admitt": [7, 34], "One": [7, 8], "reason": [7, 8, 9, 27], "upgrad": 7, "ros1": [7, 16], "better": 7, "realtim": [7, 9, 27, 33, 44, 48, 53], "contact": 7, "insert": 7, "singl": [7, 24, 39], "waypoint": [7, 43, 44], "mani": [7, 27, 34, 35], "teleoper": 7, "involv": 7, "kinemat": [7, 8, 16, 22, 27, 30, 31, 32, 47, 49], "acceler": [7, 16, 23, 27, 31, 33, 40, 42, 43, 44, 48], "jerk": [7, 33, 48], "obei": [7, 27], "demo": [7, 12], "booth": 7, "zeleank": 7, "unifi": 7, "life": [7, 27], "cycl": [7, 27], "_control": [7, 16], "wild": 7, "materi": 7, "quick": [7, 11], "overview": 7, "layer": 7, "aka": 7, "systemcompon": 7, "forward": [7, 13, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 34, 42, 44, 53], "done": [7, 8, 14, 18, 21, 22, 23, 24, 25, 26, 27, 28, 35], "look": [7, 22], "modifi": 7, "simpli": [7, 9, 18, 43, 44], "edit": 7, "collect": [7, 36, 45, 50], "semant": [7, 12, 31, 37, 40, 46], "monolit": 7, "controlko": 7, "propos": [8, 53], "minim": [8, 53], "viabl": [8, 27], "serial": [8, 27], "tri": [8, 42], "clariti": 8, "arbitrari": [8, 27, 44], "order": [8, 27], "nevertheless": 8, "convinc": 8, "would": [8, 41], "unnecessari": 8, "long": 8, "term": [8, 53], "clearer": 8, "let": [8, 16, 18, 20, 21, 22, 23, 24, 25, 26, 28], "yet": [8, 9, 16, 20, 33, 43, 44], "controllers_chain": 8, "doc": [8, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 53], "position_track": 8, "pid": [8, 42, 43, 44, 53], "now": [8, 9, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 43], "imagin": 8, "flexibli": 8, "preced": 8, "step": [8, 14, 16, 35, 43, 53], "At": [8, 14, 20, 35], "attach": 8, "disabl": [8, 13, 47], "subscrib": [8, 19, 20, 27], "differenti": [8, 16, 22, 32, 33, 34, 53], "interfaceconfigur": [8, 27], "input_interface_configur": 8, "const": [8, 11, 27], "anoth": [8, 9, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 44], "simplic": [8, 27], "try": [8, 27], "exclus": [8, 27], "rather": [8, 16, 43], "void": 8, "set_chained_mod": 8, "bool": [8, 39, 42, 47], "flag": [8, 14, 35, 42], "on_set_chained_mod": 8, "pid_refer": 8, "controller_nam": [8, 9, 15, 31, 35, 44, 47], "v_x": 8, "v_y": 8, "w_z": 8, "cmd_vel": [8, 33], "cmd_vel_unstamp": [8, 22, 33], "Its": [8, 53], "continu": [8, 42, 43, 44], "chainabl": [8, 16, 20, 33, 44], "ownership": 8, "process": [8, 14, 27, 35, 43], "claim": [8, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "vector": [8, 20, 27, 35], "invers": [8, 27], "rule": [8, 9, 14, 35], "think": [8, 16], "break": [8, 13], "middl": [8, 32], "unavail": [8, 20], "anyth": 8, "confus": 8, "irelev": 8, "feasibl": 8, "interface_configuration_typ": 8, "littl": 9, "jitter": 9, "normal": [9, 27, 42], "linux": 9, "comput": [9, 16, 33, 47, 48], "throughput": 9, "suit": 9, "easiest": [9, 14, 35], "ubuntu": 9, "lt": 9, "beta": 9, "rt": 9, "amd64": 9, "debian": 9, "bullsey": 9, "thread": [9, 27], "sched_fifo": 9, "prioriti": 9, "addgroup": 9, "usermod": 9, "whoami": 9, "afterward": 9, "secur": 9, "conf": [9, 27], "soft": 9, "rtprio": 9, "memlock": 9, "102400": 9, "appli": [9, 15, 27, 33, 44], "log": 9, "again": [9, 11, 18, 22, 27], "activate_components_on_start": 9, "empti": [9, 35, 40, 44, 47], "attribut": [9, 27], "stai": 9, "unconfigur": [9, 11, 18, 27], "configure_components_on_start": 9, "update_r": [9, 36, 45, 50], "frequenc": 9, "startup": 9, "h": [9, 14, 15, 35], "param_fil": 9, "controller_typ": 9, "timeout": [9, 15, 39, 42, 47, 48], "controller_manager_timeout": 9, "argument": [9, 14, 15, 18, 21, 22, 23, 24, 25, 26, 28], "exit": [9, 15], "leav": 9, "namespac": [9, 14, 27, 34, 35, 41], "kill": [9, 15, 27], "wait": [9, 15, 26, 42], "until": [9, 27, 42, 43], "mai": [9, 11, 24, 34, 36, 45, 50], "taken": [9, 47], "becaus": [9, 12, 18, 20, 21, 22, 23, 24, 25, 26, 28, 43], "rclcpp": [9, 14, 27, 35], "than": [9, 39, 42, 44, 47], "global": 9, "remap": 9, "forcibli": 9, "lead": [9, 44], "duplic": [9, 47], "occur": [9, 27], "whether": 9, "sibl": 9, "hierarchi": 9, "workaround": 9, "nodeopt": 9, "pass": [9, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28], "caus": [9, 43, 44, 47], "get_cm_node_opt": 9, "arg": 9, "_target_node_nam": 9, "__node": 9, "dst_node_nam": 9, "std": [9, 27, 42], "make_shar": 9, "some_optional_namespac": 9, "simplest": 9, "switch_control": [9, 18], "broadcast": [9, 12, 13, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 41], "achiev": [9, 27, 36, 45, 50], "return": [9, 11, 14, 18, 27, 35, 39, 41, 43, 44], "NOT": 9, "FOR": 9, "detect": 9, "listen": [9, 42], "doxygen": [10, 14], "cascad": 10, "return_typ": [11, 27, 35], "on_error": [11, 14, 27], "previous_st": [11, 27], "success": [11, 14, 27, 35, 39, 44], "callbackreturn": [11, 14, 27], "failur": 11, "recov": 11, "reload": [11, 15], "substanti": 11, "renam": 11, "on_init": [11, 14, 27, 35], "baseinterfac": 11, "remov": 11, "base_interfac": 11, "hpp": [11, 14, 16, 27, 31, 35], "hardware_interface_status_valu": 11, "rclcpp_lifecycl": [11, 14, 27, 35], "strictli": [11, 12], "status_": 11, "in_deactiv": 11, "undefin": 11, "refern": 11, "symbol": 11, "node_interfac": [11, 27], "lifecyclenodeinterfac": [11, 14, 27], "rclcpp_lifecyl": 11, "cmakelist": [11, 14, 27, 35], "txt": [11, 14, 27, 35], "devic": [12, 52], "associ": 12, "joint_state_broadcast": [12, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "coupl": 12, "ship": 12, "cannot": [12, 20, 27, 44], "keyword": 12, "digit": 12, "signal": 12, "electr": 12, "analog": 12, "within": [12, 18, 44], "vacuum": [12, 19], "flang": 12, "off": 12, "rrbotsystemmutiplegpio": 12, "example_param_hw_start_duration_sec": 12, "example_param_hw_stop_duration_sec": 12, "example_param_hw_slowdown": 12, "flange_digital_io": 12, "digital_output1": 12, "know": 12, "digital_output2": 12, "digital_input1": 12, "digital_input2": 12, "flange_analog_io": [12, 19], "analog_output1": [12, 19], "analog_input1": [12, 19], "analog_input2": [12, 19], "flange_vacuum": [12, 19], "suction": 12, "grasp": 12, "multimod": 12, "multimodalgripp": 12, "parallel_fing": 12, "temperatur": [12, 16], "feedback": [12, 13, 21, 41, 42, 44, 47, 48], "adjust": [12, 15, 18, 27], "calibr": 12, "2d": [12, 24, 25], "ft": [12, 24, 25, 37], "choic": [12, 47], "matric": 12, "rrbotforcetorquesensor2d": 12, "forcetorquesensor2dhardwar": 12, "fx": 12, "tz": 12, "kuka_tcp": 12, "fx_rang": 12, "tz_rang": 12, "temp_feedback": 12, "calibration_matrix_nr": 12, "mirror": 13, "correspond": [13, 14, 27, 35, 47, 53], "offlin": 13, "advantag": 13, "pipe": 13, "even": [13, 20, 44], "debug": 13, "boost": 13, "mimic": 13, "offset": [13, 41, 42], "fake": 13, "disable_command": 13, "boolean": [13, 41, 42], "erron": [13, 27], "noth": 13, "suddenli": 13, "Or": [13, 18, 23, 24, 25, 26, 28, 29], "mock_sensor_command": 13, "position_state_following_offset": 13, "custom_interface_with_following_offset": 13, "map": [13, 41, 44], "compil": [14, 27, 29, 35], "prepar": [14, 23, 35], "ament_cmak": [14, 35], "search": [14, 35], "recent": [14, 35], "pkg": [14, 35], "package_nam": [14, 35], "alreadi": [14, 15, 16, 18, 20, 27, 29, 35, 44], "robot_hardware_interface_nam": 14, "visibility_control": [14, 35], "window": [14, 35], "copi": [14, 35], "prefix": [14, 31, 35, 37, 40, 46], "guard": [14, 35], "ifndef": [14, 35], "preprocessor": [14, 35], "engin": [14, 35], "friend": [14, 35], "interface_typ": [14, 35], "uniqu": [14, 27, 35], "written": [14, 21, 26, 27, 35], "snake_cas": [14, 35], "interfacetyp": 14, "hardwareinterfacenam": 14, "public": [14, 27, 35], "on_cleanup": [14, 27], "on_shutdown": [14, 27], "overrid": [14, 27, 35, 36, 44, 45, 50], "export_state_interfac": [14, 27], "export_command_interfac": [14, 27], "prepare_command_mode_switch": 14, "perform_command_mode_switch": 14, "further": [14, 35], "exact": [14, 35], "simplifi": [14, 27, 35, 53], "valid": [14, 16, 46], "fine": [14, 22, 35], "otherwis": [14, 16, 35, 41, 42], "opposit": [14, 35], "remind": 14, "full": [14, 16, 35], "joint_nam": [14, 31, 35, 42], "shutdown": [14, 27], "gracefulli": 14, "store": [14, 35], "close": [14, 35], "class_list_macro": [14, 27, 35], "my_hardware_interface_packag": 14, "robothardwareinterfacenam": 14, "second": [14, 15, 18, 20, 23, 24, 25, 26, 27, 28, 29, 35, 43, 53], "visibl": [14, 35], "mock_compon": [14, 22], "bottom": [14, 27, 35], "test_load_": [14, 35], "load_generic_system_2dof": 14, "test_generic_system": 14, "find_packag": [14, 35], "directori": [14, 35], "ament": [14, 35], "cmake": 14, "pluginlib_export_plugin_description_fil": [14, 27, 35], "ament_cmake_gmock": [14, 35], "ament_add_gmock": [14, 35], "ament_export_librari": [14, 35], "ament_packag": [14, 35], "test_depend": [14, 35], "rememb": [14, 35], "root": [14, 35], "workspac": [14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "enjoi": [14, 35], "great": [14, 35], "templat": [14, 16, 27, 35], "shell": [14, 35], "onward": 14, "spin": 15, "spin_tim": 15, "hidden": 15, "discoveri": 15, "daemon": 15, "test_controller_nam": 15, "test_control": 15, "diffdrivecontrol": [15, 22], "verbos": 15, "label": [15, 21, 22, 24, 25, 26, 43], "unclaim": [15, 20, 23], "inact": [15, 18, 23, 27], "ctrl1": 15, "ctrl2": 15, "strict": 15, "asap": 15, "switch_timeout": 15, "diagram": 15, "tmp": 15, "controller_diagram": 15, "gv": 15, "pdf": [15, 27], "demonstr": [16, 18, 20, 22, 23, 28, 29], "prove": 16, "checkout": 16, "roscon2022_workshop": 16, "hardwareinterfac": [16, 27], "diffbot": 16, "degre": [16, 27, 44, 47], "freedom": [16, 27, 47], "components_architecture_and_urdf_exampl": 16, "revolut": [16, 18, 20, 27, 28], "drive": [16, 22, 30, 32, 33, 34, 47, 48, 49, 53], "accord": [16, 22, 27], "intermedi": 16, "car": 16, "steer": [16, 30, 32, 34, 47, 48, 49], "tba": 16, "tabl": 16, "offici": [16, 52], "easili": 16, "aptitud": 16, "might": [16, 43], "own": [16, 18, 27], "git": [16, 27], "clone": [16, 27], "b": [16, 27], "merg": 16, "f": 16, "procedur": 16, "rviz2": [16, 18, 29], "visual": [16, 18, 25, 27, 41], "joint_state_publisher_gui": [16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "bring": 16, "ros2_control_demo_example_1": [16, 18], "view_robot": [16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "omit": 16, "termin": [16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "example_1": [16, 18, 19, 20, 29], "rviz": [16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 41], "slider": 16, "around": [16, 37, 40, 42, 46], "ros2_control_demo_example_2": [16, 22], "come": [16, 44], "categori": 16, "individu": [16, 35, 46], "position_in_degre": 16, "hardware_interface_type_valu": [16, 31], "6dof": 16, "variou": [18, 28], "invert": 18, "pendulum": 18, "fun": 18, "proprietari": [18, 21, 22, 23, 24, 25, 26, 28], "view": [18, 27], "recreat": 18, "robotmodel": 18, "displai": [18, 20, 21, 23, 24, 25, 26, 28, 29], "ros2_control_demo_descript": 18, "ok": [18, 21, 22, 23, 24, 25, 26, 27, 28, 35], "warn": [18, 21, 22, 23, 24, 25, 26, 28, 41], "invalid": [18, 21, 22, 23, 24, 25, 26, 28], "frame": [18, 21, 22, 23, 24, 25, 26, 27, 28, 37], "odom": [18, 21, 22, 23, 24, 25, 26, 28, 33, 47], "cantransform": [18, 21, 22, 23, 24, 25, 26, 28], "target_fram": [18, 21, 22, 23, 24, 25, 26, 28], "happen": [18, 21, 22, 23, 24, 25, 26, 27, 28], "ctrl": 18, "lot": [18, 20, 21, 22, 23, 24, 25, 26, 28], "exemplari": [18, 21, 23, 24, 25, 26, 28, 30, 32, 47, 49], "orang": [18, 20, 21, 22, 23, 24, 25, 26, 28, 29], "yellow": [18, 20, 21, 23, 24, 25, 26, 28, 29], "rectangl": [18, 20, 21, 23, 24, 25, 26, 28], "introspect": [18, 20, 21, 22, 23, 24, 25, 26, 28], "list_hardware_interfac": [18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "entrypoint": 18, "nomin": 18, "marker": [18, 20, 21, 22, 23, 24, 25, 26, 28, 29], "list_control": [18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "jointstatebroadcast": [18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "forward_position_control": [18, 19, 20, 23, 24, 25, 26, 28, 29], "forward_command_control": [18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 36, 45, 50], "pub": [18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "std_msg": [18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 36, 38, 45, 50], "float64multiarrai": [18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 36, 38, 45, 50], "everi": [18, 23, 24, 25, 26, 27, 28, 29, 38, 42, 53], "test_forward_position_control": [18, 23, 24, 25, 26, 28, 29], "block": [18, 20, 21, 23, 24, 25, 26, 27, 28], "got": [18, 19, 20, 21, 22, 23, 24, 25, 26], "50000": [18, 20, 24, 25, 26], "echo": [18, 19, 20, 22, 24, 25, 29], "joint_stat": [18, 20, 22, 29, 41], "dynamic_joint_st": [18, 20, 29, 41], "load_control": 18, "joint_trajectory_position_control": 18, "successfulli": [18, 21, 26], "set_controller_st": 18, "rrbot_control": [18, 19, 20, 28, 29], "four": [18, 21, 30], "test_joint_trajectory_control": 18, "rrbot_joint_trajectory_publish": 18, "rrbot_descript": [18, 19, 20, 21, 23, 24, 25, 26, 28, 29], "rrbot_forward_position_publish": [18, 29], "ros2_control_demo_example_10": 19, "contrast": 19, "gpio_control": 19, "gpiocontrol": 19, "interface_nam": [19, 37, 38], "1199574016": 19, "1676318848": 19, "rrbotsystemwithgpiohardwar": 19, "gp": 19, "example_12": 20, "been": 20, "known": 20, "passthrough_control": 20, "ros2_control_demo_example_12": 20, "ident": [20, 22, 27, 29, 43], "joint2_position_control": 20, "passthroughcontrol": 20, "joint1_position_control": 20, "someth": 20, "automat": [20, 27, 29, 33, 48], "appear": 20, "whose": [20, 43], "henc": [20, 27], "launch_chained_control": 20, "position_control": [20, 34, 38], "streamlin": 20, "clearli": 20, "sent": [20, 42], "reflect": 20, "canopen_402": [21, 26], "modbu": [21, 26], "rs232": [21, 26], "rs485": [21, 26], "ros2_control_demo_example_14": 21, "rrbot_modular_actuators_without_feedback_sensors_for_position_feedback": 21, "list_hardware_compon": [21, 22, 24, 25, 26], "rrbotmodularjoint2": [21, 26], "rrbotactuatorwithoutfeedback": 21, "rrbotmodularjoint1": [21, 26], "rrbotmodularpositionsensorjoint2": 21, "rrbotsensorpositionfeedback": 21, "rrbotmodularpositionsensorjoint1": 21, "forward_velocity_control": [21, 23], "000000": 21, "00000": [21, 22, 23], "25300": 21, "rrbot_actuator_without_feedback": 21, "rrbot_sensor_for_position_feedback": 21, "example_2": 22, "excess": 22, "print": [22, 41], "left_wheel_joint": 22, "right_wheel_joint": 22, "diffbot_base_control": 22, "diff": 22, "geometry_msg": [22, 24, 25, 33, 37, 47], "twist": [22, 33, 47, 48], "linear": [22, 27, 33, 40, 43, 47, 48], "angular": [22, 33, 40, 47, 48], "circl": 22, "diffbotsystemhardwar": 22, "33333": 22, "faster": 22, "genericsystem": 22, "use_mock_hardwar": 22, "true": [22, 29, 33, 42, 43, 44, 47], "calculate_dynam": 22, "diffbot_control": 22, "diffbot_descript": 22, "diffbot_system": 22, "example_3": 23, "fri": [23, 52], "abb": [23, 52], "yumi": 23, "schunk": [23, 52], "lwa4p": 23, "illeg": 23, "declin": 23, "faulti": 23, "ros2_control_demo_example_3": 23, "rrbot_system_multi_interfac": 23, "robot_control": [23, 27], "spawn": 23, "forward_acceleration_control": 23, "velocity_control": [23, 34, 38], "jointgroupvelocitycontrol": 23, "rrbotsystemmultiinterfacehardwar": 23, "po": [23, 43], "78500": 23, "vel": [23, 47], "acc": 23, "control_lvl": 23, "forward_illegal1_control": 23, "forward_illegal2_control": 23, "1676209982": 23, "531163501": 23, "resource_manag": 23, "rrbotsystemmultiinterfac": 23, "did": 23, "531223835": 23, "sinc": [23, 27, 32], "reject": [23, 42, 43], "spawner": 23, "531717376": 23, "spawner_forward_illegal1_control": 23, "indic": [23, 27], "rrbot_multi_interface_forward_control": 23, "krc": 24, "prototyp": 24, "odri": [24, 52], "ros2_control_demo_example_4": 24, "rrbot_system_with_sensor": 24, "rrbotsystemwithsensor": 24, "rrbotsystemwithsensorhardwar": 24, "fts_broadcast": [24, 25], "force_torque_sensor_broadcast": [24, 25], "forcetorquesensorbroadcast": [24, 25], "wrench": [24, 25, 31], "republish": [24, 25], "wrenchstamp": [24, 25, 37], "stamp": [24, 25, 47], "sec": [24, 25], "1676444704": [24, 25], "nanosec": [24, 25], "332221422": [24, 25], "tool_link": [24, 25], "946532964706421": 24, "nan": [24, 42], "0540995597839355": 24, "rrbot_with_sensor_control": 24, "pc": 25, "3d": [25, 27], "ros2_control_demo_example_5": 25, "rrbot_system_with_external_sensor": 25, "externalrrbotftsensor": 25, "externalrrbotforcetorquesensorhardwar": 25, "2126582860946655": 25, "3202226161956787": 25, "4302282333374023": 25, "540233612060547": 25, "647800624370575": 25, "7602499723434448": 25, "rrbot_with_external_sensor_control": 25, "rrbot_system_position_onli": 25, "external_rrbot_force_torque_sensor": 25, "mara": 26, "ros2_control_demo_example_6": 26, "rrbot_modular_actu": 26, "rrbotmodularjoint": 26, "rrbot_actu": 26, "queri": [27, 44], "enhanc": 27, "deploi": 27, "oper": [27, 53], "pattern": 27, "vendor": 27, "runtim": 27, "program": 27, "conform": 27, "newest": 27, "characterist": 27, "tree": [27, 33], "primari": [27, 44], "commerci": 27, "scratch": 27, "illustr": 27, "stl": 27, "dae": 27, "coars": 27, "mesh": 27, "fast": [27, 52], "collis": 27, "express": 27, "vertic": 27, "transform": 27, "rotat": [27, 33, 42], "translat": [27, 33, 48], "proxim": 27, "face": 27, "co": 27, "planer": 27, "xy": 27, "plane": 27, "align": 27, "blender": 27, "begin": 27, "neg": [27, 42], "roll": 27, "pitch": 27, "yaw": 27, "repeat": 27, "robot_6_dof": 27, "base_link": [27, 47, 48], "link_0": 27, "inerti": 27, "mass": 27, "inertia": 27, "ixx": 27, "ixi": 27, "ixz": 27, "iyi": 27, "iyz": 27, "izz": 27, "tool0": 27, "base_joint": 27, "joint_1": 27, "link_1": 27, "061584": 27, "141592653589793": 27, "name_spac": 27, "class_nam": 27, "pi": [27, 42], "enclos": 27, "previous": 27, "left": 27, "zero": [27, 31, 42, 43], "rel": [27, 43], "center": 27, "uniform": 27, "consecut": 27, "motion": [27, 42], "subsequ": 27, "join": [27, 53], "speci": 27, "verifi": 27, "urdf_to_graphviz": 27, "r6bot": 27, "explain": 27, "robotsystem": 27, "ur5": 27, "five": 27, "hardware_interface_return_valu": 27, "hardware_interface_publ": 27, "commandinterfac": 27, "durat": 27, "period": [27, 42], "privat": 27, "memori": [27, 35], "alloc": 27, "establish": 27, "angl": [27, 32, 47], "notabl": 27, "vari": 27, "fill": 27, "field": [27, 41, 43], "suppos": [27, 43], "tcp_force_torque_sensor": 27, "Their": 27, "pointer": 27, "info_": 27, "state_interfaces_": 27, "nearli": 27, "previou": [27, 43, 53], "command_interfaces_": 27, "constraint": [27, 35, 39, 40, 42, 44, 47], "respons": 27, "turn": 27, "oppos": [27, 44], "tcp": [27, 31], "packet": 27, "robot_6_dof_hardwar": 27, "discov": 27, "library_nam": 27, "base_class_typ": 27, "human": 27, "notic": [27, 43], "just": 27, "add_librari": 27, "robot_hardwar": 27, "unlik": 27, "finit": 27, "certain": [27, 36, 45, 50], "transit": [27, 43], "robotcontrol": 27, "nine": 27, "six": [27, 37], "callback": 27, "lifetim": 27, "restart": 27, "reconfigur": 27, "buffer": [27, 53], "reset": [27, 47], "transfer": 27, "eventu": 27, "mutex": 27, "guarante": [27, 43], "never": 27, "release_interfac": 27, "shut": 27, "free": [27, 33], "cleanup": 27, "r6bot_control": 27, "view_r6bot": 27, "ros2_control_demo_example_7": 27, "send_trajectori": 27, "circular": 27, "ros2_control_demo_example_8": 28, "rrbot_transmissions_system_position_onli": 28, "rrbottransmissionssystempositiononlyhardwar": 28, "transmission1": 28, "actuator1": 28, "transmission2": 28, "actuator2": 28, "383253": 28, "766505": 28, "53301": 28, "example_9": 29, "later": [29, 43], "ros2_control_demo_example_9": 29, "rrbot_gazebo_class": 29, "usr": 29, "ax": [30, 32, 37, 40, 49], "wheel": [30, 32, 33, 47, 49], "traction": [30, 32, 47, 48, 49], "steerabl": [30, 32, 49], "generate_parameter_librari": [30, 31, 32, 38, 39, 40, 47, 49], "parameter": [30, 32, 47, 49], "front_wheel_track": 30, "front": [30, 31, 32, 47, 49], "length": [30, 40, 47, 49], "en": [30, 32, 49], "wikipedia": [30, 32, 47, 49, 53], "wiki": [30, 32, 43, 44, 49], "wheelbas": [30, 32, 49], "rear_wheel_track": 30, "rear": [30, 32, 47, 49], "distanc": [30, 32, 44, 46, 49], "front_wheels_radiu": [30, 49], "radiu": [30, 32, 49], "rear_wheels_radiu": [30, 49], "chainedcontrollerinterfac": 31, "joint_refer": 31, "trajectory_msg": [31, 43, 44], "jointtrajectorypoint": [31, 43], "admittancecontrollerst": 31, "ft_sensor": 31, "sensor_nam": [31, 37, 40, 46], "ackermann": [32, 34, 47], "vehicl": 32, "probabl": 32, "front_wheel_radiu": 32, "rear_wheel_radiu": 32, "bodi": 33, "odometri": [33, 47, 48], "space": [33, 44], "hw_if_posit": [33, 34, 47], "hw_if_veloc": [33, 34, 47], "position_feedback": [33, 47], "twiststamp": [33, 47], "use_stamped_vel": [33, 47], "nav_msg": [33, 47], "estim": 33, "tf": [33, 47], "tf2_msg": [33, 47], "tfmessag": [33, 47], "enable_odom_tf": [33, 47], "cmd_vel_out": 33, "publish_limited_veloc": 33, "jointlimit": 33, "joint_limit": 33, "commonli": 34, "bicycl": [34, 47], "effort_control": [34, 38], "hw_if_acceler": 34, "hw_if_effort": 34, "represent": [34, 44], "controllernam": 35, "protect": 35, "reserv": 35, "importantli": 35, "ask": [35, 41], "sort": 35, "controller_name_namespac": 35, "controller_name_packag": 35, "ros2_control_test_asset": 35, "special": [36, 43, 45, 50], "hz": [36, 39, 45, 50], "wrapper": [37, 40, 46], "forcetorquesensor": 37, "6d": 37, "per": 37, "less": [37, 47], "example_nam": 37, "example_interfac": 37, "feedforward": 38, "multi_interface_forward_command_control": 38, "string_arrai": [38, 47], "action_monitor_r": [39, 42, 44], "greater": [39, 42], "equal": [39, 40], "goal_toler": 39, "max_effort": 39, "allow_stal": 39, "stall": 39, "stall_velocity_threshold": 39, "threshold": 39, "001": 39, "stall_timeout": 39, "imusensor": 40, "orient": 40, "angular_veloc": 40, "linear_acceler": 40, "static_covariance_orient": 40, "double_arrai": [40, 47], "static": 40, "covari": [40, 47], "row": 40, "static_covariance_angular_veloc": 40, "static_covariance_linear_acceler": 40, "unless": 41, "latter": 41, "matrix": [41, 47], "product": 41, "use_local_top": 41, "my_state_broadcast": 41, "arrai": 41, "extra_joint": 41, "map_interface_to_joint_st": 41, "usecas": 41, "hydraul": [41, 42], "relianc": 41, "techniqu": 41, "slightli": 41, "custom_interfac": 41, "kf_estimated_posit": 41, "derived_veloc": 41, "derived_effort": 41, "torque_sensor": 41, "current_sensor": 41, "command_joint": 42, "jtc": 42, "state_publish_r": [42, 44], "monitor": [42, 44], "allow_partial_joints_go": [42, 44], "allow_integration_in_goal_trajectori": [42, 43], "interpolation_method": 42, "interpol": [42, 44], "spline": 42, "open_loop_control": [42, 44], "gain": 42, "numer": 42, "numeric_limit": 42, "quiet_nan": 42, "start_with_hold": 42, "hold": [42, 43], "allow_nonzero_velocity_at_trajectory_end": 42, "cmd_timeout": 42, "stale": 42, "count": 42, "goal_tim": [42, 44], "toler": [42, 44], "jointtrajectori": [42, 43, 44], "stopped_velocity_toler": [42, 44], "deviat": 42, "maxim": 42, "reach": [42, 43, 44], "predefin": 42, "infinit": 42, "amount": 42, "law": [42, 44], "k_": 42, "ff": 42, "v_d": 42, "k_p": 42, "k_i": 42, "sum": 42, "dt": 42, "k_d": 42, "angle_wraparound": 42, "i_clamp": 42, "clamp": 42, "symmetr": 42, "ff_velocity_scal": 42, "feed": 42, "wrap": [42, 44], "ie": [42, 43], "shortest": 42, "s_d": 42, "saniti": 43, "sampl": [43, 47], "segment": [43, 44], "fault": 43, "datapoint": 43, "deduc": 43, "nor": 43, "discourag": 43, "yield": 43, "discontinu": [43, 44], "cubic": 43, "quintic": 43, "heun": 43, "grid": 43, "10m": 43, "deduct": 43, "nonzero": 43, "inconsist": 43, "overshoot": 43, "timestamp": 43, "arriv": 43, "necessarili": 43, "discard": 43, "substitut": 43, "smarter": 43, "preserv": 43, "flat": 43, "grei": 43, "red": 43, "traj": 43, "time_from_start": 43, "splice": 43, "append": 43, "held": [43, 44], "smooth": [43, 53], "longer": 43, "slower": 43, "effect": 43, "Of": 43, "interest": 43, "adolfo": [43, 44], "rodriguez": [43, 44], "instant": 44, "citat": 44, "adapt": 44, "restrict": 44, "present": 44, "robust": 44, "clock": 44, "queu": 44, "joint3": 44, "joint4": 44, "joint5": 44, "joint6": 44, "preempt": 44, "cancel": 44, "notifi": 44, "abort": 44, "legal": 44, "subset": 44, "favor": 44, "violat": 44, "joint_trajectori": 44, "fire": 44, "sender": 44, "query_st": 44, "cumbersom": 44, "controller_st": [44, 47], "jointtrajectorycontrollerst": 44, "querytrajectoryst": 44, "footnot": 44, "rangesensor": 46, "radiation_typ": 46, "int": [46, 47], "radiat": 46, "ultrason": 46, "infrar": 46, "field_of_view": 46, "arc": 46, "rad": [46, 47], "min_rang": 46, "minimum": 46, "m": [46, 47], "max_rang": 46, "maximum": 46, "nomenclatur": 47, "unstamp": 47, "concret": 47, "tricylc": 47, "seer": 47, "front_steer": 47, "front_wheels_nam": 47, "rear_wheels_nam": 47, "traction_feedback_typ": 47, "in_chained_mod": 47, "reference_unstamp": 47, "tf_odometri": 47, "steeringcontrollerstatu": 47, "reference_timeout": 47, "unwant": 47, "danger": 47, "behaviour": 47, "rear_wheels_state_nam": 47, "front_wheels_state_nam": 47, "open_loop": 47, "velocity_rolling_window_s": 47, "number": 47, "averag": 47, "base_frame_id": 47, "odom_frame_id": 47, "twist_covariance_diagon": 47, "diagon": 47, "pose_covariance_diagon": 47, "pose": 47, "wheel_track": 49, "page": [51, 52], "isaac": 51, "webot": 51, "manufactur": 52, "franka": 52, "emika": 52, "xarm": 52, "flexiv": 52, "rizon": 52, "igu": 52, "commonplac": 52, "husarion": 52, "rosbot": 52, "xl": 52, "2r": 52, "pro": 52, "openmanipul": 52, "clearpath": 52, "jackal": 52, "j100": 52, "huski": 52, "a200": 52, "unoffici": 52, "iiwa": 52, "lbr": 52, "iiqka": 52, "eci": 52, "sunris": 52, "kss": 52, "egm": 52, "mitsubishi": 52, "rv1a": 52, "protocol": 52, "ethercat": 52, "canopen": 52, "svh": 52, "finger": 52, "dimens": 52, "haptic": 52, "odriv": 52, "ndi": 52, "pca9685": 52, "bit": 52, "pwm": 52, "servo": 52, "hoverboard": 52, "overcom": 53, "idea": 53, "wide": 53, "toolkit": 53, "unreleas": 53, "question": 53, "wg": 53, "wednesdai": 53, "announc": 53, "discours": 53, "googl": 53, "bug": 53, "tracker": 53, "reproduc": 53, "regard": 53, "built": 53, "gmt": 53}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"acknowledg": 0, "maintain": 0, "review": 0, "stat": 0, "contributor": 0, "compani": 0, "institut": 0, "contribut": 1, "pull": 1, "request": 1, "rule": 1, "repositori": [1, 16, 53], "process": [1, 9], "merg": 1, "write": [1, 11, 14, 27, 35], "document": [1, 8, 10, 53], "structur": [1, 2], "ci": 1, "configur": 1, "usag": [1, 3, 5], "differ": 2, "ros_control": 2, "ros1": [2, 6], "hardwar": [2, 4, 6, 9, 11, 12, 14, 27, 38, 41, 44], "class": [2, 8], "interfac": [2, 4, 12, 15, 19, 23, 27, 28, 31, 33, 36, 38, 41, 44, 45, 47, 50], "control": [2, 3, 4, 5, 6, 8, 9, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 35, 36, 38, 39, 44, 45, 47, 50, 51], "": [2, 33, 44, 47], "access": 2, "migrat": [2, 11], "guid": 2, "ros2_control": [2, 3, 5, 6, 10, 12, 16, 27, 31, 34, 53], "robothardwar": 2, "compon": [2, 4, 6, 11, 13, 14], "gazebo_ros2_control": 3, "modifi": [3, 5], "build": [3, 4, 5, 16], "your": [3, 4, 5], "own": [3, 5], "To": [3, 5, 16], "run": [3, 4, 5, 16], "demo": [3, 5, 6, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "add": [3, 5, 6], "tag": [3, 5], "urdf": [3, 4, 5, 27], "simpl": [3, 5], "setup": [3, 5], "us": [3, 5, 8, 9, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 35, 44], "mimic": [3, 5], "joint": [3, 5, 12, 13, 44], "simul": [3, 5, 29, 51], "plugin": [3, 5, 27], "default": [3, 5], "behavior": [3, 5], "advanc": [3, 5], "custom": [3, 5], "set": [3, 5], "up": [3, 5], "gazebo_ros2_control_demo": 3, "get": 4, "start": 4, "instal": [4, 16], "binari": 4, "packag": [4, 16], "from": [4, 6, 11, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 47], "sourc": [4, 16], "architectur": 4, "manag": [4, 8, 9], "resourc": [4, 7, 8], "user": 4, "descript": [4, 27, 33, 44, 47], "framework": 4, "robot": [4, 7, 16, 19, 21, 23, 24, 25, 26, 27, 28, 34, 52], "gz_ros2_control": 5, "gz_ros2_control_demo": 5, "project": 6, "idea": 6, "gsoc": 6, "2024": 6, "tutori": [6, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "mission": 6, "support": [6, 52], "semant": 6, "featur": [6, 10, 33, 44, 48], "pariti": 6, "present": 7, "2023": 7, "02": 7, "ro": [7, 31, 33, 36, 38, 45, 50, 51], "meetup": 7, "munich": 7, "5": [7, 25], "2022": 7, "12": [7, 20], "industri": [7, 19, 24, 25, 28], "confer": 7, "10": [7, 19], "roscon": 7, "06": 7, "fr": 7, "2021": 7, "world": 7, "07": 7, "weekli": 7, "13": 7, "rosdevdai": 7, "05": 7, "diagram": 7, "imag": 7, "chain": [8, 20], "cascad": 8, "scope": 8, "background": 8, "knowledg": 8, "motiv": 8, "purpos": 8, "implement": 8, "A": 8, "base": 8, "chainablecontrol": 8, "inner": 8, "activ": 8, "deactiv": 8, "debug": 8, "output": [8, 33], "close": 8, "remark": 8, "determin": 9, "paramet": [9, 13, 30, 31, 32, 33, 36, 37, 38, 39, 40, 41, 42, 45, 46, 47, 49, 50], "helper": 9, "script": 9, "spawner": 9, "unspawn": 9, "concept": [9, 10], "restart": 9, "all": 9, "api": 10, "guidelin": [11, 34], "best": [11, 34], "practic": [11, 34], "handl": 11, "error": 11, "happen": 11, "dure": 11, "read": 11, "call": 11, "foxi": 11, "newer": 11, "version": 11, "type": [12, 38, 41, 44], "sensor": [12, 24, 25, 37, 40, 46], "gpio": [12, 19], "exampl": [12, 16, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 43], "mock": 13, "gener": 13, "system": 13, "per": 13, "extern": [14, 25, 35], "refer": [14, 31, 33, 35, 44, 47], "command": [15, 31, 41, 44, 47, 48], "line": 15, "list_control": 15, "list_controller_typ": 15, "list_hardware_compon": 15, "list_hardware_interfac": 15, "load_control": 15, "reload_controller_librari": 15, "set_controller_st": 15, "switch_control": 15, "unload_control": 15, "view_controller_chain": 15, "what": 16, "you": 16, "can": 16, "find": 16, "thi": [16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "goal": 16, "overview": [16, 27], "local": 16, "debian": 16, "docker": 16, "view": 16, "quick": 16, "hint": 16, "1": [18, 44], "rrbot": [18, 20, 29], "step": [18, 20, 21, 22, 23, 24, 25, 26, 28, 29], "file": [18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "14": 21, "modular": [21, 26], "actuat": [21, 26], "provid": 21, "state": [21, 31, 44, 47], "diffbot": 22, "3": 23, "multipl": 23, "4": 24, "integr": [24, 51], "connect": 25, "6": 26, "separ": 26, "commun": [26, 51, 53], "each": 26, "7": 27, "full": 27, "6dof": 27, "geometri": 27, "cmake": 27, "librari": 27, "launch": 27, "8": 28, "an": 28, "expos": 28, "transmiss": 28, "9": 29, "ackermann_steering_control": 30, "admitt": 31, "2": [31, 33, 36, 38, 45, 50], "topic": [31, 36, 38, 45, 50], "bicycle_steering_control": 32, "diff_drive_control": 33, "other": [33, 34, 44, 48], "feedback": 33, "subscrib": [33, 44, 47], "publish": [33, 44, 47], "mobil": 34, "manipul": 34, "broadcast": [34, 37, 40, 46], "new": 35, "effort_control": 36, "jointgroupeffortcontrol": 36, "forc": 37, "torqu": 37, "forward_command_control": 38, "gripper": 39, "action": [39, 44], "imu": 40, "joint_state_broadcast": 41, "detail": 42, "about": 42, "trajectori": [43, 44], "represent": 43, "interpol": 43, "method": 43, "none": 43, "spline": 43, "visual": 43, "replac": 43, "joint_trajectory_control": 44, "preemption": 44, "polici": 44, "servic": 44, "further": 44, "inform": 44, "position_control": 45, "jointgrouppositioncontrol": 45, "rang": 46, "steering_controllers_librari": 47, "execut": 47, "logic": 47, "preced": 47, "tricycle_control": 48, "veloc": 48, "tricycle_steering_control": 49, "velocity_control": 50, "jointgroupvelocitycontrol": 50, "host": 51, "welcom": 53, "humbl": 53, "develop": 53, "organis": 53}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx": 60}, "alltitles": {"Acknowledgements": [[0, "acknowledgements"]], "Maintainers": [[0, "maintainers"]], "Reviewers\u2019 Stats": [[0, "reviewers-stats"]], "Contributors": [[0, "contributors"]], "Companies and Institutions": [[0, "companies-and-institutions"]], "Contributing": [[1, "contributing"]], "Pull Requests": [[1, "pull-requests"]], "Rules for the repositories and process of merging pull requests": [[1, "rules-for-the-repositories-and-process-of-merging-pull-requests"]], "Writing documentation": [[1, "writing-documentation"]], "Repository structure and CI configuration": [[1, "repository-structure-and-ci-configuration"]], "CI configuration": [[1, "ci-configuration"]], "Documentation Usage": [[1, "documentation-usage"]], "Differences to ros_control (ROS1)": [[2, "differences-to-ros-control-ros1"]], "Hardware Structures - classes": [[2, "hardware-structures-classes"]], "Hardware Interfaces": [[2, "hardware-interfaces"]], "Controller\u2019s Access to Hardware": [[2, "controller-s-access-to-hardware"]], "Migration Guide to ros2_control": [[2, "migration-guide-to-ros2-control"]], "RobotHardware to Components": [[2, "robothardware-to-components"]], "Controller Migration": [[2, "controller-migration"]], "gazebo_ros2_control": [[3, "gazebo-ros2-control"]], "Usage": [[3, "usage"], [5, "usage"]], "Modifying or building your own": [[3, "modifying-or-building-your-own"], [5, "modifying-or-building-your-own"]], "To run the demo": [[3, "to-run-the-demo"], [5, "to-run-the-demo"]], "Add ros2_control tag to a URDF": [[3, "add-ros2-control-tag-to-a-urdf"], [5, "add-ros2-control-tag-to-a-urdf"]], "Simple setup": [[3, "simple-setup"], [5, "simple-setup"]], "Using mimic joints in simulation": [[3, "using-mimic-joints-in-simulation"], [5, "using-mimic-joints-in-simulation"]], "Add the gazebo_ros2_control plugin": [[3, "add-the-gazebo-ros2-control-plugin"]], "Default gazebo_ros2_control Behavior": [[3, "default-gazebo-ros2-control-behavior"]], "Advanced: custom gazebo_ros2_control Simulation Plugins": [[3, "advanced-custom-gazebo-ros2-control-simulation-plugins"]], "Set up controllers": [[3, "set-up-controllers"], [5, "set-up-controllers"]], "gazebo_ros2_control_demos": [[3, "gazebo-ros2-control-demos"]], "Getting Started": [[4, "getting-started"]], "Installation": [[4, "installation"], [16, "installation"]], "Binary packages": [[4, "binary-packages"]], "Building from Source": [[4, "building-from-source"]], "Architecture": [[4, "architecture"]], "Controller Manager": [[4, "controller-manager"], [9, "controller-manager"]], "Resource Manager": [[4, "resource-manager"]], "Controllers": [[4, "controllers"]], "User Interfaces": [[4, "user-interfaces"]], "Hardware Components": [[4, "hardware-components"], [11, "hardware-components"]], "Hardware Description in URDF": [[4, "hardware-description-in-urdf"]], "Running the Framework for Your Robot": [[4, "running-the-framework-for-your-robot"]], "gz_ros2_control": [[5, "gz-ros2-control"]], "Add the gz_ros2_control plugin": [[5, "add-the-gz-ros2-control-plugin"]], "Default gz_ros2_control Behavior": [[5, "default-gz-ros2-control-behavior"]], "Advanced: custom gz_ros2_control Simulation Plugins": [[5, "advanced-custom-gz-ros2-control-simulation-plugins"]], "gz_ros2_control_demos": [[5, "gz-ros2-control-demos"]], "Project Ideas for GSoC 2024": [[6, "project-ideas-for-gsoc-2024"]], "Tutorials and Demos for ros2_control": [[6, "tutorials-and-demos-for-ros2-control"]], "Mission-Control for ros2_control": [[6, "mission-control-for-ros2-control"]], "Add support for hardware semantic components": [[6, "add-support-for-hardware-semantic-components"]], "Feature-parity for controllers from ROS1": [[6, "feature-parity-for-controllers-from-ros1"]], "Resources": [[7, "resources"]], "Presentations": [[7, "presentations"]], "2023-02 ROS Meetup Munich #5": [[7, "ros-meetup-munich-5"]], "2022-12 ROS-Industrial Conference 2022": [[7, "ros-industrial-conference-2022"]], "2022-10 ROSCon 2022": [[7, "roscon-2022"]], "2022-06 ROSCon Fr 2022": [[7, "roscon-fr-2022"]], "2021-10 ROS World 2021": [[7, "ros-world-2021"]], "2021-10-07 Weekly Robotics Meetup #13": [[7, "weekly-robotics-meetup-13"]], "2021-06 ROSDevDay 2021": [[7, "rosdevday-2021"]], "2021-05 ROSCon Fr 2021": [[7, "roscon-fr-2021"]], "Diagrams": [[7, "diagrams"]], "Images": [[7, "images"]], "Controller Chaining / Cascade Control": [[8, "controller-chaining-cascade-control"]], "Scope of the Document and Background Knowledge": [[8, "scope-of-the-document-and-background-knowledge"]], "Motivation, Purpose and Use": [[8, "motivation-purpose-and-use"]], "Implementation": [[8, "implementation"]], "A Controller Base-Class: ChainableController": [[8, "a-controller-base-class-chainablecontroller"]], "Inner Resource Management": [[8, "inner-resource-management"]], "Activation and Deactivation Chained Controllers": [[8, "activation-and-deactivation-chained-controllers"]], "Debugging outputs": [[8, "debugging-outputs"]], "Closing remarks": [[8, "closing-remarks"]], "Determinism": [[9, "determinism"]], "Parameters": [[9, "parameters"], [13, "parameters"], [30, "parameters"], [31, "parameters"], [32, "parameters"], [33, "parameters"], [36, "parameters"], [37, "parameters"], [38, "parameters"], [39, "parameters"], [40, "parameters"], [41, "parameters"], [45, "parameters"], [46, "parameters"], [47, "parameters"], [49, "parameters"], [50, "parameters"]], "Helper scripts": [[9, "helper-scripts"]], "spawner": [[9, "spawner"]], "unspawner": [[9, "unspawner"]], "Using the Controller Manager in a Process": [[9, "using-the-controller-manager-in-a-process"]], "Concepts": [[9, "concepts"], [10, "concepts"]], "Restarting all controllers": [[9, "restarting-all-controllers"]], "Restarting hardware": [[9, "restarting-hardware"]], "ros2_control": [[10, "ros2-control"]], "API Documentation": [[10, "api-documentation"]], "Features": [[10, "features"]], "Guidelines and Best Practices": [[11, "guidelines-and-best-practices"], [34, "guidelines-and-best-practices"]], "Handling of errors that happen during read() and write() calls": [[11, "handling-of-errors-that-happen-during-read-and-write-calls"]], "Migration from Foxy to newer versions": [[11, "migration-from-foxy-to-newer-versions"]], "ros2_control hardware interface types": [[12, "ros2-control-hardware-interface-types"]], "Joints": [[12, "joints"]], "Sensors": [[12, "sensors"]], "GPIOs": [[12, "gpios"]], "Examples": [[12, "examples"], [16, "examples"]], "Mock Components": [[13, "mock-components"]], "Generic System": [[13, "generic-system"]], "Per-joint Parameters": [[13, "per-joint-parameters"]], "Writing a Hardware Component": [[14, "writing-a-hardware-component"]], "Useful External References": [[14, "useful-external-references"], [35, "useful-external-references"]], "Command Line Interface": [[15, "command-line-interface"]], "list_controllers": [[15, "list-controllers"]], "list_controller_types": [[15, "list-controller-types"]], "list_hardware_components": [[15, "list-hardware-components"]], "list_hardware_interfaces": [[15, "list-hardware-interfaces"]], "load_controller": [[15, "load-controller"]], "reload_controller_libraries": [[15, "reload-controller-libraries"]], "set_controller_state": [[15, "set-controller-state"]], "switch_controllers": [[15, "switch-controllers"]], "unload_controller": [[15, "unload-controller"]], "view_controller_chains": [[15, "view-controller-chains"]], "Demos": [[16, "demos"]], "What you can find in this repository": [[16, "what-you-can-find-in-this-repository"]], "Goals": [[16, "goals"]], "Examples Overview": [[16, "examples-overview"]], "Local installation": [[16, "local-installation"]], "Build from debian packages": [[16, "build-from-debian-packages"]], "Build from source": [[16, "build-from-source"]], "Using Docker": [[16, "using-docker"]], "To view the robot": [[16, "to-view-the-robot"]], "To run the ros2_control demos": [[16, "to-run-the-ros2-control-demos"]], "Quick Hints": [[16, "quick-hints"]], "Example 1: RRBot": [[18, "example-1-rrbot"]], "Tutorial steps": [[18, "tutorial-steps"], [20, "tutorial-steps"], [21, "tutorial-steps"], [22, "tutorial-steps"], [23, "tutorial-steps"], [24, "tutorial-steps"], [25, "tutorial-steps"], [26, "tutorial-steps"], [28, "tutorial-steps"], [29, "tutorial-steps"]], "Files used for this demos": [[18, "files-used-for-this-demos"], [19, "files-used-for-this-demos"], [20, "files-used-for-this-demos"], [21, "files-used-for-this-demos"], [22, "files-used-for-this-demos"], [23, "files-used-for-this-demos"], [25, "files-used-for-this-demos"], [26, "files-used-for-this-demos"], [28, "files-used-for-this-demos"], [29, "files-used-for-this-demos"]], "Controllers from this demo": [[18, "controllers-from-this-demo"], [19, "controllers-from-this-demo"], [20, "controllers-from-this-demo"], [21, "controllers-from-this-demo"], [22, "controllers-from-this-demo"], [23, "controllers-from-this-demo"], [24, "controllers-from-this-demo"], [25, "controllers-from-this-demo"], [26, "controllers-from-this-demo"], [28, "controllers-from-this-demo"], [29, "controllers-from-this-demo"]], "Example 10: Industrial robot with GPIO interfaces": [[19, "example-10-industrial-robot-with-gpio-interfaces"]], "Example 12: Controller chaining with RRBot": [[20, "example-12-controller-chaining-with-rrbot"]], "Example 14: Modular robot with actuators not providing states": [[21, "example-14-modular-robot-with-actuators-not-providing-states"]], "DiffBot": [[22, "diffbot"]], "Example 3: Robots with multiple interfaces": [[23, "example-3-robots-with-multiple-interfaces"]], "Example 4: Industrial robot with integrated sensor": [[24, "example-4-industrial-robot-with-integrated-sensor"]], "Files used for this demo": [[24, "files-used-for-this-demo"]], "Example 5: Industrial robot with externally connected sensor": [[25, "example-5-industrial-robot-with-externally-connected-sensor"]], "Example 6: Modular Robots with separate communication to each actuator": [[26, "example-6-modular-robots-with-separate-communication-to-each-actuator"]], "Example 7: Full tutorial with a 6DOF robot": [[27, "example-7-full-tutorial-with-a-6dof-robot"]], "ros2_control overview": [[27, "ros2-control-overview"]], "Writing a URDF": [[27, "writing-a-urdf"]], "Geometry": [[27, "geometry"]], "URDF file": [[27, "urdf-file"]], "Writing a hardware interface": [[27, "writing-a-hardware-interface"]], "Plugin description file (hardware)": [[27, "plugin-description-file-hardware"]], "CMake library (hardware)": [[27, "cmake-library-hardware"]], "Writing a controller": [[27, "writing-a-controller"]], "Plugin description file (controller)": [[27, "plugin-description-file-controller"]], "CMake library (controller)": [[27, "cmake-library-controller"]], "Launching the example": [[27, "launching-the-example"]], "Example 8: Industrial Robots with an exposed transmission interface": [[28, "example-8-industrial-robots-with-an-exposed-transmission-interface"]], "Example 9: Simulation with RRBot": [[29, "example-9-simulation-with-rrbot"]], "ackermann_steering_controller": [[30, "ackermann-steering-controller"]], "Admittance Controller": [[31, "admittance-controller"]], "ROS 2 interface of the controller": [[31, "ros-2-interface-of-the-controller"], [36, "ros-2-interface-of-the-controller"], [38, "ros-2-interface-of-the-controller"], [45, "ros-2-interface-of-the-controller"], [50, "ros-2-interface-of-the-controller"]], "Topics": [[31, "topics"], [36, "topics"], [38, "topics"], [45, "topics"], [50, "topics"]], "ros2_control interfaces": [[31, "ros2-control-interfaces"]], "References": [[31, "references"], [33, "references"], [44, "references"]], "States": [[31, "states"], [44, "states"], [47, "states"]], "Commands": [[31, "commands"], [41, "commands"], [44, "commands"], [47, "commands"]], "bicycle_steering_controller": [[32, "bicycle-steering-controller"]], "diff_drive_controller": [[33, "diff-drive-controller"]], "Other features": [[33, "other-features"], [44, "other-features"], [48, "other-features"]], "Description of controller\u2019s interfaces": [[33, "description-of-controller-s-interfaces"], [44, "description-of-controller-s-interfaces"], [47, "description-of-controller-s-interfaces"]], "Feedback": [[33, "feedback"]], "Output": [[33, "output"]], "ROS 2 Interfaces": [[33, "ros-2-interfaces"]], "Subscribers": [[33, "subscribers"], [47, "subscribers"]], "Publishers": [[33, "publishers"], [44, "publishers"], [47, "publishers"]], "ros2_controllers": [[34, "ros2-controllers"]], "Controllers for Mobile Robots": [[34, "controllers-for-mobile-robots"]], "Controllers for Manipulators and Other Robots": [[34, "controllers-for-manipulators-and-other-robots"]], "Broadcasters": [[34, "broadcasters"]], "Writing a new controller": [[35, "writing-a-new-controller"]], "effort_controllers": [[36, "effort-controllers"]], "effort_controllers/JointGroupEffortController": [[36, "effort-controllers-jointgroupeffortcontroller"]], "Force Torque Sensor Broadcaster": [[37, "force-torque-sensor-broadcaster"]], "forward_command_controller": [[38, "forward-command-controller"]], "Hardware interface type": [[38, "hardware-interface-type"], [41, "hardware-interface-type"]], "Gripper Action Controller": [[39, "gripper-action-controller"]], "IMU Sensor Broadcaster": [[40, "imu-sensor-broadcaster"]], "joint_state_broadcaster": [[41, "joint-state-broadcaster"]], "Details about parameters": [[42, "details-about-parameters"]], "Trajectory Representation": [[43, "trajectory-representation"]], "Interpolation Method none": [[43, "interpolation-method-none"]], "Interpolation Method spline": [[43, "interpolation-method-spline"]], "Visualized Examples": [[43, "visualized-examples"]], "Trajectory Replacement": [[43, "trajectory-replacement"]], "joint_trajectory_controller": [[44, "joint-trajectory-controller"]], "Hardware interface types": [[44, "hardware-interface-types"]], "Using Joint Trajectory Controller(s)": [[44, "using-joint-trajectory-controller-s"]], "Preemption policy 1": [[44, "preemption-policy"]], "Actions 1": [[44, "actions"]], "Subscriber 1": [[44, "subscriber"]], "Services": [[44, "services"]], "Further information": [[44, "further-information"]], "position_controllers": [[45, "position-controllers"]], "position_controllers/JointGroupPositionController": [[45, "position-controllers-jointgrouppositioncontroller"]], "Range Sensor Broadcaster": [[46, "range-sensor-broadcaster"]], "steering_controllers_library": [[47, "steering-controllers-library"]], "Execution logic of the controller": [[47, "execution-logic-of-the-controller"]], "References (from a preceding controller)": [[47, "references-from-a-preceding-controller"]], "tricycle_controller": [[48, "tricycle-controller"]], "Velocity commands": [[48, "velocity-commands"]], "tricycle_steering_controller": [[49, "tricycle-steering-controller"]], "velocity_controllers": [[50, "velocity-controllers"]], "velocity_controllers/JointGroupVelocityController": [[50, "velocity-controllers-jointgroupvelocitycontroller"]], "Simulator Integrations": [[51, "simulator-integrations"]], "Hosted by ros-controls": [[51, "hosted-by-ros-controls"]], "Community": [[51, "community"]], "Supported Robots": [[52, "supported-robots"]], "Welcome to the ros2_control documentation - Humble!": [[53, "welcome-to-the-ros2-control-documentation-humble"]], "ros2_control Repositories": [[53, "ros2-control-repositories"]], "Development Organisation and Communication": [[53, "development-organisation-and-communication"]]}, "indexentries": {}}) \ No newline at end of file diff --git a/iron/.buildinfo b/iron/.buildinfo index fba8c8b2a3e..06f962e0303 100644 --- a/iron/.buildinfo +++ b/iron/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: c2adb03f701fe41c95e1407598781f73 +config: d1600819534f0edbd43394a820487c6e tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/iron/.doctrees/doc/acknowledgements/acknowledgements.doctree b/iron/.doctrees/doc/acknowledgements/acknowledgements.doctree index 5612e85fbcded479868c1090ef7902a5a14fd338..a9b9a0bc123117a35387f561f13608946879414e 100644 GIT binary patch delta 1669 zcmds%&udgy6vw^q&U+&!lgXgbnh7MaHj6rp_vd@}j@krKs9GI{3b6?diIc>Mg|@LM z>Nt~#77?X3UhSa;Awi`-pq1n;?y7C1APQNegf0S7X>rp{t&425l)edcA@~oZ+{Ia3 zIDF6dbI$kgsn*%4*4VgveQ-LKMJzb+{&6)ra%^i+(Zd5`h=`(328CpNm==kUzG8yP zVNyIiI50FEy{*vreZ0wh(AyYZM9moQS+~kg&p9(F{I2<@7|c}TX@?S+D0^qjr^Rkl zS6{88l2RrGp_)PClGC@ElY@-pm^AH6M@`qz!?3Giy@Pxx{Nkm}{mo;sKuHRe#1EQ$ zYOFzNUrHK8N_e0-{Pu<06JGAPkIiUn3*vD0ReUDSvqZ`06MgCBVRF&&%=7h?dPRM$ zx$p&%3{p$ZfXQY`YiJwcIp*i6Fq4_D)|BG!UMrD9D|?b~GV|f;$dI%n2(;gF%Qg35 z_A#y`1Y?vd#r+^)+WZ_IFykG`moZr9V8OL{`g@BxlB*^ZCrZd5pi~G31Lsk}?Algo zBv~D3p_TF}5rN{hj^TL60!G3V&PDW@8GXH+;v_3|K&a46@_XOnl>{q3slY1UELKQ%FGjUfgGUU3B@Q=-lpNoVJ~R;2u=(Yvpr7d96a> zHtM_Z;54!iPCKs^USyJmuSdM3x%f&6Zp=BU6|3GZZg+Pg{Co?l#n)YAA9cDDo8g_j zyKGn)_8)Z@8YH6u*OU{%qg6Lk3kRTogPXJsZFnEDSB|(hGeGyCG`unI%|kVhs!19} zjnCmk+P`Gt;4qS VP&~imCH`Mop}NQH?$6>j_b*CU4+8)I delta 1776 zcmd^<-)~e!6vs1jce;gicMEFO-kL53qS4JdKkvP>5V~ko1X`&W5Ec>^%DOcvDJe~C zN=uC~YC@D|#1mei4LsnB{J4n|Oso)#4~CHXz!Rt?@r9-_;){leIJ-?qNcacDmzm^b zX3qJ3Kj+Ma$@ae|+Y@8tNabuIk67PeAMF_&7<@qlWhNsX?g}C)%CxLlr~~cxGVhU8 z^k^w7mC7yw6JI4;Okb%v{us4-Xk9#>zl7qc)^iECafh^F%3-_<4V&V(ZOI%vV!8#x(l3y2zF$6;ibNDr9fYA|TEMdX zXp@;(F_P9w3MNBNBgR=&i+91s%_I{)ziQeuPk#3l5(~)>wM(RF7!8y(Ylb$N z`Ib?5dOzx{-Fd|1a@EB&OGSaJf(*>D+^NQDa>r*?`qsmuDL$6#Z-jHFv5zGMHbo9V z|2wF=h6N^m^+r-6R9a|%?I##6k{pOjgNe@yD*m4OmW6^NNFe| z2IZ3u(Mv0bGb~RPtgu}fJRrC83jq%+VM;rbRV&lq|#RNSQ@7q4o z4V~vbKVI}@3Dt}j(wP>jDBv_Ow|Yx9TOpk&_Rrp3Qg3zc zgs#oxw)oHK_f{hb<$thmFAR7kl;-X)P=V_bH;>xQ^=-V}t|#cwKs_(?e}b;Vl_7L6 z6Kco%UU~s+KC$h?**VY7&Ly7hz8_m2imS-GaOg5_{x7SrPQ`iTHRg~#ei>gx_L~ke zzP#qMZ_o6SE|hW&E#2RdDds|`V1481N)9aD#dz+ld!LmH^KR-!kVDIZ_w2AT1 z9ao{0L1gw#ZGg^6*ZL87UlxuuyUkWMs8F)=Vs Su{1GBOG`^K-W<&++6DlpSrdx@ diff --git a/iron/.doctrees/doc/gazebo_ros2_control/doc/index.doctree b/iron/.doctrees/doc/gazebo_ros2_control/doc/index.doctree index 0f502d1165b6480f46ad44f8c094eadd90f7ca40..745c5c1f16f9186a92dc7b4a1d42c2a585f27217 100644 GIT binary patch delta 69 zcmX@Gis`^ArVSR1M&@OCr51&mMf%AWhDnJgsRky=W(FxHrbfnThRFsdre+pKCWfYI X2FXb&iK%Hos6TlhhwSEd#+{P^9Xl4% delta 69 zcmX@Gis`^ArVSR1M!BWA1}UY*rTWHZiH0T?mgY%j7AD4t28pJI=9XrbKswPV#l*lk Y#nQwiEiEm{Sby?94%yA^j5{X-011T^^Z)<= diff --git a/iron/.doctrees/doc/getting_started/getting_started.doctree b/iron/.doctrees/doc/getting_started/getting_started.doctree index 97aff6538fce09ab7d96fc9532ea84d20e8af167..1944f6fc5829bfc73ec8c1878ebe773873632024 100644 GIT binary patch delta 64 zcmX@w!hE!ad4mC?p?O(esYPLCk$$p;VN#+=s)0$enL&z)sgZG-VX}dVshNe5iJ@tl SL2^<`Vrm)?Zcb!;asU9Js}&Xi delta 64 zcmX@w!hE!ad4mC?VQy)zK}ug^6*ZL87UlxuuyUkWMs8F)=Vs Su{1GBOG`^K-kiwz*kLm0@rVR#+hUR5?r51&mMf%AWhDnJgsRky=W(FxHrbfnThRFsdre+pKCWfYI S2FXb&iK%HoxH*yWO)mhjbrmfD delta 64 zcmX>*kLm0@rVR#+hPkD=1}UY*rTWHZiH0T?mgY%j7AD4t28pJI=9XrbKswPV#l*lk S#nQwiEiEm{cyl7-n_d8+6%bSTO*;q!lLs delta 64 zcmZ4digEEP#tk}*hPkD=1}UY*rTWHZiH0T?mgY%j7AD4t28pJI=9XrbKswPV#l*lk S#nQwiEiEm{cylb{v0?zPL=;H? diff --git a/iron/.doctrees/doc/resources/resources.doctree b/iron/.doctrees/doc/resources/resources.doctree index 194bc2e4e01525fa1b91f0e0030b7047f415aa8e..ab0a0e3fc8ff3438477a9bcbb6755228e6893074 100644 GIT binary patch delta 68 zcmZ41%et(Wb%P3{p?O(esYPLCk$$p;VN#+=s)0$enL&z)sgZG-VX}dVshNe5iJ@tl WL2^<`Vrm)?Hit594`pNwbOiw8VicwT delta 68 zcmZ41%et(Wb%P3{VQy)zK}ug^6*ZL87UlxuuyUkWMs8F)=Vs Wu{1GBOG`^KZVqMK9?HlV=n4SPiWA5H diff --git a/iron/.doctrees/doc/ros2_control/controller_manager/doc/controller_chaining.doctree b/iron/.doctrees/doc/ros2_control/controller_manager/doc/controller_chaining.doctree index 83a95fc1c498eb717997d114014b070be3302609..0473524fe79389c1d600f35e8534509c9a12ca66 100644 GIT binary patch delta 64 zcmaEJjPcDe#tjyXhUR5?r51&mMf%AWhDnJgsRky=W(FxHrbfnThRFsdre+pKCWfYI S2FXb&iK%HoxH*%NISByLLKL+C delta 64 zcmaEJjPcDe#tjyXhPkD=1}UY*rTWHZiH0T?mgY%j7AD4t28pJI=9XrbKswPV#l*lk S#nQwiEiEm{cylHra}of;;uF^Z diff --git a/iron/.doctrees/doc/ros2_control/controller_manager/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_control/controller_manager/doc/userdoc.doctree index 20703432615f3db5b946a006072edc741d72bdd8..e0bf25c688e597234dbe10c9f9d71bc699a694cd 100644 GIT binary patch delta 69 zcmbRAlyTBi#tm+aM&@OCr51&mMf%AWhDnJgsRky=W(FxHrbfnThRFsdre+pKCWfYI X2FXb&iK%Hos6Uw}Ok?u`#!m$RBnTGH delta 69 zcmbRAlyTBi#tm+aM!BWA1}UY*rTWHZiH0T?mgY%j7AD4t28pJI=9XrbKswPV#l*lk X#nQwiEiEm{Sbs84n8xM>jGqbs5KqB(v00*_iG`(kl9`2xaiT$@siC>0nI(`;G)gfsFix>F QF-c2HOETV^&sZuB0Clhu&Hw-a diff --git a/iron/.doctrees/doc/ros2_control/hardware_interface/doc/hardware_components_userdoc.doctree b/iron/.doctrees/doc/ros2_control/hardware_interface/doc/hardware_components_userdoc.doctree index 4fc17b09612826728fecdee0c428058382d4c3e2..3a0e0f0c70ec00ed558e7dbce5f4e7727fe34541 100644 GIT binary patch delta 69 zcmdn9f^p9Z#tj~fM&@OCr51&mMf%AWhDnJgsRky=W(FxHrbfnThRFsdre+pKCWfYI X2FXb&iK%Hos6W}C)p_$?#`+)t8tfKB delta 69 zcmdn9f^p9Z#tj~fM!BWA1}UY*rTWHZiH0T?mgY%j7AD4t28pJI=9XrbKswPV#l*lk X#nQwiEiEm{SbwrVtMlf)jP*eP2R0RD diff --git a/iron/.doctrees/doc/ros2_control/hardware_interface/doc/hardware_interface_types_userdoc.doctree b/iron/.doctrees/doc/ros2_control/hardware_interface/doc/hardware_interface_types_userdoc.doctree index 6d9f2773d4e6e6d24df472bbf280744b168684d2..0a30b4192947188eb5c287a1390ff7fe102d7c0e 100644 GIT binary patch delta 69 zcmdmgg>nBC#tlJ?M&@OCr51&mMf%AWhDnJgsRky=W(FxHrbfnThRFsdre+pKCWfYI X2FXb&iK%Hos6Y86m&fKajKvuMIusX3 delta 69 zcmdmgg>nBC#tlJ?M!BWA1}UY*rTWHZiH0T?mgY%j7AD4t28pJI=9XrbKswPV#l*lk X#nQwiEiEm{Sby?KE|1M;7>hFiCSDe5 diff --git a/iron/.doctrees/doc/ros2_control/hardware_interface/doc/mock_components_userdoc.doctree b/iron/.doctrees/doc/ros2_control/hardware_interface/doc/mock_components_userdoc.doctree index 16802575a1b9aabf15c686403718444d3c228bdb..d04d3a1649d48d8b50cb69fd3640fc84fe9b52ee 100644 GIT binary patch delta 62 zcmexg^1oz*1EZmNSzf6{VP=tjvV~z%qDiWONwS$iiixR_ahhSWfr+V^g^`J&X_`TD QQc7ZK8W3(SWaP610I?(#CjbBd delta 62 zcmexg^1oz*1EXPXX|6#^X>qB(v00*_iG`(kl9`2xaiT$@siC>0nI(`;G)gfsFix>F QF-c2HOETVE$jE020HMSaNdN!< diff --git a/iron/.doctrees/doc/ros2_control/hardware_interface/doc/writing_new_hardware_component.doctree b/iron/.doctrees/doc/ros2_control/hardware_interface/doc/writing_new_hardware_component.doctree index 7a7daeff824cd52144694bacd263f0dc5c4d42df..590f9e61a466b2c76d196ff29caab8fe7269f1bb 100644 GIT binary patch delta 64 zcmaFb!1A<#WrH81p?O(esYPLCk$$p;VN#+=s)0$enL&z)sgZG-VX}dVshNe5iJ@tl SL2^<`Vrm)?Zmws1_74EIKo!gY delta 64 zcmaFb!1A<#WrH81VQy)zK}ug^6*ZL87UlxuuyUkWMs8F)=Vs Su{1GBOG`^K-dxZ4>>mK8;1uov diff --git a/iron/.doctrees/doc/ros2_control/ros2controlcli/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_control/ros2controlcli/doc/userdoc.doctree index 50ed6834646aeb2de67575713bc650a2eb617dc8..6d78894a27ab9ba3014fbe53acb67e444895e29a 100644 GIT binary patch delta 64 zcmex!hw;xH#tn9ihUR5?r51&mMf%AWhDnJgsRky=W(FxHrbfnThRFsdre+pKCWfYI S2FXb&iK%HoxH+GZHx~frF%=>J delta 64 zcmex!hw;xH#tn9ihPkD=1}UY*rTWHZiH0T?mgY%j7AD4t28pJI=9XrbKswPV#l*lk S#nQwiEiEm{cym4@Z!Q4V(G)}g diff --git a/iron/.doctrees/doc/ros2_control_demos/doc/index.doctree b/iron/.doctrees/doc/ros2_control_demos/doc/index.doctree index eb9ae2c6a7027a5d5f4164d46cab76dc523eb587..990fc0433a9d2db809212910d45d2d3be78f2973 100644 GIT binary patch delta 68 zcmez0!u-F5d4n0Fk$G8OsYPLCk$$p;VN#+=s)0$enL&z)sgZG-VX}dVshNe5iJ@tl WL2^<`Vrm)?>QBD7NqliV<3Ruy%oi8{ delta 68 zcmez0!u-F5d4n0FQEq9jK}ug^6*ZL87UlxuuyUkWMs8F)=Vs Wu{1GBOG`^K)}MTFllbC##)AL^^cFe* diff --git a/iron/.doctrees/doc/ros2_control_demos/doc/run_from_docker.doctree b/iron/.doctrees/doc/ros2_control_demos/doc/run_from_docker.doctree index 051f5e668d15b82d2b6d5e8d7d930ce7e0e8f7aa..43e2df6a3510f4491431d0768484e8edcb3bcda7 100644 GIT binary patch delta 62 zcmeB_>Xh2h&thm^mRD*~m|3KsY+;y`Xp(ARl5A#>Vq$7!oMxD8U}9=!VPs-xnr4uk Ql#-a5285druy}F+0Ahg?H2?qr delta 62 zcmeB_>Xh2h&tjNcnro0!T3o7cY?f$fVqs~XWM*MvoM@0}YG`h0W(lMdjZ#buj8iO4 QOw!WQl8iSWVDaPt08=3nR{#J2 diff --git a/iron/.doctrees/doc/ros2_control_demos/example_1/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_control_demos/example_1/doc/userdoc.doctree index 63b0ac4b12adaa7f151fc3fcca5e5965d72165b6..cfbee4a9465554aba2d713145afbd6d882e23464 100644 GIT binary patch delta 76 zcmezSpXKj=mJLyiM&@OCr51&mMf%AWhDnJgsRky=W(FxHrbfnThRFsdre+pKCWfYI e2FXb&iK%Hos6UBce6p;7X!8!n?K>D5UF`rAz!=;B delta 76 zcmezSpXKj=mJLyiM!BWA1}UY*rTWHZiH0T?mgY%j7AD4t28pJI=9XrbKswPV#l*lk f#nQwiEiEm{Sbq|~_+(iD(dHeD+jlTBy4nE%`so+` diff --git a/iron/.doctrees/doc/ros2_control_demos/example_10/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_control_demos/example_10/doc/userdoc.doctree index 585baac32af83667c069a27194777e4075f76115..4f2fd3d917725a03fe9b175f647b5ad322e61c09 100644 GIT binary patch delta 64 zcmaF7m+|pl#tkuyhUR5?r51&mMf%AWhDnJgsRky=W(FxHrbfnThRFsdre+pKCWfYI S2FXb&iK%HoxVe`xEEWLLzZE9{ delta 64 zcmaF7m+|pl#tkuyhPkD=1}UY*rTWHZiH0T?mgY%j7AD4t28pJI=9XrbKswPV#l*lk S#nQwiEiEm{cyljfSS$d;Uld6I diff --git a/iron/.doctrees/doc/ros2_control_demos/example_12/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_control_demos/example_12/doc/userdoc.doctree index 1207ea0de1cc734b7fb86be021db9fd3044ef17f..55c7464430e5c53b9d8e931b3778c09f6378600c 100644 GIT binary patch delta 73 zcmX^7m+A0drVTNSM&@OCr51&mMf%AWhDnJgsRky=W(FxHrbfnThRFsdre+pKCWfYI c2FXb&iK%Hos6TlEm-yt)ebSo`Ff#820JE+c5&!@I delta 73 zcmX^7m+A0drVTNSM!BWA1}UY*rTWHZiH0T?mgY%j7AD4t28pJI=9XrbKswPV#l*lk c#nQwiEiEm{Sby>aF7e5o`=mD?U}WA40GxmrGynhq diff --git a/iron/.doctrees/doc/ros2_control_demos/example_14/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_control_demos/example_14/doc/userdoc.doctree index 384bc052562d2b202206ffdc544b8cc73dfdf1c4..1ba4618dd4f8c18ee7a0ec650d435a6d3fef0f95 100644 GIT binary patch delta 73 zcmdn7oN32$rVTNSM&@OCr51&mMf%AWhDnJgsRky=W(FxHrbfnThRFsdre+pKCWfYI c2FXb&iK%Hos6SbdUwm@iWa-TZ7=KIz0C=YuX#fBK delta 73 zcmdn7oN32$rVTNSM!BWA1}UY*rTWHZiH0T?mgY%j7AD4t28pJI=9XrbKswPV#l*lk c#nQwiEiEm{Sbwr0zxd?3$0J0Sr)&Kwi delta 73 zcmaFxhUvi@rVUYyM!BWA1}UY*rTWHZiH0T?mgY%j7AD4t28pJI=9XrbKswPV#l*lk c#nQwiEiEm{Sbwr0pZH|;ZBm=}GA`Z%0Gj6)_y7O^ diff --git a/iron/.doctrees/doc/ros2_control_demos/example_4/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_control_demos/example_4/doc/userdoc.doctree index b59ef9fb0a9ddf98a932d1c4493afb42dac9ee56..25995ee9b15ce363bdfeedd768332fb42c67748d 100644 GIT binary patch delta 73 zcmX@KjOoxarVUYyM&@OCr51&mMf%AWhDnJgsRky=W(FxHrbfnThRFsdre+pKCWfYI b2FXb&iK%Hos6SbOUwm>epXlZtj9n7}d6gHI delta 73 zcmX@KjOoxarVUYyM!BWA1}UY*rTWHZiH0T?mgY%j7AD4t28pJI=9XrbKswPV#l*lk c#nQwiEiEm{Sbwqtzxd={KGDrP7`r9{0AgnrxBvhE diff --git a/iron/.doctrees/doc/ros2_control_demos/example_5/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_control_demos/example_5/doc/userdoc.doctree index 73281e23080745a292c98c9159ac9a8c3e62b851..66cace9cef782d7a31e355d7cf1d659cd916f465 100644 GIT binary patch delta 69 zcmX@NpXuCwrVUYyM&@OCr51&mMf%AWhDnJgsRky=W(FxHrbfnThRFsdre+pKCWfYI X2FXb&iK%Hos6TmPjOyl%jI#3pI8he@ delta 69 zcmX@NpXuCwrVUYyM!BWA1}UY*rTWHZiH0T?mgY%j7AD4t28pJI=9XrbKswPV#l*lk Y#nQwiEiEm{Sby@w7}d=i8D-}I03@3hBme*a diff --git a/iron/.doctrees/doc/ros2_control_demos/example_6/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_control_demos/example_6/doc/userdoc.doctree index e203f8e096ed5395bba11dfbbaa9198c5536b6e1..430984e396d18639ba844cdb19601ad70d3ac2b4 100644 GIT binary patch delta 73 zcmccF#B{TXX+spFk$G8OsYPLCk$$p;VN#+=s)0$enL&z)sgZG-VX}dVshNe5iJ@tl bL2^<`Vrm)?>Q4^j5udEkD7ASng^6*ZL87UlxuuyUkWMs8F)=Vs bu{1GBOG`^K)}I{6BR*N7QEKyE#yRx>U6>Z! diff --git a/iron/.doctrees/doc/ros2_control_demos/example_7/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_control_demos/example_7/doc/userdoc.doctree index 9cc888c8f995c59ec40229dd74cb06f8a529e149..9b17c37ee825de9c45f513c8c0a1c63315e9e913 100644 GIT binary patch delta 73 zcmX?bknO-hwhd8?M&@OCr51&mMf%AWhDnJgsRky=W(FxHrbfnThRFsdre+pKCWfYI c2FXb&iK%Hos6Y9hlWOxu#_by!8Tsb}0F_!8QUCw| delta 73 zcmX?bknO-hwhd8?M!BWA1}UY*rTWHZiH0T?mgY%j7AD4t28pJI=9XrbKswPV#l*lk c#nQwiEiEm{Sby?8C)MVSjN3OdGV;#{0DdeNbN~PV diff --git a/iron/.doctrees/doc/ros2_control_demos/example_8/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_control_demos/example_8/doc/userdoc.doctree index 0bf7c152e6ea1d7a940408d458846dfb7bbd9fc1..998b711d5a9118271b5bf732d6277f7022b7f4fd 100644 GIT binary patch delta 73 zcmZqp%GmIgaYGcNk$G8OsYPLCk$$p;VN#+=s)0$enL&z)sgZG-VX}dVshNe5iJ@tl bL2^<`Vrm)?>Q6q%BR<)^N^0|7#={i=h-ny{ delta 73 zcmZqp%GmIgaYGcNQEq9jK}ug^6*ZL87UlxuuyUkWMs8F)=Vs bu{1GBOG`^K)}MTkM|`q-mDJ|FjE5@#aXS~j diff --git a/iron/.doctrees/doc/ros2_control_demos/example_9/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_control_demos/example_9/doc/userdoc.doctree index 4bcba8ac0f41afb644629ed0e9eb0d667850e079..6a41816f96c30ba2f86e2b0186425283fb1a12b0 100644 GIT binary patch delta 76 zcmbO^k7?#SrVUYyrsidNr51&mMf%AWhDnJgsRky=W(FxHrbfnThRFsdre+pKCWfYI e2FXb&iK%HosGpLbJee_EWb!$F?#=5MvwH!n+!&q! delta 76 zcmbO^k7?#SrVUYyrn#lL1}UY*rTWHZiH0T?mgY%j7AD4t28pJI=9XrbKswPV#l*lk f#nQwiEiEm{SU)8{c`{?T$mDbU+?&@iX7>UBk`x!f diff --git a/iron/.doctrees/doc/ros2_controllers/ackermann_steering_controller/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_controllers/ackermann_steering_controller/doc/userdoc.doctree index 84a39efb18d5f6206eef108bb920972bed9cf666..2ad9479c0aa9e75299c20cf0e53a71d353c455a7 100644 GIT binary patch delta 71 zcmZpVYLD6w!)Rn)mRD*~m|3KsY+;y`Xp(ARl5A#>Vq$7!oMxD8U}9=!VPs-xnr4uk Zl#-a5288;PFY=2{juw{Ne2~#i8vrrH7H|Ln delta 71 zcmZpVYLD6w!)TOSnro0!T3o7cY?f$fVqs~XWM*MvoM@0}YG`h0W(lMdjZ#buj8iO4 ZOw!WQl8p5yU*s2^94#!j`5>d4HUJuy6_Nk| diff --git a/iron/.doctrees/doc/ros2_controllers/admittance_controller/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_controllers/admittance_controller/doc/userdoc.doctree index d1f77c06c1fcd554d99583ebc9370d7f58a0e0f9..2fbf634564032ffcfc01fdbf6850a4fa17b6fac4 100644 GIT binary patch delta 64 zcmbO`gK_Q*#tlAqB(v00*_iG`(kl9`2xaiT$@siC>0nI(`;G)gfsFix>F ZF-c2HOET7g^6*ZL87UlxuuyUkWMs8F)=Vs Su{1GBOG`^K-dxL=>jnU<_Y>Oy diff --git a/iron/.doctrees/doc/ros2_controllers/doc/controllers_index.doctree b/iron/.doctrees/doc/ros2_controllers/doc/controllers_index.doctree index 332d3a761a28e9c7e2c145c1aee5053946b6c44a..ed8caf886d453c7ef47681099621619023180eda 100644 GIT binary patch delta 67 zcmexZ^RZ@w2BVRASzf6{VP=tjvV~z%qDiWONwS$iiixR_ahhSWfr+V^g^`J&X_`TD VQc7ZK8W8GFF60s2oX^N)3jh&a6;1#E delta 67 zcmexZ^RZ@w2BT4KX|6#^X>qB(v00*_iG`(kl9`2xaiT$@siC>0nI(`;G)gfsFix>F VF-c2HOET769lSzf6{VP=tjvV~z%qDiWONwS$iiixR_ahhSWfr+V^g^`J&X_`TD QQc7ZK8W3(SXIw4^0BsKwhX4Qo delta 62 zcmbQ|FwbFw8>3-vX|6#^X>qB(v00*_iG`(kl9`2xaiT$@siC>0nI(`;G)gfsFix>F QF-c2HOETVE&bV9-09~&VsQ>@~ diff --git a/iron/.doctrees/doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc.doctree index 073ad20523eb5ddce550391f9b685e27373ea98c..429366655f4141729d9c5dd82d41ee977e69cfd6 100644 GIT binary patch delta 62 zcmccUe9?JB0;8dMSzf6{VP=tjvV~z%qDiWONwS$iiixR_ahhSWfr+V^g^`J&X_`TD QQc7ZK8W3)t$mpN|0E{aW!TqB(v00*_iG`(kl9`2xaiT$@siC>0nI(`;G)gfsFix>F QF-c2HOETU(khrTyn}I~0Ra1q6^8%- delta 67 zcmX?^ax!H@7^6{cX|6#^X>qB(v00*_iG`(kl9`2xaiT$@siC>0nI(`;G)gfsFix>F VF-c2HOET7<%&2Ivc?aV}0|4jN6sZ6J diff --git a/iron/.doctrees/doc/ros2_controllers/gripper_controllers/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_controllers/gripper_controllers/doc/userdoc.doctree index e08f25dc105df1be52c85debade902b4eea5e8a7..e87dc0db72eec1efd92fb000c6a30e571a77fea5 100644 GIT binary patch delta 62 zcmZn;Y!2Mu!Dwh+mRD*~m|3KsY+;y`Xp(ARl5A#>Vq$7!oMxD8U}9=!VPs-xnr4uk Pl#-a5285d{8M)K}XL1tb delta 62 zcmZn;Y!2Mu!DyIUnro0!T3o7cY?f$fVqs~XWM*MvoM@0}YG`h0W(lMdjZ#buj8iO4 QOw!WQl8iT3GIFT{09XVq$7!oMxD8U}9=!VPs-xnr4uk Pl#-a5285gI8JP?LaYhpr delta 62 zcmZonZA{(Z$7q;anro0!T3o7cY?f$fVqs~XWM*MvoM@0}YG`h0W(lMdjZ#buj8iO4 QOw!WQl8iUkGcp+h0Ac15Hvj+t diff --git a/iron/.doctrees/doc/ros2_controllers/joint_state_broadcaster/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_controllers/joint_state_broadcaster/doc/userdoc.doctree index e59d8099f39126ec995c62e67dccd47a6f9f62df..7fddda9c824588caee1abeeef34d902f5b76491f 100644 GIT binary patch delta 64 zcmdnm%eb|daYF#3p?O(esYPLCk$$p;VN#+=s)0$enL&z)sgZG-VX}dVshNe5iJ@tl SL2^<`Vrm)?Zf;~WaRmUP0TdYk delta 64 zcmdnm%eb|daYF#3VQy)zK}ug^6*ZL87UlxuuyUkWMs8F)=Vs Su{1GBOG`^K-rUG&;tBwgp%Xg* diff --git a/iron/.doctrees/doc/ros2_controllers/joint_trajectory_controller/doc/parameters.doctree b/iron/.doctrees/doc/ros2_controllers/joint_trajectory_controller/doc/parameters.doctree index 53b2f20a26e92c1715739a375053a4ea248e9c4e..4eb37e8f7d69369862ef499bfddbfeff102ebef9 100644 GIT binary patch delta 69 zcmX^6lkx0N#tmwWM&@OCr51&mMf%AWhDnJgsRky=W(FxHrbfnThRFsdre+pKCWfYI X2FXb&iK%Hos6Y8akp1TAjAqpUO2!vy delta 69 zcmX^6lkx0N#tmwWM!BWA1}UY*rTWHZiH0T?mgY%j7AD4t28pJI=9XrbKswPV#l*lk X#nQwiEiEm{Sby?`Ap6bJ8O^EzHxL$! diff --git a/iron/.doctrees/doc/ros2_controllers/joint_trajectory_controller/doc/trajectory.doctree b/iron/.doctrees/doc/ros2_controllers/joint_trajectory_controller/doc/trajectory.doctree index baa92baf601b472e8617151858972e3a16c3758c..0b7dbad4396fa8307e2139a4875ef5a80545e1a3 100644 GIT binary patch delta 69 zcmX@Img&e^rVTZWM&@OCr51&mMf%AWhDnJgsRky=W(FxHrbfnThRFsdre+pKCWfYI X2FXb&iK%Hos6RQr)qe9^#_Ll6G;$Z| delta 69 zcmX@Img&e^rVTZWM!BWA1}UY*rTWHZiH0T?mgY%j7AD4t28pJI=9XrbKswPV#l*lk Y#nQwiEiEm{SbuVStNrG;jMt|C03f^<3jhEB diff --git a/iron/.doctrees/doc/ros2_controllers/joint_trajectory_controller/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_controllers/joint_trajectory_controller/doc/userdoc.doctree index 840ef38e6dc9c81b9c9fe92cedf6330d7fd5833a..be58d4abe04216d8c35a67ed3d66c009d1adcb59 100644 GIT binary patch delta 69 zcmaELnd#MKrVSB{M&@OCr51&mMf%AWhDnJgsRky=W(FxHrbfnThRFsdre+pKCWfYI X2FXb&iK%Hos6W|}$7b^}MwJx+O+yy_ delta 69 zcmaELnd#MKrVSB{M!BWA1}UY*rTWHZiH0T?mgY%j7AD4t28pJI=9XrbKswPV#l*lk X#nQwiEiEm{Sbwr3kIm*|j4CStIgJ({ diff --git a/iron/.doctrees/doc/ros2_controllers/position_controllers/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_controllers/position_controllers/doc/userdoc.doctree index 1dbc4e38b66023b05e4f50dc43ae33733b629910..a97046940e2f2a219097155cf5e84b1803ae5409 100644 GIT binary patch delta 62 zcmaFj@Wf$*7o(whSzf6{VP=tjvV~z%qDiWONwS$iiixR_ahhSWfr+V^g^`J&X_`TD QQc7ZK8W3)-W_&3J0FUDoT>t<8 delta 62 zcmaFj@Wf$*7o%ZrX|6#^X>qB(v00*_iG`(kl9`2xaiT$@siC>0nI(`;G)gfsFix>F QF-c2HOETVE&G=Fd0DyxNe*gdg diff --git a/iron/.doctrees/doc/ros2_controllers/range_sensor_broadcaster/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_controllers/range_sensor_broadcaster/doc/userdoc.doctree index bd35e110d5e3f3ce320b95fbffe099f613cf6b76..805bcc4031e409b19d06830b211c601389039b68 100644 GIT binary patch delta 62 zcmaFn{>*(t5Tl`aSzf6{VP=tjvV~z%qDiWONwS$iiixR_ahhSWfr+V^g^`J&X_`TD QQc7ZK8W3)7W=vKB0F?g|{Qv*} delta 62 zcmaFn{>*(t5TjvkX|6#^X>qB(v00*_iG`(kl9`2xaiT$@siC>0nI(`;G)gfsFix>F QF-c2HOETWv%$TeM0EM3u9{>OV diff --git a/iron/.doctrees/doc/ros2_controllers/rqt_joint_trajectory_controller/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_controllers/rqt_joint_trajectory_controller/doc/userdoc.doctree index e83cbcf5ab7e004195d38ff9606eb53c226d6327..329492061f9a82096cd54e72f3048a8bfe4b5d7d 100644 GIT binary patch delta 62 zcmbO)H(zc;0;8dMSzf6{VP=tjvV~z%qDiWONwS$iiixR_ahhSWfr+V^g^`J&X_`TD QQc7ZK8W3)t$k@jV0Aq*~PXGV_ delta 62 zcmbO)H(zc;0;6GWX|6#^X>qB(v00*_iG`(kl9`2xaiT$@siC>0nI(`;G)gfsFix>F QF-c2HOETU(k+F{#08}UvaR2}S diff --git a/iron/.doctrees/doc/ros2_controllers/steering_controllers_library/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_controllers/steering_controllers_library/doc/userdoc.doctree index 8bd80fd5a4553c939dab5118fb66b4aa9b69d81b..3fad80494594196ef947070033ec4d500acb7e81 100644 GIT binary patch delta 69 zcmeygk?GS$rVUYyM&@OCr51&mMf%AWhDnJgsRky=W(FxHrbfnThRFsdre+pKCWfYI X2FXb&iK%Hos6V++*mmqB(v00*_iG`(kl9`2xaiT$@siC>0nI(`;G)gfsFix>F QF-c2HOETVE$+$!a08(8NYybcN diff --git a/iron/.doctrees/doc/ros2_controllers/tricycle_steering_controller/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_controllers/tricycle_steering_controller/doc/userdoc.doctree index 94329a6735f8f0bba874ff79cb90ac00e09c0e81..75a68479fdd8fafdc283128ada680b84bed81b83 100644 GIT binary patch delta 71 zcmaDJ_&jh!6r+)OSzf6{VP=tjvV~z%qDiWONwS$iiixR_ahhSWfr+V^g^`J&X_`TD ZQc7ZK8W8GF?&lYs{F7Z{^GQZIbpT>=7g7KK delta 71 zcmaDJ_&jh!6r)jYX|6#^X>qB(v00*_iG`(kl9`2xaiT$@siC>0nI(`;G)gfsFix>F ZF-c2HOET7<+|MsM`6s)^=97$a>Hteb7IXjr diff --git a/iron/.doctrees/doc/ros2_controllers/velocity_controllers/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_controllers/velocity_controllers/doc/userdoc.doctree index 37238c45ed3e0cdd140a37756e39cd949049c2dc..1c40bbeae2175cce1b8d75a534a2228808290089 100644 GIT binary patch delta 62 zcmaFj@Wf$*7o(whSzf6{VP=tjvV~z%qDiWONwS$iiixR_ahhSWfr+V^g^`J&X_`TD QQc7ZK8W3)-W_&3J0FUDoT>t<8 delta 62 zcmaFj@Wf$*7o%ZrX|6#^X>qB(v00*_iG`(kl9`2xaiT$@siC>0nI(`;G)gfsFix>F QF-c2HOETVE&G=Fd0DyxNe*gdg diff --git a/iron/.doctrees/doc/simulators/simulators.doctree b/iron/.doctrees/doc/simulators/simulators.doctree index d1bddb3f38da815172a8741da8b41a36a1820e8f..c380f5f8338c3c2a6d1e329a7fbde44e5103a6d6 100644 GIT binary patch delta 62 zcmeA*=r!1&#%O3>mRD*~m|3KsY+;y`Xp(ARl5A#>Vq$7!oMxD8U}9=!VPs-xnr4uk Ql#-a5285f#8Mlc609ES~3;+NC delta 62 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
@fbk)%2kk)NLISpvI?~syzj3$u%|c5$xC&radzx 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 HnIiocP6_0n delta 34866 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�-{W>?_i)Z9eqI4W; zQZ5cvC=rLAp)4E@iBfP_M!&U1P0GC?NQpPp#H<@62D1iuM7cPaCE@p^6~U~r8}$+Y zxS-Vq{t0Gp##37)sc`ZV>M~ZbEyQI|M0np(#O>#nt2*MMM4D+f#(v%!gGmYfh3Bv3LX^Cr3;-!8RdE_ zte0MpN-C^ZUJxs+SF1_at4TMjNw=#>cdJSFt4R;5NsnKY+^tXTB5Vm`!MNS~HjEt< zi&OV1zBnPF4;DyhaY90$Dv;3PgoG9+B(yjop~VRaeVaf+w*wOTDuIL+CnU5uA)&oRH9`2PCvOA)&g;TAYy3;)H}2CnOX!NN90FLW`4cBx}x}5T$$$O8FF&@);=Q6Hvuy$~|Ao9bd}*Udr8G%DrC7onFd)UdliDlyZlca(|av9cghW zoO{ygsn14_(9#mnj>jrVdIc|Z(;9{ z#ModYpEA}Ti6sWBd&AfmX2IXbt%zYINFrjf!f{v<%LeP{&ap-s!4T^f1Tk@}9TvPD z$0i`TAIHWZDXzr^AvslxF+4-j6aS(USmIf>;Pa7eh-aO2{6k@SFl_1Ufgd#!Se8IK zg+Os**$*Zpu%-g3X@Vh5@eAZX2{=A4h)QHVMFE~GuRlzdVN)V&fd%&y*;r8!Qxnd# z#QprrB-RrPq+~W8$;4#V1Iejm7VmJ=2|Q9*B+r8Y-D(gV>ZYq0SXg9$x=VQGBp(u^j7Kn=(R({~_4|~#B z2I<~PW37ocN*B#7PG@~kUXZ~?50fhLN76{F&6tjVusxIt(gTkO7+;&ENf%*jZPr^9jLd+;6X?%Q*TLz%2;=Iop-3** zVPi!3<{Ws`*E7L=MwPWkK8B5}Gpwk~YC8xT05|Kh7!pkNSUaLa>oF_Q6ZKdD(cD~t zSLULlQ9hrG&O+LJnnubN0nA8c;ITy^|wc6?hA5I;3x%^hwyLCvPDJJAVE(aA`E zYKjwvG_e`$LbS9Qjuh#cW^A~y@Kpymy%j%2PH)a~spLR&)|+VDYiuylMXxa#H+}nF zV~vqGwP3FyY2AV~K~mL%)y0nuM_aJ{4mx^RS!23GgVrnozG{V|JmUm)TeGP|KX1*7 zh{m;HeTi1KVMR50jVT4_Ki4L26$~yOBs}vt+rnSXofq#+oNwp?J!~vsVWMc)B5uYT zeH8c}x`LmnFun^b+~p()?!|iOIO6-BKsNPa4Z){7bB5c!a1r5U?N@2m^9ADZp6J`P z0_KW;Mg|@fu$?-7Mk8t+JS|{N;7M;*AFlO6I}Q4dHk1!w#YmnEUF1q3DMIFTYcVO5c_MLPG>JDb} zkQ^S22KY&r9zO^JTL;?>a5&(g7~>B^&~N-8%&>znWGG7o{ZRI%!(UD?U?>|eN;VvZ zGaG_Kz@?Zq5XhQeAaYZ%FBBBBI;6X-7@v(uuNGr$aBIs>LP--#B)l~YmrE=;JPaQ# zykx;i`0PYT7+8n1W&$by9V%K_g5l_Jd^)3U+z2*KluZ2{DhGvz!}lX_^}rJUk+?JY z9qNr_U+Vaoo#_{0nKynkY�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 b%R6+rL>63$Ye5$aT>|McP|Z5V6zP8ekFpA! diff --git a/iron/.doctrees/index.doctree b/iron/.doctrees/index.doctree index 97526a2c8b54d9a05c1bae6d7b9ee4309a49e52d..38ae32498e859f517a14ea9689e53327cfb0d9ca 100644 GIT binary patch delta 78 zcmbPxopJ7U#tmkShUR5?r51&mMf%AWhDnJgsRky=W(FxHrbfnThRFsdre+pKCWfYI f2FXb&iK%HoxH+9sA&Aj%b4RclBaqr3a!(8Z@17YY delta 78 zcmbPxopJ7U#tmkShPkD=1}UY*rTWHZiH0T?mgY%j7AD4t28pJI=9XrbKswPV#l*lk f#nQwiEiEm{cyl_VLJ*_D=8j-9Mj*96Maintainers
0.82
-
+
- + @@ -174,15 +174,15 @@

Maintainers -
+
0.57
-
+
@@ -203,15 +203,15 @@

Maintainers -
+
0.88
-
+
@@ -219,7 +219,7 @@

Maintainers
0.75
-
+
- + @@ -299,15 +299,15 @@

Maintainers -
+
0.31
-
+
@@ -328,15 +328,15 @@

Maintainers -
+
0.87
-
+
@@ -344,7 +344,7 @@

Maintainers
@@ -812,7 +812,7 @@

Reviewers’ Stats -
+
@@ -920,7 +920,7 @@

Reviewers’ Stats
@@ -928,7 +928,7 @@

Reviewers’ Stats -
+
@@ -1268,7 +1268,7 @@

Reviewers’ Stats
@@ -1276,7 +1276,7 @@

Reviewers’ Stats -
+
@@ -1906,7 +1906,7 @@

Reviewers’ Stats
@@ -1914,7 +1914,7 @@

Reviewers’ Stats -
+
@@ -3749,7 +3749,7 @@

Reviewers’ Stats
@@ -3982,7 +3982,7 @@

Reviewers’ Stats -
+
@@ -4235,7 +4235,7 @@

Reviewers’ Stats
@@ -4243,7 +4243,7 @@

Reviewers’ Stats -
+
@@ -4380,7 +4380,7 @@

Reviewers’ Stats
@@ -4388,7 +4388,7 @@

Reviewers’ Stats -
+
@@ -5047,7 +5047,7 @@

Reviewers’ Stats
@@ -5411,7 +5411,7 @@

Reviewers’ Stats -

Built on 2023-12-30 at 05:31 GMT

+

Built on 2023-12-31 at 05:31 GMT

diff --git a/iron/searchindex.js b/iron/searchindex.js index c374e3c8aab..6a444744171 100644 --- a/iron/searchindex.js +++ b/iron/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["doc/acknowledgements/acknowledgements", "doc/contributing/contributing", "doc/differences_to_ros1/differences_to_ros1", "doc/gazebo_ros2_control/doc/index", "doc/getting_started/getting_started", "doc/gz_ros2_control/doc/index", "doc/project_ideas", "doc/resources/resources", "doc/ros2_control/controller_manager/doc/controller_chaining", "doc/ros2_control/controller_manager/doc/userdoc", "doc/ros2_control/doc/index", "doc/ros2_control/hardware_interface/doc/hardware_components_userdoc", "doc/ros2_control/hardware_interface/doc/hardware_interface_types_userdoc", "doc/ros2_control/hardware_interface/doc/mock_components_userdoc", "doc/ros2_control/hardware_interface/doc/writing_new_hardware_component", "doc/ros2_control/ros2controlcli/doc/userdoc", "doc/ros2_control_demos/doc/index", "doc/ros2_control_demos/doc/run_from_docker", "doc/ros2_control_demos/example_1/doc/userdoc", "doc/ros2_control_demos/example_10/doc/userdoc", "doc/ros2_control_demos/example_12/doc/userdoc", "doc/ros2_control_demos/example_14/doc/userdoc", "doc/ros2_control_demos/example_2/doc/userdoc", "doc/ros2_control_demos/example_3/doc/userdoc", "doc/ros2_control_demos/example_4/doc/userdoc", "doc/ros2_control_demos/example_5/doc/userdoc", "doc/ros2_control_demos/example_6/doc/userdoc", "doc/ros2_control_demos/example_7/doc/userdoc", "doc/ros2_control_demos/example_8/doc/userdoc", "doc/ros2_control_demos/example_9/doc/userdoc", "doc/ros2_controllers/ackermann_steering_controller/doc/userdoc", "doc/ros2_controllers/admittance_controller/doc/userdoc", "doc/ros2_controllers/bicycle_steering_controller/doc/userdoc", "doc/ros2_controllers/diff_drive_controller/doc/userdoc", "doc/ros2_controllers/doc/controllers_index", "doc/ros2_controllers/doc/writing_new_controller", "doc/ros2_controllers/effort_controllers/doc/userdoc", "doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/forward_command_controller/doc/userdoc", "doc/ros2_controllers/gripper_controllers/doc/userdoc", "doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/joint_state_broadcaster/doc/userdoc", "doc/ros2_controllers/joint_trajectory_controller/doc/parameters", "doc/ros2_controllers/joint_trajectory_controller/doc/trajectory", "doc/ros2_controllers/joint_trajectory_controller/doc/userdoc", "doc/ros2_controllers/position_controllers/doc/userdoc", "doc/ros2_controllers/range_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/rqt_joint_trajectory_controller/doc/userdoc", "doc/ros2_controllers/steering_controllers_library/doc/userdoc", "doc/ros2_controllers/tricycle_controller/doc/userdoc", "doc/ros2_controllers/tricycle_steering_controller/doc/userdoc", "doc/ros2_controllers/velocity_controllers/doc/userdoc", "doc/simulators/simulators", "doc/supported_robots/supported_robots", "index"], "filenames": ["doc/acknowledgements/acknowledgements.rst", "doc/contributing/contributing.rst", "doc/differences_to_ros1/differences_to_ros1.rst", "doc/gazebo_ros2_control/doc/index.rst", "doc/getting_started/getting_started.rst", "doc/gz_ros2_control/doc/index.rst", "doc/project_ideas.rst", "doc/resources/resources.rst", "doc/ros2_control/controller_manager/doc/controller_chaining.rst", "doc/ros2_control/controller_manager/doc/userdoc.rst", "doc/ros2_control/doc/index.rst", "doc/ros2_control/hardware_interface/doc/hardware_components_userdoc.rst", "doc/ros2_control/hardware_interface/doc/hardware_interface_types_userdoc.rst", "doc/ros2_control/hardware_interface/doc/mock_components_userdoc.rst", "doc/ros2_control/hardware_interface/doc/writing_new_hardware_component.rst", "doc/ros2_control/ros2controlcli/doc/userdoc.rst", "doc/ros2_control_demos/doc/index.rst", "doc/ros2_control_demos/doc/run_from_docker.rst", "doc/ros2_control_demos/example_1/doc/userdoc.rst", "doc/ros2_control_demos/example_10/doc/userdoc.rst", "doc/ros2_control_demos/example_12/doc/userdoc.rst", "doc/ros2_control_demos/example_14/doc/userdoc.rst", "doc/ros2_control_demos/example_2/doc/userdoc.rst", "doc/ros2_control_demos/example_3/doc/userdoc.rst", "doc/ros2_control_demos/example_4/doc/userdoc.rst", "doc/ros2_control_demos/example_5/doc/userdoc.rst", "doc/ros2_control_demos/example_6/doc/userdoc.rst", "doc/ros2_control_demos/example_7/doc/userdoc.rst", "doc/ros2_control_demos/example_8/doc/userdoc.rst", "doc/ros2_control_demos/example_9/doc/userdoc.rst", "doc/ros2_controllers/ackermann_steering_controller/doc/userdoc.rst", "doc/ros2_controllers/admittance_controller/doc/userdoc.rst", "doc/ros2_controllers/bicycle_steering_controller/doc/userdoc.rst", "doc/ros2_controllers/diff_drive_controller/doc/userdoc.rst", "doc/ros2_controllers/doc/controllers_index.rst", "doc/ros2_controllers/doc/writing_new_controller.rst", "doc/ros2_controllers/effort_controllers/doc/userdoc.rst", "doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/forward_command_controller/doc/userdoc.rst", "doc/ros2_controllers/gripper_controllers/doc/userdoc.rst", "doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/joint_state_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/joint_trajectory_controller/doc/parameters.rst", "doc/ros2_controllers/joint_trajectory_controller/doc/trajectory.rst", "doc/ros2_controllers/joint_trajectory_controller/doc/userdoc.rst", "doc/ros2_controllers/position_controllers/doc/userdoc.rst", "doc/ros2_controllers/range_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/rqt_joint_trajectory_controller/doc/userdoc.rst", "doc/ros2_controllers/steering_controllers_library/doc/userdoc.rst", "doc/ros2_controllers/tricycle_controller/doc/userdoc.rst", "doc/ros2_controllers/tricycle_steering_controller/doc/userdoc.rst", "doc/ros2_controllers/velocity_controllers/doc/userdoc.rst", "doc/simulators/simulators.rst", "doc/supported_robots/supported_robots.rst", "index.rst"], "titles": ["Acknowledgements", "Contributing", "Differences to ros_control (ROS1)", "gazebo_ros2_control", "Getting Started", "gz_ros2_control", "Project Ideas for GSoC 2024", "Resources", "Controller Chaining / Cascade Control", "Controller Manager", "ros2_control", "Hardware Components", "ros2_control hardware interface types", "Mock Components", "Writing a Hardware Component", "Command Line Interface", "Demos", "<no title>", "Example 1: RRBot", "Example 10: Industrial robot with GPIO interfaces", "Example 12: Controller chaining with RRBot", "Example 14: Modular robot with actuators not providing states", "DiffBot", "Example 3: Robots with multiple interfaces", "Example 4: Industrial robot with integrated sensor", "Example 5: Industrial robot with externally connected sensor", "Example 6: Modular Robots with separate communication to each actuator", "Example 7: Full tutorial with a 6DOF robot", "Example 8: Industrial Robots with an exposed transmission interface", "Example 9: Simulation with RRBot", "ackermann_steering_controller", "Admittance Controller", "bicycle_steering_controller", "diff_drive_controller", "ros2_controllers", "Writing a new controller", "effort_controllers", "Force Torque Sensor Broadcaster", "forward_command_controller", "Gripper Action Controller", "IMU Sensor Broadcaster", "joint_state_broadcaster", "Details about parameters", "Trajectory Representation", "joint_trajectory_controller", "position_controllers", "Range Sensor Broadcaster", "rqt_joint_trajectory_controller", "steering_controllers_library", "tricycle_controller", "tricycle_steering_controller", "velocity_controllers", "Simulator Integrations", "Supported Robots", "Welcome to the ros2_control documentation - Iron!"], "terms": {"The": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 54], "follow": [0, 1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 42, 43, 44, 45, 50, 51, 54], "peopl": [0, 1], "were": [0, 6, 27, 33, 43, 44], "ros2_control": [0, 1, 4, 7, 9, 11, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 33, 35, 52], "framework": [0, 1, 2, 6, 7, 9, 10, 11, 12, 13, 15, 16, 27, 34, 35, 41, 54], "show": [0, 1, 3, 4, 5, 7, 9, 11, 12, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 41, 43], "all": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 35, 41, 42, 43, 44, 53], "time": [0, 1, 2, 6, 7, 9, 13, 15, 16, 18, 21, 22, 23, 24, 25, 26, 27, 28, 33, 35, 37, 42, 43, 44, 54], "activ": [0, 1, 2, 4, 9, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 41, 42, 44], "assign": [0, 35], "finish": 0, "rate": [0, 22, 34, 42, 43, 44], "last": [0, 11, 14, 27, 31, 35, 42, 43], "date": 0, "benc": [0, 6, 7], "magyar": [0, 6, 7], "bmagyar": 0, "1243": 0, "1023": 0, "0": [0, 3, 4, 5, 8, 12, 13, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 39, 40, 41, 42, 43, 44, 46, 48, 50], "82": 0, "2023": [0, 54], "12": [0, 16, 53, 54], "29t11": 0, "40": 0, "08z": 0, "dr": [0, 7], "deni": [0, 6, 7], "destogl": 0, "985": 0, "561": 0, "57": 0, "18t14": 0, "11": [0, 16], "03z": 0, "christoph": 0, "fr\u00f6hlich": 0, "christophfroehlich": 0, "152": 0, "133": 0, "88": 0, "26t09": 0, "00": 0, "02z": 0, "fetch": 0, "30": [0, 3, 5, 22, 54], "03": [0, 44], "25": 0, "46": 0, "utc": 0, "dure": [0, 16, 27, 44], "past": [0, 43], "month": 0, "532": 0, "401": 0, "75": 0, "438": 0, "136": 0, "31": [0, 54], "141": 0, "122": 0, "87": 0, "have": [0, 1, 2, 4, 6, 8, 9, 11, 12, 13, 14, 16, 18, 20, 22, 23, 27, 29, 30, 31, 32, 34, 35, 41, 42, 44, 50], "contribut": [0, 4, 7], "develop": [0, 1, 7, 13, 14, 16, 35], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 27, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 48, 50, 51, 52, 53, 54], "project": [0, 1, 54], "give": [0, 1, 7, 9, 16, 18, 22, 23, 43, 54], "valuabl": 0, "pull": [0, 14], "request": [0, 2, 14, 27, 41, 54], "see": [0, 1, 2, 4, 12, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 37, 40, 42, 44, 46, 48, 50], "more": [0, 1, 2, 3, 4, 5, 6, 9, 13, 14, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 35, 44, 50], "inform": [0, 3, 5, 8, 13, 14, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 35, 54], "karsten": 0, "knese": 0, "karsten1987": 0, "186": 0, "118": 0, "63": 0, "2021": 0, "09": 0, "07t16": 0, "47": 0, "31z": 0, "alejandro": 0, "hern\u00e1ndez": 0, "cordero": 0, "ahcord": 0, "90": [0, 27], "80": 0, "89": 0, "27t10": 0, "54": 0, "11z": 0, "sai": 0, "kishor": 0, "kothakota": 0, "saikishor": 0, "69": 0, "67": 0, "97": 0, "29t05": 0, "18": [0, 27], "25z": 0, "victor": 0, "lopez": 0, "v": [0, 15, 24, 42], "93": 0, "60": 0, "65": 0, "10": [0, 3, 5, 16, 23, 48], "14t09": 0, "01": [0, 39, 42, 44], "andyz": 0, "45": 0, "98": 0, "23t02": 0, "17": 0, "26z": 0, "abrar": 0, "rahman": 0, "protyasha": 0, "aprotya": 0, "157": 0, "43": [0, 4, 12, 22], "27": 0, "25t12": 0, "02": 0, "18z": 0, "olivi": 0, "stass": 0, "52": [0, 46], "77": 0, "26t08": 0, "13z": 0, "jordan": 0, "palacio": 0, "78": 0, "34": 0, "44": 0, "15t08": 0, "45z": 0, "erick": 0, "g": [0, 1, 2, 4, 5, 6, 7, 8, 9, 12, 13, 14, 16, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 31, 35, 36, 41, 45, 48, 51, 54], "isla": 0, "osuna": 0, "erickiso": 0, "139": 0, "28": [0, 48], "20": [0, 39, 42, 44], "19t20": 0, "32": 0, "07z": 0, "louis": 0, "poubel": 0, "chapulina": 0, "29": 0, "23": [0, 4], "79": 0, "2022": 0, "08": 0, "30t16": 0, "41": 0, "23z": 0, "none": [0, 8, 35, 41, 42, 44], "bijoua29": 0, "160": 0, "21": [0, 48], "13": [0, 16], "06": 0, "01t20": 0, "48": [0, 3, 5], "32z": 0, "jaron": 0, "l": 0, "167": 0, "10t19": 0, "59": 0, "59z": 0, "livanov93": 0, "164": 0, "05": [0, 44, 54], "22t06": 0, "28z": 0, "tyler": 0, "weaver": 0, "tylerjw": 0, "94": 0, "27t13": 0, "arn": 0, "hitzmann": 0, "arne48": 0, "145": 0, "16": [0, 53], "25t06": 0, "15z": 0, "bailac": 0, "14": [0, 16, 48], "1": [0, 1, 2, 3, 4, 5, 6, 7, 12, 13, 14, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 35, 39, 43, 46, 48], "09t12": 0, "52z": 0, "m\u00e1rk": 0, "szitan": 0, "vx792": 0, "135": 0, "22t09": 0, "26": 0, "felix": 0, "exner": 0, "fexner": 0, "fmauch": 0, "24t22": 0, "ari": 0, "synodino": 0, "progtologist": 0, "151": 0, "07": 0, "30t19": 0, "58z": 0, "chen": 0, "bainian": 0, "briancbn": 0, "36": 0, "9": [0, 6, 16, 40], "25t01": 0, "51": 0, "12z": 0, "paul": 0, "gesel": 0, "pac48": 0, "14t18": 0, "maciej": 0, "bednarczyk": 0, "mcbed": 0, "123": 0, "8": [0, 16], "25t18": 0, "19z": 0, "jafar": 0, "uru\u00e7": 0, "jafarabdi": 0, "07t07": 0, "01z": 0, "ddengster": 0, "2020": 0, "01t03": 0, "andr": 0, "montano": 0, "anfemosa": 0, "7": [0, 16, 19, 22, 48], "29t15": 0, "37z": 0, "homalozoa": 0, "x": [0, 22, 24, 25, 27, 31, 33, 37, 40, 48, 49, 53], "130": 0, "23t11": 0, "22": [0, 9], "mahaarbo": 0, "01t11": 0, "44z": 0, "matt": 0, "reynold": 0, "matthew": 0, "18t19": 0, "56": 0, "34z": 0, "ana": 0, "abou": 0, "allaban": 0, "piraka9011": 0, "04": [0, 9], "09t00": 0, "38": [0, 3, 5], "06z": 0, "toni": [0, 7], "najjar": [0, 7], "tonynajjar": 0, "04t13": 0, "50": [0, 4, 9, 22], "48z": 0, "dasroteskelett": 0, "149": 0, "6": [0, 16, 18, 27], "28t09": 0, "36z": 0, "brewmast": 0, "harderthan": 0, "124": 0, "26t15": 0, "47z": 0, "A": [0, 4, 7, 12, 14, 16, 24, 25, 34, 35, 41, 43, 44], "vd": 0, "hoorn": 0, "gavanderhoorn": 0, "19t13": 0, "39": 0, "alex": 0, "moriarti": 0, "5": [0, 14, 16, 18, 19, 20, 21, 23, 24, 26, 27, 28, 29, 43, 48, 53], "42": 0, "20t19": 0, "55": 0, "jack": 0, "jackcent": 0, "02t15": 0, "37": 0, "17z": 0, "han": 0, "martin": 0, "duringhof": 0, "4": [0, 12, 16, 21, 23, 25, 28, 46], "29t21": 0, "15": 0, "noel": 0, "jim\u00e9nez": 0, "garc\u00eda": 0, "noel215": 0, "20t07": 0, "40z": 0, "nathan": [0, 7], "brook": [0, 7], "nbbrook": 0, "05t22": 0, "marq": 0, "rasmussen": 0, "marqrazz": 0, "23t00": 0, "colin": 0, "mackenzi": 0, "guru": 0, "florida": 0, "19t23": 0, "49z": 0, "reza": 0, "kermani": 0, "ark3r": 0, "13t18": 0, "27z": 0, "chri": 0, "thrasher": 0, "christhrash": 0, "26t17": 0, "05z": 0, "michael": 0, "wiznitz": 0, "mechwiz": 0, "22t14": 0, "19": 0, "richard": 0, "osterloh": 0, "rosterloh": 0, "3": [0, 3, 4, 5, 6, 12, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28, 43, 44], "05t08": 0, "53": 0, "mrl1kor": 0, "malapatiravi": 0, "07t18": 0, "adam": 0, "serafin": 0, "serafadam": 0, "12t18": 0, "24": 0, "24z": 0, "manuel": 0, "muth": 0, "mamueluth": 0, "03t10": 0, "20z": 0, "melvin": 0, "wang": 0, "wmmc88": 0, "22t13": 0, "tim": 0, "clepha": 0, "timpl": 0, "13t07": 0, "yutaka": 0, "kondo": 0, "youtalk": 0, "22t00": 0, "guihom": 0, "guihomework": 0, "17t15": 0, "jose": 0, "lui": 0, "rivero": 0, "j": 0, "26t13": 0, "peter": 0, "david": 0, "fagan": 0, "peterdavidfagan": 0, "2": [0, 1, 3, 4, 5, 6, 7, 8, 12, 13, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 44, 48, 53, 54], "23t22": 0, "sebastian": 0, "jahr": 0, "sjahr": 0, "15t14": 0, "joseph": 0, "schornak": 0, "schornakj": 0, "27t03": 0, "57z": 0, "akash": 0, "ace314159": 0, "31t17": 0, "jo\u00e3o": 0, "torr": 0, "borg": 0, "borgesjvt": 0, "05t12": 0, "46z": 0, "patrick": 0, "roncagliolo": 0, "roncapat": 0, "01t12": 0, "49": 0, "carrol": 0, "mjcarrol": 0, "28t21": 0, "09z": 0, "vansh": 0, "gehlot": 0, "eth": 0, "vanshgehlot": 0, "13t11": 0, "mhubii": 0, "21t11": 0, "50z": 0, "luka": 0, "macha": 0, "lukasmacha97": 0, "85": 0, "17t18": 0, "sachin": 0, "kumar": 0, "sachinkum0009": 0, "lennart": 0, "nachtigal": 0, "firesurf": 0, "04t07": 0, "qiayuanliao": 0, "qiayuanl": 0, "35": [0, 48], "25t05": 0, "solomon": 0, "swiz23": 0, "15t15": 0, "andi": [0, 7], "mcevoi": 0, "mcevoyandi": 0, "08t14": 0, "kenji": 0, "brameld": 0, "ijnek": 0, "05t10": 0, "53z": 0, "bilal": 0, "gill": 0, "bgill92": 0, "01t13": 0, "22z": 0, "kvk": 0, "praneeth": 0, "kvkpraneeth": 0, "28t07": 0, "33z": 0, "cian": 0, "donovan": 0, "ciandonovan": 0, "26t23": 0, "schulz": 0, "schulze18": 0, "27t21": 0, "29z": 0, "shawn": 0, "schaerer": 0, "shawnschaer": 0, "14t15": 0, "franz": 0, "fjp": 0, "04t22": 0, "vatan": 0, "aksoi": 0, "tezer": 0, "vatanaksoytez": 0, "21t13": 0, "nour": 0, "saeed": 0, "d": [0, 16, 18, 29, 42], "dmitri": 0, "dignakov": 0, "13t16": 0, "ken551": 0, "03t11": 0, "54z": 0, "jonatan": 0, "olofsson": 0, "jonatanolofsson": 0, "05t14": 0, "bedard": 0, "christophebedard": 0, "27t18": 0, "august": 0, "bourgoi": 0, "augustebourgoi": 0, "19t14": 0, "ramon": 0, "wijnand": 0, "rayman": 0, "21t14": 0, "21z": 0, "flochr": 0, "20t10": 0, "castro": 0, "sea": 0, "bass": 0, "27t12": 0, "51z": 0, "abishalini": 0, "sivaraman": 0, "27t14": 0, "ramcharanthota": 0, "ben": 0, "holden": 0, "bobblebal": 0, "01t10": 0, "Will": 0, "baker": 0, "willcbak": 0, "22t15": 0, "robotgir": 0, "17t16": 0, "33": 0, "tomislav": 0, "petkovi\u0107": 0, "petkovich": 0, "17t10": 0, "ros2tori": 0, "28t15": 0, "kevin": 0, "demarco": 0, "syllogismrx": 0, "19t16": 0, "noe\u00ebl": 0, "moeskop": 0, "noeelmoeskop": 0, "18t09": 0, "josh": 0, "newan": 0, "joshnewan": 0, "14t08": 0, "emiliano": 0, "borghi": 0, "eborghi10": 0, "29t20": 0, "haider8645": 0, "26t10": 0, "stephen": 0, "street": 0, "sgstreet": 0, "05t20": 0, "jun": 0, "chenjunnn": 0, "09t06": 0, "daniel": 0, "zumkel": 0, "dzumkel": 0, "shane": 0, "loretz": 0, "sloretz": 0, "yoav": 0, "feket": 0, "yoavfeket": 0, "17t21": 0, "johann": [0, 7], "huemer": 0, "huemerj": 0, "31t15": 0, "keegan": 0, "soteb": 0, "ksoteb": 0, "00z": 0, "carlo": 0, "ag\u00fcero": 0, "caguero": 0, "26t11": 0, "35z": 0, "jacob": 0, "perron": 0, "jacobperron": 0, "09t18": 0, "reframesystem": 0, "krzysztof": 0, "wojciechowski": 0, "kotochleb": 0, "12t08": 0, "55z": 0, "addisu": 0, "z": [0, 22, 24, 25, 27, 31, 33, 37, 40, 48, 49], "taddes": 0, "azeei": 0, "14t20": 0, "thibault": 0, "poignonec": 0, "tpoignonec": 0, "09t08": 0, "sgmurrai": 0, "0000": 0, "00t00": 0, "kelli": 0, "kellyprankin": 0, "kasiceo": 0, "a10263790": 0, "tomoya": 0, "tomoyafujita2016": 0, "usamahamayun1": 0, "dave": 0, "coleman": 0, "davetcoleman": 0, "66": 0, "64": 0, "92": 0, "71": 0, "104": 0, "91": 0, "03t19": 0, "14z": 0, "86": 0, "99": [0, 9], "72": 0, "link": [0, 3, 4, 5, 7, 8, 11, 27, 34], "list": [0, 4, 7, 8, 9, 11, 14, 15, 20, 27, 35, 42, 52, 53, 54], "who": 0, "submit": [0, 1, 7, 52, 53], "respect": [0, 3, 5, 6, 7, 42, 43, 44], "repositori": [0, 4, 6, 10, 12, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 33, 34], "ros2_control_demo": [0, 1, 4, 16, 18, 27, 29, 54], "control_toolbox": [0, 54], "gazebo_ros2_control": [0, 29], "gz_ros2_control": 0, "realtime_tool": [0, 6, 54], "kinematics_interfac": [0, 31], "control_msg": [0, 3, 5, 31, 42, 44, 48, 54], "ha": [0, 1, 3, 4, 5, 7, 12, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 34, 35, 41, 42, 43], "receiv": [0, 2, 27, 42, 43], "major": [0, 40], "from": [0, 1, 2, 7, 8, 9, 13, 14, 15, 17, 27, 31, 33, 34, 35, 36, 37, 40, 42, 43, 44, 45, 46, 49, 51, 53, 54], "support": [0, 2, 3, 4, 5, 7, 13, 14, 15, 27, 31, 35, 41, 43, 44, 48, 52, 54], "rosin": 0, "ro": [0, 1, 2, 3, 4, 5, 6, 9, 12, 13, 15, 16, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 34, 35, 43, 44, 54], "industri": [0, 4, 6, 16, 53], "qualiti": [0, 1], "assur": 0, "robot": [0, 2, 3, 5, 6, 8, 9, 12, 18, 20, 22, 29, 33, 37, 41, 48, 49, 54], "softwar": [0, 4, 27], "compon": [0, 7, 9, 10, 12, 15, 16, 21, 22, 23, 24, 25, 26, 27, 31, 33, 34, 37, 40, 46, 48, 49, 54], "http": [0, 1, 4, 6, 16, 27, 30, 32, 50], "www": 0, "eu": 0, "fund": 0, "european": 0, "union": 0, "": [0, 1, 4, 6, 7, 8, 9, 14, 15, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 35, 40, 42, 43, 46, 50, 54], "horizon": 0, "research": [0, 7, 53], "innov": 0, "programm": 0, "under": [0, 7, 14, 20, 35, 43, 44, 48, 54], "grant": [0, 4], "agreement": 0, "732287": 0, "first": [1, 2, 8, 11, 14, 16, 27, 29, 35, 42, 43], "thank": 1, "you": [1, 2, 3, 4, 5, 7, 8, 9, 11, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 35, 44, 54], "consid": [1, 15, 42], "As": [1, 8, 12, 14, 18, 27, 33, 35], "an": [1, 2, 3, 4, 5, 6, 7, 8, 12, 13, 14, 15, 16, 18, 20, 22, 25, 27, 29, 30, 31, 32, 33, 34, 35, 36, 41, 42, 44, 45, 48, 50, 51], "open": [1, 13, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 41, 42, 48], "sourc": [1, 3, 5, 7, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "we": [1, 3, 5, 6, 7, 8, 11, 16, 18, 20, 22, 27, 28, 29, 41], "welcom": 1, "each": [1, 4, 6, 8, 9, 11, 12, 14, 16, 18, 21, 27, 30, 41, 48, 50], "contributor": 1, "regardless": 1, "background": [1, 16], "experi": 1, "To": [1, 2, 4, 8, 9, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 41, 43, 52, 53, 54], "reduc": [1, 13], "entropi": 1, "univers": [1, 7, 27, 53], "our": [1, 3, 4, 5, 6, 7, 16, 18, 27], "vivid": 1, "collabor": 1, "environ": [1, 4, 7, 16], "set": [1, 2, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 27, 34, 36, 41, 42, 43, 44, 45, 48, 51], "up": [1, 7, 14, 16, 43], "some": [1, 3, 5, 6, 7, 16, 18, 21, 22, 23, 24, 25, 26, 27, 28, 31, 41, 42, 44, 54], "standard": [1, 2, 6, 7, 14, 15, 21, 26, 27, 37, 41], "method": [1, 2, 4, 8, 9, 11, 14, 27, 35, 48], "requir": [1, 2, 4, 6, 14, 27, 31, 35, 36, 44, 45, 51], "ar": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 37, 40, 41, 42, 43, 44, 46, 48, 49, 50, 54], "limit": [1, 3, 5, 7, 9, 16, 27, 33, 49], "scope": 1, "your": [1, 2, 7, 9, 13, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 32, 35, 52, 53, 54], "pr": [1, 52, 53], "should": [1, 2, 3, 5, 6, 7, 8, 9, 11, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 35, 41, 43, 44], "do": [1, 2, 4, 6, 7, 8, 9, 14, 16, 31, 35, 44], "one": [1, 2, 4, 6, 7, 8, 9, 12, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 35, 36, 37, 41, 43, 44, 45, 48, 50, 51, 54], "thing": [1, 3, 5, 16], "avoid": [1, 18, 21, 22, 23, 24, 25, 26, 28, 35], "ad": [1, 3, 5, 6, 9, 13, 14, 20, 22, 27, 35, 41], "random": [1, 21, 23, 24, 25, 26], "fix": [1, 2, 27, 30, 32, 50], "put": [1, 14, 35], "those": [1, 2, 4, 6, 8, 13, 14, 16, 27, 33, 35, 37, 41, 42, 43], "separ": [1, 2, 4, 16, 21, 41], "descript": [1, 2, 7, 9, 11, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 35], "titl": 1, "add": [1, 2, 8, 9, 11, 14, 27, 30, 31, 32, 35, 50, 52, 53], "short": [1, 35, 54], "summari": [1, 7, 54], "make": [1, 2, 5, 6, 7, 20, 27, 39, 54], "sure": [1, 5, 6, 18, 20, 21, 22, 23, 24, 25, 26, 28, 54], "pipelin": 1, "i": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 54], "green": [1, 43], "don": [1, 3, 8, 22, 42, 44], "t": [1, 3, 5, 8, 9, 16, 22, 42, 43, 44], "afraid": 1, "review": [1, 6, 54], "maintain": [1, 4, 6, 8, 16, 43], "new": [1, 7, 8, 14, 18, 20, 23, 27, 34, 43, 54], "code": [1, 2, 4, 6, 7, 14, 27], "test": [1, 3, 6, 13, 14, 16, 18, 22, 29, 30, 31, 32, 35, 48, 50], "If": [1, 2, 4, 8, 9, 11, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 35, 37, 41, 42, 43, 44, 48, 54], "function": [1, 2, 6, 7, 20, 27, 31, 48], "alwai": [1, 27], "exercis": 1, "serv": [1, 4, 6], "live": [1, 7], "origin": [1, 3, 5, 7, 18, 27, 43, 44], "intent": [1, 8, 13], "section": [1, 2, 12, 14, 35, 44], "target": [1, 9, 14, 31, 35, 38, 42], "also": [1, 2, 3, 4, 5, 6, 7, 8, 9, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 35, 44], "read": [1, 2, 3, 4, 5, 9, 12, 14, 16, 20, 21, 24, 25, 27, 35, 41, 42, 46, 48], "understand": [1, 6, 43], "how": [1, 6, 7, 12, 14, 16, 19, 20, 21, 23, 24, 25, 26, 27, 29, 35], "handl": [1, 2, 4, 6, 7, 14, 24, 27, 30, 31, 32, 38, 39, 40, 44, 48, 50], "organ": [1, 7, 54], "guidelin": 1, "especi": [1, 2, 16, 48], "applic": [1, 4, 7, 9, 12, 27], "pleas": [1, 9, 26, 54], "keep": [1, 27, 35], "mind": [1, 35], "work": [1, 6, 7, 8, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 35, 36, 41, 45, 49, 51, 54], "fork": 1, "when": [1, 2, 3, 4, 5, 8, 9, 13, 14, 15, 20, 23, 27, 31, 34, 35, 39, 42, 44, 48], "That": [1, 14, 35], "wai": [1, 9, 14, 27, 35, 37, 44], "main": [1, 4, 6, 7, 9, 13, 27, 35, 48, 54], "repo": [1, 4, 16], "clean": 1, "featur": [1, 7, 13, 16, 18, 28, 48, 54], "branch": [1, 16], "check": [1, 2, 4, 6, 8, 11, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 35, 42, 43, 44, 50, 54], "satisfi": 1, "befor": [1, 2, 8, 9, 14, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 34, 35, 43], "thei": [1, 2, 4, 6, 7, 8, 12, 13, 14, 15, 20, 34, 35, 42, 44, 48], "can": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 35, 37, 38, 42, 43, 44, 48, 54], "must": [1, 3, 5, 8, 9, 12, 16, 27, 40, 42, 44], "approv": 1, "two": [1, 4, 6, 8, 9, 14, 16, 18, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 32, 35, 37, 43, 44, 48, 50], "explicitli": 1, "onli": [1, 2, 4, 6, 7, 8, 9, 11, 14, 15, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 32, 33, 35, 36, 37, 41, 42, 43, 44, 45, 51], "except": [1, 27], "other": [1, 2, 3, 4, 7, 14, 16, 21, 26, 27, 30, 32, 35, 41, 43, 48, 50], "where": [1, 3, 6, 8, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 30, 32, 33, 35, 41, 42, 43, 44, 48, 50], "back": 1, "traceabl": 1, "discuss": [1, 7, 20, 29, 43, 54], "suffici": [1, 3, 5, 8, 37], "note": [1, 4, 9, 18, 33, 44, 54], "still": [1, 2, 18, 20, 21, 22, 23, 24, 25, 26, 28, 34, 43], "encourag": 1, "help": [1, 9, 13, 14, 15, 35], "u": [1, 3, 5, 9, 16, 42], "increas": [1, 22], "pace": 1, "veri": [1, 2, 3, 5, 6, 12], "like": [1, 2, 3, 4, 5, 6, 7, 14, 16, 20, 27], "find": [1, 3, 5, 22], "issu": [1, 6, 54], "nobodi": 1, "els": 1, "squash": 1, "commit": 1, "messag": [1, 6, 9, 15, 23, 24, 25, 27, 37, 40, 41, 42, 43, 44, 46, 48, 54], "comment": [1, 27], "fixup": 1, "linter": 1, "us": [1, 2, 4, 6, 7, 11, 12, 13, 15, 17, 27, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 48, 50, 51, 54], "pre": 1, "correct": [1, 2, 43], "header": [1, 11, 14, 24, 25, 33, 35, 43], "address": [1, 27], "similar": [1, 4, 7, 12, 18, 20, 27], "mean": [1, 2, 8, 12, 13, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 43, 44], "result": [1, 4, 8, 9, 18, 27, 41, 43], "exactli": 1, "cowboi": 1, "style": [1, 14, 35], "over": [1, 6, 8, 22, 27], "weekend": 1, "It": [1, 2, 3, 4, 6, 8, 9, 18, 20, 21, 23, 24, 25, 26, 27, 28, 29, 37, 41, 42, 43], "doesn": [1, 8], "matter": 1, "trivial": [1, 13], "chanc": 1, "proper": [1, 8, 9, 44], "Be": 1, "awar": 1, "impact": 1, "proport": [1, 42], "its": [1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 37, 38, 39, 40, 41, 43, 48, 50], "ping": 1, "them": [1, 6, 8, 9, 14, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 35, 41, 43, 53], "necessari": [1, 8, 11], "repeatedli": 1, "start": [1, 2, 3, 5, 7, 8, 9, 11, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 42, 43, 54], "part": [1, 6, 7, 12, 27, 35, 43, 44], "For": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 35, 42, 44, 48, 50], "detail": [1, 2, 3, 4, 5, 9, 11, 12, 13, 14, 20, 27, 29, 30, 32, 33, 35, 43, 44, 50], "thoma": 1, "cokela": 1, "info": [1, 9, 11, 14, 27], "tutori": [1, 16], "sphinx": 1, "rest_syntax": 1, "html": 1, "id8": 1, "type": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 16, 21, 22, 24, 25, 26, 27, 33, 34, 35, 36, 37, 40, 42, 45, 46, 48, 51], "stabl": 1, "against": 1, "accept": [1, 14, 23, 35, 36, 42, 43, 44, 45, 51], "api": [1, 3, 5, 6, 14, 18, 21, 22, 23, 24, 25, 26, 28], "abi": 1, "chang": [1, 2, 4, 7, 9, 11, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 42, 43, 44], "e": [1, 2, 4, 6, 7, 8, 9, 12, 13, 14, 16, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 31, 35, 36, 37, 41, 42, 43, 45, 48, 51, 54], "name": [1, 2, 3, 4, 5, 7, 9, 12, 13, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 29, 31, 35, 37, 38, 40, 41, 42, 46, 48], "convent": [1, 27], "master": [1, 4], "semi": 1, "binari": 1, "good": [1, 3, 5, 6], "same": [1, 8, 23, 27, 34, 37, 42, 43, 44], "build": [1, 14, 27, 31, 35], "dai": 1, "ros_distro": [1, 4, 16, 18], "foxi": [1, 7, 14], "galact": [1, 11, 14], "releas": [1, 4, 7, 16, 27], "version": [1, 6, 16, 44], "non": [1, 7, 20, 27, 37, 53], "brake": 1, "distribut": [1, 16, 54], "three": [1, 2, 4, 11, 12, 16, 27, 35, 43, 50], "stage": [1, 8, 20], "current": [1, 6, 11, 12, 14, 15, 43, 44, 48], "futur": [1, 7, 8, 43, 44], "compat": [1, 2, 7, 14, 16], "packag": [1, 2, 3, 5, 11, 14, 27, 30, 31, 32, 33, 35, 36, 37, 40, 44, 45, 46, 48, 50, 51, 54], "direct": [1, 2, 6, 14, 27, 35, 42], "local": [1, 3, 5, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 41], "possibl": [1, 4, 6, 9, 12, 16, 18, 21, 22, 23, 24, 25, 26, 28, 31, 35, 43], "core": [1, 10, 27], "immedi": [1, 9, 18, 20, 21, 23, 24, 25, 26, 27, 28, 29], "depend": [1, 4, 11, 12, 14, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 34, 35, 43, 48], "fail": [1, 23, 27], "expect": [1, 6, 20, 27, 30, 32, 44, 48, 50], "after": [1, 8, 9, 14, 16, 18, 27, 33, 35, 42, 43, 48, 49], "next": [1, 18, 27, 43], "sync": 1, "abl": 1, "potenti": [1, 35, 42], "mid": 1, "stat": 1, "power": [1, 3, 5, 7, 14], "plausibl": 1, "analyt": 1, "robothw": 2, "rigid": 2, "ani": [2, 4, 7, 8, 9, 11, 12, 16, 20, 27, 35, 42, 44], "imposs": 2, "extend": [2, 4, 6, 8, 14, 35], "exist": [2, 4, 6, 8, 9, 11, 12, 14, 18, 21, 22, 23, 24, 25, 26, 27, 28, 35, 44], "addit": [2, 3, 5, 8, 16, 19, 22, 27], "sensor": [2, 4, 6, 11, 13, 14, 16, 21, 26, 27, 31, 34, 53], "actuat": [2, 4, 6, 11, 12, 13, 14, 16, 20], "tool": [2, 3, 5, 6, 7, 27], "without": [2, 3, 4, 5, 7, 9, 13, 14, 16, 20, 29, 35, 42, 43], "combinedrobothardwar": 2, "drawback": [2, 54], "solut": [2, 7], "optim": [2, 9], "combin": [2, 8, 12, 13, 16, 23, 41, 42, 43, 44], "extern": [2, 4, 6, 8, 13, 16, 31], "defin": [2, 3, 5, 6, 9, 13, 14, 16, 27, 31, 35, 37, 40, 41, 42, 43, 44, 46, 48], "system": [2, 3, 4, 5, 6, 7, 11, 12, 14, 15, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 44, 52, 53, 54], "composit": [2, 7], "basic": [2, 3, 4, 5, 6, 7, 14, 16, 22, 35], "physic": [2, 4, 11, 12, 13], "cell": [2, 37], "surround": 2, "describ": [2, 4, 8, 12, 16, 18, 23, 27, 29, 43], "multi": [2, 4, 6, 7, 16, 23], "gripper": [2, 3, 4, 5, 7, 12, 13, 34], "out": [2, 3, 5, 9, 27, 33], "box": [2, 16, 18, 22, 23, 24, 25, 28, 29], "allow": [2, 3, 4, 5, 16, 27, 39, 42, 43, 44, 47], "joint": [2, 4, 7, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 41, 42, 43, 45, 48, 50, 51, 54], "posit": [2, 3, 4, 5, 7, 9, 12, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 36, 41, 42, 43, 44, 45, 48, 51], "veloc": [2, 3, 4, 5, 7, 8, 16, 21, 22, 23, 27, 31, 32, 33, 34, 39, 40, 41, 42, 43, 44, 45, 48, 51], "effort": [2, 3, 5, 16, 27, 34, 36, 39, 41, 42, 44], "hard": [2, 9], "data": [2, 4, 6, 13, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 34, 41, 43], "approach": [2, 8], "doe": [2, 8, 9, 14, 18, 21, 22, 23, 24, 25, 26, 27, 28, 35, 43, 44], "enforc": [2, 23, 27, 42], "string": [2, 9, 13, 16, 35, 38, 39, 40, 41, 42, 46, 48], "ensur": [2, 7, 9, 27, 43], "constant": [2, 16], "hardware_interfac": [2, 3, 4, 5, 11, 13, 14, 16, 21, 24, 25, 26, 27, 31, 33, 34, 35], "In": [2, 3, 4, 5, 6, 7, 8, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 34, 35, 41, 43, 48], "had": 2, "itself": [2, 8], "took": 2, "care": [2, 6, 9, 14, 23, 35, 44], "regist": [2, 3, 5], "resourc": [2, 3, 5, 14, 23], "conflict": [2, 4, 6], "resourcemanag": [2, 8], "take": [2, 6, 8, 14, 20, 23, 33, 35, 41, 43], "state": [2, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 22, 23, 24, 25, 26, 27, 28, 29, 34, 35, 37, 41, 42], "avail": [2, 4, 7, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 41, 44], "enabl": [2, 4, 6, 7, 11, 14, 15, 16, 22, 31, 37, 48], "anymor": 2, "controllermanag": [2, 9], "implement": [2, 3, 4, 5, 6, 7, 9, 12, 13, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 35, 38, 43, 44, 48, 49, 50, 54], "systeminterfac": [2, 3, 5, 13, 24, 27], "granular": 2, "sensorinterfac": [2, 21, 25], "actuatorinterfac": [2, 21, 26], "abov": [2, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 34, 43], "choos": [2, 16, 48], "suitabl": [2, 7], "strategi": [2, 16, 43], "decid": 2, "which": [2, 3, 4, 5, 6, 7, 9, 14, 15, 16, 18, 22, 23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 37, 40, 41, 42, 43, 44, 46, 48, 49], "case": [2, 3, 5, 6, 7, 8, 16, 20, 27, 35, 41, 43, 44, 54], "mayb": [2, 8], "sens": [2, 4, 34, 37], "multipl": [2, 4, 7, 8, 12, 14, 16, 41, 42], "constructor": [2, 14, 27, 35], "initi": [2, 14, 27, 35, 43], "variabl": [2, 14, 27, 35, 42], "need": [2, 3, 4, 5, 6, 7, 8, 12, 14, 16, 18, 21, 22, 23, 24, 25, 26, 27, 28, 34, 35, 43], "commun": [2, 4, 6, 7, 14, 16, 18, 21, 22, 23, 24, 25, 27, 28, 53], "default": [2, 4, 8, 9, 13, 23, 30, 32, 38, 39, 40, 41, 42, 43, 44, 46, 48, 50], "configur": [2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 41, 42, 43, 44, 48], "paramet": [2, 3, 5, 7, 14, 16, 18, 22, 27, 35, 44], "pars": [2, 3, 5, 9, 10, 12], "urdf": [2, 7, 9, 12, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "snippet": 2, "hardwareinfo": [2, 27], "here": [2, 10, 14, 27, 35, 36, 44, 45, 51], "cross": [2, 41], "valu": [2, 4, 6, 12, 13, 14, 16, 18, 19, 20, 22, 24, 25, 27, 29, 35, 40, 41, 42, 44, 46, 48], "export_": 2, "_interfac": [2, 14], "joint_a2": 2, "extract": [2, 33, 49], "sensibl": 2, "stop": [2, 7, 8, 9, 11, 15, 18, 22, 23, 27, 33, 42, 49], "usual": [2, 4, 9, 13, 14, 27, 35], "includ": [2, 3, 5, 6, 11, 14, 15, 27, 35, 44, 53], "command": [2, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 38, 39, 42, 43, 45, 47, 50, 51, 54], "safe": [2, 27, 33, 35, 44, 49], "interrupt": [2, 9], "stream": [2, 7], "write": [2, 4, 7, 8, 9, 10, 20, 21, 22, 26, 34], "exchang": [2, 6, 18, 21, 22, 23, 24, 25, 26, 28, 54], "equival": [2, 27], "forget": [2, 4, 16, 44], "pluginlib_export_class": [2, 14, 16, 27, 35], "macro": [2, 4, 14, 16, 27, 35], "end": [2, 4, 11, 14, 27, 35, 42, 53], "cpp": [2, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "file": [2, 3, 4, 5, 6, 7, 9, 13, 14, 16, 31, 33, 35, 36, 44, 45, 51], "creat": [2, 3, 4, 5, 7, 9, 13, 14, 16, 27, 35], "xml": [2, 3, 5, 11, 14, 27, 35], "librari": [2, 4, 14, 15, 16, 30, 32, 34, 35, 48, 50], "pluginlib": [2, 3, 4, 5, 9, 14, 27, 35], "exampl": [2, 3, 4, 5, 6, 7, 8, 9, 13, 15, 22, 31, 36, 37, 41, 44, 45, 51, 54], "rrbotsystempositiononlyhardwar": [2, 4, 12, 15, 18, 20, 25], "excel": 2, "jointtrajectorycontrol": [2, 3, 5, 15, 18, 31, 44], "real": [2, 6, 7, 9, 13, 22, 35, 41, 42, 54], "critic": [2, 6], "mark": [2, 20], "controllerinterfac": [2, 4, 8, 15, 27, 35], "member": [2, 14, 27, 35, 43], "init": 2, "call": [2, 3, 4, 5, 8, 14, 22, 27, 35], "lifecycl": [2, 4, 7, 9, 11, 14, 27, 34], "declar": [2, 14, 27, 35], "state_interface_configur": [2, 27, 35], "command_interface_configur": [2, 27, 35], "design": [2, 4, 6, 7, 8, 27, 54], "updat": [2, 4, 8, 9, 16, 27, 34, 35, 44, 48], "manag": [2, 3, 5, 6, 7, 10, 11, 14, 15, 16, 27, 35, 44, 54], "option": [2, 3, 5, 9, 11, 13, 14, 15, 18, 23, 34, 35, 37, 41, 44, 48], "on_configur": [2, 14, 27, 35], "on_activ": [2, 11, 14, 27, 35], "on_deactiv": [2, 11, 14, 27, 35], "deactiv": [2, 4, 15, 18, 42], "final": [2, 7, 11, 27], "joint_trajectory_plugin": 2, "integr": [3, 4, 5, 6, 7, 13, 16, 20, 22, 27, 42, 43, 44, 54], "architectur": [3, 5, 6, 7], "gazebo": [3, 5, 6, 16, 18, 29, 52], "classic": [3, 16, 29, 52], "provid": [3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 16, 18, 20, 23, 24, 25, 26, 27, 28, 29, 31, 35, 41, 42, 43, 44, 48, 54], "instanti": [3, 5, 9], "connect": [3, 4, 5, 13, 16, 24, 27], "model": [3, 5, 18, 27], "cd": [3, 4, 5, 16, 27], "docker": [3, 5, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29], "gui": [3, 5, 16, 18, 20, 21, 23, 24, 25, 26, 28, 29, 47], "properli": [3, 5, 8, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "rm": [3, 4, 5, 16, 18, 29], "net": [3, 5, 7, 16, 18, 29], "host": [3, 5, 16, 18, 29, 53], "ros2": [3, 4, 5, 7, 9, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "launch": [3, 4, 5, 9, 13, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "cart_example_posit": [3, 5], "py": [3, 5, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "fals": [3, 5, 13, 16, 18, 29, 33, 39, 41, 42, 44, 48], "machin": [3, 4, 5, 6, 16, 29], "client": [3, 5, 29, 44], "gzclient": [3, 29], "rocker": [3, 5], "go": [3, 5, 7, 9, 14, 27, 35], "imag": [3, 5, 9, 29], "inject": [3, 5, 7], "nvidia": [3, 5], "And": 3, "user": [3, 5, 6, 9, 16, 27, 43], "id": [3, 5, 15, 18, 21, 22, 23, 24, 25, 26, 28], "specif": [3, 5, 6, 8, 9, 11, 12, 27, 29, 38, 41, 43, 44], "cleaner": [3, 5], "mount": [3, 5], "permiss": [3, 5, 9], "instal": [3, 5, 9, 14, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "instruct": [3, 5, 22, 27, 29], "x11": [3, 5], "latest": [3, 4, 5], "move": [3, 5, 16, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 39], "cart": [3, 5], "rail": [3, 5], "exec": [3, 5, 18], "bash": [3, 4, 5, 14, 16, 18, 27, 35], "home": [3, 5], "ros2_w": [3, 4, 5, 16], "example_posit": [3, 5], "element": [3, 5, 27], "access": [3, 4, 5, 7, 9, 13, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 41], "interfac": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 18, 20, 21, 22, 24, 25, 26, 29, 30, 32, 34, 35, 37, 40, 42, 43, 46, 50, 52, 53, 54], "gazebosystem": 3, "hardwar": [3, 5, 7, 8, 10, 13, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 33, 34, 35, 42, 49, 54], "slider_to_cart": [3, 5, 36, 45, 51], "command_interfac": [3, 4, 5, 12, 20, 27, 31, 42, 44], "param": [3, 4, 5, 9, 12, 13, 22, 27], "min": [3, 4, 5, 12, 27], "1000": [3, 5, 27], "max": [3, 4, 5, 12, 27, 39], "state_interfac": [3, 4, 5, 12, 27, 31, 42, 44], "initial_valu": [3, 5, 27], "mimick": [3, 5, 13], "manual": [3, 4, 5, 6, 9, 14, 16, 18, 23, 24, 25, 26, 28, 29, 35, 54], "multipli": [3, 5, 13], "definit": [3, 4, 5, 9, 14, 27, 31, 33, 34, 35, 37, 42], "left_finger_joint": [3, 5], "prismat": [3, 5], "right_finger_joint": [3, 5], "axi": [3, 5, 6, 27, 30, 32, 33, 37, 50], "xyz": [3, 5, 27], "rpy": [3, 5, 27], "1415926535": [3, 5], "parent": [3, 5, 14, 27, 35], "base": [3, 4, 5, 7, 11, 14, 15, 16, 21, 22, 26, 27, 33, 35, 38, 48, 49, 52], "child": [3, 5, 12, 27], "finger_left": [3, 5], "lower": [3, 5, 27], "upper": [3, 5, 27], "actual": [3, 5, 8], "load": [3, 4, 5, 9, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 34, 35], "appropri": [3, 5, 6, 43], "By": [3, 5, 9, 27, 41, 43], "though": [3, 5, 20], "extens": [3, 5], "via": [3, 4, 5, 16, 18, 24, 25, 27, 29, 44], "between": [3, 4, 5, 6, 11, 12, 16, 27, 30, 32, 41, 42, 43, 44, 50], "filenam": [3, 5, 27], "libgazebo_ros2_control": 3, "so": [3, 4, 5, 8, 9, 14, 27, 31, 35, 44], "robot_param": [3, 5], "robot_descript": [3, 5, 9, 18, 27], "robot_param_nod": [3, 5], "robot_state_publish": [3, 5, 41], "config": [3, 5, 16], "cartpole_control": [3, 5], "yaml": [3, 4, 5, 6, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 44], "locat": [3, 27, 31], "server": [3, 39, 44], "node": [3, 4, 5, 9, 11, 13, 15, 18, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "attempt": [3, 5, 9, 44], "get": [3, 5, 7, 8, 9, 11, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 43, 54], "most": [3, 5, 6, 14, 16, 27, 35], "least": [3, 5, 12, 14, 35, 44], "jointstateinterfac": [3, 5], "effortjointinterfac": [3, 5], "velocityjointinterfac": [3, 5], "complex": [3, 4, 5, 6, 7, 8], "mechan": [3, 5, 8, 44], "nonlinear": [3, 5], "spring": [3, 5], "linkag": [3, 5, 18, 20, 28], "etc": [3, 5, 9, 23, 27, 54], "These": [3, 5, 16, 27], "inherit": [3, 5, 9, 27], "gazebosysteminterfac": 3, "level": [3, 5, 6, 7, 9, 20, 21, 26, 36, 43, 45, 51], "properti": [3, 5, 27], "sub": [3, 5], "class": [3, 4, 5, 7, 9, 11, 14, 15, 27, 35, 38, 43], "specifi": [3, 5, 9, 14, 16, 27, 34, 35, 42, 43, 44], "insid": [3, 5, 13, 16, 18], "publish": [3, 5, 6, 8, 12, 16, 19, 27, 31, 34, 37, 40, 41, 43, 46, 49, 54], "stateinterfac": [3, 5, 27], "topic": [3, 5, 6, 7, 8, 12, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 34, 44, 52], "sensor_msg": [3, 5, 40, 46], "msg": [3, 5, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 33, 36, 37, 38, 40, 43, 44, 45, 46, 48, 51], "jointstat": [3, 5], "joint_state_control": [3, 5, 15], "ros__paramet": [3, 5, 36, 44, 45, 51], "jointstatecontrol": [3, 5, 15], "action": [3, 5, 8, 42], "cart_pole_control": [3, 5], "follow_joint_trajectori": [3, 5, 44], "followjointtrajectori": [3, 5, 42, 44], "joint_trajectory_control": [3, 5, 6, 15, 18, 34, 47], "write_op_mod": [3, 5], "contain": [3, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 36, 42, 43, 45, 48, 51], "content": [3, 14, 27, 35], "There": [3, 4, 5, 9, 11, 14, 16, 21, 24, 25, 26, 35, 43, 44], "meter": [3, 5, 27], "cart_example_veloc": [3, 5], "cart_example_effort": [3, 5], "diff_driv": 3, "tricycle_dr": 3, "world": [3, 5, 9, 13, 27], "example_veloc": [3, 5], "example_effort": [3, 5], "example_diff_dr": [3, 5], "example_tricycle_dr": [3, 5], "parallel": [3, 4, 5, 12, 13], "gripper_mimic_joint_exampl": [3, 5], "send": [3, 5, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 43, 44], "example_gripp": [3, 5], "iron": [4, 16, 27], "want": [4, 8, 9, 16], "download": [4, 16], "mkdir": [4, 16], "p": [4, 9, 16, 42], "src": [4, 14, 16, 18, 27, 29, 31, 35], "wget": 4, "raw": 4, "githubusercont": 4, "com": [4, 6, 16, 27], "org": [4, 6, 30, 32, 50], "ros_control": [4, 6, 7, 54], "vc": [4, 16], "import": [4, 14, 16, 27, 35, 42], "rosdep": [4, 16], "rosdistro": [4, 16], "sudo": [4, 9, 16], "apt": [4, 16], "path": [4, 7, 16, 27, 44], "ignor": [4, 9, 16, 33, 42, 48, 49], "r": [4, 16, 28], "y": [4, 16, 22, 24, 25, 31, 37, 40], "everyth": [4, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 35], "opt": [4, 16, 18], "setup": [4, 13, 14, 16, 18, 22, 27, 29, 35, 43], "sh": [4, 16, 18, 29], "colcon": [4, 14, 16, 27, 35], "symlink": [4, 16, 27], "folder": [4, 7, 14, 16, 18, 19, 22, 30, 31, 32, 35, 48, 50], "found": [4, 9, 10, 14, 18, 19, 22, 31, 33, 35, 38, 44, 54], "github": [4, 6, 10, 16, 27, 34, 52, 53, 54], "figur": [4, 43], "uml": 4, "diagram": [4, 15], "intern": [4, 6, 8, 12, 14, 18, 20, 21, 22, 23, 24, 25, 26, 28, 31, 43, 44], "cm": [4, 9], "abstract": [4, 7, 11, 27], "side": [4, 6, 7], "entri": [4, 35], "point": [4, 27, 35, 42, 43, 44, 54], "servic": [4, 6, 9, 11, 27, 34], "executor": [4, 9], "custom": [4, 12, 13, 16, 21, 22, 37, 41, 52], "howev": [4, 6, 8, 9, 16, 20, 27], "recommend": [4, 7, 14], "ros2_control_nod": [4, 23, 27], "controller_manag": [4, 5, 6, 9, 15, 23, 34, 35, 36, 44, 45, 51], "assum": [4, 8], "On": [4, 27], "hand": [4, 27, 53], "unload": [4, 9, 15], "match": [4, 16, 43], "report": [4, 6, 41, 54], "error": [4, 6, 9, 14, 20, 23, 27, 35, 41, 42, 44], "execut": [4, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 35, 39, 42, 43, 44, 50], "loop": [4, 7, 9, 13, 18, 23, 24, 25, 26, 27, 28, 29, 35, 41, 42, 44, 48], "output": [4, 6, 7, 12, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 37], "driver": [4, 7, 16, 27, 53], "reus": [4, 7, 8], "flexibl": 4, "motor": [4, 8, 53], "encod": [4, 27], "theori": [4, 54], "compar": [4, 6, 7], "refer": [4, 8, 20, 27, 53], "measur": [4, 13, 21, 31, 37, 41, 42, 53], "calcul": [4, 27, 31, 43, 48], "input": [4, 6, 7, 8, 12, 19, 20, 27, 31, 33, 36, 38, 42, 43, 45, 48, 49, 51], "object": [4, 27], "deriv": [4, 42, 43], "controller_interfac": [4, 15, 27, 31, 35, 37, 40, 46], "export": [4, 8, 9, 14, 16, 27, 31, 35], "plugin": [4, 9, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 35, 47], "forwardcommandcontrol": [4, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29], "lifecyclenod": 4, "document": [4, 6, 7, 12, 13, 14, 16, 22, 33, 34, 43, 44], "interact": [4, 7, 9, 15, 19, 27, 29], "srv": [4, 44], "controller_manager_msg": 4, "while": [4, 6, 7, 27, 43], "directli": [4, 18, 20, 29, 54], "line": [4, 10, 11, 14, 18, 27, 35, 41, 43], "friendli": 4, "cli": [4, 9, 10, 15, 18, 19, 22, 23, 24, 25, 26, 28, 29], "auto": [4, 9], "complet": [4, 11, 20, 27, 43], "rang": [4, 12, 34], "common": [4, 6, 16, 41, 54], "capabl": [4, 6], "realiz": [4, 7, 43, 44], "repres": [4, 11, 27, 33, 34, 43], "dynam": [4, 14, 27, 35], "dof": [4, 12, 16, 27, 39], "differ": [4, 6, 7, 12, 14, 16, 18, 19, 22, 23, 27, 36, 37, 41, 43, 45, 48, 51], "transmiss": [4, 16], "humanoid": 4, "logic": 4, "channel": [4, 53], "kuka": [4, 18, 23, 24, 25, 53], "rsi": [4, 18, 24, 25, 53], "relat": [4, 6, 7], "forc": [4, 7, 12, 15, 24, 25, 31, 34, 53], "torqu": [4, 12, 24, 25, 31, 34], "simpl": [4, 6, 7, 8, 14, 16, 18, 20, 22, 27, 28, 35, 39], "valv": [4, 12], "mandatori": [4, 9, 37, 42], "dc": 4, "arduino": [4, 21, 26], "board": 4, "modular": [4, 7, 16, 27], "independ": [4, 7, 25], "explan": [4, 9, 14], "given": [4, 9, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 36, 42, 43, 44, 45, 51], "through": [4, 6, 7, 8, 9, 14, 15, 16, 20, 27, 35, 44, 54], "tag": [4, 9, 12, 14, 16, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 35, 54], "chosen": [4, 12], "structur": [4, 6, 8, 9, 14, 27, 33, 35, 42, 43], "track": [4, 30, 50, 54], "togeth": [4, 8, 12, 22, 24, 48], "xacro": [4, 9, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "hereund": 4, "rrbot": [4, 12, 15, 16, 19, 21, 23, 24, 25, 26, 28], "effector": [4, 53], "site": 4, "rrbotsystempositiononli": [4, 25], "ros2_control_demo_hardwar": [4, 12, 15], "example_param_write_for_sec": 4, "example_param_read_for_sec": [4, 12], "joint1": [4, 12, 13, 15, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 44], "joint2": [4, 12, 15, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 44], "rrbotforcetorquesensor1d": 4, "forcetorquesensor1dhardwar": 4, "tcp_fts_sensor": [4, 12, 24, 25], "frame_id": [4, 12, 24, 25, 37, 40, 46, 48], "rrbot_tcp": 4, "min_forc": 4, "100": [4, 12, 36, 45, 51], "max_forc": 4, "rrbotgripp": 4, "positionactuatorhardwar": 4, "gripper_joint": 4, "instead": [4, 13, 22, 27, 29, 42], "pure": 4, "stack": [4, 7, 54], "could": [4, 7, 8, 16, 23, 35, 41, 44], "altern": [4, 18, 44], "script": [4, 6, 14, 35], "skeleton": 4, "sim": [5, 15, 52], "dockerfil": [5, 16], "Then": [5, 8, 16, 27, 29, 43], "ign": 5, "meet": [5, 54], "prerequisit": 5, "along": 5, "gazebosimsystem": 5, "libgz_ros2_control": 5, "gazebosimros2controlplugin": 5, "gazebosimsysteminterfac": 5, "controller_manager_prefix_node_nam": 5, "diff_drive_exampl": 5, "tricycle_drive_exampl": 5, "about": [6, 8, 13, 14, 23, 33, 40, 41, 44, 54], "gener": [6, 7, 12, 14, 15, 21, 22, 23, 24, 25, 26, 27, 34, 35, 44, 48, 54], "task": [6, 7, 33], "envis": 6, "simul": [6, 13, 15, 16, 18, 20, 22, 24, 25, 27], "ignit": 6, "showcas": [6, 7], "grace": 6, "degrad": 6, "roadmap": [6, 16, 54], "place": [6, 35], "draft": 6, "gpio": [6, 16, 27], "mode": [6, 8, 14, 20, 23, 31, 42, 43, 48], "switch": [6, 15, 16, 18, 23], "movement": 6, "safeti": [6, 27], "skill": 6, "prefer": 6, "c": [6, 9, 12, 14, 15, 18, 27], "familiar": [6, 54], "mentor": 6, "\u0161togl": [6, 7], "size": [6, 46], "350": 6, "hour": 6, "difficulti": 6, "medium": 6, "focus": [6, 7, 8], "although": [6, 8, 11, 12, 44], "easi": 6, "therefor": [6, 8, 9, 16, 35, 41, 42, 44], "often": [6, 13, 22, 35, 41], "orchestr": 6, "purpos": [6, 18, 20, 21, 23, 24, 25, 26, 27, 28, 29], "conductor": 6, "scenario": [6, 43], "moment": [6, 8, 44], "right": [6, 16], "replac": [6, 11, 34, 44], "high": [6, 9, 43], "moveit2": [6, 7, 34, 53], "simplecontrollermanag": 6, "goal": [6, 7, 12, 18, 23, 24, 25, 26, 28, 29, 39, 42, 44, 54], "form": [6, 16], "behavior": [6, 13, 27, 43], "benchmark": 6, "statu": [6, 8, 11, 15, 18, 42], "format": [6, 27, 31, 41, 44], "preset": 6, "modul": [6, 20], "reli": 6, "doubl": [6, 13, 18, 27, 30, 32, 39, 42, 46, 48, 50], "desir": [6, 42, 44], "both": [6, 7, 20, 27, 28, 41, 42, 43, 44], "improv": 6, "readabl": [6, 27], "earlier": 6, "concept": [6, 7, 8, 13, 16, 18], "introduc": [6, 7, 8, 18, 27], "essenti": [6, 18], "group": [6, 8, 9, 12, 44, 54], "instanc": [6, 9, 20, 41], "imu": [6, 12, 34], "typic": [6, 12, 22, 41, 42], "acceleromet": 6, "gyroscop": 6, "compass": 6, "Such": [6, 20], "struct": 6, "low": [6, 7], "profil": 6, "relev": [6, 42, 48, 54], "addition": [6, 27, 30, 32, 50, 54], "few": [6, 7, 34], "175": 6, "rewrit": [6, 54], "rich": 6, "wa": [6, 14, 18, 22, 23, 27, 35, 43], "motiv": 6, "adopt": 6, "port": [6, 11, 12], "quit": 6, "miss": [6, 41, 43, 44], "diff_drive_control": [6, 8, 15, 22], "consist": [6, 44, 54], "onc": [6, 7, 18, 22, 23, 24, 25, 27, 28, 34], "identifi": [6, 27], "much": [6, 8, 18, 21, 22, 23, 24, 25, 26, 28, 35, 44], "303": 6, "304": 6, "stretch": 6, "81": 6, "302": 6, "unit": 6, "gmock": 6, "cc": [7, 43, 44], "BY": [7, 43, 44], "licens": [7, 43, 44], "author": [7, 8], "either": [7, 18, 23, 24, 25, 26, 28, 29, 43], "down": [7, 27], "below": [7, 9, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 42, 43, 44], "compani": 7, "my": 7, "company_nam": 7, "tricycl": [7, 34, 49], "control": [7, 10, 11, 12, 13, 14, 15, 16, 30, 32, 37, 40, 41, 42, 43, 46, 49, 50, 53, 54], "event": 7, "pixel": 7, "prefac": 7, "introduct": 7, "plapp": 7, "kernel": [7, 9], "agnost": [7, 27], "share": [7, 14, 27, 29, 35, 48], "well": [7, 9, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 44], "perform": [7, 9, 27], "heavi": 7, "stogl": 7, "consult": 7, "practition": 7, "guid": [7, 14, 35], "top": 7, "virtual": [7, 8, 32], "talk": 7, "delv": 7, "deeper": 7, "what": [7, 18, 27], "explicit": [7, 9, 27, 42], "chain": [7, 10, 15, 16, 27, 31, 42, 48], "emerg": 7, "handler": 7, "mock": [7, 10, 14], "usag": [7, 8, 9, 12, 15, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28], "openli": 7, "record": 7, "fiveai": 7, "ltd": 7, "best": [7, 9, 35], "focu": [7, 8], "becom": [7, 20], "util": 7, "3rd": 7, "parti": 7, "nav2": [7, 34], "practic": 7, "tip": [7, 27], "hot": 7, "shown": [7, 27, 43], "furthermor": [7, 22], "offer": [7, 9, 14, 27], "expos": [7, 16, 20], "problem": [7, 54], "manipul": [7, 16, 18, 20, 27, 28, 42], "plan": [7, 54], "autonom": 7, "navig": 7, "ideal": [7, 13], "made": [7, 11], "mobil": [7, 16, 22, 33, 48, 49], "arm": [7, 18, 20, 28], "extra": [7, 27, 41], "readi": [7, 14, 16, 20, 34, 35], "studi": 7, "ur": 7, "With": [7, 27, 29, 44], "moveit": [7, 13], "ingredi": 7, "run": [7, 8, 9, 13, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 34, 43, 48], "scale": [7, 42], "factor": 7, "teach": 7, "pendant": 7, "influenc": 7, "picknik": 7, "inc": 7, "lovro": 7, "ivanov": 7, "zelenak": 7, "rune": 7, "s\u00f8e": 7, "knudsen": 7, "onlin": [7, 14, 35], "trajectori": [7, 18, 27, 34, 42, 54], "admitt": [7, 34], "One": [7, 8], "reason": [7, 8, 9, 27], "upgrad": 7, "ros1": [7, 16], "better": 7, "realtim": [7, 9, 27, 33, 44, 49, 54], "contact": 7, "insert": 7, "singl": [7, 24, 39], "waypoint": [7, 43, 44], "mani": [7, 27, 34, 35], "teleoper": 7, "involv": 7, "kinemat": [7, 8, 16, 22, 27, 30, 31, 32, 48, 50], "acceler": [7, 16, 23, 27, 31, 33, 40, 42, 43, 44, 49], "jerk": [7, 33, 49], "obei": [7, 27], "demo": [7, 12], "booth": 7, "zeleank": 7, "unifi": 7, "life": [7, 27], "cycl": [7, 27, 34], "_control": [7, 16], "wild": 7, "materi": 7, "quick": [7, 11], "overview": 7, "layer": 7, "aka": 7, "systemcompon": 7, "forward": [7, 13, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 34, 42, 44, 54], "done": [7, 8, 14, 18, 21, 22, 23, 24, 25, 26, 27, 28, 34, 35], "look": [7, 22], "modifi": 7, "simpli": [7, 9, 18, 43, 44], "edit": 7, "collect": [7, 36, 45, 51], "semant": [7, 12, 31, 37, 40, 46], "monolit": 7, "controlko": 7, "propos": [8, 54], "minim": [8, 54], "viabl": [8, 27], "serial": [8, 27], "tri": [8, 42], "clariti": 8, "arbitrari": [8, 27, 44], "order": [8, 27], "nevertheless": 8, "convinc": 8, "would": [8, 41], "unnecessari": 8, "long": 8, "term": [8, 54], "clearer": 8, "let": [8, 16, 18, 20, 21, 22, 23, 24, 25, 26, 28], "yet": [8, 9, 16, 20, 33, 43, 44], "controllers_chain": 8, "doc": [8, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 54], "position_track": 8, "pid": [8, 42, 43, 44, 54], "now": [8, 9, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 43], "imagin": 8, "flexibli": 8, "preced": 8, "step": [8, 14, 16, 35, 43, 54], "At": [8, 14, 20, 35], "attach": 8, "disabl": [8, 13, 48], "subscrib": [8, 19, 20, 27], "differenti": [8, 16, 22, 32, 33, 34, 54], "interfaceconfigur": [8, 27], "input_interface_configur": 8, "const": [8, 11, 27], "anoth": [8, 9, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 44], "simplic": [8, 27], "try": [8, 27], "exclus": [8, 27], "rather": [8, 16, 43], "void": 8, "set_chained_mod": 8, "bool": [8, 39, 42, 48], "flag": [8, 14, 35, 42], "on_set_chained_mod": 8, "pid_refer": 8, "controller_nam": [8, 9, 15, 31, 35, 44, 48], "v_x": 8, "v_y": 8, "w_z": 8, "cmd_vel": [8, 33], "cmd_vel_unstamp": [8, 22, 33], "Its": [8, 54], "continu": [8, 42, 43, 44], "chainabl": [8, 16, 20, 33, 44], "ownership": 8, "process": [8, 14, 27, 35, 43], "claim": [8, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "vector": [8, 20, 27, 35], "invers": [8, 27], "rule": [8, 9, 14, 35], "think": [8, 16], "break": [8, 13], "middl": [8, 32], "unavail": [8, 20], "anyth": 8, "confus": 8, "irelev": 8, "feasibl": 8, "interface_configuration_typ": 8, "littl": 9, "jitter": 9, "normal": [9, 27, 42], "linux": 9, "comput": [9, 16, 33, 48, 49], "throughput": 9, "suit": 9, "easiest": [9, 14, 35], "ubuntu": 9, "lt": 9, "beta": 9, "rt": 9, "amd64": 9, "debian": 9, "bullsey": 9, "thread": [9, 27], "sched_fifo": 9, "prioriti": 9, "addgroup": 9, "usermod": 9, "whoami": 9, "afterward": 9, "secur": 9, "conf": [9, 27], "soft": 9, "rtprio": 9, "memlock": 9, "102400": 9, "appli": [9, 15, 27, 33, 44], "log": 9, "again": [9, 11, 18, 22, 27], "hardware_components_initial_st": 9, "map": [9, 13, 41, 44], "attribut": [9, 27], "full": [9, 14, 16, 35], "unconfigur": [9, 11, 18, 27], "arm1": 9, "arm2": 9, "inact": [9, 15, 18, 23, 27, 34], "base3": 9, "empti": [9, 35, 40, 44, 48], "update_r": [9, 34, 36, 45, 51], "integ": [9, 34], "frequenc": [9, 34], "startup": 9, "h": [9, 14, 15, 35], "param_fil": 9, "n": 9, "namespac": [9, 14, 27, 34, 35, 41], "controller_typ": 9, "timeout": [9, 15, 39, 42, 48, 49], "controller_manager_timeout": 9, "argument": [9, 14, 15, 18, 21, 22, 23, 24, 25, 26, 28], "exit": [9, 15], "leav": 9, "kill": [9, 15, 27], "wait": [9, 15, 26, 42], "until": [9, 27, 42, 43], "mai": [9, 11, 24, 34, 36, 45, 51], "taken": [9, 48], "becaus": [9, 12, 18, 20, 21, 22, 23, 24, 25, 26, 28, 43], "rclcpp": [9, 14, 27, 35], "than": [9, 39, 42, 44, 48], "global": 9, "remap": 9, "forcibli": 9, "lead": [9, 44], "duplic": [9, 48], "occur": [9, 27], "whether": 9, "sibl": 9, "hierarchi": 9, "workaround": 9, "nodeopt": 9, "pass": [9, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28], "caus": [9, 43, 44, 48], "get_cm_node_opt": 9, "arg": 9, "_target_node_nam": 9, "__node": 9, "dst_node_nam": 9, "std": [9, 27, 42], "make_shar": 9, "some_optional_namespac": 9, "simplest": 9, "switch_control": [9, 18], "broadcast": [9, 12, 13, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 41], "achiev": [9, 27, 36, 45, 51], "return": [9, 11, 14, 18, 27, 35, 39, 41, 43], "NOT": 9, "FOR": 9, "detect": 9, "listen": [9, 42], "doxygen": [10, 14], "cascad": 10, "return_typ": [11, 27, 35], "on_error": [11, 14, 27], "previous_st": [11, 27], "success": [11, 14, 27, 35, 39], "callbackreturn": [11, 14, 27], "failur": 11, "recov": 11, "reload": [11, 15], "substanti": 11, "renam": 11, "on_init": [11, 14, 27, 35], "baseinterfac": 11, "remov": 11, "base_interfac": 11, "hpp": [11, 14, 16, 27, 31, 35], "hardware_interface_status_valu": 11, "rclcpp_lifecycl": [11, 14, 27, 35], "strictli": [11, 12], "status_": 11, "in_deactiv": 11, "undefin": 11, "refern": 11, "symbol": 11, "node_interfac": [11, 27], "lifecyclenodeinterfac": [11, 14, 27], "rclcpp_lifecyl": 11, "cmakelist": [11, 14, 27, 35], "txt": [11, 14, 27, 35], "devic": [12, 53], "associ": 12, "joint_state_broadcast": [12, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "coupl": 12, "ship": 12, "cannot": [12, 20, 27, 44], "keyword": 12, "digit": 12, "signal": 12, "electr": 12, "analog": 12, "within": [12, 18], "vacuum": [12, 19], "flang": 12, "off": 12, "rrbotsystemmutiplegpio": 12, "example_param_hw_start_duration_sec": 12, "example_param_hw_stop_duration_sec": 12, "example_param_hw_slowdown": 12, "flange_digital_io": 12, "digital_output1": 12, "know": 12, "digital_output2": 12, "digital_input1": 12, "digital_input2": 12, "flange_analog_io": [12, 19], "analog_output1": [12, 19], "analog_input1": [12, 19], "analog_input2": [12, 19], "flange_vacuum": [12, 19], "suction": 12, "grasp": 12, "multimod": 12, "multimodalgripp": 12, "parallel_fing": 12, "temperatur": [12, 16], "feedback": [12, 13, 21, 41, 42, 44, 48, 49], "adjust": [12, 15, 18, 27], "calibr": 12, "2d": [12, 24, 25], "ft": [12, 24, 25, 37], "choic": [12, 48], "matric": 12, "rrbotforcetorquesensor2d": 12, "forcetorquesensor2dhardwar": 12, "fx": 12, "tz": 12, "kuka_tcp": 12, "fx_rang": 12, "tz_rang": 12, "temp_feedback": 12, "calibration_matrix_nr": 12, "mirror": 13, "correspond": [13, 14, 27, 35, 48, 54], "offlin": 13, "advantag": 13, "pipe": 13, "even": [13, 20, 44], "debug": 13, "boost": 13, "mimic": 13, "offset": [13, 41, 42], "fake": 13, "disable_command": 13, "boolean": [13, 34, 41, 42], "erron": [13, 27], "noth": 13, "suddenli": 13, "Or": [13, 18, 23, 24, 25, 26, 28, 29], "mock_sensor_command": 13, "position_state_following_offset": 13, "custom_interface_with_following_offset": 13, "compil": [14, 27, 29, 35], "prepar": [14, 23, 35], "ament_cmak": [14, 35], "search": [14, 35], "recent": [14, 35], "pkg": [14, 35], "package_nam": [14, 35], "alreadi": [14, 15, 16, 18, 20, 27, 29, 34, 35, 44], "robot_hardware_interface_nam": 14, "visibility_control": [14, 35], "window": [14, 35], "copi": [14, 35], "prefix": [14, 31, 35, 37, 40, 46], "guard": [14, 35], "ifndef": [14, 35], "preprocessor": [14, 35], "engin": [14, 35], "friend": [14, 35], "interface_typ": [14, 35], "uniqu": [14, 27, 35], "written": [14, 21, 26, 27, 35], "snake_cas": [14, 35], "interfacetyp": 14, "hardwareinterfacenam": 14, "public": [14, 27, 35], "on_cleanup": [14, 27], "on_shutdown": [14, 27], "overrid": [14, 27, 35, 36, 44, 45, 51], "export_state_interfac": [14, 27], "export_command_interfac": [14, 27], "prepare_command_mode_switch": 14, "perform_command_mode_switch": 14, "further": [14, 35], "exact": [14, 35], "simplifi": [14, 27, 35, 54], "valid": [14, 16, 46], "fine": [14, 22, 35], "otherwis": [14, 16, 35, 41, 42], "opposit": [14, 35], "remind": 14, "joint_nam": [14, 31, 35, 42], "shutdown": [14, 27], "gracefulli": 14, "store": [14, 35], "close": [14, 35], "class_list_macro": [14, 27, 35], "my_hardware_interface_packag": 14, "robothardwareinterfacenam": 14, "second": [14, 15, 18, 20, 23, 24, 25, 26, 27, 28, 29, 35, 43, 54], "visibl": [14, 35], "mock_compon": [14, 22], "bottom": [14, 27, 35], "test_load_": [14, 35], "load_generic_system_2dof": 14, "test_generic_system": 14, "find_packag": [14, 35], "directori": [14, 35], "ament": [14, 35], "cmake": 14, "pluginlib_export_plugin_description_fil": [14, 27, 35], "ament_cmake_gmock": [14, 35], "ament_add_gmock": [14, 35], "ament_export_librari": [14, 35], "ament_packag": [14, 35], "test_depend": [14, 35], "rememb": [14, 35], "root": [14, 35], "workspac": [14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "enjoi": [14, 35], "great": [14, 35], "templat": [14, 16, 27, 35], "shell": [14, 35], "onward": 14, "spin": 15, "spin_tim": 15, "hidden": 15, "discoveri": 15, "daemon": 15, "test_controller_nam": 15, "test_control": 15, "diffdrivecontrol": [15, 22], "verbos": 15, "label": [15, 21, 22, 24, 25, 26, 43], "unclaim": [15, 20, 23], "ctrl1": 15, "ctrl2": 15, "strict": 15, "asap": 15, "switch_timeout": 15, "tmp": 15, "controller_diagram": 15, "gv": 15, "pdf": [15, 27], "demonstr": [16, 18, 20, 22, 23, 28, 29], "prove": 16, "checkout": 16, "roscon2022_workshop": 16, "hardwareinterfac": [16, 27], "diffbot": 16, "degre": [16, 27, 44, 48], "freedom": [16, 27, 48], "components_architecture_and_urdf_exampl": 16, "revolut": [16, 18, 20, 27, 28], "drive": [16, 22, 30, 32, 33, 34, 48, 49, 50, 54], "accord": [16, 22, 27], "intermedi": 16, "car": 16, "steer": [16, 30, 32, 34, 48, 49, 50], "tba": 16, "tabl": 16, "offici": [16, 53], "easili": 16, "aptitud": 16, "might": [16, 43], "own": [16, 18, 27], "git": [16, 27], "clone": [16, 27], "b": [16, 27], "merg": 16, "f": 16, "procedur": 16, "rviz2": [16, 18, 29], "visual": [16, 18, 25, 27, 41], "joint_state_publisher_gui": [16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "bring": 16, "ros2_control_demo_example_1": [16, 18], "view_robot": [16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "omit": 16, "termin": [16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "example_1": [16, 18, 19, 20, 29], "rviz": [16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 41], "slider": 16, "around": [16, 37, 40, 42, 46], "ros2_control_demo_example_2": [16, 22], "come": [16, 44], "categori": 16, "individu": [16, 35, 46], "position_in_degre": 16, "hardware_interface_type_valu": [16, 31], "6dof": 16, "variou": [18, 28], "invert": 18, "pendulum": 18, "fun": 18, "proprietari": [18, 21, 22, 23, 24, 25, 26, 28], "view": [18, 27], "recreat": 18, "robotmodel": 18, "displai": [18, 20, 21, 23, 24, 25, 26, 28, 29], "ros2_control_demo_descript": 18, "ok": [18, 21, 22, 23, 24, 25, 26, 27, 28, 35], "warn": [18, 21, 22, 23, 24, 25, 26, 28, 41], "invalid": [18, 21, 22, 23, 24, 25, 26, 28], "frame": [18, 21, 22, 23, 24, 25, 26, 27, 28, 37], "odom": [18, 21, 22, 23, 24, 25, 26, 28, 33, 48], "cantransform": [18, 21, 22, 23, 24, 25, 26, 28], "target_fram": [18, 21, 22, 23, 24, 25, 26, 28], "happen": [18, 21, 22, 23, 24, 25, 26, 27, 28], "ctrl": 18, "lot": [18, 20, 21, 22, 23, 24, 25, 26, 28], "exemplari": [18, 21, 23, 24, 25, 26, 28, 30, 32, 48, 50], "orang": [18, 20, 21, 22, 23, 24, 25, 26, 28, 29], "yellow": [18, 20, 21, 23, 24, 25, 26, 28, 29], "rectangl": [18, 20, 21, 23, 24, 25, 26, 28], "introspect": [18, 20, 21, 22, 23, 24, 25, 26, 28], "list_hardware_interfac": [18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "entrypoint": 18, "nomin": 18, "marker": [18, 20, 21, 22, 23, 24, 25, 26, 28, 29], "list_control": [18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "jointstatebroadcast": [18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "forward_position_control": [18, 19, 20, 23, 24, 25, 26, 28, 29], "forward_command_control": [18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 36, 45, 51], "pub": [18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "std_msg": [18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 36, 38, 45, 51], "float64multiarrai": [18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 36, 38, 45, 51], "everi": [18, 23, 24, 25, 26, 27, 28, 29, 34, 38, 42, 54], "test_forward_position_control": [18, 23, 24, 25, 26, 28, 29], "block": [18, 20, 21, 23, 24, 25, 26, 27, 28], "got": [18, 19, 20, 21, 22, 23, 24, 25, 26], "50000": [18, 20, 24, 25, 26], "echo": [18, 19, 20, 22, 24, 25, 29], "joint_stat": [18, 20, 22, 29, 41], "dynamic_joint_st": [18, 20, 29, 41], "load_control": 18, "joint_trajectory_position_control": 18, "successfulli": [18, 21, 26], "set_controller_st": 18, "rrbot_control": [18, 19, 20, 28, 29], "four": [18, 21, 30], "test_joint_trajectory_control": 18, "rrbot_joint_trajectory_publish": 18, "rrbot_descript": [18, 19, 20, 21, 23, 24, 25, 26, 28, 29], "rrbot_forward_position_publish": [18, 29], "ros2_control_demo_example_10": 19, "contrast": 19, "gpio_control": 19, "gpiocontrol": 19, "interface_nam": [19, 37, 38], "1199574016": 19, "1676318848": 19, "rrbotsystemwithgpiohardwar": 19, "gp": 19, "example_12": 20, "been": 20, "known": 20, "passthrough_control": 20, "ros2_control_demo_example_12": 20, "ident": [20, 22, 27, 29, 43], "joint2_position_control": 20, "passthroughcontrol": 20, "joint1_position_control": 20, "someth": 20, "automat": [20, 27, 29, 33, 49], "appear": 20, "whose": [20, 43], "henc": [20, 27], "launch_chained_control": 20, "position_control": [20, 34, 38], "streamlin": 20, "clearli": 20, "sent": [20, 42], "reflect": 20, "canopen_402": [21, 26], "modbu": [21, 26], "rs232": [21, 26], "rs485": [21, 26], "ros2_control_demo_example_14": 21, "rrbot_modular_actuators_without_feedback_sensors_for_position_feedback": 21, "list_hardware_compon": [21, 22, 24, 25, 26], "rrbotmodularjoint2": [21, 26], "rrbotactuatorwithoutfeedback": 21, "rrbotmodularjoint1": [21, 26], "rrbotmodularpositionsensorjoint2": 21, "rrbotsensorpositionfeedback": 21, "rrbotmodularpositionsensorjoint1": 21, "forward_velocity_control": [21, 23], "000000": 21, "00000": [21, 22, 23], "25300": 21, "rrbot_actuator_without_feedback": 21, "rrbot_sensor_for_position_feedback": 21, "example_2": 22, "excess": 22, "print": [22, 41], "left_wheel_joint": 22, "right_wheel_joint": 22, "diffbot_base_control": 22, "diff": 22, "geometry_msg": [22, 24, 25, 33, 37, 48], "twist": [22, 33, 48, 49], "linear": [22, 27, 33, 40, 43, 48, 49], "angular": [22, 33, 40, 48, 49], "circl": 22, "diffbotsystemhardwar": 22, "33333": 22, "faster": 22, "genericsystem": 22, "use_mock_hardwar": 22, "true": [22, 29, 33, 42, 43, 44, 48], "calculate_dynam": 22, "diffbot_control": 22, "diffbot_descript": 22, "diffbot_system": 22, "example_3": 23, "fri": [23, 53], "abb": [23, 53], "yumi": 23, "schunk": [23, 53], "lwa4p": 23, "illeg": 23, "declin": 23, "faulti": 23, "ros2_control_demo_example_3": 23, "rrbot_system_multi_interfac": 23, "robot_control": [23, 27], "spawn": 23, "forward_acceleration_control": 23, "velocity_control": [23, 34, 38], "jointgroupvelocitycontrol": 23, "rrbotsystemmultiinterfacehardwar": 23, "po": [23, 43], "78500": 23, "vel": [23, 48], "acc": 23, "control_lvl": 23, "forward_illegal1_control": 23, "forward_illegal2_control": 23, "1676209982": 23, "531163501": 23, "resource_manag": 23, "rrbotsystemmultiinterfac": 23, "did": 23, "531223835": 23, "sinc": [23, 27, 32], "reject": [23, 42, 43], "spawner": 23, "531717376": 23, "spawner_forward_illegal1_control": 23, "indic": [23, 27], "rrbot_multi_interface_forward_control": 23, "krc": 24, "prototyp": 24, "odri": [24, 53], "ros2_control_demo_example_4": 24, "rrbot_system_with_sensor": 24, "rrbotsystemwithsensor": 24, "rrbotsystemwithsensorhardwar": 24, "fts_broadcast": [24, 25], "force_torque_sensor_broadcast": [24, 25], "forcetorquesensorbroadcast": [24, 25], "wrench": [24, 25, 31], "republish": [24, 25], "wrenchstamp": [24, 25, 37], "stamp": [24, 25, 48], "sec": [24, 25], "1676444704": [24, 25], "nanosec": [24, 25], "332221422": [24, 25], "tool_link": [24, 25], "946532964706421": 24, "nan": [24, 42], "0540995597839355": 24, "rrbot_with_sensor_control": 24, "pc": 25, "3d": [25, 27], "ros2_control_demo_example_5": 25, "rrbot_system_with_external_sensor": 25, "externalrrbotftsensor": 25, "externalrrbotforcetorquesensorhardwar": 25, "2126582860946655": 25, "3202226161956787": 25, "4302282333374023": 25, "540233612060547": 25, "647800624370575": 25, "7602499723434448": 25, "rrbot_with_external_sensor_control": 25, "rrbot_system_position_onli": 25, "external_rrbot_force_torque_sensor": 25, "mara": 26, "ros2_control_demo_example_6": 26, "rrbot_modular_actu": 26, "rrbotmodularjoint": 26, "rrbot_actu": 26, "queri": [27, 44], "enhanc": 27, "deploi": 27, "oper": [27, 54], "pattern": 27, "vendor": 27, "runtim": 27, "program": 27, "conform": 27, "newest": 27, "characterist": 27, "tree": [27, 33], "primari": [27, 44], "commerci": 27, "scratch": 27, "illustr": 27, "stl": 27, "dae": 27, "coars": 27, "mesh": 27, "fast": [27, 53], "collis": 27, "express": 27, "vertic": 27, "transform": 27, "rotat": [27, 33, 42], "translat": [27, 33, 49], "proxim": 27, "face": 27, "co": 27, "planer": 27, "xy": 27, "plane": 27, "align": 27, "blender": 27, "begin": 27, "neg": [27, 42], "roll": 27, "pitch": 27, "yaw": 27, "repeat": 27, "robot_6_dof": 27, "base_link": [27, 48, 49], "link_0": 27, "inerti": 27, "mass": 27, "inertia": 27, "ixx": 27, "ixi": 27, "ixz": 27, "iyi": 27, "iyz": 27, "izz": 27, "tool0": 27, "base_joint": 27, "joint_1": 27, "link_1": 27, "061584": 27, "141592653589793": 27, "name_spac": 27, "class_nam": 27, "pi": [27, 42], "enclos": 27, "previous": 27, "left": 27, "zero": [27, 31, 42, 43], "rel": [27, 43], "center": 27, "uniform": 27, "consecut": 27, "motion": [27, 42], "subsequ": 27, "join": [27, 54], "speci": 27, "verifi": 27, "urdf_to_graphviz": 27, "r6bot": 27, "explain": 27, "robotsystem": 27, "ur5": 27, "five": 27, "hardware_interface_return_valu": 27, "hardware_interface_publ": 27, "commandinterfac": 27, "durat": 27, "period": [27, 42], "privat": 27, "memori": [27, 35], "alloc": 27, "establish": 27, "angl": [27, 32, 48], "notabl": 27, "vari": 27, "fill": 27, "field": [27, 41, 43], "suppos": [27, 43], "tcp_force_torque_sensor": 27, "Their": 27, "pointer": 27, "info_": 27, "state_interfaces_": 27, "nearli": 27, "previou": [27, 43, 54], "command_interfaces_": 27, "constraint": [27, 35, 39, 40, 42, 44, 48], "respons": 27, "turn": 27, "oppos": [27, 44], "tcp": [27, 31], "packet": 27, "robot_6_dof_hardwar": 27, "discov": 27, "library_nam": 27, "base_class_typ": 27, "human": 27, "notic": [27, 43], "just": 27, "add_librari": 27, "robot_hardwar": 27, "unlik": 27, "finit": 27, "certain": [27, 36, 45, 51], "transit": [27, 34, 43], "robotcontrol": 27, "nine": 27, "six": [27, 37], "callback": 27, "lifetim": 27, "restart": 27, "reconfigur": 27, "buffer": [27, 54], "reset": [27, 48], "transfer": 27, "eventu": 27, "mutex": 27, "guarante": [27, 43], "never": 27, "release_interfac": 27, "shut": 27, "free": [27, 33], "cleanup": 27, "r6bot_control": 27, "view_r6bot": 27, "ros2_control_demo_example_7": 27, "send_trajectori": 27, "circular": 27, "ros2_control_demo_example_8": 28, "rrbot_transmissions_system_position_onli": 28, "rrbottransmissionssystempositiononlyhardwar": 28, "transmission1": 28, "actuator1": 28, "transmission2": 28, "actuator2": 28, "383253": 28, "766505": 28, "53301": 28, "example_9": 29, "later": [29, 43], "ros2_control_demo_example_9": 29, "rrbot_gazebo_class": 29, "usr": 29, "ax": [30, 32, 37, 40, 50], "wheel": [30, 32, 33, 48, 50], "traction": [30, 32, 48, 49, 50], "steerabl": [30, 32, 50], "generate_parameter_librari": [30, 31, 32, 38, 39, 40, 48, 50], "parameter": [30, 32, 48, 50], "front_wheel_track": 30, "front": [30, 31, 32, 48, 50], "length": [30, 40, 48, 50], "en": [30, 32, 50], "wikipedia": [30, 32, 48, 50, 54], "wiki": [30, 32, 43, 44, 50], "wheelbas": [30, 32, 50], "rear_wheel_track": 30, "rear": [30, 32, 48, 50], "distanc": [30, 32, 44, 46, 50], "front_wheels_radiu": [30, 50], "radiu": [30, 32, 50], "rear_wheels_radiu": [30, 50], "chainedcontrollerinterfac": 31, "joint_refer": 31, "trajectory_msg": [31, 43, 44], "jointtrajectorypoint": [31, 43], "admittancecontrollerst": 31, "ft_sensor": 31, "sensor_nam": [31, 37, 40, 46], "ackermann": [32, 34, 48], "vehicl": 32, "probabl": 32, "front_wheel_radiu": 32, "rear_wheel_radiu": 32, "bodi": 33, "odometri": [33, 48, 49], "space": [33, 44], "hw_if_posit": [33, 34, 48], "hw_if_veloc": [33, 34, 48], "position_feedback": [33, 48], "twiststamp": [33, 48], "use_stamped_vel": [33, 48], "nav_msg": [33, 48], "estim": 33, "tf": [33, 48], "tf2_msg": [33, 48], "tfmessag": [33, 48], "enable_odom_tf": [33, 48], "cmd_vel_out": 33, "publish_limited_veloc": 33, "jointlimit": 33, "joint_limit": 33, "commonli": 34, "bicycl": [34, 48], "effort_control": [34, 38], "hw_if_acceler": 34, "hw_if_effort": 34, "represent": [34, 44], "rqt_joint_trajectory_control": [34, 44], "onconfigur": 34, "configure_control": 34, "unsign": 34, "unspecifi": 34, "is_async": 34, "asynchron": 34, "controllernam": 35, "protect": 35, "reserv": 35, "importantli": 35, "ask": [35, 41], "sort": 35, "controller_name_namespac": 35, "controller_name_packag": 35, "ros2_control_test_asset": 35, "special": [36, 43, 45, 51], "hz": [36, 39, 45, 51], "wrapper": [37, 40, 46], "forcetorquesensor": 37, "6d": 37, "per": 37, "less": [37, 48], "example_nam": 37, "example_interfac": 37, "feedforward": 38, "multi_interface_forward_command_control": 38, "string_arrai": [38, 48], "action_monitor_r": [39, 42, 44], "greater": [39, 42], "equal": [39, 40], "goal_toler": 39, "max_effort": 39, "allow_stal": 39, "stall": 39, "stall_velocity_threshold": 39, "threshold": 39, "001": 39, "stall_timeout": 39, "imusensor": 40, "orient": 40, "angular_veloc": 40, "linear_acceler": 40, "static_covariance_orient": 40, "double_arrai": [40, 48], "static": 40, "covari": [40, 48], "row": 40, "static_covariance_angular_veloc": 40, "static_covariance_linear_acceler": 40, "unless": 41, "latter": 41, "matrix": [41, 48], "product": 41, "use_local_top": 41, "my_state_broadcast": 41, "arrai": 41, "extra_joint": 41, "map_interface_to_joint_st": 41, "usecas": 41, "hydraul": [41, 42], "relianc": 41, "techniqu": 41, "slightli": 41, "custom_interfac": 41, "kf_estimated_posit": 41, "derived_veloc": 41, "derived_effort": 41, "torque_sensor": 41, "current_sensor": 41, "command_joint": 42, "jtc": 42, "monitor": [42, 44], "allow_partial_joints_go": [42, 44], "allow_integration_in_goal_trajectori": [42, 43], "interpolation_method": 42, "interpol": [42, 44], "spline": 42, "open_loop_control": [42, 44], "gain": 42, "numer": 42, "numeric_limit": 42, "quiet_nan": 42, "start_with_hold": 42, "hold": [42, 43], "allow_nonzero_velocity_at_trajectory_end": 42, "cmd_timeout": 42, "stale": 42, "count": 42, "goal_tim": [42, 44], "toler": [42, 44], "jointtrajectori": [42, 43, 44], "stopped_velocity_toler": [42, 44], "deviat": 42, "maxim": 42, "reach": [42, 43, 44], "predefin": 42, "infinit": 42, "amount": 42, "law": [42, 44], "k_": 42, "ff": 42, "v_d": 42, "k_p": 42, "k_i": 42, "sum": 42, "dt": 42, "k_d": 42, "angle_wraparound": 42, "i_clamp": 42, "clamp": 42, "symmetr": 42, "ff_velocity_scal": 42, "feed": 42, "wrap": [42, 44], "ie": [42, 43], "shortest": 42, "s_d": 42, "saniti": 43, "sampl": [43, 48], "segment": [43, 44], "fault": 43, "datapoint": 43, "deduc": 43, "nor": 43, "discourag": 43, "yield": 43, "discontinu": [43, 44], "cubic": 43, "quintic": 43, "heun": 43, "grid": 43, "10m": 43, "deduct": 43, "nonzero": 43, "inconsist": 43, "overshoot": 43, "timestamp": 43, "arriv": 43, "necessarili": 43, "discard": 43, "substitut": 43, "smarter": 43, "preserv": 43, "flat": 43, "grei": 43, "red": 43, "traj": 43, "time_from_start": 43, "splice": 43, "append": 43, "held": [43, 44], "smooth": [43, 54], "longer": 43, "slower": 43, "effect": 43, "Of": 43, "interest": 43, "adolfo": [43, 44], "rodriguez": [43, 44], "instant": 44, "citat": 44, "adapt": 44, "restrict": 44, "present": 44, "robust": 44, "clock": 44, "queu": 44, "joint3": 44, "joint4": 44, "joint5": 44, "joint6": 44, "preempt": 44, "cancel": 44, "notifi": 44, "abort": 44, "legal": 44, "subset": 44, "favor": 44, "violat": 44, "joint_trajectori": 44, "fire": 44, "sender": 44, "query_st": 44, "cumbersom": 44, "controller_st": [44, 48], "jointtrajectorycontrollerst": 44, "querytrajectoryst": 44, "footnot": 44, "rangesensor": 46, "radiation_typ": 46, "int": [46, 48], "radiat": 46, "ultrason": 46, "infrar": 46, "field_of_view": 46, "arc": 46, "rad": [46, 48], "min_rang": 46, "minimum": 46, "m": [46, 48], "max_rang": 46, "maximum": 46, "varianc": 46, "rqt": 47, "nomenclatur": 48, "unstamp": 48, "concret": 48, "tricylc": 48, "seer": 48, "front_steer": 48, "front_wheels_nam": 48, "rear_wheels_nam": 48, "traction_feedback_typ": 48, "in_chained_mod": 48, "reference_unstamp": 48, "tf_odometri": 48, "steeringcontrollerstatu": 48, "reference_timeout": 48, "unwant": 48, "danger": 48, "behaviour": 48, "rear_wheels_state_nam": 48, "front_wheels_state_nam": 48, "open_loop": 48, "velocity_rolling_window_s": 48, "number": 48, "averag": 48, "base_frame_id": 48, "odom_frame_id": 48, "twist_covariance_diagon": 48, "diagon": 48, "pose_covariance_diagon": 48, "pose": 48, "wheel_track": 50, "page": [52, 53], "isaac": 52, "webot": 52, "manufactur": 53, "franka": 53, "emika": 53, "xarm": 53, "flexiv": 53, "rizon": 53, "igu": 53, "commonplac": 53, "husarion": 53, "rosbot": 53, "xl": 53, "2r": 53, "pro": 53, "openmanipul": 53, "clearpath": 53, "jackal": 53, "j100": 53, "huski": 53, "a200": 53, "unoffici": 53, "iiwa": 53, "lbr": 53, "iiqka": 53, "eci": 53, "sunris": 53, "kss": 53, "egm": 53, "mitsubishi": 53, "rv1a": 53, "protocol": 53, "ethercat": 53, "canopen": 53, "svh": 53, "finger": 53, "dimens": 53, "haptic": 53, "odriv": 53, "ndi": 53, "pca9685": 53, "bit": 53, "pwm": 53, "servo": 53, "hoverboard": 53, "overcom": 54, "idea": 54, "wide": 54, "toolkit": 54, "unreleas": 54, "question": 54, "wg": 54, "wednesdai": 54, "announc": 54, "discours": 54, "googl": 54, "bug": 54, "tracker": 54, "reproduc": 54, "regard": 54, "built": 54, "gmt": 54}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"acknowledg": 0, "maintain": 0, "review": 0, "stat": 0, "contributor": 0, "compani": 0, "institut": 0, "contribut": 1, "pull": 1, "request": 1, "rule": 1, "repositori": [1, 16, 54], "process": [1, 9], "merg": 1, "write": [1, 11, 14, 27, 35], "document": [1, 8, 10, 54], "structur": [1, 2], "ci": 1, "configur": 1, "usag": [1, 3, 5], "differ": 2, "ros_control": 2, "ros1": [2, 6], "hardwar": [2, 4, 6, 9, 11, 12, 14, 27, 38, 41, 44], "class": [2, 8], "interfac": [2, 4, 12, 15, 19, 23, 27, 28, 31, 33, 36, 38, 41, 44, 45, 48, 51], "control": [2, 3, 4, 5, 6, 8, 9, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 35, 36, 38, 39, 44, 45, 48, 51, 52], "": [2, 33, 44, 48], "access": 2, "migrat": [2, 11], "guid": 2, "ros2_control": [2, 3, 5, 6, 10, 12, 16, 27, 31, 34, 54], "robothardwar": 2, "compon": [2, 4, 6, 11, 13, 14], "gazebo_ros2_control": 3, "modifi": [3, 5], "build": [3, 4, 5, 16], "your": [3, 4, 5], "own": [3, 5], "To": [3, 5, 16], "run": [3, 4, 5, 16], "demo": [3, 5, 6, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "add": [3, 5, 6], "tag": [3, 5], "urdf": [3, 4, 5, 27], "simpl": [3, 5], "setup": [3, 5], "us": [3, 5, 8, 9, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 35, 44], "mimic": [3, 5], "joint": [3, 5, 12, 13, 44], "simul": [3, 5, 29, 52], "plugin": [3, 5, 27], "default": [3, 5], "behavior": [3, 5], "advanc": [3, 5], "custom": [3, 5], "set": [3, 5], "up": [3, 5], "gazebo_ros2_control_demo": 3, "get": 4, "start": 4, "instal": [4, 16], "binari": 4, "packag": [4, 16], "from": [4, 6, 11, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 48], "sourc": [4, 16], "architectur": 4, "manag": [4, 8, 9], "resourc": [4, 7, 8], "user": 4, "descript": [4, 27, 33, 44, 48], "framework": 4, "robot": [4, 7, 16, 19, 21, 23, 24, 25, 26, 27, 28, 34, 53], "gz_ros2_control": 5, "gz_ros2_control_demo": 5, "project": 6, "idea": 6, "gsoc": 6, "2024": 6, "tutori": [6, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "mission": 6, "support": [6, 53], "semant": 6, "featur": [6, 10, 33, 44, 49], "pariti": 6, "present": 7, "2023": 7, "02": 7, "ro": [7, 31, 33, 36, 38, 45, 51, 52], "meetup": 7, "munich": 7, "5": [7, 25], "2022": 7, "12": [7, 20], "industri": [7, 19, 24, 25, 28], "confer": 7, "10": [7, 19], "roscon": 7, "06": 7, "fr": 7, "2021": 7, "world": 7, "07": 7, "weekli": 7, "13": 7, "rosdevdai": 7, "05": 7, "diagram": 7, "imag": 7, "chain": [8, 20], "cascad": 8, "scope": 8, "background": 8, "knowledg": 8, "motiv": 8, "purpos": 8, "implement": 8, "A": 8, "base": 8, "chainablecontrol": 8, "inner": 8, "activ": 8, "deactiv": 8, "debug": 8, "output": [8, 33], "close": 8, "remark": 8, "determin": 9, "paramet": [9, 13, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 45, 46, 48, 50, 51], "helper": 9, "script": 9, "spawner": 9, "unspawn": 9, "concept": [9, 10], "restart": 9, "all": 9, "api": 10, "guidelin": [11, 34], "best": [11, 34], "practic": [11, 34], "handl": 11, "error": 11, "happen": 11, "dure": 11, "read": 11, "call": 11, "foxi": 11, "newer": 11, "version": 11, "type": [12, 38, 41, 44], "sensor": [12, 24, 25, 37, 40, 46], "gpio": [12, 19], "exampl": [12, 16, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 43], "mock": 13, "gener": 13, "system": 13, "per": 13, "extern": [14, 25, 35], "refer": [14, 31, 33, 35, 44, 48], "command": [15, 31, 41, 44, 48, 49], "line": 15, "list_control": 15, "list_controller_typ": 15, "list_hardware_compon": 15, "list_hardware_interfac": 15, "load_control": 15, "reload_controller_librari": 15, "set_controller_st": 15, "switch_control": 15, "unload_control": 15, "view_controller_chain": 15, "what": 16, "you": 16, "can": 16, "find": 16, "thi": [16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "goal": 16, "overview": [16, 27], "local": 16, "debian": 16, "docker": 16, "view": 16, "quick": 16, "hint": 16, "1": [18, 44], "rrbot": [18, 20, 29], "step": [18, 20, 21, 22, 23, 24, 25, 26, 28, 29], "file": [18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "14": 21, "modular": [21, 26], "actuat": [21, 26], "provid": 21, "state": [21, 31, 44, 48], "diffbot": 22, "3": 23, "multipl": 23, "4": 24, "integr": [24, 52], "connect": 25, "6": 26, "separ": 26, "commun": [26, 52, 54], "each": 26, "7": 27, "full": 27, "6dof": 27, "geometri": 27, "cmake": 27, "librari": 27, "launch": 27, "8": 28, "an": 28, "expos": 28, "transmiss": 28, "9": 29, "ackermann_steering_control": 30, "admitt": 31, "2": [31, 33, 36, 38, 45, 51], "topic": [31, 36, 38, 45, 51], "bicycle_steering_control": 32, "diff_drive_control": 33, "other": [33, 34, 44, 49], "feedback": 33, "subscrib": [33, 44, 48], "publish": [33, 44, 48], "mobil": 34, "manipul": 34, "broadcast": [34, 37, 40, 46], "common": 34, "new": 35, "effort_control": 36, "jointgroupeffortcontrol": 36, "forc": 37, "torqu": 37, "forward_command_control": 38, "gripper": 39, "action": [39, 44], "imu": 40, "joint_state_broadcast": 41, "detail": 42, "about": 42, "trajectori": [43, 44], "represent": 43, "interpol": 43, "method": 43, "none": 43, "spline": 43, "visual": 43, "replac": 43, "joint_trajectory_control": 44, "preemption": 44, "polici": 44, "servic": 44, "further": 44, "inform": 44, "position_control": 45, "jointgrouppositioncontrol": 45, "rang": 46, "rqt_joint_trajectory_control": 47, "steering_controllers_librari": 48, "execut": 48, "logic": 48, "preced": 48, "tricycle_control": 49, "veloc": 49, "tricycle_steering_control": 50, "velocity_control": 51, "jointgroupvelocitycontrol": 51, "host": 52, "welcom": 54, "iron": 54, "develop": 54, "organis": 54}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx": 60}, "alltitles": {"Acknowledgements": [[0, "acknowledgements"]], "Maintainers": [[0, "maintainers"]], "Reviewers\u2019 Stats": [[0, "reviewers-stats"]], "Contributors": [[0, "contributors"]], "Companies and Institutions": [[0, "companies-and-institutions"]], "Contributing": [[1, "contributing"]], "Pull Requests": [[1, "pull-requests"]], "Rules for the repositories and process of merging pull requests": [[1, "rules-for-the-repositories-and-process-of-merging-pull-requests"]], "Writing documentation": [[1, "writing-documentation"]], "Repository structure and CI configuration": [[1, "repository-structure-and-ci-configuration"]], "CI configuration": [[1, "ci-configuration"]], "Documentation Usage": [[1, "documentation-usage"]], "Differences to ros_control (ROS1)": [[2, "differences-to-ros-control-ros1"]], "Hardware Structures - classes": [[2, "hardware-structures-classes"]], "Hardware Interfaces": [[2, "hardware-interfaces"]], "Controller\u2019s Access to Hardware": [[2, "controller-s-access-to-hardware"]], "Migration Guide to ros2_control": [[2, "migration-guide-to-ros2-control"]], "RobotHardware to Components": [[2, "robothardware-to-components"]], "Controller Migration": [[2, "controller-migration"]], "gazebo_ros2_control": [[3, "gazebo-ros2-control"]], "Usage": [[3, "usage"], [5, "usage"]], "Modifying or building your own": [[3, "modifying-or-building-your-own"], [5, "modifying-or-building-your-own"]], "To run the demo": [[3, "to-run-the-demo"], [5, "to-run-the-demo"]], "Add ros2_control tag to a URDF": [[3, "add-ros2-control-tag-to-a-urdf"], [5, "add-ros2-control-tag-to-a-urdf"]], "Simple setup": [[3, "simple-setup"], [5, "simple-setup"]], "Using mimic joints in simulation": [[3, "using-mimic-joints-in-simulation"], [5, "using-mimic-joints-in-simulation"]], "Add the gazebo_ros2_control plugin": [[3, "add-the-gazebo-ros2-control-plugin"]], "Default gazebo_ros2_control Behavior": [[3, "default-gazebo-ros2-control-behavior"]], "Advanced: custom gazebo_ros2_control Simulation Plugins": [[3, "advanced-custom-gazebo-ros2-control-simulation-plugins"]], "Set up controllers": [[3, "set-up-controllers"], [5, "set-up-controllers"]], "gazebo_ros2_control_demos": [[3, "gazebo-ros2-control-demos"]], "Getting Started": [[4, "getting-started"]], "Installation": [[4, "installation"], [16, "installation"]], "Binary packages": [[4, "binary-packages"]], "Building from Source": [[4, "building-from-source"]], "Architecture": [[4, "architecture"]], "Controller Manager": [[4, "controller-manager"], [9, "controller-manager"]], "Resource Manager": [[4, "resource-manager"]], "Controllers": [[4, "controllers"]], "User Interfaces": [[4, "user-interfaces"]], "Hardware Components": [[4, "hardware-components"], [11, "hardware-components"]], "Hardware Description in URDF": [[4, "hardware-description-in-urdf"]], "Running the Framework for Your Robot": [[4, "running-the-framework-for-your-robot"]], "gz_ros2_control": [[5, "gz-ros2-control"]], "Add the gz_ros2_control plugin": [[5, "add-the-gz-ros2-control-plugin"]], "Default gz_ros2_control Behavior": [[5, "default-gz-ros2-control-behavior"]], "Advanced: custom gz_ros2_control Simulation Plugins": [[5, "advanced-custom-gz-ros2-control-simulation-plugins"]], "gz_ros2_control_demos": [[5, "gz-ros2-control-demos"]], "Project Ideas for GSoC 2024": [[6, "project-ideas-for-gsoc-2024"]], "Tutorials and Demos for ros2_control": [[6, "tutorials-and-demos-for-ros2-control"]], "Mission-Control for ros2_control": [[6, "mission-control-for-ros2-control"]], "Add support for hardware semantic components": [[6, "add-support-for-hardware-semantic-components"]], "Feature-parity for controllers from ROS1": [[6, "feature-parity-for-controllers-from-ros1"]], "Resources": [[7, "resources"]], "Presentations": [[7, "presentations"]], "2023-02 ROS Meetup Munich #5": [[7, "ros-meetup-munich-5"]], "2022-12 ROS-Industrial Conference 2022": [[7, "ros-industrial-conference-2022"]], "2022-10 ROSCon 2022": [[7, "roscon-2022"]], "2022-06 ROSCon Fr 2022": [[7, "roscon-fr-2022"]], "2021-10 ROS World 2021": [[7, "ros-world-2021"]], "2021-10-07 Weekly Robotics Meetup #13": [[7, "weekly-robotics-meetup-13"]], "2021-06 ROSDevDay 2021": [[7, "rosdevday-2021"]], "2021-05 ROSCon Fr 2021": [[7, "roscon-fr-2021"]], "Diagrams": [[7, "diagrams"]], "Images": [[7, "images"]], "Controller Chaining / Cascade Control": [[8, "controller-chaining-cascade-control"]], "Scope of the Document and Background Knowledge": [[8, "scope-of-the-document-and-background-knowledge"]], "Motivation, Purpose and Use": [[8, "motivation-purpose-and-use"]], "Implementation": [[8, "implementation"]], "A Controller Base-Class: ChainableController": [[8, "a-controller-base-class-chainablecontroller"]], "Inner Resource Management": [[8, "inner-resource-management"]], "Activation and Deactivation Chained Controllers": [[8, "activation-and-deactivation-chained-controllers"]], "Debugging outputs": [[8, "debugging-outputs"]], "Closing remarks": [[8, "closing-remarks"]], "Determinism": [[9, "determinism"]], "Parameters": [[9, "parameters"], [13, "parameters"], [30, "parameters"], [31, "parameters"], [32, "parameters"], [33, "parameters"], [36, "parameters"], [37, "parameters"], [38, "parameters"], [39, "parameters"], [40, "parameters"], [41, "parameters"], [45, "parameters"], [46, "parameters"], [48, "parameters"], [50, "parameters"], [51, "parameters"]], "Helper scripts": [[9, "helper-scripts"]], "spawner": [[9, "spawner"]], "unspawner": [[9, "unspawner"]], "Using the Controller Manager in a Process": [[9, "using-the-controller-manager-in-a-process"]], "Concepts": [[9, "concepts"], [10, "concepts"]], "Restarting all controllers": [[9, "restarting-all-controllers"]], "Restarting hardware": [[9, "restarting-hardware"]], "ros2_control": [[10, "ros2-control"]], "API Documentation": [[10, "api-documentation"]], "Features": [[10, "features"]], "Guidelines and Best Practices": [[11, "guidelines-and-best-practices"], [34, "guidelines-and-best-practices"]], "Handling of errors that happen during read() and write() calls": [[11, "handling-of-errors-that-happen-during-read-and-write-calls"]], "Migration from Foxy to newer versions": [[11, "migration-from-foxy-to-newer-versions"]], "ros2_control hardware interface types": [[12, "ros2-control-hardware-interface-types"]], "Joints": [[12, "joints"]], "Sensors": [[12, "sensors"]], "GPIOs": [[12, "gpios"]], "Examples": [[12, "examples"], [16, "examples"]], "Mock Components": [[13, "mock-components"]], "Generic System": [[13, "generic-system"]], "Per-joint Parameters": [[13, "per-joint-parameters"]], "Writing a Hardware Component": [[14, "writing-a-hardware-component"]], "Useful External References": [[14, "useful-external-references"], [35, "useful-external-references"]], "Command Line Interface": [[15, "command-line-interface"]], "list_controllers": [[15, "list-controllers"]], "list_controller_types": [[15, "list-controller-types"]], "list_hardware_components": [[15, "list-hardware-components"]], "list_hardware_interfaces": [[15, "list-hardware-interfaces"]], "load_controller": [[15, "load-controller"]], "reload_controller_libraries": [[15, "reload-controller-libraries"]], "set_controller_state": [[15, "set-controller-state"]], "switch_controllers": [[15, "switch-controllers"]], "unload_controller": [[15, "unload-controller"]], "view_controller_chains": [[15, "view-controller-chains"]], "Demos": [[16, "demos"]], "What you can find in this repository": [[16, "what-you-can-find-in-this-repository"]], "Goals": [[16, "goals"]], "Examples Overview": [[16, "examples-overview"]], "Local installation": [[16, "local-installation"]], "Build from debian packages": [[16, "build-from-debian-packages"]], "Build from source": [[16, "build-from-source"]], "Using Docker": [[16, "using-docker"]], "To view the robot": [[16, "to-view-the-robot"]], "To run the ros2_control demos": [[16, "to-run-the-ros2-control-demos"]], "Quick Hints": [[16, "quick-hints"]], "Example 1: RRBot": [[18, "example-1-rrbot"]], "Tutorial steps": [[18, "tutorial-steps"], [20, "tutorial-steps"], [21, "tutorial-steps"], [22, "tutorial-steps"], [23, "tutorial-steps"], [24, "tutorial-steps"], [25, "tutorial-steps"], [26, "tutorial-steps"], [28, "tutorial-steps"], [29, "tutorial-steps"]], "Files used for this demos": [[18, "files-used-for-this-demos"], [19, "files-used-for-this-demos"], [20, "files-used-for-this-demos"], [21, "files-used-for-this-demos"], [22, "files-used-for-this-demos"], [23, "files-used-for-this-demos"], [25, "files-used-for-this-demos"], [26, "files-used-for-this-demos"], [28, "files-used-for-this-demos"], [29, "files-used-for-this-demos"]], "Controllers from this demo": [[18, "controllers-from-this-demo"], [19, "controllers-from-this-demo"], [20, "controllers-from-this-demo"], [21, "controllers-from-this-demo"], [22, "controllers-from-this-demo"], [23, "controllers-from-this-demo"], [24, "controllers-from-this-demo"], [25, "controllers-from-this-demo"], [26, "controllers-from-this-demo"], [28, "controllers-from-this-demo"], [29, "controllers-from-this-demo"]], "Example 10: Industrial robot with GPIO interfaces": [[19, "example-10-industrial-robot-with-gpio-interfaces"]], "Example 12: Controller chaining with RRBot": [[20, "example-12-controller-chaining-with-rrbot"]], "Example 14: Modular robot with actuators not providing states": [[21, "example-14-modular-robot-with-actuators-not-providing-states"]], "DiffBot": [[22, "diffbot"]], "Example 3: Robots with multiple interfaces": [[23, "example-3-robots-with-multiple-interfaces"]], "Example 4: Industrial robot with integrated sensor": [[24, "example-4-industrial-robot-with-integrated-sensor"]], "Files used for this demo": [[24, "files-used-for-this-demo"]], "Example 5: Industrial robot with externally connected sensor": [[25, "example-5-industrial-robot-with-externally-connected-sensor"]], "Example 6: Modular Robots with separate communication to each actuator": [[26, "example-6-modular-robots-with-separate-communication-to-each-actuator"]], "Example 7: Full tutorial with a 6DOF robot": [[27, "example-7-full-tutorial-with-a-6dof-robot"]], "ros2_control overview": [[27, "ros2-control-overview"]], "Writing a URDF": [[27, "writing-a-urdf"]], "Geometry": [[27, "geometry"]], "URDF file": [[27, "urdf-file"]], "Writing a hardware interface": [[27, "writing-a-hardware-interface"]], "Plugin description file (hardware)": [[27, "plugin-description-file-hardware"]], "CMake library (hardware)": [[27, "cmake-library-hardware"]], "Writing a controller": [[27, "writing-a-controller"]], "Plugin description file (controller)": [[27, "plugin-description-file-controller"]], "CMake library (controller)": [[27, "cmake-library-controller"]], "Launching the example": [[27, "launching-the-example"]], "Example 8: Industrial Robots with an exposed transmission interface": [[28, "example-8-industrial-robots-with-an-exposed-transmission-interface"]], "Example 9: Simulation with RRBot": [[29, "example-9-simulation-with-rrbot"]], "ackermann_steering_controller": [[30, "ackermann-steering-controller"]], "Admittance Controller": [[31, "admittance-controller"]], "ROS 2 interface of the controller": [[31, "ros-2-interface-of-the-controller"], [36, "ros-2-interface-of-the-controller"], [38, "ros-2-interface-of-the-controller"], [45, "ros-2-interface-of-the-controller"], [51, "ros-2-interface-of-the-controller"]], "Topics": [[31, "topics"], [36, "topics"], [38, "topics"], [45, "topics"], [51, "topics"]], "ros2_control interfaces": [[31, "ros2-control-interfaces"]], "References": [[31, "references"], [33, "references"], [44, "references"]], "States": [[31, "states"], [44, "states"], [48, "states"]], "Commands": [[31, "commands"], [41, "commands"], [44, "commands"], [48, "commands"]], "bicycle_steering_controller": [[32, "bicycle-steering-controller"]], "diff_drive_controller": [[33, "diff-drive-controller"]], "Other features": [[33, "other-features"], [44, "other-features"], [49, "other-features"]], "Description of controller\u2019s interfaces": [[33, "description-of-controller-s-interfaces"], [44, "description-of-controller-s-interfaces"], [48, "description-of-controller-s-interfaces"]], "Feedback": [[33, "feedback"]], "Output": [[33, "output"]], "ROS 2 Interfaces": [[33, "ros-2-interfaces"]], "Subscribers": [[33, "subscribers"], [48, "subscribers"]], "Publishers": [[33, "publishers"], [44, "publishers"], [48, "publishers"]], "ros2_controllers": [[34, "ros2-controllers"]], "Controllers for Mobile Robots": [[34, "controllers-for-mobile-robots"]], "Controllers for Manipulators and Other Robots": [[34, "controllers-for-manipulators-and-other-robots"]], "Broadcasters": [[34, "broadcasters"]], "Common Controller Parameters": [[34, "common-controller-parameters"]], "Writing a new controller": [[35, "writing-a-new-controller"]], "effort_controllers": [[36, "effort-controllers"]], "effort_controllers/JointGroupEffortController": [[36, "effort-controllers-jointgroupeffortcontroller"]], "Force Torque Sensor Broadcaster": [[37, "force-torque-sensor-broadcaster"]], "forward_command_controller": [[38, "forward-command-controller"]], "Hardware interface type": [[38, "hardware-interface-type"], [41, "hardware-interface-type"]], "Gripper Action Controller": [[39, "gripper-action-controller"]], "IMU Sensor Broadcaster": [[40, "imu-sensor-broadcaster"]], "joint_state_broadcaster": [[41, "joint-state-broadcaster"]], "Details about parameters": [[42, "details-about-parameters"]], "Trajectory Representation": [[43, "trajectory-representation"]], "Interpolation Method none": [[43, "interpolation-method-none"]], "Interpolation Method spline": [[43, "interpolation-method-spline"]], "Visualized Examples": [[43, "visualized-examples"]], "Trajectory Replacement": [[43, "trajectory-replacement"]], "joint_trajectory_controller": [[44, "joint-trajectory-controller"]], "Hardware interface types": [[44, "hardware-interface-types"]], "Using Joint Trajectory Controller(s)": [[44, "using-joint-trajectory-controller-s"]], "Preemption policy 1": [[44, "preemption-policy"]], "Actions 1": [[44, "actions"]], "Subscriber 1": [[44, "subscriber"]], "Services": [[44, "services"]], "Further information": [[44, "further-information"]], "position_controllers": [[45, "position-controllers"]], "position_controllers/JointGroupPositionController": [[45, "position-controllers-jointgrouppositioncontroller"]], "Range Sensor Broadcaster": [[46, "range-sensor-broadcaster"]], "rqt_joint_trajectory_controller": [[47, "rqt-joint-trajectory-controller"]], "steering_controllers_library": [[48, "steering-controllers-library"]], "Execution logic of the controller": [[48, "execution-logic-of-the-controller"]], "References (from a preceding controller)": [[48, "references-from-a-preceding-controller"]], "tricycle_controller": [[49, "tricycle-controller"]], "Velocity commands": [[49, "velocity-commands"]], "tricycle_steering_controller": [[50, "tricycle-steering-controller"]], "velocity_controllers": [[51, "velocity-controllers"]], "velocity_controllers/JointGroupVelocityController": [[51, "velocity-controllers-jointgroupvelocitycontroller"]], "Simulator Integrations": [[52, "simulator-integrations"]], "Hosted by ros-controls": [[52, "hosted-by-ros-controls"]], "Community": [[52, "community"]], "Supported Robots": [[53, "supported-robots"]], "Welcome to the ros2_control documentation - Iron!": [[54, "welcome-to-the-ros2-control-documentation-iron"]], "ros2_control Repositories": [[54, "ros2-control-repositories"]], "Development Organisation and Communication": [[54, "development-organisation-and-communication"]]}, "indexentries": {}}) \ No newline at end of file +Search.setIndex({"docnames": ["doc/acknowledgements/acknowledgements", "doc/contributing/contributing", "doc/differences_to_ros1/differences_to_ros1", "doc/gazebo_ros2_control/doc/index", "doc/getting_started/getting_started", "doc/gz_ros2_control/doc/index", "doc/project_ideas", "doc/resources/resources", "doc/ros2_control/controller_manager/doc/controller_chaining", "doc/ros2_control/controller_manager/doc/userdoc", "doc/ros2_control/doc/index", "doc/ros2_control/hardware_interface/doc/hardware_components_userdoc", "doc/ros2_control/hardware_interface/doc/hardware_interface_types_userdoc", "doc/ros2_control/hardware_interface/doc/mock_components_userdoc", "doc/ros2_control/hardware_interface/doc/writing_new_hardware_component", "doc/ros2_control/ros2controlcli/doc/userdoc", "doc/ros2_control_demos/doc/index", "doc/ros2_control_demos/doc/run_from_docker", "doc/ros2_control_demos/example_1/doc/userdoc", "doc/ros2_control_demos/example_10/doc/userdoc", "doc/ros2_control_demos/example_12/doc/userdoc", "doc/ros2_control_demos/example_14/doc/userdoc", "doc/ros2_control_demos/example_2/doc/userdoc", "doc/ros2_control_demos/example_3/doc/userdoc", "doc/ros2_control_demos/example_4/doc/userdoc", "doc/ros2_control_demos/example_5/doc/userdoc", "doc/ros2_control_demos/example_6/doc/userdoc", "doc/ros2_control_demos/example_7/doc/userdoc", "doc/ros2_control_demos/example_8/doc/userdoc", "doc/ros2_control_demos/example_9/doc/userdoc", "doc/ros2_controllers/ackermann_steering_controller/doc/userdoc", "doc/ros2_controllers/admittance_controller/doc/userdoc", "doc/ros2_controllers/bicycle_steering_controller/doc/userdoc", "doc/ros2_controllers/diff_drive_controller/doc/userdoc", "doc/ros2_controllers/doc/controllers_index", "doc/ros2_controllers/doc/writing_new_controller", "doc/ros2_controllers/effort_controllers/doc/userdoc", "doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/forward_command_controller/doc/userdoc", "doc/ros2_controllers/gripper_controllers/doc/userdoc", "doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/joint_state_broadcaster/doc/userdoc", "doc/ros2_controllers/joint_trajectory_controller/doc/parameters", "doc/ros2_controllers/joint_trajectory_controller/doc/trajectory", "doc/ros2_controllers/joint_trajectory_controller/doc/userdoc", "doc/ros2_controllers/position_controllers/doc/userdoc", "doc/ros2_controllers/range_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/rqt_joint_trajectory_controller/doc/userdoc", "doc/ros2_controllers/steering_controllers_library/doc/userdoc", "doc/ros2_controllers/tricycle_controller/doc/userdoc", "doc/ros2_controllers/tricycle_steering_controller/doc/userdoc", "doc/ros2_controllers/velocity_controllers/doc/userdoc", "doc/simulators/simulators", "doc/supported_robots/supported_robots", "index"], "filenames": ["doc/acknowledgements/acknowledgements.rst", "doc/contributing/contributing.rst", "doc/differences_to_ros1/differences_to_ros1.rst", "doc/gazebo_ros2_control/doc/index.rst", "doc/getting_started/getting_started.rst", "doc/gz_ros2_control/doc/index.rst", "doc/project_ideas.rst", "doc/resources/resources.rst", "doc/ros2_control/controller_manager/doc/controller_chaining.rst", "doc/ros2_control/controller_manager/doc/userdoc.rst", "doc/ros2_control/doc/index.rst", "doc/ros2_control/hardware_interface/doc/hardware_components_userdoc.rst", "doc/ros2_control/hardware_interface/doc/hardware_interface_types_userdoc.rst", "doc/ros2_control/hardware_interface/doc/mock_components_userdoc.rst", "doc/ros2_control/hardware_interface/doc/writing_new_hardware_component.rst", "doc/ros2_control/ros2controlcli/doc/userdoc.rst", "doc/ros2_control_demos/doc/index.rst", "doc/ros2_control_demos/doc/run_from_docker.rst", "doc/ros2_control_demos/example_1/doc/userdoc.rst", "doc/ros2_control_demos/example_10/doc/userdoc.rst", "doc/ros2_control_demos/example_12/doc/userdoc.rst", "doc/ros2_control_demos/example_14/doc/userdoc.rst", "doc/ros2_control_demos/example_2/doc/userdoc.rst", "doc/ros2_control_demos/example_3/doc/userdoc.rst", "doc/ros2_control_demos/example_4/doc/userdoc.rst", "doc/ros2_control_demos/example_5/doc/userdoc.rst", "doc/ros2_control_demos/example_6/doc/userdoc.rst", "doc/ros2_control_demos/example_7/doc/userdoc.rst", "doc/ros2_control_demos/example_8/doc/userdoc.rst", "doc/ros2_control_demos/example_9/doc/userdoc.rst", "doc/ros2_controllers/ackermann_steering_controller/doc/userdoc.rst", "doc/ros2_controllers/admittance_controller/doc/userdoc.rst", "doc/ros2_controllers/bicycle_steering_controller/doc/userdoc.rst", "doc/ros2_controllers/diff_drive_controller/doc/userdoc.rst", "doc/ros2_controllers/doc/controllers_index.rst", "doc/ros2_controllers/doc/writing_new_controller.rst", "doc/ros2_controllers/effort_controllers/doc/userdoc.rst", "doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/forward_command_controller/doc/userdoc.rst", "doc/ros2_controllers/gripper_controllers/doc/userdoc.rst", "doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/joint_state_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/joint_trajectory_controller/doc/parameters.rst", "doc/ros2_controllers/joint_trajectory_controller/doc/trajectory.rst", "doc/ros2_controllers/joint_trajectory_controller/doc/userdoc.rst", "doc/ros2_controllers/position_controllers/doc/userdoc.rst", "doc/ros2_controllers/range_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/rqt_joint_trajectory_controller/doc/userdoc.rst", "doc/ros2_controllers/steering_controllers_library/doc/userdoc.rst", "doc/ros2_controllers/tricycle_controller/doc/userdoc.rst", "doc/ros2_controllers/tricycle_steering_controller/doc/userdoc.rst", "doc/ros2_controllers/velocity_controllers/doc/userdoc.rst", "doc/simulators/simulators.rst", "doc/supported_robots/supported_robots.rst", "index.rst"], "titles": ["Acknowledgements", "Contributing", "Differences to ros_control (ROS1)", "gazebo_ros2_control", "Getting Started", "gz_ros2_control", "Project Ideas for GSoC 2024", "Resources", "Controller Chaining / Cascade Control", "Controller Manager", "ros2_control", "Hardware Components", "ros2_control hardware interface types", "Mock Components", "Writing a Hardware Component", "Command Line Interface", "Demos", "<no title>", "Example 1: RRBot", "Example 10: Industrial robot with GPIO interfaces", "Example 12: Controller chaining with RRBot", "Example 14: Modular robot with actuators not providing states", "DiffBot", "Example 3: Robots with multiple interfaces", "Example 4: Industrial robot with integrated sensor", "Example 5: Industrial robot with externally connected sensor", "Example 6: Modular Robots with separate communication to each actuator", "Example 7: Full tutorial with a 6DOF robot", "Example 8: Industrial Robots with an exposed transmission interface", "Example 9: Simulation with RRBot", "ackermann_steering_controller", "Admittance Controller", "bicycle_steering_controller", "diff_drive_controller", "ros2_controllers", "Writing a new controller", "effort_controllers", "Force Torque Sensor Broadcaster", "forward_command_controller", "Gripper Action Controller", "IMU Sensor Broadcaster", "joint_state_broadcaster", "Details about parameters", "Trajectory Representation", "joint_trajectory_controller", "position_controllers", "Range Sensor Broadcaster", "rqt_joint_trajectory_controller", "steering_controllers_library", "tricycle_controller", "tricycle_steering_controller", "velocity_controllers", "Simulator Integrations", "Supported Robots", "Welcome to the ros2_control documentation - Iron!"], "terms": {"The": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 54], "follow": [0, 1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 42, 43, 44, 45, 50, 51, 54], "peopl": [0, 1], "were": [0, 6, 27, 33, 43, 44], "ros2_control": [0, 1, 4, 7, 9, 11, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 33, 35, 52], "framework": [0, 1, 2, 6, 7, 9, 10, 11, 12, 13, 15, 16, 27, 34, 35, 41, 54], "show": [0, 1, 3, 4, 5, 7, 9, 11, 12, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 41, 43], "all": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 35, 41, 42, 43, 44, 53], "time": [0, 1, 2, 6, 7, 9, 13, 15, 16, 18, 21, 22, 23, 24, 25, 26, 27, 28, 33, 35, 37, 42, 43, 44, 54], "activ": [0, 1, 2, 4, 9, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 41, 42, 44], "assign": [0, 35], "finish": 0, "rate": [0, 22, 34, 42, 43, 44], "last": [0, 11, 14, 27, 31, 35, 42, 43], "date": 0, "benc": [0, 6, 7], "magyar": [0, 6, 7], "bmagyar": 0, "1244": 0, "1024": 0, "0": [0, 3, 4, 5, 8, 12, 13, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 39, 40, 41, 42, 43, 44, 46, 48, 50], "82": 0, "2023": [0, 54], "12": [0, 16, 53, 54], "30t20": 0, "25": 0, "34z": 0, "dr": [0, 7], "deni": [0, 6, 7], "destogl": 0, "986": 0, "561": 0, "57": 0, "18t14": 0, "11": [0, 16], "03z": 0, "christoph": 0, "fr\u00f6hlich": 0, "christophfroehlich": 0, "153": 0, "134": 0, "88": 0, "26t09": 0, "00": 0, "02z": 0, "fetch": 0, "31": [0, 54], "03": [0, 44], "26": 0, "14": [0, 16, 48], "utc": 0, "dure": [0, 16, 27, 44], "past": [0, 43], "month": 0, "533": 0, "402": 0, "75": 0, "439": 0, "136": 0, "142": 0, "123": 0, "87": 0, "have": [0, 1, 2, 4, 6, 8, 9, 11, 12, 13, 14, 16, 18, 20, 22, 23, 27, 29, 30, 31, 32, 34, 35, 41, 42, 44, 50], "contribut": [0, 4, 7], "develop": [0, 1, 7, 13, 14, 16, 35], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 27, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 48, 50, 51, 52, 53, 54], "project": [0, 1, 54], "give": [0, 1, 7, 9, 16, 18, 22, 23, 43, 54], "valuabl": 0, "pull": [0, 14], "request": [0, 2, 14, 27, 41, 54], "see": [0, 1, 2, 4, 12, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 37, 40, 42, 44, 46, 48, 50], "more": [0, 1, 2, 3, 4, 5, 6, 9, 13, 14, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 35, 44, 50], "inform": [0, 3, 5, 8, 13, 14, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 35, 54], "karsten": 0, "knese": 0, "karsten1987": 0, "186": 0, "118": 0, "63": 0, "2021": 0, "09": 0, "07t16": 0, "47": 0, "31z": 0, "alejandro": 0, "hern\u00e1ndez": 0, "cordero": 0, "ahcord": 0, "90": [0, 27], "80": 0, "89": 0, "27t10": 0, "54": 0, "11z": 0, "sai": 0, "kishor": 0, "kothakota": 0, "saikishor": 0, "69": 0, "67": 0, "97": 0, "29t05": 0, "18": [0, 27], "25z": 0, "victor": 0, "lopez": 0, "v": [0, 15, 24, 42], "93": 0, "60": 0, "65": 0, "10": [0, 3, 5, 16, 23, 48], "14t09": 0, "01": [0, 39, 42, 44], "andyz": 0, "46": 0, "45": 0, "98": 0, "23t02": 0, "17": 0, "26z": 0, "abrar": 0, "rahman": 0, "protyasha": 0, "aprotya": 0, "157": 0, "43": [0, 4, 12, 22], "27": 0, "25t12": 0, "02": 0, "18z": 0, "olivi": 0, "stass": 0, "52": [0, 46], "40": 0, "77": 0, "26t08": 0, "13z": 0, "jordan": 0, "palacio": 0, "78": 0, "34": 0, "44": 0, "15t08": 0, "45z": 0, "erick": 0, "g": [0, 1, 2, 4, 5, 6, 7, 8, 9, 12, 13, 14, 16, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 31, 35, 36, 41, 45, 48, 51, 54], "isla": 0, "osuna": 0, "erickiso": 0, "139": 0, "28": [0, 48], "20": [0, 39, 42, 44], "19t20": 0, "32": 0, "07z": 0, "louis": 0, "poubel": 0, "chapulina": 0, "29": 0, "23": [0, 4], "79": 0, "2022": 0, "08": 0, "30t16": 0, "41": 0, "23z": 0, "none": [0, 8, 35, 41, 42, 44], "bijoua29": 0, "160": 0, "21": [0, 48], "13": [0, 16], "06": 0, "01t20": 0, "48": [0, 3, 5], "32z": 0, "jaron": 0, "l": 0, "167": 0, "10t19": 0, "59": 0, "59z": 0, "livanov93": 0, "164": 0, "05": [0, 44, 54], "22t06": 0, "28z": 0, "tyler": 0, "weaver": 0, "tylerjw": 0, "94": 0, "27t13": 0, "arn": 0, "hitzmann": 0, "arne48": 0, "146": 0, "16": [0, 53], "25t06": 0, "15z": 0, "bailac": 0, "1": [0, 1, 2, 3, 4, 5, 6, 7, 12, 13, 14, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 35, 39, 43, 46, 48], "09t12": 0, "52z": 0, "m\u00e1rk": 0, "szitan": 0, "vx792": 0, "135": 0, "22t09": 0, "felix": 0, "exner": 0, "fexner": 0, "fmauch": 0, "24t22": 0, "ari": 0, "synodino": 0, "progtologist": 0, "152": 0, "07": 0, "30t19": 0, "58z": 0, "chen": 0, "bainian": 0, "briancbn": 0, "36": 0, "9": [0, 6, 16, 40], "25t01": 0, "51": 0, "12z": 0, "paul": 0, "gesel": 0, "pac48": 0, "14t18": 0, "maciej": 0, "bednarczyk": 0, "mcbed": 0, "8": [0, 16], "25t18": 0, "19z": 0, "jafar": 0, "uru\u00e7": 0, "jafarabdi": 0, "07t07": 0, "01z": 0, "ddengster": 0, "2020": 0, "01t03": 0, "andr": 0, "montano": 0, "anfemosa": 0, "133": 0, "7": [0, 16, 19, 22, 48], "29t15": 0, "37z": 0, "homalozoa": 0, "x": [0, 22, 24, 25, 27, 31, 33, 37, 40, 48, 49, 53], "130": 0, "23t11": 0, "22": [0, 9], "mahaarbo": 0, "01t11": 0, "44z": 0, "matt": 0, "reynold": 0, "matthew": 0, "18t19": 0, "56": 0, "ana": 0, "abou": 0, "allaban": 0, "piraka9011": 0, "04": [0, 9], "09t00": 0, "38": [0, 3, 5], "06z": 0, "toni": [0, 7], "najjar": [0, 7], "tonynajjar": 0, "04t13": 0, "50": [0, 4, 9, 22], "48z": 0, "dasroteskelett": 0, "150": 0, "6": [0, 16, 18, 27], "28t09": 0, "36z": 0, "brewmast": 0, "harderthan": 0, "124": 0, "26t15": 0, "47z": 0, "A": [0, 4, 7, 12, 14, 16, 24, 25, 34, 35, 41, 43, 44], "vd": 0, "hoorn": 0, "gavanderhoorn": 0, "19t13": 0, "39": 0, "alex": 0, "moriarti": 0, "5": [0, 14, 16, 18, 19, 20, 21, 23, 24, 26, 27, 28, 29, 43, 48, 53], "42": 0, "20t19": 0, "55": 0, "jack": 0, "jackcent": 0, "02t15": 0, "37": 0, "17z": 0, "han": 0, "martin": 0, "duringhof": 0, "4": [0, 12, 16, 21, 23, 25, 28, 46], "29t21": 0, "15": 0, "noel": 0, "jim\u00e9nez": 0, "garc\u00eda": 0, "noel215": 0, "20t07": 0, "40z": 0, "nathan": [0, 7], "brook": [0, 7], "nbbrook": 0, "05t22": 0, "marq": 0, "rasmussen": 0, "marqrazz": 0, "23t00": 0, "colin": 0, "mackenzi": 0, "guru": 0, "florida": 0, "19t23": 0, "49z": 0, "reza": 0, "kermani": 0, "ark3r": 0, "13t18": 0, "27z": 0, "chri": 0, "thrasher": 0, "christhrash": 0, "26t17": 0, "05z": 0, "michael": 0, "wiznitz": 0, "mechwiz": 0, "22t14": 0, "19": 0, "richard": 0, "osterloh": 0, "rosterloh": 0, "145": 0, "3": [0, 3, 4, 5, 6, 12, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28, 43, 44], "05t08": 0, "53": 0, "08z": 0, "mrl1kor": 0, "malapatiravi": 0, "07t18": 0, "adam": 0, "serafin": 0, "serafadam": 0, "12t18": 0, "24": 0, "24z": 0, "manuel": 0, "muth": 0, "mamueluth": 0, "03t10": 0, "20z": 0, "melvin": 0, "wang": 0, "wmmc88": 0, "22t13": 0, "tim": 0, "clepha": 0, "timpl": 0, "13t07": 0, "yutaka": 0, "kondo": 0, "youtalk": 0, "22t00": 0, "guihom": 0, "guihomework": 0, "17t15": 0, "jose": 0, "lui": 0, "rivero": 0, "j": 0, "26t13": 0, "peter": 0, "david": 0, "fagan": 0, "peterdavidfagan": 0, "2": [0, 1, 3, 4, 5, 6, 7, 8, 12, 13, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 44, 48, 53, 54], "23t22": 0, "sebastian": 0, "jahr": 0, "sjahr": 0, "15t14": 0, "joseph": 0, "schornak": 0, "schornakj": 0, "27t03": 0, "57z": 0, "akash": 0, "ace314159": 0, "31t17": 0, "jo\u00e3o": 0, "torr": 0, "borg": 0, "borgesjvt": 0, "05t12": 0, "46z": 0, "patrick": 0, "roncagliolo": 0, "roncapat": 0, "01t12": 0, "49": 0, "carrol": 0, "mjcarrol": 0, "28t21": 0, "09z": 0, "vansh": 0, "gehlot": 0, "eth": 0, "vanshgehlot": 0, "13t11": 0, "mhubii": 0, "21t11": 0, "50z": 0, "luka": 0, "macha": 0, "lukasmacha97": 0, "85": 0, "17t18": 0, "sachin": 0, "kumar": 0, "sachinkum0009": 0, "lennart": 0, "nachtigal": 0, "firesurf": 0, "04t07": 0, "qiayuanliao": 0, "qiayuanl": 0, "35": [0, 48], "25t05": 0, "solomon": 0, "swiz23": 0, "15t15": 0, "andi": [0, 7], "mcevoi": 0, "mcevoyandi": 0, "08t14": 0, "kenji": 0, "brameld": 0, "ijnek": 0, "05t10": 0, "53z": 0, "bilal": 0, "gill": 0, "bgill92": 0, "01t13": 0, "22z": 0, "kvk": 0, "praneeth": 0, "kvkpraneeth": 0, "28t07": 0, "33z": 0, "cian": 0, "donovan": 0, "ciandonovan": 0, "26t23": 0, "schulz": 0, "schulze18": 0, "27t21": 0, "29z": 0, "shawn": 0, "schaerer": 0, "shawnschaer": 0, "14t15": 0, "franz": 0, "fjp": 0, "04t22": 0, "vatan": 0, "aksoi": 0, "tezer": 0, "vatanaksoytez": 0, "21t13": 0, "nour": 0, "saeed": 0, "d": [0, 16, 18, 29, 42], "dmitri": 0, "dignakov": 0, "13t16": 0, "30": [0, 3, 5, 22], "ken551": 0, "03t11": 0, "54z": 0, "jonatan": 0, "olofsson": 0, "jonatanolofsson": 0, "05t14": 0, "bedard": 0, "christophebedard": 0, "27t18": 0, "august": 0, "bourgoi": 0, "augustebourgoi": 0, "19t14": 0, "ramon": 0, "wijnand": 0, "rayman": 0, "21t14": 0, "21z": 0, "flochr": 0, "20t10": 0, "castro": 0, "sea": 0, "bass": 0, "27t12": 0, "51z": 0, "abishalini": 0, "sivaraman": 0, "27t14": 0, "ramcharanthota": 0, "ben": 0, "holden": 0, "bobblebal": 0, "01t10": 0, "Will": 0, "baker": 0, "willcbak": 0, "22t15": 0, "robotgir": 0, "17t16": 0, "33": 0, "tomislav": 0, "petkovi\u0107": 0, "petkovich": 0, "17t10": 0, "ros2tori": 0, "28t15": 0, "kevin": 0, "demarco": 0, "syllogismrx": 0, "19t16": 0, "noe\u00ebl": 0, "moeskop": 0, "noeelmoeskop": 0, "18t09": 0, "josh": 0, "newan": 0, "joshnewan": 0, "14t08": 0, "emiliano": 0, "borghi": 0, "eborghi10": 0, "29t20": 0, "haider8645": 0, "26t10": 0, "stephen": 0, "street": 0, "sgstreet": 0, "05t20": 0, "jun": 0, "chenjunnn": 0, "09t06": 0, "daniel": 0, "zumkel": 0, "dzumkel": 0, "shane": 0, "loretz": 0, "sloretz": 0, "yoav": 0, "feket": 0, "yoavfeket": 0, "17t21": 0, "johann": [0, 7], "huemer": 0, "huemerj": 0, "31t15": 0, "keegan": 0, "soteb": 0, "ksoteb": 0, "00z": 0, "carlo": 0, "ag\u00fcero": 0, "caguero": 0, "26t11": 0, "35z": 0, "jacob": 0, "perron": 0, "jacobperron": 0, "09t18": 0, "reframesystem": 0, "krzysztof": 0, "wojciechowski": 0, "kotochleb": 0, "12t08": 0, "55z": 0, "addisu": 0, "z": [0, 22, 24, 25, 27, 31, 33, 37, 40, 48, 49], "taddes": 0, "azeei": 0, "14t20": 0, "thibault": 0, "poignonec": 0, "tpoignonec": 0, "09t08": 0, "sgmurrai": 0, "0000": 0, "00t00": 0, "kelli": 0, "kellyprankin": 0, "kasiceo": 0, "a10263790": 0, "tomoya": 0, "tomoyafujita2016": 0, "usamahamayun1": 0, "dave": 0, "coleman": 0, "davetcoleman": 0, "66": 0, "64": 0, "92": 0, "71": 0, "104": 0, "03t19": 0, "14z": 0, "86": 0, "95": 0, "100": [0, 4, 12, 36, 45, 51], "99": [0, 9], "72": 0, "link": [0, 3, 4, 5, 7, 8, 11, 27, 34], "list": [0, 4, 7, 8, 9, 11, 14, 15, 20, 27, 35, 42, 52, 53, 54], "who": 0, "submit": [0, 1, 7, 52, 53], "respect": [0, 3, 5, 6, 7, 42, 43, 44], "repositori": [0, 4, 6, 10, 12, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 33, 34], "ros2_control_demo": [0, 1, 4, 16, 18, 27, 29, 54], "control_toolbox": [0, 54], "gazebo_ros2_control": [0, 29], "gz_ros2_control": 0, "realtime_tool": [0, 6, 54], "kinematics_interfac": [0, 31], "control_msg": [0, 3, 5, 31, 42, 44, 48, 54], "ha": [0, 1, 3, 4, 5, 7, 12, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 34, 35, 41, 42, 43], "receiv": [0, 2, 27, 42, 43], "major": [0, 40], "from": [0, 1, 2, 7, 8, 9, 13, 14, 15, 17, 27, 31, 33, 34, 35, 36, 37, 40, 42, 43, 44, 45, 46, 49, 51, 53, 54], "support": [0, 2, 3, 4, 5, 7, 13, 14, 15, 27, 31, 35, 41, 43, 44, 48, 52, 54], "rosin": 0, "ro": [0, 1, 2, 3, 4, 5, 6, 9, 12, 13, 15, 16, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 34, 35, 43, 44, 54], "industri": [0, 4, 6, 16, 53], "qualiti": [0, 1], "assur": 0, "robot": [0, 2, 3, 5, 6, 8, 9, 12, 18, 20, 22, 29, 33, 37, 41, 48, 49, 54], "softwar": [0, 4, 27], "compon": [0, 7, 9, 10, 12, 15, 16, 21, 22, 23, 24, 25, 26, 27, 31, 33, 34, 37, 40, 46, 48, 49, 54], "http": [0, 1, 4, 6, 16, 27, 30, 32, 50], "www": 0, "eu": 0, "fund": 0, "european": 0, "union": 0, "": [0, 1, 4, 6, 7, 8, 9, 14, 15, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 35, 40, 42, 43, 46, 50, 54], "horizon": 0, "research": [0, 7, 53], "innov": 0, "programm": 0, "under": [0, 7, 14, 20, 35, 43, 44, 48, 54], "grant": [0, 4], "agreement": 0, "732287": 0, "first": [1, 2, 8, 11, 14, 16, 27, 29, 35, 42, 43], "thank": 1, "you": [1, 2, 3, 4, 5, 7, 8, 9, 11, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 35, 44, 54], "consid": [1, 15, 42], "As": [1, 8, 12, 14, 18, 27, 33, 35], "an": [1, 2, 3, 4, 5, 6, 7, 8, 12, 13, 14, 15, 16, 18, 20, 22, 25, 27, 29, 30, 31, 32, 33, 34, 35, 36, 41, 42, 44, 45, 48, 50, 51], "open": [1, 13, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 41, 42, 48], "sourc": [1, 3, 5, 7, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "we": [1, 3, 5, 6, 7, 8, 11, 16, 18, 20, 22, 27, 28, 29, 41], "welcom": 1, "each": [1, 4, 6, 8, 9, 11, 12, 14, 16, 18, 21, 27, 30, 41, 48, 50], "contributor": 1, "regardless": 1, "background": [1, 16], "experi": 1, "To": [1, 2, 4, 8, 9, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 41, 43, 52, 53, 54], "reduc": [1, 13], "entropi": 1, "univers": [1, 7, 27, 53], "our": [1, 3, 4, 5, 6, 7, 16, 18, 27], "vivid": 1, "collabor": 1, "environ": [1, 4, 7, 16], "set": [1, 2, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 27, 34, 36, 41, 42, 43, 44, 45, 48, 51], "up": [1, 7, 14, 16, 43], "some": [1, 3, 5, 6, 7, 16, 18, 21, 22, 23, 24, 25, 26, 27, 28, 31, 41, 42, 44, 54], "standard": [1, 2, 6, 7, 14, 15, 21, 26, 27, 37, 41], "method": [1, 2, 4, 8, 9, 11, 14, 27, 35, 48], "requir": [1, 2, 4, 6, 14, 27, 31, 35, 36, 44, 45, 51], "ar": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 37, 40, 41, 42, 43, 44, 46, 48, 49, 50, 54], "limit": [1, 3, 5, 7, 9, 16, 27, 33, 49], "scope": 1, "your": [1, 2, 7, 9, 13, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 32, 35, 52, 53, 54], "pr": [1, 52, 53], "should": [1, 2, 3, 5, 6, 7, 8, 9, 11, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 35, 41, 43, 44], "do": [1, 2, 4, 6, 7, 8, 9, 14, 16, 31, 35, 44], "one": [1, 2, 4, 6, 7, 8, 9, 12, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 35, 36, 37, 41, 43, 44, 45, 48, 50, 51, 54], "thing": [1, 3, 5, 16], "avoid": [1, 18, 21, 22, 23, 24, 25, 26, 28, 35], "ad": [1, 3, 5, 6, 9, 13, 14, 20, 22, 27, 35, 41], "random": [1, 21, 23, 24, 25, 26], "fix": [1, 2, 27, 30, 32, 50], "put": [1, 14, 35], "those": [1, 2, 4, 6, 8, 13, 14, 16, 27, 33, 35, 37, 41, 42, 43], "separ": [1, 2, 4, 16, 21, 41], "descript": [1, 2, 7, 9, 11, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 35], "titl": 1, "add": [1, 2, 8, 9, 11, 14, 27, 30, 31, 32, 35, 50, 52, 53], "short": [1, 35, 54], "summari": [1, 7, 54], "make": [1, 2, 5, 6, 7, 20, 27, 39, 54], "sure": [1, 5, 6, 18, 20, 21, 22, 23, 24, 25, 26, 28, 54], "pipelin": 1, "i": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 54], "green": [1, 43], "don": [1, 3, 8, 22, 42, 44], "t": [1, 3, 5, 8, 9, 16, 22, 42, 43, 44], "afraid": 1, "review": [1, 6, 54], "maintain": [1, 4, 6, 8, 16, 43], "new": [1, 7, 8, 14, 18, 20, 23, 27, 34, 43, 54], "code": [1, 2, 4, 6, 7, 14, 27], "test": [1, 3, 6, 13, 14, 16, 18, 22, 29, 30, 31, 32, 35, 48, 50], "If": [1, 2, 4, 8, 9, 11, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 35, 37, 41, 42, 43, 44, 48, 54], "function": [1, 2, 6, 7, 20, 27, 31, 48], "alwai": [1, 27], "exercis": 1, "serv": [1, 4, 6], "live": [1, 7], "origin": [1, 3, 5, 7, 18, 27, 43, 44], "intent": [1, 8, 13], "section": [1, 2, 12, 14, 35, 44], "target": [1, 9, 14, 31, 35, 38, 42], "also": [1, 2, 3, 4, 5, 6, 7, 8, 9, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 35, 44], "read": [1, 2, 3, 4, 5, 9, 12, 14, 16, 20, 21, 24, 25, 27, 35, 41, 42, 46, 48], "understand": [1, 6, 43], "how": [1, 6, 7, 12, 14, 16, 19, 20, 21, 23, 24, 25, 26, 27, 29, 35], "handl": [1, 2, 4, 6, 7, 14, 24, 27, 30, 31, 32, 38, 39, 40, 44, 48, 50], "organ": [1, 7, 54], "guidelin": 1, "especi": [1, 2, 16, 48], "applic": [1, 4, 7, 9, 12, 27], "pleas": [1, 9, 26, 54], "keep": [1, 27, 35], "mind": [1, 35], "work": [1, 6, 7, 8, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 35, 36, 41, 45, 49, 51, 54], "fork": 1, "when": [1, 2, 3, 4, 5, 8, 9, 13, 14, 15, 20, 23, 27, 31, 34, 35, 39, 42, 44, 48], "That": [1, 14, 35], "wai": [1, 9, 14, 27, 35, 37, 44], "main": [1, 4, 6, 7, 9, 13, 27, 35, 48, 54], "repo": [1, 4, 16], "clean": 1, "featur": [1, 7, 13, 16, 18, 28, 48, 54], "branch": [1, 16], "check": [1, 2, 4, 6, 8, 11, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 35, 42, 43, 44, 50, 54], "satisfi": 1, "befor": [1, 2, 8, 9, 14, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 34, 35, 43], "thei": [1, 2, 4, 6, 7, 8, 12, 13, 14, 15, 20, 34, 35, 42, 44, 48], "can": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 35, 37, 38, 42, 43, 44, 48, 54], "must": [1, 3, 5, 8, 9, 12, 16, 27, 40, 42, 44], "approv": 1, "two": [1, 4, 6, 8, 9, 14, 16, 18, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 32, 35, 37, 43, 44, 48, 50], "explicitli": 1, "onli": [1, 2, 4, 6, 7, 8, 9, 11, 14, 15, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 32, 33, 35, 36, 37, 41, 42, 43, 44, 45, 51], "except": [1, 27], "other": [1, 2, 3, 4, 7, 14, 16, 21, 26, 27, 30, 32, 35, 41, 43, 48, 50], "where": [1, 3, 6, 8, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 30, 32, 33, 35, 41, 42, 43, 44, 48, 50], "back": 1, "traceabl": 1, "discuss": [1, 7, 20, 29, 43, 54], "suffici": [1, 3, 5, 8, 37], "note": [1, 4, 9, 18, 33, 44, 54], "still": [1, 2, 18, 20, 21, 22, 23, 24, 25, 26, 28, 34, 43], "encourag": 1, "help": [1, 9, 13, 14, 15, 35], "u": [1, 3, 5, 9, 16, 42], "increas": [1, 22], "pace": 1, "veri": [1, 2, 3, 5, 6, 12], "like": [1, 2, 3, 4, 5, 6, 7, 14, 16, 20, 27], "find": [1, 3, 5, 22], "issu": [1, 6, 54], "nobodi": 1, "els": 1, "squash": 1, "commit": 1, "messag": [1, 6, 9, 15, 23, 24, 25, 27, 37, 40, 41, 42, 43, 44, 46, 48, 54], "comment": [1, 27], "fixup": 1, "linter": 1, "us": [1, 2, 4, 6, 7, 11, 12, 13, 15, 17, 27, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 48, 50, 51, 54], "pre": 1, "correct": [1, 2, 43], "header": [1, 11, 14, 24, 25, 33, 35, 43], "address": [1, 27], "similar": [1, 4, 7, 12, 18, 20, 27], "mean": [1, 2, 8, 12, 13, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 43, 44], "result": [1, 4, 8, 9, 18, 27, 41, 43], "exactli": 1, "cowboi": 1, "style": [1, 14, 35], "over": [1, 6, 8, 22, 27], "weekend": 1, "It": [1, 2, 3, 4, 6, 8, 9, 18, 20, 21, 23, 24, 25, 26, 27, 28, 29, 37, 41, 42, 43], "doesn": [1, 8], "matter": 1, "trivial": [1, 13], "chanc": 1, "proper": [1, 8, 9, 44], "Be": 1, "awar": 1, "impact": 1, "proport": [1, 42], "its": [1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 37, 38, 39, 40, 41, 43, 48, 50], "ping": 1, "them": [1, 6, 8, 9, 14, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 35, 41, 43, 53], "necessari": [1, 8, 11], "repeatedli": 1, "start": [1, 2, 3, 5, 7, 8, 9, 11, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 42, 43, 54], "part": [1, 6, 7, 12, 27, 35, 43, 44], "For": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 35, 42, 44, 48, 50], "detail": [1, 2, 3, 4, 5, 9, 11, 12, 13, 14, 20, 27, 29, 30, 32, 33, 35, 43, 44, 50], "thoma": 1, "cokela": 1, "info": [1, 9, 11, 14, 27], "tutori": [1, 16], "sphinx": 1, "rest_syntax": 1, "html": 1, "id8": 1, "type": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 16, 21, 22, 24, 25, 26, 27, 33, 34, 35, 36, 37, 40, 42, 45, 46, 48, 51], "stabl": 1, "against": 1, "accept": [1, 14, 23, 35, 36, 42, 43, 44, 45, 51], "api": [1, 3, 5, 6, 14, 18, 21, 22, 23, 24, 25, 26, 28], "abi": 1, "chang": [1, 2, 4, 7, 9, 11, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 42, 43, 44], "e": [1, 2, 4, 6, 7, 8, 9, 12, 13, 14, 16, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 31, 35, 36, 37, 41, 42, 43, 45, 48, 51, 54], "name": [1, 2, 3, 4, 5, 7, 9, 12, 13, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 29, 31, 35, 37, 38, 40, 41, 42, 46, 48], "convent": [1, 27], "master": [1, 4], "semi": 1, "binari": 1, "good": [1, 3, 5, 6], "same": [1, 8, 23, 27, 34, 37, 42, 43, 44], "build": [1, 14, 27, 31, 35], "dai": 1, "ros_distro": [1, 4, 16, 18], "foxi": [1, 7, 14], "galact": [1, 11, 14], "releas": [1, 4, 7, 16, 27], "version": [1, 6, 16, 44], "non": [1, 7, 20, 27, 37, 53], "brake": 1, "distribut": [1, 16, 54], "three": [1, 2, 4, 11, 12, 16, 27, 35, 43, 50], "stage": [1, 8, 20], "current": [1, 6, 11, 12, 14, 15, 43, 44, 48], "futur": [1, 7, 8, 43, 44], "compat": [1, 2, 7, 14, 16], "packag": [1, 2, 3, 5, 11, 14, 27, 30, 31, 32, 33, 35, 36, 37, 40, 44, 45, 46, 48, 50, 51, 54], "direct": [1, 2, 6, 14, 27, 35, 42], "local": [1, 3, 5, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 41], "possibl": [1, 4, 6, 9, 12, 16, 18, 21, 22, 23, 24, 25, 26, 28, 31, 35, 43], "core": [1, 10, 27], "immedi": [1, 9, 18, 20, 21, 23, 24, 25, 26, 27, 28, 29], "depend": [1, 4, 11, 12, 14, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 34, 35, 43, 48], "fail": [1, 23, 27], "expect": [1, 6, 20, 27, 30, 32, 44, 48, 50], "after": [1, 8, 9, 14, 16, 18, 27, 33, 35, 42, 43, 48, 49], "next": [1, 18, 27, 43], "sync": 1, "abl": 1, "potenti": [1, 35, 42], "mid": 1, "stat": 1, "power": [1, 3, 5, 7, 14], "plausibl": 1, "analyt": 1, "robothw": 2, "rigid": 2, "ani": [2, 4, 7, 8, 9, 11, 12, 16, 20, 27, 35, 42, 44], "imposs": 2, "extend": [2, 4, 6, 8, 14, 35], "exist": [2, 4, 6, 8, 9, 11, 12, 14, 18, 21, 22, 23, 24, 25, 26, 27, 28, 35, 44], "addit": [2, 3, 5, 8, 16, 19, 22, 27], "sensor": [2, 4, 6, 11, 13, 14, 16, 21, 26, 27, 31, 34, 53], "actuat": [2, 4, 6, 11, 12, 13, 14, 16, 20], "tool": [2, 3, 5, 6, 7, 27], "without": [2, 3, 4, 5, 7, 9, 13, 14, 16, 20, 29, 35, 42, 43], "combinedrobothardwar": 2, "drawback": [2, 54], "solut": [2, 7], "optim": [2, 9], "combin": [2, 8, 12, 13, 16, 23, 41, 42, 43, 44], "extern": [2, 4, 6, 8, 13, 16, 31], "defin": [2, 3, 5, 6, 9, 13, 14, 16, 27, 31, 35, 37, 40, 41, 42, 43, 44, 46, 48], "system": [2, 3, 4, 5, 6, 7, 11, 12, 14, 15, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 44, 52, 53, 54], "composit": [2, 7], "basic": [2, 3, 4, 5, 6, 7, 14, 16, 22, 35], "physic": [2, 4, 11, 12, 13], "cell": [2, 37], "surround": 2, "describ": [2, 4, 8, 12, 16, 18, 23, 27, 29, 43], "multi": [2, 4, 6, 7, 16, 23], "gripper": [2, 3, 4, 5, 7, 12, 13, 34], "out": [2, 3, 5, 9, 27, 33], "box": [2, 16, 18, 22, 23, 24, 25, 28, 29], "allow": [2, 3, 4, 5, 16, 27, 39, 42, 43, 44, 47], "joint": [2, 4, 7, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 41, 42, 43, 45, 48, 50, 51, 54], "posit": [2, 3, 4, 5, 7, 9, 12, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 36, 41, 42, 43, 44, 45, 48, 51], "veloc": [2, 3, 4, 5, 7, 8, 16, 21, 22, 23, 27, 31, 32, 33, 34, 39, 40, 41, 42, 43, 44, 45, 48, 51], "effort": [2, 3, 5, 16, 27, 34, 36, 39, 41, 42, 44], "hard": [2, 9], "data": [2, 4, 6, 13, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 34, 41, 43], "approach": [2, 8], "doe": [2, 8, 9, 14, 18, 21, 22, 23, 24, 25, 26, 27, 28, 35, 43, 44], "enforc": [2, 23, 27, 42], "string": [2, 9, 13, 16, 35, 38, 39, 40, 41, 42, 46, 48], "ensur": [2, 7, 9, 27, 43], "constant": [2, 16], "hardware_interfac": [2, 3, 4, 5, 11, 13, 14, 16, 21, 24, 25, 26, 27, 31, 33, 34, 35], "In": [2, 3, 4, 5, 6, 7, 8, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 34, 35, 41, 43, 48], "had": 2, "itself": [2, 8], "took": 2, "care": [2, 6, 9, 14, 23, 35, 44], "regist": [2, 3, 5], "resourc": [2, 3, 5, 14, 23], "conflict": [2, 4, 6], "resourcemanag": [2, 8], "take": [2, 6, 8, 14, 20, 23, 33, 35, 41, 43], "state": [2, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 22, 23, 24, 25, 26, 27, 28, 29, 34, 35, 37, 41, 42], "avail": [2, 4, 7, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 41, 44], "enabl": [2, 4, 6, 7, 11, 14, 15, 16, 22, 31, 37, 48], "anymor": 2, "controllermanag": [2, 9], "implement": [2, 3, 4, 5, 6, 7, 9, 12, 13, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 35, 38, 43, 44, 48, 49, 50, 54], "systeminterfac": [2, 3, 5, 13, 24, 27], "granular": 2, "sensorinterfac": [2, 21, 25], "actuatorinterfac": [2, 21, 26], "abov": [2, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 34, 43], "choos": [2, 16, 48], "suitabl": [2, 7], "strategi": [2, 16, 43], "decid": 2, "which": [2, 3, 4, 5, 6, 7, 9, 14, 15, 16, 18, 22, 23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 37, 40, 41, 42, 43, 44, 46, 48, 49], "case": [2, 3, 5, 6, 7, 8, 16, 20, 27, 35, 41, 43, 44, 54], "mayb": [2, 8], "sens": [2, 4, 34, 37], "multipl": [2, 4, 7, 8, 12, 14, 16, 41, 42], "constructor": [2, 14, 27, 35], "initi": [2, 14, 27, 35, 43], "variabl": [2, 14, 27, 35, 42], "need": [2, 3, 4, 5, 6, 7, 8, 12, 14, 16, 18, 21, 22, 23, 24, 25, 26, 27, 28, 34, 35, 43], "commun": [2, 4, 6, 7, 14, 16, 18, 21, 22, 23, 24, 25, 27, 28, 53], "default": [2, 4, 8, 9, 13, 23, 30, 32, 38, 39, 40, 41, 42, 43, 44, 46, 48, 50], "configur": [2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 41, 42, 43, 44, 48], "paramet": [2, 3, 5, 7, 14, 16, 18, 22, 27, 35, 44], "pars": [2, 3, 5, 9, 10, 12], "urdf": [2, 7, 9, 12, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "snippet": 2, "hardwareinfo": [2, 27], "here": [2, 10, 14, 27, 35, 36, 44, 45, 51], "cross": [2, 41], "valu": [2, 4, 6, 12, 13, 14, 16, 18, 19, 20, 22, 24, 25, 27, 29, 35, 40, 41, 42, 44, 46, 48], "export_": 2, "_interfac": [2, 14], "joint_a2": 2, "extract": [2, 33, 49], "sensibl": 2, "stop": [2, 7, 8, 9, 11, 15, 18, 22, 23, 27, 33, 42, 49], "usual": [2, 4, 9, 13, 14, 27, 35], "includ": [2, 3, 5, 6, 11, 14, 15, 27, 35, 44, 53], "command": [2, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 38, 39, 42, 43, 45, 47, 50, 51, 54], "safe": [2, 27, 33, 35, 44, 49], "interrupt": [2, 9], "stream": [2, 7], "write": [2, 4, 7, 8, 9, 10, 20, 21, 22, 26, 34], "exchang": [2, 6, 18, 21, 22, 23, 24, 25, 26, 28, 54], "equival": [2, 27], "forget": [2, 4, 16, 44], "pluginlib_export_class": [2, 14, 16, 27, 35], "macro": [2, 4, 14, 16, 27, 35], "end": [2, 4, 11, 14, 27, 35, 42, 53], "cpp": [2, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "file": [2, 3, 4, 5, 6, 7, 9, 13, 14, 16, 31, 33, 35, 36, 44, 45, 51], "creat": [2, 3, 4, 5, 7, 9, 13, 14, 16, 27, 35], "xml": [2, 3, 5, 11, 14, 27, 35], "librari": [2, 4, 14, 15, 16, 30, 32, 34, 35, 48, 50], "pluginlib": [2, 3, 4, 5, 9, 14, 27, 35], "exampl": [2, 3, 4, 5, 6, 7, 8, 9, 13, 15, 22, 31, 36, 37, 41, 44, 45, 51, 54], "rrbotsystempositiononlyhardwar": [2, 4, 12, 15, 18, 20, 25], "excel": 2, "jointtrajectorycontrol": [2, 3, 5, 15, 18, 31, 44], "real": [2, 6, 7, 9, 13, 22, 35, 41, 42, 54], "critic": [2, 6], "mark": [2, 20], "controllerinterfac": [2, 4, 8, 15, 27, 35], "member": [2, 14, 27, 35, 43], "init": 2, "call": [2, 3, 4, 5, 8, 14, 22, 27, 35], "lifecycl": [2, 4, 7, 9, 11, 14, 27, 34], "declar": [2, 14, 27, 35], "state_interface_configur": [2, 27, 35], "command_interface_configur": [2, 27, 35], "design": [2, 4, 6, 7, 8, 27, 54], "updat": [2, 4, 8, 9, 16, 27, 34, 35, 44, 48], "manag": [2, 3, 5, 6, 7, 10, 11, 14, 15, 16, 27, 35, 44, 54], "option": [2, 3, 5, 9, 11, 13, 14, 15, 18, 23, 34, 35, 37, 41, 44, 48], "on_configur": [2, 14, 27, 35], "on_activ": [2, 11, 14, 27, 35], "on_deactiv": [2, 11, 14, 27, 35], "deactiv": [2, 4, 15, 18, 42], "final": [2, 7, 11, 27], "joint_trajectory_plugin": 2, "integr": [3, 4, 5, 6, 7, 13, 16, 20, 22, 27, 42, 43, 44, 54], "architectur": [3, 5, 6, 7], "gazebo": [3, 5, 6, 16, 18, 29, 52], "classic": [3, 16, 29, 52], "provid": [3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 16, 18, 20, 23, 24, 25, 26, 27, 28, 29, 31, 35, 41, 42, 43, 44, 48, 54], "instanti": [3, 5, 9], "connect": [3, 4, 5, 13, 16, 24, 27], "model": [3, 5, 18, 27], "cd": [3, 4, 5, 16, 27], "docker": [3, 5, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29], "gui": [3, 5, 16, 18, 20, 21, 23, 24, 25, 26, 28, 29, 47], "properli": [3, 5, 8, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "rm": [3, 4, 5, 16, 18, 29], "net": [3, 5, 7, 16, 18, 29], "host": [3, 5, 16, 18, 29, 53], "ros2": [3, 4, 5, 7, 9, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "launch": [3, 4, 5, 9, 13, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "cart_example_posit": [3, 5], "py": [3, 5, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "fals": [3, 5, 13, 16, 18, 29, 33, 39, 41, 42, 44, 48], "machin": [3, 4, 5, 6, 16, 29], "client": [3, 5, 29, 44], "gzclient": [3, 29], "rocker": [3, 5], "go": [3, 5, 7, 9, 14, 27, 35], "imag": [3, 5, 9, 29], "inject": [3, 5, 7], "nvidia": [3, 5], "And": 3, "user": [3, 5, 6, 9, 16, 27, 43], "id": [3, 5, 15, 18, 21, 22, 23, 24, 25, 26, 28], "specif": [3, 5, 6, 8, 9, 11, 12, 27, 29, 38, 41, 43, 44], "cleaner": [3, 5], "mount": [3, 5], "permiss": [3, 5, 9], "instal": [3, 5, 9, 14, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "instruct": [3, 5, 22, 27, 29], "x11": [3, 5], "latest": [3, 4, 5], "move": [3, 5, 16, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 39], "cart": [3, 5], "rail": [3, 5], "exec": [3, 5, 18], "bash": [3, 4, 5, 14, 16, 18, 27, 35], "home": [3, 5], "ros2_w": [3, 4, 5, 16], "example_posit": [3, 5], "element": [3, 5, 27], "access": [3, 4, 5, 7, 9, 13, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 41], "interfac": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 18, 20, 21, 22, 24, 25, 26, 29, 30, 32, 34, 35, 37, 40, 42, 43, 46, 50, 52, 53, 54], "gazebosystem": 3, "hardwar": [3, 5, 7, 8, 10, 13, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 33, 34, 35, 42, 49, 54], "slider_to_cart": [3, 5, 36, 45, 51], "command_interfac": [3, 4, 5, 12, 20, 27, 31, 42, 44], "param": [3, 4, 5, 9, 12, 13, 22, 27], "min": [3, 4, 5, 12, 27], "1000": [3, 5, 27], "max": [3, 4, 5, 12, 27, 39], "state_interfac": [3, 4, 5, 12, 27, 31, 42, 44], "initial_valu": [3, 5, 27], "mimick": [3, 5, 13], "manual": [3, 4, 5, 6, 9, 14, 16, 18, 23, 24, 25, 26, 28, 29, 35, 54], "multipli": [3, 5, 13], "definit": [3, 4, 5, 9, 14, 27, 31, 33, 34, 35, 37, 42], "left_finger_joint": [3, 5], "prismat": [3, 5], "right_finger_joint": [3, 5], "axi": [3, 5, 6, 27, 30, 32, 33, 37, 50], "xyz": [3, 5, 27], "rpy": [3, 5, 27], "1415926535": [3, 5], "parent": [3, 5, 14, 27, 35], "base": [3, 4, 5, 7, 11, 14, 15, 16, 21, 22, 26, 27, 33, 35, 38, 48, 49, 52], "child": [3, 5, 12, 27], "finger_left": [3, 5], "lower": [3, 5, 27], "upper": [3, 5, 27], "actual": [3, 5, 8], "load": [3, 4, 5, 9, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 34, 35], "appropri": [3, 5, 6, 43], "By": [3, 5, 9, 27, 41, 43], "though": [3, 5, 20], "extens": [3, 5], "via": [3, 4, 5, 16, 18, 24, 25, 27, 29, 44], "between": [3, 4, 5, 6, 11, 12, 16, 27, 30, 32, 41, 42, 43, 44, 50], "filenam": [3, 5, 27], "libgazebo_ros2_control": 3, "so": [3, 4, 5, 8, 9, 14, 27, 31, 35, 44], "robot_param": [3, 5], "robot_descript": [3, 5, 9, 18, 27], "robot_param_nod": [3, 5], "robot_state_publish": [3, 5, 41], "config": [3, 5, 16], "cartpole_control": [3, 5], "yaml": [3, 4, 5, 6, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 44], "locat": [3, 27, 31], "server": [3, 39, 44], "node": [3, 4, 5, 9, 11, 13, 15, 18, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "attempt": [3, 5, 9, 44], "get": [3, 5, 7, 8, 9, 11, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 43, 54], "most": [3, 5, 6, 14, 16, 27, 35], "least": [3, 5, 12, 14, 35, 44], "jointstateinterfac": [3, 5], "effortjointinterfac": [3, 5], "velocityjointinterfac": [3, 5], "complex": [3, 4, 5, 6, 7, 8], "mechan": [3, 5, 8, 44], "nonlinear": [3, 5], "spring": [3, 5], "linkag": [3, 5, 18, 20, 28], "etc": [3, 5, 9, 23, 27, 54], "These": [3, 5, 16, 27], "inherit": [3, 5, 9, 27], "gazebosysteminterfac": 3, "level": [3, 5, 6, 7, 9, 20, 21, 26, 36, 43, 45, 51], "properti": [3, 5, 27], "sub": [3, 5], "class": [3, 4, 5, 7, 9, 11, 14, 15, 27, 35, 38, 43], "specifi": [3, 5, 9, 14, 16, 27, 34, 35, 42, 43, 44], "insid": [3, 5, 13, 16, 18], "publish": [3, 5, 6, 8, 12, 16, 19, 27, 31, 34, 37, 40, 41, 43, 46, 49, 54], "stateinterfac": [3, 5, 27], "topic": [3, 5, 6, 7, 8, 12, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 34, 44, 52], "sensor_msg": [3, 5, 40, 46], "msg": [3, 5, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 33, 36, 37, 38, 40, 43, 44, 45, 46, 48, 51], "jointstat": [3, 5], "joint_state_control": [3, 5, 15], "ros__paramet": [3, 5, 36, 44, 45, 51], "jointstatecontrol": [3, 5, 15], "action": [3, 5, 8, 42], "cart_pole_control": [3, 5], "follow_joint_trajectori": [3, 5, 44], "followjointtrajectori": [3, 5, 42, 44], "joint_trajectory_control": [3, 5, 6, 15, 18, 34, 47], "write_op_mod": [3, 5], "contain": [3, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 36, 42, 43, 45, 48, 51], "content": [3, 14, 27, 35], "There": [3, 4, 5, 9, 11, 14, 16, 21, 24, 25, 26, 35, 43, 44], "meter": [3, 5, 27], "cart_example_veloc": [3, 5], "cart_example_effort": [3, 5], "diff_driv": 3, "tricycle_dr": 3, "world": [3, 5, 9, 13, 27], "example_veloc": [3, 5], "example_effort": [3, 5], "example_diff_dr": [3, 5], "example_tricycle_dr": [3, 5], "parallel": [3, 4, 5, 12, 13], "gripper_mimic_joint_exampl": [3, 5], "send": [3, 5, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 43, 44], "example_gripp": [3, 5], "iron": [4, 16, 27], "want": [4, 8, 9, 16], "download": [4, 16], "mkdir": [4, 16], "p": [4, 9, 16, 42], "src": [4, 14, 16, 18, 27, 29, 31, 35], "wget": 4, "raw": 4, "githubusercont": 4, "com": [4, 6, 16, 27], "org": [4, 6, 30, 32, 50], "ros_control": [4, 6, 7, 54], "vc": [4, 16], "import": [4, 14, 16, 27, 35, 42], "rosdep": [4, 16], "rosdistro": [4, 16], "sudo": [4, 9, 16], "apt": [4, 16], "path": [4, 7, 16, 27, 44], "ignor": [4, 9, 16, 33, 42, 48, 49], "r": [4, 16, 28], "y": [4, 16, 22, 24, 25, 31, 37, 40], "everyth": [4, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 35], "opt": [4, 16, 18], "setup": [4, 13, 14, 16, 18, 22, 27, 29, 35, 43], "sh": [4, 16, 18, 29], "colcon": [4, 14, 16, 27, 35], "symlink": [4, 16, 27], "folder": [4, 7, 14, 16, 18, 19, 22, 30, 31, 32, 35, 48, 50], "found": [4, 9, 10, 14, 18, 19, 22, 31, 33, 35, 38, 44, 54], "github": [4, 6, 10, 16, 27, 34, 52, 53, 54], "figur": [4, 43], "uml": 4, "diagram": [4, 15], "intern": [4, 6, 8, 12, 14, 18, 20, 21, 22, 23, 24, 25, 26, 28, 31, 43, 44], "cm": [4, 9], "abstract": [4, 7, 11, 27], "side": [4, 6, 7], "entri": [4, 35], "point": [4, 27, 35, 42, 43, 44, 54], "servic": [4, 6, 9, 11, 27, 34], "executor": [4, 9], "custom": [4, 12, 13, 16, 21, 22, 37, 41, 52], "howev": [4, 6, 8, 9, 16, 20, 27], "recommend": [4, 7, 14], "ros2_control_nod": [4, 23, 27], "controller_manag": [4, 5, 6, 9, 15, 23, 34, 35, 36, 44, 45, 51], "assum": [4, 8], "On": [4, 27], "hand": [4, 27, 53], "unload": [4, 9, 15], "match": [4, 16, 43], "report": [4, 6, 41, 54], "error": [4, 6, 9, 14, 20, 23, 27, 35, 41, 42, 44], "execut": [4, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 35, 39, 42, 43, 44, 50], "loop": [4, 7, 9, 13, 18, 23, 24, 25, 26, 27, 28, 29, 35, 41, 42, 44, 48], "output": [4, 6, 7, 12, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 37], "driver": [4, 7, 16, 27, 53], "reus": [4, 7, 8], "flexibl": 4, "motor": [4, 8, 53], "encod": [4, 27], "theori": [4, 54], "compar": [4, 6, 7], "refer": [4, 8, 20, 27, 53], "measur": [4, 13, 21, 31, 37, 41, 42, 53], "calcul": [4, 27, 31, 43, 48], "input": [4, 6, 7, 8, 12, 19, 20, 27, 31, 33, 36, 38, 42, 43, 45, 48, 49, 51], "object": [4, 27], "deriv": [4, 42, 43], "controller_interfac": [4, 15, 27, 31, 35, 37, 40, 46], "export": [4, 8, 9, 14, 16, 27, 31, 35], "plugin": [4, 9, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 35, 47], "forwardcommandcontrol": [4, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29], "lifecyclenod": 4, "document": [4, 6, 7, 12, 13, 14, 16, 22, 33, 34, 43, 44], "interact": [4, 7, 9, 15, 19, 27, 29], "srv": [4, 44], "controller_manager_msg": 4, "while": [4, 6, 7, 27, 43], "directli": [4, 18, 20, 29, 54], "line": [4, 10, 11, 14, 18, 27, 35, 41, 43], "friendli": 4, "cli": [4, 9, 10, 15, 18, 19, 22, 23, 24, 25, 26, 28, 29], "auto": [4, 9], "complet": [4, 11, 20, 27, 43], "rang": [4, 12, 34], "common": [4, 6, 16, 41, 54], "capabl": [4, 6], "realiz": [4, 7, 43, 44], "repres": [4, 11, 27, 33, 34, 43], "dynam": [4, 14, 27, 35], "dof": [4, 12, 16, 27, 39], "differ": [4, 6, 7, 12, 14, 16, 18, 19, 22, 23, 27, 36, 37, 41, 43, 45, 48, 51], "transmiss": [4, 16], "humanoid": 4, "logic": 4, "channel": [4, 53], "kuka": [4, 18, 23, 24, 25, 53], "rsi": [4, 18, 24, 25, 53], "relat": [4, 6, 7], "forc": [4, 7, 12, 15, 24, 25, 31, 34, 53], "torqu": [4, 12, 24, 25, 31, 34], "simpl": [4, 6, 7, 8, 14, 16, 18, 20, 22, 27, 28, 35, 39], "valv": [4, 12], "mandatori": [4, 9, 37, 42], "dc": 4, "arduino": [4, 21, 26], "board": 4, "modular": [4, 7, 16, 27], "independ": [4, 7, 25], "explan": [4, 9, 14], "given": [4, 9, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 36, 42, 43, 44, 45, 51], "through": [4, 6, 7, 8, 9, 14, 15, 16, 20, 27, 35, 44, 54], "tag": [4, 9, 12, 14, 16, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 35, 54], "chosen": [4, 12], "structur": [4, 6, 8, 9, 14, 27, 33, 35, 42, 43], "track": [4, 30, 50, 54], "togeth": [4, 8, 12, 22, 24, 48], "xacro": [4, 9, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "hereund": 4, "rrbot": [4, 12, 15, 16, 19, 21, 23, 24, 25, 26, 28], "effector": [4, 53], "site": 4, "rrbotsystempositiononli": [4, 25], "ros2_control_demo_hardwar": [4, 12, 15], "example_param_write_for_sec": 4, "example_param_read_for_sec": [4, 12], "joint1": [4, 12, 13, 15, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 44], "joint2": [4, 12, 15, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 44], "rrbotforcetorquesensor1d": 4, "forcetorquesensor1dhardwar": 4, "tcp_fts_sensor": [4, 12, 24, 25], "frame_id": [4, 12, 24, 25, 37, 40, 46, 48], "rrbot_tcp": 4, "min_forc": 4, "max_forc": 4, "rrbotgripp": 4, "positionactuatorhardwar": 4, "gripper_joint": 4, "instead": [4, 13, 22, 27, 29, 42], "pure": 4, "stack": [4, 7, 54], "could": [4, 7, 8, 16, 23, 35, 41, 44], "altern": [4, 18, 44], "script": [4, 6, 14, 35], "skeleton": 4, "sim": [5, 15, 52], "dockerfil": [5, 16], "Then": [5, 8, 16, 27, 29, 43], "ign": 5, "meet": [5, 54], "prerequisit": 5, "along": 5, "gazebosimsystem": 5, "libgz_ros2_control": 5, "gazebosimros2controlplugin": 5, "gazebosimsysteminterfac": 5, "controller_manager_prefix_node_nam": 5, "diff_drive_exampl": 5, "tricycle_drive_exampl": 5, "about": [6, 8, 13, 14, 23, 33, 40, 41, 44, 54], "gener": [6, 7, 12, 14, 15, 21, 22, 23, 24, 25, 26, 27, 34, 35, 44, 48, 54], "task": [6, 7, 33], "envis": 6, "simul": [6, 13, 15, 16, 18, 20, 22, 24, 25, 27], "ignit": 6, "showcas": [6, 7], "grace": 6, "degrad": 6, "roadmap": [6, 16, 54], "place": [6, 35], "draft": 6, "gpio": [6, 16, 27], "mode": [6, 8, 14, 20, 23, 31, 42, 43, 48], "switch": [6, 15, 16, 18, 23], "movement": 6, "safeti": [6, 27], "skill": 6, "prefer": 6, "c": [6, 9, 12, 14, 15, 18, 27], "familiar": [6, 54], "mentor": 6, "\u0161togl": [6, 7], "size": [6, 46], "350": 6, "hour": 6, "difficulti": 6, "medium": 6, "focus": [6, 7, 8], "although": [6, 8, 11, 12, 44], "easi": 6, "therefor": [6, 8, 9, 16, 35, 41, 42, 44], "often": [6, 13, 22, 35, 41], "orchestr": 6, "purpos": [6, 18, 20, 21, 23, 24, 25, 26, 27, 28, 29], "conductor": 6, "scenario": [6, 43], "moment": [6, 8, 44], "right": [6, 16], "replac": [6, 11, 34, 44], "high": [6, 9, 43], "moveit2": [6, 7, 34, 53], "simplecontrollermanag": 6, "goal": [6, 7, 12, 18, 23, 24, 25, 26, 28, 29, 39, 42, 44, 54], "form": [6, 16], "behavior": [6, 13, 27, 43], "benchmark": 6, "statu": [6, 8, 11, 15, 18, 42], "format": [6, 27, 31, 41, 44], "preset": 6, "modul": [6, 20], "reli": 6, "doubl": [6, 13, 18, 27, 30, 32, 39, 42, 46, 48, 50], "desir": [6, 42, 44], "both": [6, 7, 20, 27, 28, 41, 42, 43, 44], "improv": 6, "readabl": [6, 27], "earlier": 6, "concept": [6, 7, 8, 13, 16, 18], "introduc": [6, 7, 8, 18, 27], "essenti": [6, 18], "group": [6, 8, 9, 12, 44, 54], "instanc": [6, 9, 20, 41], "imu": [6, 12, 34], "typic": [6, 12, 22, 41, 42], "acceleromet": 6, "gyroscop": 6, "compass": 6, "Such": [6, 20], "struct": 6, "low": [6, 7], "profil": 6, "relev": [6, 42, 48, 54], "addition": [6, 27, 30, 32, 50, 54], "few": [6, 7, 34], "175": 6, "rewrit": [6, 54], "rich": 6, "wa": [6, 14, 18, 22, 23, 27, 35, 43], "motiv": 6, "adopt": 6, "port": [6, 11, 12], "quit": 6, "miss": [6, 41, 43, 44], "diff_drive_control": [6, 8, 15, 22], "consist": [6, 44, 54], "onc": [6, 7, 18, 22, 23, 24, 25, 27, 28, 34], "identifi": [6, 27], "much": [6, 8, 18, 21, 22, 23, 24, 25, 26, 28, 35, 44], "303": 6, "304": 6, "stretch": 6, "81": 6, "302": 6, "unit": 6, "gmock": 6, "cc": [7, 43, 44], "BY": [7, 43, 44], "licens": [7, 43, 44], "author": [7, 8], "either": [7, 18, 23, 24, 25, 26, 28, 29, 43], "down": [7, 27], "below": [7, 9, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 42, 43, 44], "compani": 7, "my": 7, "company_nam": 7, "tricycl": [7, 34, 49], "control": [7, 10, 11, 12, 13, 14, 15, 16, 30, 32, 37, 40, 41, 42, 43, 46, 49, 50, 53, 54], "event": 7, "pixel": 7, "prefac": 7, "introduct": 7, "plapp": 7, "kernel": [7, 9], "agnost": [7, 27], "share": [7, 14, 27, 29, 35, 48], "well": [7, 9, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 44], "perform": [7, 9, 27], "heavi": 7, "stogl": 7, "consult": 7, "practition": 7, "guid": [7, 14, 35], "top": 7, "virtual": [7, 8, 32], "talk": 7, "delv": 7, "deeper": 7, "what": [7, 18, 27], "explicit": [7, 9, 27, 42], "chain": [7, 10, 15, 16, 27, 31, 42, 48], "emerg": 7, "handler": 7, "mock": [7, 10, 14], "usag": [7, 8, 9, 12, 15, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28], "openli": 7, "record": 7, "fiveai": 7, "ltd": 7, "best": [7, 9, 35], "focu": [7, 8], "becom": [7, 20], "util": 7, "3rd": 7, "parti": 7, "nav2": [7, 34], "practic": 7, "tip": [7, 27], "hot": 7, "shown": [7, 27, 43], "furthermor": [7, 22], "offer": [7, 9, 14, 27], "expos": [7, 16, 20], "problem": [7, 54], "manipul": [7, 16, 18, 20, 27, 28, 42], "plan": [7, 54], "autonom": 7, "navig": 7, "ideal": [7, 13], "made": [7, 11], "mobil": [7, 16, 22, 33, 48, 49], "arm": [7, 18, 20, 28], "extra": [7, 27, 41], "readi": [7, 14, 16, 20, 34, 35], "studi": 7, "ur": 7, "With": [7, 27, 29, 44], "moveit": [7, 13], "ingredi": 7, "run": [7, 8, 9, 13, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 34, 43, 48], "scale": [7, 42], "factor": 7, "teach": 7, "pendant": 7, "influenc": 7, "picknik": 7, "inc": 7, "lovro": 7, "ivanov": 7, "zelenak": 7, "rune": 7, "s\u00f8e": 7, "knudsen": 7, "onlin": [7, 14, 35], "trajectori": [7, 18, 27, 34, 42, 54], "admitt": [7, 34], "One": [7, 8], "reason": [7, 8, 9, 27], "upgrad": 7, "ros1": [7, 16], "better": 7, "realtim": [7, 9, 27, 33, 44, 49, 54], "contact": 7, "insert": 7, "singl": [7, 24, 39], "waypoint": [7, 43, 44], "mani": [7, 27, 34, 35], "teleoper": 7, "involv": 7, "kinemat": [7, 8, 16, 22, 27, 30, 31, 32, 48, 50], "acceler": [7, 16, 23, 27, 31, 33, 40, 42, 43, 44, 49], "jerk": [7, 33, 49], "obei": [7, 27], "demo": [7, 12], "booth": 7, "zeleank": 7, "unifi": 7, "life": [7, 27], "cycl": [7, 27, 34], "_control": [7, 16], "wild": 7, "materi": 7, "quick": [7, 11], "overview": 7, "layer": 7, "aka": 7, "systemcompon": 7, "forward": [7, 13, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 34, 42, 44, 54], "done": [7, 8, 14, 18, 21, 22, 23, 24, 25, 26, 27, 28, 34, 35], "look": [7, 22], "modifi": 7, "simpli": [7, 9, 18, 43, 44], "edit": 7, "collect": [7, 36, 45, 51], "semant": [7, 12, 31, 37, 40, 46], "monolit": 7, "controlko": 7, "propos": [8, 54], "minim": [8, 54], "viabl": [8, 27], "serial": [8, 27], "tri": [8, 42], "clariti": 8, "arbitrari": [8, 27, 44], "order": [8, 27], "nevertheless": 8, "convinc": 8, "would": [8, 41], "unnecessari": 8, "long": 8, "term": [8, 54], "clearer": 8, "let": [8, 16, 18, 20, 21, 22, 23, 24, 25, 26, 28], "yet": [8, 9, 16, 20, 33, 43, 44], "controllers_chain": 8, "doc": [8, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 54], "position_track": 8, "pid": [8, 42, 43, 44, 54], "now": [8, 9, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 43], "imagin": 8, "flexibli": 8, "preced": 8, "step": [8, 14, 16, 35, 43, 54], "At": [8, 14, 20, 35], "attach": 8, "disabl": [8, 13, 48], "subscrib": [8, 19, 20, 27], "differenti": [8, 16, 22, 32, 33, 34, 54], "interfaceconfigur": [8, 27], "input_interface_configur": 8, "const": [8, 11, 27], "anoth": [8, 9, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 44], "simplic": [8, 27], "try": [8, 27], "exclus": [8, 27], "rather": [8, 16, 43], "void": 8, "set_chained_mod": 8, "bool": [8, 39, 42, 48], "flag": [8, 14, 35, 42], "on_set_chained_mod": 8, "pid_refer": 8, "controller_nam": [8, 9, 15, 31, 35, 44, 48], "v_x": 8, "v_y": 8, "w_z": 8, "cmd_vel": [8, 33], "cmd_vel_unstamp": [8, 22, 33], "Its": [8, 54], "continu": [8, 42, 43, 44], "chainabl": [8, 16, 20, 33, 44], "ownership": 8, "process": [8, 14, 27, 35, 43], "claim": [8, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "vector": [8, 20, 27, 35], "invers": [8, 27], "rule": [8, 9, 14, 35], "think": [8, 16], "break": [8, 13], "middl": [8, 32], "unavail": [8, 20], "anyth": 8, "confus": 8, "irelev": 8, "feasibl": 8, "interface_configuration_typ": 8, "littl": 9, "jitter": 9, "normal": [9, 27, 42], "linux": 9, "comput": [9, 16, 33, 48, 49], "throughput": 9, "suit": 9, "easiest": [9, 14, 35], "ubuntu": 9, "lt": 9, "beta": 9, "rt": 9, "amd64": 9, "debian": 9, "bullsey": 9, "thread": [9, 27], "sched_fifo": 9, "prioriti": 9, "addgroup": 9, "usermod": 9, "whoami": 9, "afterward": 9, "secur": 9, "conf": [9, 27], "soft": 9, "rtprio": 9, "memlock": 9, "102400": 9, "appli": [9, 15, 27, 33, 44], "log": 9, "again": [9, 11, 18, 22, 27], "hardware_components_initial_st": 9, "map": [9, 13, 41, 44], "attribut": [9, 27], "full": [9, 14, 16, 35], "unconfigur": [9, 11, 18, 27], "arm1": 9, "arm2": 9, "inact": [9, 15, 18, 23, 27, 34], "base3": 9, "empti": [9, 35, 40, 44, 48], "update_r": [9, 34, 36, 45, 51], "integ": [9, 34], "frequenc": [9, 34], "startup": 9, "h": [9, 14, 15, 35], "param_fil": 9, "n": 9, "namespac": [9, 14, 27, 34, 35, 41], "controller_typ": 9, "timeout": [9, 15, 39, 42, 48, 49], "controller_manager_timeout": 9, "argument": [9, 14, 15, 18, 21, 22, 23, 24, 25, 26, 28], "exit": [9, 15], "leav": 9, "kill": [9, 15, 27], "wait": [9, 15, 26, 42], "until": [9, 27, 42, 43], "mai": [9, 11, 24, 34, 36, 45, 51], "taken": [9, 48], "becaus": [9, 12, 18, 20, 21, 22, 23, 24, 25, 26, 28, 43], "rclcpp": [9, 14, 27, 35], "than": [9, 39, 42, 44, 48], "global": 9, "remap": 9, "forcibli": 9, "lead": [9, 44], "duplic": [9, 48], "occur": [9, 27], "whether": 9, "sibl": 9, "hierarchi": 9, "workaround": 9, "nodeopt": 9, "pass": [9, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28], "caus": [9, 43, 44, 48], "get_cm_node_opt": 9, "arg": 9, "_target_node_nam": 9, "__node": 9, "dst_node_nam": 9, "std": [9, 27, 42], "make_shar": 9, "some_optional_namespac": 9, "simplest": 9, "switch_control": [9, 18], "broadcast": [9, 12, 13, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 41], "achiev": [9, 27, 36, 45, 51], "return": [9, 11, 14, 18, 27, 35, 39, 41, 43], "NOT": 9, "FOR": 9, "detect": 9, "listen": [9, 42], "doxygen": [10, 14], "cascad": 10, "return_typ": [11, 27, 35], "on_error": [11, 14, 27], "previous_st": [11, 27], "success": [11, 14, 27, 35, 39], "callbackreturn": [11, 14, 27], "failur": 11, "recov": 11, "reload": [11, 15], "substanti": 11, "renam": 11, "on_init": [11, 14, 27, 35], "baseinterfac": 11, "remov": 11, "base_interfac": 11, "hpp": [11, 14, 16, 27, 31, 35], "hardware_interface_status_valu": 11, "rclcpp_lifecycl": [11, 14, 27, 35], "strictli": [11, 12], "status_": 11, "in_deactiv": 11, "undefin": 11, "refern": 11, "symbol": 11, "node_interfac": [11, 27], "lifecyclenodeinterfac": [11, 14, 27], "rclcpp_lifecyl": 11, "cmakelist": [11, 14, 27, 35], "txt": [11, 14, 27, 35], "devic": [12, 53], "associ": 12, "joint_state_broadcast": [12, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "coupl": 12, "ship": 12, "cannot": [12, 20, 27, 44], "keyword": 12, "digit": 12, "signal": 12, "electr": 12, "analog": 12, "within": [12, 18], "vacuum": [12, 19], "flang": 12, "off": 12, "rrbotsystemmutiplegpio": 12, "example_param_hw_start_duration_sec": 12, "example_param_hw_stop_duration_sec": 12, "example_param_hw_slowdown": 12, "flange_digital_io": 12, "digital_output1": 12, "know": 12, "digital_output2": 12, "digital_input1": 12, "digital_input2": 12, "flange_analog_io": [12, 19], "analog_output1": [12, 19], "analog_input1": [12, 19], "analog_input2": [12, 19], "flange_vacuum": [12, 19], "suction": 12, "grasp": 12, "multimod": 12, "multimodalgripp": 12, "parallel_fing": 12, "temperatur": [12, 16], "feedback": [12, 13, 21, 41, 42, 44, 48, 49], "adjust": [12, 15, 18, 27], "calibr": 12, "2d": [12, 24, 25], "ft": [12, 24, 25, 37], "choic": [12, 48], "matric": 12, "rrbotforcetorquesensor2d": 12, "forcetorquesensor2dhardwar": 12, "fx": 12, "tz": 12, "kuka_tcp": 12, "fx_rang": 12, "tz_rang": 12, "temp_feedback": 12, "calibration_matrix_nr": 12, "mirror": 13, "correspond": [13, 14, 27, 35, 48, 54], "offlin": 13, "advantag": 13, "pipe": 13, "even": [13, 20, 44], "debug": 13, "boost": 13, "mimic": 13, "offset": [13, 41, 42], "fake": 13, "disable_command": 13, "boolean": [13, 34, 41, 42], "erron": [13, 27], "noth": 13, "suddenli": 13, "Or": [13, 18, 23, 24, 25, 26, 28, 29], "mock_sensor_command": 13, "position_state_following_offset": 13, "custom_interface_with_following_offset": 13, "compil": [14, 27, 29, 35], "prepar": [14, 23, 35], "ament_cmak": [14, 35], "search": [14, 35], "recent": [14, 35], "pkg": [14, 35], "package_nam": [14, 35], "alreadi": [14, 15, 16, 18, 20, 27, 29, 34, 35, 44], "robot_hardware_interface_nam": 14, "visibility_control": [14, 35], "window": [14, 35], "copi": [14, 35], "prefix": [14, 31, 35, 37, 40, 46], "guard": [14, 35], "ifndef": [14, 35], "preprocessor": [14, 35], "engin": [14, 35], "friend": [14, 35], "interface_typ": [14, 35], "uniqu": [14, 27, 35], "written": [14, 21, 26, 27, 35], "snake_cas": [14, 35], "interfacetyp": 14, "hardwareinterfacenam": 14, "public": [14, 27, 35], "on_cleanup": [14, 27], "on_shutdown": [14, 27], "overrid": [14, 27, 35, 36, 44, 45, 51], "export_state_interfac": [14, 27], "export_command_interfac": [14, 27], "prepare_command_mode_switch": 14, "perform_command_mode_switch": 14, "further": [14, 35], "exact": [14, 35], "simplifi": [14, 27, 35, 54], "valid": [14, 16, 46], "fine": [14, 22, 35], "otherwis": [14, 16, 35, 41, 42], "opposit": [14, 35], "remind": 14, "joint_nam": [14, 31, 35, 42], "shutdown": [14, 27], "gracefulli": 14, "store": [14, 35], "close": [14, 35], "class_list_macro": [14, 27, 35], "my_hardware_interface_packag": 14, "robothardwareinterfacenam": 14, "second": [14, 15, 18, 20, 23, 24, 25, 26, 27, 28, 29, 35, 43, 54], "visibl": [14, 35], "mock_compon": [14, 22], "bottom": [14, 27, 35], "test_load_": [14, 35], "load_generic_system_2dof": 14, "test_generic_system": 14, "find_packag": [14, 35], "directori": [14, 35], "ament": [14, 35], "cmake": 14, "pluginlib_export_plugin_description_fil": [14, 27, 35], "ament_cmake_gmock": [14, 35], "ament_add_gmock": [14, 35], "ament_export_librari": [14, 35], "ament_packag": [14, 35], "test_depend": [14, 35], "rememb": [14, 35], "root": [14, 35], "workspac": [14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35], "enjoi": [14, 35], "great": [14, 35], "templat": [14, 16, 27, 35], "shell": [14, 35], "onward": 14, "spin": 15, "spin_tim": 15, "hidden": 15, "discoveri": 15, "daemon": 15, "test_controller_nam": 15, "test_control": 15, "diffdrivecontrol": [15, 22], "verbos": 15, "label": [15, 21, 22, 24, 25, 26, 43], "unclaim": [15, 20, 23], "ctrl1": 15, "ctrl2": 15, "strict": 15, "asap": 15, "switch_timeout": 15, "tmp": 15, "controller_diagram": 15, "gv": 15, "pdf": [15, 27], "demonstr": [16, 18, 20, 22, 23, 28, 29], "prove": 16, "checkout": 16, "roscon2022_workshop": 16, "hardwareinterfac": [16, 27], "diffbot": 16, "degre": [16, 27, 44, 48], "freedom": [16, 27, 48], "components_architecture_and_urdf_exampl": 16, "revolut": [16, 18, 20, 27, 28], "drive": [16, 22, 30, 32, 33, 34, 48, 49, 50, 54], "accord": [16, 22, 27], "intermedi": 16, "car": 16, "steer": [16, 30, 32, 34, 48, 49, 50], "tba": 16, "tabl": 16, "offici": [16, 53], "easili": 16, "aptitud": 16, "might": [16, 43], "own": [16, 18, 27], "git": [16, 27], "clone": [16, 27], "b": [16, 27], "merg": 16, "f": 16, "procedur": 16, "rviz2": [16, 18, 29], "visual": [16, 18, 25, 27, 41], "joint_state_publisher_gui": [16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "bring": 16, "ros2_control_demo_example_1": [16, 18], "view_robot": [16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "omit": 16, "termin": [16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "example_1": [16, 18, 19, 20, 29], "rviz": [16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 41], "slider": 16, "around": [16, 37, 40, 42, 46], "ros2_control_demo_example_2": [16, 22], "come": [16, 44], "categori": 16, "individu": [16, 35, 46], "position_in_degre": 16, "hardware_interface_type_valu": [16, 31], "6dof": 16, "variou": [18, 28], "invert": 18, "pendulum": 18, "fun": 18, "proprietari": [18, 21, 22, 23, 24, 25, 26, 28], "view": [18, 27], "recreat": 18, "robotmodel": 18, "displai": [18, 20, 21, 23, 24, 25, 26, 28, 29], "ros2_control_demo_descript": 18, "ok": [18, 21, 22, 23, 24, 25, 26, 27, 28, 35], "warn": [18, 21, 22, 23, 24, 25, 26, 28, 41], "invalid": [18, 21, 22, 23, 24, 25, 26, 28], "frame": [18, 21, 22, 23, 24, 25, 26, 27, 28, 37], "odom": [18, 21, 22, 23, 24, 25, 26, 28, 33, 48], "cantransform": [18, 21, 22, 23, 24, 25, 26, 28], "target_fram": [18, 21, 22, 23, 24, 25, 26, 28], "happen": [18, 21, 22, 23, 24, 25, 26, 27, 28], "ctrl": 18, "lot": [18, 20, 21, 22, 23, 24, 25, 26, 28], "exemplari": [18, 21, 23, 24, 25, 26, 28, 30, 32, 48, 50], "orang": [18, 20, 21, 22, 23, 24, 25, 26, 28, 29], "yellow": [18, 20, 21, 23, 24, 25, 26, 28, 29], "rectangl": [18, 20, 21, 23, 24, 25, 26, 28], "introspect": [18, 20, 21, 22, 23, 24, 25, 26, 28], "list_hardware_interfac": [18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "entrypoint": 18, "nomin": 18, "marker": [18, 20, 21, 22, 23, 24, 25, 26, 28, 29], "list_control": [18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "jointstatebroadcast": [18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "forward_position_control": [18, 19, 20, 23, 24, 25, 26, 28, 29], "forward_command_control": [18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 36, 45, 51], "pub": [18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "std_msg": [18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 36, 38, 45, 51], "float64multiarrai": [18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 36, 38, 45, 51], "everi": [18, 23, 24, 25, 26, 27, 28, 29, 34, 38, 42, 54], "test_forward_position_control": [18, 23, 24, 25, 26, 28, 29], "block": [18, 20, 21, 23, 24, 25, 26, 27, 28], "got": [18, 19, 20, 21, 22, 23, 24, 25, 26], "50000": [18, 20, 24, 25, 26], "echo": [18, 19, 20, 22, 24, 25, 29], "joint_stat": [18, 20, 22, 29, 41], "dynamic_joint_st": [18, 20, 29, 41], "load_control": 18, "joint_trajectory_position_control": 18, "successfulli": [18, 21, 26], "set_controller_st": 18, "rrbot_control": [18, 19, 20, 28, 29], "four": [18, 21, 30], "test_joint_trajectory_control": 18, "rrbot_joint_trajectory_publish": 18, "rrbot_descript": [18, 19, 20, 21, 23, 24, 25, 26, 28, 29], "rrbot_forward_position_publish": [18, 29], "ros2_control_demo_example_10": 19, "contrast": 19, "gpio_control": 19, "gpiocontrol": 19, "interface_nam": [19, 37, 38], "1199574016": 19, "1676318848": 19, "rrbotsystemwithgpiohardwar": 19, "gp": 19, "example_12": 20, "been": 20, "known": 20, "passthrough_control": 20, "ros2_control_demo_example_12": 20, "ident": [20, 22, 27, 29, 43], "joint2_position_control": 20, "passthroughcontrol": 20, "joint1_position_control": 20, "someth": 20, "automat": [20, 27, 29, 33, 49], "appear": 20, "whose": [20, 43], "henc": [20, 27], "launch_chained_control": 20, "position_control": [20, 34, 38], "streamlin": 20, "clearli": 20, "sent": [20, 42], "reflect": 20, "canopen_402": [21, 26], "modbu": [21, 26], "rs232": [21, 26], "rs485": [21, 26], "ros2_control_demo_example_14": 21, "rrbot_modular_actuators_without_feedback_sensors_for_position_feedback": 21, "list_hardware_compon": [21, 22, 24, 25, 26], "rrbotmodularjoint2": [21, 26], "rrbotactuatorwithoutfeedback": 21, "rrbotmodularjoint1": [21, 26], "rrbotmodularpositionsensorjoint2": 21, "rrbotsensorpositionfeedback": 21, "rrbotmodularpositionsensorjoint1": 21, "forward_velocity_control": [21, 23], "000000": 21, "00000": [21, 22, 23], "25300": 21, "rrbot_actuator_without_feedback": 21, "rrbot_sensor_for_position_feedback": 21, "example_2": 22, "excess": 22, "print": [22, 41], "left_wheel_joint": 22, "right_wheel_joint": 22, "diffbot_base_control": 22, "diff": 22, "geometry_msg": [22, 24, 25, 33, 37, 48], "twist": [22, 33, 48, 49], "linear": [22, 27, 33, 40, 43, 48, 49], "angular": [22, 33, 40, 48, 49], "circl": 22, "diffbotsystemhardwar": 22, "33333": 22, "faster": 22, "genericsystem": 22, "use_mock_hardwar": 22, "true": [22, 29, 33, 42, 43, 44, 48], "calculate_dynam": 22, "diffbot_control": 22, "diffbot_descript": 22, "diffbot_system": 22, "example_3": 23, "fri": [23, 53], "abb": [23, 53], "yumi": 23, "schunk": [23, 53], "lwa4p": 23, "illeg": 23, "declin": 23, "faulti": 23, "ros2_control_demo_example_3": 23, "rrbot_system_multi_interfac": 23, "robot_control": [23, 27], "spawn": 23, "forward_acceleration_control": 23, "velocity_control": [23, 34, 38], "jointgroupvelocitycontrol": 23, "rrbotsystemmultiinterfacehardwar": 23, "po": [23, 43], "78500": 23, "vel": [23, 48], "acc": 23, "control_lvl": 23, "forward_illegal1_control": 23, "forward_illegal2_control": 23, "1676209982": 23, "531163501": 23, "resource_manag": 23, "rrbotsystemmultiinterfac": 23, "did": 23, "531223835": 23, "sinc": [23, 27, 32], "reject": [23, 42, 43], "spawner": 23, "531717376": 23, "spawner_forward_illegal1_control": 23, "indic": [23, 27], "rrbot_multi_interface_forward_control": 23, "krc": 24, "prototyp": 24, "odri": [24, 53], "ros2_control_demo_example_4": 24, "rrbot_system_with_sensor": 24, "rrbotsystemwithsensor": 24, "rrbotsystemwithsensorhardwar": 24, "fts_broadcast": [24, 25], "force_torque_sensor_broadcast": [24, 25], "forcetorquesensorbroadcast": [24, 25], "wrench": [24, 25, 31], "republish": [24, 25], "wrenchstamp": [24, 25, 37], "stamp": [24, 25, 48], "sec": [24, 25], "1676444704": [24, 25], "nanosec": [24, 25], "332221422": [24, 25], "tool_link": [24, 25], "946532964706421": 24, "nan": [24, 42], "0540995597839355": 24, "rrbot_with_sensor_control": 24, "pc": 25, "3d": [25, 27], "ros2_control_demo_example_5": 25, "rrbot_system_with_external_sensor": 25, "externalrrbotftsensor": 25, "externalrrbotforcetorquesensorhardwar": 25, "2126582860946655": 25, "3202226161956787": 25, "4302282333374023": 25, "540233612060547": 25, "647800624370575": 25, "7602499723434448": 25, "rrbot_with_external_sensor_control": 25, "rrbot_system_position_onli": 25, "external_rrbot_force_torque_sensor": 25, "mara": 26, "ros2_control_demo_example_6": 26, "rrbot_modular_actu": 26, "rrbotmodularjoint": 26, "rrbot_actu": 26, "queri": [27, 44], "enhanc": 27, "deploi": 27, "oper": [27, 54], "pattern": 27, "vendor": 27, "runtim": 27, "program": 27, "conform": 27, "newest": 27, "characterist": 27, "tree": [27, 33], "primari": [27, 44], "commerci": 27, "scratch": 27, "illustr": 27, "stl": 27, "dae": 27, "coars": 27, "mesh": 27, "fast": [27, 53], "collis": 27, "express": 27, "vertic": 27, "transform": 27, "rotat": [27, 33, 42], "translat": [27, 33, 49], "proxim": 27, "face": 27, "co": 27, "planer": 27, "xy": 27, "plane": 27, "align": 27, "blender": 27, "begin": 27, "neg": [27, 42], "roll": 27, "pitch": 27, "yaw": 27, "repeat": 27, "robot_6_dof": 27, "base_link": [27, 48, 49], "link_0": 27, "inerti": 27, "mass": 27, "inertia": 27, "ixx": 27, "ixi": 27, "ixz": 27, "iyi": 27, "iyz": 27, "izz": 27, "tool0": 27, "base_joint": 27, "joint_1": 27, "link_1": 27, "061584": 27, "141592653589793": 27, "name_spac": 27, "class_nam": 27, "pi": [27, 42], "enclos": 27, "previous": 27, "left": 27, "zero": [27, 31, 42, 43], "rel": [27, 43], "center": 27, "uniform": 27, "consecut": 27, "motion": [27, 42], "subsequ": 27, "join": [27, 54], "speci": 27, "verifi": 27, "urdf_to_graphviz": 27, "r6bot": 27, "explain": 27, "robotsystem": 27, "ur5": 27, "five": 27, "hardware_interface_return_valu": 27, "hardware_interface_publ": 27, "commandinterfac": 27, "durat": 27, "period": [27, 42], "privat": 27, "memori": [27, 35], "alloc": 27, "establish": 27, "angl": [27, 32, 48], "notabl": 27, "vari": 27, "fill": 27, "field": [27, 41, 43], "suppos": [27, 43], "tcp_force_torque_sensor": 27, "Their": 27, "pointer": 27, "info_": 27, "state_interfaces_": 27, "nearli": 27, "previou": [27, 43, 54], "command_interfaces_": 27, "constraint": [27, 35, 39, 40, 42, 44, 48], "respons": 27, "turn": 27, "oppos": [27, 44], "tcp": [27, 31], "packet": 27, "robot_6_dof_hardwar": 27, "discov": 27, "library_nam": 27, "base_class_typ": 27, "human": 27, "notic": [27, 43], "just": 27, "add_librari": 27, "robot_hardwar": 27, "unlik": 27, "finit": 27, "certain": [27, 36, 45, 51], "transit": [27, 34, 43], "robotcontrol": 27, "nine": 27, "six": [27, 37], "callback": 27, "lifetim": 27, "restart": 27, "reconfigur": 27, "buffer": [27, 54], "reset": [27, 48], "transfer": 27, "eventu": 27, "mutex": 27, "guarante": [27, 43], "never": 27, "release_interfac": 27, "shut": 27, "free": [27, 33], "cleanup": 27, "r6bot_control": 27, "view_r6bot": 27, "ros2_control_demo_example_7": 27, "send_trajectori": 27, "circular": 27, "ros2_control_demo_example_8": 28, "rrbot_transmissions_system_position_onli": 28, "rrbottransmissionssystempositiononlyhardwar": 28, "transmission1": 28, "actuator1": 28, "transmission2": 28, "actuator2": 28, "383253": 28, "766505": 28, "53301": 28, "example_9": 29, "later": [29, 43], "ros2_control_demo_example_9": 29, "rrbot_gazebo_class": 29, "usr": 29, "ax": [30, 32, 37, 40, 50], "wheel": [30, 32, 33, 48, 50], "traction": [30, 32, 48, 49, 50], "steerabl": [30, 32, 50], "generate_parameter_librari": [30, 31, 32, 38, 39, 40, 48, 50], "parameter": [30, 32, 48, 50], "front_wheel_track": 30, "front": [30, 31, 32, 48, 50], "length": [30, 40, 48, 50], "en": [30, 32, 50], "wikipedia": [30, 32, 48, 50, 54], "wiki": [30, 32, 43, 44, 50], "wheelbas": [30, 32, 50], "rear_wheel_track": 30, "rear": [30, 32, 48, 50], "distanc": [30, 32, 44, 46, 50], "front_wheels_radiu": [30, 50], "radiu": [30, 32, 50], "rear_wheels_radiu": [30, 50], "chainedcontrollerinterfac": 31, "joint_refer": 31, "trajectory_msg": [31, 43, 44], "jointtrajectorypoint": [31, 43], "admittancecontrollerst": 31, "ft_sensor": 31, "sensor_nam": [31, 37, 40, 46], "ackermann": [32, 34, 48], "vehicl": 32, "probabl": 32, "front_wheel_radiu": 32, "rear_wheel_radiu": 32, "bodi": 33, "odometri": [33, 48, 49], "space": [33, 44], "hw_if_posit": [33, 34, 48], "hw_if_veloc": [33, 34, 48], "position_feedback": [33, 48], "twiststamp": [33, 48], "use_stamped_vel": [33, 48], "nav_msg": [33, 48], "estim": 33, "tf": [33, 48], "tf2_msg": [33, 48], "tfmessag": [33, 48], "enable_odom_tf": [33, 48], "cmd_vel_out": 33, "publish_limited_veloc": 33, "jointlimit": 33, "joint_limit": 33, "commonli": 34, "bicycl": [34, 48], "effort_control": [34, 38], "hw_if_acceler": 34, "hw_if_effort": 34, "represent": [34, 44], "rqt_joint_trajectory_control": [34, 44], "onconfigur": 34, "configure_control": 34, "unsign": 34, "unspecifi": 34, "is_async": 34, "asynchron": 34, "controllernam": 35, "protect": 35, "reserv": 35, "importantli": 35, "ask": [35, 41], "sort": 35, "controller_name_namespac": 35, "controller_name_packag": 35, "ros2_control_test_asset": 35, "special": [36, 43, 45, 51], "hz": [36, 39, 45, 51], "wrapper": [37, 40, 46], "forcetorquesensor": 37, "6d": 37, "per": 37, "less": [37, 48], "example_nam": 37, "example_interfac": 37, "feedforward": 38, "multi_interface_forward_command_control": 38, "string_arrai": [38, 48], "action_monitor_r": [39, 42, 44], "greater": [39, 42], "equal": [39, 40], "goal_toler": 39, "max_effort": 39, "allow_stal": 39, "stall": 39, "stall_velocity_threshold": 39, "threshold": 39, "001": 39, "stall_timeout": 39, "imusensor": 40, "orient": 40, "angular_veloc": 40, "linear_acceler": 40, "static_covariance_orient": 40, "double_arrai": [40, 48], "static": 40, "covari": [40, 48], "row": 40, "static_covariance_angular_veloc": 40, "static_covariance_linear_acceler": 40, "unless": 41, "latter": 41, "matrix": [41, 48], "product": 41, "use_local_top": 41, "my_state_broadcast": 41, "arrai": 41, "extra_joint": 41, "map_interface_to_joint_st": 41, "usecas": 41, "hydraul": [41, 42], "relianc": 41, "techniqu": 41, "slightli": 41, "custom_interfac": 41, "kf_estimated_posit": 41, "derived_veloc": 41, "derived_effort": 41, "torque_sensor": 41, "current_sensor": 41, "command_joint": 42, "jtc": 42, "monitor": [42, 44], "allow_partial_joints_go": [42, 44], "allow_integration_in_goal_trajectori": [42, 43], "interpolation_method": 42, "interpol": [42, 44], "spline": 42, "open_loop_control": [42, 44], "gain": 42, "numer": 42, "numeric_limit": 42, "quiet_nan": 42, "start_with_hold": 42, "hold": [42, 43], "allow_nonzero_velocity_at_trajectory_end": 42, "cmd_timeout": 42, "stale": 42, "count": 42, "goal_tim": [42, 44], "toler": [42, 44], "jointtrajectori": [42, 43, 44], "stopped_velocity_toler": [42, 44], "deviat": 42, "maxim": 42, "reach": [42, 43, 44], "predefin": 42, "infinit": 42, "amount": 42, "law": [42, 44], "k_": 42, "ff": 42, "v_d": 42, "k_p": 42, "k_i": 42, "sum": 42, "dt": 42, "k_d": 42, "angle_wraparound": 42, "i_clamp": 42, "clamp": 42, "symmetr": 42, "ff_velocity_scal": 42, "feed": 42, "wrap": [42, 44], "ie": [42, 43], "shortest": 42, "s_d": 42, "saniti": 43, "sampl": [43, 48], "segment": [43, 44], "fault": 43, "datapoint": 43, "deduc": 43, "nor": 43, "discourag": 43, "yield": 43, "discontinu": [43, 44], "cubic": 43, "quintic": 43, "heun": 43, "grid": 43, "10m": 43, "deduct": 43, "nonzero": 43, "inconsist": 43, "overshoot": 43, "timestamp": 43, "arriv": 43, "necessarili": 43, "discard": 43, "substitut": 43, "smarter": 43, "preserv": 43, "flat": 43, "grei": 43, "red": 43, "traj": 43, "time_from_start": 43, "splice": 43, "append": 43, "held": [43, 44], "smooth": [43, 54], "longer": 43, "slower": 43, "effect": 43, "Of": 43, "interest": 43, "adolfo": [43, 44], "rodriguez": [43, 44], "instant": 44, "citat": 44, "adapt": 44, "restrict": 44, "present": 44, "robust": 44, "clock": 44, "queu": 44, "joint3": 44, "joint4": 44, "joint5": 44, "joint6": 44, "preempt": 44, "cancel": 44, "notifi": 44, "abort": 44, "legal": 44, "subset": 44, "favor": 44, "violat": 44, "joint_trajectori": 44, "fire": 44, "sender": 44, "query_st": 44, "cumbersom": 44, "controller_st": [44, 48], "jointtrajectorycontrollerst": 44, "querytrajectoryst": 44, "footnot": 44, "rangesensor": 46, "radiation_typ": 46, "int": [46, 48], "radiat": 46, "ultrason": 46, "infrar": 46, "field_of_view": 46, "arc": 46, "rad": [46, 48], "min_rang": 46, "minimum": 46, "m": [46, 48], "max_rang": 46, "maximum": 46, "varianc": 46, "rqt": 47, "nomenclatur": 48, "unstamp": 48, "concret": 48, "tricylc": 48, "seer": 48, "front_steer": 48, "front_wheels_nam": 48, "rear_wheels_nam": 48, "traction_feedback_typ": 48, "in_chained_mod": 48, "reference_unstamp": 48, "tf_odometri": 48, "steeringcontrollerstatu": 48, "reference_timeout": 48, "unwant": 48, "danger": 48, "behaviour": 48, "rear_wheels_state_nam": 48, "front_wheels_state_nam": 48, "open_loop": 48, "velocity_rolling_window_s": 48, "number": 48, "averag": 48, "base_frame_id": 48, "odom_frame_id": 48, "twist_covariance_diagon": 48, "diagon": 48, "pose_covariance_diagon": 48, "pose": 48, "wheel_track": 50, "page": [52, 53], "isaac": 52, "webot": 52, "manufactur": 53, "franka": 53, "emika": 53, "xarm": 53, "flexiv": 53, "rizon": 53, "igu": 53, "commonplac": 53, "husarion": 53, "rosbot": 53, "xl": 53, "2r": 53, "pro": 53, "openmanipul": 53, "clearpath": 53, "jackal": 53, "j100": 53, "huski": 53, "a200": 53, "unoffici": 53, "iiwa": 53, "lbr": 53, "iiqka": 53, "eci": 53, "sunris": 53, "kss": 53, "egm": 53, "mitsubishi": 53, "rv1a": 53, "protocol": 53, "ethercat": 53, "canopen": 53, "svh": 53, "finger": 53, "dimens": 53, "haptic": 53, "odriv": 53, "ndi": 53, "pca9685": 53, "bit": 53, "pwm": 53, "servo": 53, "hoverboard": 53, "overcom": 54, "idea": 54, "wide": 54, "toolkit": 54, "unreleas": 54, "question": 54, "wg": 54, "wednesdai": 54, "announc": 54, "discours": 54, "googl": 54, "bug": 54, "tracker": 54, "reproduc": 54, "regard": 54, "built": 54, "gmt": 54}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"acknowledg": 0, "maintain": 0, "review": 0, "stat": 0, "contributor": 0, "compani": 0, "institut": 0, "contribut": 1, "pull": 1, "request": 1, "rule": 1, "repositori": [1, 16, 54], "process": [1, 9], "merg": 1, "write": [1, 11, 14, 27, 35], "document": [1, 8, 10, 54], "structur": [1, 2], "ci": 1, "configur": 1, "usag": [1, 3, 5], "differ": 2, "ros_control": 2, "ros1": [2, 6], "hardwar": [2, 4, 6, 9, 11, 12, 14, 27, 38, 41, 44], "class": [2, 8], "interfac": [2, 4, 12, 15, 19, 23, 27, 28, 31, 33, 36, 38, 41, 44, 45, 48, 51], "control": [2, 3, 4, 5, 6, 8, 9, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 35, 36, 38, 39, 44, 45, 48, 51, 52], "": [2, 33, 44, 48], "access": 2, "migrat": [2, 11], "guid": 2, "ros2_control": [2, 3, 5, 6, 10, 12, 16, 27, 31, 34, 54], "robothardwar": 2, "compon": [2, 4, 6, 11, 13, 14], "gazebo_ros2_control": 3, "modifi": [3, 5], "build": [3, 4, 5, 16], "your": [3, 4, 5], "own": [3, 5], "To": [3, 5, 16], "run": [3, 4, 5, 16], "demo": [3, 5, 6, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "add": [3, 5, 6], "tag": [3, 5], "urdf": [3, 4, 5, 27], "simpl": [3, 5], "setup": [3, 5], "us": [3, 5, 8, 9, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 35, 44], "mimic": [3, 5], "joint": [3, 5, 12, 13, 44], "simul": [3, 5, 29, 52], "plugin": [3, 5, 27], "default": [3, 5], "behavior": [3, 5], "advanc": [3, 5], "custom": [3, 5], "set": [3, 5], "up": [3, 5], "gazebo_ros2_control_demo": 3, "get": 4, "start": 4, "instal": [4, 16], "binari": 4, "packag": [4, 16], "from": [4, 6, 11, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 48], "sourc": [4, 16], "architectur": 4, "manag": [4, 8, 9], "resourc": [4, 7, 8], "user": 4, "descript": [4, 27, 33, 44, 48], "framework": 4, "robot": [4, 7, 16, 19, 21, 23, 24, 25, 26, 27, 28, 34, 53], "gz_ros2_control": 5, "gz_ros2_control_demo": 5, "project": 6, "idea": 6, "gsoc": 6, "2024": 6, "tutori": [6, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "mission": 6, "support": [6, 53], "semant": 6, "featur": [6, 10, 33, 44, 49], "pariti": 6, "present": 7, "2023": 7, "02": 7, "ro": [7, 31, 33, 36, 38, 45, 51, 52], "meetup": 7, "munich": 7, "5": [7, 25], "2022": 7, "12": [7, 20], "industri": [7, 19, 24, 25, 28], "confer": 7, "10": [7, 19], "roscon": 7, "06": 7, "fr": 7, "2021": 7, "world": 7, "07": 7, "weekli": 7, "13": 7, "rosdevdai": 7, "05": 7, "diagram": 7, "imag": 7, "chain": [8, 20], "cascad": 8, "scope": 8, "background": 8, "knowledg": 8, "motiv": 8, "purpos": 8, "implement": 8, "A": 8, "base": 8, "chainablecontrol": 8, "inner": 8, "activ": 8, "deactiv": 8, "debug": 8, "output": [8, 33], "close": 8, "remark": 8, "determin": 9, "paramet": [9, 13, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 45, 46, 48, 50, 51], "helper": 9, "script": 9, "spawner": 9, "unspawn": 9, "concept": [9, 10], "restart": 9, "all": 9, "api": 10, "guidelin": [11, 34], "best": [11, 34], "practic": [11, 34], "handl": 11, "error": 11, "happen": 11, "dure": 11, "read": 11, "call": 11, "foxi": 11, "newer": 11, "version": 11, "type": [12, 38, 41, 44], "sensor": [12, 24, 25, 37, 40, 46], "gpio": [12, 19], "exampl": [12, 16, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 43], "mock": 13, "gener": 13, "system": 13, "per": 13, "extern": [14, 25, 35], "refer": [14, 31, 33, 35, 44, 48], "command": [15, 31, 41, 44, 48, 49], "line": 15, "list_control": 15, "list_controller_typ": 15, "list_hardware_compon": 15, "list_hardware_interfac": 15, "load_control": 15, "reload_controller_librari": 15, "set_controller_st": 15, "switch_control": 15, "unload_control": 15, "view_controller_chain": 15, "what": 16, "you": 16, "can": 16, "find": 16, "thi": [16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "goal": 16, "overview": [16, 27], "local": 16, "debian": 16, "docker": 16, "view": 16, "quick": 16, "hint": 16, "1": [18, 44], "rrbot": [18, 20, 29], "step": [18, 20, 21, 22, 23, 24, 25, 26, 28, 29], "file": [18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "14": 21, "modular": [21, 26], "actuat": [21, 26], "provid": 21, "state": [21, 31, 44, 48], "diffbot": 22, "3": 23, "multipl": 23, "4": 24, "integr": [24, 52], "connect": 25, "6": 26, "separ": 26, "commun": [26, 52, 54], "each": 26, "7": 27, "full": 27, "6dof": 27, "geometri": 27, "cmake": 27, "librari": 27, "launch": 27, "8": 28, "an": 28, "expos": 28, "transmiss": 28, "9": 29, "ackermann_steering_control": 30, "admitt": 31, "2": [31, 33, 36, 38, 45, 51], "topic": [31, 36, 38, 45, 51], "bicycle_steering_control": 32, "diff_drive_control": 33, "other": [33, 34, 44, 49], "feedback": 33, "subscrib": [33, 44, 48], "publish": [33, 44, 48], "mobil": 34, "manipul": 34, "broadcast": [34, 37, 40, 46], "common": 34, "new": 35, "effort_control": 36, "jointgroupeffortcontrol": 36, "forc": 37, "torqu": 37, "forward_command_control": 38, "gripper": 39, "action": [39, 44], "imu": 40, "joint_state_broadcast": 41, "detail": 42, "about": 42, "trajectori": [43, 44], "represent": 43, "interpol": 43, "method": 43, "none": 43, "spline": 43, "visual": 43, "replac": 43, "joint_trajectory_control": 44, "preemption": 44, "polici": 44, "servic": 44, "further": 44, "inform": 44, "position_control": 45, "jointgrouppositioncontrol": 45, "rang": 46, "rqt_joint_trajectory_control": 47, "steering_controllers_librari": 48, "execut": 48, "logic": 48, "preced": 48, "tricycle_control": 49, "veloc": 49, "tricycle_steering_control": 50, "velocity_control": 51, "jointgroupvelocitycontrol": 51, "host": 52, "welcom": 54, "iron": 54, "develop": 54, "organis": 54}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx": 60}, "alltitles": {"Acknowledgements": [[0, "acknowledgements"]], "Maintainers": [[0, "maintainers"]], "Reviewers\u2019 Stats": [[0, "reviewers-stats"]], "Contributors": [[0, "contributors"]], "Companies and Institutions": [[0, "companies-and-institutions"]], "Contributing": [[1, "contributing"]], "Pull Requests": [[1, "pull-requests"]], "Rules for the repositories and process of merging pull requests": [[1, "rules-for-the-repositories-and-process-of-merging-pull-requests"]], "Writing documentation": [[1, "writing-documentation"]], "Repository structure and CI configuration": [[1, "repository-structure-and-ci-configuration"]], "CI configuration": [[1, "ci-configuration"]], "Documentation Usage": [[1, "documentation-usage"]], "Differences to ros_control (ROS1)": [[2, "differences-to-ros-control-ros1"]], "Hardware Structures - classes": [[2, "hardware-structures-classes"]], "Hardware Interfaces": [[2, "hardware-interfaces"]], "Controller\u2019s Access to Hardware": [[2, "controller-s-access-to-hardware"]], "Migration Guide to ros2_control": [[2, "migration-guide-to-ros2-control"]], "RobotHardware to Components": [[2, "robothardware-to-components"]], "Controller Migration": [[2, "controller-migration"]], "gazebo_ros2_control": [[3, "gazebo-ros2-control"]], "Usage": [[3, "usage"], [5, "usage"]], "Modifying or building your own": [[3, "modifying-or-building-your-own"], [5, "modifying-or-building-your-own"]], "To run the demo": [[3, "to-run-the-demo"], [5, "to-run-the-demo"]], "Add ros2_control tag to a URDF": [[3, "add-ros2-control-tag-to-a-urdf"], [5, "add-ros2-control-tag-to-a-urdf"]], "Simple setup": [[3, "simple-setup"], [5, "simple-setup"]], "Using mimic joints in simulation": [[3, "using-mimic-joints-in-simulation"], [5, "using-mimic-joints-in-simulation"]], "Add the gazebo_ros2_control plugin": [[3, "add-the-gazebo-ros2-control-plugin"]], "Default gazebo_ros2_control Behavior": [[3, "default-gazebo-ros2-control-behavior"]], "Advanced: custom gazebo_ros2_control Simulation Plugins": [[3, "advanced-custom-gazebo-ros2-control-simulation-plugins"]], "Set up controllers": [[3, "set-up-controllers"], [5, "set-up-controllers"]], "gazebo_ros2_control_demos": [[3, "gazebo-ros2-control-demos"]], "Getting Started": [[4, "getting-started"]], "Installation": [[4, "installation"], [16, "installation"]], "Binary packages": [[4, "binary-packages"]], "Building from Source": [[4, "building-from-source"]], "Architecture": [[4, "architecture"]], "Controller Manager": [[4, "controller-manager"], [9, "controller-manager"]], "Resource Manager": [[4, "resource-manager"]], "Controllers": [[4, "controllers"]], "User Interfaces": [[4, "user-interfaces"]], "Hardware Components": [[4, "hardware-components"], [11, "hardware-components"]], "Hardware Description in URDF": [[4, "hardware-description-in-urdf"]], "Running the Framework for Your Robot": [[4, "running-the-framework-for-your-robot"]], "gz_ros2_control": [[5, "gz-ros2-control"]], "Add the gz_ros2_control plugin": [[5, "add-the-gz-ros2-control-plugin"]], "Default gz_ros2_control Behavior": [[5, "default-gz-ros2-control-behavior"]], "Advanced: custom gz_ros2_control Simulation Plugins": [[5, "advanced-custom-gz-ros2-control-simulation-plugins"]], "gz_ros2_control_demos": [[5, "gz-ros2-control-demos"]], "Project Ideas for GSoC 2024": [[6, "project-ideas-for-gsoc-2024"]], "Tutorials and Demos for ros2_control": [[6, "tutorials-and-demos-for-ros2-control"]], "Mission-Control for ros2_control": [[6, "mission-control-for-ros2-control"]], "Add support for hardware semantic components": [[6, "add-support-for-hardware-semantic-components"]], "Feature-parity for controllers from ROS1": [[6, "feature-parity-for-controllers-from-ros1"]], "Resources": [[7, "resources"]], "Presentations": [[7, "presentations"]], "2023-02 ROS Meetup Munich #5": [[7, "ros-meetup-munich-5"]], "2022-12 ROS-Industrial Conference 2022": [[7, "ros-industrial-conference-2022"]], "2022-10 ROSCon 2022": [[7, "roscon-2022"]], "2022-06 ROSCon Fr 2022": [[7, "roscon-fr-2022"]], "2021-10 ROS World 2021": [[7, "ros-world-2021"]], "2021-10-07 Weekly Robotics Meetup #13": [[7, "weekly-robotics-meetup-13"]], "2021-06 ROSDevDay 2021": [[7, "rosdevday-2021"]], "2021-05 ROSCon Fr 2021": [[7, "roscon-fr-2021"]], "Diagrams": [[7, "diagrams"]], "Images": [[7, "images"]], "Controller Chaining / Cascade Control": [[8, "controller-chaining-cascade-control"]], "Scope of the Document and Background Knowledge": [[8, "scope-of-the-document-and-background-knowledge"]], "Motivation, Purpose and Use": [[8, "motivation-purpose-and-use"]], "Implementation": [[8, "implementation"]], "A Controller Base-Class: ChainableController": [[8, "a-controller-base-class-chainablecontroller"]], "Inner Resource Management": [[8, "inner-resource-management"]], "Activation and Deactivation Chained Controllers": [[8, "activation-and-deactivation-chained-controllers"]], "Debugging outputs": [[8, "debugging-outputs"]], "Closing remarks": [[8, "closing-remarks"]], "Determinism": [[9, "determinism"]], "Parameters": [[9, "parameters"], [13, "parameters"], [30, "parameters"], [31, "parameters"], [32, "parameters"], [33, "parameters"], [36, "parameters"], [37, "parameters"], [38, "parameters"], [39, "parameters"], [40, "parameters"], [41, "parameters"], [45, "parameters"], [46, "parameters"], [48, "parameters"], [50, "parameters"], [51, "parameters"]], "Helper scripts": [[9, "helper-scripts"]], "spawner": [[9, "spawner"]], "unspawner": [[9, "unspawner"]], "Using the Controller Manager in a Process": [[9, "using-the-controller-manager-in-a-process"]], "Concepts": [[9, "concepts"], [10, "concepts"]], "Restarting all controllers": [[9, "restarting-all-controllers"]], "Restarting hardware": [[9, "restarting-hardware"]], "ros2_control": [[10, "ros2-control"]], "API Documentation": [[10, "api-documentation"]], "Features": [[10, "features"]], "Guidelines and Best Practices": [[11, "guidelines-and-best-practices"], [34, "guidelines-and-best-practices"]], "Handling of errors that happen during read() and write() calls": [[11, "handling-of-errors-that-happen-during-read-and-write-calls"]], "Migration from Foxy to newer versions": [[11, "migration-from-foxy-to-newer-versions"]], "ros2_control hardware interface types": [[12, "ros2-control-hardware-interface-types"]], "Joints": [[12, "joints"]], "Sensors": [[12, "sensors"]], "GPIOs": [[12, "gpios"]], "Examples": [[12, "examples"], [16, "examples"]], "Mock Components": [[13, "mock-components"]], "Generic System": [[13, "generic-system"]], "Per-joint Parameters": [[13, "per-joint-parameters"]], "Writing a Hardware Component": [[14, "writing-a-hardware-component"]], "Useful External References": [[14, "useful-external-references"], [35, "useful-external-references"]], "Command Line Interface": [[15, "command-line-interface"]], "list_controllers": [[15, "list-controllers"]], "list_controller_types": [[15, "list-controller-types"]], "list_hardware_components": [[15, "list-hardware-components"]], "list_hardware_interfaces": [[15, "list-hardware-interfaces"]], "load_controller": [[15, "load-controller"]], "reload_controller_libraries": [[15, "reload-controller-libraries"]], "set_controller_state": [[15, "set-controller-state"]], "switch_controllers": [[15, "switch-controllers"]], "unload_controller": [[15, "unload-controller"]], "view_controller_chains": [[15, "view-controller-chains"]], "Demos": [[16, "demos"]], "What you can find in this repository": [[16, "what-you-can-find-in-this-repository"]], "Goals": [[16, "goals"]], "Examples Overview": [[16, "examples-overview"]], "Local installation": [[16, "local-installation"]], "Build from debian packages": [[16, "build-from-debian-packages"]], "Build from source": [[16, "build-from-source"]], "Using Docker": [[16, "using-docker"]], "To view the robot": [[16, "to-view-the-robot"]], "To run the ros2_control demos": [[16, "to-run-the-ros2-control-demos"]], "Quick Hints": [[16, "quick-hints"]], "Example 1: RRBot": [[18, "example-1-rrbot"]], "Tutorial steps": [[18, "tutorial-steps"], [20, "tutorial-steps"], [21, "tutorial-steps"], [22, "tutorial-steps"], [23, "tutorial-steps"], [24, "tutorial-steps"], [25, "tutorial-steps"], [26, "tutorial-steps"], [28, "tutorial-steps"], [29, "tutorial-steps"]], "Files used for this demos": [[18, "files-used-for-this-demos"], [19, "files-used-for-this-demos"], [20, "files-used-for-this-demos"], [21, "files-used-for-this-demos"], [22, "files-used-for-this-demos"], [23, "files-used-for-this-demos"], [25, "files-used-for-this-demos"], [26, "files-used-for-this-demos"], [28, "files-used-for-this-demos"], [29, "files-used-for-this-demos"]], "Controllers from this demo": [[18, "controllers-from-this-demo"], [19, "controllers-from-this-demo"], [20, "controllers-from-this-demo"], [21, "controllers-from-this-demo"], [22, "controllers-from-this-demo"], [23, "controllers-from-this-demo"], [24, "controllers-from-this-demo"], [25, "controllers-from-this-demo"], [26, "controllers-from-this-demo"], [28, "controllers-from-this-demo"], [29, "controllers-from-this-demo"]], "Example 10: Industrial robot with GPIO interfaces": [[19, "example-10-industrial-robot-with-gpio-interfaces"]], "Example 12: Controller chaining with RRBot": [[20, "example-12-controller-chaining-with-rrbot"]], "Example 14: Modular robot with actuators not providing states": [[21, "example-14-modular-robot-with-actuators-not-providing-states"]], "DiffBot": [[22, "diffbot"]], "Example 3: Robots with multiple interfaces": [[23, "example-3-robots-with-multiple-interfaces"]], "Example 4: Industrial robot with integrated sensor": [[24, "example-4-industrial-robot-with-integrated-sensor"]], "Files used for this demo": [[24, "files-used-for-this-demo"]], "Example 5: Industrial robot with externally connected sensor": [[25, "example-5-industrial-robot-with-externally-connected-sensor"]], "Example 6: Modular Robots with separate communication to each actuator": [[26, "example-6-modular-robots-with-separate-communication-to-each-actuator"]], "Example 7: Full tutorial with a 6DOF robot": [[27, "example-7-full-tutorial-with-a-6dof-robot"]], "ros2_control overview": [[27, "ros2-control-overview"]], "Writing a URDF": [[27, "writing-a-urdf"]], "Geometry": [[27, "geometry"]], "URDF file": [[27, "urdf-file"]], "Writing a hardware interface": [[27, "writing-a-hardware-interface"]], "Plugin description file (hardware)": [[27, "plugin-description-file-hardware"]], "CMake library (hardware)": [[27, "cmake-library-hardware"]], "Writing a controller": [[27, "writing-a-controller"]], "Plugin description file (controller)": [[27, "plugin-description-file-controller"]], "CMake library (controller)": [[27, "cmake-library-controller"]], "Launching the example": [[27, "launching-the-example"]], "Example 8: Industrial Robots with an exposed transmission interface": [[28, "example-8-industrial-robots-with-an-exposed-transmission-interface"]], "Example 9: Simulation with RRBot": [[29, "example-9-simulation-with-rrbot"]], "ackermann_steering_controller": [[30, "ackermann-steering-controller"]], "Admittance Controller": [[31, "admittance-controller"]], "ROS 2 interface of the controller": [[31, "ros-2-interface-of-the-controller"], [36, "ros-2-interface-of-the-controller"], [38, "ros-2-interface-of-the-controller"], [45, "ros-2-interface-of-the-controller"], [51, "ros-2-interface-of-the-controller"]], "Topics": [[31, "topics"], [36, "topics"], [38, "topics"], [45, "topics"], [51, "topics"]], "ros2_control interfaces": [[31, "ros2-control-interfaces"]], "References": [[31, "references"], [33, "references"], [44, "references"]], "States": [[31, "states"], [44, "states"], [48, "states"]], "Commands": [[31, "commands"], [41, "commands"], [44, "commands"], [48, "commands"]], "bicycle_steering_controller": [[32, "bicycle-steering-controller"]], "diff_drive_controller": [[33, "diff-drive-controller"]], "Other features": [[33, "other-features"], [44, "other-features"], [49, "other-features"]], "Description of controller\u2019s interfaces": [[33, "description-of-controller-s-interfaces"], [44, "description-of-controller-s-interfaces"], [48, "description-of-controller-s-interfaces"]], "Feedback": [[33, "feedback"]], "Output": [[33, "output"]], "ROS 2 Interfaces": [[33, "ros-2-interfaces"]], "Subscribers": [[33, "subscribers"], [48, "subscribers"]], "Publishers": [[33, "publishers"], [44, "publishers"], [48, "publishers"]], "ros2_controllers": [[34, "ros2-controllers"]], "Controllers for Mobile Robots": [[34, "controllers-for-mobile-robots"]], "Controllers for Manipulators and Other Robots": [[34, "controllers-for-manipulators-and-other-robots"]], "Broadcasters": [[34, "broadcasters"]], "Common Controller Parameters": [[34, "common-controller-parameters"]], "Writing a new controller": [[35, "writing-a-new-controller"]], "effort_controllers": [[36, "effort-controllers"]], "effort_controllers/JointGroupEffortController": [[36, "effort-controllers-jointgroupeffortcontroller"]], "Force Torque Sensor Broadcaster": [[37, "force-torque-sensor-broadcaster"]], "forward_command_controller": [[38, "forward-command-controller"]], "Hardware interface type": [[38, "hardware-interface-type"], [41, "hardware-interface-type"]], "Gripper Action Controller": [[39, "gripper-action-controller"]], "IMU Sensor Broadcaster": [[40, "imu-sensor-broadcaster"]], "joint_state_broadcaster": [[41, "joint-state-broadcaster"]], "Details about parameters": [[42, "details-about-parameters"]], "Trajectory Representation": [[43, "trajectory-representation"]], "Interpolation Method none": [[43, "interpolation-method-none"]], "Interpolation Method spline": [[43, "interpolation-method-spline"]], "Visualized Examples": [[43, "visualized-examples"]], "Trajectory Replacement": [[43, "trajectory-replacement"]], "joint_trajectory_controller": [[44, "joint-trajectory-controller"]], "Hardware interface types": [[44, "hardware-interface-types"]], "Using Joint Trajectory Controller(s)": [[44, "using-joint-trajectory-controller-s"]], "Preemption policy 1": [[44, "preemption-policy"]], "Actions 1": [[44, "actions"]], "Subscriber 1": [[44, "subscriber"]], "Services": [[44, "services"]], "Further information": [[44, "further-information"]], "position_controllers": [[45, "position-controllers"]], "position_controllers/JointGroupPositionController": [[45, "position-controllers-jointgrouppositioncontroller"]], "Range Sensor Broadcaster": [[46, "range-sensor-broadcaster"]], "rqt_joint_trajectory_controller": [[47, "rqt-joint-trajectory-controller"]], "steering_controllers_library": [[48, "steering-controllers-library"]], "Execution logic of the controller": [[48, "execution-logic-of-the-controller"]], "References (from a preceding controller)": [[48, "references-from-a-preceding-controller"]], "tricycle_controller": [[49, "tricycle-controller"]], "Velocity commands": [[49, "velocity-commands"]], "tricycle_steering_controller": [[50, "tricycle-steering-controller"]], "velocity_controllers": [[51, "velocity-controllers"]], "velocity_controllers/JointGroupVelocityController": [[51, "velocity-controllers-jointgroupvelocitycontroller"]], "Simulator Integrations": [[52, "simulator-integrations"]], "Hosted by ros-controls": [[52, "hosted-by-ros-controls"]], "Community": [[52, "community"]], "Supported Robots": [[53, "supported-robots"]], "Welcome to the ros2_control documentation - Iron!": [[54, "welcome-to-the-ros2-control-documentation-iron"]], "ros2_control Repositories": [[54, "ros2-control-repositories"]], "Development Organisation and Communication": [[54, "development-organisation-and-communication"]]}, "indexentries": {}}) \ No newline at end of file diff --git a/master/.buildinfo b/master/.buildinfo index 8c9153ceb84..35e5524fe1a 100644 --- a/master/.buildinfo +++ b/master/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 486c83e5b84d1d553d026ea5caf21dcf +config: fbc0410529a78e551bbe1185c67d46c7 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/master/.doctrees/doc/acknowledgements/acknowledgements.doctree b/master/.doctrees/doc/acknowledgements/acknowledgements.doctree index dc4ce6f805ff259d0325a6d0150db636a0d8dae4..1d334dc57beed5b84af04aca13cf692afa6b01e6 100644 GIT binary patch delta 1669 zcmds%&ud&&6vw^q&U;guOeTX(tC>I&ty$P%dVjuq?`TaZ7Hq2>1`DYPhD@eSCl%CG zDz?*^L{y|$tnsP`g+f9tt%8>1E$&K95u}AIBEdzVSd?zuSi8uk74c2LMWO#dT%E;* z!#SVN{hq()x) zEv=0fDk)`B5Na5-uX!VzI625jfl1rDcFYbOxe*PtZS_zHrC)-qy|#TSp|qqxN%EjA zW~SP-38kcp3Cfk>@Y@&uP;|EM8n%<&U5LZmkK@xxo+nzykLXfRgxOUuu=lpsTQv=h z;UW}7GRUlXWt-1cH`5-%3oI;9VP|ufH&>G{e^MofHufgbZ0_|~vrHK@PTfSa4(S{N81c78)tdi55~RN`+uheixPOvrpCA zN!}?^R<_So|E_{oPQLZL;`yE;So3NqqA?sal49f*7g5^hfr&1bjS(i%?hQ9 zXypCtr;xjT%6p=8zmq(CH4&uknMbN{e#y&h*y-Ks)BbLR@9jX%^K})uoBjUGc6h1i zuLG;W3&;GGHp!^shH@f!{MGH;$^jVN=BHg-58jX5xugDt9MHWe3(qVE%g`vIMw-T_ zCgk)#J delta 1776 zcmd^<-)me&6vvslJK3~kchjm-b0gVGi=xXqKkwYxmS(G{{gv3X(%No?uG_8~AtfaZ z7-C{XM1`UaV?FexO|TE`i~VuIp@OlcsSi?0eDKMtDfnUtVtrAHwcg!8q0oQ8`Z5E< znK|eC{hTuwraJ$g>P(E2Bh|BsJYxMr{dDip;LtN#S6)*hG@{BRH^u~IO*O6T4RqCn zs;n7fTC<9T$uE*^w!hRGeTdpUv@x2(qYsEC9fs%IJ@HV^9 zHU^I$MBVi}57=C;wv=Y6C~#GffjyQx*<4G$`bmwxa=&Pbj^zfL;oNELV@ZKcleb{t z4b)r50+YXZqbZ@45hg|x@HpV&Z@6J+>k{+wJ@`C`u@v_D2fnQo#?yu=&Y01ZY8f&p zpNJ7Xw|XSQ@>EgIL%|w*?E4)=mpxebE9yYpmb3fp?7I)Q(!AutNXqIJ#HB2fUMP;H z6qh0Afl*W_3G7=^vc>KD@8;EIukJ{~;l8Gt{r!>V==QT?P5%e6QFX^sf}V&D>>llf z?(?1>E&05J>c$Hho2FG5a2nVfeI=Kzl5Q0FXKycSI1fMUBqQ*n@P0}MoGTV66>!6Z zsn6uD=+BvV)*=bzf3WW^40@Qb#IE<}<~=tzpLnwOZftodt|4#2p)0uczpTQ=D$XOXIfvZwEBGREUv-g* zm35zecczc@pj6z@GX8rOSNQHrZzs&YM@Te#dJ}T}uanPmup*EAPfw6p*#8n5Yhhf+ z;Yv#xg!aJn7C6(1Qf>o58pa`J&OLCiJ!@|c*}A9VEquRKT3S} z@eIC!-OU%!Dh!*4Nr&rtiu{42`MFN)o)=BG)IDHiAg;YJNyGP%9yfU;nO*%atvWU? diff --git a/master/.doctrees/doc/contributing/contributing.doctree b/master/.doctrees/doc/contributing/contributing.doctree index c79655e9ac65ecf4036d830cb430f220ab8b9fe3..c3319bdea509ba5ee250bc572a9c767c51141e68 100644 GIT binary patch delta 64 zcmbPxmT~S`#tq?&hUR5?r51&mMf!;*$>xbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ T#)+nure>y=2F9B^7)4V7%O(_D delta 64 zcmbPxmT~S`#tq?&hPkD=1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI TiROlehUVsm$tIgS7)4V7r+X73 diff --git a/master/.doctrees/doc/differences_to_ros1/differences_to_ros1.doctree b/master/.doctrees/doc/differences_to_ros1/differences_to_ros1.doctree index e956262f87211522b9a366df85a9d20186299fb6..2b683167282c570c3e0bd472af9a47ce2c24c7cb 100644 GIT binary patch delta 64 zcmey+$Mm6(X@eG{p?O(esYPLCk$$2{vUy@snnjwqS+cR2k)=_ZX;M;Zl8HfbvPnv! TaiXcEshO#zf$`>OM$t9^%SjYX delta 64 zcmey+$Mm6(X@eG{VQy)zK}uxbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ Z#)+nure>y=2FCi6_i@N>ZfD#%82~Xq7PbHY delta 69 zcmX@Gis`^ArVSR1M!BWA1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI ZiROlehUVsm$tL=f_i@N>ZfD#%82|@z6?^~y diff --git a/master/.doctrees/doc/getting_started/getting_started.doctree b/master/.doctrees/doc/getting_started/getting_started.doctree index fe01cc4b53298bb21ae464d14fa7e0fec62d9afd..2b0dd046998f77dd4938b845e1cc499b80337631 100644 GIT binary patch delta 64 zcmbQ-$~?K1d4mC?p?O(esYPLCk$$2{vUy@snnjwqS+cR2k)=_ZX;M;Zl8HfbvPnv! TaiXcEshO#zf$`=%X diff --git a/master/.doctrees/doc/gz_ros2_control/doc/index.doctree b/master/.doctrees/doc/gz_ros2_control/doc/index.doctree index cf1b609983344324ab75cf3038c9af06407dce2b..28f60b5a22af34f263170f8ce1512086327bd526 100644 GIT binary patch delta 64 zcmX>*kLm0@rVR#+hUR5?r51&mMf!;*$>xbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ U#)+nure>y=2F9Bc8Q=5*0L29r5dZ)H delta 64 zcmX>*kLm0@rVR#+hPkD=1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI UiROlehUVsm$tIf<8Q=5*0HInF*8l(j diff --git a/master/.doctrees/doc/project_ideas.doctree b/master/.doctrees/doc/project_ideas.doctree index f7765856a96f6328c40d6607ae417039513e9652..ab98b64d37c19ed05a2eba05bb0feb2951a6df68 100644 GIT binary patch delta 64 zcmZ4digEEP#tk}*hUR5?r51&mMf!;*$>xbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ U#)+nure>y=2F9CX8IKhM0Mj%T3jhEB delta 64 zcmZ4digEEP#tk}*hPkD=1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI UiROlehUVsm$tIg)8IKhM0I!J?(EtDd diff --git a/master/.doctrees/doc/resources/resources.doctree b/master/.doctrees/doc/resources/resources.doctree index 06c4526f30cf737c589d1ae1cd53d446847edbeb..6b3c81464224da1727f98b937abe01bab4307129 100644 GIT binary patch delta 68 zcmaDnoAvQ*)(t9*hUR5?r51&mMf!;*$>xbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ X#)+nure>y=2FA^yjN3yQ8T)(y9_CT<_6{l$th;$X_gkI XiROlehUVsm$tKOAjN3yQ8T)(y_Dd8h diff --git a/master/.doctrees/doc/resources/roscon2023_workshop.doctree b/master/.doctrees/doc/resources/roscon2023_workshop.doctree index 9c2a9e366dd7ab201387456886d6ee89f7f5f230..d6a6c70ed50a4d8afe46ccea5ba68e6abb35b68e 100644 GIT binary patch delta 62 zcmca!cD-za1*4&PSzf6{VP=tjqDiuOVp5t#nz>oBv6+#jQJQH|QfiWkL2|N5N}_S1 RsimozsilGO=1j(SmH@MC6psJ^ delta 62 zcmca!cD-za1*2hZX|6#^X>qB(xp{Jusj-Enahjotk)@@jS)#dtxj}M@nR%L}g=wO> Rp`oF~z6IB2J diff --git a/master/.doctrees/doc/ros2_control/controller_manager/doc/controller_chaining.doctree b/master/.doctrees/doc/ros2_control/controller_manager/doc/controller_chaining.doctree index 3f3724bfbd4d03f3b99ce033bf59088c073950be..119f9a8bdd8f7c905f1b1e175243ab619ee1486d 100644 GIT binary patch delta 64 zcmX?io$=gt#tjyXhUR5?r51&mMf!;*$>xbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ T#)+nure>y=2F9B+8B?CT<_6{l$th;$X_gkI TiROlehUVsm$tIgK8B?xbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ Z#)+nure>y=2FCi6Ib$?7FJR;?2LMXc79{`x delta 69 zcmZ4ck#X%u#tm+aM!BWA1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI ZiROlehUVsm$tL=fIb$?7FJR;?2LK@l6zc#0 diff --git a/master/.doctrees/doc/ros2_control/doc/index.doctree b/master/.doctrees/doc/ros2_control/doc/index.doctree index a2f5fe59e34395d19ff6d3bbc6743e9ac55af065..4808849b76b2324fe9bdc6e23fb50aec28d1144f 100644 GIT binary patch delta 62 zcmaE2_{4C79iyRnSzf6{VP=tjqDiuOVp5t#nz>oBv6+#jQJQH|QfiWkL2|N5N}_S1 RsimozsilGO=6uFdaR8a16OaG^ delta 62 zcmaE2_{4C79iw4xX|6#^X>qB(xp{Jusj-Enahjotk)@@jS)#dtxj}M@nR%L}g=wO> Rp`oF@~J diff --git a/master/.doctrees/doc/ros2_control/hardware_interface/doc/hardware_components_userdoc.doctree b/master/.doctrees/doc/ros2_control/hardware_interface/doc/hardware_components_userdoc.doctree index 6b75d833199bd46fa373e5c41c436d31017c1e53..e0243768a40c1927a3e23776a562f3fc17ceb36d 100644 GIT binary patch delta 69 zcmdn9f^p9Z#tj~fM&@OCr51&mMf!;*$>xbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ Z#)+nure>y=2FCi6{aKwi?`5nH0st=X7AF7z delta 69 zcmdn9f^p9Z#tj~fM!BWA1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI ZiROlehUVsm$tL=f{aKwi?`5nH0ssXg6zu>2 diff --git a/master/.doctrees/doc/ros2_control/hardware_interface/doc/hardware_interface_types_userdoc.doctree b/master/.doctrees/doc/ros2_control/hardware_interface/doc/hardware_interface_types_userdoc.doctree index 523d0ee98fced445517616c4558fbbd5685c6439..1cde11b6e355b33572523849fbe3fc3529baecf9 100644 GIT binary patch delta 69 zcmdmgg>nBC#tlJ?M&@OCr51&mMf!;*$>xbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ Z#)+nure>y=2FCi6PjY!|KEqg?0RT=I7c2k( delta 69 zcmdmgg>nBC#tlJ?M!BWA1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI ZiROlehUVsm$tL=fPjY!|KEqg?0RSXR74iT8 diff --git a/master/.doctrees/doc/ros2_control/hardware_interface/doc/mock_components_userdoc.doctree b/master/.doctrees/doc/ros2_control/hardware_interface/doc/mock_components_userdoc.doctree index cd9eec60fa821373ef28c332d587a131846bf065..eaa5920cd45b5dbee02047c7a25ddeafa6a0c668 100644 GIT binary patch delta 62 zcmexg^1oz*1EZmNSzf6{VP=tjqDiuOVp5t#nz>oBv6+#jQJQH|QfiWkL2|N5N}_S1 RsimozsilGO=0Zk3O8~{R6bk?V delta 62 zcmexg^1oz*1EXPXX|6#^X>qB(xp{Jusj-Enahjotk)@@jS)#dtxj}M@nR%L}g=wO> Rp`oFukYG!I_V7$4Wk>fuAo2nEU delta 64 zcmZo~WNB|?+2F@$m|L1_kWyM)s&8(doMdWjVQHLZXkuh(X=#>dZeVVZoML94W@%xX TXl`g|Xl`zpY_hqYk>fuAcmERK diff --git a/master/.doctrees/doc/ros2_control/ros2controlcli/doc/userdoc.doctree b/master/.doctrees/doc/ros2_control/ros2controlcli/doc/userdoc.doctree index 54febf4a709f86f3df77b0c65e15504be6d96e7c..38fa3b1b1bad6c1ba288576528582ef2241d2bbc 100644 GIT binary patch delta 64 zcmex!hw;xH#tn9ihUR5?r51&mMf!;*$>xbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ T#)+nure>y=2F9E78F_O7`oR?j delta 64 zcmex!hw;xH#tn9ihPkD=1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI TiROlehUVsm$tIig8F_O7*A^4Z diff --git a/master/.doctrees/doc/ros2_control_demos/doc/index.doctree b/master/.doctrees/doc/ros2_control_demos/doc/index.doctree index 65d3c276df1abbe01caa4f548c2f81c45a38131a..257e3fc6fb4177cf3bbadc6d259ff11fc84afaee 100644 GIT binary patch delta 69 zcmbQy$~>c$d4n0Fk$G8OsYPLCk$$2{vUy@snnjwqS+cR2k)=_ZX;M;Zl8HfbvPnv! ZaiXcEshO#zfwBJNf=%L^>lq~v0ssls75D%E delta 69 zcmbQy$~>c$d4n0FQEq9jK}ulq~v0s!Cn6utle diff --git a/master/.doctrees/doc/ros2_control_demos/doc/run_from_docker.doctree b/master/.doctrees/doc/ros2_control_demos/doc/run_from_docker.doctree index 91fd63661d7146db34cd5aefc5302bbbaa7f8835..6d4fc85342f118f2aad5b6d7943d9c34693b475f 100644 GIT binary patch delta 62 zcmeB_>Xh2h&thm^mRD*~m|3KsXp(H6n3QIbW^R^jY-VI>lxCWgl$vB>keqCil4zW0 RYH4a_YH47+`2dS22LN{w6Bz&i delta 62 zcmeB_>Xh2h&tjNcnro0!T3o7cZl0WEYHVR?oMvcZWNB$>mS}EZZjhW}W}aqgVVY=e RXlQ6|ZkTMc`2dS22LMxM5#Im+ diff --git a/master/.doctrees/doc/ros2_control_demos/example_1/doc/userdoc.doctree b/master/.doctrees/doc/ros2_control_demos/example_1/doc/userdoc.doctree index 4f37910782b290c82fe16cb80462b2b55f199aa9..3ab423b1ef7ac506b2bb148c47532a31f249a0af 100644 GIT binary patch delta 76 zcmeBfWbJNb-4MlSWL}n6YEhV3q@QS#Y@V2uW|3xYmTYWhWNDOUnv|59WMYtukYG!I_V5~ohUwpExfN1j$#_c;8886!b0G{d>Z~y=R delta 76 zcmeBfWbJNb-4MlSlv|o>kWyM)s&8(doMdWjVQHLZXkuh(X=#>dZeVVZoML94W@%xX gXl`g|Xl`zpY@$DjUwpExfN1j$#_c;8886!b0BnaAHUIzs diff --git a/master/.doctrees/doc/ros2_control_demos/example_10/doc/userdoc.doctree b/master/.doctrees/doc/ros2_control_demos/example_10/doc/userdoc.doctree index cab76598007dba89d16b5a7c60d420648dc94b55..0a5e553fb9f5bf5553ec77bc31e8d46889c67ff2 100644 GIT binary patch delta 64 zcmdnKk8%4x#tkuyhUR5?r51&mMf!;*$>xbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ U#)+nure>y=2F9Cv8CS&u0Mhmq2><{9 delta 64 zcmdnKk8%4x#tkuyhPkD=1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI UiROlehUVsm$tIh78CS&u0Iy3E&j0`b diff --git a/master/.doctrees/doc/ros2_control_demos/example_12/doc/userdoc.doctree b/master/.doctrees/doc/ros2_control_demos/example_12/doc/userdoc.doctree index 298cbd68e025f7a1bb3c3ebd0b46d516da08d835..e15da98254600a946ccd0c89ecafeb92996da2ec 100644 GIT binary patch delta 69 zcmbRHk7@2drVTNSM&@OCr51&mMf!;*$>xbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ Z#)+nure>y=2FCi6Cvb^xUdmXp7XVSf7ZCse delta 69 zcmbRHk7@2drVTNSM!BWA1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI ZiROlehUVsm$tL=fCvb^xUdmXp7XT;o71sa& diff --git a/master/.doctrees/doc/ros2_control_demos/example_14/doc/userdoc.doctree b/master/.doctrees/doc/ros2_control_demos/example_14/doc/userdoc.doctree index b40e783cbfc753d211569d570dd53c2b00c1d428..878566f7f1bd93a9821df7b13028be10f983fcf1 100644 GIT binary patch delta 73 zcmeBQ!PLKkX+sR7k$G8OsYPLCk$$2{vUy@snnjwqS+cR2k)=_ZX;M;Zl8HfbvPnv! daiXcEshO#zfwBH%L4NVcwR~cmcQb}e0swHm7Rmqs delta 73 zcmeBQ!PLKkX+sR7QEq9jK}uxbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ d#)+nure>y=2FCi69i>z!drafmyq9s?6acU=7?1z} delta 73 zcmeyohUxPfrVUYyM!BWA1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI diROlehUVsm$tL=f9i>z!drafmyq9s?6aayH7ghiO diff --git a/master/.doctrees/doc/ros2_control_demos/example_3/doc/userdoc.doctree b/master/.doctrees/doc/ros2_control_demos/example_3/doc/userdoc.doctree index ef5ad2a0769579d3f49259023dbd15cc2fc57616..11227e19953cd5eb05930a643211cd00d1e99dd0 100644 GIT binary patch delta 73 zcmZ4UmTApfrVUYyM&@OCr51&mMf!;*$>xbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ d#)+nure>y=2FCi61^L7$Z{-!;yo2$}767Sh7=Qo( delta 73 zcmZ4UmTApfrVUYyM!BWA1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI diROlehUVsm$tL=f1^L7$Z{-!;yo2$}765v-7e)X8 diff --git a/master/.doctrees/doc/ros2_control_demos/example_4/doc/userdoc.doctree b/master/.doctrees/doc/ros2_control_demos/example_4/doc/userdoc.doctree index eebd162d01cfd449ed4ee2452804b9de88505885..48f0dc3916fca9d3fc5ae4ae401d3d86ac314367 100644 GIT binary patch delta 73 zcmbQWoN3l_rVUYyM&@OCr51&mMf!;*$>xbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ d#)+nure>y=2FCi675K#`_wtEu-of~2A^>;}7lZ%+ delta 73 zcmbQWoN3l_rVUYyM!BWA1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI diROlehUVsm$tL=f75K#`_wtEu-of~2A^=HQ7D@mB diff --git a/master/.doctrees/doc/ros2_control_demos/example_5/doc/userdoc.doctree b/master/.doctrees/doc/ros2_control_demos/example_5/doc/userdoc.doctree index 5baa526bf17a00643fe0cd0f9ccdd1b4a9d1a05c..cea2afa071d7b7b9d7232a29dba0280e22375349 100644 GIT binary patch delta 73 zcmdmSfN948rVUYyM&@OCr51&mMf!;*$>xbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ d#)+nure>y=2FCi6C&s8w=3T(Ec`sx2JOG~87;*pr delta 73 zcmdmSfN948rVUYyM!BWA1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI diROlehUVsm$tL=fC&s8w=3T(Ec`sx2JOFSa7dQX_ diff --git a/master/.doctrees/doc/ros2_control_demos/example_6/doc/userdoc.doctree b/master/.doctrees/doc/ros2_control_demos/example_6/doc/userdoc.doctree index 0d99ca419df14664384ad7002c2736c4cd0bec8e..f84f2243644d7506333424c919aab9fc54b20a25 100644 GIT binary patch delta 73 zcmZ49%(T3jX+spFk$G8OsYPLCk$$2{vUy@snnjwqS+cR2k)=_ZX;M;Zl8HfbvPnv! daiXcEshO#zfwBJNKpyeQ0=%M|cQC%M2LNfo7XbhO delta 73 zcmZ49%(T3jX+spFQEq9jK}uxbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ d#)+nure>y=2FCi6?>VV9Z)DuQk&)4AJ^;Z<7`Ffb delta 73 zcmaETknQzBwhd8?M!BWA1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI diROlehUVsm$tL=f?>VV9Z)DuQk&)4AJ^+%G7kvN# diff --git a/master/.doctrees/doc/ros2_control_demos/example_8/doc/userdoc.doctree b/master/.doctrees/doc/ros2_control_demos/example_8/doc/userdoc.doctree index 10ab8e2f88e8aaaf183d25c3dd580e134d70d0de..406a83e629fa60ee80945f91d2262ba34f697a68 100644 GIT binary patch delta 73 zcmX^2mGRtH#tl)7M&@OCr51&mMf!;*$>xbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ d#)+nure>y=2FCi65Aujlo?0cfc`u`2B>>2r7`Xrd delta 73 zcmX^2mGRtH#tl)7M!BWA1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI diROlehUVsm$tL=f5Aujlo?0cfc`u`2B>Z% diff --git a/master/.doctrees/doc/ros2_control_demos/example_9/doc/userdoc.doctree b/master/.doctrees/doc/ros2_control_demos/example_9/doc/userdoc.doctree index a636231dd61327519df9f3a58939d029ff3f771e..1091a120cca00efa1782b2a7098b367b3cff88ab 100644 GIT binary patch delta 76 zcmex4kLl+;rVUYyrsidNr51&mMf!;*$>xbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ g#)+nure>y=2FCg+`N@+%Mu<#4$Irca9pmX<00R~plK=n! delta 76 zcmex4kLl+;rVUYyrn#lL1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI giROlehUVsm$tLlxCWgl$vB>keqCil4zW0 aYH4a_YH47sKlviR=;UZ&xy=U|-LwHkSQbmS}EZZjhW}W}aqgVVY=e aXlQ6|ZkTMMKlviR=;UZ&xy=U|-LwG~qZJwe diff --git a/master/.doctrees/doc/ros2_controllers/admittance_controller/doc/userdoc.doctree b/master/.doctrees/doc/ros2_controllers/admittance_controller/doc/userdoc.doctree index f1bc1b42fd8a41ac78325d2627e25b08adee0e81..9b1e4f996e14920d955669a0bdc13c0c664babe1 100644 GIT binary patch delta 64 zcmX>)gYoDL#tlAxbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ U#)+nure>y=2F9Cf8Bcft0K?-H!~g&Q delta 64 zcmX>)gYoDL#tlACT<_6{l$th;$X_gkI UiROlehUVsm$tIg?8Bcft0H8P%iU0rr diff --git a/master/.doctrees/doc/ros2_controllers/bicycle_steering_controller/doc/userdoc.doctree b/master/.doctrees/doc/ros2_controllers/bicycle_steering_controller/doc/userdoc.doctree index ef026ec36b54e370a49276db6d87d4ece799b1c7..f524aa2293fca275c57d5c4af68edbbcf7f6be84 100644 GIT binary patch delta 71 zcmdnzyU%w+1f!98Szf6{VP=tjqDiuOVp5t#nz>oBv6+#jQJQH|QfiWkL2|N5N}_S1 bsimozsilFj{$xQx(a94;WH#?+WL5qB(xp{Jusj-Enahjotk)@@jS)#dtxj}M@nR%L}g=wO> bp`oFA#!5#3(g+l& delta 64 zcmey?%J{97af1(|VQy)zK}uoBv6+#jQJQH|QfiWkL2|N5N}_S1 WsimozsilFj{^UX)(argcp|$`IRTV7& delta 67 zcmX?7d!%-Q2BT4KX|6#^X>qB(xp{Jusj-Enahjotk)@@jS)#dtxj}M@nR%L}g=wO> Wp`oFxbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ U#)+nure>y=2F9BU8TY;f0M!u{k^lez delta 64 zcmZ2?jd|TQ<_!*vhPkD=1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI UiROlehUVsm$tIf%8TY;f0I_BiSO5S3 diff --git a/master/.doctrees/doc/ros2_controllers/effort_controllers/doc/userdoc.doctree b/master/.doctrees/doc/ros2_controllers/effort_controllers/doc/userdoc.doctree index 0a505e2aa78157c9bd617635b1c01c3639721117..07a5bbfe6b7d5635a72e5e45eaf817210653825d 100644 GIT binary patch delta 62 zcmbQ|FwbFw8>69lSzf6{VP=tjqDiuOVp5t#nz>oBv6+#jQJQH|QfiWkL2|N5N}_S1 RsimozsilGO=5og6asYv!6Kenf delta 62 zcmbQ|FwbFw8>3-vX|6#^X>qB(xp{Jusj-Enahjotk)@@jS)#dtxj}M@nR%L}g=wO> Rp`oFoBv6+#jQJQH|QfiWkL2|N5N}_S1 RsimozsilGO=823B3IL$H6Q%$F delta 62 zcmccUe9?JB0;6GWX|6#^X>qB(xp{Jusj-Enahjotk)@@jS)#dtxj}M@nR%L}g=wO> Rp`oFoBv6+#jQJQH|QfiWkL2|N5N}_S1 XsimozsilFj{$xf)gUve_CmH|%51$ol delta 67 zcmX?^ax!H@7^6{cX|6#^X>qB(xp{Jusj-Enahjotk)@@jS)#dtxj}M@nR%L}g=wO> Xp`oFlxCWgl$vB>keqCil4zW0 RYH4a_YH47+xss7f9RPd+62|}l delta 62 zcmZn;Y!2Mu!DyIUnro0!T3o7cZl0WEYHVR?oMvcZWNB$>mS}EZZjhW}W}aqgVVY=e RXlQ6|ZkTMcxss7f9ROHY5sd%< diff --git a/master/.doctrees/doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc.doctree b/master/.doctrees/doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc.doctree index 39d9f59852f629b62edd23bbfcb26925975f8fa5..3e8ba9817b723138b76b45b3cfafaa071961cfb1 100644 GIT binary patch delta 62 zcmZonZA{(Z$7pC?mRD*~m|3KsXp(H6n3QIbW^R^jY-VI>lxCWgl$vB>keqCil4zW0 RYH4a_YH47+xt@{95CDbN68QiC delta 62 zcmZonZA{(Z$7q;anro0!T3o7cZl0WEYHVR?oMvcZWNB$>mS}EZZjhW}W}aqgVVY=e RXlQ6|ZkTMcxt@{95CCE;5x)Qc diff --git a/master/.doctrees/doc/ros2_controllers/joint_state_broadcaster/doc/userdoc.doctree b/master/.doctrees/doc/ros2_controllers/joint_state_broadcaster/doc/userdoc.doctree index b8de0617f8f2fa245a35a8df3bcd7f1901a51d2e..451eca7db66268f4f3849e9d1d52e8e1fe865700 100644 GIT binary patch delta 64 zcmdnm%eb|daYF#3p?O(esYPLCk$$2{vUy@snnjwqS+cR2k)=_ZX;M;Zl8HfbvPnv! TaiXcEshO#zf$`=>MiW;6wviM4 delta 64 zcmdnm%eb|daYF#3VQy)zK}uxbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ Z#)+nure>y=2FCi6F9g|dp3Z1i4FF!s7fk>F delta 69 zcmX^6lkx0N#tmwWM!BWA1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI ZiROlehUVsm$tL=fF9g|dp3Z1i4FEL#783vf diff --git a/master/.doctrees/doc/ros2_controllers/joint_trajectory_controller/doc/trajectory.doctree b/master/.doctrees/doc/ros2_controllers/joint_trajectory_controller/doc/trajectory.doctree index 6cca3ece1ceba558284e81b669054d846afc4838..ffb84d91a7eabe0a94e84fb2ade83ff4ac0d50c0 100644 GIT binary patch delta 69 zcmX@Img&e^rVTZWM&@OCr51&mMf!;*$>xbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ Z#)+nure>y=2FCi6<6G@Fzh%5W1pr8P7tH_w delta 69 zcmX@Img&e^rVTZWM!BWA1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI ZiROlehUVsm$tL=f<6G@Fzh%5W1ppqY7Lxz~ diff --git a/master/.doctrees/doc/ros2_controllers/joint_trajectory_controller/doc/userdoc.doctree b/master/.doctrees/doc/ros2_controllers/joint_trajectory_controller/doc/userdoc.doctree index c76fa4e327ea40329e071da6b3c81911e061b246..e03212d330563d02d1c893c68d62821847b17677 100644 GIT binary patch delta 69 zcmaEIo$1MSrVSB{M&@OCr51&mMf!;*$>xbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ Z#)+nure>y=2FCi69eHdvA7hkT1pr_t7TEv* delta 69 zcmaEIo$1MSrVSB{M!BWA1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI ZiROlehUVsm$tL=f9eHdvA7hkT1pqc$6`ueA diff --git a/master/.doctrees/doc/ros2_controllers/pid_controller/doc/userdoc.doctree b/master/.doctrees/doc/ros2_controllers/pid_controller/doc/userdoc.doctree index d3acc871c5f7f72ca91454380c9a48118d61171f..89259a5af157fa248d0c8f7641e3e791b0f208e6 100644 GIT binary patch delta 64 zcmaESkMZ$6#tn9ihUR5?r51&mMf!;*$>xbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ U#)+nure>y=2F9E78NcKL0P#>2zW@LL delta 64 zcmaESkMZ$6#tn9ihPkD=1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI UiROlehUVsm$tIig8NcKL0L`Tog#Z8m diff --git a/master/.doctrees/doc/ros2_controllers/position_controllers/doc/userdoc.doctree b/master/.doctrees/doc/ros2_controllers/position_controllers/doc/userdoc.doctree index fa0506c1425326bb6d0a64bff317b4af9d71dde7..2da4a8cb347716fdf78c0efa79c9baad98b12904 100644 GIT binary patch delta 62 zcmaFj@Wf$*7o(whSzf6{VP=tjqDiuOVp5t#nz>oBv6+#jQJQH|QfiWkL2|N5N}_S1 RsimozsilGO=4!^5asZ@r6hQz0 delta 62 zcmaFj@Wf$*7o%ZrX|6#^X>qB(xp{Jusj-Enahjotk)@@jS)#dtxj}M@nR%L}g=wO> Rp`oF*(t5Tl`aSzf6{VP=tjqDiuOVp5t#nz>oBv6+#jQJQH|QfiWkL2|N5N}_S1 RsimozsilGO=4QrZB><_96X5^= delta 62 zcmaFn{>*(t5TjvkX|6#^X>qB(xp{Jusj-Enahjotk)@@jS)#dtxj}M@nR%L}g=wO> Rp`oF;uw5~lzF diff --git a/master/.doctrees/doc/ros2_controllers/rqt_joint_trajectory_controller/doc/userdoc.doctree b/master/.doctrees/doc/ros2_controllers/rqt_joint_trajectory_controller/doc/userdoc.doctree index f204cf46c2af82f5f36b0f8b16a5de882f563179..c0cea967076f9d0caa52b3c0cf40f1dfe2ce1022 100644 GIT binary patch delta 62 zcmbO)H(zc;0;8dMSzf6{VP=tjqDiuOVp5t#nz>oBv6+#jQJQH|QfiWkL2|N5N}_S1 RsimozsilGO=824bya0F@6Egq+ delta 62 zcmbO)H(zc;0;6GWX|6#^X>qB(xp{Jusj-Enahjotk)@@jS)#dtxj}M@nR%L}g=wO> Rp`oFxbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ Z#)+nure>y=2FCi6`-E*bpJddW4ggm57W)7I delta 69 zcmeygk?GS$rVUYyM!BWA1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI ZiROlehUVsm$tL=f`-E*bpJddW4gf7E6~O=i diff --git a/master/.doctrees/doc/ros2_controllers/tricycle_controller/doc/userdoc.doctree b/master/.doctrees/doc/ros2_controllers/tricycle_controller/doc/userdoc.doctree index d914a422c5123894c985c7475e1883c8ca8595ec..255bbf191cbd3afe77bdfc94dd22c04fc5a17a55 100644 GIT binary patch delta 62 zcmbQMF;`=Q2cw~RSzf6{VP=tjqDiuOVp5t#nz>oBv6+#jQJQH|QfiWkL2|N5N}_S1 RsimozsilGO=1RsTLI8G66D|M% delta 62 zcmbQMF;`=Q2cuzbX|6#^X>qB(xp{Jusj-Enahjotk)@@jS)#dtxj}M@nR%L}g=wO> Rp`oFoBv6+#jQJQH|QfiWkL2|N5N}_S1 bsimozsilFj{^Wjs(aAsAH8!7Qlv4))b_N$V delta 71 zcmaDJ_&jh!6r)jYX|6#^X>qB(xp{Jusj-Enahjotk)@@jS)#dtxj}M@nR%L}g=wO> bp`oFoBv6+#jQJQH|QfiWkL2|N5N}_S1 RsimozsilGO=4!^5asZ@r6hQz0 delta 62 zcmaFj@Wf$*7o%ZrX|6#^X>qB(xp{Jusj-Enahjotk)@@jS)#dtxj}M@nR%L}g=wO> Rp`oFmRD*~m|3KsXp(H6n3QIbW^R^jY-VI>lxCWgl$vB>keqCil4zW0 RYH4a_YH47+Ih=8u7yxQ}67T>3 delta 62 zcmeA*=r!1&#%P#Znro0!T3o7cZl0WEYHVR?oMvcZWNB$>mS}EZZjhW}W}aqgVVY=e RXlQ6|ZkTMcIh=8u7yw4l5w-vT diff --git a/master/.doctrees/doc/supported_robots/supported_robots.doctree b/master/.doctrees/doc/supported_robots/supported_robots.doctree index c46113a41d503d4358f45e591a5cbc0f26c90003..7c4731c6bfb2411be6973059c8ffbdf4d14e43b6 100644 GIT binary patch delta 64 zcmdnDka6Ea#trd|hUR5?r51&mMf!;*$>xbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ U#)+nure>y=2F9BwFzWdO0LUX0SpWb4 delta 64 zcmdnDka6Ea#trd|hPkD=1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI UiROlehUVsm$tIg8FzWdO0Hk;m9{>OV diff --git a/master/.doctrees/environment.pickle b/master/.doctrees/environment.pickle index 170c595903088d9833cf4e527be622d2c9174ce5..ca8015bc2ca5fc1e4dbe6e4fb514aeddadbd655b 100644 GIT binary patch delta 37349 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 IY@GCe0U9}?p#T5? diff --git a/master/.doctrees/index.doctree b/master/.doctrees/index.doctree index fd69fee2e7beae6cc06c896a5e0273075e68f223..a3b5ea4cae894da558647e137c9416d84ef7ca89 100644 GIT binary patch delta 82 zcmZ2}opJef#tmkShUR5?r51&mMf!;*$>xbkX%=bbX3558MwUitrb$VuNhSu#$tEd@ m#)+nure>y=2F9Dy8O?$i4L8pVHe+NooNON|z4=4Pb};~N%Nmsc delta 82 zcmZ2}opJef#tmkShPkD=1}UY*rTXUP$w{Wh7M8|oh9*XqmX>CT<_6{l$th;$X_gkI miROlehUVsm$tIiA8O?$i4K~jUHe+Nom~0;^z4=4Pb};}o@fleF diff --git a/master/doc/acknowledgements/acknowledgements.html b/master/doc/acknowledgements/acknowledgements.html index ca08f6d52d3..a9eab88a942 100644 --- a/master/doc/acknowledgements/acknowledgements.html +++ b/master/doc/acknowledgements/acknowledgements.html @@ -154,18 +154,18 @@

Maintainers
0.82
-
+
- + @@ -183,15 +183,15 @@

Maintainers -
+
0.57
-
+
@@ -212,15 +212,15 @@

Maintainers -
+
0.88
-
+
@@ -228,7 +228,7 @@

Maintainers
0.75
-
+
- + @@ -308,15 +308,15 @@

Maintainers -
+
0.31
-
+
@@ -337,15 +337,15 @@

Maintainers -
+
0.87
-
+
@@ -353,7 +353,7 @@

Maintainers
@@ -821,7 +821,7 @@

Reviewers’ Stats -
+
@@ -929,7 +929,7 @@

Reviewers’ Stats
@@ -937,7 +937,7 @@

Reviewers’ Stats -
+
@@ -1277,7 +1277,7 @@

Reviewers’ Stats
@@ -1285,7 +1285,7 @@

Reviewers’ Stats -
+
@@ -1915,7 +1915,7 @@

Reviewers’ Stats
@@ -1923,7 +1923,7 @@

Reviewers’ Stats -
+
@@ -3758,7 +3758,7 @@

Reviewers’ Stats
@@ -3991,7 +3991,7 @@

Reviewers’ Stats -
+
@@ -4244,7 +4244,7 @@

Reviewers’ Stats
@@ -4252,7 +4252,7 @@

Reviewers’ Stats -
+
@@ -4389,7 +4389,7 @@

Reviewers’ Stats
@@ -4397,7 +4397,7 @@

Reviewers’ Stats -
+
@@ -5056,7 +5056,7 @@

Reviewers’ Stats
@@ -5420,7 +5420,7 @@

Reviewers’ Stats -

Built on 2023-12-30 at 05:31 GMT

+

Built on 2023-12-31 at 05:31 GMT

diff --git a/master/searchindex.js b/master/searchindex.js index e020f3c22aa..e5897900a79 100644 --- a/master/searchindex.js +++ b/master/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["doc/acknowledgements/acknowledgements", "doc/contributing/contributing", "doc/differences_to_ros1/differences_to_ros1", "doc/gazebo_ros2_control/doc/index", "doc/getting_started/getting_started", "doc/gz_ros2_control/doc/index", "doc/project_ideas", "doc/resources/resources", "doc/resources/roscon2023_workshop", "doc/ros2_control/controller_manager/doc/controller_chaining", "doc/ros2_control/controller_manager/doc/userdoc", "doc/ros2_control/doc/index", "doc/ros2_control/hardware_interface/doc/hardware_components_userdoc", "doc/ros2_control/hardware_interface/doc/hardware_interface_types_userdoc", "doc/ros2_control/hardware_interface/doc/mock_components_userdoc", "doc/ros2_control/hardware_interface/doc/writing_new_hardware_component", "doc/ros2_control/ros2controlcli/doc/userdoc", "doc/ros2_control_demos/doc/index", "doc/ros2_control_demos/doc/run_from_docker", "doc/ros2_control_demos/example_1/doc/userdoc", "doc/ros2_control_demos/example_10/doc/userdoc", "doc/ros2_control_demos/example_12/doc/userdoc", "doc/ros2_control_demos/example_14/doc/userdoc", "doc/ros2_control_demos/example_2/doc/userdoc", "doc/ros2_control_demos/example_3/doc/userdoc", "doc/ros2_control_demos/example_4/doc/userdoc", "doc/ros2_control_demos/example_5/doc/userdoc", "doc/ros2_control_demos/example_6/doc/userdoc", "doc/ros2_control_demos/example_7/doc/userdoc", "doc/ros2_control_demos/example_8/doc/userdoc", "doc/ros2_control_demos/example_9/doc/userdoc", "doc/ros2_controllers/ackermann_steering_controller/doc/userdoc", "doc/ros2_controllers/admittance_controller/doc/userdoc", "doc/ros2_controllers/bicycle_steering_controller/doc/userdoc", "doc/ros2_controllers/diff_drive_controller/doc/userdoc", "doc/ros2_controllers/doc/controllers_index", "doc/ros2_controllers/doc/writing_new_controller", "doc/ros2_controllers/effort_controllers/doc/userdoc", "doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/forward_command_controller/doc/userdoc", "doc/ros2_controllers/gripper_controllers/doc/userdoc", "doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/joint_state_broadcaster/doc/userdoc", "doc/ros2_controllers/joint_trajectory_controller/doc/parameters", "doc/ros2_controllers/joint_trajectory_controller/doc/trajectory", "doc/ros2_controllers/joint_trajectory_controller/doc/userdoc", "doc/ros2_controllers/pid_controller/doc/userdoc", "doc/ros2_controllers/position_controllers/doc/userdoc", "doc/ros2_controllers/range_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/rqt_joint_trajectory_controller/doc/userdoc", "doc/ros2_controllers/steering_controllers_library/doc/userdoc", "doc/ros2_controllers/tricycle_controller/doc/userdoc", "doc/ros2_controllers/tricycle_steering_controller/doc/userdoc", "doc/ros2_controllers/velocity_controllers/doc/userdoc", "doc/simulators/simulators", "doc/supported_robots/supported_robots", "index"], "filenames": ["doc/acknowledgements/acknowledgements.rst", "doc/contributing/contributing.rst", "doc/differences_to_ros1/differences_to_ros1.rst", "doc/gazebo_ros2_control/doc/index.rst", "doc/getting_started/getting_started.rst", "doc/gz_ros2_control/doc/index.rst", "doc/project_ideas.rst", "doc/resources/resources.rst", "doc/resources/roscon2023_workshop.rst", "doc/ros2_control/controller_manager/doc/controller_chaining.rst", "doc/ros2_control/controller_manager/doc/userdoc.rst", "doc/ros2_control/doc/index.rst", "doc/ros2_control/hardware_interface/doc/hardware_components_userdoc.rst", "doc/ros2_control/hardware_interface/doc/hardware_interface_types_userdoc.rst", "doc/ros2_control/hardware_interface/doc/mock_components_userdoc.rst", "doc/ros2_control/hardware_interface/doc/writing_new_hardware_component.rst", "doc/ros2_control/ros2controlcli/doc/userdoc.rst", "doc/ros2_control_demos/doc/index.rst", "doc/ros2_control_demos/doc/run_from_docker.rst", "doc/ros2_control_demos/example_1/doc/userdoc.rst", "doc/ros2_control_demos/example_10/doc/userdoc.rst", "doc/ros2_control_demos/example_12/doc/userdoc.rst", "doc/ros2_control_demos/example_14/doc/userdoc.rst", "doc/ros2_control_demos/example_2/doc/userdoc.rst", "doc/ros2_control_demos/example_3/doc/userdoc.rst", "doc/ros2_control_demos/example_4/doc/userdoc.rst", "doc/ros2_control_demos/example_5/doc/userdoc.rst", "doc/ros2_control_demos/example_6/doc/userdoc.rst", "doc/ros2_control_demos/example_7/doc/userdoc.rst", "doc/ros2_control_demos/example_8/doc/userdoc.rst", "doc/ros2_control_demos/example_9/doc/userdoc.rst", "doc/ros2_controllers/ackermann_steering_controller/doc/userdoc.rst", "doc/ros2_controllers/admittance_controller/doc/userdoc.rst", "doc/ros2_controllers/bicycle_steering_controller/doc/userdoc.rst", "doc/ros2_controllers/diff_drive_controller/doc/userdoc.rst", "doc/ros2_controllers/doc/controllers_index.rst", "doc/ros2_controllers/doc/writing_new_controller.rst", "doc/ros2_controllers/effort_controllers/doc/userdoc.rst", "doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/forward_command_controller/doc/userdoc.rst", "doc/ros2_controllers/gripper_controllers/doc/userdoc.rst", "doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/joint_state_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/joint_trajectory_controller/doc/parameters.rst", "doc/ros2_controllers/joint_trajectory_controller/doc/trajectory.rst", "doc/ros2_controllers/joint_trajectory_controller/doc/userdoc.rst", "doc/ros2_controllers/pid_controller/doc/userdoc.rst", "doc/ros2_controllers/position_controllers/doc/userdoc.rst", "doc/ros2_controllers/range_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/rqt_joint_trajectory_controller/doc/userdoc.rst", "doc/ros2_controllers/steering_controllers_library/doc/userdoc.rst", "doc/ros2_controllers/tricycle_controller/doc/userdoc.rst", "doc/ros2_controllers/tricycle_steering_controller/doc/userdoc.rst", "doc/ros2_controllers/velocity_controllers/doc/userdoc.rst", "doc/simulators/simulators.rst", "doc/supported_robots/supported_robots.rst", "index.rst"], "titles": ["Acknowledgements", "Contributing", "Differences to ros_control (ROS1)", "gazebo_ros2_control", "Getting Started", "gz_ros2_control", "Project Ideas for GSoC 2024", "Resources", "ROSCon 2023 Workshop", "Controller Chaining / Cascade Control", "Controller Manager", "ros2_control", "Hardware Components", "ros2_control hardware interface types", "Mock Components", "Writing a Hardware Component", "Command Line Interface", "Demos", "<no title>", "Example 1: RRBot", "Example 10: Industrial robot with GPIO interfaces", "Example 12: Controller chaining with RRBot", "Example 14: Modular robot with actuators not providing states", "DiffBot", "Example 3: Robots with multiple interfaces", "Example 4: Industrial robot with integrated sensor", "Example 5: Industrial robot with externally connected sensor", "Example 6: Modular Robots with separate communication to each actuator", "Example 7: Full tutorial with a 6DOF robot", "Example 8: Industrial Robots with an exposed transmission interface", "Example 9: Simulation with RRBot", "ackermann_steering_controller", "Admittance Controller", "bicycle_steering_controller", "diff_drive_controller", "ros2_controllers", "Writing a new controller", "effort_controllers", "Force Torque Sensor Broadcaster", "forward_command_controller", "Gripper Action Controller", "IMU Sensor Broadcaster", "joint_state_broadcaster", "Details about parameters", "Trajectory Representation", "joint_trajectory_controller", "PID Controller", "position_controllers", "Range Sensor Broadcaster", "rqt_joint_trajectory_controller", "steering_controllers_library", "tricycle_controller", "tricycle_steering_controller", "velocity_controllers", "Simulator Integrations", "Supported Robots", "Welcome to the ros2_control documentation!"], "terms": {"The": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 52, 53, 56], "follow": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 35, 36, 37, 43, 44, 45, 46, 47, 52, 53, 56], "peopl": [0, 1], "were": [0, 6, 28, 34, 44, 45], "ros2_control": [0, 1, 4, 10, 12, 14, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 34, 36, 54], "framework": [0, 1, 2, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 28, 35, 36, 42, 56], "show": [0, 1, 3, 4, 5, 7, 8, 10, 12, 13, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 42, 44], "all": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 36, 42, 43, 44, 45, 55], "time": [0, 1, 2, 6, 7, 8, 10, 14, 16, 17, 19, 22, 23, 24, 25, 26, 27, 28, 29, 34, 36, 38, 43, 44, 45, 56], "activ": [0, 1, 2, 4, 10, 15, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 42, 43, 45], "assign": [0, 36], "finish": 0, "rate": [0, 23, 35, 43, 44, 45], "last": [0, 12, 15, 28, 32, 36, 43, 44, 45], "date": 0, "benc": [0, 6, 7, 8], "magyar": [0, 6, 7, 8], "bmagyar": [0, 8], "1243": 0, "1023": 0, "0": [0, 3, 4, 5, 9, 13, 14, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 40, 41, 42, 43, 44, 45, 48, 50, 52], "82": 0, "2023": [0, 56], "12": [0, 17, 55, 56], "29t11": 0, "40": 0, "08z": 0, "dr": [0, 7], "deni": [0, 6, 7, 8], "destogl": 0, "985": 0, "561": 0, "57": 0, "18t14": 0, "11": [0, 17], "03z": 0, "christoph": 0, "fr\u00f6hlich": 0, "christophfroehlich": 0, "152": 0, "133": 0, "88": 0, "26t09": 0, "00": [0, 8], "02z": 0, "fetch": 0, "30": [0, 3, 5, 23, 56], "03": [0, 45], "25": 0, "46": 0, "utc": 0, "dure": [0, 17, 28, 45], "past": [0, 44], "month": 0, "532": 0, "401": 0, "75": 0, "438": 0, "136": 0, "31": [0, 56], "141": 0, "122": 0, "87": 0, "have": [0, 1, 2, 4, 6, 8, 9, 10, 12, 13, 14, 15, 17, 19, 21, 23, 24, 28, 30, 31, 32, 33, 35, 36, 42, 43, 45, 46, 52], "contribut": [0, 4, 7], "develop": [0, 1, 7, 14, 15, 17, 36], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 28, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 50, 52, 53, 54, 55, 56], "project": [0, 1, 56], "give": [0, 1, 7, 10, 17, 19, 23, 24, 44, 56], "valuabl": 0, "pull": [0, 8, 15], "request": [0, 2, 15, 28, 42, 56], "see": [0, 1, 2, 4, 13, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 38, 41, 43, 45, 48, 50, 52], "more": [0, 1, 2, 3, 4, 5, 6, 8, 10, 14, 15, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 36, 45, 52], "inform": [0, 3, 5, 9, 14, 15, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 36, 56], "karsten": 0, "knese": 0, "karsten1987": 0, "186": 0, "118": 0, "63": 0, "2021": 0, "09": 0, "07t16": 0, "47": 0, "31z": 0, "alejandro": 0, "hern\u00e1ndez": 0, "cordero": 0, "ahcord": 0, "90": [0, 28], "80": 0, "89": 0, "27t10": 0, "54": 0, "11z": 0, "sai": 0, "kishor": 0, "kothakota": 0, "saikishor": 0, "69": 0, "67": 0, "97": 0, "29t05": 0, "18": [0, 8, 28], "25z": 0, "victor": 0, "lopez": 0, "v": [0, 16, 25, 43], "93": 0, "60": 0, "65": 0, "10": [0, 3, 5, 17, 24, 50], "14t09": 0, "01": [0, 40, 43, 45], "andyz": 0, "45": 0, "98": 0, "23t02": 0, "17": [0, 8], "26z": 0, "abrar": 0, "rahman": 0, "protyasha": 0, "aprotya": 0, "157": 0, "43": [0, 4, 13, 23], "27": 0, "25t12": 0, "02": 0, "18z": 0, "olivi": 0, "stass": 0, "52": [0, 48], "77": 0, "26t08": 0, "13z": 0, "jordan": 0, "palacio": 0, "78": 0, "34": 0, "44": 0, "15t08": 0, "45z": 0, "erick": 0, "g": [0, 1, 2, 4, 5, 6, 7, 9, 10, 13, 14, 15, 17, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 32, 36, 37, 42, 47, 50, 53, 56], "isla": 0, "osuna": 0, "erickiso": 0, "139": 0, "28": [0, 50], "20": [0, 8, 40, 43, 45], "19t20": 0, "32": 0, "07z": 0, "louis": 0, "poubel": 0, "chapulina": 0, "29": 0, "23": [0, 4], "79": 0, "2022": 0, "08": 0, "30t16": 0, "41": 0, "23z": 0, "none": [0, 9, 36, 42, 43, 45], "bijoua29": 0, "160": 0, "21": [0, 50], "13": [0, 8, 17], "06": 0, "01t20": 0, "48": [0, 3, 5], "32z": 0, "jaron": 0, "l": 0, "167": 0, "10t19": 0, "59": 0, "59z": 0, "livanov93": 0, "164": 0, "05": [0, 45, 56], "22t06": 0, "28z": 0, "tyler": 0, "weaver": 0, "tylerjw": 0, "94": 0, "27t13": 0, "arn": 0, "hitzmann": 0, "arne48": 0, "145": 0, "16": [0, 55], "25t06": 0, "15z": 0, "bailac": 0, "14": [0, 17, 50], "1": [0, 1, 2, 3, 4, 5, 6, 7, 13, 14, 15, 17, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 36, 40, 44, 48, 50], "09t12": 0, "52z": 0, "m\u00e1rk": 0, "szitan": 0, "vx792": 0, "135": 0, "22t09": 0, "26": 0, "felix": 0, "exner": 0, "fexner": 0, "fmauch": 0, "24t22": 0, "ari": 0, "synodino": 0, "progtologist": 0, "151": 0, "07": 0, "30t19": 0, "58z": 0, "chen": 0, "bainian": 0, "briancbn": 0, "36": 0, "9": [0, 6, 8, 17, 41], "25t01": 0, "51": 0, "12z": 0, "paul": 0, "gesel": 0, "pac48": 0, "14t18": 0, "maciej": 0, "bednarczyk": 0, "mcbed": 0, "123": 0, "8": [0, 17], "25t18": 0, "19z": 0, "jafar": 0, "uru\u00e7": 0, "jafarabdi": 0, "07t07": 0, "01z": 0, "ddengster": 0, "2020": 0, "01t03": 0, "andr": 0, "montano": 0, "anfemosa": 0, "7": [0, 7, 8, 17, 20, 23, 50], "29t15": 0, "37z": 0, "homalozoa": 0, "x": [0, 23, 25, 26, 28, 32, 34, 38, 41, 50, 51, 55], "130": 0, "23t11": 0, "22": [0, 8, 10], "mahaarbo": 0, "01t11": 0, "44z": 0, "matt": 0, "reynold": 0, "matthew": 0, "18t19": 0, "56": 0, "34z": 0, "ana": 0, "abou": 0, "allaban": 0, "piraka9011": 0, "04": [0, 8, 10], "09t00": 0, "38": [0, 3, 5], "06z": 0, "toni": [0, 7], "najjar": [0, 7], "tonynajjar": 0, "04t13": 0, "50": [0, 4, 10, 23], "48z": 0, "dasroteskelett": 0, "149": 0, "6": [0, 17, 19, 28], "28t09": 0, "36z": 0, "brewmast": 0, "harderthan": 0, "124": 0, "26t15": 0, "47z": 0, "A": [0, 4, 7, 13, 15, 17, 25, 26, 35, 36, 42, 44, 45], "vd": 0, "hoorn": 0, "gavanderhoorn": 0, "19t13": 0, "39": 0, "alex": 0, "moriarti": 0, "5": [0, 15, 17, 19, 20, 21, 22, 24, 25, 27, 28, 29, 30, 44, 50, 55], "42": 0, "20t19": 0, "55": 0, "jack": 0, "jackcent": 0, "02t15": 0, "37": 0, "17z": 0, "han": 0, "martin": 0, "duringhof": 0, "4": [0, 13, 17, 22, 24, 26, 29, 48], "29t21": 0, "15": 0, "noel": 0, "jim\u00e9nez": 0, "garc\u00eda": 0, "noel215": 0, "20t07": 0, "40z": 0, "nathan": [0, 7], "brook": [0, 7], "nbbrook": 0, "05t22": 0, "marq": 0, "rasmussen": 0, "marqrazz": 0, "23t00": 0, "colin": 0, "mackenzi": 0, "guru": 0, "florida": 0, "19t23": 0, "49z": 0, "reza": 0, "kermani": 0, "ark3r": 0, "13t18": 0, "27z": 0, "chri": 0, "thrasher": 0, "christhrash": 0, "26t17": 0, "05z": 0, "michael": 0, "wiznitz": 0, "mechwiz": 0, "22t14": 0, "19": 0, "richard": 0, "osterloh": 0, "rosterloh": 0, "3": [0, 3, 4, 5, 6, 13, 16, 17, 19, 21, 22, 23, 25, 26, 27, 28, 29, 44, 45, 46], "05t08": 0, "53": 0, "mrl1kor": 0, "malapatiravi": 0, "07t18": 0, "adam": 0, "serafin": 0, "serafadam": 0, "12t18": 0, "24": [0, 7, 8], "24z": 0, "manuel": 0, "muth": 0, "mamueluth": 0, "03t10": 0, "20z": 0, "melvin": 0, "wang": 0, "wmmc88": 0, "22t13": 0, "tim": 0, "clepha": 0, "timpl": 0, "13t07": 0, "yutaka": 0, "kondo": 0, "youtalk": 0, "22t00": 0, "guihom": 0, "guihomework": 0, "17t15": 0, "jose": 0, "lui": 0, "rivero": 0, "j": [0, 46], "26t13": 0, "peter": 0, "david": 0, "fagan": 0, "peterdavidfagan": 0, "2": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13, 14, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36, 45, 50, 55, 56], "23t22": 0, "sebastian": 0, "jahr": 0, "sjahr": 0, "15t14": 0, "joseph": 0, "schornak": 0, "schornakj": 0, "27t03": 0, "57z": 0, "akash": 0, "ace314159": 0, "31t17": 0, "jo\u00e3o": 0, "torr": 0, "borg": 0, "borgesjvt": 0, "05t12": 0, "46z": 0, "patrick": 0, "roncagliolo": 0, "roncapat": 0, "01t12": 0, "49": 0, "carrol": 0, "mjcarrol": 0, "28t21": 0, "09z": 0, "vansh": 0, "gehlot": 0, "eth": 0, "vanshgehlot": 0, "13t11": 0, "mhubii": 0, "21t11": 0, "50z": 0, "luka": 0, "macha": 0, "lukasmacha97": 0, "85": 0, "17t18": 0, "sachin": 0, "kumar": 0, "sachinkum0009": 0, "lennart": 0, "nachtigal": 0, "firesurf": 0, "04t07": 0, "qiayuanliao": 0, "qiayuanl": 0, "35": [0, 50], "25t05": 0, "solomon": 0, "swiz23": 0, "15t15": 0, "andi": [0, 7], "mcevoi": 0, "mcevoyandi": 0, "08t14": 0, "kenji": 0, "brameld": 0, "ijnek": 0, "05t10": 0, "53z": 0, "bilal": 0, "gill": 0, "bgill92": 0, "01t13": 0, "22z": 0, "kvk": 0, "praneeth": 0, "kvkpraneeth": 0, "28t07": 0, "33z": 0, "cian": 0, "donovan": 0, "ciandonovan": 0, "26t23": 0, "schulz": 0, "schulze18": 0, "27t21": 0, "29z": 0, "shawn": 0, "schaerer": 0, "shawnschaer": 0, "14t15": 0, "franz": 0, "fjp": 0, "04t22": 0, "vatan": 0, "aksoi": 0, "tezer": 0, "vatanaksoytez": 0, "21t13": 0, "nour": 0, "saeed": 0, "d": [0, 17, 19, 30, 43], "dmitri": 0, "dignakov": 0, "13t16": 0, "ken551": 0, "03t11": 0, "54z": 0, "jonatan": 0, "olofsson": 0, "jonatanolofsson": 0, "05t14": 0, "bedard": 0, "christophebedard": 0, "27t18": 0, "august": 0, "bourgoi": 0, "augustebourgoi": 0, "19t14": 0, "ramon": 0, "wijnand": 0, "rayman": 0, "21t14": 0, "21z": 0, "flochr": 0, "20t10": 0, "castro": 0, "sea": 0, "bass": 0, "27t12": 0, "51z": 0, "abishalini": 0, "sivaraman": 0, "27t14": 0, "ramcharanthota": 0, "ben": 0, "holden": 0, "bobblebal": 0, "01t10": 0, "Will": 0, "baker": 0, "willcbak": 0, "22t15": 0, "robotgir": 0, "17t16": 0, "33": 0, "tomislav": 0, "petkovi\u0107": 0, "petkovich": 0, "17t10": 0, "ros2tori": 0, "28t15": 0, "kevin": 0, "demarco": 0, "syllogismrx": 0, "19t16": 0, "noe\u00ebl": 0, "moeskop": 0, "noeelmoeskop": 0, "18t09": 0, "josh": 0, "newan": 0, "joshnewan": 0, "14t08": 0, "emiliano": 0, "borghi": 0, "eborghi10": 0, "29t20": 0, "haider8645": 0, "26t10": 0, "stephen": 0, "street": 0, "sgstreet": 0, "05t20": 0, "jun": 0, "chenjunnn": 0, "09t06": 0, "daniel": 0, "zumkel": 0, "dzumkel": 0, "shane": 0, "loretz": 0, "sloretz": 0, "yoav": 0, "feket": 0, "yoavfeket": 0, "17t21": 0, "johann": [0, 7], "huemer": 0, "huemerj": 0, "31t15": 0, "keegan": 0, "soteb": 0, "ksoteb": 0, "00z": 0, "carlo": 0, "ag\u00fcero": 0, "caguero": 0, "26t11": 0, "35z": 0, "jacob": 0, "perron": 0, "jacobperron": 0, "09t18": 0, "reframesystem": 0, "krzysztof": 0, "wojciechowski": 0, "kotochleb": 0, "12t08": 0, "55z": 0, "addisu": 0, "z": [0, 23, 25, 26, 28, 32, 34, 38, 41, 50, 51], "taddes": 0, "azeei": 0, "14t20": 0, "thibault": 0, "poignonec": 0, "tpoignonec": 0, "09t08": 0, "sgmurrai": 0, "0000": 0, "00t00": 0, "kelli": 0, "kellyprankin": 0, "kasiceo": 0, "a10263790": 0, "tomoya": 0, "tomoyafujita2016": 0, "usamahamayun1": 0, "dave": 0, "coleman": 0, "davetcoleman": 0, "66": 0, "64": 0, "92": 0, "71": 0, "104": 0, "91": 0, "03t19": 0, "14z": 0, "86": 0, "99": [0, 10], "72": 0, "link": [0, 3, 4, 5, 7, 9, 12, 28, 35], "list": [0, 4, 7, 9, 10, 12, 15, 16, 21, 28, 36, 43, 54, 55, 56], "who": 0, "submit": [0, 1, 7, 54, 55], "respect": [0, 3, 5, 6, 7, 43, 44, 45], "repositori": [0, 4, 6, 11, 13, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 34, 35], "ros2_control_demo": [0, 1, 4, 17, 19, 28, 30, 56], "control_toolbox": [0, 46, 56], "gazebo_ros2_control": [0, 30], "gz_ros2_control": 0, "realtime_tool": [0, 6, 56], "kinematics_interfac": [0, 32], "control_msg": [0, 3, 5, 32, 43, 45, 46, 50, 56], "ha": [0, 1, 3, 4, 5, 7, 13, 15, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 35, 36, 42, 43, 44, 46], "receiv": [0, 2, 28, 43, 44], "major": [0, 41], "from": [0, 1, 2, 7, 8, 9, 10, 14, 15, 16, 18, 28, 32, 34, 35, 36, 37, 38, 41, 43, 44, 45, 47, 48, 51, 53, 55, 56], "support": [0, 2, 3, 4, 5, 7, 14, 15, 16, 28, 32, 36, 42, 44, 45, 50, 54, 56], "rosin": 0, "ro": [0, 1, 2, 3, 4, 5, 6, 8, 10, 13, 14, 16, 17, 19, 20, 23, 24, 25, 26, 27, 28, 29, 30, 35, 36, 44, 45, 56], "industri": [0, 4, 6, 8, 17, 55], "qualiti": [0, 1], "assur": 0, "robot": [0, 2, 3, 5, 6, 8, 9, 10, 13, 19, 21, 23, 30, 34, 38, 42, 50, 51, 56], "softwar": [0, 4, 28], "compon": [0, 7, 10, 11, 13, 16, 17, 22, 23, 24, 25, 26, 27, 28, 32, 34, 35, 38, 41, 48, 50, 51, 56], "http": [0, 1, 4, 6, 8, 17, 28, 31, 33, 52], "www": 0, "eu": 0, "fund": 0, "european": 0, "union": 0, "": [0, 1, 4, 6, 7, 9, 10, 15, 16, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 36, 41, 43, 44, 48, 52, 56], "horizon": 0, "research": [0, 7, 55], "innov": 0, "programm": 0, "under": [0, 7, 15, 21, 36, 44, 45, 50, 56], "grant": [0, 4], "agreement": 0, "732287": 0, "first": [1, 2, 9, 12, 15, 17, 28, 30, 36, 43, 44, 46], "thank": 1, "you": [1, 2, 3, 4, 5, 7, 8, 9, 10, 12, 14, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 36, 45, 46, 56], "consid": [1, 16, 43, 46], "As": [1, 9, 13, 15, 19, 28, 34, 36], "an": [1, 2, 3, 4, 5, 6, 7, 9, 13, 14, 15, 16, 17, 19, 21, 23, 26, 28, 30, 31, 32, 33, 34, 35, 36, 37, 42, 43, 45, 47, 50, 52, 53], "open": [1, 8, 14, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 42, 43, 50], "sourc": [1, 3, 5, 7, 8, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36], "we": [1, 3, 5, 6, 7, 8, 9, 12, 17, 19, 21, 23, 28, 29, 30, 42], "welcom": 1, "each": [1, 4, 6, 9, 10, 12, 13, 15, 17, 19, 22, 28, 31, 42, 50, 52], "contributor": 1, "regardless": 1, "background": [1, 17], "experi": 1, "To": [1, 2, 4, 9, 10, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 42, 44, 54, 55, 56], "reduc": [1, 14], "entropi": 1, "univers": [1, 7, 28, 55], "our": [1, 3, 4, 5, 6, 7, 17, 19, 28], "vivid": 1, "collabor": 1, "environ": [1, 4, 7, 17], "set": [1, 2, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 19, 28, 35, 37, 42, 43, 44, 45, 47, 50, 53], "up": [1, 7, 8, 15, 17, 44], "some": [1, 3, 5, 6, 7, 17, 19, 22, 23, 24, 25, 26, 27, 28, 29, 32, 42, 43, 45, 56], "standard": [1, 2, 6, 7, 10, 15, 16, 22, 27, 28, 38, 42], "method": [1, 2, 4, 9, 10, 12, 15, 28, 36, 50], "requir": [1, 2, 4, 6, 15, 28, 32, 36, 37, 45, 47, 53], "ar": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 38, 41, 42, 43, 44, 45, 46, 48, 50, 51, 52, 56], "limit": [1, 3, 5, 7, 10, 17, 28, 34, 51], "scope": 1, "your": [1, 2, 7, 8, 10, 14, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 33, 36, 54, 55, 56], "pr": [1, 54, 55], "should": [1, 2, 3, 5, 6, 7, 9, 10, 12, 15, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 33, 36, 42, 44, 45, 46], "do": [1, 2, 4, 6, 7, 9, 10, 15, 17, 32, 36, 45, 46], "one": [1, 2, 4, 6, 7, 8, 9, 10, 13, 15, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 36, 37, 38, 42, 44, 45, 46, 47, 50, 52, 53, 56], "thing": [1, 3, 5, 8, 10, 17], "avoid": [1, 19, 22, 23, 24, 25, 26, 27, 29, 36], "ad": [1, 3, 5, 6, 10, 14, 15, 21, 23, 28, 36, 42], "random": [1, 22, 24, 25, 26, 27], "fix": [1, 2, 28, 31, 33, 52], "put": [1, 15, 36], "those": [1, 2, 4, 6, 9, 14, 15, 17, 28, 34, 36, 38, 42, 43, 44], "separ": [1, 2, 4, 17, 22, 42], "descript": [1, 2, 7, 10, 12, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 36], "titl": 1, "add": [1, 2, 9, 10, 12, 15, 28, 31, 32, 33, 36, 52, 54, 55], "short": [1, 36, 56], "summari": [1, 7, 56], "make": [1, 2, 5, 6, 7, 21, 28, 40, 56], "sure": [1, 5, 6, 19, 21, 22, 23, 24, 25, 26, 27, 29, 56], "pipelin": 1, "i": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 56], "green": [1, 44], "don": [1, 3, 8, 9, 23, 43, 45], "t": [1, 3, 5, 8, 9, 10, 17, 23, 43, 44, 45, 46], "afraid": 1, "review": [1, 6, 56], "maintain": [1, 4, 6, 9, 17, 44], "new": [1, 7, 8, 9, 15, 19, 21, 24, 28, 35, 44, 56], "code": [1, 2, 4, 6, 7, 15, 28], "test": [1, 3, 6, 14, 15, 17, 19, 23, 30, 31, 32, 33, 36, 50, 52], "If": [1, 2, 4, 7, 8, 9, 10, 12, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 36, 38, 42, 43, 44, 45, 46, 50, 56], "function": [1, 2, 6, 7, 8, 21, 28, 32, 50], "alwai": [1, 28], "exercis": 1, "serv": [1, 4, 6], "live": [1, 7], "origin": [1, 3, 5, 7, 19, 28, 44, 45], "intent": [1, 9, 14], "section": [1, 2, 13, 15, 36, 45], "target": [1, 10, 15, 32, 36, 39, 43, 45], "also": [1, 2, 3, 4, 5, 6, 7, 9, 10, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 36, 45, 46], "read": [1, 2, 3, 4, 5, 10, 13, 15, 17, 21, 22, 25, 26, 28, 36, 42, 43, 46, 48, 50], "understand": [1, 6, 44], "how": [1, 6, 7, 13, 15, 17, 20, 21, 22, 24, 25, 26, 27, 28, 30, 36], "handl": [1, 2, 4, 6, 7, 15, 25, 28, 31, 32, 33, 39, 40, 41, 45, 46, 50, 52], "organ": [1, 7, 56], "guidelin": 1, "especi": [1, 2, 17, 50], "applic": [1, 4, 7, 8, 10, 13, 28], "pleas": [1, 10, 27, 56], "keep": [1, 28, 36], "mind": [1, 36], "work": [1, 6, 7, 9, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 36, 37, 42, 47, 51, 53, 56], "fork": 1, "when": [1, 2, 3, 4, 5, 7, 8, 9, 10, 14, 15, 16, 21, 24, 28, 32, 35, 36, 40, 43, 45, 46, 50], "That": [1, 15, 36], "wai": [1, 10, 15, 28, 36, 38, 45], "main": [1, 4, 6, 7, 10, 14, 28, 36, 50, 56], "repo": [1, 4, 8, 17], "clean": 1, "featur": [1, 7, 14, 17, 19, 29, 50, 56], "branch": [1, 17], "check": [1, 2, 4, 6, 9, 12, 14, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 36, 43, 44, 45, 52, 56], "satisfi": 1, "befor": [1, 2, 9, 10, 15, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 36, 44], "thei": [1, 2, 4, 6, 7, 9, 13, 14, 15, 16, 21, 35, 36, 43, 45, 50], "can": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 36, 38, 39, 43, 44, 45, 46, 50, 56], "must": [1, 3, 5, 9, 10, 13, 17, 28, 41, 43, 45], "approv": 1, "two": [1, 4, 6, 9, 10, 15, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 33, 36, 38, 44, 45, 46, 50, 52], "explicitli": 1, "onli": [1, 2, 4, 6, 7, 9, 10, 12, 15, 16, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 33, 34, 36, 37, 38, 42, 43, 44, 45, 46, 47, 53], "except": [1, 28], "other": [1, 2, 3, 4, 7, 9, 15, 17, 22, 27, 28, 31, 33, 36, 42, 44, 50, 52], "where": [1, 3, 6, 8, 9, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 31, 33, 34, 36, 42, 43, 44, 45, 46, 50, 52], "back": 1, "traceabl": 1, "discuss": [1, 7, 8, 21, 30, 44, 56], "suffici": [1, 3, 5, 9, 38], "note": [1, 4, 10, 19, 34, 45, 46, 56], "still": [1, 2, 19, 21, 22, 23, 24, 25, 26, 27, 29, 35, 44], "encourag": 1, "help": [1, 10, 14, 15, 16, 36], "u": [1, 3, 5, 10, 17, 43], "increas": [1, 23, 46], "pace": 1, "veri": [1, 2, 3, 5, 6, 13], "like": [1, 2, 3, 4, 5, 6, 7, 8, 15, 17, 21, 28], "find": [1, 3, 5, 23], "issu": [1, 6, 7, 8, 56], "nobodi": 1, "els": 1, "squash": 1, "commit": 1, "messag": [1, 6, 10, 16, 24, 25, 26, 28, 38, 41, 42, 43, 44, 45, 48, 50, 56], "comment": [1, 28], "fixup": 1, "linter": 1, "us": [1, 2, 4, 6, 7, 8, 12, 13, 14, 16, 18, 28, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 43, 44, 47, 48, 50, 52, 53, 56], "pre": 1, "correct": [1, 2, 44], "header": [1, 12, 15, 25, 26, 34, 36, 44], "address": [1, 28], "similar": [1, 4, 7, 13, 19, 21, 28], "mean": [1, 2, 9, 13, 14, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 44, 45], "result": [1, 4, 9, 10, 19, 28, 42, 44], "exactli": 1, "cowboi": 1, "style": [1, 15, 36], "over": [1, 6, 9, 23, 28], "weekend": 1, "It": [1, 2, 3, 4, 6, 9, 10, 19, 21, 22, 24, 25, 26, 27, 28, 29, 30, 38, 42, 43, 44, 46], "doesn": [1, 9, 46], "matter": 1, "trivial": [1, 14], "chanc": 1, "proper": [1, 9, 10, 45], "Be": 1, "awar": 1, "impact": 1, "proport": [1, 43], "its": [1, 2, 3, 4, 5, 6, 7, 9, 10, 13, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 35, 38, 39, 40, 41, 42, 44, 46, 50, 52], "ping": 1, "them": [1, 6, 9, 10, 15, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 36, 42, 44, 55], "necessari": [1, 9, 12], "repeatedli": 1, "start": [1, 2, 3, 5, 7, 9, 10, 12, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36, 43, 44, 56], "part": [1, 6, 7, 13, 28, 36, 44, 45], "For": [1, 3, 4, 5, 6, 7, 9, 10, 12, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 43, 45, 46, 50, 52], "detail": [1, 2, 3, 4, 5, 10, 12, 13, 14, 15, 21, 28, 30, 31, 33, 34, 36, 44, 45, 52], "thoma": 1, "cokela": 1, "info": [1, 10, 12, 15, 28], "tutori": [1, 17], "sphinx": 1, "rest_syntax": 1, "html": 1, "id8": 1, "type": [1, 2, 3, 4, 5, 7, 9, 10, 11, 12, 15, 16, 17, 22, 23, 25, 26, 27, 28, 34, 35, 36, 37, 38, 41, 43, 46, 47, 48, 50, 53], "stabl": 1, "against": 1, "accept": [1, 15, 24, 36, 37, 43, 44, 45, 47, 53], "api": [1, 3, 5, 6, 15, 19, 22, 23, 24, 25, 26, 27, 29], "abi": 1, "chang": [1, 2, 4, 7, 10, 12, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36, 43, 44, 45], "e": [1, 2, 4, 6, 7, 9, 10, 13, 14, 15, 17, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 32, 36, 37, 38, 42, 43, 44, 46, 47, 50, 53, 56], "name": [1, 2, 3, 4, 5, 7, 10, 13, 14, 15, 16, 17, 19, 21, 22, 23, 25, 26, 27, 28, 30, 32, 36, 38, 39, 41, 42, 43, 46, 48, 50], "convent": [1, 28], "master": [1, 4, 17, 28], "semi": 1, "binari": 1, "good": [1, 3, 5, 6], "same": [1, 8, 9, 24, 28, 35, 38, 43, 44, 45, 46], "build": [1, 8, 15, 28, 32, 36], "dai": 1, "ros_distro": [1, 4, 17, 19], "foxi": [1, 7, 15], "galact": [1, 12, 15], "releas": [1, 4, 7, 17, 28], "version": [1, 6, 8, 17, 45], "non": [1, 7, 21, 28, 38, 55], "brake": 1, "distribut": [1, 17, 56], "three": [1, 2, 4, 12, 13, 17, 28, 36, 44, 52], "stage": [1, 9, 21], "current": [1, 6, 12, 13, 15, 16, 44, 45, 50], "futur": [1, 7, 9, 44, 45], "compat": [1, 2, 7, 15, 17], "packag": [1, 2, 3, 5, 12, 15, 28, 31, 32, 33, 34, 36, 37, 38, 41, 45, 46, 47, 48, 50, 52, 53, 56], "direct": [1, 2, 6, 15, 28, 36, 43], "local": [1, 3, 5, 8, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 42], "possibl": [1, 4, 6, 10, 13, 17, 19, 22, 23, 24, 25, 26, 27, 29, 32, 36, 44], "core": [1, 11, 28], "immedi": [1, 10, 19, 21, 22, 24, 25, 26, 27, 28, 29, 30, 46], "depend": [1, 4, 8, 12, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 35, 36, 44, 46, 50], "fail": [1, 24, 28], "expect": [1, 6, 7, 8, 21, 28, 31, 33, 45, 50, 52], "after": [1, 9, 10, 15, 17, 19, 28, 34, 36, 43, 44, 45, 50, 51], "next": [1, 19, 28, 44], "sync": 1, "abl": 1, "potenti": [1, 7, 8, 36, 43], "mid": 1, "stat": 1, "power": [1, 3, 5, 7, 15], "plausibl": 1, "analyt": 1, "robothw": 2, "rigid": 2, "ani": [2, 4, 7, 9, 10, 12, 13, 17, 21, 28, 36, 43, 45], "imposs": 2, "extend": [2, 4, 6, 9, 15, 36], "exist": [2, 4, 6, 7, 8, 9, 10, 12, 13, 15, 19, 22, 23, 24, 25, 26, 27, 28, 29, 36, 45], "addit": [2, 3, 5, 9, 17, 20, 23, 28], "sensor": [2, 4, 6, 12, 14, 15, 17, 22, 27, 28, 32, 35, 55], "actuat": [2, 4, 6, 12, 13, 14, 15, 17, 21], "tool": [2, 3, 5, 6, 7, 8, 28], "without": [2, 3, 4, 5, 7, 10, 14, 15, 17, 21, 30, 36, 43, 44], "combinedrobothardwar": 2, "drawback": [2, 56], "solut": [2, 7, 8], "optim": [2, 10], "combin": [2, 9, 13, 14, 17, 24, 42, 43, 44, 45, 46], "extern": [2, 4, 6, 9, 14, 17, 32, 46], "defin": [2, 3, 5, 6, 10, 14, 15, 17, 28, 32, 36, 38, 41, 42, 43, 44, 45, 46, 48, 50], "system": [2, 3, 4, 5, 6, 7, 8, 12, 13, 15, 16, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 45, 54, 55, 56], "composit": [2, 7], "basic": [2, 3, 4, 5, 6, 7, 15, 17, 23, 36], "physic": [2, 4, 12, 13, 14], "cell": [2, 38], "surround": 2, "describ": [2, 4, 9, 13, 17, 19, 24, 28, 30, 44], "multi": [2, 4, 6, 7, 8, 17, 24], "gripper": [2, 3, 4, 5, 7, 13, 14, 35], "out": [2, 3, 5, 10, 28, 34], "box": [2, 17, 19, 23, 24, 25, 26, 29, 30], "allow": [2, 3, 4, 5, 17, 28, 40, 43, 44, 45, 49], "joint": [2, 4, 7, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 39, 40, 42, 43, 44, 46, 47, 50, 52, 53, 56], "posit": [2, 3, 4, 5, 7, 10, 13, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 34, 35, 37, 42, 43, 44, 45, 46, 47, 50, 53], "veloc": [2, 3, 4, 5, 7, 9, 17, 22, 23, 24, 28, 32, 33, 34, 35, 40, 41, 42, 43, 44, 45, 46, 47, 50, 53], "effort": [2, 3, 5, 17, 28, 35, 37, 40, 42, 43, 45, 46], "hard": [2, 10], "data": [2, 4, 6, 14, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 35, 42, 44], "approach": [2, 9], "doe": [2, 10, 15, 19, 22, 23, 24, 25, 26, 27, 28, 29, 36, 44, 45], "enforc": [2, 24, 28, 43], "string": [2, 10, 14, 17, 36, 39, 40, 41, 42, 43, 46, 48, 50], "ensur": [2, 7, 10, 28, 44], "constant": [2, 17], "hardware_interfac": [2, 3, 4, 5, 12, 14, 15, 17, 22, 25, 26, 27, 28, 32, 34, 35, 36], "In": [2, 3, 4, 5, 6, 7, 9, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 36, 42, 44, 50], "had": 2, "itself": [2, 9], "took": 2, "care": [2, 6, 10, 15, 24, 36, 45], "regist": [2, 3, 5], "resourc": [2, 3, 5, 15, 24], "conflict": [2, 4, 6], "resourcemanag": [2, 9], "take": [2, 6, 9, 15, 21, 24, 34, 36, 42, 44], "state": [2, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 35, 36, 38, 42, 43], "avail": [2, 4, 7, 9, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36, 42, 45], "enabl": [2, 4, 6, 7, 12, 15, 16, 17, 23, 32, 38, 46, 50], "anymor": 2, "controllermanag": [2, 10], "implement": [2, 3, 4, 5, 6, 7, 10, 13, 14, 15, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 36, 39, 44, 45, 46, 50, 51, 52, 56], "systeminterfac": [2, 3, 5, 14, 25, 28], "granular": 2, "sensorinterfac": [2, 22, 26], "actuatorinterfac": [2, 22, 27], "abov": [2, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 35, 44], "choos": [2, 17, 50], "suitabl": [2, 7], "strategi": [2, 17, 44], "decid": 2, "which": [2, 3, 4, 5, 6, 7, 8, 10, 15, 16, 17, 19, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 38, 41, 42, 43, 44, 45, 48, 50, 51], "case": [2, 3, 5, 6, 7, 9, 17, 21, 28, 36, 42, 44, 45, 56], "mayb": [2, 9], "sens": [2, 4, 35, 38], "multipl": [2, 4, 7, 9, 13, 15, 17, 42, 43], "constructor": [2, 15, 28, 36], "initi": [2, 15, 28, 36, 44], "variabl": [2, 15, 28, 36, 43], "need": [2, 3, 4, 5, 6, 7, 9, 13, 15, 17, 19, 22, 23, 24, 25, 26, 27, 28, 29, 35, 36, 44, 46], "commun": [2, 4, 6, 7, 15, 17, 19, 22, 23, 24, 25, 26, 28, 29, 55], "default": [2, 4, 9, 10, 14, 24, 31, 33, 39, 40, 41, 42, 43, 44, 45, 46, 48, 50, 52], "configur": [2, 3, 4, 5, 6, 7, 9, 10, 12, 14, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36, 42, 43, 44, 45, 50], "paramet": [2, 3, 5, 7, 8, 15, 17, 19, 23, 28, 36, 45], "pars": [2, 3, 5, 10, 11, 13], "urdf": [2, 7, 10, 13, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "snippet": 2, "hardwareinfo": [2, 28], "here": [2, 11, 15, 28, 36, 37, 45, 47, 53], "cross": [2, 42], "valu": [2, 4, 6, 13, 14, 15, 17, 19, 20, 21, 23, 25, 26, 28, 30, 36, 41, 42, 43, 45, 48, 50], "export_": 2, "_interfac": [2, 15], "joint_a2": 2, "extract": [2, 34, 51], "sensibl": 2, "stop": [2, 7, 9, 10, 12, 16, 19, 23, 24, 28, 34, 43, 51], "usual": [2, 4, 10, 14, 15, 28, 36], "includ": [2, 3, 5, 6, 8, 10, 12, 15, 16, 28, 36, 45, 55], "command": [2, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 39, 40, 43, 44, 47, 49, 52, 53, 56], "safe": [2, 28, 34, 36, 45, 51], "interrupt": [2, 10], "stream": [2, 7], "write": [2, 4, 7, 9, 10, 11, 21, 22, 23, 27, 35, 46], "exchang": [2, 6, 19, 22, 23, 24, 25, 26, 27, 29, 56], "equival": [2, 28], "forget": [2, 4, 17, 45], "pluginlib_export_class": [2, 15, 17, 28, 36], "macro": [2, 4, 15, 17, 28, 36], "end": [2, 4, 12, 15, 28, 36, 43, 55], "cpp": [2, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36], "file": [2, 3, 4, 5, 6, 7, 10, 14, 15, 17, 32, 34, 36, 37, 45, 47, 53], "creat": [2, 3, 4, 5, 7, 10, 14, 15, 17, 28, 36], "xml": [2, 3, 5, 12, 15, 28, 36], "librari": [2, 4, 15, 16, 17, 31, 33, 35, 36, 46, 50, 52], "pluginlib": [2, 3, 4, 5, 10, 15, 28, 36, 46], "exampl": [2, 3, 4, 5, 6, 7, 9, 10, 14, 16, 23, 32, 37, 38, 42, 45, 46, 47, 53, 56], "rrbotsystempositiononlyhardwar": [2, 4, 13, 16, 19, 21, 26], "excel": 2, "jointtrajectorycontrol": [2, 3, 5, 16, 19, 32, 45], "real": [2, 6, 7, 10, 14, 23, 36, 42, 43, 56], "critic": [2, 6], "mark": [2, 21], "controllerinterfac": [2, 4, 9, 16, 28, 36], "member": [2, 15, 28, 36, 44], "init": 2, "call": [2, 3, 4, 5, 9, 15, 23, 28, 36], "lifecycl": [2, 4, 7, 10, 12, 15, 28, 35], "declar": [2, 15, 28, 36], "state_interface_configur": [2, 28, 36], "command_interface_configur": [2, 28, 36], "design": [2, 4, 6, 7, 9, 28, 56], "updat": [2, 4, 9, 10, 17, 28, 35, 36, 45, 50], "manag": [2, 3, 5, 6, 7, 11, 12, 15, 16, 17, 28, 36, 45, 56], "option": [2, 3, 5, 10, 12, 14, 15, 16, 19, 24, 35, 36, 38, 42, 45, 46, 50], "on_configur": [2, 15, 28, 36], "on_activ": [2, 12, 15, 28, 36], "on_deactiv": [2, 12, 15, 28, 36], "deactiv": [2, 4, 16, 19, 43], "final": [2, 7, 12, 28], "joint_trajectory_plugin": 2, "integr": [3, 4, 5, 6, 7, 14, 17, 21, 23, 28, 43, 44, 45, 56], "architectur": [3, 5, 6, 7, 8], "gazebo": [3, 5, 6, 17, 19, 30, 54], "classic": [3, 17, 30, 54], "provid": [3, 4, 5, 6, 7, 9, 10, 13, 14, 15, 17, 19, 21, 24, 25, 26, 27, 28, 29, 30, 32, 36, 42, 43, 44, 45, 50, 56], "instanti": [3, 5, 10], "connect": [3, 4, 5, 14, 17, 25, 28], "model": [3, 5, 19, 28], "cd": [3, 4, 5, 8, 17, 28], "docker": [3, 5, 8, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30], "gui": [3, 5, 17, 19, 21, 22, 24, 25, 26, 27, 29, 30, 49], "properli": [3, 5, 9, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], "rm": [3, 4, 5, 17, 19, 30], "net": [3, 5, 7, 17, 19, 30], "host": [3, 5, 17, 19, 30, 55], "ros2": [3, 4, 5, 7, 10, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36], "launch": [3, 4, 5, 10, 14, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "cart_example_posit": [3, 5], "py": [3, 5, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], "fals": [3, 5, 14, 17, 19, 30, 34, 40, 42, 43, 45, 46, 50], "machin": [3, 4, 5, 6, 17, 30], "client": [3, 5, 30, 45], "gzclient": [3, 30], "rocker": [3, 5], "go": [3, 5, 7, 10, 15, 28, 36], "imag": [3, 5, 10, 30], "inject": [3, 5, 7, 8], "nvidia": [3, 5], "And": 3, "user": [3, 5, 6, 10, 17, 28, 44], "id": [3, 5, 16, 19, 22, 23, 24, 25, 26, 27, 29], "specif": [3, 5, 6, 9, 10, 12, 13, 28, 30, 39, 42, 44, 45], "cleaner": [3, 5], "mount": [3, 5], "permiss": [3, 5, 10], "instal": [3, 5, 8, 10, 15, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36], "instruct": [3, 5, 8, 23, 28, 30], "x11": [3, 5], "latest": [3, 4, 5, 8], "move": [3, 5, 17, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 40], "cart": [3, 5], "rail": [3, 5], "exec": [3, 5, 19], "bash": [3, 4, 5, 8, 15, 17, 19, 28, 36], "home": [3, 5], "ros2_w": [3, 4, 5, 17], "example_posit": [3, 5], "element": [3, 5, 28], "access": [3, 4, 5, 7, 10, 14, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36, 42], "interfac": [3, 5, 6, 7, 9, 10, 11, 12, 14, 15, 17, 19, 21, 22, 23, 25, 26, 27, 30, 31, 33, 35, 36, 38, 41, 43, 44, 48, 52, 54, 55, 56], "gazebosystem": 3, "hardwar": [3, 5, 7, 8, 9, 11, 14, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 34, 35, 36, 43, 46, 51, 56], "slider_to_cart": [3, 5, 37, 47, 53], "command_interfac": [3, 4, 5, 13, 21, 28, 32, 43, 45, 46], "param": [3, 4, 5, 10, 13, 14, 23, 28], "min": [3, 4, 5, 13, 28], "1000": [3, 5, 28], "max": [3, 4, 5, 13, 28, 40], "state_interfac": [3, 4, 5, 13, 28, 32, 43, 45], "initial_valu": [3, 5, 28], "mimick": [3, 5, 14], "manual": [3, 4, 5, 6, 10, 15, 17, 19, 24, 25, 26, 27, 29, 30, 36, 56], "multipli": [3, 5, 14], "definit": [3, 4, 5, 10, 15, 28, 32, 34, 35, 36, 38, 43], "left_finger_joint": [3, 5], "prismat": [3, 5], "right_finger_joint": [3, 5], "axi": [3, 5, 6, 28, 31, 33, 34, 38, 52], "xyz": [3, 5, 28], "rpy": [3, 5, 28], "1415926535": [3, 5], "parent": [3, 5, 15, 28, 36], "base": [3, 4, 5, 7, 12, 15, 16, 17, 22, 23, 27, 28, 34, 36, 39, 50, 51, 54], "child": [3, 5, 13, 28], "finger_left": [3, 5], "lower": [3, 5, 28], "upper": [3, 5, 28], "actual": [3, 5, 9], "load": [3, 4, 5, 10, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 35, 36], "appropri": [3, 5, 6, 44], "By": [3, 5, 10, 28, 42, 44], "though": [3, 5, 10, 21], "extens": [3, 5], "via": [3, 4, 5, 17, 19, 25, 26, 28, 30, 45], "between": [3, 4, 5, 6, 12, 13, 17, 28, 31, 33, 42, 43, 44, 45, 46, 52], "filenam": [3, 5, 28], "libgazebo_ros2_control": 3, "so": [3, 4, 5, 9, 10, 15, 28, 32, 36, 45], "robot_param": [3, 5], "robot_descript": [3, 5, 10, 19, 28], "robot_param_nod": [3, 5], "robot_state_publish": [3, 5, 42], "config": [3, 5, 17], "cartpole_control": [3, 5], "yaml": [3, 4, 5, 6, 8, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 45], "locat": [3, 8, 28, 32], "server": [3, 40, 45], "node": [3, 4, 5, 10, 12, 14, 16, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36], "attempt": [3, 5, 10, 45], "get": [3, 5, 7, 8, 9, 10, 12, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 44, 46, 56], "most": [3, 5, 6, 15, 17, 28, 36], "least": [3, 5, 13, 15, 36, 45], "jointstateinterfac": [3, 5], "effortjointinterfac": [3, 5], "velocityjointinterfac": [3, 5], "complex": [3, 4, 5, 6, 7, 8, 9], "mechan": [3, 5, 9, 45], "nonlinear": [3, 5], "spring": [3, 5], "linkag": [3, 5, 19, 21, 29], "etc": [3, 5, 10, 24, 28, 56], "These": [3, 5, 17, 28], "inherit": [3, 5, 10, 28], "gazebosysteminterfac": 3, "level": [3, 5, 6, 7, 10, 21, 22, 27, 37, 44, 47, 53], "properti": [3, 5, 28], "sub": [3, 5], "class": [3, 4, 5, 7, 10, 12, 15, 16, 28, 36, 39, 44], "specifi": [3, 5, 10, 15, 17, 28, 35, 36, 43, 44, 45, 46], "insid": [3, 5, 14, 17, 19], "publish": [3, 5, 6, 9, 13, 17, 20, 28, 32, 35, 38, 41, 42, 44, 48, 51, 56], "stateinterfac": [3, 5, 28], "topic": [3, 5, 6, 7, 9, 13, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 35, 45, 46, 54], "sensor_msg": [3, 5, 41, 48], "msg": [3, 5, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 34, 37, 38, 39, 41, 44, 45, 46, 47, 48, 50, 53], "jointstat": [3, 5], "joint_state_control": [3, 5, 16], "ros__paramet": [3, 5, 37, 45, 47, 53], "jointstatecontrol": [3, 5, 16], "action": [3, 5, 9, 43], "cart_pole_control": [3, 5], "follow_joint_trajectori": [3, 5, 45], "followjointtrajectori": [3, 5, 43, 45], "joint_trajectory_control": [3, 5, 6, 16, 19, 35, 49], "write_op_mod": [3, 5], "contain": [3, 8, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 37, 43, 44, 46, 47, 50, 53], "content": [3, 15, 28, 36], "There": [3, 4, 5, 10, 12, 15, 17, 22, 25, 26, 27, 36, 44, 45], "meter": [3, 5, 28], "cart_example_veloc": [3, 5], "cart_example_effort": [3, 5], "diff_driv": 3, "tricycle_dr": 3, "world": [3, 5, 10, 14, 28], "example_veloc": [3, 5], "example_effort": [3, 5], "example_diff_dr": [3, 5], "example_tricycle_dr": [3, 5], "parallel": [3, 4, 5, 13, 14], "gripper_mimic_joint_exampl": [3, 5], "send": [3, 5, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 44, 45, 46], "example_gripp": [3, 5], "roll": [4, 8, 17, 28], "want": [4, 8, 9, 10, 17], "download": [4, 17], "mkdir": [4, 8, 17], "p": [4, 8, 10, 17, 43], "src": [4, 8, 15, 17, 19, 28, 30, 32, 36], "wget": 4, "raw": 4, "githubusercont": 4, "com": [4, 6, 8, 17, 28], "org": [4, 6, 31, 33, 52], "ros_control": [4, 6, 7, 56], "vc": [4, 8, 17], "import": [4, 8, 15, 17, 28, 36, 43], "rosdep": [4, 17], "rosdistro": [4, 17], "sudo": [4, 8, 10, 17], "apt": [4, 8, 10, 17], "path": [4, 7, 17, 28, 45], "ignor": [4, 10, 17, 34, 43, 50, 51], "r": [4, 17, 29], "y": [4, 17, 23, 25, 26, 32, 38, 41], "everyth": [4, 15, 17, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 36], "opt": [4, 8, 17, 19], "setup": [4, 8, 14, 15, 17, 19, 23, 28, 30, 36, 44, 46], "sh": [4, 17, 19, 30], "colcon": [4, 8, 15, 17, 28, 36], "symlink": [4, 8, 17, 28], "folder": [4, 7, 15, 17, 19, 20, 23, 31, 32, 33, 36, 50, 52], "found": [4, 10, 11, 15, 19, 20, 23, 32, 34, 36, 39, 45, 56], "github": [4, 6, 8, 11, 17, 28, 35, 54, 55, 56], "figur": [4, 44], "uml": 4, "diagram": [4, 16], "intern": [4, 6, 9, 13, 15, 19, 21, 22, 23, 24, 25, 26, 27, 29, 32, 44, 45], "cm": [4, 10], "abstract": [4, 7, 12, 28], "side": [4, 6, 7], "entri": [4, 36], "point": [4, 28, 36, 43, 44, 45, 46, 56], "servic": [4, 6, 10, 12, 28, 35], "executor": [4, 10], "custom": [4, 13, 14, 17, 22, 23, 38, 42, 54], "howev": [4, 6, 9, 10, 17, 21, 28], "recommend": [4, 7, 8, 15, 46], "ros2_control_nod": [4, 24, 28], "controller_manag": [4, 5, 6, 10, 16, 24, 35, 36, 37, 45, 47, 53], "assum": [4, 9], "On": [4, 7, 8, 28], "hand": [4, 28, 55], "unload": [4, 10, 16], "match": [4, 17, 44], "report": [4, 6, 42, 56], "error": [4, 6, 10, 15, 21, 24, 28, 36, 42, 43, 45, 46], "execut": [4, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 36, 40, 43, 44, 45, 52], "loop": [4, 7, 10, 14, 19, 24, 25, 26, 27, 28, 29, 30, 36, 42, 43, 45, 50], "output": [4, 6, 7, 13, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 38], "driver": [4, 7, 17, 28, 55], "reus": [4, 7, 9], "flexibl": 4, "motor": [4, 9, 55], "encod": [4, 28], "theori": [4, 56], "compar": [4, 6, 7], "refer": [4, 9, 21, 28, 55], "measur": [4, 14, 22, 32, 38, 42, 43, 55], "calcul": [4, 28, 32, 44, 50], "input": [4, 6, 7, 8, 9, 13, 20, 21, 28, 32, 34, 37, 39, 43, 44, 47, 50, 51, 53], "object": [4, 28], "deriv": [4, 43, 44, 46], "controller_interfac": [4, 16, 28, 32, 36, 38, 41, 48], "export": [4, 9, 10, 15, 17, 28, 32, 36], "plugin": [4, 8, 10, 12, 13, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 36, 46, 49], "forwardcommandcontrol": [4, 19, 20, 21, 22, 24, 25, 26, 27, 29, 30], "lifecyclenod": 4, "document": [4, 6, 7, 13, 14, 15, 17, 23, 34, 35, 44, 45], "interact": [4, 7, 10, 16, 20, 28, 30], "srv": [4, 45, 46], "controller_manager_msg": 4, "while": [4, 6, 7, 28, 44], "directli": [4, 19, 21, 30, 46, 56], "line": [4, 11, 12, 15, 19, 28, 36, 42, 44], "friendli": 4, "cli": [4, 10, 11, 16, 19, 20, 23, 24, 25, 26, 27, 29, 30], "auto": [4, 10], "complet": [4, 12, 21, 28, 44], "rang": [4, 13, 35], "common": [4, 6, 17, 42, 56], "capabl": [4, 6], "realiz": [4, 7, 44, 45], "repres": [4, 12, 28, 34, 35, 44], "dynam": [4, 15, 28, 36, 46], "dof": [4, 13, 17, 28, 40, 46], "differ": [4, 6, 7, 13, 15, 17, 19, 20, 23, 24, 28, 37, 38, 42, 44, 46, 47, 50, 53], "transmiss": [4, 17], "humanoid": 4, "logic": 4, "channel": [4, 55], "kuka": [4, 19, 24, 25, 26, 55], "rsi": [4, 19, 25, 26, 55], "relat": [4, 6, 7], "forc": [4, 7, 13, 16, 25, 26, 32, 35, 55], "torqu": [4, 13, 25, 26, 32, 35], "simpl": [4, 6, 7, 9, 15, 17, 19, 21, 23, 28, 29, 36, 40], "valv": [4, 13], "mandatori": [4, 10, 38, 43], "dc": 4, "arduino": [4, 22, 27], "board": 4, "modular": [4, 7, 8, 17, 28], "independ": [4, 7, 10, 26], "explan": [4, 10, 15], "given": [4, 10, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 37, 43, 44, 45, 47, 53], "through": [4, 6, 7, 9, 10, 15, 16, 17, 21, 28, 36, 45, 46, 56], "tag": [4, 10, 13, 15, 17, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 30, 36, 56], "chosen": [4, 13], "structur": [4, 6, 9, 10, 15, 28, 34, 36, 43, 44], "track": [4, 31, 52, 56], "togeth": [4, 9, 13, 23, 25, 50], "xacro": [4, 10, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], "hereund": 4, "rrbot": [4, 13, 16, 17, 20, 22, 24, 25, 26, 27, 29], "effector": [4, 55], "site": 4, "rrbotsystempositiononli": [4, 26], "ros2_control_demo_hardwar": [4, 13, 16], "example_param_write_for_sec": 4, "example_param_read_for_sec": [4, 13], "joint1": [4, 13, 14, 16, 19, 20, 21, 22, 24, 25, 26, 27, 29, 30, 45], "joint2": [4, 13, 16, 19, 20, 21, 22, 24, 25, 26, 27, 29, 30, 45], "rrbotforcetorquesensor1d": 4, "forcetorquesensor1dhardwar": 4, "tcp_fts_sensor": [4, 13, 25, 26], "frame_id": [4, 13, 25, 26, 38, 41, 48, 50], "rrbot_tcp": 4, "min_forc": 4, "100": [4, 13, 37, 47, 53], "max_forc": 4, "rrbotgripp": 4, "positionactuatorhardwar": 4, "gripper_joint": 4, "instead": [4, 14, 23, 28, 30, 43, 46], "pure": 4, "stack": [4, 7, 56], "could": [4, 7, 9, 17, 24, 36, 42, 45], "altern": [4, 8, 10, 19, 45], "script": [4, 6, 15, 36], "skeleton": 4, "sim": [5, 16, 54], "dockerfil": [5, 17], "Then": [5, 9, 17, 28, 30, 44], "ign": 5, "meet": [5, 56], "prerequisit": 5, "along": 5, "gazebosimsystem": 5, "libgz_ros2_control": 5, "gazebosimros2controlplugin": 5, "gazebosimsysteminterfac": 5, "controller_manager_prefix_node_nam": 5, "diff_drive_exampl": 5, "tricycle_drive_exampl": 5, "about": [6, 14, 15, 24, 34, 41, 42, 45, 56], "gener": [6, 7, 13, 15, 16, 22, 23, 24, 25, 26, 27, 28, 35, 36, 45, 50, 56], "task": [6, 7, 34], "envis": 6, "simul": [6, 14, 16, 17, 19, 21, 23, 25, 26, 28], "ignit": 6, "showcas": [6, 7, 8], "grace": 6, "degrad": 6, "roadmap": [6, 17, 56], "place": [6, 8, 36], "draft": 6, "gpio": [6, 17, 28], "mode": [6, 9, 15, 21, 24, 32, 43, 44, 46, 50], "switch": [6, 16, 17, 19, 24], "movement": 6, "safeti": [6, 28], "skill": 6, "prefer": 6, "c": [6, 10, 13, 15, 16, 19, 28], "familiar": [6, 56], "mentor": 6, "\u0161togl": [6, 7], "size": [6, 48], "350": 6, "hour": 6, "difficulti": 6, "medium": 6, "focus": [6, 7, 9], "although": [6, 9, 12, 13, 45], "easi": [6, 10], "therefor": [6, 9, 10, 17, 36, 42, 43, 45], "often": [6, 14, 23, 36, 42], "orchestr": 6, "purpos": [6, 19, 21, 22, 24, 25, 26, 27, 28, 29, 30, 46], "conductor": 6, "scenario": [6, 44], "moment": [6, 45], "right": [6, 17], "replac": [6, 12, 35, 45], "high": [6, 10, 44], "moveit2": [6, 7, 35, 55], "simplecontrollermanag": 6, "goal": [6, 7, 13, 19, 24, 25, 26, 27, 29, 30, 40, 43, 45, 56], "form": [6, 17], "behavior": [6, 14, 28, 44], "benchmark": 6, "statu": [6, 9, 12, 16, 19, 43], "format": [6, 28, 32, 42, 45], "preset": 6, "modul": [6, 21], "reli": 6, "doubl": [6, 14, 19, 28, 31, 33, 40, 43, 46, 48, 50, 52], "desir": [6, 43, 45], "both": [6, 7, 21, 28, 29, 42, 43, 44, 45], "improv": [6, 10], "readabl": [6, 28], "earlier": 6, "concept": [6, 7, 8, 9, 14, 17, 19], "introduc": [6, 7, 9, 19, 28], "essenti": [6, 19], "group": [6, 9, 10, 13, 45, 56], "instanc": [6, 10, 21, 42], "imu": [6, 13, 35], "typic": [6, 13, 23, 42, 43], "acceleromet": 6, "gyroscop": 6, "compass": 6, "Such": [6, 21], "struct": 6, "low": [6, 7, 10], "profil": 6, "relev": [6, 43, 46, 50, 56], "addition": [6, 28, 31, 33, 52, 56], "few": [6, 7, 35], "175": 6, "rewrit": [6, 56], "rich": 6, "wa": [6, 8, 15, 19, 23, 24, 28, 36, 44], "motiv": 6, "adopt": 6, "port": [6, 12, 13], "quit": 6, "miss": [6, 7, 8, 42, 44, 45], "diff_drive_control": [6, 9, 16, 23], "consist": [6, 45, 56], "onc": [6, 7, 8, 19, 23, 24, 25, 26, 28, 29, 35], "identifi": [6, 28], "much": [6, 19, 22, 23, 24, 25, 26, 27, 29, 36, 45], "303": 6, "304": 6, "stretch": 6, "81": 6, "302": 6, "unit": 6, "gmock": 6, "cc": [7, 44, 45], "BY": [7, 44, 45], "licens": [7, 44, 45], "author": [7, 9], "either": [7, 19, 24, 25, 26, 27, 29, 30, 44], "down": [7, 28], "below": [7, 10, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 43, 44, 45], "compani": 7, "my": 7, "company_nam": 7, "alreadi": [7, 8, 15, 16, 17, 19, 21, 28, 30, 35, 36, 45], "know": [7, 8, 13], "act": [7, 8], "kernel": [7, 8, 10], "struggl": [7, 8], "cover": [7, 8], "product": [7, 8, 42], "variou": [7, 8, 19, 29], "littl": [7, 8, 10], "run": [7, 8, 9, 10, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 35, 44, 50], "practic": [7, 8], "overview": [7, 8], "control": [7, 8, 11, 12, 13, 14, 15, 16, 17, 31, 33, 38, 41, 42, 43, 44, 48, 51, 52, 55, 56], "chain": [7, 8, 11, 16, 17, 28, 32, 43, 46, 50], "debug": [7, 8, 14], "top": [7, 8], "involv": [7, 8], "bring": [7, 8, 17], "page": [7, 54, 55], "locu": 7, "stogl": [7, 8], "consult": 7, "tricycl": [7, 35, 51], "event": 7, "pixel": 7, "prefac": 7, "introduct": 7, "plapp": 7, "agnost": [7, 28], "share": [7, 15, 28, 30, 36, 50], "well": [7, 10, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 45], "perform": [7, 10, 28], "heavi": 7, "practition": 7, "guid": [7, 15, 36], "virtual": [7, 9, 33], "talk": 7, "delv": 7, "deeper": 7, "what": [7, 19, 28], "explicit": [7, 10, 28, 43], "emerg": 7, "handler": 7, "mock": [7, 11, 15], "usag": [7, 10, 13, 16, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29], "openli": 7, "record": 7, "fiveai": 7, "ltd": 7, "best": [7, 10, 36], "focu": [7, 9], "becom": [7, 21], "util": 7, "3rd": 7, "parti": 7, "nav2": [7, 35], "tip": [7, 28], "hot": 7, "shown": [7, 28, 44], "furthermor": [7, 23], "offer": [7, 10, 15, 28], "expos": [7, 17, 21], "problem": [7, 56], "manipul": [7, 17, 19, 21, 28, 29, 43], "plan": [7, 56], "autonom": 7, "navig": [7, 8], "ideal": [7, 14], "made": [7, 12], "mobil": [7, 17, 23, 34, 50, 51], "arm": [7, 19, 21, 29], "extra": [7, 28, 42], "readi": [7, 8, 15, 17, 21, 35, 36], "studi": 7, "ur": 7, "With": [7, 28, 30, 45], "moveit": [7, 14], "ingredi": 7, "scale": [7, 43], "factor": 7, "teach": 7, "pendant": 7, "influenc": 7, "picknik": 7, "inc": 7, "lovro": 7, "ivanov": 7, "zelenak": 7, "rune": 7, "s\u00f8e": 7, "knudsen": 7, "onlin": [7, 15, 36], "trajectori": [7, 19, 28, 35, 43, 46, 56], "admitt": [7, 35], "One": [7, 9], "reason": [7, 9, 10, 28], "upgrad": 7, "ros1": [7, 17], "better": 7, "realtim": [7, 10, 28, 34, 45, 51, 56], "contact": 7, "insert": 7, "singl": [7, 25, 40], "waypoint": [7, 44, 45], "mani": [7, 28, 35, 36], "teleoper": 7, "kinemat": [7, 9, 17, 23, 28, 31, 32, 33, 50, 52], "acceler": [7, 17, 24, 28, 32, 34, 41, 43, 44, 45, 46, 51], "jerk": [7, 34, 51], "obei": [7, 28], "demo": [7, 13], "booth": 7, "zeleank": 7, "unifi": 7, "life": [7, 28], "cycl": [7, 28, 35], "_control": [7, 17], "wild": 7, "materi": 7, "quick": [7, 12], "layer": 7, "aka": 7, "systemcompon": 7, "forward": [7, 14, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 35, 43, 45, 46, 56], "done": [7, 8, 9, 15, 19, 22, 23, 24, 25, 26, 27, 28, 29, 35, 36], "look": [7, 23], "modifi": 7, "simpli": [7, 10, 19, 44, 45], "edit": 7, "collect": [7, 37, 47, 53], "semant": [7, 13, 32, 38, 41, 48], "monolit": 7, "controlko": 7, "imperi": 8, "octob": 8, "present": [8, 45], "ubuntu": [8, 10], "engin": [8, 15, 36], "compos": 8, "grab": 8, "roscon2023_workshop": 8, "now": [8, 9, 10, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36, 44], "workspac": [8, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36], "w": 8, "git": [8, 17, 28], "clone": [8, 17, 28], "roscon2023_control_workshop": 8, "ci": 8, "compil": [8, 15, 28, 30, 36], "termin": [8, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], "park": 8, "f": [8, 17], "dev": 8, "tmux": 8, "ctrl": [8, 19], "b": [8, 17, 28], "arrow": 8, "kei": 8, "brought": 8, "propos": [9, 56], "minim": [9, 56], "viabl": [9, 28], "serial": [9, 28], "tri": [9, 43], "clariti": 9, "arbitrari": [9, 28, 45], "order": [9, 28, 46], "nevertheless": [9, 46], "convinc": 9, "would": [9, 42, 46], "unnecessari": 9, "long": 9, "term": [9, 46, 56], "clearer": 9, "let": [9, 17, 19, 21, 22, 23, 24, 25, 26, 27, 29], "yet": [9, 10, 17, 21, 34, 44, 45], "controllers_chain": 9, "doc": [9, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 56], "position_track": 9, "pid": [9, 35, 43, 44, 45, 56], "imagin": 9, "flexibli": 9, "preced": 9, "step": [9, 15, 17, 36, 44, 56], "At": [9, 15, 21, 36], "attach": 9, "disabl": [9, 14, 50], "subscrib": [9, 20, 21, 28], "differenti": [9, 17, 23, 33, 34, 35, 56], "interfaceconfigur": [9, 28], "input_interface_configur": 9, "const": [9, 12, 28], "anoth": [9, 10, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 45], "simplic": [9, 28], "try": [9, 28], "exclus": [9, 28], "rather": [9, 17, 44], "void": 9, "set_chained_mod": 9, "bool": [9, 40, 43, 46, 50], "flag": [9, 15, 36, 43], "on_set_chained_mod": 9, "pid_refer": 9, "controller_nam": [9, 10, 16, 32, 36, 45, 46, 50], "v_x": 9, "v_y": 9, "w_z": 9, "cmd_vel": [9, 34], "cmd_vel_unstamp": [9, 23], "Its": [9, 56], "continu": [9, 43, 44, 45], "chainabl": [9, 17, 21, 34, 45], "ownership": 9, "process": [9, 15, 28, 36, 44], "claim": [9, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], "vector": [9, 21, 28, 36], "invers": [9, 28], "rule": [9, 10, 15, 36], "think": [9, 17], "break": [9, 14], "middl": [9, 33], "unavail": [9, 21], "unclaim": [9, 16, 21, 24], "inact": [9, 10, 16, 19, 24, 28, 35], "feasibl": 9, "interface_configuration_typ": 9, "jitter": 10, "thread": [10, 28], "sched_fifo": 10, "prioriti": 10, "addgroup": 10, "usermod": 10, "whoami": 10, "afterward": 10, "secur": 10, "conf": [10, 28], "soft": 10, "rtprio": 10, "memlock": 10, "102400": 10, "appli": [10, 16, 28, 34, 45], "log": 10, "again": [10, 12, 19, 23, 28], "normal": [10, 28, 43], "linux": 10, "comput": [10, 17, 34, 50, 51], "throughput": 10, "suit": 10, "lt": 10, "beta": 10, "rt": 10, "amd64": 10, "debian": 10, "bullsey": 10, "lowlat": 10, "come": [10, 17, 45], "lot": [10, 19, 21, 22, 23, 24, 25, 26, 27, 29], "being": 10, "realli": 10, "hardware_components_initial_st": 10, "map": [10, 14, 42, 45], "attribut": [10, 28], "full": [10, 15, 17, 36], "unconfigur": [10, 12, 19, 28], "arm1": 10, "arm2": 10, "base3": 10, "empti": [10, 36, 41, 45, 46, 50], "update_r": [10, 35, 37, 47, 53], "integ": [10, 35], "frequenc": [10, 35], "startup": 10, "h": [10, 15, 16, 36], "param_fil": 10, "n": 10, "namespac": [10, 15, 28, 35, 36, 42], "controller_typ": 10, "timeout": [10, 16, 40, 43, 50, 51], "controller_manager_timeout": 10, "argument": [10, 15, 16, 19, 22, 23, 24, 25, 26, 27, 29], "exit": [10, 16], "leav": 10, "kill": [10, 16, 28], "wait": [10, 16, 27, 43], "until": [10, 28, 43, 44], "mai": [10, 12, 25, 35, 37, 47, 53], "taken": [10, 50], "becaus": [10, 13, 19, 21, 22, 23, 24, 25, 26, 27, 29, 44], "rclcpp": [10, 15, 28, 36], "than": [10, 40, 43, 45, 46, 50], "global": 10, "remap": 10, "forcibli": 10, "lead": [10, 45], "duplic": [10, 46, 50], "occur": [10, 28], "whether": 10, "sibl": 10, "hierarchi": 10, "workaround": 10, "nodeopt": 10, "pass": [10, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29], "caus": [10, 44, 45, 50], "get_cm_node_opt": 10, "arg": 10, "_target_node_nam": 10, "__node": 10, "dst_node_nam": 10, "std": [10, 28, 43], "make_shar": 10, "some_optional_namespac": 10, "simplest": 10, "switch_control": [10, 19], "broadcast": [10, 13, 14, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 42], "achiev": [10, 28, 37, 47, 53], "return": [10, 12, 15, 19, 28, 36, 40, 42, 44, 45], "NOT": 10, "FOR": 10, "detect": 10, "listen": [10, 43], "doxygen": [11, 15], "cascad": 11, "return_typ": [12, 28, 36], "on_error": [12, 15, 28], "previous_st": [12, 28], "success": [12, 15, 28, 36, 40, 45], "callbackreturn": [12, 15, 28], "failur": 12, "recov": 12, "reload": [12, 16], "substanti": 12, "renam": 12, "on_init": [12, 15, 28, 36], "baseinterfac": 12, "remov": 12, "base_interfac": 12, "hpp": [12, 15, 17, 28, 32, 36], "hardware_interface_status_valu": 12, "rclcpp_lifecycl": [12, 15, 28, 36], "strictli": [12, 13], "status_": 12, "in_deactiv": 12, "undefin": 12, "refern": 12, "symbol": 12, "node_interfac": [12, 28], "lifecyclenodeinterfac": [12, 15, 28], "rclcpp_lifecyl": 12, "cmakelist": [12, 15, 28, 36], "txt": [12, 15, 28, 36], "devic": [13, 55], "associ": 13, "joint_state_broadcast": [13, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "coupl": 13, "ship": 13, "cannot": [13, 21, 28, 45], "keyword": 13, "digit": 13, "signal": 13, "electr": 13, "analog": 13, "within": [13, 19, 45], "vacuum": [13, 20], "flang": 13, "off": 13, "rrbotsystemmutiplegpio": 13, "example_param_hw_start_duration_sec": 13, "example_param_hw_stop_duration_sec": 13, "example_param_hw_slowdown": 13, "flange_digital_io": 13, "digital_output1": 13, "digital_output2": 13, "digital_input1": 13, "digital_input2": 13, "flange_analog_io": [13, 20], "analog_output1": [13, 20], "analog_input1": [13, 20], "analog_input2": [13, 20], "flange_vacuum": [13, 20], "suction": 13, "grasp": 13, "multimod": 13, "multimodalgripp": 13, "parallel_fing": 13, "temperatur": [13, 17], "feedback": [13, 14, 22, 42, 43, 45, 46, 50, 51], "adjust": [13, 16, 19, 28], "calibr": 13, "2d": [13, 25, 26], "ft": [13, 25, 26, 38], "choic": [13, 50], "matric": 13, "rrbotforcetorquesensor2d": 13, "forcetorquesensor2dhardwar": 13, "fx": 13, "tz": 13, "kuka_tcp": 13, "fx_rang": 13, "tz_rang": 13, "temp_feedback": 13, "calibration_matrix_nr": 13, "mirror": 14, "correspond": [14, 15, 28, 36, 50, 56], "offlin": 14, "advantag": 14, "pipe": 14, "even": [14, 21, 45], "boost": 14, "mimic": 14, "offset": [14, 42, 43], "fake": 14, "disable_command": 14, "boolean": [14, 35, 42, 43], "erron": [14, 28], "noth": 14, "suddenli": 14, "Or": [14, 19, 24, 25, 26, 27, 29, 30], "mock_sensor_command": 14, "position_state_following_offset": 14, "custom_interface_with_following_offset": 14, "prepar": [15, 24, 36], "ament_cmak": [15, 36], "easiest": [15, 36], "search": [15, 36], "recent": [15, 36], "pkg": [15, 36], "package_nam": [15, 36], "robot_hardware_interface_nam": 15, "visibility_control": [15, 36], "window": [15, 36], "copi": [15, 36], "prefix": [15, 32, 36, 38, 41, 48], "guard": [15, 36], "ifndef": [15, 36], "preprocessor": [15, 36], "friend": [15, 36], "interface_typ": [15, 36], "uniqu": [15, 28, 36], "written": [15, 22, 27, 28, 36], "snake_cas": [15, 36], "interfacetyp": 15, "hardwareinterfacenam": 15, "public": [15, 28, 36], "on_cleanup": [15, 28], "on_shutdown": [15, 28], "overrid": [15, 28, 36, 37, 45, 47, 53], "export_state_interfac": [15, 28], "export_command_interfac": [15, 28], "prepare_command_mode_switch": 15, "perform_command_mode_switch": 15, "further": [15, 36], "exact": [15, 36], "simplifi": [15, 28, 36, 56], "valid": [15, 17, 46, 48], "fine": [15, 23, 36], "otherwis": [15, 17, 36, 42, 43], "opposit": [15, 36], "remind": 15, "joint_nam": [15, 32, 36, 43], "shutdown": [15, 28], "gracefulli": 15, "store": [15, 36], "close": [15, 36], "class_list_macro": [15, 28, 36], "my_hardware_interface_packag": 15, "robothardwareinterfacenam": 15, "second": [15, 16, 19, 21, 24, 25, 26, 27, 28, 29, 30, 36, 44, 46, 56], "visibl": [15, 36], "mock_compon": [15, 23], "bottom": [15, 28, 36], "test_load_": [15, 36], "load_generic_system_2dof": 15, "test_generic_system": 15, "find_packag": [15, 36], "directori": [15, 36], "ament": [15, 36], "cmake": 15, "pluginlib_export_plugin_description_fil": [15, 28, 36], "ament_cmake_gmock": [15, 36], "ament_add_gmock": [15, 36], "ament_export_librari": [15, 36], "ament_packag": [15, 36], "test_depend": [15, 36], "rememb": [15, 36], "root": [15, 36], "enjoi": [15, 36], "great": [15, 36], "templat": [15, 17, 28, 36], "shell": [15, 36], "onward": 15, "spin": 16, "spin_tim": 16, "hidden": 16, "discoveri": 16, "daemon": 16, "test_controller_nam": 16, "test_control": 16, "diffdrivecontrol": [16, 23], "verbos": 16, "label": [16, 22, 23, 25, 26, 27, 44], "ctrl1": 16, "ctrl2": 16, "strict": 16, "asap": 16, "switch_timeout": 16, "tmp": 16, "controller_diagram": 16, "gv": 16, "pdf": [16, 28], "demonstr": [17, 19, 21, 23, 24, 29, 30], "prove": 17, "checkout": 17, "roscon2022_workshop": 17, "hardwareinterfac": [17, 28], "diffbot": 17, "degre": [17, 28, 45, 50], "freedom": [17, 28, 50], "components_architecture_and_urdf_exampl": 17, "revolut": [17, 19, 21, 28, 29], "drive": [17, 23, 31, 33, 34, 35, 50, 51, 52, 56], "accord": [17, 23, 28], "intermedi": 17, "car": 17, "steer": [17, 31, 33, 35, 50, 51, 52], "tba": 17, "tabl": 17, "offici": [17, 55], "easili": 17, "aptitud": 17, "might": [17, 44], "own": [17, 19, 28], "merg": 17, "procedur": 17, "rviz2": [17, 19, 30], "visual": [17, 19, 26, 28, 42], "joint_state_publisher_gui": [17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], "ros2_control_demo_example_1": [17, 19], "view_robot": [17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "omit": 17, "example_1": [17, 19, 20, 21, 30], "rviz": [17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 42], "slider": 17, "around": [17, 38, 41, 43, 48], "ros2_control_demo_example_2": [17, 23], "categori": 17, "individu": [17, 36, 48], "position_in_degre": 17, "hardware_interface_type_valu": [17, 32], "6dof": 17, "invert": 19, "pendulum": 19, "fun": 19, "proprietari": [19, 22, 23, 24, 25, 26, 27, 29], "view": [19, 28], "recreat": 19, "robotmodel": 19, "displai": [19, 21, 22, 24, 25, 26, 27, 29, 30], "ros2_control_demo_descript": 19, "ok": [19, 22, 23, 24, 25, 26, 27, 28, 29, 36], "warn": [19, 22, 23, 24, 25, 26, 27, 29, 42], "invalid": [19, 22, 23, 24, 25, 26, 27, 29], "frame": [19, 22, 23, 24, 25, 26, 27, 28, 29, 38], "odom": [19, 22, 23, 24, 25, 26, 27, 29, 34, 50], "cantransform": [19, 22, 23, 24, 25, 26, 27, 29], "target_fram": [19, 22, 23, 24, 25, 26, 27, 29], "happen": [19, 22, 23, 24, 25, 26, 27, 28, 29], "exemplari": [19, 22, 24, 25, 26, 27, 29, 31, 33, 50, 52], "orang": [19, 21, 22, 23, 24, 25, 26, 27, 29, 30], "yellow": [19, 21, 22, 24, 25, 26, 27, 29, 30], "rectangl": [19, 21, 22, 24, 25, 26, 27, 29], "introspect": [19, 21, 22, 23, 24, 25, 26, 27, 29], "list_hardware_interfac": [19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "entrypoint": 19, "nomin": 19, "marker": [19, 21, 22, 23, 24, 25, 26, 27, 29, 30], "list_control": [19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "jointstatebroadcast": [19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "forward_position_control": [19, 20, 21, 24, 25, 26, 27, 29, 30], "forward_command_control": [19, 20, 21, 22, 24, 25, 26, 27, 29, 30, 37, 47, 53], "pub": [19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "std_msg": [19, 20, 21, 22, 24, 25, 26, 27, 29, 30, 37, 39, 47, 53], "float64multiarrai": [19, 20, 21, 22, 24, 25, 26, 27, 29, 30, 37, 39, 47, 53], "everi": [19, 24, 25, 26, 27, 28, 29, 30, 35, 39, 43, 56], "test_forward_position_control": [19, 24, 25, 26, 27, 29, 30], "block": [19, 21, 22, 24, 25, 26, 27, 28, 29], "got": [19, 20, 21, 22, 23, 24, 25, 26, 27], "50000": [19, 21, 25, 26, 27], "echo": [19, 20, 21, 23, 25, 26, 30], "joint_stat": [19, 21, 23, 30, 42], "dynamic_joint_st": [19, 21, 30, 42], "load_control": 19, "joint_trajectory_position_control": 19, "successfulli": [19, 22, 27], "set_controller_st": 19, "rrbot_control": [19, 20, 21, 29, 30], "four": [19, 22, 31], "test_joint_trajectory_control": 19, "rrbot_joint_trajectory_publish": 19, "rrbot_descript": [19, 20, 21, 22, 24, 25, 26, 27, 29, 30], "rrbot_forward_position_publish": [19, 30], "ros2_control_demo_example_10": 20, "contrast": 20, "gpio_control": 20, "gpiocontrol": 20, "interface_nam": [20, 38, 39], "1199574016": 20, "1676318848": 20, "rrbotsystemwithgpiohardwar": 20, "gp": 20, "example_12": 21, "been": 21, "known": 21, "passthrough_control": 21, "ros2_control_demo_example_12": 21, "ident": [21, 23, 28, 30, 44], "joint2_position_control": 21, "passthroughcontrol": 21, "joint1_position_control": 21, "someth": 21, "automat": [21, 28, 30, 34, 51], "appear": 21, "whose": [21, 44], "henc": [21, 28], "launch_chained_control": 21, "position_control": [21, 35, 39], "streamlin": 21, "clearli": 21, "sent": [21, 43], "reflect": 21, "canopen_402": [22, 27], "modbu": [22, 27], "rs232": [22, 27], "rs485": [22, 27], "ros2_control_demo_example_14": 22, "rrbot_modular_actuators_without_feedback_sensors_for_position_feedback": 22, "list_hardware_compon": [22, 23, 25, 26, 27], "rrbotmodularjoint2": [22, 27], "rrbotactuatorwithoutfeedback": 22, "rrbotmodularjoint1": [22, 27], "rrbotmodularpositionsensorjoint2": 22, "rrbotsensorpositionfeedback": 22, "rrbotmodularpositionsensorjoint1": 22, "forward_velocity_control": [22, 24], "000000": 22, "00000": [22, 23, 24], "25300": 22, "rrbot_actuator_without_feedback": 22, "rrbot_sensor_for_position_feedback": 22, "example_2": 23, "excess": 23, "print": [23, 42], "left_wheel_joint": 23, "right_wheel_joint": 23, "diffbot_base_control": 23, "diff": 23, "geometry_msg": [23, 25, 26, 34, 38, 50], "twist": [23, 50, 51], "linear": [23, 28, 34, 41, 44, 46, 50, 51], "angular": [23, 34, 41, 50, 51], "circl": 23, "diffbotsystemhardwar": 23, "33333": 23, "faster": 23, "genericsystem": 23, "use_mock_hardwar": 23, "true": [23, 30, 34, 43, 44, 45, 46, 50], "calculate_dynam": 23, "diffbot_control": 23, "diffbot_descript": 23, "diffbot_system": 23, "example_3": 24, "fri": [24, 55], "abb": [24, 55], "yumi": 24, "schunk": [24, 55], "lwa4p": 24, "illeg": 24, "declin": 24, "faulti": 24, "ros2_control_demo_example_3": 24, "rrbot_system_multi_interfac": 24, "robot_control": [24, 28], "spawn": 24, "forward_acceleration_control": 24, "velocity_control": [24, 35, 39], "jointgroupvelocitycontrol": 24, "rrbotsystemmultiinterfacehardwar": 24, "po": [24, 44], "78500": 24, "vel": [24, 50], "acc": 24, "control_lvl": 24, "forward_illegal1_control": 24, "forward_illegal2_control": 24, "1676209982": 24, "531163501": 24, "resource_manag": 24, "rrbotsystemmultiinterfac": 24, "did": 24, "531223835": 24, "sinc": [24, 28, 33], "reject": [24, 43, 44], "spawner": 24, "531717376": 24, "spawner_forward_illegal1_control": 24, "indic": [24, 28], "rrbot_multi_interface_forward_control": 24, "krc": 25, "prototyp": 25, "odri": [25, 55], "ros2_control_demo_example_4": 25, "rrbot_system_with_sensor": 25, "rrbotsystemwithsensor": 25, "rrbotsystemwithsensorhardwar": 25, "fts_broadcast": [25, 26], "force_torque_sensor_broadcast": [25, 26], "forcetorquesensorbroadcast": [25, 26], "wrench": [25, 26, 32], "republish": [25, 26], "wrenchstamp": [25, 26, 38], "stamp": [25, 26, 50], "sec": [25, 26], "1676444704": [25, 26], "nanosec": [25, 26], "332221422": [25, 26], "tool_link": [25, 26], "946532964706421": 25, "nan": [25, 43], "0540995597839355": 25, "rrbot_with_sensor_control": 25, "pc": 26, "3d": [26, 28], "ros2_control_demo_example_5": 26, "rrbot_system_with_external_sensor": 26, "externalrrbotftsensor": 26, "externalrrbotforcetorquesensorhardwar": 26, "2126582860946655": 26, "3202226161956787": 26, "4302282333374023": 26, "540233612060547": 26, "647800624370575": 26, "7602499723434448": 26, "rrbot_with_external_sensor_control": 26, "rrbot_system_position_onli": 26, "external_rrbot_force_torque_sensor": 26, "mara": 27, "ros2_control_demo_example_6": 27, "rrbot_modular_actu": 27, "rrbotmodularjoint": 27, "rrbot_actu": 27, "queri": [28, 45], "enhanc": 28, "deploi": 28, "oper": [28, 56], "pattern": 28, "vendor": 28, "runtim": 28, "program": 28, "conform": 28, "newest": 28, "characterist": 28, "tree": [28, 34], "primari": [28, 45], "commerci": 28, "scratch": 28, "illustr": 28, "stl": 28, "dae": 28, "coars": 28, "mesh": 28, "fast": [28, 55], "collis": 28, "express": 28, "vertic": 28, "transform": 28, "rotat": [28, 34, 43], "translat": [28, 34, 51], "proxim": 28, "face": 28, "co": 28, "planer": 28, "xy": 28, "plane": 28, "align": 28, "blender": 28, "begin": 28, "neg": [28, 43], "pitch": 28, "yaw": 28, "repeat": 28, "robot_6_dof": 28, "base_link": [28, 50, 51], "link_0": 28, "inerti": 28, "mass": 28, "inertia": 28, "ixx": 28, "ixi": 28, "ixz": 28, "iyi": 28, "iyz": 28, "izz": 28, "tool0": 28, "base_joint": 28, "joint_1": 28, "link_1": 28, "061584": 28, "141592653589793": 28, "name_spac": 28, "class_nam": 28, "pi": [28, 43, 46], "enclos": 28, "previous": 28, "left": 28, "zero": [28, 32, 43, 44], "rel": [28, 44], "center": 28, "uniform": 28, "consecut": 28, "motion": [28, 43], "subsequ": 28, "join": [28, 56], "speci": 28, "verifi": 28, "urdf_to_graphviz": 28, "r6bot": 28, "explain": 28, "robotsystem": 28, "ur5": 28, "five": 28, "hardware_interface_return_valu": 28, "hardware_interface_publ": 28, "commandinterfac": 28, "durat": 28, "period": [28, 43], "privat": 28, "memori": [28, 36], "alloc": 28, "establish": 28, "angl": [28, 33, 50], "notabl": 28, "vari": 28, "fill": 28, "field": [28, 42, 44], "suppos": [28, 44], "tcp_force_torque_sensor": 28, "Their": 28, "pointer": 28, "info_": 28, "state_interfaces_": 28, "nearli": 28, "previou": [28, 44, 56], "command_interfaces_": 28, "constraint": [28, 36, 40, 41, 43, 45, 46, 50], "respons": 28, "turn": 28, "oppos": [28, 45], "tcp": [28, 32], "packet": 28, "robot_6_dof_hardwar": 28, "discov": 28, "library_nam": 28, "base_class_typ": 28, "human": 28, "notic": [28, 44], "just": 28, "add_librari": 28, "robot_hardwar": 28, "unlik": 28, "finit": 28, "certain": [28, 37, 47, 53], "transit": [28, 35, 44], "robotcontrol": 28, "nine": 28, "six": [28, 38], "callback": 28, "lifetim": 28, "restart": 28, "reconfigur": 28, "buffer": [28, 56], "reset": [28, 50], "transfer": 28, "eventu": 28, "mutex": 28, "guarante": [28, 44], "never": 28, "release_interfac": 28, "shut": 28, "free": [28, 34], "cleanup": 28, "r6bot_control": 28, "view_r6bot": 28, "ros2_control_demo_example_7": 28, "send_trajectori": 28, "circular": 28, "ros2_control_demo_example_8": 29, "rrbot_transmissions_system_position_onli": 29, "rrbottransmissionssystempositiononlyhardwar": 29, "transmission1": 29, "actuator1": 29, "transmission2": 29, "actuator2": 29, "383253": 29, "766505": 29, "53301": 29, "example_9": 30, "later": [30, 44], "ros2_control_demo_example_9": 30, "rrbot_gazebo_class": 30, "usr": 30, "ax": [31, 33, 38, 41, 46, 52], "wheel": [31, 33, 34, 50, 52], "traction": [31, 33, 50, 51, 52], "steerabl": [31, 33, 52], "generate_parameter_librari": [31, 32, 33, 39, 40, 41, 46, 50, 52], "parameter": [31, 33, 50, 52], "front_wheel_track": 31, "front": [31, 32, 33, 50, 52], "length": [31, 41, 46, 50, 52], "en": [31, 33, 52], "wikipedia": [31, 33, 50, 52, 56], "wiki": [31, 33, 44, 45, 52], "wheelbas": [31, 33, 52], "rear_wheel_track": 31, "rear": [31, 33, 50, 52], "distanc": [31, 33, 45, 48, 52], "front_wheels_radiu": [31, 52], "radiu": [31, 33, 52], "rear_wheels_radiu": [31, 52], "chainedcontrollerinterfac": 32, "joint_refer": 32, "trajectory_msg": [32, 44, 45], "jointtrajectorypoint": [32, 44], "admittancecontrollerst": 32, "ft_sensor": 32, "sensor_nam": [32, 38, 41, 48], "ackermann": [33, 35, 50], "vehicl": 33, "probabl": 33, "front_wheel_radiu": 33, "rear_wheel_radiu": 33, "bodi": 34, "odometri": [34, 50, 51], "space": [34, 45], "hw_if_posit": [34, 35, 50], "hw_if_veloc": [34, 35, 50], "position_feedback": [34, 50], "twiststamp": [34, 50], "use_stamped_vel": [34, 50], "nav_msg": [34, 50], "estim": 34, "tf": [34, 50], "tf2_msg": [34, 50], "tfmessag": [34, 50], "enable_odom_tf": [34, 50], "cmd_vel_out": 34, "publish_limited_veloc": 34, "jointlimit": 34, "joint_limit": 34, "commonli": 35, "bicycl": [35, 50], "effort_control": [35, 39], "hw_if_acceler": 35, "hw_if_effort": 35, "represent": [35, 45], "rqt_joint_trajectory_control": [35, 45], "onconfigur": 35, "configure_control": 35, "unsign": 35, "unspecifi": 35, "is_async": 35, "asynchron": 35, "controllernam": 36, "protect": 36, "reserv": 36, "importantli": 36, "ask": [36, 42], "sort": 36, "controller_name_namespac": 36, "controller_name_packag": 36, "ros2_control_test_asset": 36, "special": [37, 44, 47, 53], "hz": [37, 40, 47, 53], "wrapper": [38, 41, 48], "forcetorquesensor": 38, "6d": 38, "per": 38, "less": [38, 46, 50], "example_nam": 38, "example_interfac": 38, "feedforward": 39, "multi_interface_forward_command_control": 39, "string_arrai": [39, 46, 50], "action_monitor_r": [40, 43, 45], "greater": [40, 43], "equal": [40, 41], "goal_toler": 40, "max_effort": 40, "allow_stal": 40, "stall": 40, "stall_velocity_threshold": 40, "threshold": 40, "001": 40, "stall_timeout": 40, "imusensor": 41, "orient": 41, "angular_veloc": 41, "linear_acceler": 41, "static_covariance_orient": 41, "double_arrai": [41, 50], "static": 41, "covari": [41, 50], "row": 41, "static_covariance_angular_veloc": 41, "static_covariance_linear_acceler": 41, "unless": 42, "latter": 42, "matrix": [42, 50], "use_local_top": 42, "my_state_broadcast": 42, "arrai": 42, "extra_joint": 42, "map_interface_to_joint_st": 42, "usecas": 42, "hydraul": [42, 43], "relianc": 42, "techniqu": 42, "slightli": 42, "custom_interfac": 42, "kf_estimated_posit": 42, "derived_veloc": 42, "derived_effort": 42, "torque_sensor": 42, "current_sensor": 42, "command_joint": 43, "jtc": [43, 46], "monitor": [43, 45], "allow_partial_joints_go": [43, 45], "allow_integration_in_goal_trajectori": [43, 44], "interpolation_method": 43, "interpol": [43, 45, 46], "spline": 43, "open_loop_control": [43, 45], "gain": [43, 46], "numer": 43, "numeric_limit": 43, "quiet_nan": 43, "start_with_hold": 43, "hold": [43, 44], "allow_nonzero_velocity_at_trajectory_end": 43, "cmd_timeout": 43, "stale": 43, "count": 43, "goal_tim": [43, 45], "toler": [43, 45], "jointtrajectori": [43, 44, 45], "stopped_velocity_toler": [43, 45], "deviat": 43, "maxim": 43, "reach": [43, 44, 45], "predefin": 43, "infinit": 43, "amount": 43, "law": [43, 45], "k_": 43, "ff": 43, "v_d": 43, "k_p": 43, "k_i": 43, "sum": 43, "dt": 43, "k_d": 43, "angle_wraparound": 43, "i_clamp": 43, "clamp": 43, "symmetr": 43, "ff_velocity_scal": 43, "feed": [43, 46], "wrap": [43, 45], "ie": [43, 44], "shortest": 43, "s_d": 43, "saniti": 44, "sampl": [44, 50], "segment": [44, 45], "fault": 44, "datapoint": 44, "deduc": 44, "nor": 44, "discourag": 44, "yield": 44, "discontinu": [44, 45], "cubic": [44, 46], "quintic": [44, 46], "heun": 44, "grid": 44, "10m": 44, "deduct": 44, "nonzero": 44, "inconsist": 44, "overshoot": 44, "timestamp": 44, "arriv": 44, "necessarili": 44, "discard": 44, "substitut": 44, "smarter": 44, "preserv": 44, "flat": 44, "grei": 44, "red": 44, "traj": 44, "time_from_start": 44, "splice": 44, "append": 44, "held": [44, 45], "smooth": [44, 56], "longer": 44, "slower": 44, "effect": 44, "Of": 44, "interest": 44, "adolfo": [44, 45], "rodriguez": [44, 45], "instant": 45, "citat": 45, "adapt": 45, "restrict": 45, "robust": 45, "clock": 45, "queu": 45, "joint3": 45, "joint4": 45, "joint5": 45, "joint6": 45, "preempt": 45, "cancel": 45, "notifi": 45, "abort": 45, "legal": 45, "subset": 45, "favor": 45, "violat": 45, "joint_trajectori": 45, "fire": 45, "sender": 45, "query_st": 45, "cumbersom": 45, "controller_st": [45, 46, 50], "jointtrajectorycontrollerst": 45, "querytrajectoryst": 45, "footnot": 45, "pidro": 46, "pd": 46, "theoret": 46, "misus": 46, "pid_control": 46, "pidcontrol": 46, "reference_and_state_dof_nam": 46, "reference_and_state_interfac": 46, "dof_nam": 46, "in_chained_mod": [46, 50], "multidofcommand": 46, "use_external_measured_st": 46, "measured_st": 46, "set_feedforward_control": 46, "std_srv": 46, "setbool": 46, "multidofstatestamp": 46, "rangesensor": 48, "radiation_typ": 48, "int": [48, 50], "radiat": 48, "ultrason": 48, "infrar": 48, "field_of_view": 48, "arc": 48, "rad": [48, 50], "min_rang": 48, "minimum": 48, "m": [48, 50], "max_rang": 48, "maximum": 48, "varianc": 48, "rqt": 49, "nomenclatur": 50, "unstamp": 50, "concret": 50, "tricylc": 50, "seer": 50, "front_steer": 50, "front_wheels_nam": 50, "rear_wheels_nam": 50, "traction_feedback_typ": 50, "reference_unstamp": 50, "tf_odometri": 50, "steeringcontrollerstatu": 50, "reference_timeout": 50, "unwant": 50, "danger": 50, "behaviour": 50, "rear_wheels_state_nam": 50, "front_wheels_state_nam": 50, "open_loop": 50, "velocity_rolling_window_s": 50, "number": 50, "averag": 50, "base_frame_id": 50, "odom_frame_id": 50, "twist_covariance_diagon": 50, "diagon": 50, "pose_covariance_diagon": 50, "pose": 50, "wheel_track": 52, "isaac": 54, "webot": 54, "manufactur": 55, "franka": 55, "emika": 55, "xarm": 55, "flexiv": 55, "rizon": 55, "igu": 55, "commonplac": 55, "husarion": 55, "rosbot": 55, "xl": 55, "2r": 55, "pro": 55, "openmanipul": 55, "clearpath": 55, "jackal": 55, "j100": 55, "huski": 55, "a200": 55, "unoffici": 55, "iiwa": 55, "lbr": 55, "iiqka": 55, "eci": 55, "sunris": 55, "kss": 55, "egm": 55, "mitsubishi": 55, "rv1a": 55, "protocol": 55, "ethercat": 55, "canopen": 55, "svh": 55, "finger": 55, "dimens": 55, "haptic": 55, "odriv": 55, "ndi": 55, "pca9685": 55, "bit": 55, "pwm": 55, "servo": 55, "hoverboard": 55, "overcom": 56, "idea": 56, "wide": 56, "toolkit": 56, "unreleas": 56, "question": 56, "wg": 56, "wednesdai": 56, "announc": 56, "discours": 56, "googl": 56, "bug": 56, "tracker": 56, "reproduc": 56, "regard": 56, "built": 56, "gmt": 56}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"acknowledg": 0, "maintain": 0, "review": 0, "stat": 0, "contributor": 0, "compani": 0, "institut": 0, "contribut": 1, "pull": 1, "request": 1, "rule": 1, "repositori": [1, 17, 56], "process": [1, 10], "merg": 1, "write": [1, 12, 15, 28, 36], "document": [1, 9, 11, 56], "structur": [1, 2], "ci": 1, "configur": 1, "usag": [1, 3, 5], "differ": 2, "ros_control": 2, "ros1": [2, 6], "hardwar": [2, 4, 6, 10, 12, 13, 15, 28, 39, 42, 45], "class": [2, 9], "interfac": [2, 4, 13, 16, 20, 24, 28, 29, 32, 34, 37, 39, 42, 45, 46, 47, 50, 53], "control": [2, 3, 4, 5, 6, 9, 10, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 34, 35, 36, 37, 39, 40, 45, 46, 47, 50, 53, 54], "": [2, 34, 45, 46, 50], "access": 2, "migrat": [2, 12], "guid": 2, "ros2_control": [2, 3, 5, 6, 7, 8, 11, 13, 17, 28, 32, 35, 56], "robothardwar": 2, "compon": [2, 4, 6, 12, 14, 15], "gazebo_ros2_control": 3, "modifi": [3, 5], "build": [3, 4, 5, 17], "your": [3, 4, 5], "own": [3, 5], "To": [3, 5, 17], "run": [3, 4, 5, 17], "demo": [3, 5, 6, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "add": [3, 5, 6], "tag": [3, 5], "urdf": [3, 4, 5, 28], "simpl": [3, 5], "setup": [3, 5], "us": [3, 5, 9, 10, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 36, 45, 46], "mimic": [3, 5], "joint": [3, 5, 13, 14, 45], "simul": [3, 5, 30, 54], "plugin": [3, 5, 28], "default": [3, 5], "behavior": [3, 5], "advanc": [3, 5], "custom": [3, 5], "set": [3, 5], "up": [3, 5], "gazebo_ros2_control_demo": 3, "get": 4, "start": 4, "instal": [4, 17], "binari": 4, "packag": [4, 17], "from": [4, 6, 12, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 46, 50], "sourc": [4, 17], "architectur": 4, "manag": [4, 9, 10], "resourc": [4, 7, 9], "user": 4, "descript": [4, 28, 34, 45, 46, 50], "framework": 4, "robot": [4, 7, 17, 20, 22, 24, 25, 26, 27, 28, 29, 35, 55], "gz_ros2_control": 5, "gz_ros2_control_demo": 5, "project": 6, "idea": 6, "gsoc": 6, "2024": 6, "tutori": [6, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], "mission": 6, "support": [6, 55], "semant": 6, "featur": [6, 11, 34, 45, 51], "pariti": 6, "present": 7, "2023": [7, 8], "10": [7, 20], "18": 7, "roscon": [7, 8], "workshop": [7, 8], "steroid": [7, 8], "02": 7, "ro": [7, 32, 34, 37, 39, 47, 53, 54], "meetup": 7, "munich": 7, "5": [7, 26], "2022": 7, "12": [7, 21], "industri": [7, 20, 25, 26, 29], "confer": [7, 8], "06": 7, "fr": 7, "2021": 7, "world": 7, "07": 7, "weekli": 7, "13": 7, "rosdevdai": 7, "05": 7, "diagram": 7, "imag": 7, "summari": 8, "slide": 8, "befor": 8, "come": 8, "peopl": 8, "chain": [9, 21], "cascad": 9, "scope": 9, "background": 9, "knowledg": 9, "motiv": 9, "purpos": 9, "implement": 9, "A": 9, "base": 9, "chainablecontrol": 9, "inner": 9, "activ": 9, "deactiv": 9, "debug": 9, "output": [9, 34], "close": 9, "remark": 9, "determin": 10, "paramet": [10, 14, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 43, 46, 47, 48, 50, 52, 53], "helper": 10, "script": 10, "spawner": 10, "unspawn": 10, "concept": [10, 11], "restart": 10, "all": 10, "api": 11, "guidelin": [12, 35], "best": [12, 35], "practic": [12, 35], "handl": 12, "error": 12, "happen": 12, "dure": 12, "read": 12, "call": 12, "foxi": 12, "newer": 12, "version": 12, "type": [13, 39, 42, 45], "sensor": [13, 25, 26, 38, 41, 48], "gpio": [13, 20], "exampl": [13, 17, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 44], "mock": 14, "gener": 14, "system": 14, "per": 14, "extern": [15, 26, 36], "refer": [15, 32, 34, 36, 45, 46, 50], "command": [16, 32, 42, 45, 46, 50, 51], "line": 16, "list_control": 16, "list_controller_typ": 16, "list_hardware_compon": 16, "list_hardware_interfac": 16, "load_control": 16, "reload_controller_librari": 16, "set_controller_st": 16, "switch_control": 16, "unload_control": 16, "view_controller_chain": 16, "what": 17, "you": 17, "can": 17, "find": 17, "thi": [17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "goal": 17, "overview": [17, 28], "local": 17, "debian": 17, "docker": 17, "view": 17, "quick": 17, "hint": 17, "1": [19, 45], "rrbot": [19, 21, 30], "step": [19, 21, 22, 23, 24, 25, 26, 27, 29, 30], "file": [19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], "14": 22, "modular": [22, 27], "actuat": [22, 27], "provid": 22, "state": [22, 32, 45, 46, 50], "diffbot": 23, "3": 24, "multipl": 24, "4": 25, "integr": [25, 54], "connect": 26, "6": 27, "separ": 27, "commun": [27, 54, 56], "each": 27, "7": 28, "full": 28, "6dof": 28, "geometri": 28, "cmake": 28, "librari": 28, "launch": 28, "8": 29, "an": 29, "expos": 29, "transmiss": 29, "9": 30, "ackermann_steering_control": 31, "admitt": 32, "2": [32, 34, 37, 39, 47, 53], "topic": [32, 37, 39, 47, 53], "bicycle_steering_control": 33, "diff_drive_control": 34, "other": [34, 35, 45, 51], "feedback": 34, "subscrib": [34, 45, 46, 50], "publish": [34, 45, 46, 50], "mobil": 35, "manipul": 35, "broadcast": [35, 38, 41, 48], "common": 35, "new": 36, "effort_control": 37, "jointgroupeffortcontrol": 37, "forc": 38, "torqu": 38, "forward_command_control": 39, "gripper": 40, "action": [40, 45], "imu": 41, "joint_state_broadcast": 42, "detail": 43, "about": 43, "trajectori": [44, 45], "represent": 44, "interpol": 44, "method": 44, "none": 44, "spline": 44, "visual": 44, "replac": 44, "joint_trajectory_control": 45, "preemption": 45, "polici": 45, "servic": [45, 46], "further": 45, "inform": 45, "pid": 46, "execut": [46, 50], "logic": [46, 50], "preced": [46, 50], "position_control": 47, "jointgrouppositioncontrol": 47, "rang": 48, "rqt_joint_trajectory_control": 49, "steering_controllers_librari": 50, "tricycle_control": 51, "veloc": 51, "tricycle_steering_control": 52, "velocity_control": 53, "jointgroupvelocitycontrol": 53, "host": 54, "welcom": 56, "develop": 56, "organis": 56}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx": 60}, "alltitles": {"Acknowledgements": [[0, "acknowledgements"]], "Maintainers": [[0, "maintainers"]], "Reviewers\u2019 Stats": [[0, "reviewers-stats"]], "Contributors": [[0, "contributors"]], "Companies and Institutions": [[0, "companies-and-institutions"]], "Contributing": [[1, "contributing"]], "Pull Requests": [[1, "pull-requests"]], "Rules for the repositories and process of merging pull requests": [[1, "rules-for-the-repositories-and-process-of-merging-pull-requests"]], "Writing documentation": [[1, "writing-documentation"]], "Repository structure and CI configuration": [[1, "repository-structure-and-ci-configuration"]], "CI configuration": [[1, "ci-configuration"]], "Documentation Usage": [[1, "documentation-usage"]], "Differences to ros_control (ROS1)": [[2, "differences-to-ros-control-ros1"]], "Hardware Structures - classes": [[2, "hardware-structures-classes"]], "Hardware Interfaces": [[2, "hardware-interfaces"]], "Controller\u2019s Access to Hardware": [[2, "controller-s-access-to-hardware"]], "Migration Guide to ros2_control": [[2, "migration-guide-to-ros2-control"]], "RobotHardware to Components": [[2, "robothardware-to-components"]], "Controller Migration": [[2, "controller-migration"]], "gazebo_ros2_control": [[3, "gazebo-ros2-control"]], "Usage": [[3, "usage"], [5, "usage"]], "Modifying or building your own": [[3, "modifying-or-building-your-own"], [5, "modifying-or-building-your-own"]], "To run the demo": [[3, "to-run-the-demo"], [5, "to-run-the-demo"]], "Add ros2_control tag to a URDF": [[3, "add-ros2-control-tag-to-a-urdf"], [5, "add-ros2-control-tag-to-a-urdf"]], "Simple setup": [[3, "simple-setup"], [5, "simple-setup"]], "Using mimic joints in simulation": [[3, "using-mimic-joints-in-simulation"], [5, "using-mimic-joints-in-simulation"]], "Add the gazebo_ros2_control plugin": [[3, "add-the-gazebo-ros2-control-plugin"]], "Default gazebo_ros2_control Behavior": [[3, "default-gazebo-ros2-control-behavior"]], "Advanced: custom gazebo_ros2_control Simulation Plugins": [[3, "advanced-custom-gazebo-ros2-control-simulation-plugins"]], "Set up controllers": [[3, "set-up-controllers"], [5, "set-up-controllers"]], "gazebo_ros2_control_demos": [[3, "gazebo-ros2-control-demos"]], "Getting Started": [[4, "getting-started"]], "Installation": [[4, "installation"], [17, "installation"]], "Binary packages": [[4, "binary-packages"]], "Building from Source": [[4, "building-from-source"]], "Architecture": [[4, "architecture"]], "Controller Manager": [[4, "controller-manager"], [10, "controller-manager"]], "Resource Manager": [[4, "resource-manager"]], "Controllers": [[4, "controllers"]], "User Interfaces": [[4, "user-interfaces"]], "Hardware Components": [[4, "hardware-components"], [12, "hardware-components"]], "Hardware Description in URDF": [[4, "hardware-description-in-urdf"]], "Running the Framework for Your Robot": [[4, "running-the-framework-for-your-robot"]], "gz_ros2_control": [[5, "gz-ros2-control"]], "Add the gz_ros2_control plugin": [[5, "add-the-gz-ros2-control-plugin"]], "Default gz_ros2_control Behavior": [[5, "default-gz-ros2-control-behavior"]], "Advanced: custom gz_ros2_control Simulation Plugins": [[5, "advanced-custom-gz-ros2-control-simulation-plugins"]], "gz_ros2_control_demos": [[5, "gz-ros2-control-demos"]], "Project Ideas for GSoC 2024": [[6, "project-ideas-for-gsoc-2024"]], "Tutorials and Demos for ros2_control": [[6, "tutorials-and-demos-for-ros2-control"]], "Mission-Control for ros2_control": [[6, "mission-control-for-ros2-control"]], "Add support for hardware semantic components": [[6, "add-support-for-hardware-semantic-components"]], "Feature-parity for controllers from ROS1": [[6, "feature-parity-for-controllers-from-ros1"]], "Resources": [[7, "resources"]], "Presentations": [[7, "presentations"]], "2023-10-18 ROSCon Workshop: ros2_control on Steroids": [[7, "roscon-workshop-ros2-control-on-steroids"]], "2023-02 ROS Meetup Munich #5": [[7, "ros-meetup-munich-5"]], "2022-12 ROS-Industrial Conference 2022": [[7, "ros-industrial-conference-2022"]], "2022-10 ROSCon 2022": [[7, "roscon-2022"]], "2022-06 ROSCon Fr 2022": [[7, "roscon-fr-2022"]], "2021-10 ROS World 2021": [[7, "ros-world-2021"]], "2021-10-07 Weekly Robotics Meetup #13": [[7, "weekly-robotics-meetup-13"]], "2021-06 ROSDevDay 2021": [[7, "rosdevday-2021"]], "2021-05 ROSCon Fr 2021": [[7, "roscon-fr-2021"]], "Diagrams": [[7, "diagrams"]], "Images": [[7, "images"]], "ROSCon 2023 Workshop": [[8, "roscon-2023-workshop"]], "ros2_control on Steroids": [[8, "ros2-control-on-steroids"]], "Summary": [[8, "summary"]], "Slides": [[8, "slides"]], "Before coming to the conference": [[8, "before-coming-to-the-conference"]], "People": [[8, "people"]], "Controller Chaining / Cascade Control": [[9, "controller-chaining-cascade-control"]], "Scope of the Document and Background Knowledge": [[9, "scope-of-the-document-and-background-knowledge"]], "Motivation, Purpose and Use": [[9, "motivation-purpose-and-use"]], "Implementation": [[9, "implementation"]], "A Controller Base-Class: ChainableController": [[9, "a-controller-base-class-chainablecontroller"]], "Inner Resource Management": [[9, "inner-resource-management"]], "Activation and Deactivation Chained Controllers": [[9, "activation-and-deactivation-chained-controllers"]], "Debugging outputs": [[9, "debugging-outputs"]], "Closing remarks": [[9, "closing-remarks"]], "Determinism": [[10, "determinism"]], "Parameters": [[10, "parameters"], [14, "parameters"], [31, "parameters"], [32, "parameters"], [33, "parameters"], [34, "parameters"], [37, "parameters"], [38, "parameters"], [39, "parameters"], [40, "parameters"], [41, "parameters"], [42, "parameters"], [46, "parameters"], [47, "parameters"], [48, "parameters"], [50, "parameters"], [52, "parameters"], [53, "parameters"]], "Helper scripts": [[10, "helper-scripts"]], "spawner": [[10, "spawner"]], "unspawner": [[10, "unspawner"]], "Using the Controller Manager in a Process": [[10, "using-the-controller-manager-in-a-process"]], "Concepts": [[10, "concepts"], [11, "concepts"]], "Restarting all controllers": [[10, "restarting-all-controllers"]], "Restarting hardware": [[10, "restarting-hardware"]], "ros2_control": [[11, "ros2-control"]], "API Documentation": [[11, "api-documentation"]], "Features": [[11, "features"]], "Guidelines and Best Practices": [[12, "guidelines-and-best-practices"], [35, "guidelines-and-best-practices"]], "Handling of errors that happen during read() and write() calls": [[12, "handling-of-errors-that-happen-during-read-and-write-calls"]], "Migration from Foxy to newer versions": [[12, "migration-from-foxy-to-newer-versions"]], "ros2_control hardware interface types": [[13, "ros2-control-hardware-interface-types"]], "Joints": [[13, "joints"]], "Sensors": [[13, "sensors"]], "GPIOs": [[13, "gpios"]], "Examples": [[13, "examples"], [17, "examples"]], "Mock Components": [[14, "mock-components"]], "Generic System": [[14, "generic-system"]], "Per-joint Parameters": [[14, "per-joint-parameters"]], "Writing a Hardware Component": [[15, "writing-a-hardware-component"]], "Useful External References": [[15, "useful-external-references"], [36, "useful-external-references"]], "Command Line Interface": [[16, "command-line-interface"]], "list_controllers": [[16, "list-controllers"]], "list_controller_types": [[16, "list-controller-types"]], "list_hardware_components": [[16, "list-hardware-components"]], "list_hardware_interfaces": [[16, "list-hardware-interfaces"]], "load_controller": [[16, "load-controller"]], "reload_controller_libraries": [[16, "reload-controller-libraries"]], "set_controller_state": [[16, "set-controller-state"]], "switch_controllers": [[16, "switch-controllers"]], "unload_controller": [[16, "unload-controller"]], "view_controller_chains": [[16, "view-controller-chains"]], "Demos": [[17, "demos"]], "What you can find in this repository": [[17, "what-you-can-find-in-this-repository"]], "Goals": [[17, "goals"]], "Examples Overview": [[17, "examples-overview"]], "Local installation": [[17, "local-installation"]], "Build from debian packages": [[17, "build-from-debian-packages"]], "Build from source": [[17, "build-from-source"]], "Using Docker": [[17, "using-docker"]], "To view the robot": [[17, "to-view-the-robot"]], "To run the ros2_control demos": [[17, "to-run-the-ros2-control-demos"]], "Quick Hints": [[17, "quick-hints"]], "Example 1: RRBot": [[19, "example-1-rrbot"]], "Tutorial steps": [[19, "tutorial-steps"], [21, "tutorial-steps"], [22, "tutorial-steps"], [23, "tutorial-steps"], [24, "tutorial-steps"], [25, "tutorial-steps"], [26, "tutorial-steps"], [27, "tutorial-steps"], [29, "tutorial-steps"], [30, "tutorial-steps"]], "Files used for this demos": [[19, "files-used-for-this-demos"], [20, "files-used-for-this-demos"], [21, "files-used-for-this-demos"], [22, "files-used-for-this-demos"], [23, "files-used-for-this-demos"], [24, "files-used-for-this-demos"], [26, "files-used-for-this-demos"], [27, "files-used-for-this-demos"], [29, "files-used-for-this-demos"], [30, "files-used-for-this-demos"]], "Controllers from this demo": [[19, "controllers-from-this-demo"], [20, "controllers-from-this-demo"], [21, "controllers-from-this-demo"], [22, "controllers-from-this-demo"], [23, "controllers-from-this-demo"], [24, "controllers-from-this-demo"], [25, "controllers-from-this-demo"], [26, "controllers-from-this-demo"], [27, "controllers-from-this-demo"], [29, "controllers-from-this-demo"], [30, "controllers-from-this-demo"]], "Example 10: Industrial robot with GPIO interfaces": [[20, "example-10-industrial-robot-with-gpio-interfaces"]], "Example 12: Controller chaining with RRBot": [[21, "example-12-controller-chaining-with-rrbot"]], "Example 14: Modular robot with actuators not providing states": [[22, "example-14-modular-robot-with-actuators-not-providing-states"]], "DiffBot": [[23, "diffbot"]], "Example 3: Robots with multiple interfaces": [[24, "example-3-robots-with-multiple-interfaces"]], "Example 4: Industrial robot with integrated sensor": [[25, "example-4-industrial-robot-with-integrated-sensor"]], "Files used for this demo": [[25, "files-used-for-this-demo"]], "Example 5: Industrial robot with externally connected sensor": [[26, "example-5-industrial-robot-with-externally-connected-sensor"]], "Example 6: Modular Robots with separate communication to each actuator": [[27, "example-6-modular-robots-with-separate-communication-to-each-actuator"]], "Example 7: Full tutorial with a 6DOF robot": [[28, "example-7-full-tutorial-with-a-6dof-robot"]], "ros2_control overview": [[28, "ros2-control-overview"]], "Writing a URDF": [[28, "writing-a-urdf"]], "Geometry": [[28, "geometry"]], "URDF file": [[28, "urdf-file"]], "Writing a hardware interface": [[28, "writing-a-hardware-interface"]], "Plugin description file (hardware)": [[28, "plugin-description-file-hardware"]], "CMake library (hardware)": [[28, "cmake-library-hardware"]], "Writing a controller": [[28, "writing-a-controller"]], "Plugin description file (controller)": [[28, "plugin-description-file-controller"]], "CMake library (controller)": [[28, "cmake-library-controller"]], "Launching the example": [[28, "launching-the-example"]], "Example 8: Industrial Robots with an exposed transmission interface": [[29, "example-8-industrial-robots-with-an-exposed-transmission-interface"]], "Example 9: Simulation with RRBot": [[30, "example-9-simulation-with-rrbot"]], "ackermann_steering_controller": [[31, "ackermann-steering-controller"]], "Admittance Controller": [[32, "admittance-controller"]], "ROS 2 interface of the controller": [[32, "ros-2-interface-of-the-controller"], [37, "ros-2-interface-of-the-controller"], [39, "ros-2-interface-of-the-controller"], [47, "ros-2-interface-of-the-controller"], [53, "ros-2-interface-of-the-controller"]], "Topics": [[32, "topics"], [37, "topics"], [39, "topics"], [47, "topics"], [53, "topics"]], "ros2_control interfaces": [[32, "ros2-control-interfaces"]], "References": [[32, "references"], [34, "references"], [45, "references"]], "States": [[32, "states"], [45, "states"], [46, "states"], [50, "states"]], "Commands": [[32, "commands"], [42, "commands"], [45, "commands"], [46, "commands"], [50, "commands"]], "bicycle_steering_controller": [[33, "bicycle-steering-controller"]], "diff_drive_controller": [[34, "diff-drive-controller"]], "Other features": [[34, "other-features"], [45, "other-features"], [51, "other-features"]], "Description of controller\u2019s interfaces": [[34, "description-of-controller-s-interfaces"], [45, "description-of-controller-s-interfaces"], [46, "description-of-controller-s-interfaces"], [50, "description-of-controller-s-interfaces"]], "Feedback": [[34, "feedback"]], "Output": [[34, "output"]], "ROS 2 Interfaces": [[34, "ros-2-interfaces"]], "Subscribers": [[34, "subscribers"], [46, "subscribers"], [50, "subscribers"]], "Publishers": [[34, "publishers"], [45, "publishers"], [46, "publishers"], [50, "publishers"]], "ros2_controllers": [[35, "ros2-controllers"]], "Controllers for Mobile Robots": [[35, "controllers-for-mobile-robots"]], "Controllers for Manipulators and Other Robots": [[35, "controllers-for-manipulators-and-other-robots"]], "Broadcasters": [[35, "broadcasters"]], "Common Controller Parameters": [[35, "common-controller-parameters"]], "Writing a new controller": [[36, "writing-a-new-controller"]], "effort_controllers": [[37, "effort-controllers"]], "effort_controllers/JointGroupEffortController": [[37, "effort-controllers-jointgroupeffortcontroller"]], "Force Torque Sensor Broadcaster": [[38, "force-torque-sensor-broadcaster"]], "forward_command_controller": [[39, "forward-command-controller"]], "Hardware interface type": [[39, "hardware-interface-type"], [42, "hardware-interface-type"]], "Gripper Action Controller": [[40, "gripper-action-controller"]], "IMU Sensor Broadcaster": [[41, "imu-sensor-broadcaster"]], "joint_state_broadcaster": [[42, "joint-state-broadcaster"]], "Details about parameters": [[43, "details-about-parameters"]], "Trajectory Representation": [[44, "trajectory-representation"]], "Interpolation Method none": [[44, "interpolation-method-none"]], "Interpolation Method spline": [[44, "interpolation-method-spline"]], "Visualized Examples": [[44, "visualized-examples"]], "Trajectory Replacement": [[44, "trajectory-replacement"]], "joint_trajectory_controller": [[45, "joint-trajectory-controller"]], "Hardware interface types": [[45, "hardware-interface-types"]], "Using Joint Trajectory Controller(s)": [[45, "using-joint-trajectory-controller-s"]], "Preemption policy 1": [[45, "preemption-policy"]], "Actions 1": [[45, "actions"]], "Subscriber 1": [[45, "subscriber"]], "Services": [[45, "services"], [46, "services"]], "Further information": [[45, "further-information"]], "PID Controller": [[46, "pid-controller"]], "Execution logic of the controller": [[46, "execution-logic-of-the-controller"], [50, "execution-logic-of-the-controller"]], "Using the controller": [[46, "using-the-controller"]], "References (from a preceding controller)": [[46, "references-from-a-preceding-controller"], [50, "references-from-a-preceding-controller"]], "position_controllers": [[47, "position-controllers"]], "position_controllers/JointGroupPositionController": [[47, "position-controllers-jointgrouppositioncontroller"]], "Range Sensor Broadcaster": [[48, "range-sensor-broadcaster"]], "rqt_joint_trajectory_controller": [[49, "rqt-joint-trajectory-controller"]], "steering_controllers_library": [[50, "steering-controllers-library"]], "tricycle_controller": [[51, "tricycle-controller"]], "Velocity commands": [[51, "velocity-commands"]], "tricycle_steering_controller": [[52, "tricycle-steering-controller"]], "velocity_controllers": [[53, "velocity-controllers"]], "velocity_controllers/JointGroupVelocityController": [[53, "velocity-controllers-jointgroupvelocitycontroller"]], "Simulator Integrations": [[54, "simulator-integrations"]], "Hosted by ros-controls": [[54, "hosted-by-ros-controls"]], "Community": [[54, "community"]], "Supported Robots": [[55, "supported-robots"]], "Welcome to the ros2_control documentation!": [[56, "welcome-to-the-ros2-control-documentation"]], "ros2_control Repositories": [[56, "ros2-control-repositories"]], "Development Organisation and Communication": [[56, "development-organisation-and-communication"]]}, "indexentries": {}}) \ No newline at end of file +Search.setIndex({"docnames": ["doc/acknowledgements/acknowledgements", "doc/contributing/contributing", "doc/differences_to_ros1/differences_to_ros1", "doc/gazebo_ros2_control/doc/index", "doc/getting_started/getting_started", "doc/gz_ros2_control/doc/index", "doc/project_ideas", "doc/resources/resources", "doc/resources/roscon2023_workshop", "doc/ros2_control/controller_manager/doc/controller_chaining", "doc/ros2_control/controller_manager/doc/userdoc", "doc/ros2_control/doc/index", "doc/ros2_control/hardware_interface/doc/hardware_components_userdoc", "doc/ros2_control/hardware_interface/doc/hardware_interface_types_userdoc", "doc/ros2_control/hardware_interface/doc/mock_components_userdoc", "doc/ros2_control/hardware_interface/doc/writing_new_hardware_component", "doc/ros2_control/ros2controlcli/doc/userdoc", "doc/ros2_control_demos/doc/index", "doc/ros2_control_demos/doc/run_from_docker", "doc/ros2_control_demos/example_1/doc/userdoc", "doc/ros2_control_demos/example_10/doc/userdoc", "doc/ros2_control_demos/example_12/doc/userdoc", "doc/ros2_control_demos/example_14/doc/userdoc", "doc/ros2_control_demos/example_2/doc/userdoc", "doc/ros2_control_demos/example_3/doc/userdoc", "doc/ros2_control_demos/example_4/doc/userdoc", "doc/ros2_control_demos/example_5/doc/userdoc", "doc/ros2_control_demos/example_6/doc/userdoc", "doc/ros2_control_demos/example_7/doc/userdoc", "doc/ros2_control_demos/example_8/doc/userdoc", "doc/ros2_control_demos/example_9/doc/userdoc", "doc/ros2_controllers/ackermann_steering_controller/doc/userdoc", "doc/ros2_controllers/admittance_controller/doc/userdoc", "doc/ros2_controllers/bicycle_steering_controller/doc/userdoc", "doc/ros2_controllers/diff_drive_controller/doc/userdoc", "doc/ros2_controllers/doc/controllers_index", "doc/ros2_controllers/doc/writing_new_controller", "doc/ros2_controllers/effort_controllers/doc/userdoc", "doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/forward_command_controller/doc/userdoc", "doc/ros2_controllers/gripper_controllers/doc/userdoc", "doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/joint_state_broadcaster/doc/userdoc", "doc/ros2_controllers/joint_trajectory_controller/doc/parameters", "doc/ros2_controllers/joint_trajectory_controller/doc/trajectory", "doc/ros2_controllers/joint_trajectory_controller/doc/userdoc", "doc/ros2_controllers/pid_controller/doc/userdoc", "doc/ros2_controllers/position_controllers/doc/userdoc", "doc/ros2_controllers/range_sensor_broadcaster/doc/userdoc", "doc/ros2_controllers/rqt_joint_trajectory_controller/doc/userdoc", "doc/ros2_controllers/steering_controllers_library/doc/userdoc", "doc/ros2_controllers/tricycle_controller/doc/userdoc", "doc/ros2_controllers/tricycle_steering_controller/doc/userdoc", "doc/ros2_controllers/velocity_controllers/doc/userdoc", "doc/simulators/simulators", "doc/supported_robots/supported_robots", "index"], "filenames": ["doc/acknowledgements/acknowledgements.rst", "doc/contributing/contributing.rst", "doc/differences_to_ros1/differences_to_ros1.rst", "doc/gazebo_ros2_control/doc/index.rst", "doc/getting_started/getting_started.rst", "doc/gz_ros2_control/doc/index.rst", "doc/project_ideas.rst", "doc/resources/resources.rst", "doc/resources/roscon2023_workshop.rst", "doc/ros2_control/controller_manager/doc/controller_chaining.rst", "doc/ros2_control/controller_manager/doc/userdoc.rst", "doc/ros2_control/doc/index.rst", "doc/ros2_control/hardware_interface/doc/hardware_components_userdoc.rst", "doc/ros2_control/hardware_interface/doc/hardware_interface_types_userdoc.rst", "doc/ros2_control/hardware_interface/doc/mock_components_userdoc.rst", "doc/ros2_control/hardware_interface/doc/writing_new_hardware_component.rst", "doc/ros2_control/ros2controlcli/doc/userdoc.rst", "doc/ros2_control_demos/doc/index.rst", "doc/ros2_control_demos/doc/run_from_docker.rst", "doc/ros2_control_demos/example_1/doc/userdoc.rst", "doc/ros2_control_demos/example_10/doc/userdoc.rst", "doc/ros2_control_demos/example_12/doc/userdoc.rst", "doc/ros2_control_demos/example_14/doc/userdoc.rst", "doc/ros2_control_demos/example_2/doc/userdoc.rst", "doc/ros2_control_demos/example_3/doc/userdoc.rst", "doc/ros2_control_demos/example_4/doc/userdoc.rst", "doc/ros2_control_demos/example_5/doc/userdoc.rst", "doc/ros2_control_demos/example_6/doc/userdoc.rst", "doc/ros2_control_demos/example_7/doc/userdoc.rst", "doc/ros2_control_demos/example_8/doc/userdoc.rst", "doc/ros2_control_demos/example_9/doc/userdoc.rst", "doc/ros2_controllers/ackermann_steering_controller/doc/userdoc.rst", "doc/ros2_controllers/admittance_controller/doc/userdoc.rst", "doc/ros2_controllers/bicycle_steering_controller/doc/userdoc.rst", "doc/ros2_controllers/diff_drive_controller/doc/userdoc.rst", "doc/ros2_controllers/doc/controllers_index.rst", "doc/ros2_controllers/doc/writing_new_controller.rst", "doc/ros2_controllers/effort_controllers/doc/userdoc.rst", "doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/forward_command_controller/doc/userdoc.rst", "doc/ros2_controllers/gripper_controllers/doc/userdoc.rst", "doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/joint_state_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/joint_trajectory_controller/doc/parameters.rst", "doc/ros2_controllers/joint_trajectory_controller/doc/trajectory.rst", "doc/ros2_controllers/joint_trajectory_controller/doc/userdoc.rst", "doc/ros2_controllers/pid_controller/doc/userdoc.rst", "doc/ros2_controllers/position_controllers/doc/userdoc.rst", "doc/ros2_controllers/range_sensor_broadcaster/doc/userdoc.rst", "doc/ros2_controllers/rqt_joint_trajectory_controller/doc/userdoc.rst", "doc/ros2_controllers/steering_controllers_library/doc/userdoc.rst", "doc/ros2_controllers/tricycle_controller/doc/userdoc.rst", "doc/ros2_controllers/tricycle_steering_controller/doc/userdoc.rst", "doc/ros2_controllers/velocity_controllers/doc/userdoc.rst", "doc/simulators/simulators.rst", "doc/supported_robots/supported_robots.rst", "index.rst"], "titles": ["Acknowledgements", "Contributing", "Differences to ros_control (ROS1)", "gazebo_ros2_control", "Getting Started", "gz_ros2_control", "Project Ideas for GSoC 2024", "Resources", "ROSCon 2023 Workshop", "Controller Chaining / Cascade Control", "Controller Manager", "ros2_control", "Hardware Components", "ros2_control hardware interface types", "Mock Components", "Writing a Hardware Component", "Command Line Interface", "Demos", "<no title>", "Example 1: RRBot", "Example 10: Industrial robot with GPIO interfaces", "Example 12: Controller chaining with RRBot", "Example 14: Modular robot with actuators not providing states", "DiffBot", "Example 3: Robots with multiple interfaces", "Example 4: Industrial robot with integrated sensor", "Example 5: Industrial robot with externally connected sensor", "Example 6: Modular Robots with separate communication to each actuator", "Example 7: Full tutorial with a 6DOF robot", "Example 8: Industrial Robots with an exposed transmission interface", "Example 9: Simulation with RRBot", "ackermann_steering_controller", "Admittance Controller", "bicycle_steering_controller", "diff_drive_controller", "ros2_controllers", "Writing a new controller", "effort_controllers", "Force Torque Sensor Broadcaster", "forward_command_controller", "Gripper Action Controller", "IMU Sensor Broadcaster", "joint_state_broadcaster", "Details about parameters", "Trajectory Representation", "joint_trajectory_controller", "PID Controller", "position_controllers", "Range Sensor Broadcaster", "rqt_joint_trajectory_controller", "steering_controllers_library", "tricycle_controller", "tricycle_steering_controller", "velocity_controllers", "Simulator Integrations", "Supported Robots", "Welcome to the ros2_control documentation!"], "terms": {"The": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 52, 53, 56], "follow": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 35, 36, 37, 43, 44, 45, 46, 47, 52, 53, 56], "peopl": [0, 1], "were": [0, 6, 28, 34, 44, 45], "ros2_control": [0, 1, 4, 10, 12, 14, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 34, 36, 54], "framework": [0, 1, 2, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 28, 35, 36, 42, 56], "show": [0, 1, 3, 4, 5, 7, 8, 10, 12, 13, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 42, 44], "all": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 36, 42, 43, 44, 45, 55], "time": [0, 1, 2, 6, 7, 8, 10, 14, 16, 17, 19, 22, 23, 24, 25, 26, 27, 28, 29, 34, 36, 38, 43, 44, 45, 56], "activ": [0, 1, 2, 4, 10, 15, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 42, 43, 45], "assign": [0, 36], "finish": 0, "rate": [0, 23, 35, 43, 44, 45], "last": [0, 12, 15, 28, 32, 36, 43, 44, 45], "date": 0, "benc": [0, 6, 7, 8], "magyar": [0, 6, 7, 8], "bmagyar": [0, 8], "1244": 0, "1024": 0, "0": [0, 3, 4, 5, 9, 13, 14, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 40, 41, 42, 43, 44, 45, 48, 50, 52], "82": 0, "2023": [0, 56], "12": [0, 17, 55, 56], "30t20": 0, "25": 0, "34z": 0, "dr": [0, 7], "deni": [0, 6, 7, 8], "destogl": 0, "986": 0, "561": 0, "57": 0, "18t14": 0, "11": [0, 17], "03z": 0, "christoph": 0, "fr\u00f6hlich": 0, "christophfroehlich": 0, "153": 0, "134": 0, "88": 0, "26t09": 0, "00": [0, 8], "02z": 0, "fetch": 0, "31": [0, 56], "03": [0, 45], "26": 0, "14": [0, 17, 50], "utc": 0, "dure": [0, 17, 28, 45], "past": [0, 44], "month": 0, "533": 0, "402": 0, "75": 0, "439": 0, "136": 0, "142": 0, "123": 0, "87": 0, "have": [0, 1, 2, 4, 6, 8, 9, 10, 12, 13, 14, 15, 17, 19, 21, 23, 24, 28, 30, 31, 32, 33, 35, 36, 42, 43, 45, 46, 52], "contribut": [0, 4, 7], "develop": [0, 1, 7, 14, 15, 17, 36], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 28, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 50, 52, 53, 54, 55, 56], "project": [0, 1, 56], "give": [0, 1, 7, 10, 17, 19, 23, 24, 44, 56], "valuabl": 0, "pull": [0, 8, 15], "request": [0, 2, 15, 28, 42, 56], "see": [0, 1, 2, 4, 13, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 38, 41, 43, 45, 48, 50, 52], "more": [0, 1, 2, 3, 4, 5, 6, 8, 10, 14, 15, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 36, 45, 52], "inform": [0, 3, 5, 9, 14, 15, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 36, 56], "karsten": 0, "knese": 0, "karsten1987": 0, "186": 0, "118": 0, "63": 0, "2021": 0, "09": 0, "07t16": 0, "47": 0, "31z": 0, "alejandro": 0, "hern\u00e1ndez": 0, "cordero": 0, "ahcord": 0, "90": [0, 28], "80": 0, "89": 0, "27t10": 0, "54": 0, "11z": 0, "sai": 0, "kishor": 0, "kothakota": 0, "saikishor": 0, "69": 0, "67": 0, "97": 0, "29t05": 0, "18": [0, 8, 28], "25z": 0, "victor": 0, "lopez": 0, "v": [0, 16, 25, 43], "93": 0, "60": 0, "65": 0, "10": [0, 3, 5, 17, 24, 50], "14t09": 0, "01": [0, 40, 43, 45], "andyz": 0, "46": 0, "45": 0, "98": 0, "23t02": 0, "17": [0, 8], "26z": 0, "abrar": 0, "rahman": 0, "protyasha": 0, "aprotya": 0, "157": 0, "43": [0, 4, 13, 23], "27": 0, "25t12": 0, "02": 0, "18z": 0, "olivi": 0, "stass": 0, "52": [0, 48], "40": 0, "77": 0, "26t08": 0, "13z": 0, "jordan": 0, "palacio": 0, "78": 0, "34": 0, "44": 0, "15t08": 0, "45z": 0, "erick": 0, "g": [0, 1, 2, 4, 5, 6, 7, 9, 10, 13, 14, 15, 17, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 32, 36, 37, 42, 47, 50, 53, 56], "isla": 0, "osuna": 0, "erickiso": 0, "139": 0, "28": [0, 50], "20": [0, 8, 40, 43, 45], "19t20": 0, "32": 0, "07z": 0, "louis": 0, "poubel": 0, "chapulina": 0, "29": 0, "23": [0, 4], "79": 0, "2022": 0, "08": 0, "30t16": 0, "41": 0, "23z": 0, "none": [0, 9, 36, 42, 43, 45], "bijoua29": 0, "160": 0, "21": [0, 50], "13": [0, 8, 17], "06": 0, "01t20": 0, "48": [0, 3, 5], "32z": 0, "jaron": 0, "l": 0, "167": 0, "10t19": 0, "59": 0, "59z": 0, "livanov93": 0, "164": 0, "05": [0, 45, 56], "22t06": 0, "28z": 0, "tyler": 0, "weaver": 0, "tylerjw": 0, "94": 0, "27t13": 0, "arn": 0, "hitzmann": 0, "arne48": 0, "146": 0, "16": [0, 55], "25t06": 0, "15z": 0, "bailac": 0, "1": [0, 1, 2, 3, 4, 5, 6, 7, 13, 14, 15, 17, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 36, 40, 44, 48, 50], "09t12": 0, "52z": 0, "m\u00e1rk": 0, "szitan": 0, "vx792": 0, "135": 0, "22t09": 0, "felix": 0, "exner": 0, "fexner": 0, "fmauch": 0, "24t22": 0, "ari": 0, "synodino": 0, "progtologist": 0, "152": 0, "07": 0, "30t19": 0, "58z": 0, "chen": 0, "bainian": 0, "briancbn": 0, "36": 0, "9": [0, 6, 8, 17, 41], "25t01": 0, "51": 0, "12z": 0, "paul": 0, "gesel": 0, "pac48": 0, "14t18": 0, "maciej": 0, "bednarczyk": 0, "mcbed": 0, "8": [0, 17], "25t18": 0, "19z": 0, "jafar": 0, "uru\u00e7": 0, "jafarabdi": 0, "07t07": 0, "01z": 0, "ddengster": 0, "2020": 0, "01t03": 0, "andr": 0, "montano": 0, "anfemosa": 0, "133": 0, "7": [0, 7, 8, 17, 20, 23, 50], "29t15": 0, "37z": 0, "homalozoa": 0, "x": [0, 23, 25, 26, 28, 32, 34, 38, 41, 50, 51, 55], "130": 0, "23t11": 0, "22": [0, 8, 10], "mahaarbo": 0, "01t11": 0, "44z": 0, "matt": 0, "reynold": 0, "matthew": 0, "18t19": 0, "56": 0, "ana": 0, "abou": 0, "allaban": 0, "piraka9011": 0, "04": [0, 8, 10], "09t00": 0, "38": [0, 3, 5], "06z": 0, "toni": [0, 7], "najjar": [0, 7], "tonynajjar": 0, "04t13": 0, "50": [0, 4, 10, 23], "48z": 0, "dasroteskelett": 0, "150": 0, "6": [0, 17, 19, 28], "28t09": 0, "36z": 0, "brewmast": 0, "harderthan": 0, "124": 0, "26t15": 0, "47z": 0, "A": [0, 4, 7, 13, 15, 17, 25, 26, 35, 36, 42, 44, 45], "vd": 0, "hoorn": 0, "gavanderhoorn": 0, "19t13": 0, "39": 0, "alex": 0, "moriarti": 0, "5": [0, 15, 17, 19, 20, 21, 22, 24, 25, 27, 28, 29, 30, 44, 50, 55], "42": 0, "20t19": 0, "55": 0, "jack": 0, "jackcent": 0, "02t15": 0, "37": 0, "17z": 0, "han": 0, "martin": 0, "duringhof": 0, "4": [0, 13, 17, 22, 24, 26, 29, 48], "29t21": 0, "15": 0, "noel": 0, "jim\u00e9nez": 0, "garc\u00eda": 0, "noel215": 0, "20t07": 0, "40z": 0, "nathan": [0, 7], "brook": [0, 7], "nbbrook": 0, "05t22": 0, "marq": 0, "rasmussen": 0, "marqrazz": 0, "23t00": 0, "colin": 0, "mackenzi": 0, "guru": 0, "florida": 0, "19t23": 0, "49z": 0, "reza": 0, "kermani": 0, "ark3r": 0, "13t18": 0, "27z": 0, "chri": 0, "thrasher": 0, "christhrash": 0, "26t17": 0, "05z": 0, "michael": 0, "wiznitz": 0, "mechwiz": 0, "22t14": 0, "19": 0, "richard": 0, "osterloh": 0, "rosterloh": 0, "145": 0, "3": [0, 3, 4, 5, 6, 13, 16, 17, 19, 21, 22, 23, 25, 26, 27, 28, 29, 44, 45, 46], "05t08": 0, "53": 0, "08z": 0, "mrl1kor": 0, "malapatiravi": 0, "07t18": 0, "adam": 0, "serafin": 0, "serafadam": 0, "12t18": 0, "24": [0, 7, 8], "24z": 0, "manuel": 0, "muth": 0, "mamueluth": 0, "03t10": 0, "20z": 0, "melvin": 0, "wang": 0, "wmmc88": 0, "22t13": 0, "tim": 0, "clepha": 0, "timpl": 0, "13t07": 0, "yutaka": 0, "kondo": 0, "youtalk": 0, "22t00": 0, "guihom": 0, "guihomework": 0, "17t15": 0, "jose": 0, "lui": 0, "rivero": 0, "j": [0, 46], "26t13": 0, "peter": 0, "david": 0, "fagan": 0, "peterdavidfagan": 0, "2": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13, 14, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36, 45, 50, 55, 56], "23t22": 0, "sebastian": 0, "jahr": 0, "sjahr": 0, "15t14": 0, "joseph": 0, "schornak": 0, "schornakj": 0, "27t03": 0, "57z": 0, "akash": 0, "ace314159": 0, "31t17": 0, "jo\u00e3o": 0, "torr": 0, "borg": 0, "borgesjvt": 0, "05t12": 0, "46z": 0, "patrick": 0, "roncagliolo": 0, "roncapat": 0, "01t12": 0, "49": 0, "carrol": 0, "mjcarrol": 0, "28t21": 0, "09z": 0, "vansh": 0, "gehlot": 0, "eth": 0, "vanshgehlot": 0, "13t11": 0, "mhubii": 0, "21t11": 0, "50z": 0, "luka": 0, "macha": 0, "lukasmacha97": 0, "85": 0, "17t18": 0, "sachin": 0, "kumar": 0, "sachinkum0009": 0, "lennart": 0, "nachtigal": 0, "firesurf": 0, "04t07": 0, "qiayuanliao": 0, "qiayuanl": 0, "35": [0, 50], "25t05": 0, "solomon": 0, "swiz23": 0, "15t15": 0, "andi": [0, 7], "mcevoi": 0, "mcevoyandi": 0, "08t14": 0, "kenji": 0, "brameld": 0, "ijnek": 0, "05t10": 0, "53z": 0, "bilal": 0, "gill": 0, "bgill92": 0, "01t13": 0, "22z": 0, "kvk": 0, "praneeth": 0, "kvkpraneeth": 0, "28t07": 0, "33z": 0, "cian": 0, "donovan": 0, "ciandonovan": 0, "26t23": 0, "schulz": 0, "schulze18": 0, "27t21": 0, "29z": 0, "shawn": 0, "schaerer": 0, "shawnschaer": 0, "14t15": 0, "franz": 0, "fjp": 0, "04t22": 0, "vatan": 0, "aksoi": 0, "tezer": 0, "vatanaksoytez": 0, "21t13": 0, "nour": 0, "saeed": 0, "d": [0, 17, 19, 30, 43], "dmitri": 0, "dignakov": 0, "13t16": 0, "30": [0, 3, 5, 23], "ken551": 0, "03t11": 0, "54z": 0, "jonatan": 0, "olofsson": 0, "jonatanolofsson": 0, "05t14": 0, "bedard": 0, "christophebedard": 0, "27t18": 0, "august": 0, "bourgoi": 0, "augustebourgoi": 0, "19t14": 0, "ramon": 0, "wijnand": 0, "rayman": 0, "21t14": 0, "21z": 0, "flochr": 0, "20t10": 0, "castro": 0, "sea": 0, "bass": 0, "27t12": 0, "51z": 0, "abishalini": 0, "sivaraman": 0, "27t14": 0, "ramcharanthota": 0, "ben": 0, "holden": 0, "bobblebal": 0, "01t10": 0, "Will": 0, "baker": 0, "willcbak": 0, "22t15": 0, "robotgir": 0, "17t16": 0, "33": 0, "tomislav": 0, "petkovi\u0107": 0, "petkovich": 0, "17t10": 0, "ros2tori": 0, "28t15": 0, "kevin": 0, "demarco": 0, "syllogismrx": 0, "19t16": 0, "noe\u00ebl": 0, "moeskop": 0, "noeelmoeskop": 0, "18t09": 0, "josh": 0, "newan": 0, "joshnewan": 0, "14t08": 0, "emiliano": 0, "borghi": 0, "eborghi10": 0, "29t20": 0, "haider8645": 0, "26t10": 0, "stephen": 0, "street": 0, "sgstreet": 0, "05t20": 0, "jun": 0, "chenjunnn": 0, "09t06": 0, "daniel": 0, "zumkel": 0, "dzumkel": 0, "shane": 0, "loretz": 0, "sloretz": 0, "yoav": 0, "feket": 0, "yoavfeket": 0, "17t21": 0, "johann": [0, 7], "huemer": 0, "huemerj": 0, "31t15": 0, "keegan": 0, "soteb": 0, "ksoteb": 0, "00z": 0, "carlo": 0, "ag\u00fcero": 0, "caguero": 0, "26t11": 0, "35z": 0, "jacob": 0, "perron": 0, "jacobperron": 0, "09t18": 0, "reframesystem": 0, "krzysztof": 0, "wojciechowski": 0, "kotochleb": 0, "12t08": 0, "55z": 0, "addisu": 0, "z": [0, 23, 25, 26, 28, 32, 34, 38, 41, 50, 51], "taddes": 0, "azeei": 0, "14t20": 0, "thibault": 0, "poignonec": 0, "tpoignonec": 0, "09t08": 0, "sgmurrai": 0, "0000": 0, "00t00": 0, "kelli": 0, "kellyprankin": 0, "kasiceo": 0, "a10263790": 0, "tomoya": 0, "tomoyafujita2016": 0, "usamahamayun1": 0, "dave": 0, "coleman": 0, "davetcoleman": 0, "66": 0, "64": 0, "92": 0, "71": 0, "104": 0, "03t19": 0, "14z": 0, "86": 0, "95": 0, "100": [0, 4, 13, 37, 47, 53], "99": [0, 10], "72": 0, "link": [0, 3, 4, 5, 7, 9, 12, 28, 35], "list": [0, 4, 7, 9, 10, 12, 15, 16, 21, 28, 36, 43, 54, 55, 56], "who": 0, "submit": [0, 1, 7, 54, 55], "respect": [0, 3, 5, 6, 7, 43, 44, 45], "repositori": [0, 4, 6, 11, 13, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 34, 35], "ros2_control_demo": [0, 1, 4, 17, 19, 28, 30, 56], "control_toolbox": [0, 46, 56], "gazebo_ros2_control": [0, 30], "gz_ros2_control": 0, "realtime_tool": [0, 6, 56], "kinematics_interfac": [0, 32], "control_msg": [0, 3, 5, 32, 43, 45, 46, 50, 56], "ha": [0, 1, 3, 4, 5, 7, 13, 15, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 35, 36, 42, 43, 44, 46], "receiv": [0, 2, 28, 43, 44], "major": [0, 41], "from": [0, 1, 2, 7, 8, 9, 10, 14, 15, 16, 18, 28, 32, 34, 35, 36, 37, 38, 41, 43, 44, 45, 47, 48, 51, 53, 55, 56], "support": [0, 2, 3, 4, 5, 7, 14, 15, 16, 28, 32, 36, 42, 44, 45, 50, 54, 56], "rosin": 0, "ro": [0, 1, 2, 3, 4, 5, 6, 8, 10, 13, 14, 16, 17, 19, 20, 23, 24, 25, 26, 27, 28, 29, 30, 35, 36, 44, 45, 56], "industri": [0, 4, 6, 8, 17, 55], "qualiti": [0, 1], "assur": 0, "robot": [0, 2, 3, 5, 6, 8, 9, 10, 13, 19, 21, 23, 30, 34, 38, 42, 50, 51, 56], "softwar": [0, 4, 28], "compon": [0, 7, 10, 11, 13, 16, 17, 22, 23, 24, 25, 26, 27, 28, 32, 34, 35, 38, 41, 48, 50, 51, 56], "http": [0, 1, 4, 6, 8, 17, 28, 31, 33, 52], "www": 0, "eu": 0, "fund": 0, "european": 0, "union": 0, "": [0, 1, 4, 6, 7, 9, 10, 15, 16, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 36, 41, 43, 44, 48, 52, 56], "horizon": 0, "research": [0, 7, 55], "innov": 0, "programm": 0, "under": [0, 7, 15, 21, 36, 44, 45, 50, 56], "grant": [0, 4], "agreement": 0, "732287": 0, "first": [1, 2, 9, 12, 15, 17, 28, 30, 36, 43, 44, 46], "thank": 1, "you": [1, 2, 3, 4, 5, 7, 8, 9, 10, 12, 14, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 36, 45, 46, 56], "consid": [1, 16, 43, 46], "As": [1, 9, 13, 15, 19, 28, 34, 36], "an": [1, 2, 3, 4, 5, 6, 7, 9, 13, 14, 15, 16, 17, 19, 21, 23, 26, 28, 30, 31, 32, 33, 34, 35, 36, 37, 42, 43, 45, 47, 50, 52, 53], "open": [1, 8, 14, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 42, 43, 50], "sourc": [1, 3, 5, 7, 8, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36], "we": [1, 3, 5, 6, 7, 8, 9, 12, 17, 19, 21, 23, 28, 29, 30, 42], "welcom": 1, "each": [1, 4, 6, 9, 10, 12, 13, 15, 17, 19, 22, 28, 31, 42, 50, 52], "contributor": 1, "regardless": 1, "background": [1, 17], "experi": 1, "To": [1, 2, 4, 9, 10, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 42, 44, 54, 55, 56], "reduc": [1, 14], "entropi": 1, "univers": [1, 7, 28, 55], "our": [1, 3, 4, 5, 6, 7, 17, 19, 28], "vivid": 1, "collabor": 1, "environ": [1, 4, 7, 17], "set": [1, 2, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 19, 28, 35, 37, 42, 43, 44, 45, 47, 50, 53], "up": [1, 7, 8, 15, 17, 44], "some": [1, 3, 5, 6, 7, 17, 19, 22, 23, 24, 25, 26, 27, 28, 29, 32, 42, 43, 45, 56], "standard": [1, 2, 6, 7, 10, 15, 16, 22, 27, 28, 38, 42], "method": [1, 2, 4, 9, 10, 12, 15, 28, 36, 50], "requir": [1, 2, 4, 6, 15, 28, 32, 36, 37, 45, 47, 53], "ar": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 38, 41, 42, 43, 44, 45, 46, 48, 50, 51, 52, 56], "limit": [1, 3, 5, 7, 10, 17, 28, 34, 51], "scope": 1, "your": [1, 2, 7, 8, 10, 14, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 33, 36, 54, 55, 56], "pr": [1, 54, 55], "should": [1, 2, 3, 5, 6, 7, 9, 10, 12, 15, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 33, 36, 42, 44, 45, 46], "do": [1, 2, 4, 6, 7, 9, 10, 15, 17, 32, 36, 45, 46], "one": [1, 2, 4, 6, 7, 8, 9, 10, 13, 15, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 36, 37, 38, 42, 44, 45, 46, 47, 50, 52, 53, 56], "thing": [1, 3, 5, 8, 10, 17], "avoid": [1, 19, 22, 23, 24, 25, 26, 27, 29, 36], "ad": [1, 3, 5, 6, 10, 14, 15, 21, 23, 28, 36, 42], "random": [1, 22, 24, 25, 26, 27], "fix": [1, 2, 28, 31, 33, 52], "put": [1, 15, 36], "those": [1, 2, 4, 6, 9, 14, 15, 17, 28, 34, 36, 38, 42, 43, 44], "separ": [1, 2, 4, 17, 22, 42], "descript": [1, 2, 7, 10, 12, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 36], "titl": 1, "add": [1, 2, 9, 10, 12, 15, 28, 31, 32, 33, 36, 52, 54, 55], "short": [1, 36, 56], "summari": [1, 7, 56], "make": [1, 2, 5, 6, 7, 21, 28, 40, 56], "sure": [1, 5, 6, 19, 21, 22, 23, 24, 25, 26, 27, 29, 56], "pipelin": 1, "i": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 56], "green": [1, 44], "don": [1, 3, 8, 9, 23, 43, 45], "t": [1, 3, 5, 8, 9, 10, 17, 23, 43, 44, 45, 46], "afraid": 1, "review": [1, 6, 56], "maintain": [1, 4, 6, 9, 17, 44], "new": [1, 7, 8, 9, 15, 19, 21, 24, 28, 35, 44, 56], "code": [1, 2, 4, 6, 7, 15, 28], "test": [1, 3, 6, 14, 15, 17, 19, 23, 30, 31, 32, 33, 36, 50, 52], "If": [1, 2, 4, 7, 8, 9, 10, 12, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 36, 38, 42, 43, 44, 45, 46, 50, 56], "function": [1, 2, 6, 7, 8, 21, 28, 32, 50], "alwai": [1, 28], "exercis": 1, "serv": [1, 4, 6], "live": [1, 7], "origin": [1, 3, 5, 7, 19, 28, 44, 45], "intent": [1, 9, 14], "section": [1, 2, 13, 15, 36, 45], "target": [1, 10, 15, 32, 36, 39, 43, 45], "also": [1, 2, 3, 4, 5, 6, 7, 9, 10, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 36, 45, 46], "read": [1, 2, 3, 4, 5, 10, 13, 15, 17, 21, 22, 25, 26, 28, 36, 42, 43, 46, 48, 50], "understand": [1, 6, 44], "how": [1, 6, 7, 13, 15, 17, 20, 21, 22, 24, 25, 26, 27, 28, 30, 36], "handl": [1, 2, 4, 6, 7, 15, 25, 28, 31, 32, 33, 39, 40, 41, 45, 46, 50, 52], "organ": [1, 7, 56], "guidelin": 1, "especi": [1, 2, 17, 50], "applic": [1, 4, 7, 8, 10, 13, 28], "pleas": [1, 10, 27, 56], "keep": [1, 28, 36], "mind": [1, 36], "work": [1, 6, 7, 9, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 36, 37, 42, 47, 51, 53, 56], "fork": 1, "when": [1, 2, 3, 4, 5, 7, 8, 9, 10, 14, 15, 16, 21, 24, 28, 32, 35, 36, 40, 43, 45, 46, 50], "That": [1, 15, 36], "wai": [1, 10, 15, 28, 36, 38, 45], "main": [1, 4, 6, 7, 10, 14, 28, 36, 50, 56], "repo": [1, 4, 8, 17], "clean": 1, "featur": [1, 7, 14, 17, 19, 29, 50, 56], "branch": [1, 17], "check": [1, 2, 4, 6, 9, 12, 14, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 36, 43, 44, 45, 52, 56], "satisfi": 1, "befor": [1, 2, 9, 10, 15, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 36, 44], "thei": [1, 2, 4, 6, 7, 9, 13, 14, 15, 16, 21, 35, 36, 43, 45, 50], "can": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 36, 38, 39, 43, 44, 45, 46, 50, 56], "must": [1, 3, 5, 9, 10, 13, 17, 28, 41, 43, 45], "approv": 1, "two": [1, 4, 6, 9, 10, 15, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 33, 36, 38, 44, 45, 46, 50, 52], "explicitli": 1, "onli": [1, 2, 4, 6, 7, 9, 10, 12, 15, 16, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 33, 34, 36, 37, 38, 42, 43, 44, 45, 46, 47, 53], "except": [1, 28], "other": [1, 2, 3, 4, 7, 9, 15, 17, 22, 27, 28, 31, 33, 36, 42, 44, 50, 52], "where": [1, 3, 6, 8, 9, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 31, 33, 34, 36, 42, 43, 44, 45, 46, 50, 52], "back": 1, "traceabl": 1, "discuss": [1, 7, 8, 21, 30, 44, 56], "suffici": [1, 3, 5, 9, 38], "note": [1, 4, 10, 19, 34, 45, 46, 56], "still": [1, 2, 19, 21, 22, 23, 24, 25, 26, 27, 29, 35, 44], "encourag": 1, "help": [1, 10, 14, 15, 16, 36], "u": [1, 3, 5, 10, 17, 43], "increas": [1, 23, 46], "pace": 1, "veri": [1, 2, 3, 5, 6, 13], "like": [1, 2, 3, 4, 5, 6, 7, 8, 15, 17, 21, 28], "find": [1, 3, 5, 23], "issu": [1, 6, 7, 8, 56], "nobodi": 1, "els": 1, "squash": 1, "commit": 1, "messag": [1, 6, 10, 16, 24, 25, 26, 28, 38, 41, 42, 43, 44, 45, 48, 50, 56], "comment": [1, 28], "fixup": 1, "linter": 1, "us": [1, 2, 4, 6, 7, 8, 12, 13, 14, 16, 18, 28, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 43, 44, 47, 48, 50, 52, 53, 56], "pre": 1, "correct": [1, 2, 44], "header": [1, 12, 15, 25, 26, 34, 36, 44], "address": [1, 28], "similar": [1, 4, 7, 13, 19, 21, 28], "mean": [1, 2, 9, 13, 14, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 44, 45], "result": [1, 4, 9, 10, 19, 28, 42, 44], "exactli": 1, "cowboi": 1, "style": [1, 15, 36], "over": [1, 6, 9, 23, 28], "weekend": 1, "It": [1, 2, 3, 4, 6, 9, 10, 19, 21, 22, 24, 25, 26, 27, 28, 29, 30, 38, 42, 43, 44, 46], "doesn": [1, 9, 46], "matter": 1, "trivial": [1, 14], "chanc": 1, "proper": [1, 9, 10, 45], "Be": 1, "awar": 1, "impact": 1, "proport": [1, 43], "its": [1, 2, 3, 4, 5, 6, 7, 9, 10, 13, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 35, 38, 39, 40, 41, 42, 44, 46, 50, 52], "ping": 1, "them": [1, 6, 9, 10, 15, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 36, 42, 44, 55], "necessari": [1, 9, 12], "repeatedli": 1, "start": [1, 2, 3, 5, 7, 9, 10, 12, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36, 43, 44, 56], "part": [1, 6, 7, 13, 28, 36, 44, 45], "For": [1, 3, 4, 5, 6, 7, 9, 10, 12, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 43, 45, 46, 50, 52], "detail": [1, 2, 3, 4, 5, 10, 12, 13, 14, 15, 21, 28, 30, 31, 33, 34, 36, 44, 45, 52], "thoma": 1, "cokela": 1, "info": [1, 10, 12, 15, 28], "tutori": [1, 17], "sphinx": 1, "rest_syntax": 1, "html": 1, "id8": 1, "type": [1, 2, 3, 4, 5, 7, 9, 10, 11, 12, 15, 16, 17, 22, 23, 25, 26, 27, 28, 34, 35, 36, 37, 38, 41, 43, 46, 47, 48, 50, 53], "stabl": 1, "against": 1, "accept": [1, 15, 24, 36, 37, 43, 44, 45, 47, 53], "api": [1, 3, 5, 6, 15, 19, 22, 23, 24, 25, 26, 27, 29], "abi": 1, "chang": [1, 2, 4, 7, 10, 12, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36, 43, 44, 45], "e": [1, 2, 4, 6, 7, 9, 10, 13, 14, 15, 17, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 32, 36, 37, 38, 42, 43, 44, 46, 47, 50, 53, 56], "name": [1, 2, 3, 4, 5, 7, 10, 13, 14, 15, 16, 17, 19, 21, 22, 23, 25, 26, 27, 28, 30, 32, 36, 38, 39, 41, 42, 43, 46, 48, 50], "convent": [1, 28], "master": [1, 4, 17, 28], "semi": 1, "binari": 1, "good": [1, 3, 5, 6], "same": [1, 8, 9, 24, 28, 35, 38, 43, 44, 45, 46], "build": [1, 8, 15, 28, 32, 36], "dai": 1, "ros_distro": [1, 4, 17, 19], "foxi": [1, 7, 15], "galact": [1, 12, 15], "releas": [1, 4, 7, 17, 28], "version": [1, 6, 8, 17, 45], "non": [1, 7, 21, 28, 38, 55], "brake": 1, "distribut": [1, 17, 56], "three": [1, 2, 4, 12, 13, 17, 28, 36, 44, 52], "stage": [1, 9, 21], "current": [1, 6, 12, 13, 15, 16, 44, 45, 50], "futur": [1, 7, 9, 44, 45], "compat": [1, 2, 7, 15, 17], "packag": [1, 2, 3, 5, 12, 15, 28, 31, 32, 33, 34, 36, 37, 38, 41, 45, 46, 47, 48, 50, 52, 53, 56], "direct": [1, 2, 6, 15, 28, 36, 43], "local": [1, 3, 5, 8, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 42], "possibl": [1, 4, 6, 10, 13, 17, 19, 22, 23, 24, 25, 26, 27, 29, 32, 36, 44], "core": [1, 11, 28], "immedi": [1, 10, 19, 21, 22, 24, 25, 26, 27, 28, 29, 30, 46], "depend": [1, 4, 8, 12, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 35, 36, 44, 46, 50], "fail": [1, 24, 28], "expect": [1, 6, 7, 8, 21, 28, 31, 33, 45, 50, 52], "after": [1, 9, 10, 15, 17, 19, 28, 34, 36, 43, 44, 45, 50, 51], "next": [1, 19, 28, 44], "sync": 1, "abl": 1, "potenti": [1, 7, 8, 36, 43], "mid": 1, "stat": 1, "power": [1, 3, 5, 7, 15], "plausibl": 1, "analyt": 1, "robothw": 2, "rigid": 2, "ani": [2, 4, 7, 9, 10, 12, 13, 17, 21, 28, 36, 43, 45], "imposs": 2, "extend": [2, 4, 6, 9, 15, 36], "exist": [2, 4, 6, 7, 8, 9, 10, 12, 13, 15, 19, 22, 23, 24, 25, 26, 27, 28, 29, 36, 45], "addit": [2, 3, 5, 9, 17, 20, 23, 28], "sensor": [2, 4, 6, 12, 14, 15, 17, 22, 27, 28, 32, 35, 55], "actuat": [2, 4, 6, 12, 13, 14, 15, 17, 21], "tool": [2, 3, 5, 6, 7, 8, 28], "without": [2, 3, 4, 5, 7, 10, 14, 15, 17, 21, 30, 36, 43, 44], "combinedrobothardwar": 2, "drawback": [2, 56], "solut": [2, 7, 8], "optim": [2, 10], "combin": [2, 9, 13, 14, 17, 24, 42, 43, 44, 45, 46], "extern": [2, 4, 6, 9, 14, 17, 32, 46], "defin": [2, 3, 5, 6, 10, 14, 15, 17, 28, 32, 36, 38, 41, 42, 43, 44, 45, 46, 48, 50], "system": [2, 3, 4, 5, 6, 7, 8, 12, 13, 15, 16, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 45, 54, 55, 56], "composit": [2, 7], "basic": [2, 3, 4, 5, 6, 7, 15, 17, 23, 36], "physic": [2, 4, 12, 13, 14], "cell": [2, 38], "surround": 2, "describ": [2, 4, 9, 13, 17, 19, 24, 28, 30, 44], "multi": [2, 4, 6, 7, 8, 17, 24], "gripper": [2, 3, 4, 5, 7, 13, 14, 35], "out": [2, 3, 5, 10, 28, 34], "box": [2, 17, 19, 23, 24, 25, 26, 29, 30], "allow": [2, 3, 4, 5, 17, 28, 40, 43, 44, 45, 49], "joint": [2, 4, 7, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 39, 40, 42, 43, 44, 46, 47, 50, 52, 53, 56], "posit": [2, 3, 4, 5, 7, 10, 13, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 34, 35, 37, 42, 43, 44, 45, 46, 47, 50, 53], "veloc": [2, 3, 4, 5, 7, 9, 17, 22, 23, 24, 28, 32, 33, 34, 35, 40, 41, 42, 43, 44, 45, 46, 47, 50, 53], "effort": [2, 3, 5, 17, 28, 35, 37, 40, 42, 43, 45, 46], "hard": [2, 10], "data": [2, 4, 6, 14, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 35, 42, 44], "approach": [2, 9], "doe": [2, 10, 15, 19, 22, 23, 24, 25, 26, 27, 28, 29, 36, 44, 45], "enforc": [2, 24, 28, 43], "string": [2, 10, 14, 17, 36, 39, 40, 41, 42, 43, 46, 48, 50], "ensur": [2, 7, 10, 28, 44], "constant": [2, 17], "hardware_interfac": [2, 3, 4, 5, 12, 14, 15, 17, 22, 25, 26, 27, 28, 32, 34, 35, 36], "In": [2, 3, 4, 5, 6, 7, 9, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 35, 36, 42, 44, 50], "had": 2, "itself": [2, 9], "took": 2, "care": [2, 6, 10, 15, 24, 36, 45], "regist": [2, 3, 5], "resourc": [2, 3, 5, 15, 24], "conflict": [2, 4, 6], "resourcemanag": [2, 9], "take": [2, 6, 9, 15, 21, 24, 34, 36, 42, 44], "state": [2, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 35, 36, 38, 42, 43], "avail": [2, 4, 7, 9, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36, 42, 45], "enabl": [2, 4, 6, 7, 12, 15, 16, 17, 23, 32, 38, 46, 50], "anymor": 2, "controllermanag": [2, 10], "implement": [2, 3, 4, 5, 6, 7, 10, 13, 14, 15, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 36, 39, 44, 45, 46, 50, 51, 52, 56], "systeminterfac": [2, 3, 5, 14, 25, 28], "granular": 2, "sensorinterfac": [2, 22, 26], "actuatorinterfac": [2, 22, 27], "abov": [2, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 35, 44], "choos": [2, 17, 50], "suitabl": [2, 7], "strategi": [2, 17, 44], "decid": 2, "which": [2, 3, 4, 5, 6, 7, 8, 10, 15, 16, 17, 19, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 38, 41, 42, 43, 44, 45, 48, 50, 51], "case": [2, 3, 5, 6, 7, 9, 17, 21, 28, 36, 42, 44, 45, 56], "mayb": [2, 9], "sens": [2, 4, 35, 38], "multipl": [2, 4, 7, 9, 13, 15, 17, 42, 43], "constructor": [2, 15, 28, 36], "initi": [2, 15, 28, 36, 44], "variabl": [2, 15, 28, 36, 43], "need": [2, 3, 4, 5, 6, 7, 9, 13, 15, 17, 19, 22, 23, 24, 25, 26, 27, 28, 29, 35, 36, 44, 46], "commun": [2, 4, 6, 7, 15, 17, 19, 22, 23, 24, 25, 26, 28, 29, 55], "default": [2, 4, 9, 10, 14, 24, 31, 33, 39, 40, 41, 42, 43, 44, 45, 46, 48, 50, 52], "configur": [2, 3, 4, 5, 6, 7, 9, 10, 12, 14, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36, 42, 43, 44, 45, 50], "paramet": [2, 3, 5, 7, 8, 15, 17, 19, 23, 28, 36, 45], "pars": [2, 3, 5, 10, 11, 13], "urdf": [2, 7, 10, 13, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "snippet": 2, "hardwareinfo": [2, 28], "here": [2, 11, 15, 28, 36, 37, 45, 47, 53], "cross": [2, 42], "valu": [2, 4, 6, 13, 14, 15, 17, 19, 20, 21, 23, 25, 26, 28, 30, 36, 41, 42, 43, 45, 48, 50], "export_": 2, "_interfac": [2, 15], "joint_a2": 2, "extract": [2, 34, 51], "sensibl": 2, "stop": [2, 7, 9, 10, 12, 16, 19, 23, 24, 28, 34, 43, 51], "usual": [2, 4, 10, 14, 15, 28, 36], "includ": [2, 3, 5, 6, 8, 10, 12, 15, 16, 28, 36, 45, 55], "command": [2, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 39, 40, 43, 44, 47, 49, 52, 53, 56], "safe": [2, 28, 34, 36, 45, 51], "interrupt": [2, 10], "stream": [2, 7], "write": [2, 4, 7, 9, 10, 11, 21, 22, 23, 27, 35, 46], "exchang": [2, 6, 19, 22, 23, 24, 25, 26, 27, 29, 56], "equival": [2, 28], "forget": [2, 4, 17, 45], "pluginlib_export_class": [2, 15, 17, 28, 36], "macro": [2, 4, 15, 17, 28, 36], "end": [2, 4, 12, 15, 28, 36, 43, 55], "cpp": [2, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36], "file": [2, 3, 4, 5, 6, 7, 10, 14, 15, 17, 32, 34, 36, 37, 45, 47, 53], "creat": [2, 3, 4, 5, 7, 10, 14, 15, 17, 28, 36], "xml": [2, 3, 5, 12, 15, 28, 36], "librari": [2, 4, 15, 16, 17, 31, 33, 35, 36, 46, 50, 52], "pluginlib": [2, 3, 4, 5, 10, 15, 28, 36, 46], "exampl": [2, 3, 4, 5, 6, 7, 9, 10, 14, 16, 23, 32, 37, 38, 42, 45, 46, 47, 53, 56], "rrbotsystempositiononlyhardwar": [2, 4, 13, 16, 19, 21, 26], "excel": 2, "jointtrajectorycontrol": [2, 3, 5, 16, 19, 32, 45], "real": [2, 6, 7, 10, 14, 23, 36, 42, 43, 56], "critic": [2, 6], "mark": [2, 21], "controllerinterfac": [2, 4, 9, 16, 28, 36], "member": [2, 15, 28, 36, 44], "init": 2, "call": [2, 3, 4, 5, 9, 15, 23, 28, 36], "lifecycl": [2, 4, 7, 10, 12, 15, 28, 35], "declar": [2, 15, 28, 36], "state_interface_configur": [2, 28, 36], "command_interface_configur": [2, 28, 36], "design": [2, 4, 6, 7, 9, 28, 56], "updat": [2, 4, 9, 10, 17, 28, 35, 36, 45, 50], "manag": [2, 3, 5, 6, 7, 11, 12, 15, 16, 17, 28, 36, 45, 56], "option": [2, 3, 5, 10, 12, 14, 15, 16, 19, 24, 35, 36, 38, 42, 45, 46, 50], "on_configur": [2, 15, 28, 36], "on_activ": [2, 12, 15, 28, 36], "on_deactiv": [2, 12, 15, 28, 36], "deactiv": [2, 4, 16, 19, 43], "final": [2, 7, 12, 28], "joint_trajectory_plugin": 2, "integr": [3, 4, 5, 6, 7, 14, 17, 21, 23, 28, 43, 44, 45, 56], "architectur": [3, 5, 6, 7, 8], "gazebo": [3, 5, 6, 17, 19, 30, 54], "classic": [3, 17, 30, 54], "provid": [3, 4, 5, 6, 7, 9, 10, 13, 14, 15, 17, 19, 21, 24, 25, 26, 27, 28, 29, 30, 32, 36, 42, 43, 44, 45, 50, 56], "instanti": [3, 5, 10], "connect": [3, 4, 5, 14, 17, 25, 28], "model": [3, 5, 19, 28], "cd": [3, 4, 5, 8, 17, 28], "docker": [3, 5, 8, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30], "gui": [3, 5, 17, 19, 21, 22, 24, 25, 26, 27, 29, 30, 49], "properli": [3, 5, 9, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], "rm": [3, 4, 5, 17, 19, 30], "net": [3, 5, 7, 17, 19, 30], "host": [3, 5, 17, 19, 30, 55], "ros2": [3, 4, 5, 7, 10, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36], "launch": [3, 4, 5, 10, 14, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "cart_example_posit": [3, 5], "py": [3, 5, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], "fals": [3, 5, 14, 17, 19, 30, 34, 40, 42, 43, 45, 46, 50], "machin": [3, 4, 5, 6, 17, 30], "client": [3, 5, 30, 45], "gzclient": [3, 30], "rocker": [3, 5], "go": [3, 5, 7, 10, 15, 28, 36], "imag": [3, 5, 10, 30], "inject": [3, 5, 7, 8], "nvidia": [3, 5], "And": 3, "user": [3, 5, 6, 10, 17, 28, 44], "id": [3, 5, 16, 19, 22, 23, 24, 25, 26, 27, 29], "specif": [3, 5, 6, 9, 10, 12, 13, 28, 30, 39, 42, 44, 45], "cleaner": [3, 5], "mount": [3, 5], "permiss": [3, 5, 10], "instal": [3, 5, 8, 10, 15, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36], "instruct": [3, 5, 8, 23, 28, 30], "x11": [3, 5], "latest": [3, 4, 5, 8], "move": [3, 5, 17, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 40], "cart": [3, 5], "rail": [3, 5], "exec": [3, 5, 19], "bash": [3, 4, 5, 8, 15, 17, 19, 28, 36], "home": [3, 5], "ros2_w": [3, 4, 5, 17], "example_posit": [3, 5], "element": [3, 5, 28], "access": [3, 4, 5, 7, 10, 14, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36, 42], "interfac": [3, 5, 6, 7, 9, 10, 11, 12, 14, 15, 17, 19, 21, 22, 23, 25, 26, 27, 30, 31, 33, 35, 36, 38, 41, 43, 44, 48, 52, 54, 55, 56], "gazebosystem": 3, "hardwar": [3, 5, 7, 8, 9, 11, 14, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 34, 35, 36, 43, 46, 51, 56], "slider_to_cart": [3, 5, 37, 47, 53], "command_interfac": [3, 4, 5, 13, 21, 28, 32, 43, 45, 46], "param": [3, 4, 5, 10, 13, 14, 23, 28], "min": [3, 4, 5, 13, 28], "1000": [3, 5, 28], "max": [3, 4, 5, 13, 28, 40], "state_interfac": [3, 4, 5, 13, 28, 32, 43, 45], "initial_valu": [3, 5, 28], "mimick": [3, 5, 14], "manual": [3, 4, 5, 6, 10, 15, 17, 19, 24, 25, 26, 27, 29, 30, 36, 56], "multipli": [3, 5, 14], "definit": [3, 4, 5, 10, 15, 28, 32, 34, 35, 36, 38, 43], "left_finger_joint": [3, 5], "prismat": [3, 5], "right_finger_joint": [3, 5], "axi": [3, 5, 6, 28, 31, 33, 34, 38, 52], "xyz": [3, 5, 28], "rpy": [3, 5, 28], "1415926535": [3, 5], "parent": [3, 5, 15, 28, 36], "base": [3, 4, 5, 7, 12, 15, 16, 17, 22, 23, 27, 28, 34, 36, 39, 50, 51, 54], "child": [3, 5, 13, 28], "finger_left": [3, 5], "lower": [3, 5, 28], "upper": [3, 5, 28], "actual": [3, 5, 9], "load": [3, 4, 5, 10, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 35, 36], "appropri": [3, 5, 6, 44], "By": [3, 5, 10, 28, 42, 44], "though": [3, 5, 10, 21], "extens": [3, 5], "via": [3, 4, 5, 17, 19, 25, 26, 28, 30, 45], "between": [3, 4, 5, 6, 12, 13, 17, 28, 31, 33, 42, 43, 44, 45, 46, 52], "filenam": [3, 5, 28], "libgazebo_ros2_control": 3, "so": [3, 4, 5, 9, 10, 15, 28, 32, 36, 45], "robot_param": [3, 5], "robot_descript": [3, 5, 10, 19, 28], "robot_param_nod": [3, 5], "robot_state_publish": [3, 5, 42], "config": [3, 5, 17], "cartpole_control": [3, 5], "yaml": [3, 4, 5, 6, 8, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 45], "locat": [3, 8, 28, 32], "server": [3, 40, 45], "node": [3, 4, 5, 10, 12, 14, 16, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36], "attempt": [3, 5, 10, 45], "get": [3, 5, 7, 8, 9, 10, 12, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 44, 46, 56], "most": [3, 5, 6, 15, 17, 28, 36], "least": [3, 5, 13, 15, 36, 45], "jointstateinterfac": [3, 5], "effortjointinterfac": [3, 5], "velocityjointinterfac": [3, 5], "complex": [3, 4, 5, 6, 7, 8, 9], "mechan": [3, 5, 9, 45], "nonlinear": [3, 5], "spring": [3, 5], "linkag": [3, 5, 19, 21, 29], "etc": [3, 5, 10, 24, 28, 56], "These": [3, 5, 17, 28], "inherit": [3, 5, 10, 28], "gazebosysteminterfac": 3, "level": [3, 5, 6, 7, 10, 21, 22, 27, 37, 44, 47, 53], "properti": [3, 5, 28], "sub": [3, 5], "class": [3, 4, 5, 7, 10, 12, 15, 16, 28, 36, 39, 44], "specifi": [3, 5, 10, 15, 17, 28, 35, 36, 43, 44, 45, 46], "insid": [3, 5, 14, 17, 19], "publish": [3, 5, 6, 9, 13, 17, 20, 28, 32, 35, 38, 41, 42, 44, 48, 51, 56], "stateinterfac": [3, 5, 28], "topic": [3, 5, 6, 7, 9, 13, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 35, 45, 46, 54], "sensor_msg": [3, 5, 41, 48], "msg": [3, 5, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 34, 37, 38, 39, 41, 44, 45, 46, 47, 48, 50, 53], "jointstat": [3, 5], "joint_state_control": [3, 5, 16], "ros__paramet": [3, 5, 37, 45, 47, 53], "jointstatecontrol": [3, 5, 16], "action": [3, 5, 9, 43], "cart_pole_control": [3, 5], "follow_joint_trajectori": [3, 5, 45], "followjointtrajectori": [3, 5, 43, 45], "joint_trajectory_control": [3, 5, 6, 16, 19, 35, 49], "write_op_mod": [3, 5], "contain": [3, 8, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 37, 43, 44, 46, 47, 50, 53], "content": [3, 15, 28, 36], "There": [3, 4, 5, 10, 12, 15, 17, 22, 25, 26, 27, 36, 44, 45], "meter": [3, 5, 28], "cart_example_veloc": [3, 5], "cart_example_effort": [3, 5], "diff_driv": 3, "tricycle_dr": 3, "world": [3, 5, 10, 14, 28], "example_veloc": [3, 5], "example_effort": [3, 5], "example_diff_dr": [3, 5], "example_tricycle_dr": [3, 5], "parallel": [3, 4, 5, 13, 14], "gripper_mimic_joint_exampl": [3, 5], "send": [3, 5, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 44, 45, 46], "example_gripp": [3, 5], "roll": [4, 8, 17, 28], "want": [4, 8, 9, 10, 17], "download": [4, 17], "mkdir": [4, 8, 17], "p": [4, 8, 10, 17, 43], "src": [4, 8, 15, 17, 19, 28, 30, 32, 36], "wget": 4, "raw": 4, "githubusercont": 4, "com": [4, 6, 8, 17, 28], "org": [4, 6, 31, 33, 52], "ros_control": [4, 6, 7, 56], "vc": [4, 8, 17], "import": [4, 8, 15, 17, 28, 36, 43], "rosdep": [4, 17], "rosdistro": [4, 17], "sudo": [4, 8, 10, 17], "apt": [4, 8, 10, 17], "path": [4, 7, 17, 28, 45], "ignor": [4, 10, 17, 34, 43, 50, 51], "r": [4, 17, 29], "y": [4, 17, 23, 25, 26, 32, 38, 41], "everyth": [4, 15, 17, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 36], "opt": [4, 8, 17, 19], "setup": [4, 8, 14, 15, 17, 19, 23, 28, 30, 36, 44, 46], "sh": [4, 17, 19, 30], "colcon": [4, 8, 15, 17, 28, 36], "symlink": [4, 8, 17, 28], "folder": [4, 7, 15, 17, 19, 20, 23, 31, 32, 33, 36, 50, 52], "found": [4, 10, 11, 15, 19, 20, 23, 32, 34, 36, 39, 45, 56], "github": [4, 6, 8, 11, 17, 28, 35, 54, 55, 56], "figur": [4, 44], "uml": 4, "diagram": [4, 16], "intern": [4, 6, 9, 13, 15, 19, 21, 22, 23, 24, 25, 26, 27, 29, 32, 44, 45], "cm": [4, 10], "abstract": [4, 7, 12, 28], "side": [4, 6, 7], "entri": [4, 36], "point": [4, 28, 36, 43, 44, 45, 46, 56], "servic": [4, 6, 10, 12, 28, 35], "executor": [4, 10], "custom": [4, 13, 14, 17, 22, 23, 38, 42, 54], "howev": [4, 6, 9, 10, 17, 21, 28], "recommend": [4, 7, 8, 15, 46], "ros2_control_nod": [4, 24, 28], "controller_manag": [4, 5, 6, 10, 16, 24, 35, 36, 37, 45, 47, 53], "assum": [4, 9], "On": [4, 7, 8, 28], "hand": [4, 28, 55], "unload": [4, 10, 16], "match": [4, 17, 44], "report": [4, 6, 42, 56], "error": [4, 6, 10, 15, 21, 24, 28, 36, 42, 43, 45, 46], "execut": [4, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 36, 40, 43, 44, 45, 52], "loop": [4, 7, 10, 14, 19, 24, 25, 26, 27, 28, 29, 30, 36, 42, 43, 45, 50], "output": [4, 6, 7, 13, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 38], "driver": [4, 7, 17, 28, 55], "reus": [4, 7, 9], "flexibl": 4, "motor": [4, 9, 55], "encod": [4, 28], "theori": [4, 56], "compar": [4, 6, 7], "refer": [4, 9, 21, 28, 55], "measur": [4, 14, 22, 32, 38, 42, 43, 55], "calcul": [4, 28, 32, 44, 50], "input": [4, 6, 7, 8, 9, 13, 20, 21, 28, 32, 34, 37, 39, 43, 44, 47, 50, 51, 53], "object": [4, 28], "deriv": [4, 43, 44, 46], "controller_interfac": [4, 16, 28, 32, 36, 38, 41, 48], "export": [4, 9, 10, 15, 17, 28, 32, 36], "plugin": [4, 8, 10, 12, 13, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 36, 46, 49], "forwardcommandcontrol": [4, 19, 20, 21, 22, 24, 25, 26, 27, 29, 30], "lifecyclenod": 4, "document": [4, 6, 7, 13, 14, 15, 17, 23, 34, 35, 44, 45], "interact": [4, 7, 10, 16, 20, 28, 30], "srv": [4, 45, 46], "controller_manager_msg": 4, "while": [4, 6, 7, 28, 44], "directli": [4, 19, 21, 30, 46, 56], "line": [4, 11, 12, 15, 19, 28, 36, 42, 44], "friendli": 4, "cli": [4, 10, 11, 16, 19, 20, 23, 24, 25, 26, 27, 29, 30], "auto": [4, 10], "complet": [4, 12, 21, 28, 44], "rang": [4, 13, 35], "common": [4, 6, 17, 42, 56], "capabl": [4, 6], "realiz": [4, 7, 44, 45], "repres": [4, 12, 28, 34, 35, 44], "dynam": [4, 15, 28, 36, 46], "dof": [4, 13, 17, 28, 40, 46], "differ": [4, 6, 7, 13, 15, 17, 19, 20, 23, 24, 28, 37, 38, 42, 44, 46, 47, 50, 53], "transmiss": [4, 17], "humanoid": 4, "logic": 4, "channel": [4, 55], "kuka": [4, 19, 24, 25, 26, 55], "rsi": [4, 19, 25, 26, 55], "relat": [4, 6, 7], "forc": [4, 7, 13, 16, 25, 26, 32, 35, 55], "torqu": [4, 13, 25, 26, 32, 35], "simpl": [4, 6, 7, 9, 15, 17, 19, 21, 23, 28, 29, 36, 40], "valv": [4, 13], "mandatori": [4, 10, 38, 43], "dc": 4, "arduino": [4, 22, 27], "board": 4, "modular": [4, 7, 8, 17, 28], "independ": [4, 7, 10, 26], "explan": [4, 10, 15], "given": [4, 10, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 37, 43, 44, 45, 47, 53], "through": [4, 6, 7, 9, 10, 15, 16, 17, 21, 28, 36, 45, 46, 56], "tag": [4, 10, 13, 15, 17, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 30, 36, 56], "chosen": [4, 13], "structur": [4, 6, 9, 10, 15, 28, 34, 36, 43, 44], "track": [4, 31, 52, 56], "togeth": [4, 9, 13, 23, 25, 50], "xacro": [4, 10, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], "hereund": 4, "rrbot": [4, 13, 16, 17, 20, 22, 24, 25, 26, 27, 29], "effector": [4, 55], "site": 4, "rrbotsystempositiononli": [4, 26], "ros2_control_demo_hardwar": [4, 13, 16], "example_param_write_for_sec": 4, "example_param_read_for_sec": [4, 13], "joint1": [4, 13, 14, 16, 19, 20, 21, 22, 24, 25, 26, 27, 29, 30, 45], "joint2": [4, 13, 16, 19, 20, 21, 22, 24, 25, 26, 27, 29, 30, 45], "rrbotforcetorquesensor1d": 4, "forcetorquesensor1dhardwar": 4, "tcp_fts_sensor": [4, 13, 25, 26], "frame_id": [4, 13, 25, 26, 38, 41, 48, 50], "rrbot_tcp": 4, "min_forc": 4, "max_forc": 4, "rrbotgripp": 4, "positionactuatorhardwar": 4, "gripper_joint": 4, "instead": [4, 14, 23, 28, 30, 43, 46], "pure": 4, "stack": [4, 7, 56], "could": [4, 7, 9, 17, 24, 36, 42, 45], "altern": [4, 8, 10, 19, 45], "script": [4, 6, 15, 36], "skeleton": 4, "sim": [5, 16, 54], "dockerfil": [5, 17], "Then": [5, 9, 17, 28, 30, 44], "ign": 5, "meet": [5, 56], "prerequisit": 5, "along": 5, "gazebosimsystem": 5, "libgz_ros2_control": 5, "gazebosimros2controlplugin": 5, "gazebosimsysteminterfac": 5, "controller_manager_prefix_node_nam": 5, "diff_drive_exampl": 5, "tricycle_drive_exampl": 5, "about": [6, 14, 15, 24, 34, 41, 42, 45, 56], "gener": [6, 7, 13, 15, 16, 22, 23, 24, 25, 26, 27, 28, 35, 36, 45, 50, 56], "task": [6, 7, 34], "envis": 6, "simul": [6, 14, 16, 17, 19, 21, 23, 25, 26, 28], "ignit": 6, "showcas": [6, 7, 8], "grace": 6, "degrad": 6, "roadmap": [6, 17, 56], "place": [6, 8, 36], "draft": 6, "gpio": [6, 17, 28], "mode": [6, 9, 15, 21, 24, 32, 43, 44, 46, 50], "switch": [6, 16, 17, 19, 24], "movement": 6, "safeti": [6, 28], "skill": 6, "prefer": 6, "c": [6, 10, 13, 15, 16, 19, 28], "familiar": [6, 56], "mentor": 6, "\u0161togl": [6, 7], "size": [6, 48], "350": 6, "hour": 6, "difficulti": 6, "medium": 6, "focus": [6, 7, 9], "although": [6, 9, 12, 13, 45], "easi": [6, 10], "therefor": [6, 9, 10, 17, 36, 42, 43, 45], "often": [6, 14, 23, 36, 42], "orchestr": 6, "purpos": [6, 19, 21, 22, 24, 25, 26, 27, 28, 29, 30, 46], "conductor": 6, "scenario": [6, 44], "moment": [6, 45], "right": [6, 17], "replac": [6, 12, 35, 45], "high": [6, 10, 44], "moveit2": [6, 7, 35, 55], "simplecontrollermanag": 6, "goal": [6, 7, 13, 19, 24, 25, 26, 27, 29, 30, 40, 43, 45, 56], "form": [6, 17], "behavior": [6, 14, 28, 44], "benchmark": 6, "statu": [6, 9, 12, 16, 19, 43], "format": [6, 28, 32, 42, 45], "preset": 6, "modul": [6, 21], "reli": 6, "doubl": [6, 14, 19, 28, 31, 33, 40, 43, 46, 48, 50, 52], "desir": [6, 43, 45], "both": [6, 7, 21, 28, 29, 42, 43, 44, 45], "improv": [6, 10], "readabl": [6, 28], "earlier": 6, "concept": [6, 7, 8, 9, 14, 17, 19], "introduc": [6, 7, 9, 19, 28], "essenti": [6, 19], "group": [6, 9, 10, 13, 45, 56], "instanc": [6, 10, 21, 42], "imu": [6, 13, 35], "typic": [6, 13, 23, 42, 43], "acceleromet": 6, "gyroscop": 6, "compass": 6, "Such": [6, 21], "struct": 6, "low": [6, 7, 10], "profil": 6, "relev": [6, 43, 46, 50, 56], "addition": [6, 28, 31, 33, 52, 56], "few": [6, 7, 35], "175": 6, "rewrit": [6, 56], "rich": 6, "wa": [6, 8, 15, 19, 23, 24, 28, 36, 44], "motiv": 6, "adopt": 6, "port": [6, 12, 13], "quit": 6, "miss": [6, 7, 8, 42, 44, 45], "diff_drive_control": [6, 9, 16, 23], "consist": [6, 45, 56], "onc": [6, 7, 8, 19, 23, 24, 25, 26, 28, 29, 35], "identifi": [6, 28], "much": [6, 19, 22, 23, 24, 25, 26, 27, 29, 36, 45], "303": 6, "304": 6, "stretch": 6, "81": 6, "302": 6, "unit": 6, "gmock": 6, "cc": [7, 44, 45], "BY": [7, 44, 45], "licens": [7, 44, 45], "author": [7, 9], "either": [7, 19, 24, 25, 26, 27, 29, 30, 44], "down": [7, 28], "below": [7, 10, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 43, 44, 45], "compani": 7, "my": 7, "company_nam": 7, "alreadi": [7, 8, 15, 16, 17, 19, 21, 28, 30, 35, 36, 45], "know": [7, 8, 13], "act": [7, 8], "kernel": [7, 8, 10], "struggl": [7, 8], "cover": [7, 8], "product": [7, 8, 42], "variou": [7, 8, 19, 29], "littl": [7, 8, 10], "run": [7, 8, 9, 10, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 35, 44, 50], "practic": [7, 8], "overview": [7, 8], "control": [7, 8, 11, 12, 13, 14, 15, 16, 17, 31, 33, 38, 41, 42, 43, 44, 48, 51, 52, 55, 56], "chain": [7, 8, 11, 16, 17, 28, 32, 43, 46, 50], "debug": [7, 8, 14], "top": [7, 8], "involv": [7, 8], "bring": [7, 8, 17], "page": [7, 54, 55], "locu": 7, "stogl": [7, 8], "consult": 7, "tricycl": [7, 35, 51], "event": 7, "pixel": 7, "prefac": 7, "introduct": 7, "plapp": 7, "agnost": [7, 28], "share": [7, 15, 28, 30, 36, 50], "well": [7, 10, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 45], "perform": [7, 10, 28], "heavi": 7, "practition": 7, "guid": [7, 15, 36], "virtual": [7, 9, 33], "talk": 7, "delv": 7, "deeper": 7, "what": [7, 19, 28], "explicit": [7, 10, 28, 43], "emerg": 7, "handler": 7, "mock": [7, 11, 15], "usag": [7, 10, 13, 16, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29], "openli": 7, "record": 7, "fiveai": 7, "ltd": 7, "best": [7, 10, 36], "focu": [7, 9], "becom": [7, 21], "util": 7, "3rd": 7, "parti": 7, "nav2": [7, 35], "tip": [7, 28], "hot": 7, "shown": [7, 28, 44], "furthermor": [7, 23], "offer": [7, 10, 15, 28], "expos": [7, 17, 21], "problem": [7, 56], "manipul": [7, 17, 19, 21, 28, 29, 43], "plan": [7, 56], "autonom": 7, "navig": [7, 8], "ideal": [7, 14], "made": [7, 12], "mobil": [7, 17, 23, 34, 50, 51], "arm": [7, 19, 21, 29], "extra": [7, 28, 42], "readi": [7, 8, 15, 17, 21, 35, 36], "studi": 7, "ur": 7, "With": [7, 28, 30, 45], "moveit": [7, 14], "ingredi": 7, "scale": [7, 43], "factor": 7, "teach": 7, "pendant": 7, "influenc": 7, "picknik": 7, "inc": 7, "lovro": 7, "ivanov": 7, "zelenak": 7, "rune": 7, "s\u00f8e": 7, "knudsen": 7, "onlin": [7, 15, 36], "trajectori": [7, 19, 28, 35, 43, 46, 56], "admitt": [7, 35], "One": [7, 9], "reason": [7, 9, 10, 28], "upgrad": 7, "ros1": [7, 17], "better": 7, "realtim": [7, 10, 28, 34, 45, 51, 56], "contact": 7, "insert": 7, "singl": [7, 25, 40], "waypoint": [7, 44, 45], "mani": [7, 28, 35, 36], "teleoper": 7, "kinemat": [7, 9, 17, 23, 28, 31, 32, 33, 50, 52], "acceler": [7, 17, 24, 28, 32, 34, 41, 43, 44, 45, 46, 51], "jerk": [7, 34, 51], "obei": [7, 28], "demo": [7, 13], "booth": 7, "zeleank": 7, "unifi": 7, "life": [7, 28], "cycl": [7, 28, 35], "_control": [7, 17], "wild": 7, "materi": 7, "quick": [7, 12], "layer": 7, "aka": 7, "systemcompon": 7, "forward": [7, 14, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 35, 43, 45, 46, 56], "done": [7, 8, 9, 15, 19, 22, 23, 24, 25, 26, 27, 28, 29, 35, 36], "look": [7, 23], "modifi": 7, "simpli": [7, 10, 19, 44, 45], "edit": 7, "collect": [7, 37, 47, 53], "semant": [7, 13, 32, 38, 41, 48], "monolit": 7, "controlko": 7, "imperi": 8, "octob": 8, "present": [8, 45], "ubuntu": [8, 10], "engin": [8, 15, 36], "compos": 8, "grab": 8, "roscon2023_workshop": 8, "now": [8, 9, 10, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36, 44], "workspac": [8, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36], "w": 8, "git": [8, 17, 28], "clone": [8, 17, 28], "roscon2023_control_workshop": 8, "ci": 8, "compil": [8, 15, 28, 30, 36], "termin": [8, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], "park": 8, "f": [8, 17], "dev": 8, "tmux": 8, "ctrl": [8, 19], "b": [8, 17, 28], "arrow": 8, "kei": 8, "brought": 8, "propos": [9, 56], "minim": [9, 56], "viabl": [9, 28], "serial": [9, 28], "tri": [9, 43], "clariti": 9, "arbitrari": [9, 28, 45], "order": [9, 28, 46], "nevertheless": [9, 46], "convinc": 9, "would": [9, 42, 46], "unnecessari": 9, "long": 9, "term": [9, 46, 56], "clearer": 9, "let": [9, 17, 19, 21, 22, 23, 24, 25, 26, 27, 29], "yet": [9, 10, 17, 21, 34, 44, 45], "controllers_chain": 9, "doc": [9, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 56], "position_track": 9, "pid": [9, 35, 43, 44, 45, 56], "imagin": 9, "flexibli": 9, "preced": 9, "step": [9, 15, 17, 36, 44, 56], "At": [9, 15, 21, 36], "attach": 9, "disabl": [9, 14, 50], "subscrib": [9, 20, 21, 28], "differenti": [9, 17, 23, 33, 34, 35, 56], "interfaceconfigur": [9, 28], "input_interface_configur": 9, "const": [9, 12, 28], "anoth": [9, 10, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 45], "simplic": [9, 28], "try": [9, 28], "exclus": [9, 28], "rather": [9, 17, 44], "void": 9, "set_chained_mod": 9, "bool": [9, 40, 43, 46, 50], "flag": [9, 15, 36, 43], "on_set_chained_mod": 9, "pid_refer": 9, "controller_nam": [9, 10, 16, 32, 36, 45, 46, 50], "v_x": 9, "v_y": 9, "w_z": 9, "cmd_vel": [9, 34], "cmd_vel_unstamp": [9, 23], "Its": [9, 56], "continu": [9, 43, 44, 45], "chainabl": [9, 17, 21, 34, 45], "ownership": 9, "process": [9, 15, 28, 36, 44], "claim": [9, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], "vector": [9, 21, 28, 36], "invers": [9, 28], "rule": [9, 10, 15, 36], "think": [9, 17], "break": [9, 14], "middl": [9, 33], "unavail": [9, 21], "unclaim": [9, 16, 21, 24], "inact": [9, 10, 16, 19, 24, 28, 35], "feasibl": 9, "interface_configuration_typ": 9, "jitter": 10, "thread": [10, 28], "sched_fifo": 10, "prioriti": 10, "addgroup": 10, "usermod": 10, "whoami": 10, "afterward": 10, "secur": 10, "conf": [10, 28], "soft": 10, "rtprio": 10, "memlock": 10, "102400": 10, "appli": [10, 16, 28, 34, 45], "log": 10, "again": [10, 12, 19, 23, 28], "normal": [10, 28, 43], "linux": 10, "comput": [10, 17, 34, 50, 51], "throughput": 10, "suit": 10, "lt": 10, "beta": 10, "rt": 10, "amd64": 10, "debian": 10, "bullsey": 10, "lowlat": 10, "come": [10, 17, 45], "lot": [10, 19, 21, 22, 23, 24, 25, 26, 27, 29], "being": 10, "realli": 10, "hardware_components_initial_st": 10, "map": [10, 14, 42, 45], "attribut": [10, 28], "full": [10, 15, 17, 36], "unconfigur": [10, 12, 19, 28], "arm1": 10, "arm2": 10, "base3": 10, "empti": [10, 36, 41, 45, 46, 50], "update_r": [10, 35, 37, 47, 53], "integ": [10, 35], "frequenc": [10, 35], "startup": 10, "h": [10, 15, 16, 36], "param_fil": 10, "n": 10, "namespac": [10, 15, 28, 35, 36, 42], "controller_typ": 10, "timeout": [10, 16, 40, 43, 50, 51], "controller_manager_timeout": 10, "argument": [10, 15, 16, 19, 22, 23, 24, 25, 26, 27, 29], "exit": [10, 16], "leav": 10, "kill": [10, 16, 28], "wait": [10, 16, 27, 43], "until": [10, 28, 43, 44], "mai": [10, 12, 25, 35, 37, 47, 53], "taken": [10, 50], "becaus": [10, 13, 19, 21, 22, 23, 24, 25, 26, 27, 29, 44], "rclcpp": [10, 15, 28, 36], "than": [10, 40, 43, 45, 46, 50], "global": 10, "remap": 10, "forcibli": 10, "lead": [10, 45], "duplic": [10, 46, 50], "occur": [10, 28], "whether": 10, "sibl": 10, "hierarchi": 10, "workaround": 10, "nodeopt": 10, "pass": [10, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29], "caus": [10, 44, 45, 50], "get_cm_node_opt": 10, "arg": 10, "_target_node_nam": 10, "__node": 10, "dst_node_nam": 10, "std": [10, 28, 43], "make_shar": 10, "some_optional_namespac": 10, "simplest": 10, "switch_control": [10, 19], "broadcast": [10, 13, 14, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 42], "achiev": [10, 28, 37, 47, 53], "return": [10, 12, 15, 19, 28, 36, 40, 42, 44, 45], "NOT": 10, "FOR": 10, "detect": 10, "listen": [10, 43], "doxygen": [11, 15], "cascad": 11, "return_typ": [12, 28, 36], "on_error": [12, 15, 28], "previous_st": [12, 28], "success": [12, 15, 28, 36, 40, 45], "callbackreturn": [12, 15, 28], "failur": 12, "recov": 12, "reload": [12, 16], "substanti": 12, "renam": 12, "on_init": [12, 15, 28, 36], "baseinterfac": 12, "remov": 12, "base_interfac": 12, "hpp": [12, 15, 17, 28, 32, 36], "hardware_interface_status_valu": 12, "rclcpp_lifecycl": [12, 15, 28, 36], "strictli": [12, 13], "status_": 12, "in_deactiv": 12, "undefin": 12, "refern": 12, "symbol": 12, "node_interfac": [12, 28], "lifecyclenodeinterfac": [12, 15, 28], "rclcpp_lifecyl": 12, "cmakelist": [12, 15, 28, 36], "txt": [12, 15, 28, 36], "devic": [13, 55], "associ": 13, "joint_state_broadcast": [13, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "coupl": 13, "ship": 13, "cannot": [13, 21, 28, 45], "keyword": 13, "digit": 13, "signal": 13, "electr": 13, "analog": 13, "within": [13, 19, 45], "vacuum": [13, 20], "flang": 13, "off": 13, "rrbotsystemmutiplegpio": 13, "example_param_hw_start_duration_sec": 13, "example_param_hw_stop_duration_sec": 13, "example_param_hw_slowdown": 13, "flange_digital_io": 13, "digital_output1": 13, "digital_output2": 13, "digital_input1": 13, "digital_input2": 13, "flange_analog_io": [13, 20], "analog_output1": [13, 20], "analog_input1": [13, 20], "analog_input2": [13, 20], "flange_vacuum": [13, 20], "suction": 13, "grasp": 13, "multimod": 13, "multimodalgripp": 13, "parallel_fing": 13, "temperatur": [13, 17], "feedback": [13, 14, 22, 42, 43, 45, 46, 50, 51], "adjust": [13, 16, 19, 28], "calibr": 13, "2d": [13, 25, 26], "ft": [13, 25, 26, 38], "choic": [13, 50], "matric": 13, "rrbotforcetorquesensor2d": 13, "forcetorquesensor2dhardwar": 13, "fx": 13, "tz": 13, "kuka_tcp": 13, "fx_rang": 13, "tz_rang": 13, "temp_feedback": 13, "calibration_matrix_nr": 13, "mirror": 14, "correspond": [14, 15, 28, 36, 50, 56], "offlin": 14, "advantag": 14, "pipe": 14, "even": [14, 21, 45], "boost": 14, "mimic": 14, "offset": [14, 42, 43], "fake": 14, "disable_command": 14, "boolean": [14, 35, 42, 43], "erron": [14, 28], "noth": 14, "suddenli": 14, "Or": [14, 19, 24, 25, 26, 27, 29, 30], "mock_sensor_command": 14, "position_state_following_offset": 14, "custom_interface_with_following_offset": 14, "prepar": [15, 24, 36], "ament_cmak": [15, 36], "easiest": [15, 36], "search": [15, 36], "recent": [15, 36], "pkg": [15, 36], "package_nam": [15, 36], "robot_hardware_interface_nam": 15, "visibility_control": [15, 36], "window": [15, 36], "copi": [15, 36], "prefix": [15, 32, 36, 38, 41, 48], "guard": [15, 36], "ifndef": [15, 36], "preprocessor": [15, 36], "friend": [15, 36], "interface_typ": [15, 36], "uniqu": [15, 28, 36], "written": [15, 22, 27, 28, 36], "snake_cas": [15, 36], "interfacetyp": 15, "hardwareinterfacenam": 15, "public": [15, 28, 36], "on_cleanup": [15, 28], "on_shutdown": [15, 28], "overrid": [15, 28, 36, 37, 45, 47, 53], "export_state_interfac": [15, 28], "export_command_interfac": [15, 28], "prepare_command_mode_switch": 15, "perform_command_mode_switch": 15, "further": [15, 36], "exact": [15, 36], "simplifi": [15, 28, 36, 56], "valid": [15, 17, 46, 48], "fine": [15, 23, 36], "otherwis": [15, 17, 36, 42, 43], "opposit": [15, 36], "remind": 15, "joint_nam": [15, 32, 36, 43], "shutdown": [15, 28], "gracefulli": 15, "store": [15, 36], "close": [15, 36], "class_list_macro": [15, 28, 36], "my_hardware_interface_packag": 15, "robothardwareinterfacenam": 15, "second": [15, 16, 19, 21, 24, 25, 26, 27, 28, 29, 30, 36, 44, 46, 56], "visibl": [15, 36], "mock_compon": [15, 23], "bottom": [15, 28, 36], "test_load_": [15, 36], "load_generic_system_2dof": 15, "test_generic_system": 15, "find_packag": [15, 36], "directori": [15, 36], "ament": [15, 36], "cmake": 15, "pluginlib_export_plugin_description_fil": [15, 28, 36], "ament_cmake_gmock": [15, 36], "ament_add_gmock": [15, 36], "ament_export_librari": [15, 36], "ament_packag": [15, 36], "test_depend": [15, 36], "rememb": [15, 36], "root": [15, 36], "enjoi": [15, 36], "great": [15, 36], "templat": [15, 17, 28, 36], "shell": [15, 36], "onward": 15, "spin": 16, "spin_tim": 16, "hidden": 16, "discoveri": 16, "daemon": 16, "test_controller_nam": 16, "test_control": 16, "diffdrivecontrol": [16, 23], "verbos": 16, "label": [16, 22, 23, 25, 26, 27, 44], "ctrl1": 16, "ctrl2": 16, "strict": 16, "asap": 16, "switch_timeout": 16, "tmp": 16, "controller_diagram": 16, "gv": 16, "pdf": [16, 28], "demonstr": [17, 19, 21, 23, 24, 29, 30], "prove": 17, "checkout": 17, "roscon2022_workshop": 17, "hardwareinterfac": [17, 28], "diffbot": 17, "degre": [17, 28, 45, 50], "freedom": [17, 28, 50], "components_architecture_and_urdf_exampl": 17, "revolut": [17, 19, 21, 28, 29], "drive": [17, 23, 31, 33, 34, 35, 50, 51, 52, 56], "accord": [17, 23, 28], "intermedi": 17, "car": 17, "steer": [17, 31, 33, 35, 50, 51, 52], "tba": 17, "tabl": 17, "offici": [17, 55], "easili": 17, "aptitud": 17, "might": [17, 44], "own": [17, 19, 28], "merg": 17, "procedur": 17, "rviz2": [17, 19, 30], "visual": [17, 19, 26, 28, 42], "joint_state_publisher_gui": [17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], "ros2_control_demo_example_1": [17, 19], "view_robot": [17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "omit": 17, "example_1": [17, 19, 20, 21, 30], "rviz": [17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 42], "slider": 17, "around": [17, 38, 41, 43, 48], "ros2_control_demo_example_2": [17, 23], "categori": 17, "individu": [17, 36, 48], "position_in_degre": 17, "hardware_interface_type_valu": [17, 32], "6dof": 17, "invert": 19, "pendulum": 19, "fun": 19, "proprietari": [19, 22, 23, 24, 25, 26, 27, 29], "view": [19, 28], "recreat": 19, "robotmodel": 19, "displai": [19, 21, 22, 24, 25, 26, 27, 29, 30], "ros2_control_demo_descript": 19, "ok": [19, 22, 23, 24, 25, 26, 27, 28, 29, 36], "warn": [19, 22, 23, 24, 25, 26, 27, 29, 42], "invalid": [19, 22, 23, 24, 25, 26, 27, 29], "frame": [19, 22, 23, 24, 25, 26, 27, 28, 29, 38], "odom": [19, 22, 23, 24, 25, 26, 27, 29, 34, 50], "cantransform": [19, 22, 23, 24, 25, 26, 27, 29], "target_fram": [19, 22, 23, 24, 25, 26, 27, 29], "happen": [19, 22, 23, 24, 25, 26, 27, 28, 29], "exemplari": [19, 22, 24, 25, 26, 27, 29, 31, 33, 50, 52], "orang": [19, 21, 22, 23, 24, 25, 26, 27, 29, 30], "yellow": [19, 21, 22, 24, 25, 26, 27, 29, 30], "rectangl": [19, 21, 22, 24, 25, 26, 27, 29], "introspect": [19, 21, 22, 23, 24, 25, 26, 27, 29], "list_hardware_interfac": [19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "entrypoint": 19, "nomin": 19, "marker": [19, 21, 22, 23, 24, 25, 26, 27, 29, 30], "list_control": [19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "jointstatebroadcast": [19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "forward_position_control": [19, 20, 21, 24, 25, 26, 27, 29, 30], "forward_command_control": [19, 20, 21, 22, 24, 25, 26, 27, 29, 30, 37, 47, 53], "pub": [19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "std_msg": [19, 20, 21, 22, 24, 25, 26, 27, 29, 30, 37, 39, 47, 53], "float64multiarrai": [19, 20, 21, 22, 24, 25, 26, 27, 29, 30, 37, 39, 47, 53], "everi": [19, 24, 25, 26, 27, 28, 29, 30, 35, 39, 43, 56], "test_forward_position_control": [19, 24, 25, 26, 27, 29, 30], "block": [19, 21, 22, 24, 25, 26, 27, 28, 29], "got": [19, 20, 21, 22, 23, 24, 25, 26, 27], "50000": [19, 21, 25, 26, 27], "echo": [19, 20, 21, 23, 25, 26, 30], "joint_stat": [19, 21, 23, 30, 42], "dynamic_joint_st": [19, 21, 30, 42], "load_control": 19, "joint_trajectory_position_control": 19, "successfulli": [19, 22, 27], "set_controller_st": 19, "rrbot_control": [19, 20, 21, 29, 30], "four": [19, 22, 31], "test_joint_trajectory_control": 19, "rrbot_joint_trajectory_publish": 19, "rrbot_descript": [19, 20, 21, 22, 24, 25, 26, 27, 29, 30], "rrbot_forward_position_publish": [19, 30], "ros2_control_demo_example_10": 20, "contrast": 20, "gpio_control": 20, "gpiocontrol": 20, "interface_nam": [20, 38, 39], "1199574016": 20, "1676318848": 20, "rrbotsystemwithgpiohardwar": 20, "gp": 20, "example_12": 21, "been": 21, "known": 21, "passthrough_control": 21, "ros2_control_demo_example_12": 21, "ident": [21, 23, 28, 30, 44], "joint2_position_control": 21, "passthroughcontrol": 21, "joint1_position_control": 21, "someth": 21, "automat": [21, 28, 30, 34, 51], "appear": 21, "whose": [21, 44], "henc": [21, 28], "launch_chained_control": 21, "position_control": [21, 35, 39], "streamlin": 21, "clearli": 21, "sent": [21, 43], "reflect": 21, "canopen_402": [22, 27], "modbu": [22, 27], "rs232": [22, 27], "rs485": [22, 27], "ros2_control_demo_example_14": 22, "rrbot_modular_actuators_without_feedback_sensors_for_position_feedback": 22, "list_hardware_compon": [22, 23, 25, 26, 27], "rrbotmodularjoint2": [22, 27], "rrbotactuatorwithoutfeedback": 22, "rrbotmodularjoint1": [22, 27], "rrbotmodularpositionsensorjoint2": 22, "rrbotsensorpositionfeedback": 22, "rrbotmodularpositionsensorjoint1": 22, "forward_velocity_control": [22, 24], "000000": 22, "00000": [22, 23, 24], "25300": 22, "rrbot_actuator_without_feedback": 22, "rrbot_sensor_for_position_feedback": 22, "example_2": 23, "excess": 23, "print": [23, 42], "left_wheel_joint": 23, "right_wheel_joint": 23, "diffbot_base_control": 23, "diff": 23, "geometry_msg": [23, 25, 26, 34, 38, 50], "twist": [23, 50, 51], "linear": [23, 28, 34, 41, 44, 46, 50, 51], "angular": [23, 34, 41, 50, 51], "circl": 23, "diffbotsystemhardwar": 23, "33333": 23, "faster": 23, "genericsystem": 23, "use_mock_hardwar": 23, "true": [23, 30, 34, 43, 44, 45, 46, 50], "calculate_dynam": 23, "diffbot_control": 23, "diffbot_descript": 23, "diffbot_system": 23, "example_3": 24, "fri": [24, 55], "abb": [24, 55], "yumi": 24, "schunk": [24, 55], "lwa4p": 24, "illeg": 24, "declin": 24, "faulti": 24, "ros2_control_demo_example_3": 24, "rrbot_system_multi_interfac": 24, "robot_control": [24, 28], "spawn": 24, "forward_acceleration_control": 24, "velocity_control": [24, 35, 39], "jointgroupvelocitycontrol": 24, "rrbotsystemmultiinterfacehardwar": 24, "po": [24, 44], "78500": 24, "vel": [24, 50], "acc": 24, "control_lvl": 24, "forward_illegal1_control": 24, "forward_illegal2_control": 24, "1676209982": 24, "531163501": 24, "resource_manag": 24, "rrbotsystemmultiinterfac": 24, "did": 24, "531223835": 24, "sinc": [24, 28, 33], "reject": [24, 43, 44], "spawner": 24, "531717376": 24, "spawner_forward_illegal1_control": 24, "indic": [24, 28], "rrbot_multi_interface_forward_control": 24, "krc": 25, "prototyp": 25, "odri": [25, 55], "ros2_control_demo_example_4": 25, "rrbot_system_with_sensor": 25, "rrbotsystemwithsensor": 25, "rrbotsystemwithsensorhardwar": 25, "fts_broadcast": [25, 26], "force_torque_sensor_broadcast": [25, 26], "forcetorquesensorbroadcast": [25, 26], "wrench": [25, 26, 32], "republish": [25, 26], "wrenchstamp": [25, 26, 38], "stamp": [25, 26, 50], "sec": [25, 26], "1676444704": [25, 26], "nanosec": [25, 26], "332221422": [25, 26], "tool_link": [25, 26], "946532964706421": 25, "nan": [25, 43], "0540995597839355": 25, "rrbot_with_sensor_control": 25, "pc": 26, "3d": [26, 28], "ros2_control_demo_example_5": 26, "rrbot_system_with_external_sensor": 26, "externalrrbotftsensor": 26, "externalrrbotforcetorquesensorhardwar": 26, "2126582860946655": 26, "3202226161956787": 26, "4302282333374023": 26, "540233612060547": 26, "647800624370575": 26, "7602499723434448": 26, "rrbot_with_external_sensor_control": 26, "rrbot_system_position_onli": 26, "external_rrbot_force_torque_sensor": 26, "mara": 27, "ros2_control_demo_example_6": 27, "rrbot_modular_actu": 27, "rrbotmodularjoint": 27, "rrbot_actu": 27, "queri": [28, 45], "enhanc": 28, "deploi": 28, "oper": [28, 56], "pattern": 28, "vendor": 28, "runtim": 28, "program": 28, "conform": 28, "newest": 28, "characterist": 28, "tree": [28, 34], "primari": [28, 45], "commerci": 28, "scratch": 28, "illustr": 28, "stl": 28, "dae": 28, "coars": 28, "mesh": 28, "fast": [28, 55], "collis": 28, "express": 28, "vertic": 28, "transform": 28, "rotat": [28, 34, 43], "translat": [28, 34, 51], "proxim": 28, "face": 28, "co": 28, "planer": 28, "xy": 28, "plane": 28, "align": 28, "blender": 28, "begin": 28, "neg": [28, 43], "pitch": 28, "yaw": 28, "repeat": 28, "robot_6_dof": 28, "base_link": [28, 50, 51], "link_0": 28, "inerti": 28, "mass": 28, "inertia": 28, "ixx": 28, "ixi": 28, "ixz": 28, "iyi": 28, "iyz": 28, "izz": 28, "tool0": 28, "base_joint": 28, "joint_1": 28, "link_1": 28, "061584": 28, "141592653589793": 28, "name_spac": 28, "class_nam": 28, "pi": [28, 43, 46], "enclos": 28, "previous": 28, "left": 28, "zero": [28, 32, 43, 44], "rel": [28, 44], "center": 28, "uniform": 28, "consecut": 28, "motion": [28, 43], "subsequ": 28, "join": [28, 56], "speci": 28, "verifi": 28, "urdf_to_graphviz": 28, "r6bot": 28, "explain": 28, "robotsystem": 28, "ur5": 28, "five": 28, "hardware_interface_return_valu": 28, "hardware_interface_publ": 28, "commandinterfac": 28, "durat": 28, "period": [28, 43], "privat": 28, "memori": [28, 36], "alloc": 28, "establish": 28, "angl": [28, 33, 50], "notabl": 28, "vari": 28, "fill": 28, "field": [28, 42, 44], "suppos": [28, 44], "tcp_force_torque_sensor": 28, "Their": 28, "pointer": 28, "info_": 28, "state_interfaces_": 28, "nearli": 28, "previou": [28, 44, 56], "command_interfaces_": 28, "constraint": [28, 36, 40, 41, 43, 45, 46, 50], "respons": 28, "turn": 28, "oppos": [28, 45], "tcp": [28, 32], "packet": 28, "robot_6_dof_hardwar": 28, "discov": 28, "library_nam": 28, "base_class_typ": 28, "human": 28, "notic": [28, 44], "just": 28, "add_librari": 28, "robot_hardwar": 28, "unlik": 28, "finit": 28, "certain": [28, 37, 47, 53], "transit": [28, 35, 44], "robotcontrol": 28, "nine": 28, "six": [28, 38], "callback": 28, "lifetim": 28, "restart": 28, "reconfigur": 28, "buffer": [28, 56], "reset": [28, 50], "transfer": 28, "eventu": 28, "mutex": 28, "guarante": [28, 44], "never": 28, "release_interfac": 28, "shut": 28, "free": [28, 34], "cleanup": 28, "r6bot_control": 28, "view_r6bot": 28, "ros2_control_demo_example_7": 28, "send_trajectori": 28, "circular": 28, "ros2_control_demo_example_8": 29, "rrbot_transmissions_system_position_onli": 29, "rrbottransmissionssystempositiononlyhardwar": 29, "transmission1": 29, "actuator1": 29, "transmission2": 29, "actuator2": 29, "383253": 29, "766505": 29, "53301": 29, "example_9": 30, "later": [30, 44], "ros2_control_demo_example_9": 30, "rrbot_gazebo_class": 30, "usr": 30, "ax": [31, 33, 38, 41, 46, 52], "wheel": [31, 33, 34, 50, 52], "traction": [31, 33, 50, 51, 52], "steerabl": [31, 33, 52], "generate_parameter_librari": [31, 32, 33, 39, 40, 41, 46, 50, 52], "parameter": [31, 33, 50, 52], "front_wheel_track": 31, "front": [31, 32, 33, 50, 52], "length": [31, 41, 46, 50, 52], "en": [31, 33, 52], "wikipedia": [31, 33, 50, 52, 56], "wiki": [31, 33, 44, 45, 52], "wheelbas": [31, 33, 52], "rear_wheel_track": 31, "rear": [31, 33, 50, 52], "distanc": [31, 33, 45, 48, 52], "front_wheels_radiu": [31, 52], "radiu": [31, 33, 52], "rear_wheels_radiu": [31, 52], "chainedcontrollerinterfac": 32, "joint_refer": 32, "trajectory_msg": [32, 44, 45], "jointtrajectorypoint": [32, 44], "admittancecontrollerst": 32, "ft_sensor": 32, "sensor_nam": [32, 38, 41, 48], "ackermann": [33, 35, 50], "vehicl": 33, "probabl": 33, "front_wheel_radiu": 33, "rear_wheel_radiu": 33, "bodi": 34, "odometri": [34, 50, 51], "space": [34, 45], "hw_if_posit": [34, 35, 50], "hw_if_veloc": [34, 35, 50], "position_feedback": [34, 50], "twiststamp": [34, 50], "use_stamped_vel": [34, 50], "nav_msg": [34, 50], "estim": 34, "tf": [34, 50], "tf2_msg": [34, 50], "tfmessag": [34, 50], "enable_odom_tf": [34, 50], "cmd_vel_out": 34, "publish_limited_veloc": 34, "jointlimit": 34, "joint_limit": 34, "commonli": 35, "bicycl": [35, 50], "effort_control": [35, 39], "hw_if_acceler": 35, "hw_if_effort": 35, "represent": [35, 45], "rqt_joint_trajectory_control": [35, 45], "onconfigur": 35, "configure_control": 35, "unsign": 35, "unspecifi": 35, "is_async": 35, "asynchron": 35, "controllernam": 36, "protect": 36, "reserv": 36, "importantli": 36, "ask": [36, 42], "sort": 36, "controller_name_namespac": 36, "controller_name_packag": 36, "ros2_control_test_asset": 36, "special": [37, 44, 47, 53], "hz": [37, 40, 47, 53], "wrapper": [38, 41, 48], "forcetorquesensor": 38, "6d": 38, "per": 38, "less": [38, 46, 50], "example_nam": 38, "example_interfac": 38, "feedforward": 39, "multi_interface_forward_command_control": 39, "string_arrai": [39, 46, 50], "action_monitor_r": [40, 43, 45], "greater": [40, 43], "equal": [40, 41], "goal_toler": 40, "max_effort": 40, "allow_stal": 40, "stall": 40, "stall_velocity_threshold": 40, "threshold": 40, "001": 40, "stall_timeout": 40, "imusensor": 41, "orient": 41, "angular_veloc": 41, "linear_acceler": 41, "static_covariance_orient": 41, "double_arrai": [41, 50], "static": 41, "covari": [41, 50], "row": 41, "static_covariance_angular_veloc": 41, "static_covariance_linear_acceler": 41, "unless": 42, "latter": 42, "matrix": [42, 50], "use_local_top": 42, "my_state_broadcast": 42, "arrai": 42, "extra_joint": 42, "map_interface_to_joint_st": 42, "usecas": 42, "hydraul": [42, 43], "relianc": 42, "techniqu": 42, "slightli": 42, "custom_interfac": 42, "kf_estimated_posit": 42, "derived_veloc": 42, "derived_effort": 42, "torque_sensor": 42, "current_sensor": 42, "command_joint": 43, "jtc": [43, 46], "monitor": [43, 45], "allow_partial_joints_go": [43, 45], "allow_integration_in_goal_trajectori": [43, 44], "interpolation_method": 43, "interpol": [43, 45, 46], "spline": 43, "open_loop_control": [43, 45], "gain": [43, 46], "numer": 43, "numeric_limit": 43, "quiet_nan": 43, "start_with_hold": 43, "hold": [43, 44], "allow_nonzero_velocity_at_trajectory_end": 43, "cmd_timeout": 43, "stale": 43, "count": 43, "goal_tim": [43, 45], "toler": [43, 45], "jointtrajectori": [43, 44, 45], "stopped_velocity_toler": [43, 45], "deviat": 43, "maxim": 43, "reach": [43, 44, 45], "predefin": 43, "infinit": 43, "amount": 43, "law": [43, 45], "k_": 43, "ff": 43, "v_d": 43, "k_p": 43, "k_i": 43, "sum": 43, "dt": 43, "k_d": 43, "angle_wraparound": 43, "i_clamp": 43, "clamp": 43, "symmetr": 43, "ff_velocity_scal": 43, "feed": [43, 46], "wrap": [43, 45], "ie": [43, 44], "shortest": 43, "s_d": 43, "saniti": 44, "sampl": [44, 50], "segment": [44, 45], "fault": 44, "datapoint": 44, "deduc": 44, "nor": 44, "discourag": 44, "yield": 44, "discontinu": [44, 45], "cubic": [44, 46], "quintic": [44, 46], "heun": 44, "grid": 44, "10m": 44, "deduct": 44, "nonzero": 44, "inconsist": 44, "overshoot": 44, "timestamp": 44, "arriv": 44, "necessarili": 44, "discard": 44, "substitut": 44, "smarter": 44, "preserv": 44, "flat": 44, "grei": 44, "red": 44, "traj": 44, "time_from_start": 44, "splice": 44, "append": 44, "held": [44, 45], "smooth": [44, 56], "longer": 44, "slower": 44, "effect": 44, "Of": 44, "interest": 44, "adolfo": [44, 45], "rodriguez": [44, 45], "instant": 45, "citat": 45, "adapt": 45, "restrict": 45, "robust": 45, "clock": 45, "queu": 45, "joint3": 45, "joint4": 45, "joint5": 45, "joint6": 45, "preempt": 45, "cancel": 45, "notifi": 45, "abort": 45, "legal": 45, "subset": 45, "favor": 45, "violat": 45, "joint_trajectori": 45, "fire": 45, "sender": 45, "query_st": 45, "cumbersom": 45, "controller_st": [45, 46, 50], "jointtrajectorycontrollerst": 45, "querytrajectoryst": 45, "footnot": 45, "pidro": 46, "pd": 46, "theoret": 46, "misus": 46, "pid_control": 46, "pidcontrol": 46, "reference_and_state_dof_nam": 46, "reference_and_state_interfac": 46, "dof_nam": 46, "in_chained_mod": [46, 50], "multidofcommand": 46, "use_external_measured_st": 46, "measured_st": 46, "set_feedforward_control": 46, "std_srv": 46, "setbool": 46, "multidofstatestamp": 46, "rangesensor": 48, "radiation_typ": 48, "int": [48, 50], "radiat": 48, "ultrason": 48, "infrar": 48, "field_of_view": 48, "arc": 48, "rad": [48, 50], "min_rang": 48, "minimum": 48, "m": [48, 50], "max_rang": 48, "maximum": 48, "varianc": 48, "rqt": 49, "nomenclatur": 50, "unstamp": 50, "concret": 50, "tricylc": 50, "seer": 50, "front_steer": 50, "front_wheels_nam": 50, "rear_wheels_nam": 50, "traction_feedback_typ": 50, "reference_unstamp": 50, "tf_odometri": 50, "steeringcontrollerstatu": 50, "reference_timeout": 50, "unwant": 50, "danger": 50, "behaviour": 50, "rear_wheels_state_nam": 50, "front_wheels_state_nam": 50, "open_loop": 50, "velocity_rolling_window_s": 50, "number": 50, "averag": 50, "base_frame_id": 50, "odom_frame_id": 50, "twist_covariance_diagon": 50, "diagon": 50, "pose_covariance_diagon": 50, "pose": 50, "wheel_track": 52, "isaac": 54, "webot": 54, "manufactur": 55, "franka": 55, "emika": 55, "xarm": 55, "flexiv": 55, "rizon": 55, "igu": 55, "commonplac": 55, "husarion": 55, "rosbot": 55, "xl": 55, "2r": 55, "pro": 55, "openmanipul": 55, "clearpath": 55, "jackal": 55, "j100": 55, "huski": 55, "a200": 55, "unoffici": 55, "iiwa": 55, "lbr": 55, "iiqka": 55, "eci": 55, "sunris": 55, "kss": 55, "egm": 55, "mitsubishi": 55, "rv1a": 55, "protocol": 55, "ethercat": 55, "canopen": 55, "svh": 55, "finger": 55, "dimens": 55, "haptic": 55, "odriv": 55, "ndi": 55, "pca9685": 55, "bit": 55, "pwm": 55, "servo": 55, "hoverboard": 55, "overcom": 56, "idea": 56, "wide": 56, "toolkit": 56, "unreleas": 56, "question": 56, "wg": 56, "wednesdai": 56, "announc": 56, "discours": 56, "googl": 56, "bug": 56, "tracker": 56, "reproduc": 56, "regard": 56, "built": 56, "gmt": 56}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"acknowledg": 0, "maintain": 0, "review": 0, "stat": 0, "contributor": 0, "compani": 0, "institut": 0, "contribut": 1, "pull": 1, "request": 1, "rule": 1, "repositori": [1, 17, 56], "process": [1, 10], "merg": 1, "write": [1, 12, 15, 28, 36], "document": [1, 9, 11, 56], "structur": [1, 2], "ci": 1, "configur": 1, "usag": [1, 3, 5], "differ": 2, "ros_control": 2, "ros1": [2, 6], "hardwar": [2, 4, 6, 10, 12, 13, 15, 28, 39, 42, 45], "class": [2, 9], "interfac": [2, 4, 13, 16, 20, 24, 28, 29, 32, 34, 37, 39, 42, 45, 46, 47, 50, 53], "control": [2, 3, 4, 5, 6, 9, 10, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 34, 35, 36, 37, 39, 40, 45, 46, 47, 50, 53, 54], "": [2, 34, 45, 46, 50], "access": 2, "migrat": [2, 12], "guid": 2, "ros2_control": [2, 3, 5, 6, 7, 8, 11, 13, 17, 28, 32, 35, 56], "robothardwar": 2, "compon": [2, 4, 6, 12, 14, 15], "gazebo_ros2_control": 3, "modifi": [3, 5], "build": [3, 4, 5, 17], "your": [3, 4, 5], "own": [3, 5], "To": [3, 5, 17], "run": [3, 4, 5, 17], "demo": [3, 5, 6, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "add": [3, 5, 6], "tag": [3, 5], "urdf": [3, 4, 5, 28], "simpl": [3, 5], "setup": [3, 5], "us": [3, 5, 9, 10, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 36, 45, 46], "mimic": [3, 5], "joint": [3, 5, 13, 14, 45], "simul": [3, 5, 30, 54], "plugin": [3, 5, 28], "default": [3, 5], "behavior": [3, 5], "advanc": [3, 5], "custom": [3, 5], "set": [3, 5], "up": [3, 5], "gazebo_ros2_control_demo": 3, "get": 4, "start": 4, "instal": [4, 17], "binari": 4, "packag": [4, 17], "from": [4, 6, 12, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 46, 50], "sourc": [4, 17], "architectur": 4, "manag": [4, 9, 10], "resourc": [4, 7, 9], "user": 4, "descript": [4, 28, 34, 45, 46, 50], "framework": 4, "robot": [4, 7, 17, 20, 22, 24, 25, 26, 27, 28, 29, 35, 55], "gz_ros2_control": 5, "gz_ros2_control_demo": 5, "project": 6, "idea": 6, "gsoc": 6, "2024": 6, "tutori": [6, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], "mission": 6, "support": [6, 55], "semant": 6, "featur": [6, 11, 34, 45, 51], "pariti": 6, "present": 7, "2023": [7, 8], "10": [7, 20], "18": 7, "roscon": [7, 8], "workshop": [7, 8], "steroid": [7, 8], "02": 7, "ro": [7, 32, 34, 37, 39, 47, 53, 54], "meetup": 7, "munich": 7, "5": [7, 26], "2022": 7, "12": [7, 21], "industri": [7, 20, 25, 26, 29], "confer": [7, 8], "06": 7, "fr": 7, "2021": 7, "world": 7, "07": 7, "weekli": 7, "13": 7, "rosdevdai": 7, "05": 7, "diagram": 7, "imag": 7, "summari": 8, "slide": 8, "befor": 8, "come": 8, "peopl": 8, "chain": [9, 21], "cascad": 9, "scope": 9, "background": 9, "knowledg": 9, "motiv": 9, "purpos": 9, "implement": 9, "A": 9, "base": 9, "chainablecontrol": 9, "inner": 9, "activ": 9, "deactiv": 9, "debug": 9, "output": [9, 34], "close": 9, "remark": 9, "determin": 10, "paramet": [10, 14, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 43, 46, 47, 48, 50, 52, 53], "helper": 10, "script": 10, "spawner": 10, "unspawn": 10, "concept": [10, 11], "restart": 10, "all": 10, "api": 11, "guidelin": [12, 35], "best": [12, 35], "practic": [12, 35], "handl": 12, "error": 12, "happen": 12, "dure": 12, "read": 12, "call": 12, "foxi": 12, "newer": 12, "version": 12, "type": [13, 39, 42, 45], "sensor": [13, 25, 26, 38, 41, 48], "gpio": [13, 20], "exampl": [13, 17, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 44], "mock": 14, "gener": 14, "system": 14, "per": 14, "extern": [15, 26, 36], "refer": [15, 32, 34, 36, 45, 46, 50], "command": [16, 32, 42, 45, 46, 50, 51], "line": 16, "list_control": 16, "list_controller_typ": 16, "list_hardware_compon": 16, "list_hardware_interfac": 16, "load_control": 16, "reload_controller_librari": 16, "set_controller_st": 16, "switch_control": 16, "unload_control": 16, "view_controller_chain": 16, "what": 17, "you": 17, "can": 17, "find": 17, "thi": [17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "goal": 17, "overview": [17, 28], "local": 17, "debian": 17, "docker": 17, "view": 17, "quick": 17, "hint": 17, "1": [19, 45], "rrbot": [19, 21, 30], "step": [19, 21, 22, 23, 24, 25, 26, 27, 29, 30], "file": [19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], "14": 22, "modular": [22, 27], "actuat": [22, 27], "provid": 22, "state": [22, 32, 45, 46, 50], "diffbot": 23, "3": 24, "multipl": 24, "4": 25, "integr": [25, 54], "connect": 26, "6": 27, "separ": 27, "commun": [27, 54, 56], "each": 27, "7": 28, "full": 28, "6dof": 28, "geometri": 28, "cmake": 28, "librari": 28, "launch": 28, "8": 29, "an": 29, "expos": 29, "transmiss": 29, "9": 30, "ackermann_steering_control": 31, "admitt": 32, "2": [32, 34, 37, 39, 47, 53], "topic": [32, 37, 39, 47, 53], "bicycle_steering_control": 33, "diff_drive_control": 34, "other": [34, 35, 45, 51], "feedback": 34, "subscrib": [34, 45, 46, 50], "publish": [34, 45, 46, 50], "mobil": 35, "manipul": 35, "broadcast": [35, 38, 41, 48], "common": 35, "new": 36, "effort_control": 37, "jointgroupeffortcontrol": 37, "forc": 38, "torqu": 38, "forward_command_control": 39, "gripper": 40, "action": [40, 45], "imu": 41, "joint_state_broadcast": 42, "detail": 43, "about": 43, "trajectori": [44, 45], "represent": 44, "interpol": 44, "method": 44, "none": 44, "spline": 44, "visual": 44, "replac": 44, "joint_trajectory_control": 45, "preemption": 45, "polici": 45, "servic": [45, 46], "further": 45, "inform": 45, "pid": 46, "execut": [46, 50], "logic": [46, 50], "preced": [46, 50], "position_control": 47, "jointgrouppositioncontrol": 47, "rang": 48, "rqt_joint_trajectory_control": 49, "steering_controllers_librari": 50, "tricycle_control": 51, "veloc": 51, "tricycle_steering_control": 52, "velocity_control": 53, "jointgroupvelocitycontrol": 53, "host": 54, "welcom": 56, "develop": 56, "organis": 56}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx": 60}, "alltitles": {"Acknowledgements": [[0, "acknowledgements"]], "Maintainers": [[0, "maintainers"]], "Reviewers\u2019 Stats": [[0, "reviewers-stats"]], "Contributors": [[0, "contributors"]], "Companies and Institutions": [[0, "companies-and-institutions"]], "Contributing": [[1, "contributing"]], "Pull Requests": [[1, "pull-requests"]], "Rules for the repositories and process of merging pull requests": [[1, "rules-for-the-repositories-and-process-of-merging-pull-requests"]], "Writing documentation": [[1, "writing-documentation"]], "Repository structure and CI configuration": [[1, "repository-structure-and-ci-configuration"]], "CI configuration": [[1, "ci-configuration"]], "Documentation Usage": [[1, "documentation-usage"]], "Differences to ros_control (ROS1)": [[2, "differences-to-ros-control-ros1"]], "Hardware Structures - classes": [[2, "hardware-structures-classes"]], "Hardware Interfaces": [[2, "hardware-interfaces"]], "Controller\u2019s Access to Hardware": [[2, "controller-s-access-to-hardware"]], "Migration Guide to ros2_control": [[2, "migration-guide-to-ros2-control"]], "RobotHardware to Components": [[2, "robothardware-to-components"]], "Controller Migration": [[2, "controller-migration"]], "gazebo_ros2_control": [[3, "gazebo-ros2-control"]], "Usage": [[3, "usage"], [5, "usage"]], "Modifying or building your own": [[3, "modifying-or-building-your-own"], [5, "modifying-or-building-your-own"]], "To run the demo": [[3, "to-run-the-demo"], [5, "to-run-the-demo"]], "Add ros2_control tag to a URDF": [[3, "add-ros2-control-tag-to-a-urdf"], [5, "add-ros2-control-tag-to-a-urdf"]], "Simple setup": [[3, "simple-setup"], [5, "simple-setup"]], "Using mimic joints in simulation": [[3, "using-mimic-joints-in-simulation"], [5, "using-mimic-joints-in-simulation"]], "Add the gazebo_ros2_control plugin": [[3, "add-the-gazebo-ros2-control-plugin"]], "Default gazebo_ros2_control Behavior": [[3, "default-gazebo-ros2-control-behavior"]], "Advanced: custom gazebo_ros2_control Simulation Plugins": [[3, "advanced-custom-gazebo-ros2-control-simulation-plugins"]], "Set up controllers": [[3, "set-up-controllers"], [5, "set-up-controllers"]], "gazebo_ros2_control_demos": [[3, "gazebo-ros2-control-demos"]], "Getting Started": [[4, "getting-started"]], "Installation": [[4, "installation"], [17, "installation"]], "Binary packages": [[4, "binary-packages"]], "Building from Source": [[4, "building-from-source"]], "Architecture": [[4, "architecture"]], "Controller Manager": [[4, "controller-manager"], [10, "controller-manager"]], "Resource Manager": [[4, "resource-manager"]], "Controllers": [[4, "controllers"]], "User Interfaces": [[4, "user-interfaces"]], "Hardware Components": [[4, "hardware-components"], [12, "hardware-components"]], "Hardware Description in URDF": [[4, "hardware-description-in-urdf"]], "Running the Framework for Your Robot": [[4, "running-the-framework-for-your-robot"]], "gz_ros2_control": [[5, "gz-ros2-control"]], "Add the gz_ros2_control plugin": [[5, "add-the-gz-ros2-control-plugin"]], "Default gz_ros2_control Behavior": [[5, "default-gz-ros2-control-behavior"]], "Advanced: custom gz_ros2_control Simulation Plugins": [[5, "advanced-custom-gz-ros2-control-simulation-plugins"]], "gz_ros2_control_demos": [[5, "gz-ros2-control-demos"]], "Project Ideas for GSoC 2024": [[6, "project-ideas-for-gsoc-2024"]], "Tutorials and Demos for ros2_control": [[6, "tutorials-and-demos-for-ros2-control"]], "Mission-Control for ros2_control": [[6, "mission-control-for-ros2-control"]], "Add support for hardware semantic components": [[6, "add-support-for-hardware-semantic-components"]], "Feature-parity for controllers from ROS1": [[6, "feature-parity-for-controllers-from-ros1"]], "Resources": [[7, "resources"]], "Presentations": [[7, "presentations"]], "2023-10-18 ROSCon Workshop: ros2_control on Steroids": [[7, "roscon-workshop-ros2-control-on-steroids"]], "2023-02 ROS Meetup Munich #5": [[7, "ros-meetup-munich-5"]], "2022-12 ROS-Industrial Conference 2022": [[7, "ros-industrial-conference-2022"]], "2022-10 ROSCon 2022": [[7, "roscon-2022"]], "2022-06 ROSCon Fr 2022": [[7, "roscon-fr-2022"]], "2021-10 ROS World 2021": [[7, "ros-world-2021"]], "2021-10-07 Weekly Robotics Meetup #13": [[7, "weekly-robotics-meetup-13"]], "2021-06 ROSDevDay 2021": [[7, "rosdevday-2021"]], "2021-05 ROSCon Fr 2021": [[7, "roscon-fr-2021"]], "Diagrams": [[7, "diagrams"]], "Images": [[7, "images"]], "ROSCon 2023 Workshop": [[8, "roscon-2023-workshop"]], "ros2_control on Steroids": [[8, "ros2-control-on-steroids"]], "Summary": [[8, "summary"]], "Slides": [[8, "slides"]], "Before coming to the conference": [[8, "before-coming-to-the-conference"]], "People": [[8, "people"]], "Controller Chaining / Cascade Control": [[9, "controller-chaining-cascade-control"]], "Scope of the Document and Background Knowledge": [[9, "scope-of-the-document-and-background-knowledge"]], "Motivation, Purpose and Use": [[9, "motivation-purpose-and-use"]], "Implementation": [[9, "implementation"]], "A Controller Base-Class: ChainableController": [[9, "a-controller-base-class-chainablecontroller"]], "Inner Resource Management": [[9, "inner-resource-management"]], "Activation and Deactivation Chained Controllers": [[9, "activation-and-deactivation-chained-controllers"]], "Debugging outputs": [[9, "debugging-outputs"]], "Closing remarks": [[9, "closing-remarks"]], "Determinism": [[10, "determinism"]], "Parameters": [[10, "parameters"], [14, "parameters"], [31, "parameters"], [32, "parameters"], [33, "parameters"], [34, "parameters"], [37, "parameters"], [38, "parameters"], [39, "parameters"], [40, "parameters"], [41, "parameters"], [42, "parameters"], [46, "parameters"], [47, "parameters"], [48, "parameters"], [50, "parameters"], [52, "parameters"], [53, "parameters"]], "Helper scripts": [[10, "helper-scripts"]], "spawner": [[10, "spawner"]], "unspawner": [[10, "unspawner"]], "Using the Controller Manager in a Process": [[10, "using-the-controller-manager-in-a-process"]], "Concepts": [[10, "concepts"], [11, "concepts"]], "Restarting all controllers": [[10, "restarting-all-controllers"]], "Restarting hardware": [[10, "restarting-hardware"]], "ros2_control": [[11, "ros2-control"]], "API Documentation": [[11, "api-documentation"]], "Features": [[11, "features"]], "Guidelines and Best Practices": [[12, "guidelines-and-best-practices"], [35, "guidelines-and-best-practices"]], "Handling of errors that happen during read() and write() calls": [[12, "handling-of-errors-that-happen-during-read-and-write-calls"]], "Migration from Foxy to newer versions": [[12, "migration-from-foxy-to-newer-versions"]], "ros2_control hardware interface types": [[13, "ros2-control-hardware-interface-types"]], "Joints": [[13, "joints"]], "Sensors": [[13, "sensors"]], "GPIOs": [[13, "gpios"]], "Examples": [[13, "examples"], [17, "examples"]], "Mock Components": [[14, "mock-components"]], "Generic System": [[14, "generic-system"]], "Per-joint Parameters": [[14, "per-joint-parameters"]], "Writing a Hardware Component": [[15, "writing-a-hardware-component"]], "Useful External References": [[15, "useful-external-references"], [36, "useful-external-references"]], "Command Line Interface": [[16, "command-line-interface"]], "list_controllers": [[16, "list-controllers"]], "list_controller_types": [[16, "list-controller-types"]], "list_hardware_components": [[16, "list-hardware-components"]], "list_hardware_interfaces": [[16, "list-hardware-interfaces"]], "load_controller": [[16, "load-controller"]], "reload_controller_libraries": [[16, "reload-controller-libraries"]], "set_controller_state": [[16, "set-controller-state"]], "switch_controllers": [[16, "switch-controllers"]], "unload_controller": [[16, "unload-controller"]], "view_controller_chains": [[16, "view-controller-chains"]], "Demos": [[17, "demos"]], "What you can find in this repository": [[17, "what-you-can-find-in-this-repository"]], "Goals": [[17, "goals"]], "Examples Overview": [[17, "examples-overview"]], "Local installation": [[17, "local-installation"]], "Build from debian packages": [[17, "build-from-debian-packages"]], "Build from source": [[17, "build-from-source"]], "Using Docker": [[17, "using-docker"]], "To view the robot": [[17, "to-view-the-robot"]], "To run the ros2_control demos": [[17, "to-run-the-ros2-control-demos"]], "Quick Hints": [[17, "quick-hints"]], "Example 1: RRBot": [[19, "example-1-rrbot"]], "Tutorial steps": [[19, "tutorial-steps"], [21, "tutorial-steps"], [22, "tutorial-steps"], [23, "tutorial-steps"], [24, "tutorial-steps"], [25, "tutorial-steps"], [26, "tutorial-steps"], [27, "tutorial-steps"], [29, "tutorial-steps"], [30, "tutorial-steps"]], "Files used for this demos": [[19, "files-used-for-this-demos"], [20, "files-used-for-this-demos"], [21, "files-used-for-this-demos"], [22, "files-used-for-this-demos"], [23, "files-used-for-this-demos"], [24, "files-used-for-this-demos"], [26, "files-used-for-this-demos"], [27, "files-used-for-this-demos"], [29, "files-used-for-this-demos"], [30, "files-used-for-this-demos"]], "Controllers from this demo": [[19, "controllers-from-this-demo"], [20, "controllers-from-this-demo"], [21, "controllers-from-this-demo"], [22, "controllers-from-this-demo"], [23, "controllers-from-this-demo"], [24, "controllers-from-this-demo"], [25, "controllers-from-this-demo"], [26, "controllers-from-this-demo"], [27, "controllers-from-this-demo"], [29, "controllers-from-this-demo"], [30, "controllers-from-this-demo"]], "Example 10: Industrial robot with GPIO interfaces": [[20, "example-10-industrial-robot-with-gpio-interfaces"]], "Example 12: Controller chaining with RRBot": [[21, "example-12-controller-chaining-with-rrbot"]], "Example 14: Modular robot with actuators not providing states": [[22, "example-14-modular-robot-with-actuators-not-providing-states"]], "DiffBot": [[23, "diffbot"]], "Example 3: Robots with multiple interfaces": [[24, "example-3-robots-with-multiple-interfaces"]], "Example 4: Industrial robot with integrated sensor": [[25, "example-4-industrial-robot-with-integrated-sensor"]], "Files used for this demo": [[25, "files-used-for-this-demo"]], "Example 5: Industrial robot with externally connected sensor": [[26, "example-5-industrial-robot-with-externally-connected-sensor"]], "Example 6: Modular Robots with separate communication to each actuator": [[27, "example-6-modular-robots-with-separate-communication-to-each-actuator"]], "Example 7: Full tutorial with a 6DOF robot": [[28, "example-7-full-tutorial-with-a-6dof-robot"]], "ros2_control overview": [[28, "ros2-control-overview"]], "Writing a URDF": [[28, "writing-a-urdf"]], "Geometry": [[28, "geometry"]], "URDF file": [[28, "urdf-file"]], "Writing a hardware interface": [[28, "writing-a-hardware-interface"]], "Plugin description file (hardware)": [[28, "plugin-description-file-hardware"]], "CMake library (hardware)": [[28, "cmake-library-hardware"]], "Writing a controller": [[28, "writing-a-controller"]], "Plugin description file (controller)": [[28, "plugin-description-file-controller"]], "CMake library (controller)": [[28, "cmake-library-controller"]], "Launching the example": [[28, "launching-the-example"]], "Example 8: Industrial Robots with an exposed transmission interface": [[29, "example-8-industrial-robots-with-an-exposed-transmission-interface"]], "Example 9: Simulation with RRBot": [[30, "example-9-simulation-with-rrbot"]], "ackermann_steering_controller": [[31, "ackermann-steering-controller"]], "Admittance Controller": [[32, "admittance-controller"]], "ROS 2 interface of the controller": [[32, "ros-2-interface-of-the-controller"], [37, "ros-2-interface-of-the-controller"], [39, "ros-2-interface-of-the-controller"], [47, "ros-2-interface-of-the-controller"], [53, "ros-2-interface-of-the-controller"]], "Topics": [[32, "topics"], [37, "topics"], [39, "topics"], [47, "topics"], [53, "topics"]], "ros2_control interfaces": [[32, "ros2-control-interfaces"]], "References": [[32, "references"], [34, "references"], [45, "references"]], "States": [[32, "states"], [45, "states"], [46, "states"], [50, "states"]], "Commands": [[32, "commands"], [42, "commands"], [45, "commands"], [46, "commands"], [50, "commands"]], "bicycle_steering_controller": [[33, "bicycle-steering-controller"]], "diff_drive_controller": [[34, "diff-drive-controller"]], "Other features": [[34, "other-features"], [45, "other-features"], [51, "other-features"]], "Description of controller\u2019s interfaces": [[34, "description-of-controller-s-interfaces"], [45, "description-of-controller-s-interfaces"], [46, "description-of-controller-s-interfaces"], [50, "description-of-controller-s-interfaces"]], "Feedback": [[34, "feedback"]], "Output": [[34, "output"]], "ROS 2 Interfaces": [[34, "ros-2-interfaces"]], "Subscribers": [[34, "subscribers"], [46, "subscribers"], [50, "subscribers"]], "Publishers": [[34, "publishers"], [45, "publishers"], [46, "publishers"], [50, "publishers"]], "ros2_controllers": [[35, "ros2-controllers"]], "Controllers for Mobile Robots": [[35, "controllers-for-mobile-robots"]], "Controllers for Manipulators and Other Robots": [[35, "controllers-for-manipulators-and-other-robots"]], "Broadcasters": [[35, "broadcasters"]], "Common Controller Parameters": [[35, "common-controller-parameters"]], "Writing a new controller": [[36, "writing-a-new-controller"]], "effort_controllers": [[37, "effort-controllers"]], "effort_controllers/JointGroupEffortController": [[37, "effort-controllers-jointgroupeffortcontroller"]], "Force Torque Sensor Broadcaster": [[38, "force-torque-sensor-broadcaster"]], "forward_command_controller": [[39, "forward-command-controller"]], "Hardware interface type": [[39, "hardware-interface-type"], [42, "hardware-interface-type"]], "Gripper Action Controller": [[40, "gripper-action-controller"]], "IMU Sensor Broadcaster": [[41, "imu-sensor-broadcaster"]], "joint_state_broadcaster": [[42, "joint-state-broadcaster"]], "Details about parameters": [[43, "details-about-parameters"]], "Trajectory Representation": [[44, "trajectory-representation"]], "Interpolation Method none": [[44, "interpolation-method-none"]], "Interpolation Method spline": [[44, "interpolation-method-spline"]], "Visualized Examples": [[44, "visualized-examples"]], "Trajectory Replacement": [[44, "trajectory-replacement"]], "joint_trajectory_controller": [[45, "joint-trajectory-controller"]], "Hardware interface types": [[45, "hardware-interface-types"]], "Using Joint Trajectory Controller(s)": [[45, "using-joint-trajectory-controller-s"]], "Preemption policy 1": [[45, "preemption-policy"]], "Actions 1": [[45, "actions"]], "Subscriber 1": [[45, "subscriber"]], "Services": [[45, "services"], [46, "services"]], "Further information": [[45, "further-information"]], "PID Controller": [[46, "pid-controller"]], "Execution logic of the controller": [[46, "execution-logic-of-the-controller"], [50, "execution-logic-of-the-controller"]], "Using the controller": [[46, "using-the-controller"]], "References (from a preceding controller)": [[46, "references-from-a-preceding-controller"], [50, "references-from-a-preceding-controller"]], "position_controllers": [[47, "position-controllers"]], "position_controllers/JointGroupPositionController": [[47, "position-controllers-jointgrouppositioncontroller"]], "Range Sensor Broadcaster": [[48, "range-sensor-broadcaster"]], "rqt_joint_trajectory_controller": [[49, "rqt-joint-trajectory-controller"]], "steering_controllers_library": [[50, "steering-controllers-library"]], "tricycle_controller": [[51, "tricycle-controller"]], "Velocity commands": [[51, "velocity-commands"]], "tricycle_steering_controller": [[52, "tricycle-steering-controller"]], "velocity_controllers": [[53, "velocity-controllers"]], "velocity_controllers/JointGroupVelocityController": [[53, "velocity-controllers-jointgroupvelocitycontroller"]], "Simulator Integrations": [[54, "simulator-integrations"]], "Hosted by ros-controls": [[54, "hosted-by-ros-controls"]], "Community": [[54, "community"]], "Supported Robots": [[55, "supported-robots"]], "Welcome to the ros2_control documentation!": [[56, "welcome-to-the-ros2-control-documentation"]], "ros2_control Repositories": [[56, "ros2-control-repositories"]], "Development Organisation and Communication": [[56, "development-organisation-and-communication"]]}, "indexentries": {}}) \ No newline at end of file