diff --git a/.clang-format b/.clang-format
new file mode 100644
index 0000000000..9c21e1e17c
--- /dev/null
+++ b/.clang-format
@@ -0,0 +1,15 @@
+---
+Language: Cpp
+BasedOnStyle: Google
+
+ColumnLimit: 100
+AccessModifierOffset: -2
+AlignAfterOpenBracket: AlwaysBreak
+BreakBeforeBraces: Allman
+ConstructorInitializerIndentWidth: 0
+ContinuationIndentWidth: 2
+DerivePointerAlignment: false
+PointerAlignment: Middle
+ReflowComments: false
+IncludeBlocks: Preserve
+...
diff --git a/.github/workflows/ci-build-binary.yml b/.github/workflows/ci-build-binary.yml
new file mode 100644
index 0000000000..12d9fe7847
--- /dev/null
+++ b/.github/workflows/ci-build-binary.yml
@@ -0,0 +1,23 @@
+name: Binary Build
+on:
+ pull_request:
+ push:
+ branches:
+ - master
+ schedule:
+ # Run every day to detect flakiness and broken dependencies
+ - cron: '07 6 * * *'
+
+jobs:
+ binary:
+ name: Foxy binary build
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ env:
+ - {ROS_DISTRO: foxy, ROS_REPO: main}
+ - {ROS_DISTRO: foxy, ROS_REPO: testing}
+ steps:
+ - uses: actions/checkout@v1
+ - uses: 'ros-industrial/industrial_ci@master'
+ env: ${{matrix.env}}
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci-build-coverage.yml
similarity index 56%
rename from .github/workflows/ci.yml
rename to .github/workflows/ci-build-coverage.yml
index f21c4535eb..fc41c238d7 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci-build-coverage.yml
@@ -1,55 +1,47 @@
-name: Test ros2_controllers
+name: Coverage Build
on:
pull_request:
push:
branches:
- master
schedule:
- # Run every morning to detect flakiness and broken dependencies
- - cron: '17 8 * * *'
+ # Run every day to detect flakiness and broken dependencies
+ - cron: '07 7 * * *'
jobs:
- ci_binary:
- name: Foxy binary job
- runs-on: ubuntu-latest
- strategy:
- matrix:
- env:
- - {ROS_DISTRO: foxy, ROS_REPO: main}
- - {ROS_DISTRO: foxy, ROS_REPO: testing}
- env:
- UPSTREAM_WORKSPACE: .github/workspace.repos
- steps:
- - uses: actions/checkout@v1
- - uses: ros-industrial/industrial_ci@master
- env: ${{matrix.env}}
-
- ci_source:
- name: Foxy source job
+ coverage:
+ name: coverage build
runs-on: ubuntu-20.04
strategy:
fail-fast: false
steps:
- - uses: ros-tooling/setup-ros@v0.1
+ - uses: ros-tooling/setup-ros@0.0.26
with:
required-ros-distributions: foxy
- - uses: ros-tooling/action-ros-ci@v0.1
+ - uses: ros-tooling/action-ros-ci@v0.2
with:
target-ros2-distro: foxy
# build all packages listed in the meta package
- package-name: |
+ package-name:
+ diff_drive_controller
effort_controllers
forward_command_controller
joint_state_broadcaster
joint_state_controller
joint_trajectory_controller
position_controllers
+ ros2_controllers
velocity_controllers
vcs-repo-file-url: |
- https://raw.githubusercontent.com/${{ github.repository }}/${{ github.sha }}/.github/workspace.repos
- colcon-mixin-name: coverage-gcc
+ https://raw.githubusercontent.com/${{ github.repository }}/${{ github.sha }}/ros2_controllers/ros2_controllers.repos
+ colcon-defaults: |
+ {
+ "build": {
+ "mixin": ["coverage-gcc"]
+ }
+ }
colcon-mixin-repository: https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml
- - uses: codecov/codecov-action@v1
+ - uses: codecov/codecov-action@v1.0.14
with:
file: ros_ws/lcov/total_coverage.info
flags: unittests
diff --git a/.github/workflows/ci-build-source.yml b/.github/workflows/ci-build-source.yml
new file mode 100644
index 0000000000..0c549075b5
--- /dev/null
+++ b/.github/workflows/ci-build-source.yml
@@ -0,0 +1,39 @@
+name: Source Build
+on:
+ push:
+ branches:
+ - master
+ schedule:
+ # Run every day to detect flakiness and broken dependencies
+ - cron: '27 7 * * *'
+
+jobs:
+ source:
+ name: source build
+ runs-on: ubuntu-20.04
+ strategy:
+ fail-fast: false
+ steps:
+ - uses: ros-tooling/setup-ros@0.0.26
+ - uses: ros-tooling/action-ros-ci@v0.2
+ with:
+ target-ros2-distro: foxy
+ # build all packages listed in the meta package
+ package-name:
+ diff_drive_controller
+ effort_controllers
+ forward_command_controller
+ joint_state_broadcaster
+ joint_state_controller
+ joint_trajectory_controller
+ position_controllers
+ ros2_controllers
+ velocity_controllers
+ vcs-repo-file-url: |
+ https://raw.githubusercontent.com/ros2/ros2/foxy/ros2.repos
+ https://raw.githubusercontent.com/${{ github.repository }}/${{ github.sha }}/ros2_controllers/ros2_controllers.repos
+ colcon-mixin-repository: https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml
+ - uses: actions/upload-artifact@v1
+ with:
+ name: colcon-logs-${{ matrix.os }}
+ path: ros_ws/log
diff --git a/.github/workflows/ci-format.yml b/.github/workflows/ci-format.yml
new file mode 100644
index 0000000000..74158cbd33
--- /dev/null
+++ b/.github/workflows/ci-format.yml
@@ -0,0 +1,24 @@
+# This is a format job. Pre-commit has a first-party GitHub action, so we use
+# that: https://github.com/pre-commit/action
+
+name: Format
+
+on:
+ workflow_dispatch:
+ pull_request:
+ push:
+ branches:
+ - master
+
+jobs:
+ pre-commit:
+ name: Format
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ - name: Install clang-format-10
+ run: sudo apt-get install clang-format-10 cppcheck
+ - uses: pre-commit/action@v2.0.2
+ with:
+ extra_args: --all-files --hook-stage manual
diff --git a/.github/workflows/ci-ros-lint.yaml b/.github/workflows/ci-ros-lint.yaml
new file mode 100644
index 0000000000..6e9974645f
--- /dev/null
+++ b/.github/workflows/ci-ros-lint.yaml
@@ -0,0 +1,55 @@
+name: ROS Lint
+on:
+ pull_request:
+
+jobs:
+ ament_lint:
+ name: ament_${{ matrix.linter }}
+ runs-on: ubuntu-20.04
+ strategy:
+ fail-fast: false
+ matrix:
+ linter: [copyright, cppcheck, lint_cmake]
+ steps:
+ - uses: actions/checkout@v1
+ - uses: ros-tooling/setup-ros@v0.1
+ - uses: ros-tooling/action-ros-lint@v0.1
+ with:
+ distribution: foxy
+ linter: ${{ matrix.linter }}
+ package-name:
+ diff_drive_controller
+ effort_controllers
+ forward_command_controller
+ joint_state_broadcaster
+ joint_state_controller
+ joint_trajectory_controller
+ position_controllers
+ ros2_controllers
+ velocity_controllers
+
+ ament_lint_cpplint:
+ name: ament_${{ matrix.linter }}
+ runs-on: ubuntu-20.04
+ strategy:
+ fail-fast: false
+ matrix:
+ linter: [cpplint]
+ steps:
+ - uses: actions/checkout@v1
+ - uses: ros-tooling/setup-ros@v0.1
+ - uses: ros-tooling/action-ros-lint@v0.1
+ with:
+ distribution: foxy
+ linter: cpplint
+ arguments: "--filter=-whitespace/newline"
+ package-name:
+ diff_drive_controller
+ effort_controllers
+ forward_command_controller
+ joint_state_broadcaster
+ joint_state_controller
+ joint_trajectory_controller
+ position_controllers
+ ros2_controllers
+ velocity_controllers
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
deleted file mode 100644
index 19fd5f2801..0000000000
--- a/.github/workflows/lint.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-# Run linters automatically on pull requests.
-name: Lint ros2_controllers
-on:
- pull_request:
-
-jobs:
- ament_lint:
- name: ament_${{ matrix.linter }}
- runs-on: ubuntu-20.04
- strategy:
- fail-fast: false
- matrix:
- linter: [copyright, cppcheck, cpplint, flake8, pep257, uncrustify, xmllint]
- steps:
- - uses: actions/checkout@v1
- - uses: ros-tooling/setup-ros@v0.1
- - uses: ros-tooling/action-ros-lint@v0.1
- with:
- distribution: foxy
- linter: ${{ matrix.linter }}
- package-name:
- diff_drive_controller
- effort_controllers
- forward_command_controller
- joint_state_broadcaster
- joint_state_controller
- joint_trajectory_controller
- position_controllers
- ros2_controllers
- velocity_controllers
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000000..377b87d6d4
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,143 @@
+# To use:
+#
+# pre-commit run -a
+#
+# Or:
+#
+# pre-commit install # (runs every time you commit in git)
+#
+# To update this file:
+#
+# pre-commit autoupdate
+#
+# See https://github.com/pre-commit/pre-commit
+
+repos:
+ # Standard hooks
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: v3.4.0
+ hooks:
+ - id: check-added-large-files
+ - id: check-ast
+ - id: check-case-conflict
+ - id: check-docstring-first
+ - id: check-merge-conflict
+ - id: check-symlinks
+ - id: check-xml
+ - id: check-yaml
+ - id: debug-statements
+ - id: end-of-file-fixer
+ - id: mixed-line-ending
+ - id: trailing-whitespace
+ - id: fix-byte-order-marker
+
+ # Python hooks
+ - repo: https://github.com/asottile/pyupgrade
+ rev: v2.12.0
+ hooks:
+ - id: pyupgrade
+ args: [--py36-plus]
+
+ - repo: https://github.com/psf/black
+ rev: 20.8b1
+ hooks:
+ - id: black
+ args: ["--line-length=100"]
+
+ # PEP 257
+ - repo: https://github.com/FalconSocial/pre-commit-mirrors-pep257
+ rev: v0.3.3
+ hooks:
+ - id: pep257
+ args: ["--ignore=D100,D101,D102,D103,D104,D105,D106,D107,D203,D212,D404"]
+
+ - repo: https://github.com/pycqa/flake8
+ rev: 3.9.0
+ hooks:
+ - id: flake8
+ args: ["--ignore=E501"]
+
+ # CPP hooks
+ - repo: local
+ hooks:
+ - id: clang-format
+ name: clang-format
+ description: Format files with ClangFormat.
+ entry: clang-format-10
+ language: system
+ files: \.(c|cc|cxx|cpp|frag|glsl|h|hpp|hxx|ih|ispc|ipp|java|js|m|proto|vert)$
+ args: ['-fallback-style=none', '-i']
+ # The same options as in ament_cppcheck are used, but its not working...
+ #- repo: https://github.com/pocc/pre-commit-hooks
+ #rev: v1.1.1
+ #hooks:
+ #- id: cppcheck
+ #args: ['--error-exitcode=1', '-f', '--inline-suppr', '-q', '-rp', '--suppress=internalAstError', '--suppress=unknownMacro', '--verbose']
+
+ - repo: local
+ hooks:
+ - id: ament_cppcheck
+ name: ament_cppcheck
+ description: Static code analysis of C/C++ files.
+ stages: [commit]
+ entry: ament_cppcheck
+ language: system
+ files: \.(h\+\+|h|hh|hxx|hpp|cuh|c|cc|cpp|cu|c\+\+|cxx|tpp|txx)$
+
+ # Maybe use https://github.com/cpplint/cpplint instead
+ - repo: local
+ hooks:
+ - id: ament_cpplint
+ name: ament_cpplint
+ description: Static code analysis of C/C++ files.
+ stages: [commit]
+ entry: ament_cpplint
+ language: system
+ files: \.(h\+\+|h|hh|hxx|hpp|cuh|c|cc|cpp|cu|c\+\+|cxx|tpp|txx)$
+ args: ["--linelength=100", "--filter=-whitespace/newline"]
+
+ # Cmake hooks
+ - repo: local
+ hooks:
+ - id: ament_lint_cmake
+ name: ament_lint_cmake
+ description: Check format of CMakeLists.txt files.
+ stages: [commit]
+ entry: ament_lint_cmake
+ language: system
+ files: CMakeLists\.txt$
+
+ # Copyright
+ - repo: local
+ hooks:
+ - id: ament_copyright
+ name: ament_copyright
+ description: Check if copyright notice is available in all files.
+ stages: [commit]
+ entry: ament_copyright
+ language: system
+
+ # Docs - RestructuredText hooks
+ - repo: https://github.com/PyCQA/doc8
+ rev: 0.9.0a1
+ hooks:
+ - id: doc8
+ args: ['--max-line-length=100', '--ignore=D001']
+ exclude: CHANGELOG\.rst$
+
+ - repo: https://github.com/pre-commit/pygrep-hooks
+ rev: v1.8.0
+ hooks:
+ - id: rst-backticks
+ exclude: CHANGELOG\.rst$
+ - id: rst-directive-colons
+ - id: rst-inline-touching-normal
+
+ # Spellcheck in comments and docs
+ # skipping of *.svg files is not working...
+ - repo: https://github.com/codespell-project/codespell
+ rev: v2.0.0
+ hooks:
+ - id: codespell
+ args: ['--write-changes']
+ exclude: \.(svg|pyc)$
diff --git a/diff_drive_controller/CMakeLists.txt b/diff_drive_controller/CMakeLists.txt
index c1e1807a86..d359d90968 100644
--- a/diff_drive_controller/CMakeLists.txt
+++ b/diff_drive_controller/CMakeLists.txt
@@ -61,11 +61,8 @@ install(TARGETS diff_drive_controller
if(BUILD_TESTING)
find_package(ament_cmake_gmock REQUIRED)
- find_package(ament_lint_auto REQUIRED)
find_package(controller_manager REQUIRED)
- ament_lint_auto_find_test_dependencies()
-
ament_add_gmock(test_diff_drive_controller
test/test_diff_drive_controller.cpp
ENV config_file=${CMAKE_CURRENT_SOURCE_DIR}/test/config/test_diff_drive_controller.yaml)
diff --git a/diff_drive_controller/package.xml b/diff_drive_controller/package.xml
index b58b1019e5..5f34f647f4 100644
--- a/diff_drive_controller/package.xml
+++ b/diff_drive_controller/package.xml
@@ -23,8 +23,6 @@
pluginlib
ament_cmake_gmock
- ament_lint_auto
- ament_lint_common
controller_manager
diff --git a/effort_controllers/CMakeLists.txt b/effort_controllers/CMakeLists.txt
index ac95d8567c..d290801917 100644
--- a/effort_controllers/CMakeLists.txt
+++ b/effort_controllers/CMakeLists.txt
@@ -48,12 +48,9 @@ install(
if(BUILD_TESTING)
find_package(ament_cmake_gmock REQUIRED)
- find_package(ament_lint_auto REQUIRED)
find_package(controller_manager REQUIRED)
find_package(ros2_control_test_assets REQUIRED)
- ament_lint_auto_find_test_dependencies()
-
ament_add_gmock(
test_load_joint_group_effort_controller
test/test_load_joint_group_effort_controller.cpp
diff --git a/effort_controllers/package.xml b/effort_controllers/package.xml
index fd41a5a5d1..4147885018 100644
--- a/effort_controllers/package.xml
+++ b/effort_controllers/package.xml
@@ -16,8 +16,6 @@
pluginlib
ament_cmake_gtest
- ament_lint_auto
- ament_lint_common
controller_manager
ros2_control_test_assets
diff --git a/forward_command_controller/CMakeLists.txt b/forward_command_controller/CMakeLists.txt
index 7021d4294b..4f08cfd2f8 100644
--- a/forward_command_controller/CMakeLists.txt
+++ b/forward_command_controller/CMakeLists.txt
@@ -57,13 +57,10 @@ install(
if(BUILD_TESTING)
find_package(ament_cmake_gmock REQUIRED)
- find_package(ament_lint_auto REQUIRED)
find_package(controller_manager REQUIRED)
find_package(hardware_interface REQUIRED)
find_package(ros2_control_test_assets REQUIRED)
- ament_lint_auto_find_test_dependencies()
-
ament_add_gmock(
test_load_forward_command_controller
test/test_load_forward_command_controller.cpp
diff --git a/forward_command_controller/package.xml b/forward_command_controller/package.xml
index 7b89ef5ee6..bae6ec8372 100644
--- a/forward_command_controller/package.xml
+++ b/forward_command_controller/package.xml
@@ -20,8 +20,6 @@
pluginlib
ament_cmake_gmock
- ament_lint_auto
- ament_lint_common
controller_manager
ros2_control_test_assets
diff --git a/joint_state_broadcaster/CMakeLists.txt b/joint_state_broadcaster/CMakeLists.txt
index 56bc8c0660..a656f4a334 100644
--- a/joint_state_broadcaster/CMakeLists.txt
+++ b/joint_state_broadcaster/CMakeLists.txt
@@ -54,14 +54,11 @@ install(
if(BUILD_TESTING)
find_package(ament_cmake_gmock REQUIRED)
- find_package(ament_lint_auto REQUIRED)
find_package(controller_manager REQUIRED)
find_package(hardware_interface REQUIRED)
find_package(rclcpp REQUIRED)
find_package(ros2_control_test_assets REQUIRED)
- ament_lint_auto_find_test_dependencies()
-
ament_add_gmock(
test_load_joint_state_broadcaster
test/test_load_joint_state_broadcaster.cpp
diff --git a/joint_state_broadcaster/package.xml b/joint_state_broadcaster/package.xml
index 0ac0f9142d..efd37c41de 100644
--- a/joint_state_broadcaster/package.xml
+++ b/joint_state_broadcaster/package.xml
@@ -25,8 +25,6 @@
sensor_msgs
ament_cmake_gmock
- ament_lint_auto
- ament_lint_common
controller_manager
rclcpp
ros2_control_test_assets
diff --git a/joint_state_controller/CMakeLists.txt b/joint_state_controller/CMakeLists.txt
index 592c9ccdfd..d41486b6ca 100644
--- a/joint_state_controller/CMakeLists.txt
+++ b/joint_state_controller/CMakeLists.txt
@@ -29,13 +29,11 @@ install(
if(BUILD_TESTING)
find_package(ament_cmake_gmock REQUIRED)
- find_package(ament_lint_auto REQUIRED)
find_package(controller_manager REQUIRED)
find_package(hardware_interface REQUIRED)
find_package(rclcpp REQUIRED)
find_package(ros2_control_test_assets REQUIRED)
- ament_lint_auto_find_test_dependencies()
ament_add_gmock(
test_load_joint_state_controller
diff --git a/joint_state_controller/package.xml b/joint_state_controller/package.xml
index bfbe7bac4b..2044db055a 100644
--- a/joint_state_controller/package.xml
+++ b/joint_state_controller/package.xml
@@ -16,8 +16,6 @@
pluginlib
ament_cmake_gmock
- ament_lint_auto
- ament_lint_common
controller_manager
hardware_interface
rclcpp
diff --git a/joint_trajectory_controller/CMakeLists.txt b/joint_trajectory_controller/CMakeLists.txt
index 94375dfb6f..24eb9edc52 100644
--- a/joint_trajectory_controller/CMakeLists.txt
+++ b/joint_trajectory_controller/CMakeLists.txt
@@ -59,12 +59,9 @@ install(TARGETS joint_trajectory_controller
if(BUILD_TESTING)
find_package(ament_cmake_gtest REQUIRED)
- find_package(ament_lint_auto REQUIRED)
find_package(controller_manager REQUIRED)
find_package(ros2_control_test_assets REQUIRED)
- ament_lint_auto_find_test_dependencies()
-
ament_add_gtest(test_trajectory test/test_trajectory.cpp)
target_include_directories(test_trajectory PRIVATE include)
target_link_libraries(test_trajectory joint_trajectory_controller)
diff --git a/joint_trajectory_controller/package.xml b/joint_trajectory_controller/package.xml
index 0db7ad9ba4..d2951a9919 100644
--- a/joint_trajectory_controller/package.xml
+++ b/joint_trajectory_controller/package.xml
@@ -29,8 +29,6 @@
trajectory_msgs
ament_cmake_gtest
- ament_lint_auto
- ament_lint_common
controller_manager
ros2_control_test_assets
diff --git a/position_controllers/CMakeLists.txt b/position_controllers/CMakeLists.txt
index 44ea025765..98beea35e4 100644
--- a/position_controllers/CMakeLists.txt
+++ b/position_controllers/CMakeLists.txt
@@ -48,12 +48,9 @@ install(
if(BUILD_TESTING)
find_package(ament_cmake_gmock REQUIRED)
- find_package(ament_lint_auto REQUIRED)
find_package(controller_manager REQUIRED)
find_package(ros2_control_test_assets REQUIRED)
- ament_lint_auto_find_test_dependencies()
-
ament_add_gmock(
test_load_joint_group_position_controller
test/test_load_joint_group_position_controller.cpp
diff --git a/position_controllers/package.xml b/position_controllers/package.xml
index 7dfd73937d..1696dcf214 100644
--- a/position_controllers/package.xml
+++ b/position_controllers/package.xml
@@ -16,8 +16,6 @@
pluginlib
ament_cmake_gmock
- ament_lint_auto
- ament_lint_common
controller_manager
hardware_interface
ros2_control_test_assets
diff --git a/.github/workspace.repos b/ros2_controllers/ros2_controllers.repos
similarity index 100%
rename from .github/workspace.repos
rename to ros2_controllers/ros2_controllers.repos
diff --git a/velocity_controllers/CMakeLists.txt b/velocity_controllers/CMakeLists.txt
index e8e6c536d0..6107486f91 100644
--- a/velocity_controllers/CMakeLists.txt
+++ b/velocity_controllers/CMakeLists.txt
@@ -47,12 +47,9 @@ install(
if(BUILD_TESTING)
find_package(ament_cmake_gmock REQUIRED)
- find_package(ament_lint_auto REQUIRED)
find_package(controller_manager REQUIRED)
find_package(ros2_control_test_assets REQUIRED)
- ament_lint_auto_find_test_dependencies()
-
ament_add_gmock(
test_load_joint_group_velocity_controller
test/test_load_joint_group_velocity_controller.cpp
diff --git a/velocity_controllers/package.xml b/velocity_controllers/package.xml
index 21c1512046..2b74ccc42f 100644
--- a/velocity_controllers/package.xml
+++ b/velocity_controllers/package.xml
@@ -16,8 +16,6 @@
pluginlib
ament_cmake_gmock
- ament_lint_auto
- ament_lint_common
controller_manager
hardware_interface
ros2_control_test_assets