From 780a17a5b4aaf997cb19db3f9089383b979f188e Mon Sep 17 00:00:00 2001 From: bmagyar Date: Wed, 3 Jan 2024 05:32:33 +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 513254 -> 513270 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 39707 -> 39707 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 -> 38580 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 2608401 -> 2608482 bytes humble/.doctrees/index.doctree | Bin 27593 -> 27593 bytes .../example_2/doc/userdoc.rst | 18 +- .../acknowledgements/acknowledgements.html | 220 +++++++++--------- .../example_2/doc/userdoc.html | 18 +- humble/index.html | 2 +- humble/searchindex.js | 2 +- iron/.buildinfo | 2 +- .../acknowledgements/acknowledgements.doctree | Bin 513254 -> 513270 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 39707 -> 39707 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 -> 38494 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 2613239 -> 2613320 bytes iron/.doctrees/index.doctree | Bin 27549 -> 27549 bytes .../example_2/doc/userdoc.rst | 18 +- .../acknowledgements/acknowledgements.html | 220 +++++++++--------- .../example_2/doc/userdoc.html | 18 +- iron/index.html | 2 +- iron/searchindex.js | 2 +- master/.buildinfo | 2 +- .../acknowledgements/acknowledgements.doctree | Bin 513254 -> 513270 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 40408 -> 40408 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 -> 38580 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 2686136 -> 2686217 bytes master/.doctrees/index.doctree | Bin 27559 -> 27559 bytes .../example_2/doc/userdoc.rst | 18 +- .../acknowledgements/acknowledgements.html | 220 +++++++++--------- .../example_2/doc/userdoc.html | 18 +- master/index.html | 2 +- master/searchindex.js | 2 +- 244 files changed, 405 insertions(+), 393 deletions(-) diff --git a/foxy/.buildinfo b/foxy/.buildinfo index c3f24dadb3c..dd66482ff7d 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: be9346636a86b6161ff53c12a3af99f5 +config: dd1d72d36fbb462d56f322ffc7b5a597 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/foxy/.doctrees/doc/acknowledgements/acknowledgements.doctree b/foxy/.doctrees/doc/acknowledgements/acknowledgements.doctree index b2253eb1ad4b8025b8cedebd92f2d557ccbc57a3..b74f704ae0129e1f2d6ef4db7dade367928a8e00 100644 GIT binary patch delta 66 zcmeCO>ayBk#AsNMQj(XSoSmnilxUV@nVe*nn3`;oW?^QTYG`g|W|?ego@kb4m}Ze` VZef&YZeo-;*^otSb0yayBk#AsNOnPOmGY*?h9m~3WXXl$Hjl9*xtW<|vY~mRS(;&* TMXI@lQKGqtQR3!k#>6%N!_yR$ delta 64 zcmdnf&$OqXX@eG{VM%6+fqAiEk$z&bnSr6PahgeDnrULHfr)XdWlFN4nR%jtv6+#v S0Z_uw!qmvpU~@EMVjBR8kP_Aa diff --git a/foxy/.doctrees/doc/getting_started/getting_started.doctree b/foxy/.doctrees/doc/getting_started/getting_started.doctree index 5ac97f226a63e4a06d2e75a5e0048f46fd298158..7ce6518602e9bd1715df469701c8da72e02e6a1c 100644 GIT binary patch delta 64 zcmez0#r(gEd4mC?VL?hsUVd_Ro_xtW<|vY~mRS(;&* TMXI@lQKGqtQR3!AM!6#ZxtW<|vY~mRS(;&* XMXI@lQKGqtQDSo_3-CN=aURa(146QleRsWpa{PVrsHUnuVEVs-d}=nPsw}d7@dGVVXs% RxrI@pxrtHY=5odsB>=(F6m3-KW{QD%v0;&ZVzQZmp|NqANn)C5Vyc0OajIoXvZ0xIqJgoQk+A_# Q!qCFh$kJeQIb(|w0Emwgw*UYD diff --git a/foxy/.doctrees/doc/ros2_control/doc/index.doctree b/foxy/.doctrees/doc/ros2_control/doc/index.doctree index 77a769f8f0930ec35d2a282c677b4f329ac431cd..4d2c8789ba0776364080037f33465ac173c70ec8 100644 GIT binary patch delta 62 zcmX@5cS>)A9iw4EN=aURa(146QleRsWpa{PVrsHUnuVEVs-d}=nPsw}d7@dGVVXs% RxrI@pxrtHY=6uH6q5z$F6dM2l delta 62 zcmX@5cS>)A9iw4MW{QD%v0;&ZVzQZmp|NqANn)C5Vyc0OajIoXvZ0xIqJgoQk+A_# Q!qCFh$kJeQKI3gs0Aw~2T>t<8 diff --git a/foxy/.doctrees/doc/ros2_control/hardware_interface/doc/fake_components_userdoc.doctree b/foxy/.doctrees/doc/ros2_control/hardware_interface/doc/fake_components_userdoc.doctree index 56e1f4c8d014a4d55d3350b43190731aeb52ae7c..53ee16d6ddbf1715734fc6556c636a885cfb5ceb 100644 GIT binary patch delta 62 zcmcbcc{g)|1EXOrA8KYrAN=aURa(146QleRsWpa{PVrsHUnuVEVs-d}=nPsw}d7@dGVVXs% RxrI@pxrtHY=5)pq0|2|w6iWaA delta 62 zcmcbed^>rA8KYrIW{QD%v0;&ZVzQZmp|NqANn)C5Vyc0OajIoXvZ0xIqJgoQk+A_# Q!qCFh$kJeQI%A0e0D_GYjQ{`u diff --git a/foxy/.doctrees/doc/ros2_controllers/diff_drive_controller/doc/userdoc.doctree b/foxy/.doctrees/doc/ros2_controllers/diff_drive_controller/doc/userdoc.doctree index 313490de82971fbd5ce131e51f77b054e2030989..1d7fff199b21c48f2686067c55e8eb2ed43499cf 100644 GIT binary patch delta 62 zcmdn4vt4I{52Im0N=aURa(146QleRsWpa{PVrsHUnuVEVs-d}=nPsw}d7@dGVVXs% RxrI@pxrtHY=32&GA^?_-6YBr~ delta 62 zcmdn4vt4I{52Im8W{QD%v0;&ZVzQZmp|NqANn)C5Vyc0OajIoXvZ0xIqJgoQk+A_# Q!qCFh$kJeQE#oc`09{KGEdT%j diff --git a/foxy/.doctrees/doc/ros2_controllers/doc/controllers_index.doctree b/foxy/.doctrees/doc/ros2_controllers/doc/controllers_index.doctree index f68062094b908321ee6d51e966d3a63b3cf9cdd5..193c730912b7e0a70a128f47c4bf7b2039432976 100644 GIT binary patch delta 71 zcmdm$vMXhS2BT3yN=aURa(146QleRsWpa{PVrsHUnuVEVs-d}=nPsw}d7@dGVVXs% bxrI@pxrtGt{$vLw(a95}MK`xFZZiM?X&e^m delta 71 zcmdm$vMXhS2BT3)W{QD%v0;&ZVzQZmp|NqANn)C5Vyc0OajIoXvZ0xIqJgoQk+A_# a!qCFh$kIT6vV)T73-CN=aURa(146QleRsWpa{PVrsHUnuVEVs-d}=nPsw}d7@dGVVXs% RxrI@pxrtHY=5ofRd;o%S6LtUq delta 62 zcmbQEFh^m78>3-KW{QD%v0;&ZVzQZmp|NqANn)C5Vyc0OajIoXvZ0xIqJgoQk+A_# Q!qCFh$kJeQIpb1307)+qxBvhE diff --git a/foxy/.doctrees/doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc.doctree b/foxy/.doctrees/doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc.doctree index c054743d5b3a4e658a8b889a554eacfe586eb5e7..95ec301c482d26c5f55632a9553588790850420d 100644 GIT binary patch delta 62 zcmccUe9?JB0;6F;N=aURa(146QleRsWpa{PVrsHUnuVEVs-d}=nPsw}d7@dGVVXs% RxrI@pxrtHY=823B3IMT|6bAqR delta 62 zcmccUe9?JB0;6F`W{QD%v0;&ZVzQZmp|NqANn)C5Vyc0OajIoXvZ0xIqJgoQk+A_# Q!qCFh$kJf*L`DY%0C-apNdN!< diff --git a/foxy/.doctrees/doc/ros2_controllers/forward_command_controller/doc/userdoc.doctree b/foxy/.doctrees/doc/ros2_controllers/forward_command_controller/doc/userdoc.doctree index c5864800fa5a08aa14b982e26096f52cac7f7b5b..0fdb243b0755a28c3877997d7964ea19972a395c 100644 GIT binary patch delta 62 zcmaE&@I+xl7^7i9N=aURa(146QleRsWpa{PVrsHUnuVEVs-d}=nPsw}d7@dGVVXs% RxrI@pxrtHY=61%rd;qBe6kY%T delta 62 zcmaE&@I+xl7^7iHW{QD%v0;&ZVzQZmp|NqANn)C5Vyc0OajIoXvZ0xIqJgoQk+A_# Q!qCFh$kJeQJL6qG0B^q%pa1{> diff --git a/foxy/.doctrees/doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc.doctree b/foxy/.doctrees/doc/ros2_controllers/imu_sensor_broadcaster/doc/userdoc.doctree index 38ecf03af8dbb5a402211e0cef1617b288c3dcb9..b394200735e066248b9bc79baeee7c3f7055201e 100644 GIT binary patch delta 62 zcmZqIYuDT0$7ooPQj(XSoSmnilxUV@nVe*nn3`;oW?^QTYG`g|W|?ego@kb4m}Ze` RZef&YZeoSpb-;6LtUq delta 62 zcmZ2&yV`a`0Ha|^W{QD%v0;&ZVzQZmp|NqANn)C5Vyc0OajIoXvZ0xIqJgoQk+A_# Q!qCFh$kJeQBcqlq0AFYkxBvhE 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 81771ebfba5d66248ceceb24bcc50821d2eeaf57..2086b9090c366fe6f0f21bdce39553ea9271e764 100644 GIT binary patch delta 62 zcmaE<@ls=hAERMGN=aURa(146QleRsWpa{PVrsHUnuVEVs-d}=nPsw}d7@dGVVXs% RxrI@pxrtHY=6c3gLIAB=6nOvu delta 62 zcmaE<@ls=hAERMOW{QD%v0;&ZVzQZmp|NqANn)C5Vyc0OajIoXvZ0xIqJgoQk+A_# Q!qCFh$kJeQJ>x4O0CX1;y8r+H diff --git a/foxy/.doctrees/doc/ros2_controllers/joint_trajectory_controller/doc/userdoc.doctree b/foxy/.doctrees/doc/ros2_controllers/joint_trajectory_controller/doc/userdoc.doctree index 3f2a5f1fdfcd48bc4d41772aea131a77ce08a7f2..d9e4ef6a98d7b60ddded64931661db065a9d33dc 100644 GIT binary patch delta 64 zcmccD&UCMxX+s2~VL?hsUVd_Ro_xtW<|vY~mRS(;&* TMXI@lQKGqtQR3!K#?U4J+iw*V delta 64 zcmccD&UCMxX+s2~VM%6+fqAiEk$z&bnSr6PahgeDnrULHfr)XdWlFN4nR%jtv6+#v S0Z_uw!qmvpU~?y9XcGXUEE84$ diff --git a/foxy/.doctrees/doc/ros2_controllers/position_controllers/doc/userdoc.doctree b/foxy/.doctrees/doc/ros2_controllers/position_controllers/doc/userdoc.doctree index b57700261df74c9a325372e0a2d224c5f1c6e850..90b847ad50c27fd53d3a401153b2823c3e47ae13 100644 GIT binary patch delta 62 zcmdm`uuEZs7o%Z8N=aURa(146QleRsWpa{PVrsHUnuVEVs-d}=nPsw}d7@dGVVXs% RxrI@pxrtHY=4!_Md;pQ=6Vw0z delta 62 zcmdm`uuEZs7o%ZGW{QD%v0;&ZVzQZmp|NqANn)C5Vyc0OajIoXvZ0xIqJgoQk+A_# Q!qCFh$kJeQHRFCh09d0E761SM diff --git a/foxy/.doctrees/doc/ros2_controllers/tricycle_controller/doc/userdoc.doctree b/foxy/.doctrees/doc/ros2_controllers/tricycle_controller/doc/userdoc.doctree index 42138b317c2b3b6ef8b6dc301897e85d091ffe78..7781f5994d0e6aee4873abc89e353757a17fb33e 100644 GIT binary patch delta 62 zcmbQMF;`=Q2cuy@N=aURa(146QleRsWpa{PVrsHUnuVEVs-d}=nPsw}d7@dGVVXs% RxrI@pxrtHY=1RsTLI8&-6ORA@ delta 62 zcmbQMF;`=Q2cuz0W{QD%v0;&ZVzQZmp|NqANn)C5Vyc0OajIoXvZ0xIqJgoQk+A_# Q!qCFh$kJeQCF2qy08Ql)(EtDd diff --git a/foxy/.doctrees/doc/ros2_controllers/velocity_controllers/doc/userdoc.doctree b/foxy/.doctrees/doc/ros2_controllers/velocity_controllers/doc/userdoc.doctree index b9302ebf412fc966644d7e12cad2d044ccaaa152..20a0980e0130eda832096d3ec3c63f8a6bf7b9bc 100644 GIT binary patch delta 62 zcmdm`uuEZs7o%Z8N=aURa(146QleRsWpa{PVrsHUnuVEVs-d}=nPsw}d7@dGVVXs% RxrI@pxrtHY=4!_Md;pQ=6Vw0z delta 62 zcmdm`uuEZs7o%ZGW{QD%v0;&ZVzQZmp|NqANn)C5Vyc0OajIoXvZ0xIqJgoQk+A_# Q!qCFh$kJeQHRFCh09d0E761SM diff --git a/foxy/.doctrees/environment.pickle b/foxy/.doctrees/environment.pickle index 4d6d5599f3e851c50e3f4d4736b64d004731ade8..06ccf71c8b1320800262bfa2685cae7013ce3b60 100644 GIT binary patch delta 14490 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 diff --git a/foxy/.doctrees/index.doctree b/foxy/.doctrees/index.doctree index 8afef251ff59f688c1116ea95b6fc4e399e0b524..5e66718f5ee1063139749b30e3f86fe0c11113be 100644 GIT binary patch delta 82 zcmdmZpK;@T#tmkSh6O1ldHKoNdHP9-W=WRGNoI+u$tGzQW|paj=4NJ=$%f{MW@(0L m7OCbIMv3MoMv0r#8IOf98gJGMGh<{lo_s!BdUHd#p#%V#y&B{I delta 82 zcmdmZpK;@T#tmkSh9#LP2Ij?vMf!=!W(J1F#%U&rX{L#(1}4U-mMO`GX6A_o#%4yw l20#fz3sWOYgU#uT$3hs5HtU6%F)|uWJ|8ZDevelopment Organisation and Communication -

Built on 2024-01-02 at 05:31 GMT

+

Built on 2024-01-03 at 05:31 GMT

