From a9e762b370c6a2a8773a02d66e211a9948b6d4e8 Mon Sep 17 00:00:00 2001 From: Evan Palmer Date: Tue, 3 Jun 2025 02:05:26 -0700 Subject: [PATCH] Update auv_control_demos configurations (#60) * Fixed stale demos * Update package versions * Fix obsolete tf2 header (cherry picked from commit c8d798e0ec45c7d161d52858053e1d60c94c12d7) # Conflicts: # auv_control_demos/CHANGELOG.md # auv_control_demos/chained_controllers/README.md # auv_control_demos/individual_controller/README.md # auv_control_demos/package.xml # auv_control_msgs/CHANGELOG.md # auv_control_msgs/package.xml # auv_controllers/CHANGELOG.md # auv_controllers/package.xml # controller_common/CHANGELOG.md # controller_common/package.xml # end_effector_trajectory_controller/include/end_effector_trajectory_controller/end_effector_trajectory_controller.hpp # end_effector_trajectory_controller/package.xml # ik_solvers/CHANGELOG.md # ik_solvers/package.xml # 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/package.xml --- .vscode/settings.json | 1 + auv_control_demos/CHANGELOG.md | 14 ++ .../chained_controllers/README.md | 113 ++++++------ .../config/chained_controllers.yaml | 58 ++++-- .../launch/chaining.launch.py | 4 +- ...ined_config.xacro => chained.config.xacro} | 6 +- .../xacro/chained.model.xacro | 42 +++++ ...ntrol.xacro => chained.ros2_control.xacro} | 36 ---- .../xacro/chained.urdf.xacro | 142 +++++++++++++++ .../xacro/chained_urdf.xacro | 170 ------------------ .../individual_controller/README.md | 82 +++++---- .../config/individual_controller.yaml | 56 ++++-- .../launch/individual.launch.py | 4 +- ...l_config.xacro => individual.config.xacro} | 6 +- .../xacro/individual.model.xacro | 42 +++++ ...ol.xacro => individual.ros2_control.xacro} | 0 ...idual_urdf.xacro => individual.urdf.xacro} | 0 auv_control_demos/package.xml | 5 + auv_control_msgs/CHANGELOG.md | 15 ++ auv_control_msgs/package.xml | 4 + auv_controllers/CHANGELOG.md | 19 ++ auv_controllers/package.xml | 4 + controller_common/CHANGELOG.md | 11 ++ controller_common/package.xml | 26 +++ .../CHANGELOG.md | 7 + .../end_effector_trajectory_controller.hpp | 139 ++++++++++++++ .../package.xml | 37 ++++ ik_solvers/CHANGELOG.md | 12 ++ ik_solvers/package.xml | 31 ++++ .../CHANGELOG.md | 10 ++ .../package.xml | 4 + thruster_controllers/CHANGELOG.md | 12 ++ thruster_controllers/package.xml | 4 + topic_sensors/CHANGELOG.md | 9 + topic_sensors/package.xml | 33 ++++ velocity_controllers/CHANGELOG.md | 17 ++ velocity_controllers/package.xml | 4 + whole_body_controllers/CHANGELOG.md | 14 ++ whole_body_controllers/package.xml | 37 ++++ 39 files changed, 886 insertions(+), 344 deletions(-) create mode 100644 auv_control_demos/CHANGELOG.md rename auv_control_demos/chained_controllers/xacro/{chained_config.xacro => chained.config.xacro} (64%) create mode 100644 auv_control_demos/chained_controllers/xacro/chained.model.xacro rename auv_control_demos/chained_controllers/xacro/{chained_ros2_control.xacro => chained.ros2_control.xacro} (53%) create mode 100644 auv_control_demos/chained_controllers/xacro/chained.urdf.xacro delete mode 100644 auv_control_demos/chained_controllers/xacro/chained_urdf.xacro rename auv_control_demos/individual_controller/xacro/{individual_config.xacro => individual.config.xacro} (62%) create mode 100644 auv_control_demos/individual_controller/xacro/individual.model.xacro rename auv_control_demos/individual_controller/xacro/{individual_ros2_control.xacro => individual.ros2_control.xacro} (100%) rename auv_control_demos/individual_controller/xacro/{individual_urdf.xacro => individual.urdf.xacro} (100%) create mode 100644 auv_control_msgs/CHANGELOG.md create mode 100644 auv_controllers/CHANGELOG.md create mode 100644 controller_common/CHANGELOG.md create mode 100644 controller_common/package.xml create mode 100644 end_effector_trajectory_controller/CHANGELOG.md create mode 100644 end_effector_trajectory_controller/include/end_effector_trajectory_controller/end_effector_trajectory_controller.hpp create mode 100644 end_effector_trajectory_controller/package.xml create mode 100644 ik_solvers/CHANGELOG.md create mode 100644 ik_solvers/package.xml create mode 100644 thruster_allocation_matrix_controller/CHANGELOG.md create mode 100644 thruster_controllers/CHANGELOG.md create mode 100644 topic_sensors/CHANGELOG.md create mode 100644 topic_sensors/package.xml create mode 100644 velocity_controllers/CHANGELOG.md create mode 100644 whole_body_controllers/CHANGELOG.md create mode 100644 whole_body_controllers/package.xml diff --git a/.vscode/settings.json b/.vscode/settings.json index 5dd0c3d..0a029b7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -20,6 +20,7 @@ "files.trimTrailingWhitespace": true, "editor.formatOnSave": true, "editor.tabSize": 2, + "editor.detectIndentation": false, "autoDocstring.startOnNewLine": false, "autoDocstring.docstringFormat": "google-notypes", "python.autoComplete.extraPaths": [ diff --git a/auv_control_demos/CHANGELOG.md b/auv_control_demos/CHANGELOG.md new file mode 100644 index 0000000..5144491 --- /dev/null +++ b/auv_control_demos/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog for package auv_control_demos + +## 0.2.1 (2025-06-03) + +- Updates the individual_controller and chained_controllers demos to use the +current `hydrodynamics` API and the new adaptive integral terminal sliding mode +controller. + +## 0.2.0 (2025-05-03) + +## 0.1.0 (2025-04-27) + +- Updates the individual_controller and chained_controllers demos to use the +correct topic names diff --git a/auv_control_demos/chained_controllers/README.md b/auv_control_demos/chained_controllers/README.md index 21b6453..657ab5e 100644 --- a/auv_control_demos/chained_controllers/README.md +++ b/auv_control_demos/chained_controllers/README.md @@ -23,16 +23,16 @@ applies a PWM command to the hardware interface. The output should resemble: ```bash - integral_sliding_mode_controller[velocity_controllers/IntegralSlidingModeController] active - thruster_allocation_matrix_controller[thruster_allocation_matrix_controller/ThrusterAllocationMatrixController] active - thruster_1_controller[thruster_controllers/PolynomialThrustCurveController] active - thruster_2_controller[thruster_controllers/PolynomialThrustCurveController] active - thruster_3_controller[thruster_controllers/PolynomialThrustCurveController] active - thruster_4_controller[thruster_controllers/PolynomialThrustCurveController] active - thruster_5_controller[thruster_controllers/PolynomialThrustCurveController] active - thruster_6_controller[thruster_controllers/PolynomialThrustCurveController] active - thruster_7_controller[thruster_controllers/PolynomialThrustCurveController] active - thruster_8_controller[thruster_controllers/PolynomialThrustCurveController] active + adaptive_integral_terminal_sliding_mode_controller velocity_controllers/AdaptiveIntegralTerminalSlidingModeController active + thruster_allocation_matrix_controller thruster_allocation_matrix_controller/ThrusterAllocationMatrixController active + thruster_8_controller thruster_controllers/PolynomialThrustCurveController active + thruster_7_controller thruster_controllers/PolynomialThrustCurveController active + thruster_6_controller thruster_controllers/PolynomialThrustCurveController active + thruster_5_controller thruster_controllers/PolynomialThrustCurveController active + thruster_4_controller thruster_controllers/PolynomialThrustCurveController active + thruster_3_controller thruster_controllers/PolynomialThrustCurveController active + thruster_2_controller thruster_controllers/PolynomialThrustCurveController active + thruster_1_controller thruster_controllers/PolynomialThrustCurveController active ``` 3. Verify that the hardware interfaces have been properly loaded by opening @@ -46,57 +46,55 @@ applies a PWM command to the hardware interface. ```bash command interfaces - integral_sliding_mode_controller/rx/velocity [available] [unclaimed] - integral_sliding_mode_controller/ry/velocity [available] [unclaimed] - integral_sliding_mode_controller/rz/velocity [available] [unclaimed] - integral_sliding_mode_controller/x/velocity [available] [unclaimed] - integral_sliding_mode_controller/y/velocity [available] [unclaimed] - integral_sliding_mode_controller/z/velocity [available] [unclaimed] - thruster_1_controller/thruster_1_joint/effort [available] [claimed] - thruster_1_joint/effort [available] [claimed] - thruster_2_controller/thruster_2_joint/effort [available] [claimed] - thruster_2_joint/effort [available] [claimed] - thruster_3_controller/thruster_3_joint/effort [available] [claimed] - thruster_3_joint/effort [available] [claimed] - thruster_4_controller/thruster_4_joint/effort [available] [claimed] - thruster_4_joint/effort [available] [claimed] - thruster_5_controller/thruster_5_joint/effort [available] [claimed] - thruster_5_joint/effort [available] [claimed] - thruster_6_controller/thruster_6_joint/effort [available] [claimed] - thruster_6_joint/effort [available] [claimed] - thruster_7_controller/thruster_7_joint/effort [available] [claimed] - thruster_7_joint/effort [available] [claimed] - thruster_8_controller/thruster_8_joint/effort [available] [claimed] - thruster_8_joint/effort [available] [claimed] - thruster_allocation_matrix_controller/rx/effort [available] [claimed] - thruster_allocation_matrix_controller/ry/effort [available] [claimed] - thruster_allocation_matrix_controller/rz/effort [available] [claimed] - thruster_allocation_matrix_controller/x/effort [available] [claimed] - thruster_allocation_matrix_controller/y/effort [available] [claimed] - thruster_allocation_matrix_controller/z/effort [available] [claimed] + adaptive_integral_terminal_sliding_mode_controller/rx/velocity [available] [unclaimed] + adaptive_integral_terminal_sliding_mode_controller/ry/velocity [available] [unclaimed] + adaptive_integral_terminal_sliding_mode_controller/rz/velocity [available] [unclaimed] + adaptive_integral_terminal_sliding_mode_controller/x/velocity [available] [unclaimed] + adaptive_integral_terminal_sliding_mode_controller/y/velocity [available] [unclaimed] + adaptive_integral_terminal_sliding_mode_controller/z/velocity [available] [unclaimed] + thruster_1_controller/thruster_1_joint/effort [available] [claimed] + thruster_1_joint/pwm [available] [claimed] + thruster_2_controller/thruster_2_joint/effort [available] [claimed] + thruster_2_joint/pwm [available] [claimed] + thruster_3_controller/thruster_3_joint/effort [available] [claimed] + thruster_3_joint/pwm [available] [claimed] + thruster_4_controller/thruster_4_joint/effort [available] [claimed] + thruster_4_joint/pwm [available] [claimed] + thruster_5_controller/thruster_5_joint/effort [available] [claimed] + thruster_5_joint/pwm [available] [claimed] + thruster_6_controller/thruster_6_joint/effort [available] [claimed] + thruster_6_joint/pwm [available] [claimed] + thruster_7_controller/thruster_7_joint/effort [available] [claimed] + thruster_7_joint/pwm [available] [claimed] + thruster_8_controller/thruster_8_joint/effort [available] [claimed] + thruster_8_joint/pwm [available] [claimed] + thruster_allocation_matrix_controller/rx/effort [available] [claimed] + thruster_allocation_matrix_controller/ry/effort [available] [claimed] + thruster_allocation_matrix_controller/rz/effort [available] [claimed] + thruster_allocation_matrix_controller/x/effort [available] [claimed] + thruster_allocation_matrix_controller/y/effort [available] [claimed] + thruster_allocation_matrix_controller/z/effort [available] [claimed] state interfaces - rx/velocity - ry/velocity - rz/velocity - x/velocity - y/velocity - z/velocity ``` -4. State feedback can be provided to ISMC using the controller's state +4. State feedback can be provided to AITSMC using the controller's state interfaces or a topic. To demonstrate the topic-based interface, run the following command: ```bash +<<<<<<< HEAD ros2 topic pub /integral_sliding_mode_controller/system_state geometry_msgs/msg/Twist +======= + ros2 topic pub /adaptive_integral_terminal_sliding_mode_controller/system_state nav_msgs/msg/Odometry +>>>>>>> c8d798e (Update auv_control_demos configurations (#60)) ``` -5. The ISMC accepts reference commands sent over a topic or a reference +5. The AITSMC accepts reference commands sent over a topic or a reference interface. Run the following command in a separate terminal to provide the controller with a dummy reference input: ```bash - ros2 topic pub /integral_sliding_mode_controller/reference geometry_msgs/msg/Twist "{linear: {x: 0.5, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.2}}" + ros2 topic pub /adaptive_integral_terminal_sliding_mode_controller/reference geometry_msgs/msg/Twist "{linear: {x: 0.5, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.2}}" ``` 6. Each of the implemented controllers publishes controller state information to @@ -111,23 +109,23 @@ applies a PWM command to the hardware interface. ```bash header: stamp: - sec: 1710818346 - nanosec: 252453476 + sec: 1748936962 + nanosec: 907678344 frame_id: '' dof_state: name: thruster_2_joint - reference: -39.79632414479818 + reference: -63.32823451272053 feedback: 0.0 feedback_dot: 0.0 error: 0.0 error_dot: 0.0 - time_step: 0.033380572 + time_step: 0.033281545 output: 1134.0 ``` This output indicates that the controller chaining was successful. In particular, we can see that the velocity commands sent to the - `integral_sliding_mode_controller` are converted to thrust values, which is + `adaptive_integral_terminal_sliding_mode_controller` are converted to thrust values, which is reflected in the `thruster_controller` output. ## Files used for this demo @@ -136,14 +134,15 @@ applies a PWM command to the hardware interface. - [chaining.launch.py](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/blob/main/auv_control_demos/chained_controllers/launch/chaining.launch.py) - Controllers: - - [Integral Sliding Mode Controller](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/tree/main/velocity_controllers) + - [Adaptive Integral Terminal Sliding Mode Controller](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/tree/main/velocity_controllers) - [Thruster Allocation Matrix Controller](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/tree/main/thruster_allocation_matrix_controller) - [Polynomial Thrust Curve Controller](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/tree/main/thruster_controllers) - Controller Config: - - [chained_controllers.yaml](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/blob/main/auv_control_demos/chained_controllers/config/chained_controllers.yaml) + - [chained.controllers.yaml](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/blob/main/auv_control_demos/chained_controllers/config/chained_controllers.yaml) - Xacro Files: - - [chained_config.xacro](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/blob/main/auv_control_demos/chained_controllers/xacro/chained_config.xacro) - - [chained_ros2_control.xacro](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/blob/main/auv_control_demos/chained_controllers/xacro/chained_ros2_control.xacro) - - [chained_urdf.xacro](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/blob/main/auv_control_demos/chained_controllers/xacro/chained_urdf.xacro) + - [chained.config.xacro](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/blob/main/auv_control_demos/chained_controllers/xacro/chained.config.xacro) + - [chained.ros2_control.xacro](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/blob/main/auv_control_demos/chained_controllers/xacro/chained.ros2_control.xacro) + - [chained.urdf.xacro](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/blob/main/auv_control_demos/chained_controllers/xacro/chained.urdf.xacro) + - [chained.model.xacro](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/blob/main/auv_control_demos/chained_controllers/xacro/chained.urdf.xacro) diff --git a/auv_control_demos/chained_controllers/config/chained_controllers.yaml b/auv_control_demos/chained_controllers/config/chained_controllers.yaml index 9ffce54..8c61ded 100644 --- a/auv_control_demos/chained_controllers/config/chained_controllers.yaml +++ b/auv_control_demos/chained_controllers/config/chained_controllers.yaml @@ -2,8 +2,8 @@ controller_manager: ros__parameters: update_rate: 30 # Hz - integral_sliding_mode_controller: - type: velocity_controllers/IntegralSlidingModeController + adaptive_integral_terminal_sliding_mode_controller: + type: velocity_controllers/AdaptiveIntegralTerminalSlidingModeController thruster_allocation_matrix_controller: type: thruster_allocation_matrix_controller/ThrusterAllocationMatrixController @@ -32,24 +32,48 @@ controller_manager: thruster_8_controller: type: thruster_controllers/PolynomialThrustCurveController -integral_sliding_mode_controller: +adaptive_integral_terminal_sliding_mode_controller: ros__parameters: - use_external_measured_states: true reference_controller: thruster_allocation_matrix_controller + use_external_measured_states: true gains: - rho: 20.0 - lambda: 200.0 - Kp: [10.0, 10.0, 6.0, 3.0, 6.0, 10.0] - hydrodynamics: - mass: 13.5 - weight: 114.80 - buoyancy: 112.80 - moments_of_inertia: [0.16, 0.16, 0.16] - added_mass: [-5.50, -12.70, -14.60, -0.12, -0.12, -0.12] - center_of_buoyancy: [0.0, 0.0, 0.0] - center_of_gravity: [0.0, 0.0, 0.0] - linear_damping: [-4.03, -6.22, -5.18, -0.07, -0.07, -0.07] - quadratic_damping: [-18.18, -21.66, -36.99, -1.55, -1.55, -1.55] + lambda: 0.9 + x: + alpha: 12.0 + k1_min: 0.1 + k2: 0.4 + k_theta: 2.0 + mu: 0.01 + y: + alpha: 12.0 + k1_min: 0.1 + k2: 0.4 + k_theta: 2.0 + mu: 0.01 + z: + alpha: 12.0 + k1_min: 0.4 + k2: 0.8 + k_theta: 2.0 + mu: 0.01 + rx: + alpha: 0.5 + k1_min: 0.1 + k2: 0.4 + k_theta: 2.0 + mu: 0.01 + ry: + alpha: 12.0 + k1_min: 0.1 + k2: 1.0 + k_theta: 2.0 + mu: 0.01 + rz: + alpha: 12.0 + k1_min: 0.1 + k2: 0.4 + k_theta: 2.0 + mu: 0.01 thruster_allocation_matrix_controller: ros__parameters: diff --git a/auv_control_demos/chained_controllers/launch/chaining.launch.py b/auv_control_demos/chained_controllers/launch/chaining.launch.py index de4104b..ad4d79f 100644 --- a/auv_control_demos/chained_controllers/launch/chaining.launch.py +++ b/auv_control_demos/chained_controllers/launch/chaining.launch.py @@ -40,7 +40,7 @@ def generate_launch_description(): [ FindPackageShare("auv_control_demos"), "xacro", - "chained_config.xacro", + "chained.config.xacro", ] ), ] @@ -51,7 +51,7 @@ def generate_launch_description(): package="controller_manager", executable="spawner", arguments=[ - "integral_sliding_mode_controller", + "adaptive_integral_terminal_sliding_mode_controller", "--controller-manager", ["", "controller_manager"], ], diff --git a/auv_control_demos/chained_controllers/xacro/chained_config.xacro b/auv_control_demos/chained_controllers/xacro/chained.config.xacro similarity index 64% rename from auv_control_demos/chained_controllers/xacro/chained_config.xacro rename to auv_control_demos/chained_controllers/xacro/chained.config.xacro index 1e17ed6..6d1e771 100644 --- a/auv_control_demos/chained_controllers/xacro/chained_config.xacro +++ b/auv_control_demos/chained_controllers/xacro/chained.config.xacro @@ -2,8 +2,8 @@ - - - + + + diff --git a/auv_control_demos/chained_controllers/xacro/chained.model.xacro b/auv_control_demos/chained_controllers/xacro/chained.model.xacro new file mode 100644 index 0000000..e5a0d2d --- /dev/null +++ b/auv_control_demos/chained_controllers/xacro/chained.model.xacro @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/auv_control_demos/chained_controllers/xacro/chained_ros2_control.xacro b/auv_control_demos/chained_controllers/xacro/chained.ros2_control.xacro similarity index 53% rename from auv_control_demos/chained_controllers/xacro/chained_ros2_control.xacro rename to auv_control_demos/chained_controllers/xacro/chained.ros2_control.xacro index 95696d9..7f00692 100644 --- a/auv_control_demos/chained_controllers/xacro/chained_ros2_control.xacro +++ b/auv_control_demos/chained_controllers/xacro/chained.ros2_control.xacro @@ -7,42 +7,6 @@ false - - - 0.0 - - - - - - 0.0 - - - - - - 0.0 - - - - - - 0.0 - - - - - - 0.0 - - - - - - 0.0 - - - diff --git a/auv_control_demos/chained_controllers/xacro/chained.urdf.xacro b/auv_control_demos/chained_controllers/xacro/chained.urdf.xacro new file mode 100644 index 0000000..c74492c --- /dev/null +++ b/auv_control_demos/chained_controllers/xacro/chained.urdf.xacro @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/auv_control_demos/chained_controllers/xacro/chained_urdf.xacro b/auv_control_demos/chained_controllers/xacro/chained_urdf.xacro deleted file mode 100644 index d663453..0000000 --- a/auv_control_demos/chained_controllers/xacro/chained_urdf.xacro +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/auv_control_demos/individual_controller/README.md b/auv_control_demos/individual_controller/README.md index 34e2432..1615e36 100644 --- a/auv_control_demos/individual_controller/README.md +++ b/auv_control_demos/individual_controller/README.md @@ -22,7 +22,7 @@ to launch a single controller. The output should resemble: ```bash - integral_sliding_mode_controller[velocity_controllers/IntegralSlidingModeController] active + adaptive_integral_terminal_sliding_mode_controller velocity_controllers/AdaptiveIntegralTerminalSlidingModeController active ``` 3. Check that the hardware interfaces have been properly loaded by opening @@ -36,25 +36,25 @@ to launch a single controller. ```bash command interfaces - integral_sliding_mode_controller/rx/velocity [available] [unclaimed] - integral_sliding_mode_controller/ry/velocity [available] [unclaimed] - integral_sliding_mode_controller/rz/velocity [available] [unclaimed] - integral_sliding_mode_controller/x/velocity [available] [unclaimed] - integral_sliding_mode_controller/y/velocity [available] [unclaimed] - integral_sliding_mode_controller/z/velocity [available] [unclaimed] - rx/effort [available] [claimed] - ry/effort [available] [claimed] - rz/effort [available] [claimed] - x/effort [available] [claimed] - y/effort [available] [claimed] - z/effort [available] [claimed] + adaptive_integral_terminal_sliding_mode_controller/rx/velocity [available] [unclaimed] + adaptive_integral_terminal_sliding_mode_controller/ry/velocity [available] [unclaimed] + adaptive_integral_terminal_sliding_mode_controller/rz/velocity [available] [unclaimed] + adaptive_integral_terminal_sliding_mode_controller/x/velocity [available] [unclaimed] + adaptive_integral_terminal_sliding_mode_controller/y/velocity [available] [unclaimed] + adaptive_integral_terminal_sliding_mode_controller/z/velocity [available] [unclaimed] + rx/effort [available] [claimed] + ry/effort [available] [claimed] + rz/effort [available] [claimed] + x/effort [available] [claimed] + y/effort [available] [claimed] + z/effort [available] [claimed] state interfaces - rx/velocity - ry/velocity - rz/velocity - x/velocity - y/velocity - z/velocity + rx/velocity + ry/velocity + rz/velocity + x/velocity + y/velocity + z/velocity ``` 4. State feedback can be sent to the controller using a topic or the @@ -62,22 +62,26 @@ to launch a single controller. topic-based interface: ```bash +<<<<<<< HEAD ros2 topic pub /integral_sliding_mode_controller/system_state geometry_msgs/msg/Twist +======= + ros2 topic pub /adaptive_integral_terminal_sliding_mode_controller/system_state nav_msgs/msg/Odometry +>>>>>>> c8d798e (Update auv_control_demos configurations (#60)) ``` -5. The ISMC accepts reference commands sent via a topic or the controller's +5. The AITSMC accepts reference commands sent via a topic or the controller's reference interfaces. Run the following command in a separate terminal to provide the controller with a dummy reference input: ```bash - ros2 topic pub /integral_sliding_mode_controller/reference geometry_msgs/msg/Twist "{linear: {x: 0.5, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.2}}" + ros2 topic pub /adaptive_integral_terminal_sliding_mode_controller/reference geometry_msgs/msg/Twist "{linear: {x: 0.5, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.2}}" ``` 6. The current state of the controller can be observed on the `~/status` topic. For example, ```bash - ros2 topic echo /integral_sliding_mode_controller/status + ros2 topic echo /adaptive_integral_terminal_sliding_mode_controller/status ``` Should yield an output similar to the following: @@ -85,8 +89,8 @@ to launch a single controller. ```bash header: stamp: - sec: 1710817505 - nanosec: 673791332 + sec: 1748936374 + nanosec: 519996894 frame_id: '' dof_states: - name: x @@ -95,15 +99,15 @@ to launch a single controller. feedback_dot: 0.0 error: 0.5 error_dot: 0.0 - time_step: 0.004459243 - output: 102.03798479512044 + time_step: 0.033335234 + output: 176.02789696997084 - name: y reference: 0.0 feedback: 0.0 feedback_dot: 0.0 error: 0.0 error_dot: 0.0 - time_step: 0.004459243 + time_step: 0.033335234 output: 0.0 - name: z reference: 0.0 @@ -111,15 +115,15 @@ to launch a single controller. feedback_dot: 0.0 error: 0.0 error_dot: 0.0 - time_step: 0.004459243 - output: -2.0 + time_step: 0.033335234 + output: -3.034099999999995 - name: rx reference: 0.0 feedback: 0.0 feedback_dot: 0.0 error: 0.0 error_dot: 0.0 - time_step: 0.004459243 + time_step: 0.033335234 output: 0.0 - name: ry reference: 0.0 @@ -127,7 +131,7 @@ to launch a single controller. feedback_dot: 0.0 error: 0.0 error_dot: 0.0 - time_step: 0.004459243 + time_step: 0.033335234 output: 0.0 - name: rz reference: 0.2 @@ -135,11 +139,12 @@ to launch a single controller. feedback_dot: 0.0 error: 0.2 error_dot: 0.0 - time_step: 0.004459243 - output: 3.479864118728659 + time_step: 0.033335234 + output: 0.8183158752505321 + --- ``` - This output also demonstrates that the ISMC is functional. Any changes to + This output also demonstrates that the AITSMC is functional. Any changes to the reference command or state are reflected in the output of this topic. ### Files used for this demo @@ -148,12 +153,13 @@ to launch a single controller. - [individual.launch.py](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/blob/main/auv_control_demos/individual_controller/launch/individual.launch.py) - Controllers: - - [Integral Sliding Mode Controller](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/tree/main/velocity_controllers) + - [Adaptive Integral Terminal Sliding Mode Controller](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/tree/main/velocity_controllers) - Controller Config: - [individual_controller.yaml](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/blob/main/auv_control_demos/individual_controller/config/individual_controller.yaml) - Xacro Files: - - [individual_config.xacro](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/blob/main/auv_control_demos/individual_controller/xacro/individual_config.xacro) - - [individual_ros2_control.xacro](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/blob/main/auv_control_demos/individual_controller/xacro/individual_ros2_control.xacro) - - [individual_urdf.xacro](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/blob/main/auv_control_demos/individual_controller/xacro/individual_urdf.xacro) + - [individual.config.xacro](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/blob/main/auv_control_demos/individual_controller/xacro/individual.config.xacro) + - [individual.ros2_control.xacro](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/blob/main/auv_control_demos/individual_controller/xacro/individual.ros2_control.xacro) + - [individual.urdf.xacro](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/blob/main/auv_control_demos/individual_controller/xacro/individual.urdf.xacro) + - [individual.model.xacro](https://github.com/Robotic-Decision-Making-Lab/auv_controllers/blob/main/auv_control_demos/individual_controller/xacro/individual.model.xacro) diff --git a/auv_control_demos/individual_controller/config/individual_controller.yaml b/auv_control_demos/individual_controller/config/individual_controller.yaml index d5faa7f..a7f1177 100644 --- a/auv_control_demos/individual_controller/config/individual_controller.yaml +++ b/auv_control_demos/individual_controller/config/individual_controller.yaml @@ -2,23 +2,47 @@ controller_manager: ros__parameters: update_rate: 30 # Hz - integral_sliding_mode_controller: - type: velocity_controllers/IntegralSlidingModeController + adaptive_integral_terminal_sliding_mode_controller: + type: velocity_controllers/AdaptiveIntegralTerminalSlidingModeController -integral_sliding_mode_controller: +adaptive_integral_terminal_sliding_mode_controller: ros__parameters: use_external_measured_states: true gains: - rho: 20.0 - lambda: 200.0 - Kp: [10.0, 10.0, 6.0, 3.0, 6.0, 10.0] - hydrodynamics: - mass: 13.5 - weight: 114.80 - buoyancy: 112.80 - moments_of_inertia: [0.16, 0.16, 0.16] - added_mass: [-5.50, -12.70, -14.60, -0.12, -0.12, -0.12] - center_of_buoyancy: [0.0, 0.0, 0.0] - center_of_gravity: [0.0, 0.0, 0.0] - linear_damping: [-4.03, -6.22, -5.18, -0.07, -0.07, -0.07] - quadratic_damping: [-18.18, -21.66, -36.99, -1.55, -1.55, -1.55] + lambda: 0.9 + x: + alpha: 12.0 + k1_min: 0.1 + k2: 0.4 + k_theta: 2.0 + mu: 0.01 + y: + alpha: 12.0 + k1_min: 0.1 + k2: 0.4 + k_theta: 2.0 + mu: 0.01 + z: + alpha: 12.0 + k1_min: 0.4 + k2: 0.8 + k_theta: 2.0 + mu: 0.01 + rx: + alpha: 0.5 + k1_min: 0.1 + k2: 0.4 + k_theta: 2.0 + mu: 0.01 + ry: + alpha: 12.0 + k1_min: 0.1 + k2: 1.0 + k_theta: 2.0 + mu: 0.01 + rz: + alpha: 12.0 + k1_min: 0.1 + k2: 0.4 + k_theta: 2.0 + mu: 0.01 diff --git a/auv_control_demos/individual_controller/launch/individual.launch.py b/auv_control_demos/individual_controller/launch/individual.launch.py index 5d709f5..155ad85 100644 --- a/auv_control_demos/individual_controller/launch/individual.launch.py +++ b/auv_control_demos/individual_controller/launch/individual.launch.py @@ -38,7 +38,7 @@ def generate_launch_description(): [ FindPackageShare("auv_control_demos"), "xacro", - "individual_config.xacro", + "individual.config.xacro", ] ), ] @@ -74,7 +74,7 @@ def generate_launch_description(): package="controller_manager", executable="spawner", arguments=[ - "integral_sliding_mode_controller", + "adaptive_integral_terminal_sliding_mode_controller", "--controller-manager", ["", "controller_manager"], ], diff --git a/auv_control_demos/individual_controller/xacro/individual_config.xacro b/auv_control_demos/individual_controller/xacro/individual.config.xacro similarity index 62% rename from auv_control_demos/individual_controller/xacro/individual_config.xacro rename to auv_control_demos/individual_controller/xacro/individual.config.xacro index 0706330..ce0a688 100644 --- a/auv_control_demos/individual_controller/xacro/individual_config.xacro +++ b/auv_control_demos/individual_controller/xacro/individual.config.xacro @@ -2,8 +2,8 @@ - - - + + + diff --git a/auv_control_demos/individual_controller/xacro/individual.model.xacro b/auv_control_demos/individual_controller/xacro/individual.model.xacro new file mode 100644 index 0000000..e5a0d2d --- /dev/null +++ b/auv_control_demos/individual_controller/xacro/individual.model.xacro @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/auv_control_demos/individual_controller/xacro/individual_ros2_control.xacro b/auv_control_demos/individual_controller/xacro/individual.ros2_control.xacro similarity index 100% rename from auv_control_demos/individual_controller/xacro/individual_ros2_control.xacro rename to auv_control_demos/individual_controller/xacro/individual.ros2_control.xacro diff --git a/auv_control_demos/individual_controller/xacro/individual_urdf.xacro b/auv_control_demos/individual_controller/xacro/individual.urdf.xacro similarity index 100% rename from auv_control_demos/individual_controller/xacro/individual_urdf.xacro rename to auv_control_demos/individual_controller/xacro/individual.urdf.xacro diff --git a/auv_control_demos/package.xml b/auv_control_demos/package.xml index e43b061..8394233 100644 --- a/auv_control_demos/package.xml +++ b/auv_control_demos/package.xml @@ -2,9 +2,14 @@ auv_control_demos +<<<<<<< HEAD 0.0.1 Example package that includes demos for using auv_controllers in individual and chained modes +======= + 0.2.1 + Example package that includes demos for using auv_controllers in individual and chained modes +>>>>>>> c8d798e (Update auv_control_demos configurations (#60)) Colin Mitchell Everardo Gonzalez diff --git a/auv_control_msgs/CHANGELOG.md b/auv_control_msgs/CHANGELOG.md new file mode 100644 index 0000000..bf7ce60 --- /dev/null +++ b/auv_control_msgs/CHANGELOG.md @@ -0,0 +1,15 @@ +# Changelog for package auv_control_msgs + +## 0.2.1 (2025-06-03) + +## 0.2.0 (2025-05-03) + +- Implements the EndEffectorTrajectory message +- Implements the EndEffectorTrajectoryPoint message +- Implements the EndEffectorTrajectoryControllerState message +- Adds the FollowEndEffectorTrajectory action + +## 0.1.0 (2025-04-27) + +- Implements the IKControllerStateStamped message to support the new IK +controller diff --git a/auv_control_msgs/package.xml b/auv_control_msgs/package.xml index 5ee32cb..52531f6 100644 --- a/auv_control_msgs/package.xml +++ b/auv_control_msgs/package.xml @@ -2,7 +2,11 @@ auv_control_msgs +<<<<<<< HEAD 0.0.1 +======= + 0.2.1 +>>>>>>> c8d798e (Update auv_control_demos configurations (#60)) Custom messages for AUV controllers Rakesh Vivekanandan diff --git a/auv_controllers/CHANGELOG.md b/auv_controllers/CHANGELOG.md new file mode 100644 index 0000000..c868f9e --- /dev/null +++ b/auv_controllers/CHANGELOG.md @@ -0,0 +1,19 @@ +# Changelog for package auv_controllers + +## 0.2.1 (2025-06-03) + +- Fixes the auv_control_demos configurations + +## 0.2.0 (2025-05-03) + +- Adds the end effector trajectory controller + +## 0.1.0 (2025-04-27) + +- Adds the adaptive integral terminal sliding mode controller +- Adds the task priority IK solver +- Adds the IK whole-body controller +- Adds the odom topic sensor +- Adds the controller_common package +- Adds the Gazebo passthrough thruster controller +- Adds the thruster rotation rate controller diff --git a/auv_controllers/package.xml b/auv_controllers/package.xml index 53a9e8f..a2a9c2a 100644 --- a/auv_controllers/package.xml +++ b/auv_controllers/package.xml @@ -3,7 +3,11 @@ auv_controllers +<<<<<<< HEAD 0.0.1 +======= + 0.2.1 +>>>>>>> c8d798e (Update auv_control_demos configurations (#60)) Meta package for auv_controllers Evan Palmer diff --git a/controller_common/CHANGELOG.md b/controller_common/CHANGELOG.md new file mode 100644 index 0000000..9b65e0f --- /dev/null +++ b/controller_common/CHANGELOG.md @@ -0,0 +1,11 @@ +# Changelog for package controller_common + +## 0.2.1 (2025-06-03) + +## 0.2.0 (2025-05-03) + +- Adds the common::math::isclose method for comparing doubles + +## 0.1.0 (2025-04-27) + +- Ports reset message functions and error calculation to a common API diff --git a/controller_common/package.xml b/controller_common/package.xml new file mode 100644 index 0000000..1ca0cb1 --- /dev/null +++ b/controller_common/package.xml @@ -0,0 +1,26 @@ + + + + + controller_common + 0.2.1 + Common interfaces for controllers used in this project + + Evan Palmer + MIT + + https://github.com/Robotic-Decision-Making-Lab/auv_controllers.git + https://github.com/Robotic-Decision-Making-Lab/auv_controllers/issues + + Evan Palmer + + ament_cmake + + rclcpp + geometry_msgs + nav_msgs + + + ament_cmake + + diff --git a/end_effector_trajectory_controller/CHANGELOG.md b/end_effector_trajectory_controller/CHANGELOG.md new file mode 100644 index 0000000..a30279d --- /dev/null +++ b/end_effector_trajectory_controller/CHANGELOG.md @@ -0,0 +1,7 @@ +# Changelog for package controller_common + +## 0.2.1 (2025-06-03) + +## 0.2.0 (2025-05-03) + +- Implements the end_effector_trajectory_controller diff --git a/end_effector_trajectory_controller/include/end_effector_trajectory_controller/end_effector_trajectory_controller.hpp b/end_effector_trajectory_controller/include/end_effector_trajectory_controller/end_effector_trajectory_controller.hpp new file mode 100644 index 0000000..8b513fe --- /dev/null +++ b/end_effector_trajectory_controller/include/end_effector_trajectory_controller/end_effector_trajectory_controller.hpp @@ -0,0 +1,139 @@ +// Copyright 2025, Evan Palmer +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +#pragma once + +#include + +#include "auv_control_msgs/action/follow_end_effector_trajectory.hpp" +#include "auv_control_msgs/msg/end_effector_trajectory_controller_state.hpp" +#include "controller_common/common.hpp" +#include "controller_interface/controller_interface.hpp" +#include "end_effector_trajectory_controller/trajectory.hpp" +#include "rclcpp/rclcpp.hpp" +#include "rclcpp_action/server.hpp" +#include "realtime_tools/realtime_buffer.hpp" +#include "realtime_tools/realtime_publisher.hpp" +#include "realtime_tools/realtime_server_goal_handle.hpp" +#include "tf2/exceptions.hpp" +#include "tf2_ros/buffer.h" +#include "tf2_ros/transform_listener.h" + +// auto-generated by generate_parameter_library +#include + +namespace end_effector_trajectory_controller +{ + +class EndEffectorTrajectoryController : public controller_interface::ControllerInterface +{ +public: + EndEffectorTrajectoryController() = default; + + auto on_init() -> controller_interface::CallbackReturn override; + + // NOLINTNEXTLINE(modernize-use-nodiscard) + auto command_interface_configuration() const -> controller_interface::InterfaceConfiguration override; + + // NOLINTNEXTLINE(modernize-use-nodiscard) + auto state_interface_configuration() const -> controller_interface::InterfaceConfiguration override; + + auto on_configure(const rclcpp_lifecycle::State & previous_state) -> controller_interface::CallbackReturn override; + + auto on_activate(const rclcpp_lifecycle::State & previous_state) -> controller_interface::CallbackReturn override; + + auto update(const rclcpp::Time & time, const rclcpp::Duration & period) -> controller_interface::return_type override; + +protected: + auto update_parameters() -> void; + + auto configure_parameters() -> controller_interface::CallbackReturn; + + auto update_end_effector_state() -> controller_interface::return_type; + + [[nodiscard]] auto validate_trajectory(const auv_control_msgs::msg::EndEffectorTrajectory & trajectory) const -> bool; + + // controller state + using ControllerState = auv_control_msgs::msg::EndEffectorTrajectoryControllerState; + std::shared_ptr> controller_state_pub_; + std::unique_ptr> rt_controller_state_pub_; + + // the end effector states can be captured in one of three ways: + // 1. using the topic interface - when available, this is preferred over the tf2 interface + // 2. using the state interfaces - this is the default, but often not available + // 3. using tf2 - this is the most common interface, but requires a transform to be published and is not as robust + realtime_tools::RealtimeBuffer end_effector_state_; + std::shared_ptr> end_effector_state_sub_; + + std::unique_ptr tf_buffer_; + std::unique_ptr tf_listener_; + + // the end effector trajectories can be set using either the topic or action server + // the action server is preferred and easier to integrate into state-machines/behavior trees, but can be a bit + // cumbersome to interface with. on the other hand, the topic interface is easier to use, but doesn't integrate + // well with high-level coordinators + realtime_tools::RealtimeBuffer rt_trajectory_; + std::shared_ptr> trajectory_sub_; + + using FollowTrajectory = auv_control_msgs::action::FollowEndEffectorTrajectory; + using RealtimeGoalHandle = realtime_tools::RealtimeServerGoalHandle; + using RealtimeGoalHandlePtr = std::shared_ptr; + using RealtimeGoalHandleBuffer = realtime_tools::RealtimeBuffer; + + std::shared_ptr> action_server_; + RealtimeGoalHandleBuffer rt_active_goal_; + realtime_tools::RealtimeBuffer rt_goal_in_progress_; + std::shared_ptr goal_handle_timer_; + std::chrono::nanoseconds action_monitor_period_ = std::chrono::nanoseconds(50000000); // 50ms + + realtime_tools::RealtimeBuffer rt_first_sample_; // used to sample the trajectory for the first time + realtime_tools::RealtimeBuffer rt_holding_position_; // used to hold the current end effector pose + + // the update period is used to sample the "next" trajectory point + rclcpp::Duration update_period_{0, 0}; + + std::shared_ptr param_listener_; + end_effector_trajectory_controller::Params params_; + + // error tolerances + // the default tolerances are extracted from the parameters and applied when the action interface is not used + // if the action interface is being used, then the tolerances set in the goal are applied + double default_path_tolerance_, default_goal_tolerance_; + realtime_tools::RealtimeBuffer rt_goal_tolerance_, rt_path_tolerance_; + + std::vector dofs_; + std::size_t n_dofs_; + + rclcpp::Logger logger_{rclcpp::get_logger("end_effector_trajectory_controller")}; + +private: + template + auto write_command(T & interfaces, const geometry_msgs::msg::Pose & command) -> void + { + const std::vector vec = common::messages::to_vector(command); + for (const auto & [i, dof] : std::views::enumerate(dofs_)) { + if (!interfaces[i].set_value(vec[i])) { + RCLCPP_WARN(logger_, "Failed to set command for joint %s", dof.c_str()); // NOLINT + } + } + } +}; + +} // namespace end_effector_trajectory_controller diff --git a/end_effector_trajectory_controller/package.xml b/end_effector_trajectory_controller/package.xml new file mode 100644 index 0000000..3cc36fc --- /dev/null +++ b/end_effector_trajectory_controller/package.xml @@ -0,0 +1,37 @@ + + + + + end_effector_trajectory_controller + 0.2.1 + End effector trajectory tracking controller for UVMS control + + Evan Palmer + MIT + + https://github.com/Robotic-Decision-Making-Lab/auv_controllers.git + https://github.com/Robotic-Decision-Making-Lab/auv_controllers/issues + + Evan Palmer + + ament_cmake + eigen3_cmake_module + + eigen + rclcpp + ros2_control + controller_interface + hardware_interface + rclcpp_lifecycle + generate_parameter_library + control_msgs + geometry_msgs + controller_common + auv_control_msgs + rclcpp_action + lifecycle_msgs + + + ament_cmake + + diff --git a/ik_solvers/CHANGELOG.md b/ik_solvers/CHANGELOG.md new file mode 100644 index 0000000..b829884 --- /dev/null +++ b/ik_solvers/CHANGELOG.md @@ -0,0 +1,12 @@ +# Changelog for package ik_solvers + +## 0.2.1 (2025-06-03) + +## 0.2.0 (2025-05-03) + +- Replace instances of `Eigen::Affine3d` with `Eigen::Isometry3d` + +## 0.1.0 (2025-04-27) + +- Implements a task priority IK solver with support for end effector pose +tracking and joint limits diff --git a/ik_solvers/package.xml b/ik_solvers/package.xml new file mode 100644 index 0000000..d788e50 --- /dev/null +++ b/ik_solvers/package.xml @@ -0,0 +1,31 @@ + + + + + ik_solvers + 0.2.1 + Inverse kinematics solvers used for whole-body control + + Evan Palmer + MIT + + https://github.com/Robotic-Decision-Making-Lab/auv_controllers.git + https://github.com/Robotic-Decision-Making-Lab/auv_controllers/issues + + Evan Palmer + + ament_cmake + eigen3_cmake_module + + eigen + rclcpp + pluginlib + rclcpp_lifecycle + trajectory_msgs + generate_parameter_library + pinocchio + + + ament_cmake + + diff --git a/thruster_allocation_matrix_controller/CHANGELOG.md b/thruster_allocation_matrix_controller/CHANGELOG.md new file mode 100644 index 0000000..a6f27e5 --- /dev/null +++ b/thruster_allocation_matrix_controller/CHANGELOG.md @@ -0,0 +1,10 @@ +# Changelog for package thruster_allocation_matrix_controller + +## 0.2.1 (2025-06-03) + +## 0.2.0 (2025-05-03) + +## 0.1.0 (2025-04-27) + +- Updates the minimum CMake version to CMake 23 and upgrades the API to use +C++ 23 diff --git a/thruster_allocation_matrix_controller/package.xml b/thruster_allocation_matrix_controller/package.xml index 1a53e28..c9a9a23 100644 --- a/thruster_allocation_matrix_controller/package.xml +++ b/thruster_allocation_matrix_controller/package.xml @@ -3,7 +3,11 @@ thruster_allocation_matrix_controller +<<<<<<< HEAD 0.0.2 +======= + 0.2.1 +>>>>>>> c8d798e (Update auv_control_demos configurations (#60)) Thruster allocation matrix controller used to convert wrench commands into thrust commands Evan Palmer diff --git a/thruster_controllers/CHANGELOG.md b/thruster_controllers/CHANGELOG.md new file mode 100644 index 0000000..71b3e38 --- /dev/null +++ b/thruster_controllers/CHANGELOG.md @@ -0,0 +1,12 @@ +# Changelog for package thruster_controllers + +## 0.2.1 (2025-06-03) + +## 0.2.0 (2025-05-03) + +## 0.1.0 (2025-04-27) + +- Implements the Gazebo passthrough thruster controller +- Implements the thruster rotation rate controller +- Updates the API to use C++ 23 +- Bumps the minimum CMake version to CMake 23 diff --git a/thruster_controllers/package.xml b/thruster_controllers/package.xml index 6060d89..8836b62 100644 --- a/thruster_controllers/package.xml +++ b/thruster_controllers/package.xml @@ -2,7 +2,11 @@ thruster_controllers +<<<<<<< HEAD 0.0.1 +======= + 0.2.1 +>>>>>>> c8d798e (Update auv_control_demos configurations (#60)) A collection of thruster controllers for AUV control ros diff --git a/topic_sensors/CHANGELOG.md b/topic_sensors/CHANGELOG.md new file mode 100644 index 0000000..3b39871 --- /dev/null +++ b/topic_sensors/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog for package topic_sensors + +## 0.2.1 (2025-06-03) + +## 0.2.0 (2025-05-03) + +## 0.1.0 (2025-04-27) + +- Implements an nav_msgs/Odometry topic sensor diff --git a/topic_sensors/package.xml b/topic_sensors/package.xml new file mode 100644 index 0000000..19a21c9 --- /dev/null +++ b/topic_sensors/package.xml @@ -0,0 +1,33 @@ + + + + + topic_sensors + 0.2.1 + Sensor plugins used to write ROS 2 messages to state interfaces + + Evan Palmer + MIT + + https://github.com/Robotic-Decision-Making-Lab/auv_controllers.git + https://github.com/Robotic-Decision-Making-Lab/auv_controllers/issues + + Akshaya Agrawal + Evan Palmer + + ament_cmake + + rclcpp + ros2_control + pluginlib + hardware_interface + nav_msgs + geometry_msgs + generate_parameter_library + controller_common + message_transforms + + + ament_cmake + + diff --git a/velocity_controllers/CHANGELOG.md b/velocity_controllers/CHANGELOG.md new file mode 100644 index 0000000..16f54a0 --- /dev/null +++ b/velocity_controllers/CHANGELOG.md @@ -0,0 +1,17 @@ +# Changelog for package velocity_controllers + +## 0.2.1 (2025-06-03) + +## 0.2.0 (2025-05-03) + +## 0.1.0 (2025-04-27) + +- Updates the API to use C++ 23 +- Bumps the minimum CMake version to CMake 23 +- Implements the adaptive integral terminal sliding mode controller +- Changes the integral sliding mode controller external state message interface +from the geometry_msgs/TwistStamped message type to nav_msgs/Odometry +- Makes the integral sliding mode controller joint names configurable for users +that want to integrate prefixes into the command/state interfaces +- Updates the integral sliding mode controller to use the latest hydrodynamics +parsing capabilities diff --git a/velocity_controllers/package.xml b/velocity_controllers/package.xml index e4fe0c8..4044097 100644 --- a/velocity_controllers/package.xml +++ b/velocity_controllers/package.xml @@ -3,7 +3,11 @@ velocity_controllers +<<<<<<< HEAD 0.0.1 +======= + 0.2.1 +>>>>>>> c8d798e (Update auv_control_demos configurations (#60)) A collection of velocity controllers for underwater vehicles Evan Palmer diff --git a/whole_body_controllers/CHANGELOG.md b/whole_body_controllers/CHANGELOG.md new file mode 100644 index 0000000..2fdcbb6 --- /dev/null +++ b/whole_body_controllers/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog for package whole_body_controllers + +## 0.2.1 (2025-06-03) + +## 0.2.0 (2025-05-03) + +- Replaces instances of `Eigen::Affine3d` with `Eigen::Isometry3d` +- Fixes a bug in the ik_controller reference interfaces where the values sent + to the reference interfaces themselves (i.e., not as a message) were not + being transformed into the appropriate coordinate frame for Pinocchio. + +## 0.1.0 (2025-04-27) + +- Implements an IK controller for controlling a UVMS with a single manipulator diff --git a/whole_body_controllers/package.xml b/whole_body_controllers/package.xml new file mode 100644 index 0000000..6342cea --- /dev/null +++ b/whole_body_controllers/package.xml @@ -0,0 +1,37 @@ + + + + + whole_body_controllers + 0.2.1 + Whole-body controllers for underwater vehicle manipulator systems + + Evan Palmer + MIT + + https://github.com/Robotic-Decision-Making-Lab/auv_controllers.git + https://github.com/Robotic-Decision-Making-Lab/auv_controllers/issues + + Evan Palmer + + ament_cmake + + rclcpp + ros2_control + pluginlib + controller_interface + hardware_interface + rclcpp_lifecycle + generate_parameter_library + control_msgs + pinocchio + nav_msgs + message_transforms + controller_common + ik_solvers + auv_control_msgs + + + ament_cmake + +