diff --git a/.github/dependabot.yml b/.github/dependabot.yml index aafd67c2369..3506a3c098a 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -24,4 +24,4 @@ updates: directory: "/" schedule: interval: "weekly" - target-branch: "iron" + target-branch: "jazzy" diff --git a/.github/workflows/pr-stats.yml b/.github/workflows/pr-stats.yml index c85b0e8f18b..210cf3e1d7e 100644 --- a/.github/workflows/pr-stats.yml +++ b/.github/workflows/pr-stats.yml @@ -44,7 +44,7 @@ jobs: key: reviewer-stats-${{ github.run_id }} path: ~/reviews - name: Upload Artifacts - uses: actions/upload-artifact@v4.3.3 + uses: actions/upload-artifact@v4.4.3 with: name: pr-stats path: ~/reviews diff --git a/.github/workflows/sphinx-check-links.yml b/.github/workflows/sphinx-check-links.yml index 3769d0aa1a8..9cce492d96b 100644 --- a/.github/workflows/sphinx-check-links.yml +++ b/.github/workflows/sphinx-check-links.yml @@ -14,7 +14,7 @@ jobs: strategy: fail-fast: false matrix: - BRANCH: [humble, iron, jazzy, rolling] + BRANCH: [humble, jazzy, rolling] steps: - uses: actions/checkout@v4 with: diff --git a/.github/workflows/sphinx-check-page-multiversion.yml b/.github/workflows/sphinx-check-page-multiversion.yml index 4898efc998e..c8b37bf3e72 100644 --- a/.github/workflows/sphinx-check-page-multiversion.yml +++ b/.github/workflows/sphinx-check-page-multiversion.yml @@ -9,7 +9,6 @@ on: type: choice options: - humble - - iron - jazzy - rolling pull_request: diff --git a/.github/workflows/sphinx-check-warnings.yml b/.github/workflows/sphinx-check-warnings.yml index 0230ac7f84f..54ecb487e64 100644 --- a/.github/workflows/sphinx-check-warnings.yml +++ b/.github/workflows/sphinx-check-warnings.yml @@ -14,7 +14,7 @@ jobs: strategy: fail-fast: false matrix: - BRANCH: [humble, iron, jazzy, rolling] + BRANCH: [humble, jazzy, rolling] steps: - uses: actions/checkout@v4 with: diff --git a/README.md b/README.md index 479a36a51c9..e2e7b4b6cee 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # Status [![Build & Deploy Page](https://github.com/ros-controls/control.ros.org/actions/workflows/sphinx-make-page.yml/badge.svg)](https://github.com/ros-controls/control.ros.org/actions/workflows/sphinx-make-page.yml) -[![Broken Links](https://github.com/ros-controls/control.ros.org/actions/workflows/sphinx-check-links.yml/badge.svg?branch=master)](https://github.com/ros-controls/control.ros.org/actions/workflows/sphinx-check-links.yml) -[![Sphinx Warnings](https://github.com/ros-controls/control.ros.org/actions/workflows/sphinx-check-warnings.yml/badge.svg?branch=master)](https://github.com/ros-controls/control.ros.org/actions/workflows/sphinx-check-warnings.yml) +[![Broken Links](https://github.com/ros-controls/control.ros.org/actions/workflows/sphinx-check-links.yml/badge.svg?branch=rolling)](https://github.com/ros-controls/control.ros.org/actions/workflows/sphinx-check-links.yml) +[![Sphinx Warnings](https://github.com/ros-controls/control.ros.org/actions/workflows/sphinx-check-warnings.yml/badge.svg?branch=rolling)](https://github.com/ros-controls/control.ros.org/actions/workflows/sphinx-check-warnings.yml) # control.ros.org https://control.ros.org/ diff --git a/conf.py b/conf.py index 8f5007b5302..d4d11c84225 100644 --- a/conf.py +++ b/conf.py @@ -172,6 +172,14 @@ github_url = "https://github.com/ros-controls/control.ros.org" +# -- linkchecker options ----------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#filtering +linkcheck_anchors_ignore_for_url = [ + 'https://github.com/', + 'https://index.ros.org/' + ] +linkcheck_ignore = [r'https://gazebosim.org/home'] + # -- Options for HTMLHelp output --------------------------------------------- # Output file base name for HTML help builder. @@ -206,7 +214,7 @@ smv_released_pattern = r"^refs/(heads|remotes/[^/]+)/(foxy|galactic|humble|iron|jazzy).*$" smv_remote_whitelist = r"^(origin)$" smv_latest_version = "jazzy" -smv_eol_versions = ["foxy", "galactic"] +smv_eol_versions = ["foxy", "galactic", "iron"] distro_full_names = { "foxy": "Foxy Fitzroy", diff --git a/doc/acknowledgements/acknowledgements.rst b/doc/acknowledgements/acknowledgements.rst index 34c69328728..537df2c3ad5 100644 --- a/doc/acknowledgements/acknowledgements.rst +++ b/doc/acknowledgements/acknowledgements.rst @@ -76,6 +76,19 @@ Companies and Institutions -------------------------- The project has received major contributions from the following companies and institutions. +|stoglroboticslogo| + +.. |stoglroboticslogo| image:: images/stoglroboticslogo.png + :width: 300 + :alt: "Stogl Robotics Consulting" + +|aitlogo| + +.. |aitlogo| image:: images/ait_logo.jpg + :width: 300 + :alt: "Austrian Institute of Technology" + + |palroboticslogo| .. |palroboticslogo| image:: images/palroboticslogo.png @@ -88,12 +101,6 @@ The project has received major contributions from the following companies and in :width: 300 :alt: "PickNik Robotics" -|stoglroboticslogo| - -.. |stoglroboticslogo| image:: images/stoglroboticslogo.png - :width: 300 - :alt: "Stogl Robotics Consulting" - |rosin_ack_logo_wide| Supported by ROSIN - ROS-Industrial Quality-Assured Robot Software Components. diff --git a/doc/acknowledgements/images/ait_logo.jpg b/doc/acknowledgements/images/ait_logo.jpg new file mode 100644 index 00000000000..aeb8a64eb1b Binary files /dev/null and b/doc/acknowledgements/images/ait_logo.jpg differ diff --git a/doc/getting_started/getting_started.rst b/doc/getting_started/getting_started.rst index 1a888821779..864c374ded9 100644 --- a/doc/getting_started/getting_started.rst +++ b/doc/getting_started/getting_started.rst @@ -15,19 +15,16 @@ To use it, you have to install ``ros-{DISTRO}-ros2-control`` and ``ros-{DISTRO}- Building from Source --------------------------- -The rolling branch is compatible with both Humble and Iron ROS distributions. You can find more information about this compatibility on the respective `Humble `__, `Iron `__, and `Jazzy `__ versions of this page. +The rolling branch is compatible with both Humble and Jazzy ROS distributions. You can find more information about this compatibility on the respective `Humble `__ and `Jazzy `__ versions of this page. .. raw:: html {DISTRO} Binary Build
- - Rolling Compatibility iron
- Rolling Compatibility jazzy
- + Rolling Compatibility Jazzy - Rolling Compatibility humble + Rolling Compatibility Humble If you want to install the framework from source, e.g., for contributing to the framework, use the following commands: diff --git a/doc/migration/migration.rst b/doc/migration/migration.rst index 38160168681..6fc4e24aefa 100644 --- a/doc/migration/migration.rst +++ b/doc/migration/migration.rst @@ -14,22 +14,13 @@ Coming from ros_control (ROS 1) Between different ROS 2 distributions ************************************** -These lists summarizes necessary changes to your code for a version update. For non-breaking updates, see the :ref:`release_notes`. +This list summarizes necessary changes to your code for a version update to {DISTRO}. If you are skipping a distribution update, make sure to read the migration guides of all intermediate distributions. -ros2_control -------------- +For non-breaking updates, see the :ref:`release_notes`. -.. toctree:: - :titlesonly: - - Foxy to Galactic <../ros2_control/doc/migration/Galactic.rst> - Iron to Jazzy <../ros2_control/doc/migration/Jazzy.rst> - - -ros2_controllers ----------------- .. toctree:: :titlesonly: - Iron to Jazzy <../ros2_controllers/doc/migration/Jazzy.rst> + ros2_control <../ros2_control/doc/migration.rst> + ros2_controllers <../ros2_controllers/doc/migration.rst> diff --git a/doc/release_notes/release_notes.rst b/doc/release_notes/release_notes.rst index 49d490ce858..b94097abaf8 100644 --- a/doc/release_notes/release_notes.rst +++ b/doc/release_notes/release_notes.rst @@ -3,25 +3,15 @@ Release Notes ================================= -This page should highlight the most important changes of the ros2_control framework. +This page should highlight the most important changes of the ros2_control framework in the {DISTRO} release. If you are skipping a distribution update, make sure to read the release notes of all intermediate distributions. These lists might not be complete, see the ``CHANGELOG.rst`` files in the respective repositories for a full list of changes. For necessary changes to your code for a version update, see the :ref:`migration`. -ros2_control -------------- .. toctree:: :titlesonly: - Iron to Jazzy <../ros2_control/doc/release_notes/Jazzy.rst> - - -ros2_controllers ----------------- - -.. toctree:: - :titlesonly: - - Iron to Jazzy <../ros2_controllers/doc/release_notes/Jazzy.rst> + ros2_control <../ros2_control/doc/release_notes.rst> + ros2_controllers <../ros2_controllers/doc/release_notes.rst> diff --git a/doc/resources/images/ROSCon2024.png b/doc/resources/images/ROSCon2024.png new file mode 100644 index 00000000000..0f2848c2382 Binary files /dev/null and b/doc/resources/images/ROSCon2024.png differ diff --git a/doc/resources/presentations/ROSCon_Spain_2023_introduction_to_ros2_control.pdf b/doc/resources/presentations/ROSCon_Spain_2023_introduction_to_ros2_control.pdf new file mode 100644 index 00000000000..3ce1fff7943 Binary files /dev/null and b/doc/resources/presentations/ROSCon_Spain_2023_introduction_to_ros2_control.pdf differ diff --git a/doc/resources/resources.rst b/doc/resources/resources.rst index 9af662da31c..4eb9a7bee19 100644 --- a/doc/resources/resources.rst +++ b/doc/resources/resources.rst @@ -31,6 +31,43 @@ Summary: - Dr. Denis Stogl (Stogl Robotics Consulting) +2023-09-19 ROSCon Spain Talk: Introduction to ros2_control +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +:download:`Presentation: Introduction to ros2_control ` + +Summary: + This presentation aims to introduce the audience to the ros2_control framework, a hardware-agnostic control framework focusing on the modular composition of control systems for robots, sharing of controllers as well as real-time performance. The framework provides controller-lifecycle and hardware management on top of abstractions of real or virtual hardware interfaces. The talk explains different modules within the ros2_control ecosystem, such as hardware interfaces, controllers, controller managers, and how they interact with each other. + +`Recording `__ + + *Presenter: Sai Kishor Kothakota* + + Authors: + - Sai Kishor Kothakota (PAL Robotics) + +2023-07-07 ROS Developers Day 2023: Configure a Mobile Manipulator with ros2_control +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, + +`Recording `__ + +`Github repo with code `__ + +TBD add Construct rosject link + + +Summary: + In this hands-on presentation, we demonstrate how to set up a mobile manipulator with ros2_control in steps. First, we take a robot mobile base and demonstrate setting up ros2_control simulation for it in the URDF. Once done, a robot arm will be added to the mobile base, turning it into a mobile manipulator robot. The existing ros2_control configuration will be adjusted to accommodate for the new robot parts. Finally, the rosject concludes with a demonstration in Gazebo moving the robot using some off-the-shelf ros2_control controllers. + + Attendees will learn + + * how to prototype a mobile manipulator with URDF and ros2_control + * how to configure a gazebo simulation with a given URDF and ros2_control + + *Presenter: Bence Magyar* + + Authors: + - Dr. Bence Magyar (FiveAI / Bosch) + 2023-02 ROS Meetup Munich #5 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, :download:`Presentation: Tricycle Controller with ros2_control ` diff --git a/doc/roscon2024_workshop.rst b/doc/roscon2024_workshop.rst new file mode 100644 index 00000000000..12c58b135b7 --- /dev/null +++ b/doc/roscon2024_workshop.rst @@ -0,0 +1,49 @@ +.. _roscon2024_workshop: + +ROSCon 2024 Workshop +==================== + +**Location: Room 200** + +**Time: 13:00-17:00, 21. October 2024** + +ros2_control: Fun with Controllers +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + .. image:: resources/images/ROSCon2024.png + :scale: 50% + +Summary +------- + +If you already know that the ros2_control framework acts as a Kernel for ROS 2 robotics systems you are using but need help with application complexity, then this workshop is for you. The workshop covers the use of ros2_control controllers in products from various industries and shows solutions for all the little issues when running 24/7. + +You will get a practical overview of concepts like controller chaining - used for cascade control and real-time state estimators; and asynchronous and "side-load" controllers that enable you to run complex calculations without jitter in your control loops. We expect your active involvement! + +Before coming to the conference +------------------------------- + +Recommended system setup: + +* Ubuntu 22.04 or Ubuntu 24.04 +* docker engine & docker compose installed + +If you don't have docker, follow `the docker instructions `_ to install it. + +If you don't have docker compose, run ``sudo apt-get install docker-compose-plugin`` or follow `the docker compose instructions `_ to install it. + +Slides are available in `pdf `_ and `pptx `_ . + +Try pulling the container we use prior to coming to the workshop: + +.. code:: + + docker pull bmagyar/roscon2024_workshop + +People +------ + +This workshop was brought to you by + +* Dr. Denis Stogl, `Stogl Robotics Consulting `_ +* Dr. Bence Magyar, `Locus Robotics `_ diff --git a/doc/supported_robots/supported_robots.rst b/doc/supported_robots/supported_robots.rst index a87d6f9c3db..e71cc4bf1cd 100644 --- a/doc/supported_robots/supported_robots.rst +++ b/doc/supported_robots/supported_robots.rst @@ -12,9 +12,11 @@ Communication protocols End-effectors -------------- - `Schunk SVH 5-finger Hand `_ +- `TESOLLO DG-3F Delto Gripper-3F `_ Non robot-devices ------------------ +- `ctrlX AUTOMATION `_ - `Force Dimension haptic devices `_ - `Hoverboard motors `_ - `NDI measurement systems `_ diff --git a/index.rst b/index.rst index af534b4cdc2..ba1751a2d82 100644 --- a/index.rst +++ b/index.rst @@ -6,6 +6,7 @@ Welcome to the ros2_control documentation! .. toctree:: :hidden: + doc/roscon2024_workshop.rst doc/getting_started/getting_started.rst doc/ros2_control/doc/index.rst doc/ros2_controllers/doc/controllers_index.rst diff --git a/make_help_scripts/check_links.py b/make_help_scripts/check_links.py index 0182e19ba86..d6a1d9ca7af 100755 --- a/make_help_scripts/check_links.py +++ b/make_help_scripts/check_links.py @@ -25,10 +25,12 @@ LOGFILE = "linkcheck.log" + def cleanup(): os.remove(LOGFILE) shutil.rmtree("doc/api/", ignore_errors=True) + def main(): if len(sys.argv) != 2: print("Usage: python check_links.py ") @@ -37,15 +39,18 @@ def main(): html_dir = sys.argv[1] # Copy API documentation to local directory - shutil.copytree(os.path.join(html_dir, "doc", "api"), "doc/api/", dirs_exist_ok=True) + shutil.copytree(os.path.join(html_dir, "doc", "api"), + "doc/api/", dirs_exist_ok=True) # Run linkcheck with open(LOGFILE, "w") as logfile: - subprocess.run(["make", "linkcheck"], stdout=logfile, stderr=subprocess.PIPE) + subprocess.run(["make", "linkcheck"], stdout=logfile, + stderr=subprocess.PIPE) # Check for broken links with open(LOGFILE, "r") as logfile: - broken_links = [line for line in logfile if "broken" in line and "github" not in line] + broken_links = [ + line for line in logfile if 'broken' in line] if broken_links: num_broken = len(broken_links) @@ -58,5 +63,6 @@ def main(): cleanup() sys.exit(0) + if __name__ == "__main__": main() diff --git a/make_help_scripts/create_pr_stats.py b/make_help_scripts/create_pr_stats.py index 2e3df9f2697..615e0f3a29b 100644 --- a/make_help_scripts/create_pr_stats.py +++ b/make_help_scripts/create_pr_stats.py @@ -692,7 +692,7 @@ def print_contributors_stats(contributors_stats): "ros2_debian": "main" } -maintainers = ["bmagyar", "destogl", "christophfroehlich"] +maintainers = ["bmagyar", "destogl", "christophfroehlich", "saikishor"] blacklist = ["dependabot[bot]", "mergify[bot]"] # Get the current date and time diff --git a/make_help_scripts/deploy_defines.py b/make_help_scripts/deploy_defines.py index c05b4026777..877dedcd963 100644 --- a/make_help_scripts/deploy_defines.py +++ b/make_help_scripts/deploy_defines.py @@ -126,8 +126,8 @@ def add_pr_stats_file(): "galactic": "galactic", "humble": "humble", "iron": "iron", - "jazzy": "master", - "rolling": "master" # master is rolling + "jazzy": "jazzy", + "rolling": "rolling" }, "pr": os.environ.get('GZ_ROS2_CONTROL_PR') },