diff --git a/foxy/searchindex.js b/foxy/searchindex.js index a6da7b664e8..cfe4f20fc75 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, 24], "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, "2024": 24, "02": 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, 24], "goal_tim": 20, "05": [20, 24], "03": [20, 24], "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, "2024": 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 fc6713d375a..2635d1c4057 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: 69392cf4ecb9c8e97f731ace5d0b8be5 +config: 2ace361b3d598691e47ccc431be15afe tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/galactic/.doctrees/doc/acknowledgements/acknowledgements.doctree b/galactic/.doctrees/doc/acknowledgements/acknowledgements.doctree index c0fb5d31a4fb07c4a6954e6e927c943c01b34134..de6fe3dc95262d01f44deac9457fcff8105b854f 100644 GIT binary patch delta 66 zcmeCO>ayBk#AsNMQj(XSoSmninrv!mXayBk#AsNOnPOmGY*?gkWM*QJoNQ*CWMO2SVr*z(VPS5TVrrh8nq+KdZf=>D VoSJN8l4zPd*^otSb0yiOJ?@#>6%NsazBR delta 64 zcmdnf&$OqXX@eG{VM%6+fqAiEk-m|ci9vF*nQ@YZk#UN#p@oHoxmk*-d2(u!v6;EK TWm6%NfUOf- diff --git a/galactic/.doctrees/doc/getting_started/getting_started.doctree b/galactic/.doctrees/doc/getting_started/getting_started.doctree index 8e321d70bfa2bf75fa3880d6ab7d64ab36683bb7..aeb8b49d8491c82a2a45b615dc5531114c6ca516 100644 GIT binary patch delta 64 zcmez0#r(gEd4mC?VL?hsUVd_Ro_=bwsimcbQKE%KO0uy@iiMexsfl^AnYp2%d0L`{ TQEH-*K}u?>iOJ?fM!6#Z$x9T5 delta 64 zcmez0#r(gEd4mC?VM%6+fqAiEk-m|ci9vF*nQ@YZk#UN#p@oHoxmk*-d2(u!v6;EK TWm{DapnrDHdi%rY7deX6A;5=4pu* UMyZKL1}UkjCMKI>8O5gn0MVfoZvX%Q delta 64 zcmeyeis{QLrVTobh9#LP2Ij?vMfyf&CI-pLX2wYtM#d?|h87kU=4L6T=EiAi%PxNYabu?;&8>3-CN=aURa(146YO<-NrG-(Vg+)rTu}O-BnUSf9d9sdv RqLD#LYO0CJ=5oe!+5nd%6Yl^3 delta 62 zcmX>abu?;&8>3-KW{QD%v0;(Ek(r4>aWYLc;;xw&Op Ra%!@XNup`;=5oe!+5m2K6G;F7 diff --git a/galactic/.doctrees/doc/ros2_control/doc/index.doctree b/galactic/.doctrees/doc/ros2_control/doc/index.doctree index ddf97330587637cc2a200947e092849d4bc8ef15..aa46a67153ad24f45411077ccbab10e5fbeee3e4 100644 GIT binary patch delta 62 zcmdm_ze#_C9iw4EN=aURa(146YO<-NrG-(Vg+)rTu}O-BnUSf9d9sdv RqLD#LYO0CJ=6ptHF#vYk62kxh delta 62 zcmdm_ze#_C9iw4MW{QD%v0;(Ek(r4>aWYLc;;xw&Op Ra%!@XNup`;=6ptHF#t|15*+{l 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 d9cfe2e479e84cb9d82be13e335683d2299b85b1..b260d14c699bcfa2b4287e1389e6084c15e9e3d1 100644 GIT binary patch delta 62 zcmcbcc{g)|1EXOdv RqLD#LYO0CJ=0e6CV*sae6W0I$ delta 62 zcmcbcc{g)|1EXO{W{QD%v0;(Ek(r4>aWYLc;;xw&Op Ra%!@XNup`;=0e6CV*q}`6EOe) 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 5bc2344fb6387aa9a74f2d37bfe94eb9c7cd4be4..602284f775e078a77e2a2587b10e36fde8e33c3e 100644 GIT binary patch delta 64 zcmZpl%h*1baf1h=VL?hsUVd_Ro_=bwsimcbQKE%KO0uy@iiMexsfl^AnYp2%d0L`{ TQEH-*K}u?>iOJ?lMm}EvoC6bK delta 64 zcmZpl%h*1baf1h=VM%6+fqAiEk-m|ci9vF*nQ@YZk#UN#p@oHoxmk*-d2(u!v6;EK TWm{DapnrDHdi%rY7deX6A;5=4pu* UMyZKL1}UkjCMKKn8DB*L0MBw23jhEB delta 64 zcmcb)jq&C-#tn9ih9#LP2Ij?vMfyf&CI-pLX2wYtM#d?|h87kU=4L6T=Edv RqLD#LYO0CJ=5)p{`T(Ke6g2<< delta 62 zcmcbebUSH-8KYrIW{QD%v0;(Ek(r4>aWYLc;;xw&Op Ra%!@XNup`;=5)p{`T%(`6ORA@ 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 adb517505433459d80ac0b61c1b53d82e8654d48..73cc5bb8ecd011738a766bf50ea06866a63251a0 100644 GIT binary patch delta 62 zcmdn4vt4I{52Im0N=aURa(146YO<-NrG-(Vg+)rTu}O-BnUSf9d9sdv RqLD#LYO0CJ=32&GA^?0B6IcKM delta 62 zcmdn4vt4I{52Im8W{QD%v0;(Ek(r4>aWYLc;;xw&Op Ra%!@XNup`;=32&GA^=lp60!gQ diff --git a/galactic/.doctrees/doc/ros2_controllers/doc/controllers_index.doctree b/galactic/.doctrees/doc/ros2_controllers/doc/controllers_index.doctree index 760da94d5a3a73d67b9cbb7eedec880be05f3d8c..6fb4a37ddf2adf149b1a5eed63e4e17cb073b5bf 100644 GIT binary patch delta 66 zcmX?dv VqLD#LYO0CJWJWou&BcuVMgZZy6g2<< delta 66 zcmX?aWYLc;;xw&Op Va%!@XNup`;WJWou&BcuVMgX>V6ORA@ 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 e872c6dc90482292e94b4880d6abc0c38848a029..7b1c38ae00d4147f5e13715dcd6eef6e5e6cc482 100644 GIT binary patch delta 64 zcmZ2^g?Z%_<_!*vh6O1ldHKoNdHSizrk0i#Mu`>{DapnrDHdi%rY7deX6A;5=4pu* UMyZKL1}UkjCMKH;8F#z@0LTLsOaK4? delta 64 zcmZ2^g?Z%_<_!*vh9#LP2Ij?vMfyf&CI-pLX2wYtM#d?|h87kU=4L6T=E3-CN=aURa(146YO<-NrG-(Vg+)rTu}O-BnUSf9d9sdv RqLD#LYO0CJ=5ofRd;n+r65{{> delta 62 zcmbQEFh^m78>3-KW{QD%v0;(Ek(r4>aWYLc;;xw&Op Ra%!@XNup`;=5ofRd;mX85dv RqLD#LYO0CJ=823B3ILZM6LbIo delta 62 zcmccUe9?JB0;6F`W{QD%v0;(Ek(r4>aWYLc;;xw&Op Ra%!@XNup`;=823B3IJ|!63zes 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 bc9669b66459247ed52afcc9c934a626259406c3..bb5fc1de070eea1984a1a59464be5d3390342048 100644 GIT binary patch delta 62 zcmaE&@I+xl7^7i9N=aURa(146YO<-NrG-(Vg+)rTu}O-BnUSf9d9sdv RqLD#LYO0CJ=61%rd;pG%6UzVq delta 62 zcmaE&@I+xl7^7iHW{QD%v0;(Ek(r4>aWYLc;;xw&Op Ra%!@XNup`;=61%rd;n$K6D0ru 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 b8a126abf2be75d3a8d1228c4610424041d7cebc..9af881046725d7c6c72a8e32ecad0000752d5cbd 100644 GIT binary patch delta 62 zcmZqIYuDT0$7ooPQj(XSoSmninrv!mXD RoSJN8l4zQ|xt_5@6aYPs5-9)x 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 7df06829ad5529eb126fe7b5a037a27e44b78303..941f8b9b176d1b039d6d21b9f6eebe439c1b2f75 100644 GIT binary patch delta 64 zcmZpfz}PZ@aYF#3VL?hsUVd_Ro_=bwsimcbQKE%KO0uy@iiMexsfl^AnYp2%d0L`{ TQEH-*K}u?>iOJ?h#%4DFmlzYj delta 64 zcmZpfz}PZ@aYF#3VM%6+fqAiEk-m|ci9vF*nQ@YZk#UN#p@oHoxmk*-d2(u!v6;EK TWmiOJ?p#?U4J!1xq_ delta 64 zcmccD&UCMxX+s2~VM%6+fqAiEk-m|ci9vF*nQ@YZk#UN#p@oHoxmk*-d2(u!v6;EK TWmdv RqLD#LYO0CJ=4!_Md;oWE6F~p~ delta 62 zcmdm`uuEZs7o%ZGW{QD%v0;(Ek(r4>aWYLc;;xw&Op Ra%!@XNup`;=4!_Md;m_s5}N=3 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 c69230a5997c83c446bf4f85099132ad4f752400..8e6dd75032998d796ce0060cc683ed55bd2fc4d2 100644 GIT binary patch delta 62 zcmdm`uuEZs7o%Z8N=aURa(146YO<-NrG-(Vg+)rTu}O-BnUSf9d9sdv RqLD#LYO0CJ=4!_Md;oWE6F~p~ delta 62 zcmdm`uuEZs7o%ZGW{QD%v0;(Ek(r4>aWYLc;;xw&Op Ra%!@XNup`;=4!_Md;m_s5}N=3 diff --git a/galactic/.doctrees/environment.pickle b/galactic/.doctrees/environment.pickle index 1c6568323e42bb4240d1136f97a6e00db598f488..2096b4047ac872b928ad3a4b97a4e317a81df3f9 100644 GIT binary patch delta 14024 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
Mj5P delta 14197 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 diff --git a/galactic/.doctrees/index.doctree b/galactic/.doctrees/index.doctree index 3e007b3150d26c712a1799582125cae55d50f91a..f59c169500dadf9e1340fe2ec0381f7f3068a6fb 100644 GIT binary patch delta 82 zcmX?jpYh;*#tmkSh6O1ldHKoNdHSizrk0i#Mu`>{DapnrDHdi%rY7deX6A;5=4pu* mMyZKL1}UkjCMKKH8Lx#f8gI4>Gh<{lo_s%Cdh>*ELkR$Z@EWlI delta 82 zcmX?jpYh;*#tmkSh9#LP2Ij?vMfyf&CI-pLX2wYtM#d?|h87kU=4L6T=E*ELkR#)dKw7; diff --git a/galactic/index.html b/galactic/index.html index f40c3c9e36b..ecc3d90e1e2 100644 --- a/galactic/index.html +++ b/galactic/index.html @@ -152,7 +152,7 @@

Development Organisation and Communication -

Built on 2024-01-02 at 05:31 GMT

+

Built on 2024-01-03 at 05:31 GMT

