Skip to content

Commit 02a9541

Browse files
Release/Flexiv ROS 2 Jazzy v1.8 (#53)
1 parent a5efbb0 commit 02a9541

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+249
-952
lines changed

.github/workflows/foxy-binary-build.yml

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

.github/workflows/humble-binary-build.yml

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ jobs:
2121
steps:
2222
- name: Checkout
2323
uses: actions/checkout@v3
24+
with:
25+
submodules: recursive
2426
- name: Install dependencies
2527
run: |
2628
sudo apt-get update && sudo apt-get install -y \
@@ -36,9 +38,18 @@ jobs:
3638
ros-humble-joint-state-publisher \
3739
ros-humble-joint-state-publisher-gui \
3840
ros-humble-robot-state-publisher
41+
- name: Build and install flexiv_rdk
42+
shell: bash
43+
run: |
44+
cd flexiv_hardware/rdk/thirdparty
45+
bash build_and_install_dependencies.sh ~/rdk_install
46+
cd ..
47+
mkdir -p build && cd build
48+
cmake .. -DCMAKE_INSTALL_PREFIX=~/rdk_install
49+
cmake --build . --target install --config Release
3950
- name: Build and run tests
4051
id: action-ros-ci
41-
uses: ros-tooling/action-ros-ci@v0.3
52+
uses: ros-tooling/action-ros-ci@v0.4
4253
with:
4354
target-ros2-distro: ${{ env.ROS_DISTRO }}
4455
package-name: |
@@ -51,5 +62,12 @@ jobs:
5162
flexiv_robot_states_broadcaster
5263
flexiv_test_nodes
5364
gpio_controller
54-
joint_impedance_controller
65+
colcon-defaults: |
66+
{
67+
"build": {
68+
"cmake-args": [
69+
"-DCMAKE_PREFIX_PATH=~/rdk_install"
70+
]
71+
}
72+
}
5573
skip-tests: true
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
name: Jazzy Binary Build
2+
3+
on:
4+
push:
5+
branches:
6+
- jazzy
7+
pull_request:
8+
branches:
9+
- jazzy
10+
11+
jobs:
12+
jazzy_binary:
13+
name: Jazzy binary job
14+
runs-on: ubuntu-24.04
15+
container:
16+
image: osrf/ros:jazzy-desktop
17+
strategy:
18+
fail-fast: false
19+
env:
20+
ROS_DISTRO: jazzy
21+
steps:
22+
- name: Checkout
23+
uses: actions/checkout@v3
24+
with:
25+
submodules: recursive
26+
- name: Install dependencies
27+
run: |
28+
sudo apt-get update && sudo apt-get install -y \
29+
libeigen3-dev \
30+
ros-jazzy-xacro \
31+
ros-jazzy-tinyxml2-vendor \
32+
ros-jazzy-ros2-control \
33+
ros-jazzy-realtime-tools \
34+
ros-jazzy-control-toolbox \
35+
ros-jazzy-moveit \
36+
ros-jazzy-ros2-controllers \
37+
ros-jazzy-test-msgs \
38+
ros-jazzy-joint-state-publisher \
39+
ros-jazzy-joint-state-publisher-gui \
40+
ros-jazzy-robot-state-publisher
41+
- name: Build and install flexiv_rdk
42+
shell: bash
43+
run: |
44+
source /opt/ros/jazzy/setup.bash
45+
cd flexiv_hardware/rdk
46+
mkdir -p build && cd build
47+
cmake .. -DCMAKE_INSTALL_PREFIX=~/rdk_install -DRDK_SUPPORT_ROS2_JAZZY=ON
48+
make install
49+
- name: Build and run tests
50+
id: action-ros-ci
51+
uses: ros-tooling/action-ros-ci@v0.4
52+
with:
53+
target-ros2-distro: ${{ env.ROS_DISTRO }}
54+
package-name: |
55+
flexiv_bringup
56+
flexiv_description
57+
flexiv_gripper
58+
flexiv_hardware
59+
flexiv_moveit_config
60+
flexiv_msgs
61+
flexiv_robot_states_broadcaster
62+
flexiv_test_nodes
63+
gpio_controller
64+
colcon-defaults: |
65+
{
66+
"build": {
67+
"cmake-args": [
68+
"-DCMAKE_PREFIX_PATH=~/rdk_install"
69+
]
70+
}
71+
}
72+
skip-tests: true

README.md

Lines changed: 28 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![docs](https://img.shields.io/badge/docs-sphinx-yellow)](https://www.flexiv.com/software/rdk/manual/ros2_bridge.html)
44

5-
For ROS 2 users to easily work with [RDK](https://github.com/flexivrobotics/flexiv_rdk), the APIs of RDK are wrapped into ROS packages in `flexiv_ros2`. Key functionalities like real-time joint torque and position control are supported, and the integration with `ros2_control` framework and MoveIt! 2 is also implemented.
5+
For ROS 2 users to easily work with [RDK](https://github.com/flexivrobotics/flexiv_rdk), the APIs of RDK are wrapped into ROS packages in `flexiv_ros2`. Key functionalities like realtime and non-realtime joint torque and position control are supported, and the integration with `ros2_control` framework and MoveIt! 2 is also implemented.
66

77
## References
88

@@ -12,41 +12,40 @@ For ROS 2 users to easily work with [RDK](https://github.com/flexivrobotics/flex
1212

1313
| **Supported OS** | **Supported ROS 2 distribution** |
1414
| ---------------- | ------------------------------------------------------------- |
15-
| Ubuntu 20.04 | [Foxy Fitzroy](https://docs.ros.org/en/foxy/index.html) |
1615
| Ubuntu 22.04 | [Humble Hawksbill](https://docs.ros.org/en/humble/index.html) |
16+
| Ubuntu 24.04 | [Jazzy Jalisco](https://docs.ros.org/en/jazzy/index.html) |
1717

1818
### Release Status
1919

20-
| **ROS 2 Distro** | Foxy | Humble |
21-
| ------------------ | --------------------------------------------------------------- | ----------------------------------------------------- |
22-
| **Branch** | [foxy](https://github.com/flexivrobotics/flexiv_ros2/tree/foxy) | [humble](https://github.com/flexivrobotics/flexiv_ros2) |
23-
| **Release Status** | [![Foxy Binary Build](https://github.com/flexivrobotics/flexiv_ros2/actions/workflows/foxy-binary-build.yml/badge.svg?branch=foxy)](https://github.com/flexivrobotics/flexiv_ros2/actions/workflows/foxy-binary-build.yml) | [![Humble Binary Build](https://github.com/flexivrobotics/flexiv_ros2/actions/workflows/humble-binary-build.yml/badge.svg?branch=humble)](https://github.com/flexivrobotics/flexiv_ros2/actions/workflows/humble-binary-build.yml) |
20+
| **ROS 2 Distro** | Humble | Jazzy |
21+
| ------------------ | ------------------------------------------------------------------- | ----------------------------------------------------- |
22+
| **Branch** | [humble](https://github.com/flexivrobotics/flexiv_ros2/tree/humble) | [jazzy](https://github.com/flexivrobotics/flexiv_ros2/tree/jazzy) |
23+
| **Release Status** | [![Humble Binary Build](https://github.com/flexivrobotics/flexiv_ros2/actions/workflows/humble-binary-build.yml/badge.svg?branch=humble)](https://github.com/flexivrobotics/flexiv_ros2/actions/workflows/humble-binary-build.yml) | [![Jazzy Binary Build](https://github.com/flexivrobotics/flexiv_ros2/actions/workflows/jazzy-binary-build.yml/badge.svg?branch=jazzy)](https://github.com/flexivrobotics/flexiv_ros2/actions/workflows/jazzy-binary-build.yml) |
2424

2525
## Getting Started
2626

27-
This project was developed for ROS 2 Foxy (Ubuntu 20.04) and Humble (Ubuntu 22.04). Other versions of Ubuntu and ROS 2 may work, but are not officially supported.
27+
This project was developed for ROS 2 Humble (Ubuntu 22.04) and Jazzy (Ubuntu 24.04). Other versions of Ubuntu and ROS 2 may work, but are not officially supported.
2828

29-
1. Install [ROS 2 Humble via Debian Packages](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html)
29+
1. Install [ROS 2 Jazzy via Debian Packages](https://docs.ros.org/en/jazzy/Installation/Ubuntu-Install-Debians.html)
3030

3131
2. Install `colcon` and additional ROS packages:
3232

3333
```bash
3434
sudo apt install -y \
3535
python3-colcon-common-extensions \
36-
python3-rosdep2 \
3736
libeigen3-dev \
38-
ros-humble-xacro \
39-
ros-humble-tinyxml2-vendor \
40-
ros-humble-ros2-control \
41-
ros-humble-realtime-tools \
42-
ros-humble-control-toolbox \
43-
ros-humble-moveit \
44-
ros-humble-ros2-controllers \
45-
ros-humble-test-msgs \
46-
ros-humble-joint-state-publisher \
47-
ros-humble-joint-state-publisher-gui \
48-
ros-humble-robot-state-publisher \
49-
ros-humble-rviz2
37+
ros-jazzy-xacro \
38+
ros-jazzy-tinyxml2-vendor \
39+
ros-jazzy-ros2-control \
40+
ros-jazzy-realtime-tools \
41+
ros-jazzy-control-toolbox \
42+
ros-jazzy-moveit \
43+
ros-jazzy-ros2-controllers \
44+
ros-jazzy-test-msgs \
45+
ros-jazzy-joint-state-publisher \
46+
ros-jazzy-joint-state-publisher-gui \
47+
ros-jazzy-robot-state-publisher \
48+
ros-jazzy-rviz2
5049
```
5150

5251
3. Setup workspace:
@@ -64,41 +63,33 @@ This project was developed for ROS 2 Foxy (Ubuntu 20.04) and Humble (Ubuntu 22.0
6463
```bash
6564
cd ~/flexiv_ros2_ws
6665
rosdep update
67-
rosdep install --from-paths src --ignore-src --rosdistro humble -r -y
66+
rosdep install --from-paths src --ignore-src --rosdistro jazzy -r -y
6867
```
6968

70-
> [!NOTE]
71-
> Skip step 5 and 6 if you have compile and install [flexiv_rdk](https://github.com/flexivrobotics/flexiv_rdk).
72-
73-
5. Choose a directory for installing `flexiv_rdk` library and all its dependencies. For example, a new folder named `rdk_install` under the home directory: `~/rdk_install`. Compile and install to the installation directory:
74-
75-
```bash
76-
cd ~/flexiv_ros2_ws/src/flexiv_ros2/flexiv_hardware/rdk/thirdparty
77-
bash build_and_install_dependencies.sh ~/rdk_install
78-
```
69+
5. Choose a directory for installing `flexiv_rdk` library. For example, a new folder named `rdk_install` under the home directory: `~/rdk_install`. NOTE: Do NOT run `rdk/thirdparty/build_and_install_dependencies.sh`, but proceed to the next step directly.
7970

8071
6. Configure and install `flexiv_rdk`:
8172

8273
```bash
74+
source /opt/ros/jazzy/setup.bash
8375
cd ~/flexiv_ros2_ws/src/flexiv_ros2/flexiv_hardware/rdk
8476
mkdir build && cd build
85-
cmake .. -DCMAKE_INSTALL_PREFIX=~/rdk_install
86-
cmake --build . --target install --config Release
77+
cmake .. -DCMAKE_INSTALL_PREFIX=~/rdk_install -DRDK_SUPPORT_ROS2_JAZZY=ON
78+
make install
8779
```
8880

8981
7. Build and source the workspace:
9082

9183
```bash
9284
cd ~/flexiv_ros2_ws
93-
source /opt/ros/humble/setup.bash
9485
colcon build --symlink-install --cmake-args -DCMAKE_PREFIX_PATH=~/rdk_install
9586
source install/setup.bash
9687
```
9788

9889
> [!NOTE]
9990
> Remember to source the setup file and the workspace whenever a new terminal is opened:
10091
> ```bash
101-
> source /opt/ros/humble/setup.bash
92+
> source /opt/ros/jazzy/setup.bash
10293
> source ~/flexiv_ros2_ws/install/setup.bash
10394
> ```
10495
@@ -113,11 +104,12 @@ The main launch file to start the robot driver is the `rizon.launch.py` - it loa
113104
114105
- `robot_sn` (*required*) - Serial number of the robot to connect to. Remove any space, for example: Rizon4s-123456
115106
- `rizon_type` (default: *Rizon4*) - type of the Flexiv Rizon robot. (Rizon4, Rizon4M, Rizon4R, Rizon4s, Rizon10 or Rizon10s)
107+
- `rdk_control_mode` (default: *joint_position*) - Flexiv RDK control mode for ROS 2 joint position and velocity interfaces. Options: *joint_position* or *joint_impedance*
116108
- `load_gripper` (default: *false*) - loads the Flexiv Grav gripper as the end-effector of the robot and the gripper control node.
117109
- `use_fake_hardware` (default: *false*) - starts `FakeSystem` instead of real hardware. This is a simple simulation that mimics joint command to their states.
118110
- `start_rviz` (deafult: *true*) - starts RViz automatically with the launch file.
119111
- `fake_sensor_commands` (default: *false*) - enables fake command interfaces for sensors used for simulations. Used only if `use_fake_hardware` parameter is true.
120-
- `robot_controller` (default: *rizon_arm_controller*) - robot controller to start. Available controllers: *forward_position_controller*, *rizon_arm_controller*, *joint_impedance_controller*.
112+
- `robot_controller` (default: *rizon_arm_controller*) - robot controller to start. Available controllers: *rizon_arm_controller*
121113
122114
*(Details about other launch files can be found in [`flexiv_bringup`](/flexiv_bringup))*
123115
@@ -149,25 +141,6 @@ The main launch file to start the robot driver is the `rizon.launch.py` - it loa
149141
```
150142
151143
The joint position goals can be changed in `flexiv_bringup/config/joint_trajectory_position_publisher.yaml`
152-
- To test another controller, define it using the `robot_controller` launch argument, for example the `joint_impedance_controller`:
153-
154-
```bash
155-
ros2 launch flexiv_bringup rizon.launch.py robot_sn:=[robot_sn] robot_controller:=joint_impedance_controller
156-
```
157-
158-
Open a new terminal and run the launch file:
159-
160-
```bash
161-
ros2 launch flexiv_bringup sine_sweep_impedance.launch.py robot_sn:=[robot_sn]
162-
```
163-
164-
The robot should run a sine-sweep motion with joint impedance control.
165-
166-
> [!NOTE]
167-
> The command starts the robot in the joint torque mode. In this mode, gravity and friction are compensated **only** for the robot **without** any attached objects (e.g. the gripper, camera).
168-
169-
> [!NOTE]
170-
> Joint impedance control is not supported in fake/simulated hardware.
171144
172145
### Using MoveIt
173146

flexiv_bringup/README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,5 @@ This package contains launch files: the main driver launcher, the MoveIt launch
55
- `rizon.launch.py` - the main launcher: starts *ros2_control* node including hardware interface, runs joint states, Flexiv robot states broadcaster, and a controller, and visualizes the current robot pose in RViZ. The default controller is `rizon_arm_controller`, a joint trajectory controller.
66
- `rizon_moveit.launch.py` - runs MoveIt together with the main driver. The controller for robot joints started in this launch file is *rizon_arm_controller*.
77
- `test_joint_trajectory_controller.launch` - sends joint trajectory goals to the *rizon_arm_controller*.
8-
- `sine_sweep_position.launch.py` - gets current joint states and then performs a sine-sweep motion with *forward_position_controller*.
9-
- `sine_sweep_impedance.launch.py` - gets current joint states and then performs a sine-sweep motion with *joint_impedance_controller*.
108

119
**NOTE**: The example launch files run the demo nodes from the `flexiv_test_nodes` package, with the parameters defined in `/config`.

flexiv_bringup/config/rizon_controllers.yaml

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,48 +2,18 @@ controller_manager:
22
ros__parameters:
33
update_rate: 1000 # Hz
44

5-
forward_position_controller:
6-
type: position_controllers/JointGroupPositionController
7-
85
rizon_arm_controller:
96
type: joint_trajectory_controller/JointTrajectoryController
107

118
joint_state_broadcaster:
129
type: joint_state_broadcaster/JointStateBroadcaster
1310

14-
joint_impedance_controller:
15-
type: joint_impedance_controller/JointImpedanceController
16-
1711
gpio_controller:
1812
type: gpio_controller/GPIOController
1913

2014
flexiv_robot_states_broadcaster:
2115
type: flexiv_robot_states_broadcaster/FlexivRobotStatesBroadcaster
2216

23-
forward_position_controller:
24-
ros__parameters:
25-
joints:
26-
- $(var robot_sn)_joint1
27-
- $(var robot_sn)_joint2
28-
- $(var robot_sn)_joint3
29-
- $(var robot_sn)_joint4
30-
- $(var robot_sn)_joint5
31-
- $(var robot_sn)_joint6
32-
- $(var robot_sn)_joint7
33-
34-
joint_impedance_controller:
35-
ros__parameters:
36-
joints:
37-
- $(var robot_sn)_joint1
38-
- $(var robot_sn)_joint2
39-
- $(var robot_sn)_joint3
40-
- $(var robot_sn)_joint4
41-
- $(var robot_sn)_joint5
42-
- $(var robot_sn)_joint6
43-
- $(var robot_sn)_joint7
44-
k_p: [3000.0, 3000.0, 800.0, 800.0, 200.0, 200.0, 200.0]
45-
k_d: [80.0, 80.0, 40.0, 40.0, 8.0, 8.0, 8.0]
46-
4717
rizon_arm_controller:
4818
ros__parameters:
4919
joints:

flexiv_bringup/config/sine_sweep_impedance_config.yaml

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

0 commit comments

Comments
 (0)