Skip to content

Commit d197fc7

Browse files
authored
Port end effector trajectory controller from Angler (#54)
* testing gif in readme * format * bleh * Added reference to blue docs * Cleanup folders * implemented trajectory * whoops * ee controller mvp done * added error tolerance for execution * add controller state publishing * fix compilation errors * update version and changelogs * Start implementing action server interface * adding action server and improving logic * updates * controller ready for testing * add pluginlib description * fix pluginlib * fix plugin registration * reintegrate default constructor * fix library build * add transform to chained references in ik controller * bug fixes * bug fixes * added readme * fix slerp * fix link to blue docs * add changelogs * fix ci errors and pr comments * cleanup * bad idea :D
1 parent b9ada28 commit d197fc7

Some content is hidden

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

48 files changed

+1301
-31
lines changed

README.md

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
# auv_controllers
22

33
auv_controllers is a collection of controllers for autonomous underwater
4-
vehicles (AUVs) implemented using ros2_control. The controllers have
5-
been designed to support the complete AUV control hierarchy and to enable
6-
benchmarking against other commonly-used control algorithms.
4+
vehicles (AUVs) and underwater vehicle manipulator systems (UVMS) implemented
5+
using ros2_control. The controllers have been designed to support the complete
6+
system control hierarchy and to enable benchmarking against other commonly-used
7+
control algorithms.
8+
9+
<p align="center">
10+
<img src="media/uvms.gif" alt="UVMS whole-body control" width="49%" />
11+
<img src="media/teleop.gif" alt="AUV control" width="49%" />
12+
</p>
713

814
## Installation
915

@@ -28,10 +34,11 @@ rosdep update && \
2834
rosdep install -y --from-paths src --ignore-src
2935
```
3036

31-
## Quick start
37+
## Getting started
3238

3339
To learn more about how to use the controllers provided in this project, please
3440
refer to the [examples package](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/tree/main/auv_control_demos).
41+
You can also find integration tutorials in the [Blue documentation](https://robotic-decision-making-lab.github.io/blue).
3542

3643
## Getting help
3744

auv_control_demos/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Changelog for package auv_control_demos
22

3+
## 0.2.0 (2025-05-03)
4+
35
## 0.1.0 (2025-04-27)
46

57
- Updates the individual_controller and chained_controllers demos to use the

auv_control_demos/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<package format="3">
44

55
<name>auv_control_demos</name>
6-
<version>0.1.0</version>
6+
<version>0.2.0</version>
77
<description>Example package that includes demos for using auv_controllers in individual and chained modes</description>
88

99
<maintainer email="[email protected]">Colin Mitchell</maintainer>

auv_control_msgs/CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Changelog for package auv_control_msgs
22

3+
## 0.2.0 (2025-05-03)
4+
5+
- Implements the EndEffectorTrajectory message
6+
- Implements the EndEffectorTrajectoryPoint message
7+
- Implements the EndEffectorTrajectoryControllerState message
8+
- Adds the FollowEndEffectorTrajectory action
9+
310
## 0.1.0 (2025-04-27)
411

512
- Implements the IKControllerStateStamped message to support the new IK

auv_control_msgs/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ find_package(trajectory_msgs REQUIRED)
1111
rosidl_generate_interfaces(auv_control_msgs
1212
"msg/MultiActuatorStateStamped.msg"
1313
"msg/IKControllerStateStamped.msg"
14+
"msg/EndEffectorTrajectoryPoint.msg"
15+
"msg/EndEffectorTrajectory.msg"
16+
"msg/EndEffectorTrajectoryControllerState.msg"
17+
"action/FollowEndEffectorTrajectory.action"
1418
DEPENDENCIES builtin_interfaces std_msgs geometry_msgs trajectory_msgs
1519
)
1620

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# The end effector trajectory to follow.
2+
#
3+
# The trajectory header stamp is used to set the trajectory start time. This can be
4+
# set to zero to indicate that the controller should start following the trajectory
5+
# now.
6+
auv_control_msgs/EndEffectorTrajectory trajectory
7+
8+
# The maximum error that the controller is allowed when following the trajectory.
9+
# When this is set to 0, the tolerance will not be applied during control.
10+
float64 path_tolerance
11+
12+
# The maximum terminal error that the controller is allowed.
13+
# When this is set to 0, the tolerance will not affect the success of the action.
14+
float64 goal_tolerance
15+
16+
---
17+
int32 error_code
18+
int32 SUCCESSFUL = 0
19+
int32 INVALID_GOAL = -1
20+
int32 OLD_HEADER_TIMESTAMP = -2
21+
int32 PATH_TOLERANCE_VIOLATED = -3
22+
int32 GOAL_TOLERANCE_VIOLATED = -4
23+
24+
# A human-readable error description.
25+
string error_string
26+
27+
---
28+
std_msgs/Header header
29+
30+
# The reference pose for the controller at the current time instance.
31+
# This is distinct from the sample, which is retrieved at the next time
32+
# instance.
33+
geometry_msgs/Pose desired
34+
35+
# The current end effector state.
36+
geometry_msgs/Pose actual
37+
38+
# The squared Euclidean norm of the geodesic distance between the desired
39+
# and actual states.
40+
float64 error
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
std_msgs/Header header
2+
3+
# The sequence of end effector points to track.
4+
auv_control_msgs/EndEffectorTrajectoryPoint[] points
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
std_msgs/Header header
2+
3+
# The reference sample from the trajectory. This is the sample from the current time instance and used
4+
# for error calculation.
5+
geometry_msgs/Pose reference
6+
7+
# The current end effector state.
8+
geometry_msgs/Pose feedback
9+
10+
# The squared Euclidean norm of the geodesic distance between the reference state and end effector state.
11+
float64 error
12+
13+
# The trajectory controller command. This is the trajectory sample from the next time instance.
14+
geometry_msgs/Pose output
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# The sequence of end effector poses.
2+
geometry_msgs/Pose point
3+
4+
# The time that this point should be reached, measured from the start of the trajectory.
5+
builtin_interfaces/Duration time_from_start

auv_control_msgs/msg/IKControllerStateStamped.msg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
std_msgs/Header header
22

3-
# The name of the IK solver used by the controller
3+
# The name of the IK solver used by the controller.
44
string solver_name
55

66
# Position DoF names, e.g., joint or axis names.

0 commit comments

Comments
 (0)