diff --git a/galactic/searchindex.js b/galactic/searchindex.js index d75123ae633..53408c8f5e9 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, 23], "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, "2024": 23, "02": 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, 23], "goal_tim": 20, "05": [20, 23], "03": [20, 23], "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, "2024": 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 e1e476a1cd2..907aab0c4ab 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: cbd1f7343fd20ec13de44c33dab98e84 +config: 9b455f9d577ba5a895685b45f356a43b tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/humble/.doctrees/doc/acknowledgements/acknowledgements.doctree b/humble/.doctrees/doc/acknowledgements/acknowledgements.doctree index 6050d94748011f8e10e975d7f095fabe48707f53..b65c80b7aca03accb594e1371fa8909ddb7b6224 100644 GIT binary patch delta 4914 zcmeHLYiv|S6wb`tJ6CAC-O8)7m8DTZDeT_&qrA#12vtgHdD((3ZFyAbBY_BAC=g9d zi%7|Z4v(NEh)Ri+axIfWKoCsC6bd1l7(pnaF({-B3F;qlcDI2o-SxM@X8zpFdCZw} zzVDpL{pFzd{y{Idk>9bVnezduqIgwVdC?nXe$lXsm&jU4kz$B?p<&9!B})q>#Z)EL zTB@6pD2s)~MUp{$t-@e?WuDuq0Yed(=WO$R1)Nhuk8&h6mrH@7Oqz@N0GVA2=GZri zc)MVDb-b#mmL*w+sxSu~)nJx=q_%&8I!2Vnh;pu^rArE#)QL*%2_;vZ4A&qCEOPk@ z@IXx`*$Y9yt*JiKP-Kfa(k;W(NXIQWE9Ac6h3a@oQbfs+G*vOJpk#sjp=%>uQqyIH zfNx=`(=aXz*{_V+o1lxTY?>@4QPvca{QzV;6Vv8`e#&rBNtc-o*|baW+ijz(o?0#} z+P+*|@Fd^UX&ZeGfC5&@^_X<5K^~xzq`&Y|yH5Kpo|Rr#4NDb8L$$kBEEb~FYaoQG zO3vi4g0Vt&C8I#1qWCOJ6BR?2MN?Hsa|NFjs@IgU)p4?>F}R7MZZI_5#j(rvJBpVj z(UMF_VmMStQZdSQZf8WRRFZvhzF=>iT=Aq_WQDVAem@?#oXY$SNg*}>-M)Mw05rSl z>=IHwjb9%pnTlwcn#G`RUwUV;bE$mEFreCJcBVL4@8<)1|AV}i@#tm(FzrpY$G*1n zhFv&(Es|uPedeRQV{SCqMZWwMdK}^KBH&_-P&CB|GG5mhkr+?O@HB1!{ct;;4(OCr zG)V}NoHo3O@_c$%0VBQO{ln6X@03sO`BBDoI8wxK8T4+}fulpK0ob zC99guawnN)ciayS1>>$+DkMTumkgc_n{*!M*S}g9SZcGBPz(H>IBU+9|AfAiiP&@7ni?+#805-||P$j0p~C#MI3(w2#62B7{Va1^=>pJqH-WYaJ(m%jP|hJ5^^ zUCjvZzqgv7#@UnZd4dF9?-KRMMQ+@JS)`x|VAA<14kT)pVTi1wTdK@h_^5G+TvWr1 zJ=~8pYX_PM=+%$W73kJ|k={i;0f$u|Cq=v@Y2zy^prZbNt>0jerk5$tKt+~N|!dlgNTuP7B^Cc+Q89hYY z%~!`#hN4OQeqouDa)8}s!e0Jo*jqK5WaPmgX#PH4VA$$`A$DrFG@$}859RTk1;Y)_ zeVngOj06t*CS9$l?cW;ST0}0~#JeB2quDLI324Q2{0E9A+s~1m%Y_sY^~{cExQk@l zIh0jj0TSs+FJKAwp5&Y1=V#(SyjwLoDPB_#n;IR8+9lSq=@v&5BaZ#cU8`h^n zOamj}_}D7s^h|-LHC{oAaRP0>AMF1S%Q(4|qhe!~g&Q delta 4504 zcmeI0Yiv|S6vv&JJ991cu?-Nk3$#T8NuhUV?)$bN6nR*lMT$Jy@Uqk(5|)RAva}XM zlz<`V1;%O=2z(KZNH;i2QSgh20R+A%$fGnVqA?Nh0csGOz1znECB~1E?k0CLk8{qQ z^PlsZ$zFdi_xty9m3q9bYQLfZedVGm>a1YPBev~YW|d1lm$7Q2%Cjt{FQ}eB-(1M_ zDvNo#V=Sy*XjDi1U4?z(HJ|{Y(%uh=Tf=c9@aNL(_|cq3g}+=*!iZ6wg9a4yk61JO zC3$t}%wkNpOe(#2JRgwRJ(*r;&~lv?=@t)tpgbRsI#(g|Tz;yNgrQ~oEuY2GEK_q_ zi^*2WTT^)SeTezdIEiK3nrpZowH(Kyj^(*FpC3V$Ds#)3S;YLvi;LswgRda$TAtzX zQ>9>9ykf{Skf!HRqe!=l4E}n98u2%e%Jy#zUF2sysXhQpiQgC+2k6;$N#b+qSBk&? zco>?LPi+8e{f~Z|n#|$OR#cl|>N+!A*RUN&YO?MquIO>EB)>pF{gysqVEEv}SjaGB z;;C!O#4~1^I?uj>rur4d^%>Ml`3Bz7^ujy!cpCZY$agY4hceUCEyFRG!PyR}&C=;z zX|v%0TFW|rUSZnq^)oQ)6NQPA`2vW=U&BLLL3(q5?XNo>%d#BJ)@5d0+cc@|1li@e z&9I(t-HV>%v&Z6<{3;-)f?~_{2cY?ad$NFC z;*at8y29u6Q7ZVn+mMJUW%#y|kur}u2^>xi$Sd|u$1MuKJPTC@Z9lSSjaXcPd0XF+ zUg~*KJRdJWysnmn6Lk;^d0KnOWO!ckC@AODL~Ap2<`^C`sA-sv%a^s1**vQWsNza4 z8VBM7UKm}6s7f-Qt$7GgcP{VNK`yR;zWe2D%P*J%KHNud@Qpd6r@6d4?i|Be3 zf$`|7V#r6-$wDn#ifc3PH@Rsy8KdyIbJU=qVxhHcFy~ zAwRPfH{54$Bz^En+wlwH@3(QJ%RMCb#|5$F1X1rlT6_^n42HiU9^|`PaYM&u3j)Nl zx&oerog&44=`7Kpyt_#XPE+4ZF+8#d)Bwi!=fO&`xtZKRca4d8t>jw-9j`0H5Yu$q za&=vD)@79G$+R>#;hXpPx%e|#lUfSz9smUjVw%+%P)sRMdf?8!ASEMC;enlY7r1N_ zkyj7KNO6gJ2qw*gsprn(-`nB_?Vc?%*TJ}u?Ht@OwN+gG36D(mdUCvq#nNk-rF4oY zgEHTf2dS4*qbw;{sa~Pb z^AIor^5|df(gv%LuQsS{YH&-|-d9d@+4-=@7)bO^C+Ee)zKNrH$0{%a0*~)sPQs#$ zl50?8X=HCUKk)->?~v#5=={V5vTeeMZEC4<=ZW|s=f_~Eo1{huleq50-$M$t9^zL^u# delta 64 zcmey+$Mm6(X@eG{VM%6+fqAiEk-nLkg{eu3g@L7op<$YFilwQkp;1y=Vxmc^p;3yd Tp{0?zacWwsaoXl+M$t9^lNb|0 diff --git a/humble/.doctrees/doc/gazebo_ros2_control/doc/index.doctree b/humble/.doctrees/doc/gazebo_ros2_control/doc/index.doctree index 775ca49ed596ae389cf0c5213326e79b171a31d7..d3d89d5c378c272b08e6da6657f15ef5d613b0f8 100644 GIT binary patch delta 129 zcmbQejcN8arVSR1Mg=J)dHKoNdHM$CmMKX_rm4xs<_2bo<`zaNscDIZ#ug@qCYEVt h7KR2!28k)jhUWT{?{~>=Zf8`jB2TZx=5N)i@&ItKDER;Y delta 129 zcmbQejcN8arVSR1MkSdk2Ij?vMfzrD7N#aC76z6UhK6azDVC=Zf8`jB2TZx=5N)i@&NI(C)EG| diff --git a/humble/.doctrees/doc/getting_started/getting_started.doctree b/humble/.doctrees/doc/getting_started/getting_started.doctree index 8b0f06803438af3eb50f1160ee6346b1dc60cee2..0f01c18231b36a888ad6536366f7ac3481aeeca5 100644 GIT binary patch delta 64 zcmaF*kLm0@rVR#+h6O1ldHKoNdHM$CmMKX_rm4xs<_2bo<`zaNscDIZ#ug@qCYEVt U7KR2!28k)jhUS|S8Q=5*0Jv2YmjD0& delta 64 zcmX>*kLm0@rVR#+h9#LP2Ij?vMfzrD7N#aC76z6UhK6azDVCp?PyC}} delta 64 zcmex$jPcho#tjyXh9#LP2Ij?vMfzrD7N#aC76z6UhK6azDVCnsL`_#tm+ah6O1ldHKoNdHM$CmMKX_rm4xs<_2bo<`zaNscDIZ#ug@qCYEVt T7KR2!28k)jhUS~g8J$Z2*Jl)S delta 64 zcmdn>nsL`_#tm+ah9#LP2Ij?vMfzrD7N#aC76z6UhK6azDVC6 RfssLCO0uE(=6uFdaR7|)6BYmf delta 62 zcmaE2_{4C79iw4MW{QD%v0;(EnVE&DNs5JmrG=qknsJJysi~n+Qd(l7Nvfeyim9Qc Rk-2edTB>o{=6uFdaR6a&5`+K% 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 790b4c0defb37fa02dd1cf6c558732b8927258dd..96e7c20d43496f0c2f8e61d52d4c75c3d3b6d92a 100644 GIT binary patch delta 69 zcmdn9f^p9Z#tj~fMg=J)dHKoNdHM$CmMKX_rm4xs<_2bo<`zaNscDIZ#ug@qCYEVt Z7KR2!28k)jhUWT{{aKwi?`5nH0stT06|DdO delta 69 zcmdn9f^p9Z#tj~fMkSdk2Ij?vMfzrD7N#aC76z6UhK6azDVCnBC#tlJ?Mg=J)dHKoNdHM$CmMKX_rm4xs<_2bo<`zaNscDIZ#ug@qCYEVt Z7KR2!28k)jhUWT{PjY!|KEqg?0RTS+7P0^U delta 69 zcmdmgg>nBC#tlJ?MkSdk2Ij?vMfzrD7N#aC76z6UhK6azDVCq50-Q#?5vBn0ynT delta 64 zcmZ3|z__G=af1V+VM%6+fqAiEk-nLkg{eu3g@L7op<$YFilwQkp;1y=Vxmc^p;3yd Tp{0?zacWwsaoXlW#?5vBZ2J=p diff --git a/humble/.doctrees/doc/ros2_control/hardware_interface/doc/writing_new_hardware_component.doctree b/humble/.doctrees/doc/ros2_control/hardware_interface/doc/writing_new_hardware_component.doctree index 072f5da824ddd74735aae7cd3abea2fc15858e4e..7366c7755d51ebd19b64b5773198ea2e17ea1d26 100644 GIT binary patch delta 64 zcmZo~WNB|?+2F@$SddbZm!F)Sr*B|xnUZ8=nwo5EZeW&ZZef&?nwDs2Y++((Vwq-U TVQ64vkeHHeXui3gk>fuAj`|ay delta 64 zcmZo~WNB|?+2F@$Sdy7yU|wukq;FXq1$em}rt}Xp~}V TXlZ0_oSK$uoVK~1k>fuAV|fz| diff --git a/humble/.doctrees/doc/ros2_control/ros2controlcli/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_control/ros2controlcli/doc/userdoc.doctree index ddd208a88c13afa7fe1b08eed1358558aa66f99a..51f1ffb155962d710f378598d2375f662a9e48de 100644 GIT binary patch delta 64 zcmbPqpK;QC#tn9ih6O1ldHKoNdHM$CmMKX_rm4xs<_2bo<`zaNscDIZ#ug@qCYEVt T7KR2!28k)jhUS~|8I|(@yX_Oz delta 64 zcmbPqpK;QC#tn9ih9#LP2Ij?vMfzrD7N#aC76z6UhK6azDVCXq1$em}rt}Xp~}V dXlZ0_oSK$uoTfkd!6xy^2R3kS?qFm)2mmL&7fJvC diff --git a/humble/.doctrees/doc/ros2_control_demos/doc/run_from_docker.doctree b/humble/.doctrees/doc/ros2_control_demos/doc/run_from_docker.doctree index 9650b179c98de6506793a0f78cff9a7d43d0c2a4..e50988d48f51f7bace72e982dba7e682aefbf3a8 100644 GIT binary patch delta 62 zcmeB_>Xh2h&th1RQj(XSoSmm{U~ZX`WMrC}Y;0~|mS}Eal#-g3XlQIXh2h&th1TnPOmGY*?gkW@ce(l44Xq1$em}rt}Xp~}V gXlZ0_oSK$uoTfjCUwpExfN1j$#_c;8886!b09q*)WB>pF diff --git a/humble/.doctrees/doc/ros2_control_demos/example_10/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_control_demos/example_10/doc/userdoc.doctree index 8c9c9a0a59c80fb0134346c25b0b8faf8717cb86..c74f7412d420a694a17772e27f1796510c9dd8d3 100644 GIT binary patch delta 64 zcmdnKk8%4x#tkuyh6O1ldHKoNdHM$CmMKX_rm4xs<_2bo<`zaNscDIZ#ug@qCYEVt U7KR2!28k)jhUS}l8CS&u0LDfXj{pDw delta 64 zcmdnKk8%4x#tkuyh9#LP2Ij?vMfzrD7N#aC76z6UhK6azDVCp}GEKL4NVcwR~cmcQb}e0svpb7Ek~H delta 73 zcmeBQ!PLKkX+sR7QAuWsfqAiEk-nLkg{eu3g@L7op<$YFilwQkp;1y=Vxmc^p;3yd dp{0?zacWwsahm>QL4NVcwR~cmcQb}e0st={6}|uf 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 4b30eeee732fc51b5e6a8bdb182ceea5734b2d5d..c8c29625cdfacf5bdef1027fec4232af810e5d4e 100644 GIT binary patch delta 818 zcmcJN%TE(g6o+%>QRAeEA-Et)$c02)2<^1RPTTNE-ROo0L7LPDWSHsnL79&2RH)I= zE@VNwFx=|KU|8V;Z78>fuxMbZ3pH-oxa1EoYTUSTW-7I1@9uZb`Oe9goBQ((ReMV@ zdG^VxDiZ>?ChKZSnpd5?;Fsszmm`u#;Ju>YbITD$ba{M3t|7nT^|^RAFUpcjaN^*( z3;5boJE?=m3p)NT)N#j1*YcDuE@%-M^>IjFjA!%!hY(7})rgq3B0@_6#5)ADjZn_a zd?Vj)W>Jl1lkNOp<^=C@@O>N?PGwOhmdYk&q!Ne!2L*e$ci4YIr)kqF)8f){x@poT zVzCX6cGk2g$4=cT$N17-I+bxFJ*CAZq-E!@bNG_!G5haX{)-2Rk4#Xk5<`ir7`&b2 z%h)nNoJ)iik5)02|if53|o`cwugkC25p`Exa4K zZrd_Z8c!B`@t|S{jRX`MK!pUOWy-c~40#q8iv9R^@;vEI>`+i8pOYUM*dgn82WVT( zAT}+6{L<}=?VVA7YHSSVc&L$?T#jaUjcy0d7cW|8dLAO$_z+`x1-9{KJ_{AxU3dv~ q9E|pmqe7Ko_YMA$!Ta#HevW)y*Rg delta 776 zcmbu4KTH#07{>G7Kf{H@Dw={i998S0aM#jai$x2AP9%*AhN0l$_1cp5BBc#hAygyr z4~@~h=pwPks8Lc-`bkVAXX0w2aS;~-ZjQvb83*q!r8dUR?aA~0p6B_#mkZR7GQ||w zJBcNxA3WKlD#~M0rrqxk_&U^p7z{{~=2e3}pX3?V6s033c~qYi^vK?r7V~QD*u85% zUccK&4Dk9Pir-~}AIj-tStWfgrs8O*`Iz8JCH0t+>Es1LINvFVZL+2EmJ%&>p{f); zo=eqp_O;59LqVQ~NBA=o{A=Ju{Xnh1R$pzeE4LY|yPlESMAvL$OLR6N7XP&p{@)cc z-xZ-iMIq!Q+rv}9#S_BFaT>p7T^OEZaLvu*y6hmIyPW_jve9#d2OV$s@4%kkBxFdr z*ZhChG@8h}h)%OpW_%UF-$Wv(8UU`?sNOfgUfVq2dfyV zj)Za?!x7W}Q16RSA*FntW|z&&HhepCz^)vc6li#bg@Oi)_^ptGGDa^wWmjr%*?YOd iu!fnLHZuX-aPwr()dvi`L1RV(1NRljVTH^UoB7{b7yqaL diff --git a/humble/.doctrees/doc/ros2_control_demos/example_3/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_control_demos/example_3/doc/userdoc.doctree index 064e1741371f242106550a46e5c6e66218510aa7..83022778afb29509e8b0f6512d300485f9087640 100644 GIT binary patch delta 73 zcmZ4UmTApfrVUYyMg=J)dHKoNdHM$CmMKX_rm4xs<_2bo<`zaNscDIZ#ug@qCYEVt d7KR2!28k)jhUWT{1^L7$Z{-!;yo2$}766!W7zO|U delta 73 zcmZ4UmTApfrVUYyMkSdk2Ij?vMfzrD7N#aC76z6UhK6azDVCL;7YYCX delta 73 zcmbQWoN3l_rVUYyMkSdk2Ij?vMfzrD7N#aC76z6UhK6azDVCp}GF#KpyeQ0=%M|cQC%M2LM>d7KZ=; delta 73 zcmZ49%(T3jX+spFQAuWsfqAiEk-nLkg{eu3g@L7op<$YFilwQkp;1y=Vxmc^p;3yd dp{0?zacWwsahm?*KpyeQ0=%M|cQC%M2LLD}74-lB diff --git a/humble/.doctrees/doc/ros2_control_demos/example_7/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_control_demos/example_7/doc/userdoc.doctree index 76af9ec0dbb2a0d3ce628f5f91775d0bdfc900a1..95b0f3562d003b890429f2859aa218fe778b1173 100644 GIT binary patch delta 73 zcmaEHknP1mwhd8?Mg=J)dHKoNdHM$CmMKX_rm4xs<_2bo<`zaNscDIZ#ug@qCYEVt d7KR2!28k)jhUWT{?>VV9Z)DuQk&)4SJ^-$q7&HI? delta 73 zcmaEHknP1mwhd8?MkSdk2Ij?vMfzrD7N#aC76z6UhK6azDVCVV9Z)DuQk&)4SJ^+3B7oq?F 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 0919a299e6a87c07c102eba0195213985c1d5858..89d8e59a0f2b9b87a4822b4ec44dfb659160427c 100644 GIT binary patch delta 73 zcmX^2mGRtH#tl)7Mg=J)dHKoNdHM$CmMKX_rm4xs<_2bo<`zaNscDIZ#ug@qCYEVt d7KR2!28k)jhUWT{5Aujlo?0cfc`u`2B>=ag7(W02 delta 73 zcmX^2mGRtH#tl)7MkSdk2Ij?vMfzrD7N#aC76z6UhK6azDVC;y17p(vQ diff --git a/humble/.doctrees/doc/ros2_control_demos/example_9/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_control_demos/example_9/doc/userdoc.doctree index f23edd4a8322ed08c3340a7695427221068f86cc..70c25aa9c9963a320fda6dd1f771694f0fa05553 100644 GIT binary patch delta 76 zcmex4kLl+;rVUYyrUfY_dHKoNdHM$CmMKX_rm4xs<_2bo<`zaNscDIZ#ug@qCYEVt g7KR2!28k)jhUWSy`N@+%Mu<#4$Irca9pmX<0Pvq082|tP delta 76 zcmex4kLl+;rVUYyrX`sv2Ij?vMfzrD7N#aC76z6UhK6azDVC)gYoDL#tlA)gYoDL#tlA6 bfssLCO0uE3{$xQx(a94;WH#?+WL5oH{$xQx(a94;WH#?+WL5&-kmKaf1(|VL?hsUVd_Rp1y&(WlEBfX=<{uxq(@txrI?mYFeV9v4x4DiDjCZ Tg`t6wL1Id>q50-o##%Q3%qJ96 delta 64 zcmey>&-kmKaf1(|VM%6+fqAiEk-nLkg{eu3g@L7op<$YFilwQkp;1y=Vxmc^p;3yd Tp{0?zacWwsaoXlu##%Q3pr#YS diff --git a/humble/.doctrees/doc/ros2_controllers/doc/controllers_index.doctree b/humble/.doctrees/doc/ros2_controllers/doc/controllers_index.doctree index fc649f1d359c5f86d5d589f2000c4da0b27c3790..670e4553f533ba55e77b7ebb48157ba2fd7e8321 100644 GIT binary patch delta 67 zcmcbVaw%nl2BT3yN=aURa(14+fw^T$l96d@vaz{=S)#dxQA%oBqM@;ciJ^&Qnwf>6 WfssLCO0uE3{^UX)(argcj|~9($rT;| delta 67 zcmcbVaw%nl2BT3)W{QD%v0;(EnVE&DNs5JmrG=qknsJJysi~n+Qd(l7Nvfeyim9Qc Wk-2edTB>oH{^UX)(argcj|~9LZWN3F 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 5ac0991e40465aadd198a305a519c7d383b8767e..045dfa571d37b736a00f000f4a18b081593f113b 100644 GIT binary patch delta 64 zcmZ2=jd|5I<_!*vh6O1ldHKoNdHM$CmMKX_rm4xs<_2bo<`zaNscDIZ#ug@qCYEVt U7KR2!28k)jhUS|K8F#(}0LEn%3;+NC delta 64 zcmZ2=jd|5I<_!*vh9#LP2Ij?vMfzrD7N#aC76z6UhK6azDVC3-CN=aURa(14+fw^T$l96d@vaz{=S)#dxQA%oBqM@;ciJ^&Qnwf>6 RfssLCO0uE(=5og6asYJi67c{4 delta 62 zcmbQ|FwbFw8>3-KW{QD%v0;(EnVE&DNs5JmrG=qknsJJysi~n+Qd(l7Nvfeyim9Qc Rk-2edTB>o{=5og6asWwg5?=rS diff --git a/humble/.doctrees/doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc.doctree index 8208b7f525aee8302c2e5453f99acab64b8d0e1f..667557cf159539d3496a5ccd9a3ba0a3829c830b 100644 GIT binary patch delta 62 zcmccUe9?JB0;6F;N=aURa(14+fw^T$l96d@vaz{=S)#dxQA%oBqM@;ciJ^&Qnwf>6 RfssLCO0uE(=823B3ILP~6D$A# delta 62 zcmccUe9?JB0;6F`W{QD%v0;(EnVE&DNs5JmrG=qknsJJysi~n+Qd(l7Nvfeyim9Qc Rk-2edTB>o{=823B3IJ$|5}E)2 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 28bf54a8abed185b864d554721fa1f194d2902e0..3014fb56465346dd30f2008f45cb3aed5791b9da 100644 GIT binary patch delta 67 zcmX?^ax!H@7^6`^N=aURa(14+fw^T$l96d@vaz{=S)#dxQA%oBqM@;ciJ^&Qnwf>6 XfssLCO0uE3{$xf)gUve_CmH|%0F4y! delta 67 zcmX?^ax!H@7^6{1W{QD%v0;(EnVE&DNs5JmrG=qknsJJysi~n+Qd(l7Nvfeyim9Qc Xk-2edTB>oH{$xf)gUve_CmH|%(jydK diff --git a/humble/.doctrees/doc/ros2_controllers/gripper_controllers/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_controllers/gripper_controllers/doc/userdoc.doctree index adace5105e3c85fd42623ab2fc02f3781c28d586..1c9e770cd060de16355105eb18469e743480affd 100644 GIT binary patch delta 62 zcmZn;Y!2Mu!Dv{JQj(XSoSmm{U~ZX`WMrC}Y;0~|mS}Eal#-g3XlQIy delta 62 zcmZonZA{(Z$7ooRnPOmGY*?gkW@ce(l44q50-UMiW;6so@iY delta 64 zcmdnm%eb|daYF#3VM%6+fqAiEk-nLkg{eu3g@L7op<$YFilwQkp;1y=Vxmc^p;3yd Tp{0?zacWwsaoXlaMiW;6eqa*u diff --git a/humble/.doctrees/doc/ros2_controllers/joint_trajectory_controller/doc/parameters.doctree b/humble/.doctrees/doc/ros2_controllers/joint_trajectory_controller/doc/parameters.doctree index 2797198601bb9077f548a3feb4ac1ceac2b35279..d4f36148d00c27a1f003fb1b13eeddad82abbd4d 100644 GIT binary patch delta 64 zcmezNkMY|-#tmwWh6O1ldHKoNdHM$CmMKX_rm4xs<_2bo<`zaNscDIZ#ug@qCYEVt T7KR2!28k)jhUS~Y8RhE$_4X9E delta 64 zcmezNkMY|-#tmwWh9#LP2Ij?vMfzrD7N#aC76z6UhK6azDVC6 RfssLCO0uE(=4!^5asZdZ6UP7m delta 62 zcmaFj@Wf$*7o%ZGW{QD%v0;(EnVE&DNs5JmrG=qknsJJysi~n+Qd(l7Nvfeyim9Qc Rk-2edTB>o{=4!^5asX^X6Ey$; 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 d69341f25949a2b542b640f869b710ead3a3486a..35c288451113825f5923e45aed80549a9c754031 100644 GIT binary patch delta 62 zcmbR3JllCg5Tjv1N=aURa(14+fw^T$l96d@vaz{=S)#dxQA%oBqM@;ciJ^&Qnwf>6 RfssLCO0uE(=4M6-1ps!b5_|vv delta 62 zcmbR3JllCg5Tjv9W{QD%v0;(EnVE&DNs5JmrG=qknsJJysi~n+Qd(l7Nvfeyim9Qc Rk-2edTB>o{=4M6-1prGZ5$XT{ 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 1dd34157ccfa7ee8a13d1ad9bf5556c2c81b224d..b9287b6699923130b30c50f644478b5d26b26cc0 100644 GIT binary patch delta 69 zcmeygk?GS$rVUYyMg=J)dHKoNdHM$CmMKX_rm4xs<_2bo<`zaNscDIZ#ug@qCYEVt Z7KR2!28k)jhUWT{`-E*bpJddW4gg2v7J&c& delta 69 zcmeygk?GS$rVUYyMkSdk2Ij?vMfzrD7N#aC76z6UhK6azDVC6 RfssLCO0uE(=1RsTLI7!<60`sS delta 62 zcmbQMF;`=Q2cuz0W{QD%v0;(EnVE&DNs5JmrG=qknsJJysi~n+Qd(l7Nvfeyim9Qc Rk-2edTB>o{=1RsTLI6G-5+VQq diff --git a/humble/.doctrees/doc/ros2_controllers/tricycle_steering_controller/doc/userdoc.doctree b/humble/.doctrees/doc/ros2_controllers/tricycle_steering_controller/doc/userdoc.doctree index 5bb25e7ff9bb87d7a83348580f09eec94300905d..b83b879941130584289259859c384c5e9f97d728 100644 GIT binary patch delta 71 zcmaDJ_&jh!6r)i=N=aURa(14+fw^T$l96d@vaz{=S)#dxQA%oBqM@;ciJ^&Qnwf>6 bfssLCO0uE3{^Wjs(aAsAH8!7Qlv4))WegU) delta 71 zcmaDJ_&jh!6r)i|W{QD%v0;(EnVE&DNs5JmrG=qknsJJysi~n+Qd(l7Nvfeyim9Qc bk-2edTB>oH{^Wjs(aAsAH8!7Qlv4))G-(zp 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 312f20e3b6dfecf688c4a213b7a712c83ed11a88..c43d6e17f67a573a478312b9d4789dceaaf7cae0 100644 GIT binary patch delta 62 zcmaFj@Wf$*7o%Z8N=aURa(14+fw^T$l96d@vaz{=S)#dxQA%oBqM@;ciJ^&Qnwf>6 RfssLCO0uE(=4!^5asZdZ6UP7m delta 62 zcmaFj@Wf$*7o%ZGW{QD%v0;(EnVE&DNs5JmrG=qknsJJysi~n+Qd(l7Nvfeyim9Qc Rk-2edTB>o{=4!^5asX^X6Ey$; diff --git a/humble/.doctrees/doc/simulators/simulators.doctree b/humble/.doctrees/doc/simulators/simulators.doctree index b6116fe6990ad98d2cc0a34ec8ccf1e296616cda..126366f756ba91f8ee1f9fe1b1d644b997cacfe3 100644 GIT binary patch delta 62 zcmeA*=r!1&#%NfOQj(XSoSmm{U~ZX`WMrC}Y;0~|mS}Eal#-g3XlQI diff --git a/humble/.doctrees/doc/supported_robots/supported_robots.doctree b/humble/.doctrees/doc/supported_robots/supported_robots.doctree index 3b517c25553247cf6d702d888c085f9347e09cf6..ddccf7cd700704f9c395bedd9e3f75dbb8795d39 100644 GIT binary patch delta 64 zcmdnDka6Ea#trd|h6O1ldHKoNdHM$CmMKX_rm4xs<_2bo<`zaNscDIZ#ug@qCYEVt U7KR2!28k)jhUS|mFzWdO0K0P&-v9sr delta 64 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 delta 39491 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%0A&D))zqA_NDI>g-H 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 diff --git a/humble/.doctrees/index.doctree b/humble/.doctrees/index.doctree index f656a830298d5caadbc687a15a81f71cc429327c..c5c6609f9bb46ebc543d74a0d212c7a0f9b0d3a6 100644 GIT binary patch delta 82 zcmX?ko$=&##tmkSh6O1ldHKoNdHM$CmMKX_rm4xs<_2bo<`zaNscDIZ#ug@qCYEVt m7KR2!28k)jhUS~o89jm+jW=%yHe+Noo*Wn|y_qTWxEKI$kQuxH delta 82 zcmX?ko$=&##tmkSh9#LP2Ij?vMfzrD7N#aC76z6UhK6azDVCMaintainers
0.82
-
+
- + @@ -183,18 +183,18 @@

Maintainers -
+
0.57
-
+
- + @@ -215,7 +215,7 @@

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

Maintainers
0.75
-
+
- + @@ -308,18 +308,18 @@

Maintainers -
+
0.31
-
+
- + @@ -340,7 +340,7 @@

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

Maintainers -
+
0.97
-
+
@@ -639,7 +639,7 @@

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

Reviewers’ Stats -
+
@@ -726,15 +726,15 @@

Reviewers’ Stats
- 0.13 + 0.12
-
+
@@ -813,7 +813,7 @@

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

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

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

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

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

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

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

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

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

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

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

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

Reviewers’ Stats
0.97
-
+
@@ -3841,7 +3841,7 @@

Reviewers’ Stats -
+
0.81 @@ -3870,7 +3870,7 @@

Reviewers’ Stats -
+
0.26 @@ -3899,7 +3899,7 @@

Reviewers’ Stats -
+
0.71 @@ -3928,7 +3928,7 @@

Reviewers’ Stats -
+
0.10 @@ -3957,7 +3957,7 @@

Reviewers’ Stats -
+
1.00 @@ -3983,15 +3983,15 @@

Reviewers’ Stats -
+
- 0.07 + 0.06
-
+
@@ -4012,15 +4012,15 @@

Reviewers’ Stats -
+
0.07
-
+
@@ -4044,7 +4044,7 @@

Reviewers’ Stats -
+
0.42 @@ -4073,7 +4073,7 @@

Reviewers’ Stats -
+
0.83 @@ -4099,15 +4099,15 @@

Reviewers’ Stats -
+
0.05
-
+
@@ -4131,7 +4131,7 @@

Reviewers’ Stats -
+
1.00 @@ -4160,7 +4160,7 @@

Reviewers’ Stats -
+
0.57 @@ -4189,7 +4189,7 @@

Reviewers’ Stats -
+
1.00 @@ -4218,7 +4218,7 @@

Reviewers’ Stats -
+
1.00 @@ -4244,15 +4244,15 @@

Reviewers’ Stats -
+
0.02
-
+
@@ -4273,15 +4273,15 @@

Reviewers’ Stats -
+
0.02
-
+
@@ -4305,7 +4305,7 @@

Reviewers’ Stats -
+
1.00 @@ -4334,7 +4334,7 @@

Reviewers’ Stats -
+
1.00 @@ -4360,15 +4360,15 @@

Reviewers’ Stats -
+
0.02
-
+
@@ -4389,15 +4389,15 @@

Reviewers’ Stats -
+
0.01
-
+
@@ -4421,7 +4421,7 @@

Reviewers’ Stats -
+
0.01 @@ -4447,15 +4447,15 @@

Reviewers’ Stats -
+
0.01
-
+
@@ -4479,7 +4479,7 @@

Reviewers’ Stats -
+
0.01 @@ -4508,7 +4508,7 @@

Reviewers’ Stats -
+
1.00 @@ -4537,7 +4537,7 @@

Reviewers’ Stats -
+
0.03 @@ -4566,7 +4566,7 @@

Reviewers’ Stats -
+
1.00 @@ -4595,7 +4595,7 @@

Reviewers’ Stats -
+
1.00 @@ -4624,7 +4624,7 @@

Reviewers’ Stats -
+
1.00 @@ -4653,7 +4653,7 @@

Reviewers’ Stats -
+
1.00 @@ -4682,7 +4682,7 @@

Reviewers’ Stats -
+
1.00 @@ -4711,7 +4711,7 @@

Reviewers’ Stats -
+
1.00 @@ -4740,7 +4740,7 @@

Reviewers’ Stats -
+
1.00 @@ -4769,7 +4769,7 @@

Reviewers’ Stats -
+
1.00 @@ -4798,7 +4798,7 @@

Reviewers’ Stats -
+
1.00 @@ -4827,7 +4827,7 @@

Reviewers’ Stats -
+
0.33 @@ -4856,7 +4856,7 @@

Reviewers’ Stats -
+
1.00 @@ -4885,7 +4885,7 @@

Reviewers’ Stats -
+
1.00 @@ -4914,7 +4914,7 @@

Reviewers’ Stats -
+
1.00 @@ -4943,7 +4943,7 @@

Reviewers’ Stats -
+
1.00 @@ -4972,7 +4972,7 @@

Reviewers’ Stats -
+
1.00 @@ -5001,7 +5001,7 @@

Reviewers’ Stats -
+
0.50 @@ -5030,7 +5030,7 @@

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

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

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

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

Reviewers’ Stats
ros2 topic pub --rate 30 /diffbot_base_controller/cmd_vel_unstamped geometry_msgs/msg/Twist "linear:
-  x: 0.7
-  y: 0.0
-  z: 0.0
-angular:
-  x: 0.0
-  y: 0.0
-  z: 1.0"
+
ros2 topic pub --rate 30 /diffbot_base_controller/cmd_vel geometry_msgs/msg/TwistStamped "
+twist:
+  linear:
+    x: 0.7
+    y: 0.0
+    z: 0.0
+  angular:
+    x: 0.0
+    y: 0.0
+    z: 1.0"
 

You should now see an orange box circling in RViz. diff --git a/humble/index.html b/humble/index.html index 5b8e87a6d17..757def67484 100644 --- a/humble/index.html +++ b/humble/index.html @@ -148,7 +148,7 @@

Development Organisation and Communication -

Built on 2024-01-02 at 05:31 GMT

+

Built on 2024-01-03 at 05:31 GMT

diff --git a/humble/searchindex.js b/humble/searchindex.js index b8942ac64e4..3b5d5bbfb09 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, "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, "12": [0, 16, 52], "30t20": 0, "25": 0, "34z": 0, "dr": [0, 7], "deni": [0, 6, 7], "destogl": 0, "987": 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, "2024": [0, 53], "01": [0, 39, 42, 44, 53], "02": [0, 53], "03": [0, 44], "26": 0, "35": [0, 47], "utc": 0, "dure": [0, 16, 27, 44], "past": [0, 43], "month": 0, "533": 0, "402": 0, "75": 0, "440": 0, "136": 0, "31": [0, 53], "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, "92": 0, "89": 0, "01t18": 0, "14z": 0, "sai": 0, "kishor": 0, "kothakota": 0, "saikishor": 0, "70": 0, "68": 0, "97": 0, "31t17": 0, "43": [0, 4, 12, 22], "49z": 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, "andyz": 0, "45": 0, "96": 0, "23t02": 0, "17": 0, "26z": 0, "abrar": 0, "rahman": 0, "protyasha": 0, "aprotya": 0, "157": 0, "27": 0, "25t12": 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, "54": 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, "18": [0, 27], "94": 0, "27t13": 0, "arn": 0, "hitzmann": 0, "arne48": 0, "146": 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, "felix": 0, "exner": 0, "fexner": 0, "fmauch": 0, "24t22": 0, "46": 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, "69": 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, "11z": 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, "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, "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, "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, "67": 0, "81": [0, 6], "71": 0, "104": 0, "83": 0, "03t19": 0, "86": 0, "95": 0, "100": [0, 3, 4, 12, 36, 45, 50], "99": [0, 9], "90": [0, 27], "98": 0, "80": 0, "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], "cart_control": 3, "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], "joint_state_broadcast": [3, 12, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "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_trajectory_control": [3, 5, 6, 15, 18, 34], "action": [3, 5, 8, 42], "follow_joint_trajectori": [3, 5, 44], "followjointtrajectori": [3, 5, 42, 44], "controller_manag": [3, 4, 5, 6, 9, 15, 23, 35, 36, 44, 45, 50], "ros__paramet": [3, 5, 36, 44, 45, 50], "update_r": [3, 9, 36, 45, 50], "hz": [3, 36, 39, 45, 50], "jointstatebroadcast": [3, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "interface_nam": [3, 19, 37, 38], "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], "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, "cartpole_control": 5, "gazebosimsysteminterfac": 5, "controller_manager_prefix_node_nam": 5, "joint_state_control": [5, 15], "jointstatecontrol": [5, 15], "cart_pole_control": 5, "write_op_mod": 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, "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, "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, "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], "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, "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], "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, "1246": 0, "1026": 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, "2024": [0, 53], "01": [0, 39, 42, 44, 53], "02t15": 0, "13": [0, 16], "59z": 0, "dr": [0, 7], "deni": [0, 6, 7], "destogl": 0, "991": 0, "563": 0, "57": 0, "02t17": 0, "14": [0, 16, 47], "23z": 0, "christoph": 0, "fr\u00f6hlich": 0, "christophfroehlich": 0, "153": 0, "134": 0, "88": 0, "2023": 0, "12": [0, 16, 52], "26t09": 0, "00": 0, "02z": 0, "fetch": 0, "03": [0, 44, 53], "27": 0, "15": 0, "utc": 0, "dure": [0, 16, 27, 44], "past": [0, 43], "month": 0, "534": 0, "403": 0, "75": 0, "443": 0, "137": 0, "31": [0, 53], "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, "92": 0, "89": 0, "01t18": 0, "02": 0, "14z": 0, "sai": 0, "kishor": 0, "kothakota": 0, "saikishor": 0, "71": 0, "69": 0, "97": 0, "31t17": 0, "43": [0, 4, 12, 22], "49z": 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, "03z": 0, "andyz": 0, "45": 0, "96": 0, "23t02": 0, "17": 0, "26z": 0, "abrar": 0, "rahman": 0, "protyasha": 0, "aprotya": 0, "157": 0, "25t12": 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, "54": 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, "140": 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, "none": [0, 8, 35, 41, 42, 44], "bijoua29": 0, "160": 0, "21": [0, 47], "06": 0, "01t20": 0, "48": [0, 3, 5], "32z": 0, "jaron": 0, "l": 0, "168": 0, "10t19": 0, "59": 0, "livanov93": 0, "164": 0, "05": [0, 44, 53], "22t06": 0, "28z": 0, "tyler": 0, "weaver": 0, "tylerjw": 0, "18": [0, 27], "94": 0, "27t13": 0, "arn": 0, "hitzmann": 0, "arne48": 0, "147": 0, "16": [0, 52], "11": [0, 16], "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, "136": 0, "22t09": 0, "26": 0, "felix": 0, "exner": 0, "fexner": 0, "fmauch": 0, "24t22": 0, "46": 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], "25": 0, "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, "11z": 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, "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, "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, "37": 0, "17z": 0, "han": 0, "martin": 0, "duringhof": 0, "4": [0, 12, 16, 21, 23, 25, 28, 46], "29t21": 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, "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, "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, "18t14": 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, "68": 0, "66": 0, "81": [0, 6], "104": 0, "90": [0, 27], "83": 0, "03t19": 0, "99": [0, 9], "80": 0, "86": 0, "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], "cart_control": 3, "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], "joint_state_broadcast": [3, 12, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "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_trajectory_control": [3, 5, 6, 15, 18, 34], "action": [3, 5, 8, 42], "follow_joint_trajectori": [3, 5, 44], "followjointtrajectori": [3, 5, 42, 44], "controller_manag": [3, 4, 5, 6, 9, 15, 23, 35, 36, 44, 45, 50], "ros__paramet": [3, 5, 36, 44, 45, 50], "update_r": [3, 9, 36, 45, 50], "100": [3, 4, 12, 36, 45, 50], "hz": [3, 36, 39, 45, 50], "jointstatebroadcast": [3, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "interface_nam": [3, 19, 37, 38], "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], "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, "cartpole_control": 5, "gazebosimsysteminterfac": 5, "controller_manager_prefix_node_nam": 5, "joint_state_control": [5, 15], "jointstatecontrol": [5, 15], "cart_pole_control": 5, "write_op_mod": 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, "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, 22, 33], "cmd_vel_unstamp": [8, 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, "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, "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], "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, "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], "twiststamp": [22, 33, 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], "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], "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 adeea441bb0..857632ed131 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: b2cb9e4f37e09b6b3860d44022556aa0 +config: 75c36a19628d66045cad1d2b1512bc35 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/iron/.doctrees/doc/acknowledgements/acknowledgements.doctree b/iron/.doctrees/doc/acknowledgements/acknowledgements.doctree index bf158c460cc4056ae13f813ddb1ec14775049325..00901943dbdb2856c6e4317be6dc2dee33a19bf4 100644 GIT binary patch delta 4914 zcmeHLYiv|S6wb`tJ6E9HZsk?k%C=EKDeT_&qrA#12vtgHdD((}EsrW~Ngx6X1)_;* z5h=OQ;Ssb1Q7Ms9u4MuQ1i?g1p%9{p5riTdgF@Pnp#BkOcN^H!U4I*F=FiQXbG|uq z&iT%n++PlO?;r4T8~E+3nmHeks>)VWRF=L`;a?P3RAQ7!nrsvYO06=(GAvy(4K1LQ z>cxs0C^J>Dq%5Ek-!Wm3y{y3P)PNxf%yG8*z5>pvAxAipp3kL1Q6|l0e2~nn1+(lM zrMz8~R-K?Ks%1%*p(>I=+N;3~`*3aFM0J!XjS}U2Nz0TJGNA*N+v5UPoh;Wt2rP2> z3h+QpC%N-M(52U0^Pc2;I;|tm0Z_y;xek-|RmcNWlKdB5WY=lGCFrK4tA?eDqM_QIOBV_;@-+ZL zRV8QgSi)E$J5x|FNl|>3rHP6m%c7|&q`8XE3Fm9l=<0s5riq3nin_t7;VzD!uHR9D zEQyw6N|Guul;kp$>)g(Ym8oR=;#|SrGO_AOxyVvy@!UQ8h*C&VB0CfBEg&@%E zrn4oaatgn$pJXbcWoi~Hef!co3!O`qB}0K~pV^V>Ls&WJP0)lq7={h-i>vFL;eM1^H}1$8W+@q4Ukj&!*TZXFX(;3tS}? z99ZjSRiPS+ZmKM;nyf2ic_t{JRVxum30EGuaRdiR(*aakzXh#Hl6~xUtnhSMH+4<7 zmsb|j<6hvIANHDdtOA7~QPflhXXqw#LXCJmb1h7yS8t=%=fYJRG zrfyiWs>v*Nl4*AN{or88@0vwI5+rpg;Ms^t$8mo3yCe4lI&wceG^~4j7)P?l@JmT; zD|GiJ=|7t!%97Lwz(DGG6K}$d2g|)ffZlyXg}79msF~)&f({qOe0yd#N7t^vCYL1n zG%0G4=30Ih?U>I0$+;9gY8iHC=B!VaRb$?zh|!CrALjGug|~4#=ZZ#>G*VoH@<`DD zw1(EyV8SIti=CwJM*;iNV9sgyf>CgN2|pN;!k=I&@wvbnx8)P9=oP}sC!X0{kadB^ z6@mH_pihXs6^Inv!Koo424fi6xQ)f+^Z-!aG9FC>)SnEFK$qduj7N)X913RBS3kgz zPk6Me8Ik?>R`OFgd%`_Wh`{Syq8`1-jax8>6g2@%IzGk0B+W7mk#%%Sl^F{kH4c%B zX_&Q}`;q2sN7Dhl`Z2l!-MTLtUDU()U5|kv-Q0*i2efVwnhZ(Nc~tLKeVQ7*!fyxC za0<6On;TySbjAsMAG)G7G}cDg`+_o^IULFS8t;58n>IL>AL=KpRh`G>^l&{NK%vg) zA>uB+I-W8VP2%?pi=EW{>@MT>@IS+zs<|Yq0RBJ=_woX(t!_2MPVJH=Rsn`knZQ{v z(%{_3`Rb(T!eQT}^B8LVw}!VGkqbBRuE*_YZVPV$T6G=&fnv$_ab(95A(g~Dv;7(F zBH4Nl<dSb)7J`DXYy5@DKc^w4SkEyk`WYO!y+^?5FzXP$T8j@&4ZdXIy? zv7}UL;4=WJ`;N!-^#?e$CvI4QG6f-?tWD!sV6*xO2YWaifj`>L`{NiNO@|g2!|RA) zeLBQ6I1G-BuR=~w7kFCZ6{I*P(6;+=Pp1n;2={vAi?yS?md$t&-y_D6SX{$c>3JB7 ze+DbBOd-3cEMnJ|j7P+io!$sp4FBGZvKavf;+=7hW|tk-6JqavZa5%!{h%LBByb|2 zL;Lf0V63P{oU9m*YZ1A46MN_eKi>)IONByXa+r%<8`rCZ$?5cP6HGwVzg?Kdbsyu0 vLK8f>cRcithpr*fJ03#sc=jId9S@J@Po#&_-to{ip8pr)fwG@Kfzkf}=S{Mq delta 4504 zcmeI0Yiv|S6vv&JJ991cv5gS4tF)+*q|m!F_dTr&RS*jZMT#J8cvxD4NLU^c%hFnm zQ3Hmc7Z{6CB=|)zAl=|7MZqs71{C#MrVE%vrAbJduBm0d-z#|eTQ3~ zI8p(oCaXtG1zBbhwMtF5)Do|@=&@k!1Np(lk@JJR2lX3ZDanf?lK|CrOOl*TKi7g? zUqqoz#grDXGI;;jDd`-(-H94=Y|~_x?^~|tDNR-#z|{k;mE>m#XwWe@3akL^NJK14 zC7$}WN<3q>ZHoM}Xi89B)|^9m#y9kqWtLp2$D=6FN57fFJ<4ouI+kZKOR&vKn?=+5 z(&ptGXf3OPIVD+JUzm>3;5bZ`%%?yu_!92T3)5Qw++fwwM4saruBkHXyS7bTFU+ne zY=_Na{WkQZnE4Q1Ce8tJG-)ip^$uup(eW&Z$`>!g8j#IwC8q6jld5Xi@&>M!Uo5~A zfqWStksTJ5D9uG3;!GA=5it$Nvweq}oU58-q5Lz0!>cuUsFREXvg9*T0Oe!1pwHQ7(E2%$;Ns-0Z4ZkD%XYi5x6}W|F9Zl`x&2Li#sDp z_dHOMUa)+BDVhO*E%J-?S+Z>-ei+EJas6&6-u?vLA=GHQJlTLo4idwsqNr%!ijIrI zKgi06Wl&Y|%=fswK#{?s%yJc0%2%Tr zxo-tHc$WZUw2LCX6RgZ<26w6F+iE9z3QwGd?p|t+XtFtiSC6<7821a~AZ+MYFhzud z|F44c<(_+SIRFuP={~%MgtZZrFROp8Xrb7=lr#ZNcvDI~AlISqGc;>_cyCTs_>cUH&+)mU`( z?Y~7oA$ZWGmF}m?fGJHCz&bo+JG+4 z7NT(=IrNp`5c)i&*1vd4WP3JqJd0YEr`~seE~wm1Re{QyRj3t46qb6HoqC6!(^$q| zKrxt%FE4{)RFf*y%0;*__j;4twvw@$m_17m3px>T4dz(B?RGy?39S;U>=U`Jx-Tdc za_VwVfl!^`sUpvlGm23K_@EJ=hPmBVX%Dia5XOLfWGA^@yJ{${le#wy#JN4OLMwUL z03#JM_KDIDbQ|6v8QiciI{whG^h>2sAIa8%B0V2&k`MPk!o3qfnuW~ zY7~lN>v79<_D0%=cw{4fTK@G0j`g{R)c!ar*Bv7I^+(H2A%(%{SA;{cr4zUGY_>2! zBCjvtDcEUB?B~8E22^)9MZu~1>ludo-vJGPiCsmoMy_oq7tvK?a!x1t8bOcuWf)z6UdM9LdCW38 zWt>5k?@9OQr!%80EY^SNT^-&n$dF#oC*_2Lnlh?!^&fhTPROQGePX8TZ}LfTX8YXv zlvVo(Fae7ApWV`it5C0YPuJA&mTYX-jtbRzv&^}Zn7vL;$caNzNA>3AU=##g>{>#i zvXYYXQ05tATfR8-J?!pK=kb_fsS9M+gi#yx3hl}hafc8GVWgj=Ru7Z=N!m}+ev$;rt^mWGMu$>zqU Tsg}l;X(ncAW`>(P7)4V7xg-=C diff --git a/iron/.doctrees/doc/differences_to_ros1/differences_to_ros1.doctree b/iron/.doctrees/doc/differences_to_ros1/differences_to_ros1.doctree index 345f58ac12c197594a846dad4e256017c46869bb..3390803b8697a882ea529b1c958271cb7eea6958 100644 GIT binary patch delta 64 zcmey+$Mm6(X@eG{VL?hsUVd_Ro_<$YPM$t9^*7g*z delta 64 zcmey+$Mm6(X@eG{VM%6+fqAiEk-njEl9^#zs%2_gvXMz@ig~Jea&oefrD39ZvbnKo Ts->}Inu%GOnc?PWM$t9^xknTW diff --git a/iron/.doctrees/doc/gazebo_ros2_control/doc/index.doctree b/iron/.doctrees/doc/gazebo_ros2_control/doc/index.doctree index c7fac52461b807981e769d37582b645466a72eb0..2c50f02652000eb63384780f096742424e612c36 100644 GIT binary patch delta 129 zcmbQejcN8arVSR1Mg=J)dHKoNdHQLoX-VcuhNed5iK)q!Ddv{umS%<)=BBB}$!3Yh hCaEbFCI(3=Zf8`jB2TZx=5N)i@&Mh~Dzg9p delta 129 zcmbQejcN8arVSR1MkSdk2Ij?vMf!%uNoIy=sg|i}$wnrrDdwr>$;rt^mWGMu$>zqU hsg}l;X(ncAW`_Ec?{~>=Zf8`jB2TZx=5N)i@&I*QDQN%z diff --git a/iron/.doctrees/doc/getting_started/getting_started.doctree b/iron/.doctrees/doc/getting_started/getting_started.doctree index abddcd43ad151c2484644b817de1637780f23b37..fb866146293a904d99fe70292f96f992af4f6f6a 100644 GIT binary patch delta 64 zcmX@w!hE!ad4mC?VL?hsUVd_Ro_<$X=#wP~=z~~iS delta 64 zcmX@w!hE!ad4mC?VM%6+fqAiEk-njEl9^#zs%2_gvXMz@ig~Jea&oefrD39ZvbnKo Ts->}Inu%GOnc?O{#wP~=qd63~ diff --git a/iron/.doctrees/doc/gz_ros2_control/doc/index.doctree b/iron/.doctrees/doc/gz_ros2_control/doc/index.doctree index a51a34dae63d564c8403a6dc82d2e2d52f829d79..c828eaf499849c3fd01a7f6e30d59f6c6c2a0bd4 100644 GIT binary patch delta 64 zcmX>*kLm0@rVR#+h6O1ldHKoNdHQLoX-VcuhNed5iK)q!Ddv{umS%<)=BBB}$!3Yh UCaEbFCI(3*kLm0@rVR#+h9#LP2Ij?vMf!%uNoIy=sg|i}$wnrrDdwr>$;rt^mWGMu$>zqU Usg}l;X(ncAW`>&+8Q=5*0J8%W&j0`b diff --git a/iron/.doctrees/doc/project_ideas.doctree b/iron/.doctrees/doc/project_ideas.doctree index 14944e266351a0f7e2cd60180d1b07a4a30f7c45..dc78dec08d8a014945c9e9900292163701f8307a 100644 GIT binary patch delta 64 zcmZ4digEEP#tk}*h6O1ldHKoNdHQLoX-VcuhNed5iK)q!Ddv{umS%<)=BBB}$!3Yh UCaEbFCI(3$;rt^mWGMu$>zqU Usg}l;X(ncAW`>(%8IKhM0Kqa8$p8QV diff --git a/iron/.doctrees/doc/resources/resources.doctree b/iron/.doctrees/doc/resources/resources.doctree index e9ad2d32eb8f2ea2298f173b216828346680a954..a9e8057962e5045ad8e83649a23f79f8fe0fe74f 100644 GIT binary patch delta 68 zcmZ41%et(Wb%P3{VL?hsUVd_Ro_<}Inu%GOnPGD%$;rt^mWGMu$>zqU Tsg}l;X(ncAW`>(H8JUv+)X)@H 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 499373bc47d0383b68d7a9f70c30bafd797da290..0702981febd88ee64372017fe9ec7154a6f79217 100644 GIT binary patch delta 69 zcmbRAlyTBi#tm+aMg=J)dHKoNdHQLoX-VcuhNed5iK)q!Ddv{umS%<)=BBB}$!3Yh ZCaEbFCI(3$;rt^mWGMu$>zqU Zsg}l;X(ncAW`_EcdBQX{FJSys001Pw7H|Ln diff --git a/iron/.doctrees/doc/ros2_control/doc/index.doctree b/iron/.doctrees/doc/ros2_control/doc/index.doctree index 27e51a6ddbd933352a58ae7421cbcedd475b18fe..682aaba31c60b830bb1e02781d9b6f09f971efb8 100644 GIT binary patch delta 62 zcmaE2_{4C79iw4EN=aURa(146T54L7d6J>2k$GZjvSo_7rMabdL#VOpwXYFe_9NotCDs(Es9vXP}>qIt5pv1zKM Rv1OWxS(=&Q=6uFdaR7&&6HWjC 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 b4a420bc246a47d3cab94d6aaed94eb594aec6e8..b7ec5c814faa971adfc8476e580432b695627307 100644 GIT binary patch delta 69 zcmdn9f^p9Z#tj~fMg=J)dHKoNdHQLoX-VcuhNed5iK)q!Ddv{umS%<)=BBB}$!3Yh ZCaEbFCI(3 delta 69 zcmdn9f^p9Z#tj~fMkSdk2Ij?vMf!%uNoIy=sg|i}$wnrrDdwr>$;rt^mWGMu$>zqU Zsg}l;X(ncAW`_Ec{aKwi?`5nH0stGN73BZ` 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 2f5552932e9786e619bedffc8f76bfac6d6b8cb1..008f2bfcc7373730921803a6c21216b67788c5a7 100644 GIT binary patch delta 69 zcmdmgg>nBC#tlJ?Mg=J)dHKoNdHQLoX-VcuhNed5iK)q!Ddv{umS%<)=BBB}$!3Yh ZCaEbFCI(3nBC#tlJ?MkSdk2Ij?vMf!%uNoIy=sg|i}$wnrrDdwr>$;rt^mWGMu$>zqU Zsg}l;X(ncAW`_EcPjY!|KEqg?0RTG87U}>1 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 aa43f8634750aed598b87886322f74f7b9990e02..0bf2b2df2d86015e763c82feb4812b2f9fb14182 100644 GIT binary patch delta 62 zcmexg^1oz*1EXO2k$GZjvSo_7rMabdL#VOpwXYFe_9NotCDs(Es9vXP}>qIt5pv1zKM Rv1OWxS(=&Q=0Zk3O8~R76UhJo 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 cf47b73dd955cfe90ddce11542e82cec3a98fdf6..04bf625caddd57b6aae1ee980bb4d294be81ac53 100644 GIT binary patch delta 64 zcmaFb!1A<#WrH81VL?hsUVd_Ro_<$Yh#%KQk)_oQe delta 64 zcmaFb!1A<#WrH81VM%6+fqAiEk-njEl9^#zs%2_gvXMz@ig~Jea&oefrD39ZvbnKo Ts->}Inu%GOnc?Po#%KQkxXu-B diff --git a/iron/.doctrees/doc/ros2_control/ros2controlcli/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_control/ros2controlcli/doc/userdoc.doctree index 17de709310fd64e972be3bba1588911c153f6b19..6d602f01c885bc72778d9419b78904e4148895a0 100644 GIT binary patch delta 64 zcmex!hw;xH#tn9ih6O1ldHKoNdHQLoX-VcuhNed5iK)q!Ddv{umS%<)=BBB}$!3Yh TCaEbFCI(3$;rt^mWGMu$>zqU Tsg}l;X(ncAW`>*d8F_O7=)V-i diff --git a/iron/.doctrees/doc/ros2_control_demos/doc/index.doctree b/iron/.doctrees/doc/ros2_control_demos/doc/index.doctree index 1aa353531d446a3a79514e4216392ae748bdbb92..2ab557c09146354aa3295631d468d1c9bb8b23bb 100644 GIT binary patch delta 68 zcmez0!u-F5d4n0FQ9(*cUVd_Ro_<}Inu%GOnW6sVi<`t3*E1dj02tyHx&QzG 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 58c1277a8181183dde761c708b74437c4ee02112..52a11d5706abb850c90dd418b79c0398f86112ea 100644 GIT binary patch delta 62 zcmeB_>Xh2h&th1RQj(XSoSmnimYSAio@8ihWS*FsY?)$iX>Ms|Xkl)eYMgAAXl#<2 RVqs#Cl#*()`2dS22LOV;6MO&w delta 62 zcmeB_>Xh2h&th1TnPOmGY*?gkXq;qbn3igpnwD&2lA2$;rt^mWGMu$>zqU gsg}l;X(ncAW`_Ec_{As73WzrEVBEfgk$;rt^mWGMu$>zqU Tsg}l;X(ncAW`>)48N*@$)lC%1 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 5d82154ce4ebc9d42e6de8f5b708651ec40d8aac..913898b5dbcb70fb3f37aa25260d107e126f8cf5 100644 GIT binary patch delta 73 zcmX^7m+A0drVTNSMg=J)dHKoNdHQLoX-VcuhNed5iK)q!Ddv{umS%<)=BBB}$!3Yh dCaEbFCI(3$;rt^mWGMu$>zqU dsg}l;X(ncAW`_EcCvb^R?%XH6`2ZvHUI4Q07_$;rt^mWGMu$>zqU dsg}l;X(ncAW`_Ec1^LA%*G-n*e1P%CL;!c^7z+RZ diff --git a/iron/.doctrees/doc/ros2_control_demos/example_2/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_control_demos/example_2/doc/userdoc.doctree index 01487b9f75d4602651eed4739a6533834d64dd8a..b91e197debf64722ae8762ba834efb0d50758c11 100644 GIT binary patch delta 829 zcmcJN%TE(g7{&9=%Q%TKjSKM+b0N`%Chhb=haqhUZru2QR2rLzWZIdwgY9&n(*g?V zbU_zdjp5=>5;v$3Y^fI)EC|LuiivT_Kj2FL0h|^)wCvs7oSg5R@BVUgSJtWhb&9dr zmyre&1)rgqdM@!$_axP1T#S4BeWI);Bt?`&Dd-&#`&EA;DEkAdG7u2riW>0X;q#YC z1BQZN;@{#nc7=ON5mU|@s)G7>WX@=LbC5>}Wi(xtr&|)C*+C?@#iotWTvH2&`jMk$ zJypnb=l^An<-Km9kLP2#0?Mazg^Yr9;+FnUu!Va=(lH!|rW2-vrDL^2(go7W9&&VN zn-t6G6XVNip}IAl%lnX-GqeOU3UTZSU2Aeo96if_;UHRggkqCvG_G(JHTf`6r{OIbPmEHqhU@Ab`#ey6U=UxD1E>)x^_=21 z?3%!0`CKpF6Ir}Ff03M?T%)*#?ceM4FA&H+X5b@Pn7Tr9oA&sPGbZ0mhT%Th-dD%N z2eSff5@BwNUa}a<#kKDsyYqh9{taLyVFRbF0@U!n^$xbNl)6M#%c~5xV{ckKDikYq dhWl)Ldya>T6&DU$S78S~dpZN#gst}Qe*xk?{zd=* delta 699 zcmbu4J!lhg7{+<;OT4L8rNKdufE7jCyQJp45Haacr`r0_YKN-va+fsZg84!ds7*nO zXsD%cT`YF8V#85QU!+4xsctSs7X`t(xvHx;co)(V#LeZ;^StlxeIEW>HuKbGxHA8^ zy~YiLFFzKO)tr*;R{S>tifL$usr!12m};oHuKP44s_Lr$q@npWvnOB%lx~b1I7~G- z6M#|tsn*47g>)_-wQd?Q%!E9Bk~cM$Hlo>}C`r=opd@#xt}41pc2%jVqUm@c)yg%t zO^!}zA`8#(S4jJ-;6iJ`PX11OGrc9e!MNG2jM620=MuX{=Mr+|UoGMPZK3MvK?Y(d zg*vD`JOM&HAtleU_#x#*ImzKxr-)zGHu@Cl07%jI-jE1sJl;PJS*rFsf6wE_$Ub^E zXtDf+bNUe>u$RtV+6{0QuMAoI{p}%s8LGhpd^CIyrfL7>Dg!gLG4ht<=eG%Za`hs> zLL-p5KF`7;E$HVNSi&F1fb)h;AEYT~3IH~h;?oSj?3~K8Rxb@CZ3bS_@6;O(UeS7{ zljT>O-Sb)N2(=YBjwi=$Iu64{8CED$%&@|1XSPQ`up)GH+`|g1jt{zC#XIF=u#8LP t0@!$H@&&A6DSnW?O)hd!r^?i4j$e1+_c$|ks=?NA^WiO6qrQqq`~w#7;rajo diff --git a/iron/.doctrees/doc/ros2_control_demos/example_3/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_control_demos/example_3/doc/userdoc.doctree index a2bf9326d5ded12136b2a54b2b933dc0f249b400..1a20456857742b2227657a9b3017771384ddd6bb 100644 GIT binary patch delta 73 zcmaFxhUvi@rVUYyMg=J)dHKoNdHQLoX-VcuhNed5iK)q!Ddv{umS%<)=BBB}$!3Yh dCaEbFCI(3$;rt^mWGMu$>zqU dsg}l;X(ncAW`_Ec1^L7$t8bIqyq9tD767qT7$;rt^mWGMu$>zqU dsg}l;X(ncAW`_Ec75K#`_wtEu-oe;45de7A7dQX_ 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 1af290c04658ad624193ca2aea7870fb7de05d06..8a4d892c4c87aef010e662e6303361d9ce80615a 100644 GIT binary patch delta 69 zcmX@NpXuCwrVUYyMg=J)dHKoNdHQLoX-VcuhNed5iK)q!Ddv{umS%<)=BBB}$!3Yh ZCaEbFCI(3$;rt^mWGMu$>zqU Zsg}l;X(ncAW`_EcC&s95-pD9B4*)p{7Nh_G 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 010e65b43d7119b19203978a11c7337812e42ee3..0c5d4fa21471a5d7524b673c515eff160967d99d 100644 GIT binary patch delta 73 zcmccF#B{TXX+spFQ9(*cUVd_Ro_<}Inu%GOnW6sVKpyeQ3XM{m_cG3@2LN;i7hC`U 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 5343f22a55b1f77f33929752b354a77c313282ac..bb56728e3d796c70a8371c41bdf36a09a91b0347 100644 GIT binary patch delta 73 zcmX?bknO-hwhd8?Mg=J)dHKoNdHQLoX-VcuhNed5iK)q!Ddv{umS%<)=BBB}$!3Yh dCaEbFCI(3VV9Z)DuQk&%&qJ^;8D7?}V7 delta 73 zcmX?bknO-hwhd8?MkSdk2Ij?vMf!%uNoIy=sg|i}$wnrrDdwr>$;rt^mWGMu$>zqU dsg}l;X(ncAW`_Ec?>VV9Z)DuQk&%&qJ^+-O7xVxC 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 40039c4cb6fef5fa4068e5c4f3be4c74ea740729..94e55de56d1204aca64d02456dd798fd1746d842 100644 GIT binary patch delta 73 zcmZqp%GmIgaYGcNQ9(*cUVd_Ro_<}Inu%GOnW6sVgFNDs-K(TF?`1q(0RV@o7(M_1 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 8b7234cfec0dd188fbb1177c8eaed61c3b7c27f9..813b9fee7131b8974673708a44a6a8d141772757 100644 GIT binary patch delta 76 zcmbO^k7?#SrVUYyrUfY_dHKoNdHQLoX-VcuhNed5iK)q!Ddv{umS%<)=BBB}$!3Yh gCaEbFCI(3$;rt^mWGMu$>zqU gsg}l;X(ncAW`_DH`N@+R!$l^aMs|Xkl)eYMgAAXl#<2 aVqs#Cl#*(qKlviR=;UZ&xy=U|-LwHzfEKp^ delta 71 zcmZpVYLD6w!)R2JnPOmGY*?gkXq;qbn3igpnwD&2lA2$;rt^mWGMu$>zqU Usg}l;X(ncAW`>(<85ei~0G2k$GZjvSo_7rMabdL#VOpwXYFe_9NotCDs(Es9vXP}>qIt5pv1zKM bv1OWxS(=%l{$xQx(a94;WH#?+WL5$YB##}c5+>{jn delta 64 zcmaFW&-kjJaf1(|VM%6+fqAiEk-njEl9^#zs%2_gvXMz@ig~Jea&oefrD39ZvbnKo Ts->}Inu%GOnc?PI##}c5zU35K diff --git a/iron/.doctrees/doc/ros2_controllers/doc/controllers_index.doctree b/iron/.doctrees/doc/ros2_controllers/doc/controllers_index.doctree index d5a2ea60dace12c09494df029a987d4e508ea5d9..0a5e93689e7ed8941032e6cda5e1dc456339c521 100644 GIT binary patch delta 67 zcmexZ^RZ@w2BT3yN=aURa(146T54L7d6J>2k$GZjvSo_7rMabdL#VOpwXYFe_9NotCDs(Es9vXP}>qIt5pv1zKM Wv1OWxS(=%l{^UX)(argcOtt_L6%_CQ diff --git a/iron/.doctrees/doc/ros2_controllers/doc/writing_new_controller.doctree b/iron/.doctrees/doc/ros2_controllers/doc/writing_new_controller.doctree index 3f83ce8fc6e02f017da5f9a6eb7b13ec7bef29e7..df9e958bfe5e996ad8b99ca1527973748c46d1e9 100644 GIT binary patch delta 64 zcmZ2$;rt^mWGMu$>zqU Usg}l;X(ncAW`>&!88^NJ0KFR(EC2ui diff --git a/iron/.doctrees/doc/ros2_controllers/effort_controllers/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_controllers/effort_controllers/doc/userdoc.doctree index 14c6052f21e02f699bf79ab7ee7eb3e3b098bffb..f655eff2090ec8f62d1af7c2af227f03f55ce88d 100644 GIT binary patch delta 62 zcmbQ|FwbFw8>3-CN=aURa(146T54L7d6J>2k$GZjvSo_7rMab3-KW{QD%v0;(Ep>dL#VOpwXYFe_9NotCDs(Es9vXP}>qIt5pv1zKM Rv1OWxS(=&Q=5og6asY3g6Da@y 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 664c4978c6961cb05a0fbb34b8155b51951bb466..2076534c0213689c4a588d32c3ea204e72229986 100644 GIT binary patch delta 62 zcmccUe9?JB0;6F;N=aURa(146T54L7d6J>2k$GZjvSo_7rMabdL#VOpwXYFe_9NotCDs(Es9vXP}>qIt5pv1zKM Rv1OWxS(=&Q=823B3IL9|6J!7Y diff --git a/iron/.doctrees/doc/ros2_controllers/forward_command_controller/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_controllers/forward_command_controller/doc/userdoc.doctree index fbf2219360c00476b82ef6bce440ac200097a7b5..daa5af915a90b28bb9cdb7df01582e9d3e5887ab 100644 GIT binary patch delta 67 zcmX?^ax!H@7^6`^N=aURa(146T54L7d6J>2k$GZjvSo_7rMabdL#VOpwXYFe_9NotCDs(Es9vXP}>qIt5pv1zKM Xv1OWxS(=%l{$xf)gUve_CmH|%{6rNg 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 c8daefb63acb19e8bb2016e29b094e5539ebb5d4..7042889eacdd3d4d61964b1c736b12356428640d 100644 GIT binary patch delta 62 zcmZn;Y!2Mu!Dv{JQj(XSoSmnimYSAio@8ihWS*FsY?)$iX>Ms|Xkl)eYMgAAXl#<2 RVqs#Cl#*()xss7f9RP=~6Dj}z delta 62 zcmZn;Y!2Mu!Dv{LnPOmGY*?gkXq;qbn3igpnwD&2lA2Ms|Xkl)eYMgAAXl#<2 RVqs#Cl#*()xt@{95CD;b6I=iQ delta 62 zcmZonZA{(Z$7ooRnPOmGY*?gkXq;qbn3igpnwD&2lA2$X?MiW;6!afvW delta 64 zcmdnm%eb|daYF#3VM%6+fqAiEk-njEl9^#zs%2_gvXMz@ig~Jea&oefrD39ZvbnKo Ts->}Inu%GOnc?O}MiW;6q>mH3 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 096bc42a676252fc0eb0e420320378c978cb666c..a2a03bb0103ce07f5306aefeb7dd915716ef7cf7 100644 GIT binary patch delta 69 zcmX^6lkx0N#tmwWMg=J)dHKoNdHQLoX-VcuhNed5iK)q!Ddv{umS%<)=BBB}$!3Yh ZCaEbFCI(3T delta 69 zcmX^6lkx0N#tmwWMkSdk2Ij?vMf!%uNoIy=sg|i}$wnrrDdwr>$;rt^mWGMu$>zqU Zsg}l;X(ncAW`_EcF9g|dp3Z1i4FF4i7YhIY 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 60919769abc26dc80fd78da873c2a3f68dad58a2..bdf2f03efbf324aeff61d7650bc27fad97422603 100644 GIT binary patch delta 69 zcmX@Img&e^rVTZWMg=J)dHKoNdHQLoX-VcuhNed5iK)q!Ddv{umS%<)=BBB}$!3Yh ZCaEbFCI(3$;rt^mWGMu$>zqU Zsg}l;X(ncAW`_Ec<6G@Fzh%5W1pqZF7mEM@ 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 fbe5ffd6120ad4949f9a4ccfc24af8070415adbc..240953ee4778161bdb64cc4156af02a4b2fa2a1a 100644 GIT binary patch delta 69 zcmaELnd#MKrVSB{Mg=J)dHKoNdHQLoX-VcuhNed5iK)q!Ddv{umS%<)=BBB}$!3Yh ZCaEbFCI(3$;rt^mWGMu$>zqU Zsg}l;X(ncAW`_Ec9eHdvA7fNm0RT<=7M}nB 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 2e1cb5ee756f7a2d88ce997a564c4e98ae937680..ffbc6fb0aab90d335aa7f1ec65e4caf339729769 100644 GIT binary patch delta 62 zcmaFj@Wf$*7o%Z8N=aURa(146T54L7d6J>2k$GZjvSo_7rMabdL#VOpwXYFe_9NotCDs(Es9vXP}>qIt5pv1zKM Rv1OWxS(=&Q=4!^5asZNX6aN4J 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 47fcc9a2121233378ca5e5bb1b581bf4915a79c7..2b6409ee3060bbae47fa39c1eafff925ff89b274 100644 GIT binary patch delta 62 zcmaFn{>*(t5Tjv1N=aURa(146T54L7d6J>2k$GZjvSo_7rMab=TN6hr_3 delta 62 zcmaFn{>*(t5Tjv9W{QD%v0;(Ep>dL#VOpwXYFe_9NotCDs(Es9vXP}>qIt5pv1zKM Rv1OWxS(=&Q=4QrZB>2k$GZjvSo_7rMabdL#VOpwXYFe_9NotCDs(Es9vXP}>qIt5pv1zKM Rv1OWxS(=&Q=824byZ~kv67c{4 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 61dba92762b915866c76e2b1a6b016b035753981..2d3c8718751708155da2890c8e3e9040a459c006 100644 GIT binary patch delta 69 zcmeygk?GS$rVUYyMg=J)dHKoNdHQLoX-VcuhNed5iK)q!Ddv{umS%<)=BBB}$!3Yh ZCaEbFCI(3$;rt^mWGMu$>zqU Zsg}l;X(ncAW`_Ec`-E*bpJddW4gf=`7P$Zb diff --git a/iron/.doctrees/doc/ros2_controllers/tricycle_controller/doc/userdoc.doctree b/iron/.doctrees/doc/ros2_controllers/tricycle_controller/doc/userdoc.doctree index d3c24812e49d151fc3be17e46b9a4bff9ed41992..ddee7678cc4fe196e922bdd03626727850981df8 100644 GIT binary patch delta 62 zcmbQMF;`=Q2cuy@N=aURa(146T54L7d6J>2k$GZjvSo_7rMabdL#VOpwXYFe_9NotCDs(Es9vXP}>qIt5pv1zKM Rv1OWxS(=&Q=1RsTLI7k-66^o~ 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 55f0eaeb54ae6a33be7ad53911bcc8b2542c5056..85308f46ae9b4d67f74dcd55886c37503a911b39 100644 GIT binary patch delta 71 zcmaDJ_&jh!6r)i=N=aURa(146T54L7d6J>2k$GZjvSo_7rMabdL#VOpwXYFe_9NotCDs(Es9vXP}>qIt5pv1zKM bv1OWxS(=%l{^Wjs(aAsAH8!7Qlv4))VX_wV 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 f44c693611217593977890a86c8eb907e79d834f..f7b141b9027811880a417572f883e1d1942a2fab 100644 GIT binary patch delta 62 zcmaFj@Wf$*7o%Z8N=aURa(146T54L7d6J>2k$GZjvSo_7rMabdL#VOpwXYFe_9NotCDs(Es9vXP}>qIt5pv1zKM Rv1OWxS(=&Q=4!^5asZNX6aN4J diff --git a/iron/.doctrees/doc/simulators/simulators.doctree b/iron/.doctrees/doc/simulators/simulators.doctree index fad3c23e71a75c14725832669cfb9efa5ae3cafe..9a1b4cd98bb3ffaf4d6197f7a7acebe5ad5c229e 100644 GIT binary patch delta 62 zcmeA*=r!1&#%NfOQj(XSoSmnimYSAio@8ihWS*FsY?)$iX>Ms|Xkl)eYMgAAXl#<2 RVqs#Cl#*()Ih=8u7yx!C6H@>H delta 62 zcmeA*=r!1&#%NfQnPOmGY*?gkXq;qbn3igpnwD&2lA2$;rt^mWGMu$>zqU Usg}l;X(ncAW`>(5FzWdO0Jb3%7XSbN diff --git a/iron/.doctrees/environment.pickle b/iron/.doctrees/environment.pickle index 0fabbd8688596ed458c16b0ce96ce82c94c8349a..f5b256ba0e721cbef756f7c082382caa274b6a89 100644 GIT binary patch delta 40283 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 delta 39433 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 AF#rGn diff --git a/iron/.doctrees/index.doctree b/iron/.doctrees/index.doctree index a6d29e10ec79c9990b26e7329f20e3e6a575f2cc..530b244e1fe79a789739517983cc5f4830d6609a 100644 GIT binary patch delta 78 zcmbPxopJ7U#tmkSh6O1ldHKoNdHQLoX-VcuhNed5iK)q!Ddv{umS%<)=BBB}$!3Yh gCaEbFCI(34$n=t~Z{UP_n02A^VZ~y=R delta 78 zcmbPxopJ7U#tmkSh9#LP2Ij?vMf!%uNoIy=sg|i}$wnrrDdwr>$;rt^mWGMu$>zqU gsg}l;X(ncAW`>*785M#UjW%}#n=t~Z{UP_n0PPzX$p8QV diff --git a/iron/_sources/doc/ros2_control_demos/example_2/doc/userdoc.rst b/iron/_sources/doc/ros2_control_demos/example_2/doc/userdoc.rst index 116da462a6d..504172a9b76 100644 --- a/iron/_sources/doc/ros2_control_demos/example_2/doc/userdoc.rst +++ b/iron/_sources/doc/ros2_control_demos/example_2/doc/userdoc.rst @@ -88,14 +88,16 @@ Tutorial steps .. code-block:: shell - ros2 topic pub --rate 30 /diffbot_base_controller/cmd_vel_unstamped geometry_msgs/msg/Twist "linear: - x: 0.7 - y: 0.0 - z: 0.0 - angular: - x: 0.0 - y: 0.0 - z: 1.0" + ros2 topic pub --rate 30 /diffbot_base_controller/cmd_vel geometry_msgs/msg/TwistStamped " + twist: + linear: + x: 0.7 + y: 0.0 + z: 0.0 + angular: + x: 0.0 + y: 0.0 + z: 1.0" You should now see an orange box circling in *RViz*. Also, you should see changing states in the terminal where launch file is started. diff --git a/iron/doc/acknowledgements/acknowledgements.html b/iron/doc/acknowledgements/acknowledgements.html index e19ba24f5d3..eaa0f924ade 100644 --- a/iron/doc/acknowledgements/acknowledgements.html +++ b/iron/doc/acknowledgements/acknowledgements.html @@ -145,18 +145,18 @@

Maintainers

0.82
-
+
- + @@ -174,18 +174,18 @@

Maintainers -
+
0.57
-
+
- + @@ -206,7 +206,7 @@

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

Maintainers
0.75
-
+
- + @@ -299,18 +299,18 @@

Maintainers -
+
0.31
-
+
- + @@ -331,7 +331,7 @@

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

Maintainers -
+
0.97
-
+
@@ -630,7 +630,7 @@

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

Reviewers’ Stats -
+
@@ -717,15 +717,15 @@

Reviewers’ Stats
- 0.13 + 0.12
-
+
@@ -804,7 +804,7 @@

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

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

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

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

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

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

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

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

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

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

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

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

Reviewers’ Stats
0.97
-
+
@@ -3832,7 +3832,7 @@

Reviewers’ Stats -
+
0.81 @@ -3861,7 +3861,7 @@

Reviewers’ Stats -
+
0.26 @@ -3890,7 +3890,7 @@

Reviewers’ Stats -
+
0.71 @@ -3919,7 +3919,7 @@

Reviewers’ Stats -
+
0.10 @@ -3948,7 +3948,7 @@

Reviewers’ Stats -
+
1.00 @@ -3974,15 +3974,15 @@

Reviewers’ Stats -
+
- 0.07 + 0.06
-
+
@@ -4003,15 +4003,15 @@

Reviewers’ Stats -
+
0.07
-
+
@@ -4035,7 +4035,7 @@

Reviewers’ Stats -
+
0.42 @@ -4064,7 +4064,7 @@

Reviewers’ Stats -
+
0.83 @@ -4090,15 +4090,15 @@

Reviewers’ Stats -
+
0.05
-
+
@@ -4122,7 +4122,7 @@

Reviewers’ Stats -
+
1.00 @@ -4151,7 +4151,7 @@

Reviewers’ Stats -
+
0.57 @@ -4180,7 +4180,7 @@

Reviewers’ Stats -
+
1.00 @@ -4209,7 +4209,7 @@

Reviewers’ Stats -
+
1.00 @@ -4235,15 +4235,15 @@

Reviewers’ Stats -
+
0.02
-
+
@@ -4264,15 +4264,15 @@

Reviewers’ Stats -
+
0.02
-
+
@@ -4296,7 +4296,7 @@

Reviewers’ Stats -
+
1.00 @@ -4325,7 +4325,7 @@

Reviewers’ Stats -
+
1.00 @@ -4351,15 +4351,15 @@

Reviewers’ Stats -
+
0.02
-
+
@@ -4380,15 +4380,15 @@

Reviewers’ Stats -
+
0.01
-
+
@@ -4412,7 +4412,7 @@

Reviewers’ Stats -
+
0.01 @@ -4438,15 +4438,15 @@

Reviewers’ Stats -
+
0.01
-
+
@@ -4470,7 +4470,7 @@

Reviewers’ Stats -
+
0.01 @@ -4499,7 +4499,7 @@

Reviewers’ Stats -
+
1.00 @@ -4528,7 +4528,7 @@

Reviewers’ Stats -
+
0.03 @@ -4557,7 +4557,7 @@

Reviewers’ Stats -
+
1.00 @@ -4586,7 +4586,7 @@

Reviewers’ Stats -
+
1.00 @@ -4615,7 +4615,7 @@

Reviewers’ Stats -
+
1.00 @@ -4644,7 +4644,7 @@

Reviewers’ Stats -
+
1.00 @@ -4673,7 +4673,7 @@

Reviewers’ Stats -
+
1.00 @@ -4702,7 +4702,7 @@

Reviewers’ Stats -
+
1.00 @@ -4731,7 +4731,7 @@

Reviewers’ Stats -
+
1.00 @@ -4760,7 +4760,7 @@

Reviewers’ Stats -
+
1.00 @@ -4789,7 +4789,7 @@

Reviewers’ Stats -
+
1.00 @@ -4818,7 +4818,7 @@

Reviewers’ Stats -
+
0.33 @@ -4847,7 +4847,7 @@

Reviewers’ Stats -
+
1.00 @@ -4876,7 +4876,7 @@

Reviewers’ Stats -
+
1.00 @@ -4905,7 +4905,7 @@

Reviewers’ Stats -
+
1.00 @@ -4934,7 +4934,7 @@

Reviewers’ Stats -
+
1.00 @@ -4963,7 +4963,7 @@

Reviewers’ Stats -
+
1.00 @@ -4992,7 +4992,7 @@

Reviewers’ Stats -
+
0.50 @@ -5021,7 +5021,7 @@

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

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

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

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

Reviewers’ Stats
ros2 topic pub --rate 30 /diffbot_base_controller/cmd_vel_unstamped geometry_msgs/msg/Twist "linear:
-  x: 0.7
-  y: 0.0
-  z: 0.0
-angular:
-  x: 0.0
-  y: 0.0
-  z: 1.0"
+
ros2 topic pub --rate 30 /diffbot_base_controller/cmd_vel geometry_msgs/msg/TwistStamped "
+twist:
+  linear:
+    x: 0.7
+    y: 0.0
+    z: 0.0
+  angular:
+    x: 0.0
+    y: 0.0
+    z: 1.0"
 

You should now see an orange box circling in RViz. diff --git a/iron/index.html b/iron/index.html index 046e95a0598..5aec17d688a 100644 --- a/iron/index.html +++ b/iron/index.html @@ -139,7 +139,7 @@

Development Organisation and Communication -

Built on 2024-01-02 at 05:31 GMT

+

Built on 2024-01-03 at 05:31 GMT

diff --git a/iron/searchindex.js b/iron/searchindex.js index 272dae09087..6a521e1fec7 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, "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, "12": [0, 16, 53], "30t20": 0, "25": 0, "34z": 0, "dr": [0, 7], "deni": [0, 6, 7], "destogl": 0, "987": 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, "2024": [0, 54], "01": [0, 39, 42, 44, 54], "02": [0, 54], "03": [0, 44], "26": 0, "35": [0, 48], "utc": 0, "dure": [0, 16, 27, 44], "past": [0, 43], "month": 0, "533": 0, "402": 0, "75": 0, "440": 0, "136": 0, "31": [0, 54], "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, "92": 0, "89": 0, "01t18": 0, "14z": 0, "sai": 0, "kishor": 0, "kothakota": 0, "saikishor": 0, "70": 0, "68": 0, "97": 0, "31t17": 0, "43": [0, 4, 12, 22], "49z": 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, "andyz": 0, "45": 0, "96": 0, "23t02": 0, "17": 0, "26z": 0, "abrar": 0, "rahman": 0, "protyasha": 0, "aprotya": 0, "157": 0, "27": 0, "25t12": 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, "54": 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, "18": [0, 27], "94": 0, "27t13": 0, "arn": 0, "hitzmann": 0, "arne48": 0, "146": 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, "felix": 0, "exner": 0, "fexner": 0, "fmauch": 0, "24t22": 0, "46": 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, "69": 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, "11z": 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, "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, "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, "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, "67": 0, "81": [0, 6], "71": 0, "104": 0, "83": 0, "03t19": 0, "86": 0, "95": 0, "100": [0, 3, 4, 12, 36, 45, 51], "99": [0, 9], "90": [0, 27], "98": 0, "80": 0, "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], "cart_control": 3, "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], "joint_state_broadcast": [3, 12, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "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_trajectory_control": [3, 5, 6, 15, 18, 34, 47], "action": [3, 5, 8, 42], "follow_joint_trajectori": [3, 5, 44], "followjointtrajectori": [3, 5, 42, 44], "controller_manag": [3, 4, 5, 6, 9, 15, 23, 34, 35, 36, 44, 45, 51], "ros__paramet": [3, 5, 36, 44, 45, 51], "update_r": [3, 9, 34, 36, 45, 51], "hz": [3, 36, 39, 45, 51], "jointstatebroadcast": [3, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "interface_nam": [3, 19, 37, 38], "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], "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, "cartpole_control": 5, "gazebosimsysteminterfac": 5, "controller_manager_prefix_node_nam": 5, "joint_state_control": [5, 15], "jointstatecontrol": [5, 15], "cart_pole_control": 5, "write_op_mod": 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, "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], "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, "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], "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, "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], "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, "1246": 0, "1026": 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, "2024": [0, 54], "01": [0, 39, 42, 44, 54], "02t15": 0, "13": [0, 16], "59z": 0, "dr": [0, 7], "deni": [0, 6, 7], "destogl": 0, "991": 0, "563": 0, "57": 0, "02t17": 0, "14": [0, 16, 48], "23z": 0, "christoph": 0, "fr\u00f6hlich": 0, "christophfroehlich": 0, "153": 0, "134": 0, "88": 0, "2023": 0, "12": [0, 16, 53], "26t09": 0, "00": 0, "02z": 0, "fetch": 0, "03": [0, 44, 54], "27": 0, "15": 0, "utc": 0, "dure": [0, 16, 27, 44], "past": [0, 43], "month": 0, "534": 0, "403": 0, "75": 0, "443": 0, "137": 0, "31": [0, 54], "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, "92": 0, "89": 0, "01t18": 0, "02": 0, "14z": 0, "sai": 0, "kishor": 0, "kothakota": 0, "saikishor": 0, "71": 0, "69": 0, "97": 0, "31t17": 0, "43": [0, 4, 12, 22], "49z": 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, "03z": 0, "andyz": 0, "45": 0, "96": 0, "23t02": 0, "17": 0, "26z": 0, "abrar": 0, "rahman": 0, "protyasha": 0, "aprotya": 0, "157": 0, "25t12": 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, "54": 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, "140": 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, "none": [0, 8, 35, 41, 42, 44], "bijoua29": 0, "160": 0, "21": [0, 48], "06": 0, "01t20": 0, "48": [0, 3, 5], "32z": 0, "jaron": 0, "l": 0, "168": 0, "10t19": 0, "59": 0, "livanov93": 0, "164": 0, "05": [0, 44, 54], "22t06": 0, "28z": 0, "tyler": 0, "weaver": 0, "tylerjw": 0, "18": [0, 27], "94": 0, "27t13": 0, "arn": 0, "hitzmann": 0, "arne48": 0, "147": 0, "16": [0, 53], "11": [0, 16], "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, "136": 0, "22t09": 0, "26": 0, "felix": 0, "exner": 0, "fexner": 0, "fmauch": 0, "24t22": 0, "46": 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], "25": 0, "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, "11z": 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, "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, "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, "37": 0, "17z": 0, "han": 0, "martin": 0, "duringhof": 0, "4": [0, 12, 16, 21, 23, 25, 28, 46], "29t21": 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, "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, "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, "18t14": 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, "68": 0, "66": 0, "81": [0, 6], "104": 0, "90": [0, 27], "83": 0, "03t19": 0, "99": [0, 9], "80": 0, "86": 0, "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], "cart_control": 3, "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], "joint_state_broadcast": [3, 12, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "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_trajectory_control": [3, 5, 6, 15, 18, 34, 47], "action": [3, 5, 8, 42], "follow_joint_trajectori": [3, 5, 44], "followjointtrajectori": [3, 5, 42, 44], "controller_manag": [3, 4, 5, 6, 9, 15, 23, 34, 35, 36, 44, 45, 51], "ros__paramet": [3, 5, 36, 44, 45, 51], "update_r": [3, 9, 34, 36, 45, 51], "100": [3, 4, 12, 36, 45, 51], "hz": [3, 36, 39, 45, 51], "jointstatebroadcast": [3, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29], "interface_nam": [3, 19, 37, 38], "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], "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, "cartpole_control": 5, "gazebosimsysteminterfac": 5, "controller_manager_prefix_node_nam": 5, "joint_state_control": [5, 15], "jointstatecontrol": [5, 15], "cart_pole_control": 5, "write_op_mod": 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, "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, 22, 33], "cmd_vel_unstamp": [8, 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], "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, "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], "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, "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], "twiststamp": [22, 33, 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], "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], "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 166cac2957c..8de44df3b41 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: 83dae6b2985c4252beb794ccdf647ec1 +config: ae620b161764f101715399912c2c00b9 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/master/.doctrees/doc/acknowledgements/acknowledgements.doctree b/master/.doctrees/doc/acknowledgements/acknowledgements.doctree index b3db741b5631663b34ae9fc6c23e9b6afa873b9d..38d43b0bbc88a0967e90879cc3d9f9cd956b7d87 100644 GIT binary patch delta 4914 zcmeHLYiv|S6wb`tJ6E9HZUqXmm2IPf^4PuaM|qW35UP~Y^0Ec{Pr9|3tEt5h(5KP1r3L%;pi?oQwppZ5ssDH%S-3GRF*WU)4`ExVpoNvyY zbG~yX_m?By`$xRo7Jm1-M$QMM^5Qk6Wkqk4`px2E-6+%yT{B9G6nSZZuBetO6%-W| z8-=1Msam0BnubPv%|epBD%b5)f?){EcXs-|0?wIX$2pRk!zDveCXK~>fXt}^bM5vb z-p)^{h*KGsC0T~5NCxSs0JH6es{ZlnSWy})$~lsjCMjfcCt7JwENOGnU4tR8$kl7W z12vswEdl|zrus}nku3(KTZXBTj$3ec2)_1(ia1G9M9GjeRWYrgWTE>Zw2>yMX|h7V zw{WFXJ3bTHuZ%hnuZyZ|n#?Cr))bQU0Ax9nM$ZHNloU}(lbH?Kx>xYqEn_x3wOm-d zYq_}aNxrAkGUfsR`7D#0FzHx_JU}Ihf8nKewf0+_Zc4gpSgI%*s@=6>i4Y}UgCJB@ zaxR-Cj3u&bC<-JfiqEn%Q88p$G*yK(mh+jRd`%r!F+kQd(Xd2OH&`{?#j(@%JBpJf z(UMF_QYD6xSd6lq+v(9Vm1tjHAlN&mls_pKS>Y^O(2oZ$XLa7@#1I>RZeP6=0GeHY zzL1nn=QjsMIuQWDX2u*B!3Xv zKr1UT;o>62PQv$Nfqi8N=hS||D7d+h9|B3LL8@$3TE?uS1^$TAhTZL6UzF)workrbe#N+kw=c z!5z-_x|ac+eG1=)u1F1ywGsBdpiE~zN7BB=dmqcD4VrU;{e-oui+Ck%sNqXcurqpy zxR0-hr3^)r`2E5%C;2eD%ftix&#<>@7D>;AKhV5`yufO!M-8!4yQT5vfFYE{aTW|W zIQL1uA|bMH*f;5FMlJu=@YW-8=_cOyxE;-E;!QxyZ{R;rG}$4J>{%`(lc;BQJi}ck zJ1?NjnsSgpPkR9iu=h0I2p>lxOtY09JIlYt*cCx7_Dy#_&*kvU^Pbz`8)Z}PNzgx< zluEVyXh5pJ<1u~x0Z#6X8&aT5L5L-5)i@T|^Z~-rUJi%hPjvA97{(`3p~XeY?kh8M{o>qDVDaHx3^?uCL>EcnsyliD&4`cBk z&B`lH$mlH#+qEX*QL$uaw?Y=fzxSgIM!>;%Z;YeaWk>XeICz*F3CLYP7(n9*oC4_Z zf&3j9EvjKBOGn}=L@wXN9=gTPcR~76o=}$<;$rv4jdEdHDs8BTafteN3p2T%WBgcf tf+zNkhraR9JtX?ZL+~BX-ot(4;nDmF_i)-b9=gZ#|6)8)_7kXN+&|^ivDW|q delta 4504 zcmeHLYit!o6n18IW-Wc)MhV)hv{eI1p?hccHM^|{ReTf>id1>D0g4oZm2eRxmP>0f zL=6~%t~gesNZ^lXM0$gxR0aQ-7(n2Uf(WHa6^)4$A5@KkbNBXfkrLxiO?Q*Mna4S2 z=6v&gXL8TKQS{9lMOrJ~vUs;<0CUyS#gwmPkH)xZ^7{Hk+-5FcTu&KuZE7!G)ZqCI zF5}#7ppo0(-6tubl2>4?Z%+QZ2>?}5fgaPCm<_?|23W2jDNUJbL$SrB`yF_|;=EW)1STU;Ei z0<)5}<7R;@vzS`trdw`_=i2mGu<7=Kpm+SzApZ{if3THg@AxD@5B5WnTtGk7g58Ir z(57N$8(15>^YhGf4qxv^&AGN|GRyNUmve>5x&yd&#O09u2muYcMn-`ZfVUG7%TkG_ zo~;tkm~ES);4GRM)K;|SQa|Gjy=9qYm*R0B3iL^@=K7p6+czDHTg(z{tHNga{X=2% z%>QUF>w<-4S=-mo#%N?5rYQ3R5?4clJ9wenCSo(AMI z0EwKCRH8f&b%`@sXida49Bz9KHGN-kl7;Zk3yy5i0;6-oG+V~;Hf~mC8$yt=KJ7=WchopCi})TO&&Kszpm_ZwbfZwCo$^!@8h@=AI}1fc=XUg!DEf`8 zjaUX%jAtJAUEeotB^NvK^kDPLx$<-eo&sc~1RR+ST&Xg%8jMiNU{PkdN>(a2pgOs4 z4LEqS0F$*|5#I&Y7BItiDfeu361kEmpN8(9ZjETNHG(&cyHqf46UITl+M5eomi z2riX-Z^e}WMC2b6@J14HBdA=pHWvauG6zP|m} z=qF`GJzj)FOEZb4c#w$rMt{h3cu{#hs1ejgYjaJ;EuUG`wruW+72RZ>$nOBUJX?hB z2FcOSj)lSAOU&Fk9tF#B%RRm)|-n)z3p#5zqjgz`JWaGSnSfQ0XVu0~V zGxm~7ZRnwm`^e)6I4PmslG2``aV28Lanhs?2&0baS}K#CZ*xm@y+&$fH3mu>m7+$W zIQ{}|yTaK>`w;iOh#!%EzJg;zo*{KUPRY%OiGJnLiqlBRVDxk1L$R$Jw+$S&FhC-I zD8W-=rzxk?noKIZwg;4Ih#AgcKslpS8-WM=!jw!rif6`cH$q!+Qi7HR$=2oO)1GMs=?K-JsD)*;1}g%XIx^0V&OF_nb>v zb&dm5p@{$94{f*$wX`vPQ^Q-b@uqf6sLrcp?oGrTbaGNo8ODp2rLL7vVVI{Q&GZfAT{L!MrV&712~ZfAT{L!MrV&712~*kLm0@rVR#+h6O1ldHKoNdHNP9DQ4zLrsig*=BdfXMrny=#wL~~hKb3EDdtHA U28Jf4NtPBC=BAqy8Q=5*0KQTbssI20 delta 64 zcmX>*kLm0@rVR#+h9#LP2Ij?vMf&DOM&^l$N#-VoX67l028M=aCI%)cNvRf=sb+@e U=4Pn|28I@9spgv#8Q=5*0FIjzm;e9( diff --git a/master/.doctrees/doc/project_ideas.doctree b/master/.doctrees/doc/project_ideas.doctree index 78af64b6215af85c7a35baf16a0d93d64e97163c..df806272b29fcd2a5aa866d8952296f5aa7a91ba 100644 GIT binary patch delta 64 zcmZ4digEEP#tk}*h6O1ldHKoNdHNP9DQ4zLrsig*=BdfXMrny=#wL~~hKb3EDdtHA U28Jf4NtPBC=BArt8IKhM0L+0DqyPW_ delta 64 zcmZ4digEEP#tk}*h9#LP2Ij?vMf&DOM&^l$N#-VoX67l028M=aCI%)cNvRf=sb+@e U=4Pn|28I@9spgww8IKhM0G!Gbk^lez diff --git a/master/.doctrees/doc/resources/resources.doctree b/master/.doctrees/doc/resources/resources.doctree index 80c6b8aa323accf6452ea1f8240c7408bfa74352..eb7e053475c1e90c168ed1aa9260baa91d78e9b6 100644 GIT binary patch delta 68 zcmaDnoAvQ*)(t9*h6O1ldHKoNdHNP9DQ4zLrsig*=BdfXMrny=#wL~~hKb3EDdtHA X28Jf4NtPBC=BCY|jN3yQ8T)(y7M>LS delta 68 zcmaDnoAvQ*)(t9*h9#LP2Ij?vMf&DOM&^l$N#-VoX67l028M=aCI%)cNvRf=sb+@e X=4Pn|28I@9spie0jN3yQ8T)(y;*b;T diff --git a/master/.doctrees/doc/resources/roscon2023_workshop.doctree b/master/.doctrees/doc/resources/roscon2023_workshop.doctree index f233547dfa438466ae338e5613d8f4ab60ea79bd..eff5877af508de3f0ba8ce844bc45a16b8f4a726 100644 GIT binary patch delta 62 zcmca!cD-za1*2g>N=aURa(14+MM{d9d6KEQnW=edvawNGqM5OYrHNr;a$<^kl7WGt RiD{Chg@w84=1j(SmH@1|6es`y delta 62 zcmca!cD-za1*2g}W{QD%v0;(Exsj21Vq%iHiJ_T!N}_?Gp_z$+NlH?xg=MOlp}DzP Rs)2!_g;}ck=1j(SmH>SM6BYmf 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 666049ac111d986db559ff07e2bb330a7a7d09fe..4ee328a7058bd24c1f18429577360267f9eb7c55 100644 GIT binary patch delta 64 zcmX?io$=gt#tjyXh6O1ldHKoNdHNP9DQ4zLrsig*=BdfXMrny=#wL~~hKb3EDdtHA T28Jf4NtPBC=BAr78B?-gTnBC#tlJ?Mg=J)dHKoNdHNP9DQ4zLrsig*=BdfXMrny=#wL~~hKb3EDdtHA Z28Jf4NtPBC=BE0SPjY!|KEqg?0RTl}7R3Mn delta 69 zcmdmgg>nBC#tlJ?MkSdk2Ij?vMf&DOM&^l$N#-VoX67l028M=aCI%)cNvRf=sb+@e Z=4Pn|28I@9spk5VPjY!|KEqg?0RRwD6|(>U 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 042f14a6dd0a15f275a0256b2013dd5dda7052a4..5ecf191f3b7fc4662b0bf6a0e20432a1b4b05ebc 100644 GIT binary patch delta 62 zcmexg^1oz*1EXOJQ3TbX-dQW%2NlNY0+@=< Q5v_-Tv=BkF;CGd+|Bp%%k^lez diff --git a/master/.doctrees/doc/ros2_control/hardware_interface/doc/writing_new_hardware_component.doctree b/master/.doctrees/doc/ros2_control/hardware_interface/doc/writing_new_hardware_component.doctree index 03d7d9a1f25e010259c9bf259079946b9d9c0d93..1fa89f10673ffa00d0a7d959a7b9cc736d332b95 100644 GIT binary patch delta 64 zcmZo~WNB|?+2F@$SddbZm!F)Sr*DyxVrHIXYHns~o|fuAl=l;| delta 64 zcmZo~WNB|?+2F@$Sdy7yU|wukq;GCyWS*FqWNu<;W}cF0U}$J&VqlVzlxks_YG!C| TZkB3bU}#~MYQDLik>fuAWk3?3 diff --git a/master/.doctrees/doc/ros2_control/ros2controlcli/doc/userdoc.doctree b/master/.doctrees/doc/ros2_control/ros2controlcli/doc/userdoc.doctree index 9a3be9e6b077807f854954a3715842c0c66c433c..427e1fcf8bf74d66fd369fa914990a5bfadd17b3 100644 GIT binary patch delta 64 zcmex!hw;xH#tn9ih6O1ldHKoNdHNP9DQ4zLrsig*=BdfXMrny=#wL~~hKb3EDdtHA T28Jf4NtPBC=BAtT8F_O7^bQoC delta 64 zcmex!hw;xH#tn9ih9#LP2Ij?vMf&DOM&^l$N#-VoX67l028M=aCI%)cNvRf=sb+@e T=4Pn|28I@9spgyW8F_O7#8(rI diff --git a/master/.doctrees/doc/ros2_control_demos/doc/index.doctree b/master/.doctrees/doc/ros2_control_demos/doc/index.doctree index bf852d4127ec9bca797c73409e7e456906e1008f..e3ef86e657fea197974114196bd455bcf12cc008 100644 GIT binary patch delta 69 zcmbQy$~>c$d4n0FQ9(*cUVd_Rp1ws&ikW$mskxb{d1|t;QCgyzv5BRLVPbM(ig}WO ZfuV_MlBI=(xvBo-f=%L^>lq~v0ssLY6_Ee{ delta 69 zcmbQy$~>c$d4n0FQAuWsfqAiEk-oW+k$GZblDUbYnR!a0fuW(9iGfKlq~v0szbZ6n_8! 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 41ab3911a577419079d5dd14693e3226f104b316..2ac17d368621044a9f7ca2196f43d29ab77378d5 100644 GIT binary patch delta 62 zcmeB_>Xh2h&th1RQj(XSoSmm{k&Xh2h&th1TnPOmGY*?gkZe(Phn3!a4VrXWbl4xLPXl7zyl9H5aVVP=XXl`zn RYG7b!VU}vX`2dS22LM2)5ugA7 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 1ec9bb945c5f9d6ea8e752ca1f32e81e983c28aa..c322ac9a8d57f9eacc91865479aa07b0cf7c1c85 100644 GIT binary patch delta 76 zcmeBfWbJNb-4MlSRFG1Vm!F)Sr*DyxVrHIXYHns~o|<{9 delta 76 zcmeBfWbJNb-4MlSRFauuU|wukq;GCyWS*FqWNu<;W}cF0U}$J&VqlVzlxks_YG!C| gZkB3bU}#~MYOX(tUwpExfN1j$#_c;8886!b09Mo$_W%F@ 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 0d83caaad89e3395b1e82a10bf33618c67899dd6..7db0ea2655c9f89ff4b3ada998b4f27c04969609 100644 GIT binary patch delta 64 zcmdnKk8%4x#tkuyh6O1ldHKoNdHNP9DQ4zLrsig*=BdfXMrny=#wL~~hKb3EDdtHA U28Jf4NtPBC=BAr_8CS&u0L()aq5uE@ delta 64 zcmdnKk8%4x#tkuyh9#LP2Ij?vMf&DOM&^l$N#-VoX67l028M=aCI%)cNvRf=sb+@e U=4Pn|28I@9spgw|8CS&u0Gx~ykN^Mx 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 4ee16b23e9e662f052dd9956d87ce69fea53bec3..8d64f6cb41b043ef885b53845190d459ab720c6a 100644 GIT binary patch delta 69 zcmbRHk7@2drVTNSMg=J)dHKoNdHNP9DQ4zLrsig*=BdfXMrny=#wL~~hKb3EDdtHA Z28Jf4NtPBC=BE0SCvb^xUdmXp7XV2L7ODUM delta 69 zcmbRHk7@2drVTNSMkSdk2Ij?vMf&DOM&^l$N#-VoX67l028M=aCI%)cNvRf=sb+@e Z=4Pn|28I@9spk5VCvb^xUdmXp7XTCa6_@}3 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 1595f7e024e88affcf9ae05053b8c500f4d1a664..d476d69f4be5ac610593b448aafc2996c425bd5d 100644 GIT binary patch delta 73 zcmeBQ!PLKkX+sR7Q9(*cUVd_Rp1ws&ikW$mskxb{d1|t;QCgyzv5BRLVPbM(ig}WO dfuV_MlBI=(xvBnSL4NVcwR~cmcQb}e0sv-f7GnSa delta 73 zcmeBQ!PLKkX+sR7QAuWsfqAiEk-oW+k$GZblDUbYnR!a0fuW(9iGfKQRAeEA-Et)$c02)2<_0o+NGdIKBqr2uuC@X4AGXl zPHdS3`K4MJ%Uiwv)Z7>@@K7gng#yj)>D?||EL}9u^gTed{vjrc671luVjilvS9<{s q9EkUkBdx};2Ri>y=e_vbAV%O`htG8t1coy6lInie5mMJ2i>D~jrsy?P|-^G8*M5H%{xicgJ_PVCvS7q8uE zrd2qoLKwf3syLi8#Ez>1Rl60<1k~@f{@|Kb+#&pl3n6kYEe$wxYoZ2*G+#KZcyi`c?NFU@lS(G9DjF% zq7Q~n0Nk@LO{eErcw{xv*JrvJ{;3Il!6QT4aYA=s$>SC*XT^GSI~uWOFzAJt0DL(Y zNlf6c&26+4A7_LG6Owt<+S>6W;qg#BO7GvGGpsS<%S)pQ5kN;3cUZ8=T zzzNj!KQ#I>RA?!mXZa=bvIXDH?6WI}CnXkMVWAL%1^iaXK^emrpYY4|x9q-D;rObV gnKm;%Tz89f*OmJmyus>B463-NI1bBnuGlL61}`=LI{*Lx 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 ba779354d790dc83e53fb615b09bd67f1bd6059d..402ca452712646d1a8f6b176dc0592a9ce4610ac 100644 GIT binary patch delta 73 zcmZ4UmTApfrVUYyMg=J)dHKoNdHNP9DQ4zLrsig*=BdfXMrny=#wL~~hKb3EDdtHA d28Jf4NtPBC=BE0S1^L7$Z{-!;yo2$}766|a7#RQn delta 73 zcmZ4UmTApfrVUYyMkSdk2Ij?vMf&DOM&^l$N#-VoX67l028M=aCI%)cNvRf=sb+@e d=4Pn|28I@9spk5V1^L7$Z{-!;yo2$}764_y7Y6_U 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 024923e738b269cfcd5fde6f21a27796cb33d0e0..7ef743d9ca359bc0483050e0cd02a7ed0fe8b5f8 100644 GIT binary patch delta 73 zcmbQWoN3l_rVUYyMg=J)dHKoNdHNP9DQ4zLrsig*=BdfXMrny=#wL~~hKb3EDdtHA d28Jf4NtPBC=BE0S75K#`_wtEu-of~2A^>f?7aafq delta 73 zcmbQWoN3l_rVUYyMkSdk2Ij?vMf&DOM&^l$N#-VoX67l028M=aCI%)cNvRf=sb+@e d=4Pn|28I@9spk5V75K#`_wtEu-of~2A^VV9Z)DuQk&)4AJ^;4&7*GHJ delta 73 zcmaETknQzBwhd8?MkSdk2Ij?vMf&DOM&^l$N#-VoX67l028M=aCI%)cNvRf=sb+@e d=4Pn|28I@9spk5V?>VV9Z)DuQk&)4AJ^+257d`+0 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 d0dcc61cb2a24728e49013fa31cdd879ee914e4f..f977f88f16f6d3ce461e913a401e8057584f9011 100644 GIT binary patch delta 73 zcmX^2mGRtH#tl)7Mg=J)dHKoNdHNP9DQ4zLrsig*=BdfXMrny=#wL~~hKb3EDdtHA d28Jf4NtPBC=BE0S5Aujlo?0cfc`u`2B>=uk7*YTL delta 73 zcmX^2mGRtH#tl)7MkSdk2Ij?vMf&DOM&^l$N#-VoX67l028M=aCI%)cNvRf=sb+@e d=4Pn|28I@9spk5V5Aujlo?0cfc`u`2B>;r+7eD|2 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 3ef25aa9f326ae734d51f54f5206c6e3ddab5b46..433e34b47947db3634e0047a06359edd5d041e78 100644 GIT binary patch delta 76 zcmex4kLl+;rVUYyrUfY_dHKoNdHNP9DQ4zLrsig*=BdfXMrny=#wL~~hKb3EDdtHA g28Jf4NtPBC=BD~7`N@+%Mu<#4$Irca9pmX<0QZ0zEC2ui delta 76 zcmex4kLl+;rVUYyrX`sv2Ij?vMf&DOM&^l$N#-VoX67l028M=aCI%)cNvRf=sb+@e g=4Pn|28I@9spk4A`N@+%Mu<#4$Irca9pmX<0J`xR8UO$Q diff --git a/master/.doctrees/doc/ros2_controllers/ackermann_steering_controller/doc/userdoc.doctree b/master/.doctrees/doc/ros2_controllers/ackermann_steering_controller/doc/userdoc.doctree index cc0ff584107e3caa06e0e3e947965fb42e73f0e6..5910588bc8cbdb2c38a13b386577da1aa007fe56 100644 GIT binary patch delta 71 zcmZpVYLD6w!)R2HQj(XSoSmm{k&)gYoDL#tlAt<8 delta 64 zcmX>)gYoDL#tlA 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 255560b43ba557167f95bb829bf3c68a940acfd5..2c9c57c331049555ba96a2cb0b8dfe0bd15a08e2 100644 GIT binary patch delta 71 zcmdnzyU%w+1fx+wN=aURa(14+MM{d9d6KEQnW=edvawNGqM5OYrHNr;a$<^kl7WGt biD{Chg@w7P{$xQx(a94;WH#?+WL53-CN=aURa(14+MM{d9d6KEQnW=edvawNGqM5OYrHNr;a$<^kl7WGt RiD{Chg@w84=5og6asYbl69fPN delta 62 zcmbQ|FwbFw8>3-KW{QD%v0;(Exsj21Vq%iHiJ_T!N}_?Gp_z$+NlH?xg=MOlp}DzP Rs)2!_g;}ck=5og6asW#;5%K^4 diff --git a/master/.doctrees/doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc.doctree b/master/.doctrees/doc/ros2_controllers/force_torque_sensor_broadcaster/doc/userdoc.doctree index 3ef2d4744c164e3f9f9b075f18ae1bf0664f9e07..bcce5a2e498471e13eff0aefe01f05bd790791a9 100644 GIT binary patch delta 62 zcmccUe9?JB0;6F;N=aURa(14+MM{d9d6KEQnW=edvawNGqM5OYrHNr;a$<^kl7WGt RiD{Chg@w84=823B3ILi26F&d| delta 62 zcmccUe9?JB0;6F`W{QD%v0;(Exsj21Vq%iHiJ_T!N}_?Gp_z$+NlH?xg=MOlp}DzP Rs)2!_g;}ck=823B3IJ+R5-k7# diff --git a/master/.doctrees/doc/ros2_controllers/forward_command_controller/doc/userdoc.doctree b/master/.doctrees/doc/ros2_controllers/forward_command_controller/doc/userdoc.doctree index 50fc98812872b441ab60122196cb30be69bb1f0b..26b32f18636d27e4b303473871c3fc7e6a9ae489 100644 GIT binary patch delta 67 zcmX?^ax!H@7^6`^N=aURa(14+MM{d9d6KEQnW=edvawNGqM5OYrHNr;a$<^kl7WGt XiD{Chg@w7P{$xf)gUve_CmH|%2I&<9 delta 67 zcmX?^ax!H@7^6{1W{QD%v0;(Exsj21Vq%iHiJ_T!N}_?Gp_z$+NlH?xg=MOlp}DzP Xs)2!_g;}b({$xf)gUve_CmH|%(a96? diff --git a/master/.doctrees/doc/ros2_controllers/gripper_controllers/doc/userdoc.doctree b/master/.doctrees/doc/ros2_controllers/gripper_controllers/doc/userdoc.doctree index 73ad0adeb72bb7a7204e42b2484ed006d2ee1f5a..b791dd8060d822130851c6fffa6ee28761b9b9c9 100644 GIT binary patch delta 62 zcmZn;Y!2Mu!Dv{JQj(XSoSmm{k&JQ3~sW28W3(i Qy4t1y88Sl)@q5aGA5Ux%fB*mh 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 d40b3757f5dcea2d817b2241f6485676fd27759c..b92e83da416977e7722fd1d2c349dedd97a9347e 100644 GIT binary patch delta 64 zcmdnm%eb|daYF#3VL?hsUVd_Rp1ws&ikW$mskxb{d1|t;QCgyzv5BRLVPbM(ig}WO TfuV_MlBI=(x#{LcMiW;6uig`u delta 64 zcmdnm%eb|daYF#3VM%6+fqAiEk-oW+k$GZblDUbYnR!a0fuW(9iGfK*(t5Tjv1N=aURa(14+MM{d9d6KEQnW=edvawNGqM5OYrHNr;a$<^kl7WGt RiD{Chg@w84=4QrZB>*(t5Tjv9W{QD%v0;(Exsj21Vq%iHiJ_T!N}_?Gp_z$+NlH?xg=MOlp}DzP Rs)2!_g;}ck=4QrZB>;0J5@-Mb 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 7a9a7c10eef64a4cc86cb881f0f1b562411dcf28..424262b64c07ea57e1e453b6a173f67b633fdd94 100644 GIT binary patch delta 62 zcmbO)H(zc;0;6F;N=aURa(14+MM{d9d6KEQnW=edvawNGqM5OYrHNr;a$<^kl7WGt RiD{Chg@w84=824byZ~`!63hSq delta 62 zcmbO)H(zc;0;6F`W{QD%v0;(Exsj21Vq%iHiJ_T!N}_?Gp_z$+NlH?xg=MOlp}DzP Rs)2!_g;}ck=824byZ}M25xM{X diff --git a/master/.doctrees/doc/ros2_controllers/steering_controllers_library/doc/userdoc.doctree b/master/.doctrees/doc/ros2_controllers/steering_controllers_library/doc/userdoc.doctree index 64a333f1fcbef41899f8bb23781e6957dfe6667c..67021124e54ed5fe3881459fbcb9faad747f0230 100644 GIT binary patch delta 69 zcmeygk?GS$rVUYyMg=J)dHKoNdHNP9DQ4zLrsig*=BdfXMrny=#wL~~hKb3EDdtHA Z28Jf4NtPBC=BE0S`-E*bpJddW4ggL+7L))0 delta 69 zcmeygk?GS$rVUYyMkSdk2Ij?vMf&DOM&^l$N#-VoX67l028M=aCI%)cNvRf=sb+@e Z=4Pn|28I@9spk5V`-E*bpJddW4geW06@mZ& 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 d4b7b0e8688ba893b3cb3d56183b0f2a5520799d..b908e7e96d6e043bdea3938ad900cc422549bb65 100644 GIT binary patch delta 62 zcmbQMF;`=Q2cuy@N=aURa(14+MM{d9d6KEQnW=edvawNGqM5OYrHNr;a$<^kl7WGt RiD{Chg@w84=1RsTLI7`?62|}l delta 62 zcmbQMF;`=Q2cuz0W{QD%v0;(Exsj21Vq%iHiJ_T!N}_?Gp_z$+NlH?xg=MOlp}DzP Rs)2!_g;}ck=1RsTLI6MG5w!pS diff --git a/master/.doctrees/doc/ros2_controllers/tricycle_steering_controller/doc/userdoc.doctree b/master/.doctrees/doc/ros2_controllers/tricycle_steering_controller/doc/userdoc.doctree index 3fad3a296cce4464bc532340d32cdca4f22d7b2f..b02a1f3d7edbe1ea26708075f301778aaf528925 100644 GIT binary patch delta 71 zcmaDJ_&jh!6r)i=N=aURa(14+MM{d9d6KEQnW=edvawNGqM5OYrHNr;a$<^kl7WGt biD{Chg@w7P{^Wjs(aAsAH8!7Qlv4))YqS>6 delta 71 zcmaDJ_&jh!6r)i|W{QD%v0;(Exsj21Vq%iHiJ_T!N}_?Gp_z$+NlH?xg=MOlp}DzP bs)2!_g;}b({^Wjs(aAsAH8!7Qlv4))GFuhB diff --git a/master/.doctrees/doc/ros2_controllers/velocity_controllers/doc/userdoc.doctree b/master/.doctrees/doc/ros2_controllers/velocity_controllers/doc/userdoc.doctree index a7d98aad5dc5161047aee66a0a59f0ad51b130e9..f29260f8e8fa891c7a23a87cc1a030d0620bf21c 100644 GIT binary patch delta 62 zcmaFj@Wf$*7o%Z8N=aURa(14+MM{d9d6KEQnW=edvawNGqM5OYrHNr;a$<^kl7WGt RiD{Chg@w84=4!^5asZvc6WRa( delta 62 zcmaFj@Wf$*7o%ZGW{QD%v0;(Exsj21Vq%iHiJ_T!N}_?Gp_z$+NlH?xg=MOlp}DzP Rs)2!_g;}ck=4!^5asX}#6374m diff --git a/master/.doctrees/doc/simulators/simulators.doctree b/master/.doctrees/doc/simulators/simulators.doctree index 9c888f5ea0ee790b0eacd4e9482e86a1da1657f6..d62cb8074b1e5ce85d337c64cf919792b1e754c4 100644 GIT binary patch delta 62 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 tY#;iYT|j3_i$v!2a|fsa?LR@Gp#}f| delta 40830 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 YYlATRZRT*LFvoQB=DbrKPpOFPIaAx#CIA2c diff --git a/master/.doctrees/index.doctree b/master/.doctrees/index.doctree index 70f2aee1384c53ba00cdbfb016d8be5df50d9282..5aa35ccf766f5e7f7b120e83a060e15c3016278d 100644 GIT binary patch delta 82 zcmZ2}opJef#tmkSh6O1ldHKoNdHNP9DQ4zLrsig*=BdfXMrny=#wL~~hKb3EDdtHA m28Jf4NtPBC=BAs|8O?$ijW^E=He+Noo@^f~z4=4Pb};~A5E?Q7 delta 82 zcmZ2}opJef#tmkSh9#LP2Ij?vMf&DOM&^l$N#-VoX67l028M=aCI%)cNvRf=sb+@e m=4Pn|28I@9spgy08O?$ijW*8Maintainers

