Skip to content

Implement TPIK controller and AITSMC #51

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 158 commits into from
Apr 27, 2025
Merged

Implement TPIK controller and AITSMC #51

merged 158 commits into from
Apr 27, 2025

Conversation

evan-palmer
Copy link
Contributor

@evan-palmer evan-palmer commented Apr 2, 2025

Changes Made

NOTE: This PR will not be backported to Humble.

This is a large PR with several key changes:

  1. Implemented a inverse kinematics controller for control of UVMS
  2. Implemented the task priority IK solver for use in the IK controller
  3. Implemented an adaptive integral terminal sliding mode controller as an alternative to the integral sliding mode controller
  4. Upgraded to C++ 23
  5. Updated the issue templates to support the latest GitHub template syntax
  6. Semi-ported the Odom sensor that @JBVAkshaya implemented in ardusub_driver!29
  7. Added a few thruster controllers to simplify simulation integration

Associated Issues

Testing

Testing has been does in simulation with Blue. A UVMS demo has been added to blue show IK controller usage.

@evan-palmer evan-palmer marked this pull request as ready for review April 26, 2025 06:43
Copy link
Contributor Author

@evan-palmer evan-palmer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A general comment to add is to be consistent about std::format usage in logs. I think the best place to use it, is where it simplifies/shortens the log code

@evan-palmer
Copy link
Contributor Author

The remaining errors are all a consequence of me using C++ 23 features. Those errors do not need to be fixed.

@evan-palmer evan-palmer merged commit b9ada28 into main Apr 27, 2025
2 of 3 checks passed
@evan-palmer evan-palmer deleted the dev-wbc branch April 27, 2025 08:22
mergify bot pushed a commit that referenced this pull request Apr 27, 2025
* Updated ISMC to use twist stamped state message and refactored realtime buffers to copy message instead of pointer

* starting port of tpik control

* Continued work on TPIK controller

* Started implementing task priority IK solver

* Implemented base tpik solver

* Finished initial implementation of constraints and task priority solver

* Cleanup

* Cleanup and starting to integrate pinocchio

* missing change

* Continuing to integrate pinocchio for jacobians

* bedtime

* actually bedtime now

* Refactored solver

* Finished initial version - starting build

* gym time baby

* solver compile working

* Started ik controller

* Wrote initial version of ik controller

* gym time baby

* ok actually gym time now

* ik controller compiles

* Remove state subscriber

* Added odom sensorg

* Added topic sensor readme

* Updated to latest version of ros2_control api

* Update cmakelists files

* updated dockerfile

* added structure for aitsmc

* Started aitsmc implementation

* Implemented bare bones version of aitsmc

* Initial version of AITSMC compiles

* cleanup

* Cleanup

* Update issue templates

* Started updating readmes

* name spell error

* fixed ismc

* Switch to alternative version of jacobian for pose constraint

* 3 hours of my life spent on this freaking bug

* use updated hydrodynamics api

* updates

* Fix topic sensor

* debugging sensor

* bleh

* Fixed segfault in odom sensor

* quick hack

* quick hack

* Start updated ismc and integrated updated hydrodynamics api

* finish integrating updated hydrodynamics api

* fix transient local

* Fix bugs in model parsing

* update description topic

* remove initial adaptive gain value

* fix qos in aitsmc

* Fixed disturbance rejection torque

* added angular velocity thruster controller

* remove deadband from force model

* fix controller registration

* Fix nan thruster bug

* fix bug in controller state publishers

* reintroduce cleaned up external state interface for velocity controllers

* Added deadband to rate controller

* rename parameter

* Added a gazebo passthrough thruster controller

* test full urdf and start debugging tpik controller

* adding docs to thruster controllers

* testing math

* updated thruster controller docs

* testing math mode

* update controller docs

* update controller docs

* update controller docs

* Added controller state publisher to aitsmc

* update controller docs

* potential fix for controller manager

* Fix linking bug

* debugging wbc

* cleanup and debugging wbc

* Fixes to wbc

* Fix solver export

* split ik solvers into new package

* bleh

* pain

* testing

* revert

* debugging ik solvers

* adding tests for tpik controller

* move urdf file

* remove solver testing package

* debug tpik solver

* started moving ik solver examples to demos dir

* add print to check aitsmc adaptation

* testing

* bleh

* testing

* bleh

* bleh

* bleh

* bleh

* bug fix

* bug fix

* bug fix

* bug fix

* bug fix

* bleh

* aitsmc debugged

* fix parameters

* pluginlib export not working again ahhhhh

* fix pluginlib export

* fix command interfaces

* cleanup + cleanup params files

* missing quotation mark

* fix segfault

* cleanup

* cleanup

* fix bug in state values save

* revert change

* Fix parameter namespacing

* pain

* Attempting frame error fix

* Fixed q order in update state values

* potential fix

* dumb

* Refactoring ik controller

* refactored ik controller

* fix resize bug

* silly bug

* more bug fixes

* fixed ik controller

* cleanup

* Removed testing script

* debugging

* Fixed state update bug

* WORKING STATE

* testing ik_solver lib in whole_body_controllers

* Revert and cleanup

* getting ready for PR

* docs

* grammar

* Add support to auto transform messages using the odom sensor

* forgot to update build

* fix broken wbc build

* fix pinv bug

* fix bug in aitsmc

* done

* precommit

* address pr comments

* cleanup

* change no solution to debug log

* remove unused dependency

* try fixing ci pipeline

* try c++ 20

* fix implicit cast to int

* clang tidy fixes

* format

* Added changelogs and bumped version numbers

* spelling

(cherry picked from commit b9ada28)

# Conflicts:
#	README.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment