├── .github ├── dependabot.yml ├── mergify.yml └── workflows │ ├── humble-binary-downstream-build.yml │ ├── humble-build.yml │ ├── humble-ci-pre-commit.yml │ ├── jazzy-binary-downstream-build.yml │ ├── jazzy-build.yml │ ├── jazzy-pre-commit.yml │ ├── reviewer_lottery.yml │ ├── rolling-binary-downstream-build.yml │ ├── rolling-build.yml │ ├── rolling-pre-commit.yml │ ├── rosdoc2.yml │ ├── stale.yml │ └── update-pre-commit.yml ├── .pre-commit-config.yaml ├── LICENSE ├── README.md ├── control_msgs ├── CHANGELOG.rst ├── CMakeLists.txt ├── action │ ├── FollowJointTrajectory.action │ ├── GripperCommand.action │ ├── JointTrajectory.action │ ├── ParallelGripperCommand.action │ ├── PointHead.action │ └── SingleJointPosition.action ├── doc │ ├── conf.py │ └── index.rst ├── msg │ ├── AdmittanceControllerState.msg │ ├── DynamicInterfaceGroupValues.msg │ ├── DynamicInterfaceValues.msg │ ├── DynamicJointState.msg │ ├── GripperCommand.msg │ ├── InterfaceValue.msg │ ├── JointComponentTolerance.msg │ ├── JointControllerState.msg │ ├── JointJog.msg │ ├── JointTolerance.msg │ ├── JointTrajectoryControllerState.msg │ ├── MecanumDriveControllerState.msg │ ├── MultiDOFCommand.msg │ ├── MultiDOFStateStamped.msg │ ├── PidState.msg │ ├── SingleDOFState.msg │ ├── SingleDOFStateStamped.msg │ ├── SpeedScalingFactor.msg │ └── SteeringControllerStatus.msg ├── package.xml └── srv │ ├── QueryCalibrationState.srv │ └── QueryTrajectoryState.srv ├── ros_controls.humble.repos ├── ros_controls.jazzy.repos ├── ros_controls.kilted.repos └── ros_controls.rolling.repos /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: "github-actions" 9 | # Workflow files stored in the 10 | # default location of `.github/workflows` 11 | directory: "/" 12 | schedule: 13 | interval: "weekly" 14 | - package-ecosystem: "github-actions" 15 | # Workflow files stored in the 16 | # default location of `.github/workflows` 17 | directory: "/" 18 | schedule: 19 | interval: "weekly" 20 | target-branch: "jazzy" 21 | - package-ecosystem: "github-actions" 22 | # Workflow files stored in the 23 | # default location of `.github/workflows` 24 | directory: "/" 25 | schedule: 26 | interval: "weekly" 27 | target-branch: "humble" 28 | -------------------------------------------------------------------------------- /.github/mergify.yml: -------------------------------------------------------------------------------- 1 | pull_request_rules: 2 | 3 | - name: Backport to humble at reviewers discretion 4 | conditions: 5 | - base=master 6 | - "label=backport-humble" 7 | actions: 8 | backport: 9 | branches: 10 | - humble 11 | 12 | - name: Backport to jazzy at reviewers discretion 13 | conditions: 14 | - base=master 15 | - "label=backport-jazzy" 16 | actions: 17 | backport: 18 | branches: 19 | - jazzy 20 | 21 | - name: Ask to resolve conflict 22 | conditions: 23 | - conflict 24 | - author!=mergify[bot] 25 | - author!=dependabot[bot] 26 | actions: 27 | comment: 28 | message: This pull request is in conflict. Could you fix it @{{author}}? 29 | 30 | - name: Ask to resolve conflict for backports 31 | conditions: 32 | - conflict 33 | - author=mergify[bot] 34 | actions: 35 | comment: 36 | message: This pull request is in conflict. Could you fix it @bmagyar @destogl @christophfroehlich @saikishor? 37 | 38 | - name: development targets master branch 39 | conditions: 40 | - base!=master 41 | - author!=bmagyar 42 | - author!=destogl 43 | - author!=christophfroehlich 44 | - author!=saikishor 45 | - author!=mergify[bot] 46 | - author!=dependabot[bot] 47 | actions: 48 | comment: 49 | message: | 50 | @{{author}}, all pull requests must be targeted towards the `master` development branch. 51 | Once merged into `master`, it is possible to backport to `{{base}}`, but it must be in `master` 52 | to have these changes reflected into new distributions. 53 | -------------------------------------------------------------------------------- /.github/workflows/humble-binary-downstream-build.yml: -------------------------------------------------------------------------------- 1 | name: Humble Downstream Build 2 | # description: 'Build & test downstream packages from source.' 3 | # author: Christoph Froehlich 4 | 5 | on: 6 | workflow_dispatch: 7 | pull_request: 8 | branches: 9 | - humble 10 | 11 | concurrency: 12 | group: ${{ github.workflow }}-${{ github.ref }} 13 | cancel-in-progress: true 14 | 15 | jobs: 16 | build-downstream: 17 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master 18 | with: 19 | ros_distro: humble 20 | ros_repo: testing 21 | ref_for_scheduled_build: humble 22 | not_test_build: true 23 | downstream_workspace: ros_controls.humble.repos 24 | not_test_downstream: true 25 | -------------------------------------------------------------------------------- /.github/workflows/humble-build.yml: -------------------------------------------------------------------------------- 1 | name: Humble Binary Build 2 | # author: Denis Štogl 3 | # description: 'Build & test all dependencies from released (binary) packages.' 4 | 5 | on: 6 | workflow_dispatch: 7 | pull_request: 8 | branches: 9 | - humble 10 | push: 11 | branches: 12 | - humble 13 | schedule: 14 | # Run every morning to detect flakiness and broken dependencies 15 | - cron: '28 6 * * MON-FRI' 16 | 17 | concurrency: 18 | # cancel previous runs of the same workflow, except for pushes on master branch 19 | group: ${{ github.workflow }}-${{ github.ref }} 20 | cancel-in-progress: ${{ !startsWith(github.ref, '/refs/heads') }} 21 | 22 | jobs: 23 | binary: 24 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master 25 | strategy: 26 | fail-fast: false 27 | matrix: 28 | ROS_DISTRO: [humble] 29 | ROS_REPO: [main, testing] 30 | with: 31 | ros_distro: ${{ matrix.ROS_DISTRO }} 32 | ros_repo: ${{ matrix.ROS_REPO }} 33 | ref_for_scheduled_build: humble 34 | -------------------------------------------------------------------------------- /.github/workflows/humble-ci-pre-commit.yml: -------------------------------------------------------------------------------- 1 | name: Humble Pre-Commit 2 | 3 | on: 4 | workflow_dispatch: 5 | pull_request: 6 | branches: 7 | - humble 8 | 9 | concurrency: 10 | group: ${{ github.workflow }}-${{ github.ref }} 11 | cancel-in-progress: true 12 | 13 | jobs: 14 | pre-commit: 15 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-pre-commit.yml@master 16 | with: 17 | ros_distro: humble 18 | -------------------------------------------------------------------------------- /.github/workflows/jazzy-binary-downstream-build.yml: -------------------------------------------------------------------------------- 1 | name: Jazzy Downstream Build 2 | # description: 'Build & test downstream packages from source.' 3 | # author: Christoph Froehlich 4 | 5 | on: 6 | workflow_dispatch: 7 | pull_request: 8 | branches: 9 | - jazzy 10 | 11 | concurrency: 12 | group: ${{ github.workflow }}-${{ github.ref }} 13 | cancel-in-progress: true 14 | 15 | jobs: 16 | build-downstream: 17 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master 18 | with: 19 | ros_distro: jazzy 20 | ros_repo: testing 21 | ref_for_scheduled_build: jazzy 22 | not_test_build: true 23 | downstream_workspace: ros_controls.jazzy.repos 24 | not_test_downstream: true 25 | -------------------------------------------------------------------------------- /.github/workflows/jazzy-build.yml: -------------------------------------------------------------------------------- 1 | name: Jazzy Binary Build 2 | # author: Denis Štogl 3 | # description: 'Build & test all dependencies from released (binary) packages.' 4 | 5 | on: 6 | workflow_dispatch: 7 | pull_request: 8 | branches: 9 | - jazzy 10 | push: 11 | branches: 12 | - jazzy 13 | schedule: 14 | # Run every morning to detect flakiness and broken dependencies 15 | - cron: '28 6 * * MON-FRI' 16 | 17 | concurrency: 18 | # cancel previous runs of the same workflow, except for pushes on jazzy branch 19 | group: ${{ github.workflow }}-${{ github.ref }} 20 | cancel-in-progress: ${{ !startsWith(github.ref, '/refs/heads') }} 21 | 22 | jobs: 23 | binary: 24 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master 25 | strategy: 26 | fail-fast: false 27 | matrix: 28 | ROS_REPO: [main, testing] 29 | with: 30 | ros_distro: jazzy 31 | ros_repo: ${{ matrix.ROS_REPO }} 32 | ref_for_scheduled_build: jazzy 33 | -------------------------------------------------------------------------------- /.github/workflows/jazzy-pre-commit.yml: -------------------------------------------------------------------------------- 1 | name: Jazzy Pre-Commit 2 | 3 | on: 4 | workflow_dispatch: 5 | pull_request: 6 | branches: 7 | - jazzy 8 | 9 | concurrency: 10 | # cancel previous runs of the same workflow 11 | group: ${{ github.workflow }}-${{ github.ref }} 12 | cancel-in-progress: true 13 | 14 | jobs: 15 | pre-commit: 16 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-pre-commit.yml@master 17 | with: 18 | ros_distro: jazzy 19 | -------------------------------------------------------------------------------- /.github/workflows/reviewer_lottery.yml: -------------------------------------------------------------------------------- 1 | name: Reviewer lottery 2 | # pull_request_target takes the same events as pull_request, 3 | # but it runs on the base branch instead of the head branch. 4 | on: 5 | pull_request_target: 6 | types: [opened, ready_for_review, reopened] 7 | 8 | jobs: 9 | assign_reviewers: 10 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-reviewer-lottery.yml@master 11 | -------------------------------------------------------------------------------- /.github/workflows/rolling-binary-downstream-build.yml: -------------------------------------------------------------------------------- 1 | name: Rolling Downstream Build 2 | # description: 'Build & test downstream packages from source.' 3 | # author: Christoph Froehlich 4 | 5 | on: 6 | workflow_dispatch: 7 | pull_request: 8 | branches: 9 | - master 10 | 11 | concurrency: 12 | group: ${{ github.workflow }}-${{ github.ref }} 13 | cancel-in-progress: true 14 | 15 | jobs: 16 | build-downstream: 17 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master 18 | strategy: 19 | fail-fast: false 20 | matrix: 21 | ROS_DISTRO: [kilted, rolling] 22 | with: 23 | ros_distro: ${{ matrix.ROS_DISTRO }} 24 | ros_repo: testing 25 | ref_for_scheduled_build: master 26 | not_test_build: true 27 | downstream_workspace: ros_controls.${{ matrix.ROS_DISTRO }}.repos 28 | not_test_downstream: true 29 | -------------------------------------------------------------------------------- /.github/workflows/rolling-build.yml: -------------------------------------------------------------------------------- 1 | name: Rolling Binary Build 2 | # author: Denis Štogl 3 | # description: 'Build & test all dependencies from released (binary) packages.' 4 | 5 | on: 6 | workflow_dispatch: 7 | pull_request: 8 | branches: 9 | - master 10 | push: 11 | branches: 12 | - master 13 | schedule: 14 | # Run every morning to detect flakiness and broken dependencies 15 | - cron: '28 6 * * MON-FRI' 16 | 17 | concurrency: 18 | # cancel previous runs of the same workflow, except for pushes on master branch 19 | group: ${{ github.workflow }}-${{ github.ref }} 20 | cancel-in-progress: ${{ !startsWith(github.ref, '/refs/heads') }} 21 | 22 | jobs: 23 | binary: 24 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master 25 | strategy: 26 | fail-fast: false 27 | matrix: 28 | ROS_DISTRO: [kilted, rolling] 29 | ROS_REPO: [main, testing] 30 | with: 31 | ros_distro: ${{ matrix.ROS_DISTRO }} 32 | ros_repo: ${{ matrix.ROS_REPO }} 33 | ref_for_scheduled_build: master 34 | -------------------------------------------------------------------------------- /.github/workflows/rolling-pre-commit.yml: -------------------------------------------------------------------------------- 1 | name: Rolling Pre-Commit 2 | 3 | on: 4 | workflow_dispatch: 5 | pull_request: 6 | branches: 7 | - master 8 | 9 | concurrency: 10 | # cancel previous runs of the same workflow 11 | group: ${{ github.workflow }}-${{ github.ref }} 12 | cancel-in-progress: true 13 | 14 | jobs: 15 | pre-commit: 16 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-pre-commit.yml@master 17 | strategy: 18 | fail-fast: false 19 | matrix: 20 | ROS_DISTRO: [kilted, rolling] 21 | with: 22 | ros_distro: ${{ matrix.ROS_DISTRO }} 23 | -------------------------------------------------------------------------------- /.github/workflows/rosdoc2.yml: -------------------------------------------------------------------------------- 1 | name: rosdoc2 2 | 3 | on: 4 | workflow_dispatch: 5 | pull_request: 6 | paths: 7 | - control_msgs/doc/** 8 | - control_msgs/rosdoc2.yaml 9 | - control_msgs/package.xml 10 | 11 | concurrency: 12 | # cancel previous runs of the same workflow 13 | group: ${{ github.workflow }}-${{ github.ref }} 14 | cancel-in-progress: true 15 | 16 | jobs: 17 | check: 18 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-rosdoc2.yml@master 19 | -------------------------------------------------------------------------------- /.github/workflows/stale.yml: -------------------------------------------------------------------------------- 1 | name: 'Stale issues and PRs' 2 | on: 3 | workflow_dispatch: 4 | schedule: 5 | # UTC noon every workday 6 | - cron: '0 12 * * MON-FRI' 7 | 8 | jobs: 9 | stale: 10 | runs-on: ubuntu-latest 11 | permissions: 12 | issues: write 13 | pull-requests: write 14 | steps: 15 | - uses: actions/stale@v9 16 | with: 17 | stale-issue-label: 'stale' 18 | stale-pr-label: 'stale' 19 | stale-issue-message: 'This issue is being labeled as stale because it has been open 45 days with no activity. It will be automatically closed after another 45 days without follow-ups.' 20 | close-issue-message: 'This issue was closed because it has been stalled for 45 days with no activity.' 21 | stale-pr-message: 'This PR is stale because it has been open for 45 days with no activity. Please tag a maintainer for help on completing this PR, or close it if you think it has become obsolete.' 22 | days-before-stale: 45 23 | days-before-close: 45 24 | days-before-pr-close: -1 25 | exempt-all-milestones: true 26 | exempt-issue-labels: good first issue,good second issue,persistent,release,roadmap,Epic 27 | operations-per-run: 100 28 | -------------------------------------------------------------------------------- /.github/workflows/update-pre-commit.yml: -------------------------------------------------------------------------------- 1 | name: Auto Update pre-commit 2 | # Update pre-commit config and create PR if changes are detected 3 | # author: Christoph Fröhlich 4 | 5 | on: 6 | workflow_dispatch: 7 | schedule: 8 | - cron: '0 0 1 * *' # Runs at 00:00, on day 1 of the month 9 | 10 | jobs: 11 | auto_update_and_create_pr: 12 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-update-pre-commit.yml@master 13 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | 2 | # To use: 3 | # 4 | # pre-commit run -a 5 | # 6 | # Or: 7 | # 8 | # pre-commit install # (runs every time you commit in git) 9 | # 10 | # To update this file: 11 | # 12 | # pre-commit autoupdate 13 | # 14 | # See https://github.com/pre-commit/pre-commit 15 | 16 | repos: 17 | # Standard hooks 18 | - repo: https://github.com/pre-commit/pre-commit-hooks 19 | rev: v5.0.0 20 | hooks: 21 | - id: check-added-large-files 22 | - id: check-ast 23 | - id: check-case-conflict 24 | - id: check-docstring-first 25 | - id: check-merge-conflict 26 | - id: check-symlinks 27 | - id: check-xml 28 | - id: check-yaml 29 | - id: debug-statements 30 | - id: end-of-file-fixer 31 | - id: mixed-line-ending 32 | - id: trailing-whitespace 33 | exclude_types: [rst] 34 | - id: fix-byte-order-marker 35 | 36 | 37 | # Python hooks 38 | - repo: https://github.com/asottile/pyupgrade 39 | rev: v3.20.0 40 | hooks: 41 | - id: pyupgrade 42 | args: [--py36-plus] 43 | 44 | # PyDocStyle 45 | - repo: https://github.com/PyCQA/pydocstyle 46 | rev: 6.3.0 47 | hooks: 48 | - id: pydocstyle 49 | args: ["--ignore=D100,D101,D102,D103,D104,D105,D106,D107,D203,D212,D404"] 50 | 51 | - repo: https://github.com/psf/black 52 | rev: 25.1.0 53 | hooks: 54 | - id: black 55 | args: ["--line-length=99"] 56 | 57 | - repo: https://github.com/pycqa/flake8 58 | rev: 7.2.0 59 | hooks: 60 | - id: flake8 61 | args: ["--extend-ignore=E501"] 62 | 63 | # CPP hooks 64 | - repo: https://github.com/pre-commit/mirrors-clang-format 65 | rev: v20.1.5 66 | hooks: 67 | - id: clang-format 68 | args: ['-fallback-style=none', '-i'] 69 | 70 | - repo: local 71 | hooks: 72 | - id: ament_cppcheck 73 | name: ament_cppcheck 74 | description: Static code analysis of C/C++ files. 75 | entry: env AMENT_CPPCHECK_ALLOW_SLOW_VERSIONS=1 ament_cppcheck 76 | language: system 77 | files: \.(h\+\+|h|hh|hxx|hpp|cuh|c|cc|cpp|cu|c\+\+|cxx|tpp|txx)$ 78 | 79 | - repo: local 80 | hooks: 81 | - id: ament_cpplint 82 | name: ament_cpplint 83 | description: Static code analysis of C/C++ files. 84 | entry: ament_cpplint 85 | language: system 86 | files: \.(h\+\+|h|hh|hxx|hpp|cuh|c|cc|cpp|cu|c\+\+|cxx|tpp|txx)$ 87 | args: ["--linelength=100", "--filter=-whitespace/newline"] 88 | 89 | # Cmake hooks 90 | - repo: local 91 | hooks: 92 | - id: ament_lint_cmake 93 | name: ament_lint_cmake 94 | description: Check format of CMakeLists.txt files. 95 | entry: ament_lint_cmake 96 | language: system 97 | files: CMakeLists\.txt$ 98 | 99 | # Copyright 100 | - repo: local 101 | hooks: 102 | - id: ament_copyright 103 | name: ament_copyright 104 | description: Check if copyright notice is available in all files. 105 | entry: ament_copyright 106 | language: system 107 | exclude: doc/conf.py 108 | 109 | # Docs - RestructuredText hooks 110 | - repo: https://github.com/PyCQA/doc8 111 | rev: v1.1.2 112 | hooks: 113 | - id: doc8 114 | args: ['--max-line-length=100', '--ignore=D001'] 115 | exclude: CHANGELOG\.rst$ 116 | 117 | - repo: https://github.com/pre-commit/pygrep-hooks 118 | rev: v1.10.0 119 | hooks: 120 | - id: rst-backticks 121 | exclude: CHANGELOG\.rst$ 122 | - id: rst-directive-colons 123 | - id: rst-inline-touching-normal 124 | 125 | # Spellcheck in comments and docs 126 | # skipping of *.svg files is not working... 127 | - repo: https://github.com/codespell-project/codespell 128 | rev: v2.4.1 129 | hooks: 130 | - id: codespell 131 | args: ['--write-changes'] 132 | exclude: CHANGELOG\.rst|\.(svg|pyc)$ 133 | 134 | - repo: https://github.com/python-jsonschema/check-jsonschema 135 | rev: 0.33.0 136 | hooks: 137 | - id: check-github-workflows 138 | args: ["--verbose"] 139 | - id: check-github-actions 140 | args: ["--verbose"] 141 | - id: check-dependabot 142 | args: ["--verbose"] 143 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2025 ros2_control Development Team 2 | 3 | Redistribution and use in source and binary forms, with or without 4 | modification, are permitted provided that the following conditions are met: 5 | 6 | * Redistributions of source code must retain the above copyright 7 | notice, this list of conditions and the following disclaimer. 8 | 9 | * Redistributions in binary form must reproduce the above copyright 10 | notice, this list of conditions and the following disclaimer in the 11 | documentation and/or other materials provided with the distribution. 12 | 13 | * Neither the name of the copyright holder nor the names of its 14 | contributors may be used to endorse or promote products derived from 15 | this software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # control_msgs 2 | 3 | [![License](https://img.shields.io/badge/License-BSD_3_Clause-blue.svg)](https://opensource.org/license/bsd-3-clause) 4 | 5 | control_msgs contains base messages, services and actions useful for controlling robots. It provides representations for controller setpoints and joint and cartesian trajectories. 6 | 7 | See [control_msgs documentation](http://docs.ros.org/en/rolling/p/control_msgs/) and release infos on [index.ros.org](http://index.ros.org/p/control_msgs). 8 | 9 | ## Contributing 10 | 11 | As an open-source project, we welcome each contributor, regardless of their background and experience. Pick a [PR](https://github.com/ros-controls/control_msgs/pulls) and review it, or [create your own](https://github.com/ros-controls/control_msgs/contribute)! 12 | If you are new to the project, please read the [contributing guide](https://control.ros.org/rolling/doc/contributing/contributing.html) for more information on how to get started. We are happy to help you with your first contribution. 13 | 14 | ## Build Status 15 | 16 | | Distribution | Repository Link | Build Status | Package build | 17 | |--------------|-----------------|--------------|--------------| 18 | | Rolling | [master](https://github.com/ros-controls/control_msgs/tree/master) | [![Rolling Binary Build](https://github.com/ros-controls/control_msgs/actions/workflows/rolling-build.yml/badge.svg?branch=master)](https://github.com/ros-controls/control_msgs/actions/workflows/rolling-build.yml)
[![build.ros2.org](https://build.ros2.org/buildStatus/icon?job=Rdev__control_msgs__ubuntu_noble_amd64&subject=build.ros2.org)](https://build.ros2.org/job/Rdev__control_msgs__ubuntu_noble_amd64/) | [![Package Build](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__control_msgs__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__control_msgs__ubuntu_noble_amd64__binary/) | 19 | | Kilted | [master](https://github.com/ros-controls/control_msgs/tree/master) | see above
[![build.ros2.org](https://build.ros2.org/buildStatus/icon?job=Kdev__control_msgs__ubuntu_noble_amd64&subject=build.ros2.org)](https://build.ros2.org/job/Kdev__control_msgs__ubuntu_noble_amd64/) | [![Package Build](https://build.ros2.org/buildStatus/icon?job=Kbin_uN64__control_msgs__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Kbin_uN64__control_msgs__ubuntu_noble_amd64__binary/) | 20 | | Jazzy | [jazzy](https://github.com/ros-controls/control_msgs/tree/jazzy) | [![Jazzy Binary Build](https://github.com/ros-controls/control_msgs/actions/workflows/jazzy-build.yml/badge.svg?branch=jazzy)](https://github.com/ros-controls/control_msgs/actions/workflows/jazzy-build.yml)
[![build.ros2.org](https://build.ros2.org/buildStatus/icon?job=Jdev__control_msgs__ubuntu_noble_amd64&subject=build.ros2.org)](https://build.ros2.org/job/Jdev__control_msgs__ubuntu_noble_amd64/) | [![Package Build](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__control_msgs__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__control_msgs__ubuntu_noble_amd64__binary/) | 21 | | Humble | [humble](https://github.com/ros-controls/control_msgs/tree/humble) | [![Humble Binary Build](https://github.com/ros-controls/control_msgs/actions/workflows/humble-build.yml/badge.svg)](https://github.com/ros-controls/control_msgs/actions/workflows/humble-build.yml)
[![build.ros2.org](https://build.ros2.org/buildStatus/icon?job=Hdev__control_msgs__ubuntu_jammy_amd64&subject=build.ros2.org)](https://build.ros2.org/job/Hdev__control_msgs__ubuntu_jammy_amd64/) | [![Package Build](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__control_msgs__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__control_msgs__ubuntu_jammy_amd64__binary/) | 22 | | Noetic | [kinetic-devel](https://github.com/ros-controls/control_msgs/tree/kinetic-devel) | [Build status](https://travis-ci.org/ros-controls/control_msgs) | n/a | 23 | 24 | ## Acknowledgements 25 | 26 | The project has received major contributions from companies and institutions [listed on control.ros.org](https://control.ros.org/rolling/doc/acknowledgements/acknowledgements.html) 27 | -------------------------------------------------------------------------------- /control_msgs/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package control_msgs 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 6.2.0 (2025-06-06) 6 | ------------------ 7 | * Update CMake config (`#212 `_) 8 | * Refine naming in SteeringControllerStatus (`#211 `_) 9 | * Contributors: Christoph Fröhlich 10 | 11 | 6.1.0 (2025-04-24) 12 | ------------------ 13 | * Remove unused members from PidState.msg (`#178 `_) 14 | * Contributors: Victor Coutinho Vieira Santos 15 | 16 | 6.0.0 (2025-03-12) 17 | ------------------ 18 | * Cleanup duplicate entries in the msg definition (`#179 `_) 19 | * Add documentation to fields (`#173 `_) 20 | * Contributors: Christoph Fröhlich 21 | 22 | 5.3.0 (2024-11-18) 23 | ------------------ 24 | * Add Dynamic Interface Group Values message (`#155 `_) 25 | * Add speed_scaling_factor msg and field in JointTrajectoryControllerState (`#143 `_) 26 | * Contributors: Felix Exner (fexner), Wiktor Bajor 27 | 28 | 5.2.0 (2024-06-10) 29 | ------------------ 30 | * Add message for publishing interface values with name and stamp (`#98 `_) 31 | * Add custom rosdoc2 config (`#132 `_) 32 | * Contributors: Christoph Fröhlich, Manuel Muth 33 | 34 | 5.1.0 (2024-04-09) 35 | ------------------ 36 | * Add ParallelGripperCommand (`#99 `_) 37 | * Specify BSD as BSD-3-Clause (`#114 `_) 38 | * Contributors: Christoph Fröhlich, Paul Gesel 39 | 40 | 5.0.0 (2023-04-28) 41 | ------------------ 42 | * Update JTC state message (`#86 `_) 43 | * Contributors: Christoph Fröhlich 44 | 45 | 4.3.0 (2023-04-02) 46 | ------------------ 47 | * Add generic messages for commanding and getting states from controllers. (`#69 `_) 48 | * Contributors: Dr. Denis 49 | 50 | 4.2.0 (2023-03-22) 51 | ------------------ 52 | * Add state message for mechanum controller #79 53 | * Status message for steering controllers 54 | * Contributors: Denis Štogl, GiridharBukka, petkovich 55 | 56 | 4.1.0 (2022-10-19) 57 | ------------------ 58 | * Add status admittance controller message (`#68 `_) 59 | * Contributors: Paul Gesel 60 | 61 | 4.0.0 (2022-08-01) 62 | ------------------ 63 | * Added controller states for multi dof joints (`#64 `_) 64 | * Add initial configurations for multiple distros. (`#59 `_) 65 | * Add CI configuration with multiple ROS distributions and use pre-commit in the repository. 66 | * Add badges 67 | * Contributors: Denis Štogl, George Stavrinos 68 | 69 | 3.0.0 (2021-05-27) 70 | ------------------ 71 | * Extend FollowJointTrajectoryAction with multi_dof_trajectory variable 72 | https://github.com/ros-controls/control_msgs/pull/55 73 | * Refractor dependency list for better overview. 74 | * Contributors: Bence Magyar, David V. Lu, Denis Štogl, JafarAbdi 75 | 76 | 2.5.0 (2021-01-22) 77 | ------------------ 78 | * Extend QueryTrajectoryState to allow to report errors 79 | * Contributors: Victor Lopez 80 | 81 | 2.4.1 (2020-08-01) 82 | ------------------ 83 | * Move author field lower in package.xml 84 | * Don't define C standard 85 | * Define package.xml schema for validator 86 | * depend -> build_depend, exec_depend 87 | * Contributors: Bence Magyar, ahcorde 88 | 89 | 2.4.0 (2020-07-03) 90 | ------------------ 91 | * Add std_msgs prefix path to header 92 | * Add JointJog msg to ROS 2 - foxy 93 | * Contributors: AdamPettinger, AndyZe 94 | 95 | 2.3.0 (2020-05-16) 96 | ------------------ 97 | * Implement "flexible joint states" message: add DynamicJointState message 98 | * add description of JointControllerState.msg (`#30 `_) (`#39 `_) 99 | * Contributors: Bence Magyar 100 | 101 | 2.2.0 (2019-09-09) 102 | ------------------ 103 | * generate action interfaces 104 | * Contributors: Mathias Lüdtke 105 | 106 | 2.1.0 (2019-01-29) 107 | ------------------ 108 | * Fix up dependencies for actionlib and Crystal 109 | * Contributors: Bence Magyar 110 | 111 | 2.0.0 (2019-01-25) 112 | ------------------ 113 | * ROS2 Bouncy conversion 114 | * Replace Adolfo with Bence as maintainer 115 | * Contributors: Austin Deric, Bence Magyar, Nestor Gonzalez 116 | 117 | 1.4.0 (2016-04-15) 118 | ------------------ 119 | * Add antiwindup to JointControllerState message definition 120 | * Add PidState message 121 | * Contributors: Paul Bovbel 122 | 123 | 1.3.1 (2015-03-05) 124 | ------------------ 125 | * Export architecture_independent flag in package.xml 126 | * Change package maintainer. 127 | * Contributors: Adolfo Rodriguez Tsouroukdissian, Scott K Logan 128 | 129 | 1.3.0 (2014-02-27) 130 | ------------------ 131 | * Add error_string to action result. 132 | * Contributors: Adolfo Rodriguez Tsouroukdissian 133 | 134 | 1.2.0 (2013-04-25) 135 | ------------------ 136 | 137 | 1.1.6 (2013-02-11) 138 | ------------------ 139 | * adds missing feedback field to PointHeadAction 140 | * Contributors: Adam Leeper 141 | 142 | 1.1.5 (2013-01-23) 143 | ------------------ 144 | * changes PointHeadAction.action to PointHead.action 145 | * Contributors: Adam Leeper 146 | 147 | 1.1.4 (2013-01-22) 148 | ------------------ 149 | * this now contains all messages, services and actions that used to be in ros_controllers and/or pr2_controllers_msgs 150 | * copy JointControllerState and JointTrajectoryControllerState from pr2_controllers_msgs 151 | * copy GripperCommand from pr2_controllers_msgs 152 | * modified dep type of catkin 153 | * Contributors: Dirk Thomas, Ioan Sucan 154 | 155 | 1.1.3 (2012-12-13) 156 | ------------------ 157 | * fix dep 158 | * add missing downstream depend 159 | * switched from langs to message_* packages 160 | * Contributors: Dirk Thomas 161 | 162 | 1.1.2 (2012-12-03) 163 | ------------------ 164 | 165 | 1.1.1 (2012-11-19 15:52) 166 | ------------------------ 167 | * added metapackage for backward compatibility 168 | * Contributors: Ioan Sucan 169 | 170 | 1.1.0 (2012-11-19 14:54) 171 | ------------------------ 172 | * port to catkin 173 | * add bogus dependency on rospy, to get ros_comm 174 | * Added documentation for the FollowJointTrajectory action and the JointTolerance message. 175 | * Added PointHeadAction to control_msgs 176 | * First cut at a FollowJointTrajectory action 177 | * Contributors: Brian Gerkey, Ioan Sucan, Stuart Glaser 178 | -------------------------------------------------------------------------------- /control_msgs/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.10) 2 | 3 | project(control_msgs) 4 | 5 | find_package(action_msgs REQUIRED) 6 | find_package(ament_cmake REQUIRED) 7 | find_package(builtin_interfaces REQUIRED) 8 | find_package(geometry_msgs REQUIRED) 9 | find_package(rosidl_default_generators REQUIRED) 10 | find_package(sensor_msgs REQUIRED) 11 | find_package(std_msgs REQUIRED) 12 | find_package(trajectory_msgs REQUIRED) 13 | 14 | set(msg_files 15 | msg/AdmittanceControllerState.msg 16 | msg/DynamicInterfaceGroupValues.msg 17 | msg/DynamicInterfaceValues.msg 18 | msg/DynamicJointState.msg 19 | msg/GripperCommand.msg 20 | msg/InterfaceValue.msg 21 | msg/JointComponentTolerance.msg 22 | msg/JointControllerState.msg 23 | msg/JointJog.msg 24 | msg/JointTolerance.msg 25 | msg/JointTrajectoryControllerState.msg 26 | msg/MecanumDriveControllerState.msg 27 | msg/MultiDOFCommand.msg 28 | msg/MultiDOFStateStamped.msg 29 | msg/PidState.msg 30 | msg/SingleDOFState.msg 31 | msg/SingleDOFStateStamped.msg 32 | msg/SteeringControllerStatus.msg 33 | msg/SpeedScalingFactor.msg 34 | ) 35 | 36 | set(action_files 37 | action/ParallelGripperCommand.action 38 | action/FollowJointTrajectory.action 39 | action/GripperCommand.action 40 | action/JointTrajectory.action 41 | action/PointHead.action 42 | action/SingleJointPosition.action 43 | ) 44 | 45 | set(srv_files 46 | srv/QueryCalibrationState.srv 47 | srv/QueryTrajectoryState.srv 48 | ) 49 | 50 | rosidl_generate_interfaces(${PROJECT_NAME} 51 | ${action_files} 52 | ${msg_files} 53 | ${srv_files} 54 | DEPENDENCIES 55 | action_msgs 56 | builtin_interfaces 57 | geometry_msgs 58 | sensor_msgs 59 | std_msgs 60 | trajectory_msgs 61 | ADD_LINTER_TESTS 62 | ) 63 | ament_export_dependencies(rosidl_default_runtime) 64 | ament_package() 65 | -------------------------------------------------------------------------------- /control_msgs/action/FollowJointTrajectory.action: -------------------------------------------------------------------------------- 1 | # The trajectory for all revolute, continuous or prismatic joints 2 | trajectory_msgs/JointTrajectory trajectory 3 | # The trajectory for all planar or floating joints (i.e. individual joints with more than one DOF) 4 | trajectory_msgs/MultiDOFJointTrajectory multi_dof_trajectory 5 | 6 | # Tolerances for the trajectory. If the measured joint values fall 7 | # outside the tolerances the trajectory goal is aborted. Any 8 | # tolerances that are not specified (by being omitted or set to 0) are 9 | # set to the defaults for the action server (often taken from the 10 | # parameter server). 11 | 12 | # Tolerances applied to the joints as the trajectory is executed. If 13 | # violated, the goal aborts with error_code set to 14 | # PATH_TOLERANCE_VIOLATED. 15 | JointTolerance[] path_tolerance 16 | JointComponentTolerance[] component_path_tolerance 17 | 18 | # To report success, the joints must be within goal_tolerance of the 19 | # final trajectory value. The goal must be achieved by time the 20 | # trajectory ends plus goal_time_tolerance. (goal_time_tolerance 21 | # allows some leeway in time, so that the trajectory goal can still 22 | # succeed even if the joints reach the goal some time after the 23 | # precise end time of the trajectory). 24 | # 25 | # If the joints are not within goal_tolerance after "trajectory finish 26 | # time" + goal_time_tolerance, the goal aborts with error_code set to 27 | # GOAL_TOLERANCE_VIOLATED 28 | JointTolerance[] goal_tolerance 29 | JointComponentTolerance[] component_goal_tolerance 30 | builtin_interfaces/Duration goal_time_tolerance 31 | 32 | --- 33 | int32 error_code 34 | int32 SUCCESSFUL = 0 35 | int32 INVALID_GOAL = -1 36 | int32 INVALID_JOINTS = -2 37 | int32 OLD_HEADER_TIMESTAMP = -3 38 | int32 PATH_TOLERANCE_VIOLATED = -4 39 | int32 GOAL_TOLERANCE_VIOLATED = -5 40 | 41 | # Human readable description of the error code. Contains complementary 42 | # information that is especially useful when execution fails, for instance: 43 | # - INVALID_GOAL: The reason for the invalid goal (e.g., the requested 44 | # trajectory is in the past). 45 | # - INVALID_JOINTS: The mismatch between the expected controller joints 46 | # and those provided in the goal. 47 | # - PATH_TOLERANCE_VIOLATED and GOAL_TOLERANCE_VIOLATED: Which joint 48 | # violated which tolerance, and by how much. 49 | string error_string 50 | 51 | --- 52 | std_msgs/Header header 53 | string[] joint_names 54 | trajectory_msgs/JointTrajectoryPoint desired 55 | trajectory_msgs/JointTrajectoryPoint actual 56 | trajectory_msgs/JointTrajectoryPoint error 57 | # the currently used point from trajectory.points array 58 | int32 index 59 | 60 | string[] multi_dof_joint_names 61 | trajectory_msgs/MultiDOFJointTrajectoryPoint multi_dof_desired 62 | trajectory_msgs/MultiDOFJointTrajectoryPoint multi_dof_actual 63 | trajectory_msgs/MultiDOFJointTrajectoryPoint multi_dof_error 64 | # the currently used point from multi_dof_trajectory.points array 65 | int32 multi_dof_index 66 | -------------------------------------------------------------------------------- /control_msgs/action/GripperCommand.action: -------------------------------------------------------------------------------- 1 | GripperCommand command 2 | --- 3 | float64 position # The current gripper gap size (in meters) 4 | float64 effort # The current effort exerted (in Newtons) 5 | bool stalled # True iff the gripper is exerting max effort and not moving 6 | bool reached_goal # True iff the gripper position has reached the commanded setpoint 7 | --- 8 | float64 position # The current gripper gap size (in meters) 9 | float64 effort # The current effort exerted (in Newtons) 10 | bool stalled # True iff the gripper is exerting max effort and not moving 11 | bool reached_goal # True iff the gripper position has reached the commanded setpoint 12 | -------------------------------------------------------------------------------- /control_msgs/action/JointTrajectory.action: -------------------------------------------------------------------------------- 1 | trajectory_msgs/JointTrajectory trajectory 2 | --- 3 | --- 4 | -------------------------------------------------------------------------------- /control_msgs/action/ParallelGripperCommand.action: -------------------------------------------------------------------------------- 1 | # Parallel grippers refer to an end effector where two opposing fingers grasp an object from opposite sides. 2 | sensor_msgs/JointState command 3 | # name: the name(s) of the joint this command is requesting 4 | # position: desired position of each gripper joint (radians or meters) 5 | # velocity: (optional, not used if empty) max velocity of the joint allowed while moving (radians or meters / second) 6 | # effort: (optional, not used if empty) max effort of the joint allowed while moving (Newtons or Newton-meters) 7 | --- 8 | sensor_msgs/JointState state # The current gripper state. 9 | # position of each joint (radians or meters) 10 | # optional: velocity of each joint (radians or meters / second) 11 | # optional: effort of each joint (Newtons or Newton-meters) 12 | bool stalled # True if the gripper is exerting max effort and not moving 13 | bool reached_goal # True if the gripper position has reached the commanded setpoint 14 | --- 15 | sensor_msgs/JointState state # The current gripper state. 16 | # position of each joint (radians or meters) 17 | # optional: velocity of each joint (radians or meters / second) 18 | # optional: effort of each joint (Newtons or Newton-meters) 19 | -------------------------------------------------------------------------------- /control_msgs/action/PointHead.action: -------------------------------------------------------------------------------- 1 | geometry_msgs/PointStamped target 2 | geometry_msgs/Vector3 pointing_axis 3 | string pointing_frame 4 | builtin_interfaces/Duration min_duration 5 | float64 max_velocity 6 | --- 7 | --- 8 | float64 pointing_angle_error 9 | -------------------------------------------------------------------------------- /control_msgs/action/SingleJointPosition.action: -------------------------------------------------------------------------------- 1 | float64 position 2 | builtin_interfaces/Duration min_duration 3 | float64 max_velocity 4 | --- 5 | --- 6 | std_msgs/Header header 7 | float64 position 8 | float64 velocity 9 | float64 error 10 | -------------------------------------------------------------------------------- /control_msgs/doc/conf.py: -------------------------------------------------------------------------------- 1 | # Configuration file for the Sphinx documentation builder. 2 | # settings will be overridden by rosdoc2, so we add here only custom settings 3 | 4 | copyright = "2024, ros2_control development team" 5 | html_logo = "https://control.ros.org/master/_static/logo_ros-controls.png" 6 | -------------------------------------------------------------------------------- /control_msgs/doc/index.rst: -------------------------------------------------------------------------------- 1 | Welcome to the documentation for control_msgs 2 | =============================================== 3 | 4 | control_msgs contains base messages and actions useful for controlling robots. It provides representations for controller setpoints and joint and cartesian trajectories. 5 | 6 | For more information of the ros2_control framework see `control.ros.org `__. 7 | 8 | API documentation 9 | ------------------ 10 | 11 | .. toctree:: 12 | :maxdepth: 2 13 | 14 | Action Definitions 15 | Message Definitions 16 | Service Definitions 17 | 18 | 19 | Indices and Search 20 | ================== 21 | 22 | * :ref:`genindex` 23 | * :ref:`search` 24 | -------------------------------------------------------------------------------- /control_msgs/msg/AdmittanceControllerState.msg: -------------------------------------------------------------------------------- 1 | # Admittance parameters 2 | std_msgs/Float64MultiArray mass # 6-vector of mass terms used in the admittance calculation 3 | std_msgs/Float64MultiArray damping # 6-vector of damping terms used in the admittance calculation 4 | std_msgs/Float64MultiArray stiffness # 6-vector of stiffness terms used in the admittance calculation 5 | 6 | # Frame information 7 | geometry_msgs/Quaternion rot_base_control # quaternion describing the orientation of the control frame 8 | geometry_msgs/TransformStamped ref_trans_base_ft # force torque sensor transform at the reference joint configuration 9 | std_msgs/Int8MultiArray selected_axes # 6-vector of 0/1 describing if admittance is enable in the corresponding control frame axis 10 | std_msgs/String ft_sensor_frame # name of the force torque frame 11 | 12 | # State information 13 | geometry_msgs/TransformStamped admittance_position # calculated admittance position in cartesian space 14 | geometry_msgs/TwistStamped admittance_acceleration # calculated admittance acceleration in cartesian space 15 | geometry_msgs/TwistStamped admittance_velocity # calculated admittance velocity in cartesian space 16 | geometry_msgs/WrenchStamped wrench_base # wrench used in the admittance calculation 17 | sensor_msgs/JointState joint_state # calculated admittance offsets in joint space 18 | -------------------------------------------------------------------------------- /control_msgs/msg/DynamicInterfaceGroupValues.msg: -------------------------------------------------------------------------------- 1 | std_msgs/Header header 2 | 3 | # List of interface group names , e.g. ["flange_analog_IOs", "flange_vacuum"] 4 | string[] interface_groups 5 | # Key-value pairs representing interfaces and their corresponding values for each interface group listed in `interface_groups` 6 | InterfaceValue[] interface_values 7 | -------------------------------------------------------------------------------- /control_msgs/msg/DynamicInterfaceValues.msg: -------------------------------------------------------------------------------- 1 | std_msgs/Header header 2 | 3 | InterfaceValue states 4 | InterfaceValue commands 5 | -------------------------------------------------------------------------------- /control_msgs/msg/DynamicJointState.msg: -------------------------------------------------------------------------------- 1 | std_msgs/Header header 2 | 3 | # List of resource names, e.g. ["arm_joint_1", "arm_joint_2", "gripper_joint"] 4 | string[] joint_names 5 | # Key-value pairs representing interfaces and their corresponding values for each joint listed in `joint_names` 6 | InterfaceValue[] interface_values 7 | -------------------------------------------------------------------------------- /control_msgs/msg/GripperCommand.msg: -------------------------------------------------------------------------------- 1 | float64 position 2 | float64 max_effort 3 | -------------------------------------------------------------------------------- /control_msgs/msg/InterfaceValue.msg: -------------------------------------------------------------------------------- 1 | # List of resource interface names 2 | string[] interface_names 3 | # Values corresponding to the list of interfaces in `interface_names`, [1.0, 0.0] for example 4 | float64[] values 5 | -------------------------------------------------------------------------------- /control_msgs/msg/JointComponentTolerance.msg: -------------------------------------------------------------------------------- 1 | # Version of JointTolerance.msg with added component field for joints with multiple degrees of freedom 2 | # The difference between two MultiDOFJointTrajectoryPoint cannot be represented as a single number, 3 | # hence we use the component field to represent how to calculate the difference in a way that can 4 | # be represented as a single number. 5 | 6 | # Since each joint has multiple degrees of freedom, 7 | # there can be multiple tolerances for each joint, each looking 8 | # at different components. 9 | 10 | # If the component is X_AXIS, Y_AXIS, or Z_AXIS, then the tolerance 11 | # is only applied for the specific axis. 12 | # However, if the component is TRANSLATION, then the tolerance is for 13 | # the overall Euclidean distance. 14 | # For these components, the units are meters, meters/sec and meters/sec^2. 15 | # Z_AXIS is only valid with a floating joint, not planar. 16 | 17 | # If the component is ROTATION the tolerance is measured in 18 | # radians, radians/sec and radians/sec^2, computed 19 | # between the difference in quaternions. 20 | 21 | uint16 X_AXIS=1 22 | uint16 Y_AXIS=2 23 | uint16 Z_AXIS=3 24 | uint16 TRANSLATION=4 25 | uint16 ROTATION=5 26 | 27 | string joint_name 28 | uint16 component 29 | float64 position 30 | float64 velocity 31 | float64 acceleration 32 | -------------------------------------------------------------------------------- /control_msgs/msg/JointControllerState.msg: -------------------------------------------------------------------------------- 1 | # This message presents current controller state of one joint. 2 | 3 | # It is deprecated as of Humble in favor of SingleDOFStateStamped.msg 4 | 5 | # Header timestamp should be update time of controller state 6 | std_msgs/Header header 7 | 8 | # The set point, that is, desired state. 9 | float64 set_point 10 | 11 | # Current value of the process (ie: latest sensor measurement on the controlled value). 12 | float64 process_value 13 | 14 | # First time-derivative of the process value. 15 | float64 process_value_dot 16 | 17 | # The error of the controlled value, essentially process_value - set_point (for a regular PID implementation). 18 | float64 error 19 | 20 | # Time between two consecutive updates/execution of the control law. 21 | float64 time_step 22 | 23 | # Current output of the controller. 24 | float64 command 25 | 26 | # Current PID parameters of the controller. 27 | float64 p 28 | float64 i 29 | float64 d 30 | float64 i_clamp 31 | bool antiwindup 32 | -------------------------------------------------------------------------------- /control_msgs/msg/JointJog.msg: -------------------------------------------------------------------------------- 1 | # Used in time-stamping the message. 2 | std_msgs/Header header 3 | 4 | # Name list of the joints. You don't need to specify all joints of the 5 | # robot. Joint names are case-sensitive. 6 | string[] joint_names 7 | 8 | # A position command to the joints listed in joint_names. 9 | # The order must be identical. 10 | # Units are meters or radians. 11 | # If displacements and velocities are filled, a profiled motion is requested. 12 | float64[] displacements # or position_deltas 13 | 14 | # A velocity command to the joints listed in joint_names. 15 | # The order must be identical. 16 | # Units are m/s or rad/s. 17 | # If displacements and velocities are filled, a profiled motion is requested. 18 | float64[] velocities 19 | 20 | float64 duration 21 | -------------------------------------------------------------------------------- /control_msgs/msg/JointTolerance.msg: -------------------------------------------------------------------------------- 1 | # The tolerances specify the amount the position, velocity, and 2 | # accelerations can vary from the setpoints. For example, in the case 3 | # of trajectory control, when the actual position varies beyond 4 | # (desired position + position tolerance), the trajectory goal may 5 | # abort. 6 | # 7 | # There are two special values for tolerances: 8 | # * 0 - The tolerance is unspecified and will remain at whatever the default is 9 | # * -1 - The tolerance is "erased". If there was a default, the joint will be 10 | # allowed to move without restriction. 11 | 12 | string name 13 | float64 position # in radians or meters (for a revolute or prismatic joint, respectively) 14 | float64 velocity # in rad/sec or m/sec 15 | float64 acceleration # in rad/sec^2 or m/sec^2 16 | -------------------------------------------------------------------------------- /control_msgs/msg/JointTrajectoryControllerState.msg: -------------------------------------------------------------------------------- 1 | # This message presents current controller state of JTC 2 | 3 | # Header timestamp should be update time of controller state 4 | std_msgs/Header header 5 | 6 | string[] joint_names 7 | # The set point, that is, desired state. 8 | trajectory_msgs/JointTrajectoryPoint reference 9 | # Current value of the process (ie: latest sensor measurement on the controlled value). 10 | trajectory_msgs/JointTrajectoryPoint feedback 11 | # The error of the controlled value, essentially reference - feedback (for a regular PID implementation). 12 | trajectory_msgs/JointTrajectoryPoint error 13 | # Current output of the controller. 14 | trajectory_msgs/JointTrajectoryPoint output 15 | 16 | string[] multi_dof_joint_names 17 | # The set point, that is, desired state. 18 | trajectory_msgs/MultiDOFJointTrajectoryPoint multi_dof_reference 19 | # Current value of the process (ie: latest sensor measurement on the controlled value). 20 | trajectory_msgs/MultiDOFJointTrajectoryPoint multi_dof_feedback 21 | # The error of the controlled value, essentially reference - feedback (for a regular PID implementation). 22 | trajectory_msgs/MultiDOFJointTrajectoryPoint multi_dof_error 23 | # Current output of the controller. 24 | trajectory_msgs/MultiDOFJointTrajectoryPoint multi_dof_output 25 | # The speed scaling factor the trajectory is currently being executed with 26 | float64 speed_scaling_factor 27 | -------------------------------------------------------------------------------- /control_msgs/msg/MecanumDriveControllerState.msg: -------------------------------------------------------------------------------- 1 | std_msgs/Header header 2 | float64 front_left_wheel_velocity 3 | float64 back_left_wheel_velocity 4 | float64 back_right_wheel_velocity 5 | float64 front_right_wheel_velocity 6 | geometry_msgs/Twist reference_velocity 7 | -------------------------------------------------------------------------------- /control_msgs/msg/MultiDOFCommand.msg: -------------------------------------------------------------------------------- 1 | # The message defines command for multiple degrees of freedom (DoF) typically used by many controllers. 2 | # The message intentionally avoids 'joint' nomenclature because it can be generally use for command with 3 | # different semantic meanings, e.g., joints, Cartesian axes, or have abstract meaning like GPIO interface. 4 | 5 | # names of degrees of freedom 6 | string[] dof_names 7 | 8 | # values used by most of the controller 9 | float64[] values 10 | 11 | # First derivation of the values, e.g., velocity if values are positions. 12 | # This is useful for PID and similar controllers. 13 | float64[] values_dot 14 | -------------------------------------------------------------------------------- /control_msgs/msg/MultiDOFStateStamped.msg: -------------------------------------------------------------------------------- 1 | # This message presents current controller state of multiple degrees of freedom. 2 | 3 | # Header timestamp should be update time of controller state 4 | std_msgs/Header header 5 | 6 | SingleDOFState[] dof_states 7 | -------------------------------------------------------------------------------- /control_msgs/msg/PidState.msg: -------------------------------------------------------------------------------- 1 | std_msgs/Header header 2 | builtin_interfaces/Duration timestep 3 | 4 | # error = target - state 5 | float64 error 6 | # derivative of error 7 | float64 error_dot 8 | 9 | # weighted integral of error 10 | float64 i_term 11 | 12 | # proportional gain 13 | float64 p_gain 14 | # integral gain 15 | float64 i_gain 16 | # derivative gain 17 | float64 d_gain 18 | 19 | # output of the PID controller 20 | float64 output 21 | -------------------------------------------------------------------------------- /control_msgs/msg/SingleDOFState.msg: -------------------------------------------------------------------------------- 1 | # This message presents current controller state of one degree of freedom. 2 | 3 | # DoF name, e.g., joint or Cartesian axis name 4 | string name 5 | 6 | # The set point, that is, desired state. 7 | float64 reference 8 | 9 | # Current value of the process (ie: latest sensor measurement on the controlled value). 10 | float64 feedback 11 | 12 | # First time-derivative of the process value. E.g., velocity. 13 | float64 feedback_dot 14 | 15 | # The error of the controlled value, essentially reference - feedback (for a regular PID implementation). 16 | float64 error 17 | 18 | # First time-derivative of the error of the controlled value. 19 | float64 error_dot 20 | 21 | # Time between two consecutive updates/execution of the control law. 22 | float64 time_step 23 | 24 | # Current output of the controller. 25 | float64 output 26 | -------------------------------------------------------------------------------- /control_msgs/msg/SingleDOFStateStamped.msg: -------------------------------------------------------------------------------- 1 | # This message presents current controller state of one degree of freedom. 2 | 3 | # Header timestamp should be update time of controller state 4 | std_msgs/Header header 5 | 6 | SingleDOFState dof_state 7 | -------------------------------------------------------------------------------- /control_msgs/msg/SpeedScalingFactor.msg: -------------------------------------------------------------------------------- 1 | # This message contains a scaling factor to scale trajectory execution. A factor of 1.0 means 2 | # execution at normal speed, a factor of 0.0 means a full pause. 3 | # Negative values are not allowed (Which should be checked by any instance consuming this message). 4 | 5 | float64 factor 6 | -------------------------------------------------------------------------------- /control_msgs/msg/SteeringControllerStatus.msg: -------------------------------------------------------------------------------- 1 | std_msgs/Header header 2 | float64[] traction_wheels_position # positions of traction wheels if the robot is controlled by position 3 | float64[] traction_wheels_velocity # velocities of traction wheels if the robot is controlled by velocity 4 | float64[] steer_positions # positions of steering joints 5 | float64[] traction_command # values commanded to traction joints 6 | float64[] steering_angle_command # values commanded to steering joints 7 | -------------------------------------------------------------------------------- /control_msgs/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | control_msgs 5 | 6.2.0 6 | 7 | control_msgs contains base messages and actions useful for 8 | controlling robots. It provides representations for controller 9 | setpoints and joint and cartesian trajectories. 10 | 11 | Bence Magyar 12 | 13 | BSD-3-Clause 14 | 15 | https://control.ros.org 16 | Stuart Glaser 17 | 18 | ament_cmake 19 | rosidl_default_generators 20 | 21 | 22 | 23 | 24 | action_msgs 25 | builtin_interfaces 26 | geometry_msgs 27 | sensor_msgs 28 | std_msgs 29 | trajectory_msgs 30 | 31 | rosidl_default_runtime 32 | 33 | ament_lint_auto 34 | ament_lint_common 35 | 36 | rosidl_interface_packages 37 | 38 | ament_cmake 39 | 40 | 41 | -------------------------------------------------------------------------------- /control_msgs/srv/QueryCalibrationState.srv: -------------------------------------------------------------------------------- 1 | --- 2 | bool is_calibrated 3 | -------------------------------------------------------------------------------- /control_msgs/srv/QueryTrajectoryState.srv: -------------------------------------------------------------------------------- 1 | builtin_interfaces/Time time 2 | --- 3 | bool success # indicate successful run of triggered service 4 | string message # informational, e.g. for error messages 5 | 6 | string[] name 7 | float64[] position 8 | float64[] velocity 9 | float64[] acceleration 10 | -------------------------------------------------------------------------------- /ros_controls.humble.repos: -------------------------------------------------------------------------------- 1 | repositories: 2 | ros-controls/control_toolbox: 3 | type: git 4 | url: https://github.com/ros-controls/control_toolbox.git 5 | version: humble 6 | ros-controls/kinematics_interface: 7 | type: git 8 | url: https://github.com/ros-controls/kinematics_interface.git 9 | version: humble 10 | ros-controls/realtime_tools: 11 | type: git 12 | url: https://github.com/ros-controls/realtime_tools.git 13 | version: humble 14 | ros-controls/ros2_control: 15 | type: git 16 | url: https://github.com/ros-controls/ros2_control.git 17 | version: humble 18 | ros-controls/ros2_controllers: 19 | type: git 20 | url: https://github.com/ros-controls/ros2_controllers.git 21 | version: humble 22 | -------------------------------------------------------------------------------- /ros_controls.jazzy.repos: -------------------------------------------------------------------------------- 1 | repositories: 2 | ros-controls/control_toolbox: 3 | type: git 4 | url: https://github.com/ros-controls/control_toolbox.git 5 | version: jazzy 6 | ros-controls/kinematics_interface: 7 | type: git 8 | url: https://github.com/ros-controls/kinematics_interface.git 9 | version: jazzy 10 | ros-controls/realtime_tools: 11 | type: git 12 | url: https://github.com/ros-controls/realtime_tools.git 13 | version: jazzy 14 | ros-controls/ros2_control: 15 | type: git 16 | url: https://github.com/ros-controls/ros2_control.git 17 | version: jazzy 18 | ros-controls/ros2_controllers: 19 | type: git 20 | url: https://github.com/ros-controls/ros2_controllers.git 21 | version: jazzy 22 | -------------------------------------------------------------------------------- /ros_controls.kilted.repos: -------------------------------------------------------------------------------- 1 | repositories: 2 | ros-controls/control_toolbox: 3 | type: git 4 | url: https://github.com/ros-controls/control_toolbox.git 5 | version: ros2-master 6 | ros-controls/kinematics_interface: 7 | type: git 8 | url: https://github.com/ros-controls/kinematics_interface.git 9 | version: master 10 | ros-controls/realtime_tools: 11 | type: git 12 | url: https://github.com/ros-controls/realtime_tools.git 13 | version: master 14 | ros-controls/ros2_control: 15 | type: git 16 | url: https://github.com/ros-controls/ros2_control.git 17 | version: master 18 | ros-controls/ros2_controllers: 19 | type: git 20 | url: https://github.com/ros-controls/ros2_controllers.git 21 | version: master 22 | -------------------------------------------------------------------------------- /ros_controls.rolling.repos: -------------------------------------------------------------------------------- 1 | repositories: 2 | ros-controls/control_toolbox: 3 | type: git 4 | url: https://github.com/ros-controls/control_toolbox.git 5 | version: ros2-master 6 | ros-controls/kinematics_interface: 7 | type: git 8 | url: https://github.com/ros-controls/kinematics_interface.git 9 | version: master 10 | ros-controls/realtime_tools: 11 | type: git 12 | url: https://github.com/ros-controls/realtime_tools.git 13 | version: master 14 | ros-controls/ros2_control: 15 | type: git 16 | url: https://github.com/ros-controls/ros2_control.git 17 | version: master 18 | ros-controls/ros2_controllers: 19 | type: git 20 | url: https://github.com/ros-controls/ros2_controllers.git 21 | version: master 22 | --------------------------------------------------------------------------------