0.82
-
+
- + @@ -183,18 +183,18 @@

Maintainers -
+
0.57
-
+
- + @@ -215,7 +215,7 @@

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

Maintainers
0.75
-
+
- + @@ -308,18 +308,18 @@

Maintainers -
+
0.31
-
+
- + @@ -340,7 +340,7 @@

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

Maintainers -
+
0.97
-
+
@@ -639,7 +639,7 @@

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

Reviewers’ Stats -
+
@@ -726,15 +726,15 @@

Reviewers’ Stats
- 0.13 + 0.12
-
+
@@ -813,7 +813,7 @@

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

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

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

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

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

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

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

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

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

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

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

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

Reviewers’ Stats
0.97
-
+
@@ -3841,7 +3841,7 @@

Reviewers’ Stats -
+
0.81 @@ -3870,7 +3870,7 @@

Reviewers’ Stats -
+
0.26 @@ -3899,7 +3899,7 @@

Reviewers’ Stats -
+
0.71 @@ -3928,7 +3928,7 @@

Reviewers’ Stats -
+
0.10 @@ -3957,7 +3957,7 @@

Reviewers’ Stats -
+
1.00 @@ -3983,15 +3983,15 @@

Reviewers’ Stats -
+
- 0.07 + 0.06
-
+
@@ -4012,15 +4012,15 @@

