Skip to content

Commit

Permalink
add codespell and precommit to CI (#120)
Browse files Browse the repository at this point in the history
* add codespell and precommit to CI

* update config

* add clang format config

* pre-commit format

* remove linters from test

* remove linter tests

* add init.py

* cleanup

* bug template

* bug template

* fix

* add launch tests

* replace pthread

* format

* fix test

* fix lib installs

* format

---------

Co-authored-by: Svastits <49677296+Svastits@users.noreply.github.com>
Co-authored-by: Aron Svastits <svastits1@gmail.com>
  • Loading branch information
3 people authored Jan 5, 2024
1 parent 133601c commit f3ed324
Show file tree
Hide file tree
Showing 127 changed files with 2,467 additions and 2,187 deletions.
16 changes: 16 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
Language: Cpp
BasedOnStyle: Google

ColumnLimit: 100
AccessModifierOffset: -2
AlignAfterOpenBracket: AlwaysBreak
BreakBeforeBraces: Allman
ConstructorInitializerIndentWidth: 0
ContinuationIndentWidth: 2
DerivePointerAlignment: false
PointerAlignment: Middle
ReflowComments: true
IncludeBlocks: Preserve
InsertBraces: true
...
80 changes: 80 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: "Bug Report"
description: Create a new ticket for a bug.
title: "[BUG] - <title>"
labels: [
"bug"
]
body:
- type: textarea
id: description
attributes:
label: "Description"
description: Please enter an explicit description of your issue
placeholder: Describe your issue in a few sentences
validations:
required: true
- type: dropdown
id: robot-os
attributes:
label: "KUKA robot OS"
description: Version of the KUKA OS are you using
multiple: true
options:
- KSS
- Sunrise
- iiQKA
- type: input
id: os-version
attributes:
label: "KUKA robot OS version"
description: Version of the KUKA robot OS
placeholder: eg. KSS 8.6
validations:
required: true
- type: input
id: if-version
attributes:
label: "KUKA external interface version"
description: Version of the KUKA external interface
placeholder: eg. RSI 4.1.3
validations:
required: true
- type: input
id: robot-model
attributes:
label: "Affected robot model(s)"
description: Robot model the issue came up with
placeholder: eg. KR10 R1100-2
validations:
required: true
- type: input
id: driver-version
attributes:
label: "Version or commit hash of the driver"
description: If the issue came up with an older version (not master), provide the release version or commit hash
validations:
required: false
- type: textarea
id: setup
attributes:
label: "Setup"
description: Describe your setup, launch files and executables started (optionally attach rqt_graph output), modifications to code
render: bash
validations:
required: true
- type: textarea
id: reprod
attributes:
label: "Reproduction steps"
description: Clear and ordered steps of reporoducing
render: bash
validations:
required: true
- type: textarea
id: logs
attributes:
label: "Logs"
description: Attach relevant log output here, mentioning if lines were omitted to help readability.
render: bash
validations:
required: false
11 changes: 11 additions & 0 deletions .github/workflows/industrial_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,14 @@ jobs:
# Run industrial_ci
- uses: 'kroshu/industrial_ci@master'
env: ${{ matrix.env }}
codespell:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4.7.1
with:
python-version: '3.10'
- run: pip install git+https://github.com/codespell-project/codespell.git
- uses: codespell-project/actions-codespell@v2
with:
check_filenames: true
23 changes: 23 additions & 0 deletions .github/workflows/pre-commit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# 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:

jobs:
pre-commit:
name: Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4.7.1
with:
python-version: '3.10'
- name: Install system hooks
run: sudo apt install -qq cppcheck
- uses: pre-commit/action@v3.0.0
with:
extra_args: --all-files --hook-stage manual
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
__pycache__/
140 changes: 140 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@

# 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: v4.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
exclude_types: [rst]
- id: fix-byte-order-marker


# Python hooks
- repo: https://github.com/asottile/pyupgrade
rev: v3.4.0
hooks:
- id: pyupgrade
args: [--py36-plus]

# PyDocStyle
- repo: https://github.com/PyCQA/pydocstyle
rev: 6.3.0
hooks:
- id: pydocstyle
args: ["--ignore=D100,D101,D102,D103,D104,D105,D106,D107,D203,D212,D404"]

- repo: https://github.com/psf/black
rev: 23.3.0
hooks:
- id: black
args: ["--line-length=99"]

- repo: https://github.com/pycqa/flake8
rev: 6.0.0
hooks:
- id: flake8
args: ["--extend-ignore=E501"]

# CPP hooks
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v15.0.6
hooks:
- id: clang-format
exclude: .*/fri_client_sdk/.*|.*/mock/.*|.*/robot_application/.*


- repo: local
hooks:
- id: ament_cppcheck
name: ament_cppcheck
exclude: .*/fri_client_sdk/.*|.*/mock/.*
description: Static code analysis of C/C++ files.
stages: [commit]
entry: env AMENT_CPPCHECK_ALLOW_SLOW_VERSIONS=TRUE 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
exclude: .*/fri_client_sdk/.*|.*/mock/.*
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
exclude: .*/fri_client_sdk/.*|.*/mock/.*
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: v1.1.1
hooks:
- id: doc8
args: ['--max-line-length=100', '--ignore=D001']
exclude: CHANGELOG\.rst$

- repo: https://github.com/pre-commit/pygrep-hooks
rev: v1.10.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.2.4
hooks:
- id: codespell
args: ['--write-changes']
exclude: CHANGELOG\.rst|\.(svg|pyc)$
1 change: 0 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,3 @@ be under the Apache 2 License, as dictated by that
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
~~~

1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,3 @@ source ~/ros2_ws/install/setup.bash
Documentation of this project can be found on the repository's [Wiki](https://github.com/kroshu/kuka_drivers/wiki) page.

If you find something confusing, not working, or would like to contribute, please read our [contributing guide](CONTRIBUTING.md) before opening an issue or creating a pull request.

8 changes: 3 additions & 5 deletions doc/wiki/Home.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ The consequence of the lifecycle interface is, that 3 commands are necessary to

The control mode specifications are also part of the common API. They are defined as an enum in the [`kuka_drivers_core`](https://github.com/kroshu/kuka_drivers/blob/master/kuka_drivers_core/include/kuka_drivers_core/control_mode.hpp) package, and have the following meaning:

- joint position control: the driver streams cyclic position updates for every joint.
- joint position control: the driver streams cyclic position updates for every joint.
- Needed command interface(s): `position`
- joint impedance control: the driver streams cyclic position updates for every joint and additionally stiffness [Nm/rad] and normalized damping [-] attributes, which define how the joint reacts to external effects (around the setpoint position). The effect of gravity is compensated internally.
- Needed command interface(s): `position`, `stiffness`, `damping`
Expand Down Expand Up @@ -98,7 +98,7 @@ The repository contains a few other packages aside from the 3 drivers:

The `ros2_control` framework supports Moveit out-of-the-box, as the `joint_trajectory_controller` can interpolate the trajectories planned by it. Setting up Moveit is a little more complex, therefore an example package (`iiqka_moveit_example`) is provided to help developers.

The package contains a [launch file](../../examples/iiqka_moveit_example/launch/moveit_planning_example.launch.py) that starts the iiQKA driver, `rviz`, and the `move_group` server with the required configuration. The `robot_manager` lifecycle node should be configured and activated after startup.
The package contains a [launch file](../../examples/iiqka_moveit_example/launch/moveit_planning_example.launch.py) that starts the iiQKA driver, `rviz`, and the `move_group` server with the required configuration. The `robot_manager` lifecycle node should be configured and activated after startup.

After activation, the Motion Planning plugin can be added (`Add` -> `moveit_ros_visualisation` -> `MotionPlanning`) to plan trajectories from the `rviz` GUI. (`Planning group` in the `Planning` tab should be changed to `manipulator`.)

Expand All @@ -110,10 +110,8 @@ The package also contains examples of sending planning requests from C++ code, i

Note: the first three examples should be executed consequently (without restarting the launch file) to ensure that the collision objects are indeed in the way of the trivial path. The 4. example should be executed independently, so that the collision box added in the other examples are not there (launch file should be restarted after the other examples).

Note: The examples need user interaction in `rviz`, the `Next` button (`RvizVisualToolsGui` tab) should be pressed each time the logs indicate it.
Note: The examples need user interaction in `rviz`, the `Next` button (`RvizVisualToolsGui` tab) should be pressed each time the logs indicate it.

## Detailed setup and startup instructions

For more detailed information about the drivers, visit the dedicated wiki pages for [KSS](https://github.com/kroshu/kuka_drivers/wiki/KSS_RSI), [Sunrise](https://github.com/kroshu/kuka_drivers/wiki/Sunrise_FRI) or [iiQKA](https://github.com/kroshu/kuka_drivers/wiki/iiQKA_EAC) robots.


8 changes: 4 additions & 4 deletions doc/wiki/KSS_RSI.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,14 @@ Windows runs behind the SmartHMI on the teach pad. Make sure that the **Windows
- Select the entry **New** under **RSI Ethernet** in the tree structure and press **Edit**.
- Enter the IP address and confirm with **OK**.
- Close **RSI-Network** and maximize the SmartHMI.

**KRC5:**
- Press the **Advanced** button and **New interface**.
- Select **Mixed IP address** and keep the default **Receiving task: Target subnet** and **Real-time receiving Task: UDP**
- Set the IP address to a different subnet then the **KLI interface**.
- **Default gateway**: leave it empty
- **Windows interface checkbox** should NOT be checked

3. Reboot the controller with a cold restart (**Shutdown > Check *Force cold start* and *Reload files* > Reboot control PC**).

##### Update and upload configuration files
Expand Down Expand Up @@ -100,7 +100,7 @@ The KSS driver currently does not have runtime parameters. Control mode cannot b
- After successful startup, the `robot_manager` node has to be activated to start the cyclic communication with the robot controller, see further steps (before this only a collapsed robot is visible in `rviz`):
2. Configure and activate all components the driver:
2. Configure and activate all components the driver:
```
ros2 lifecycle set robot_manager configure
ros2 lifecycle set robot_manager activate
Expand Down Expand Up @@ -148,4 +148,4 @@ ros2 lifecycle set robot_manager activate
- There are currently heap allocations in the control loop (hardware interface `read()` and `write()` functions), therefore the driver is not real-time safe
- In case of an error on the controller side, the driver is not deactivated
- Cartesian position control mode and I/O-s not yet supported
- Cartesian position control mode and I/O-s not yet supported
12 changes: 6 additions & 6 deletions doc/wiki/Realtime.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,13 +50,13 @@
scripts/config --disable SYSTEM_REVOCATION_LIST
scripts/config --set-str SYSTEM_TRUSTED_KEYS ""
```
- Enable all new Ubuntu configurations:
- Enable all new Ubuntu configurations:
```
yes '' | make oldconfig
```
#### Real-time adaptations
The kernel configuration must be modified to make it real-time-capable. Open GUI for modifications:
The kernel configuration must be modified to make it real-time-capable. Open GUI for modifications:
```
make menuconfig
```
Expand Down Expand Up @@ -92,7 +92,7 @@
(X) performance
```
Save (without modifying the name) and exit menuconfig.
Save (without modifying the name) and exit menuconfig.
### Build and install kernel
Expand All @@ -102,7 +102,7 @@ Save (without modifying the name) and exit menuconfig.
```
After successful completion, there should be 4 debian packages in the `~/kernel` directory
2. Install all kernel debian packages:
2. Install all kernel debian packages:
```
sudo dpkg -i ../*.deb
```
Expand All @@ -116,8 +116,8 @@ Save (without modifying the name) and exit menuconfig.
## Configuration
After installing the real-time kernel, the setting of scheduling priorities must be enabled for your user:
- extend `/etc/security/limits.conf` with
- extend `/etc/security/limits.conf` with
```
username - rtprio 98
```
- Restart the system
- Restart the system
Loading

0 comments on commit f3ed324

Please sign in to comment.