Skip to content

Commit 329b6a1

Browse files
evan-palmermergify[bot]
authored andcommitted
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 (cherry picked from commit d197fc7) # Conflicts: # README.md # auv_control_demos/CHANGELOG.md # auv_control_demos/package.xml # auv_control_msgs/CHANGELOG.md # auv_control_msgs/CMakeLists.txt # auv_control_msgs/msg/IKControllerStateStamped.msg # auv_control_msgs/package.xml # auv_controllers/CHANGELOG.md # auv_controllers/package.xml # controller_common/CHANGELOG.md # controller_common/include/controller_common/common.hpp # controller_common/package.xml # controller_common/src/common.cpp # ik_solvers/CHANGELOG.md # ik_solvers/include/ik_solvers/solver.hpp # ik_solvers/include/ik_solvers/task_priority_solver.hpp # ik_solvers/package.xml # ik_solvers/src/solver.cpp # ik_solvers/src/task_priority_solver.cpp # thruster_allocation_matrix_controller/CHANGELOG.md # thruster_allocation_matrix_controller/package.xml # thruster_controllers/CHANGELOG.md # thruster_controllers/package.xml # topic_sensors/CHANGELOG.md # topic_sensors/package.xml # velocity_controllers/CHANGELOG.md # velocity_controllers/package.xml # whole_body_controllers/CHANGELOG.md # whole_body_controllers/CMakeLists.txt # whole_body_controllers/include/whole_body_controllers/ik_controller.hpp # whole_body_controllers/package.xml # whole_body_controllers/src/ik_controller.cpp
1 parent c9c58a1 commit 329b6a1

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

+3209
-1
lines changed

README.md

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

3+
<<<<<<< HEAD
34
auv_controllers is a collection of chainable controllers for autonomous
45
underwater vehicles (AUVs) implemented using ros2_control. The controllers have
56
been designed to support the complete AUV control hierarchy and to enable
67
benchmarking against other commonly-used control algorithms.
8+
=======
9+
auv_controllers is a collection of controllers for autonomous underwater
10+
vehicles (AUVs) and underwater vehicle manipulator systems (UVMS) implemented
11+
using ros2_control. The controllers have been designed to support the complete
12+
system control hierarchy and to enable benchmarking against other commonly-used
13+
control algorithms.
14+
15+
<p align="center">
16+
<img src="media/uvms.gif" alt="UVMS whole-body control" width="49%" />
17+
<img src="media/teleop.gif" alt="AUV control" width="49%" />
18+
</p>
19+
>>>>>>> d197fc7 (Port end effector trajectory controller from Angler (#54))
720
821
> [!NOTE]
922
> If you are interested in adding your own controller to this project, please
@@ -32,10 +45,11 @@ rosdep update && \
3245
rosdep install -y --from-paths src --ignore-src
3346
```
3447

35-
## Quick start
48+
## Getting started
3649

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

4054
## Getting help
4155

auv_control_demos/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Changelog for package auv_control_demos
2+
3+
## 0.2.0 (2025-05-03)
4+
5+
## 0.1.0 (2025-04-27)
6+
7+
- Updates the individual_controller and chained_controllers demos to use the
8+
correct topic names

auv_control_demos/package.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,14 @@
22
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
33
<package format="3">
44
<name>auv_control_demos</name>
5+
<<<<<<< HEAD
56
<version>0.0.1</version>
67
<description>Example package that includes demos for using auv_controllers in individual and
78
chained modes</description>
9+
=======
10+
<version>0.2.0</version>
11+
<description>Example package that includes demos for using auv_controllers in individual and chained modes</description>
12+
>>>>>>> d197fc7 (Port end effector trajectory controller from Angler (#54))
813

914
<maintainer email="[email protected]">Colin Mitchell</maintainer>
1015
<maintainer email="[email protected]">Everardo Gonzalez</maintainer>

auv_control_msgs/CHANGELOG.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Changelog for package auv_control_msgs
2+
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+
10+
## 0.1.0 (2025-04-27)
11+
12+
- Implements the IKControllerStateStamped message to support the new IK
13+
controller

auv_control_msgs/CMakeLists.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,16 @@ find_package(rosidl_default_generators REQUIRED)
88

99
rosidl_generate_interfaces(auv_control_msgs
1010
"msg/MultiActuatorStateStamped.msg"
11+
<<<<<<< HEAD
1112
DEPENDENCIES builtin_interfaces std_msgs
13+
=======
14+
"msg/IKControllerStateStamped.msg"
15+
"msg/EndEffectorTrajectoryPoint.msg"
16+
"msg/EndEffectorTrajectory.msg"
17+
"msg/EndEffectorTrajectoryControllerState.msg"
18+
"action/FollowEndEffectorTrajectory.action"
19+
DEPENDENCIES builtin_interfaces std_msgs geometry_msgs trajectory_msgs
20+
>>>>>>> d197fc7 (Port end effector trajectory controller from Angler (#54))
1221
)
1322

1423
ament_package()
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
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
std_msgs/Header header
2+
3+
# The name of the IK solver used by the controller.
4+
string solver_name
5+
6+
# Position DoF names, e.g., joint or axis names.
7+
string[] position_joint_names
8+
9+
# Velocity DoF names.
10+
string[] velocity_joint_names
11+
12+
# The reference end effector pose.
13+
geometry_msgs/Pose reference
14+
15+
# Time between two consecutive updates/execution of the control law.
16+
# This is often used for integration of the solution to determine the desired positions.
17+
float64 time_step
18+
19+
# The IK solver solution.
20+
trajectory_msgs/JointTrajectoryPoint solution

0 commit comments

Comments
 (0)