Reviewers’ Stats -
+
0.07
-
+
@@ -4044,7 +4044,7 @@

Reviewers’ Stats -
+
0.42 @@ -4073,7 +4073,7 @@

Reviewers’ Stats -
+
0.83 @@ -4099,15 +4099,15 @@

Reviewers’ Stats -
+
0.05
-
+
@@ -4131,7 +4131,7 @@

Reviewers’ Stats -
+
1.00 @@ -4160,7 +4160,7 @@

Reviewers’ Stats -
+
0.57 @@ -4189,7 +4189,7 @@

Reviewers’ Stats -
+
1.00 @@ -4218,7 +4218,7 @@

Reviewers’ Stats -
+
1.00 @@ -4244,15 +4244,15 @@

Reviewers’ Stats -
+
0.02
-
+
@@ -4273,15 +4273,15 @@

Reviewers’ Stats -
+
0.02
-
+
@@ -4305,7 +4305,7 @@

Reviewers’ Stats -
+
1.00 @@ -4334,7 +4334,7 @@

Reviewers’ Stats -
+
1.00 @@ -4360,15 +4360,15 @@

Reviewers’ Stats -
+
0.02
-
+
@@ -4389,15 +4389,15 @@

Reviewers’ Stats -
+
0.01
-
+
@@ -4421,7 +4421,7 @@

