Skip to content

Commit d38be8e

Browse files
authored
[CI] Check links using lychee instead of a custom script (#1355)
1 parent e9f580f commit d38be8e

File tree

4 files changed

+37
-113
lines changed

4 files changed

+37
-113
lines changed

.github/helpers/check_urls.sh

Lines changed: 0 additions & 67 deletions
This file was deleted.

.github/workflows/check_links.yml

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,30 @@ jobs:
1111
runs-on: ubuntu-latest
1212
steps:
1313
- uses: actions/checkout@v4
14-
- name: Check URLs
15-
run: |
16-
.github/helpers/check_urls.sh \
17-
-d ".git build CMakeModules debian" \
18-
-f "package.xml ursim_docker.rst architecture_coarse.svg" \
19-
-p "vnc\.html opensource\.org\/licenses\/BSD-3-Clause"
14+
- name: Restore lychee cache
15+
id: restore-cache
16+
uses: actions/cache/restore@v4
17+
with:
18+
path: .lycheecache
19+
key: cache-lychee-${{ github.run_id }}-${{ github.run_attempt }}
20+
restore-keys: cache-lychee-
21+
- name: Link Checker
22+
id: lychee
23+
uses: lycheeverse/lychee-action@v2
24+
with:
25+
fail: true
26+
args: >
27+
--verbose
28+
--no-progress
29+
--cache
30+
--cache-exclude-status 429
31+
--max-cache-age 2d
32+
--exclude '^http://192\.168\.56\.101'
33+
--max-concurrency 1
34+
'./**/*.md' './**/*.html' './**/*.rst' './**/*.cpp' './**/*.h' './**/*.py'
35+
- name: Save lychee cache
36+
uses: actions/cache/save@v4
37+
if: always()
38+
with:
39+
path: .lycheecache
40+
key: ${{ steps.restore-cache.outputs.cache-primary-key }}

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ docs_output
1212
docs_build
1313
cross_reference
1414
ur_robot_driver/doc/generated
15+
.lycheecache

ur_robot_driver/README.md

Lines changed: 9 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ This package contains the actual driver for UR robots. It is part of the *univer
44
repository and requires other packages from that repository. Also, see the [main repository's
55
README](../README.md) for information on how to install and startup this driver.
66

7-
## ROS-API
8-
The ROS API is documented in a [standalone document](doc/ROS_INTERFACE.rst).
97

108
## Technical details
119
The following image shows a very coarse overview of the driver's architecture.
@@ -41,7 +39,7 @@ The robot won't accept script code from a remote source unless the robot is put
4139
*remote_control-mode*. However, if put into *remote_control-mode*, the program containing the
4240
**External Control** program node can't be started from the panel.
4341
For this purpose, please use the **dashboard** services to load, start and stop the main program
44-
running on the robot. See the [ROS-API documentation](doc/ROS_INTERFACE.rst) for details on the
42+
running on the robot. See the [Dashboard client documentation](doc/dashboard_client.rst) for details on the
4543
dashboard services.
4644

4745
For using the **tool communication interface** on e-Series robots, a `socat` script is prepared to
@@ -55,42 +53,13 @@ recommend using the controllers from the `ur_controllers` package. See it's
5553
available using the controllers from `ur_controllers`**
5654

5755
## A note about modes
58-
The term **mode** is used in different meanings inside this driver.
59-
60-
### Remote control mode
61-
On the e-series the robot itself can operate in different command modes: It can be either in **local control
62-
mode** where the teach pendant is the single point of command or in **remote control mode**, where
63-
motions from the TP, starting & loading programs from the TP activating the freedrive mode are
64-
blocked. Note that the **remote control mode** has to be explicitly enabled in the robot's settings
65-
under **Settings** -> **System** -> **Remote Control**. See the robot's manual for details.
66-
67-
The **remote control mode** is needed for many aspects of this driver such as
68-
* headless mode (see below)
69-
* sending script code to the robot
70-
* many dashboard functionalities such as
71-
* restarting the robot after protective / EM-Stop
72-
* powering on the robot and do brake release
73-
* loading and starting programs
74-
* the `set_mode` action, as it uses the dashboard calls mentioned above
75-
76-
### Headless mode
77-
Inside this driver, there's the **headless** mode, which can be either enabled or not. When the
78-
[headless mode](./doc/ROS_INTERFACE.rst#headless_mode-default-false) is activated, required script
79-
code for external control will be sent to the robot directly when the driver starts. As soon as
80-
other script code is sent to the robot either by sending it directly through this driver or by
81-
pressing any motion-related button on the teach pendant, the script will be overwritten by this
82-
action and has to be restarted by using the
83-
[resend_robot_program](./doc/ROS_INTERFACE.rst#resend_robot_program-std_srvstrigger) service. If this
84-
is necessary, you will see the output `Connection to robot dropped, waiting for new connection.`
85-
from the driver. Note that pressing "play" on the TP won't start the external control again, but
86-
whatever program is currently loaded on the controller. This mode doesn't require the "External
87-
Control" URCap being installed on the robot as the program is sent to the robot directly. However,
88-
we recommend to use the non-headless mode and leverage the `set_mode` action to start program
89-
execution without the teach pendant. The **headless** mode might be removed in future releases.
90-
91-
**Note for the e-Series:** In order to leverage the **headless** mode on the e-Series the robot must
92-
be in **remote_control_mode** as explained above.
56+
The term **mode** is used in different meanings inside this driver. See [Operation
57+
Modes](doc/operation_modes.rst) for details.
9358

9459
## controller_stopper
95-
A small helper node that stops and restarts ROS controllers based on a boolean status topic. When the status goes to `false`, all running controllers except a set of predefined *consistent_controllers* gets stopped. If status returns to `true` the stopped controllers are restarted.
96-
This is done by Subscribing to a robot's running state topic. Ideally this topic is latched and only publishes on changes. However, this node only reacts on state changes, so a state published each cycle would also be fine.
60+
A small helper node that stops and restarts ROS controllers based on a boolean status topic. When
61+
the status goes to `false`, all running controllers except a set of predefined
62+
*consistent_controllers* gets stopped. If status returns to `true` the stopped controllers are
63+
restarted. This is done by Subscribing to a robot's running state topic. Ideally this topic is
64+
latched and only publishes on changes. However, this node only reacts on state changes, so a state
65+
published each cycle would also be fine.

0 commit comments

Comments
 (0)