Reviewers’ Stats -
+
0.01 @@ -4447,15 +4447,15 @@

Reviewers’ Stats -
+
0.01
-
+
@@ -4479,7 +4479,7 @@

Reviewers’ Stats -
+
0.01 @@ -4508,7 +4508,7 @@

Reviewers’ Stats -
+
1.00 @@ -4537,7 +4537,7 @@

Reviewers’ Stats -
+
0.03 @@ -4566,7 +4566,7 @@

Reviewers’ Stats -
+
1.00 @@ -4595,7 +4595,7 @@

Reviewers’ Stats -
+
1.00 @@ -4624,7 +4624,7 @@

Reviewers’ Stats -
+
1.00 @@ -4653,7 +4653,7 @@

Reviewers’ Stats -
+
1.00 @@ -4682,7 +4682,7 @@

Reviewers’ Stats -
+
1.00 @@ -4711,7 +4711,7 @@

Reviewers’ Stats -
+
1.00 @@ -4740,7 +4740,7 @@

Reviewers’ Stats -
+
1.00 @@ -4769,7 +4769,7 @@

Reviewers’ Stats -
+
1.00 @@ -4798,7 +4798,7 @@

Reviewers’ Stats -
+
1.00 @@ -4827,7 +4827,7 @@

Reviewers’ Stats -
+
0.33 @@ -4856,7 +4856,7 @@

Reviewers’ Stats -
+
1.00 @@ -4885,7 +4885,7 @@

Reviewers’ Stats -
+
1.00 @@ -4914,7 +4914,7 @@

Reviewers’ Stats -
+
1.00 @@ -4943,7 +4943,7 @@

Reviewers’ Stats -
+
1.00 @@ -4972,7 +4972,7 @@

Reviewers’ Stats -
+
1.00 @@ -5001,7 +5001,7 @@

Reviewers’ Stats -
+
0.50 @@ -5030,7 +5030,7 @@

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

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

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

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

Reviewers’ Stats
ros2 topic pub --rate 30 /diffbot_base_controller/cmd_vel_unstamped geometry_msgs/msg/Twist "linear:
-  x: 0.7
-  y: 0.0
-  z: 0.0
-angular:
-  x: 0.0
-  y: 0.0
-  z: 1.0"
+
ros2 topic pub --rate 30 /diffbot_base_controller/cmd_vel geometry_msgs/msg/TwistStamped "
+twist:
+  linear:
+    x: 0.7
+    y: 0.0
+    z: 0.0
+  angular:
+    x: 0.0
+    y: 0.0
+    z: 1.0"
 

You should now see an orange box circling in RViz. diff --git a/master/index.html b/master/index.html index abf461e5dc8..bc572542cf0 100644 --- a/master/index.html +++ b/master/index.html @@ -148,7 +148,7 @@

Development Organisation and Communication -

Built on 2024-01-02 at 05:31 GMT

+

Built on 2024-01-03 at 05:31 GMT

diff --git a/master/searchindex.js b/master/searchindex.js index 17c9c4a30e3..a6c58aeb3fa 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, 3, 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, "12": [0, 17, 55], "30t20": 0, "25": 0, "34z": 0, "dr": [0, 7], "deni": [0, 6, 7, 8], "destogl": 0, "987": 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, "2024": [0, 56], "01": [0, 40, 43, 45, 56], "02": [0, 56], "03": [0, 45], "26": 0, "35": [0, 50], "utc": 0, "dure": [0, 17, 28, 45], "past": [0, 44], "month": 0, "533": 0, "402": 0, "75": 0, "440": 0, "136": 0, "31": [0, 56], "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, "92": 0, "89": 0, "01t18": 0, "14z": 0, "sai": 0, "kishor": 0, "kothakota": 0, "saikishor": 0, "70": 0, "68": 0, "97": 0, "31t17": 0, "43": [0, 4, 13, 23], "49z": 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, "andyz": 0, "45": 0, "96": 0, "23t02": 0, "17": [0, 8], "26z": 0, "abrar": 0, "rahman": 0, "protyasha": 0, "aprotya": 0, "157": 0, "27": 0, "25t12": 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, "54": 0, "45z": 0, "erick": 0, "g": [0, 1, 2, 3, 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, "18": [0, 8, 28], "94": 0, "27t13": 0, "arn": 0, "hitzmann": 0, "arne48": 0, "146": 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, "felix": 0, "exner": 0, "fexner": 0, "fmauch": 0, "24t22": 0, "46": 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, "69": 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, "11z": 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, "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, "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, "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, "67": 0, "81": [0, 6], "71": 0, "104": 0, "83": 0, "03t19": 0, "86": 0, "95": 0, "100": [0, 3, 4, 13, 37, 47, 53], "99": [0, 10], "90": [0, 28], "98": 0, "80": 0, "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, 3, 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], "cart_control": 3, "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], "hold_joint": 3, "true": [3, 23, 30, 34, 43, 44, 45, 46, 50], "hold": [3, 43, 44], "wa": [3, 6, 8, 15, 19, 23, 24, 28, 36, 44], "claim": [3, 9, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], "hasn": 3, "been": [3, 21], "yet": [3, 9, 10, 17, 21, 34, 44, 45], "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], "joint_state_broadcast": [3, 13, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "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_trajectory_control": [3, 5, 6, 16, 19, 35, 49], "action": [3, 5, 9, 43], "follow_joint_trajectori": [3, 5, 45], "followjointtrajectori": [3, 5, 43, 45], "controller_manag": [3, 4, 5, 6, 10, 16, 24, 35, 36, 37, 45, 47, 53], "ros__paramet": [3, 5, 37, 45, 47, 53], "update_r": [3, 10, 35, 37, 47, 53], "hz": [3, 37, 40, 47, 53], "jointstatebroadcast": [3, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "interface_nam": [3, 20, 38, 39], "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], "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, "cartpole_control": 5, "gazebosimsysteminterfac": 5, "controller_manager_prefix_node_nam": 5, "joint_state_control": [5, 16], "jointstatecontrol": [5, 16], "cart_pole_control": 5, "write_op_mod": 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, "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, "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], "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], "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], "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, "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], "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, "1199574016": 20, "1676318848": 20, "rrbotsystemwithgpiohardwar": 20, "gp": 20, "example_12": 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, "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], "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, "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, 3, 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], "1246": 0, "1026": 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, "2024": [0, 56], "01": [0, 40, 43, 45, 56], "02t15": 0, "13": [0, 8, 17], "59z": 0, "dr": [0, 7], "deni": [0, 6, 7, 8], "destogl": 0, "991": 0, "563": 0, "57": 0, "02t17": 0, "14": [0, 17, 50], "23z": 0, "christoph": 0, "fr\u00f6hlich": 0, "christophfroehlich": 0, "153": 0, "134": 0, "88": 0, "2023": 0, "12": [0, 17, 55], "26t09": 0, "00": [0, 8], "02z": 0, "fetch": 0, "03": [0, 45, 56], "27": 0, "15": 0, "utc": 0, "dure": [0, 17, 28, 45], "past": [0, 44], "month": 0, "534": 0, "403": 0, "75": 0, "443": 0, "137": 0, "31": [0, 56], "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, "92": 0, "89": 0, "01t18": 0, "02": 0, "14z": 0, "sai": 0, "kishor": 0, "kothakota": 0, "saikishor": 0, "71": 0, "69": 0, "97": 0, "31t17": 0, "43": [0, 4, 13, 23], "49z": 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, "03z": 0, "andyz": 0, "45": 0, "96": 0, "23t02": 0, "17": [0, 8], "26z": 0, "abrar": 0, "rahman": 0, "protyasha": 0, "aprotya": 0, "157": 0, "25t12": 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, "54": 0, "45z": 0, "erick": 0, "g": [0, 1, 2, 3, 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, "140": 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, "none": [0, 9, 36, 42, 43, 45], "bijoua29": 0, "160": 0, "21": [0, 50], "06": 0, "01t20": 0, "48": [0, 3, 5], "32z": 0, "jaron": 0, "l": 0, "168": 0, "10t19": 0, "59": 0, "livanov93": 0, "164": 0, "05": [0, 45, 56], "22t06": 0, "28z": 0, "tyler": 0, "weaver": 0, "tylerjw": 0, "18": [0, 8, 28], "94": 0, "27t13": 0, "arn": 0, "hitzmann": 0, "arne48": 0, "147": 0, "16": [0, 55], "11": [0, 17], "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, "136": 0, "22t09": 0, "26": 0, "felix": 0, "exner": 0, "fexner": 0, "fmauch": 0, "24t22": 0, "46": 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], "25": 0, "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, "11z": 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, "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, "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, "37": 0, "17z": 0, "han": 0, "martin": 0, "duringhof": 0, "4": [0, 13, 17, 22, 24, 26, 29, 48], "29t21": 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, "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, "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, "18t14": 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, "68": 0, "66": 0, "81": [0, 6], "104": 0, "90": [0, 28], "83": 0, "03t19": 0, "99": [0, 10], "80": 0, "86": 0, "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, 3, 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], "cart_control": 3, "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], "hold_joint": 3, "true": [3, 23, 30, 34, 43, 44, 45, 46, 50], "hold": [3, 43, 44], "wa": [3, 6, 8, 15, 19, 23, 24, 28, 36, 44], "claim": [3, 9, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], "hasn": 3, "been": [3, 21], "yet": [3, 9, 10, 17, 21, 34, 44, 45], "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], "joint_state_broadcast": [3, 13, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "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_trajectory_control": [3, 5, 6, 16, 19, 35, 49], "action": [3, 5, 9, 43], "follow_joint_trajectori": [3, 5, 45], "followjointtrajectori": [3, 5, 43, 45], "controller_manag": [3, 4, 5, 6, 10, 16, 24, 35, 36, 37, 45, 47, 53], "ros__paramet": [3, 5, 37, 45, 47, 53], "update_r": [3, 10, 35, 37, 47, 53], "100": [3, 4, 13, 37, 47, 53], "hz": [3, 37, 40, 47, 53], "jointstatebroadcast": [3, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30], "interface_nam": [3, 20, 38, 39], "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], "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, "cartpole_control": 5, "gazebosimsysteminterfac": 5, "controller_manager_prefix_node_nam": 5, "joint_state_control": [5, 16], "jointstatecontrol": [5, 16], "cart_pole_control": 5, "write_op_mod": 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, "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, "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], "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, 23, 34], "cmd_vel_unstamp": 9, "Its": [9, 56], "continu": [9, 43, 44, 45], "chainabl": [9, 17, 21, 34, 45], "ownership": 9, "process": [9, 15, 28, 36, 44], "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], "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, "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], "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, "1199574016": 20, "1676318848": 20, "rrbotsystemwithgpiohardwar": 20, "gp": 20, "example_12": 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], "twiststamp": [23, 34, 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, "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], "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], "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, "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