Skip to content

Conversation

@evan-palmer
Copy link
Member

Changes Made

This PR ports the end effector trajectory controller from Angler to this repository. The controller interpolates end effector motion plans using linear interpolation and spherical linear interpolation.

Associated Issues

Testing

Testing was done in Gazebo using Blue. The Blue documentation has been updated (in the PR that I don't feel like linking right now) to include a tutorial demonstrating how to use this feature.

@evan-palmer evan-palmer self-assigned this May 3, 2025
@evan-palmer evan-palmer requested a review from Copilot May 4, 2025 02:27
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR is porting the end effector trajectory controller from Angler to the repository while adding common utility functions and updating related changelogs.

  • Added documentation for the new end effector trajectory controller and modified README content.
  • Introduced a new utility function, common::math::isclose, along with its declarations and changelog updates.

Reviewed Changes

Copilot reviewed 37 out of 48 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
end_effector_trajectory_controller/README.md New documentation for the trajectory controller.
end_effector_trajectory_controller/LICENSE Added MIT license file.
controller_common/src/common.cpp Added implementation of the isclose function.
controller_common/include/controller_common/common.hpp Declared the isclose function with default tolerance values.
controller_common/CHANGELOG.md Updated changelog to include isclose.
auv_controllers/CHANGELOG.md Updated changelog to include the new controller.
auv_control_msgs/CHANGELOG.md Updated changelog with new messages and action.
auv_control_demos/CHANGELOG.md Changelog update with version bump.
README.md Updated global project README with enhanced descriptions.
Files not reviewed (11)
  • auv_control_demos/package.xml: Language not supported
  • auv_control_msgs/CMakeLists.txt: Language not supported
  • auv_control_msgs/action/FollowEndEffectorTrajectory.action: Language not supported
  • auv_control_msgs/msg/EndEffectorTrajectory.msg: Language not supported
  • auv_control_msgs/msg/EndEffectorTrajectoryControllerState.msg: Language not supported
  • auv_control_msgs/msg/EndEffectorTrajectoryPoint.msg: Language not supported
  • auv_control_msgs/msg/IKControllerStateStamped.msg: Language not supported
  • auv_control_msgs/package.xml: Language not supported
  • auv_controllers/package.xml: Language not supported
  • controller_common/package.xml: Language not supported
  • end_effector_trajectory_controller/CMakeLists.txt: Language not supported

{
return std::ranges::all_of(vec, [](double x) { return std::isnan(x); });
}

Copy link

Copilot AI May 4, 2025

Choose a reason for hiding this comment

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

[nitpick] Consider adding inline documentation for 'isclose' explaining the tolerance parameters and the rationale behind its implementation for clarity of usage.

Suggested change
/**
* @brief Compares two floating-point numbers for approximate equality.
*
* This function checks whether the difference between two numbers `a` and `b`
* is within a specified tolerance. The tolerance is determined by the formula:
* |a - b| <= atol + rtol * |b|
*
* @param a The first floating-point number.
* @param b The second floating-point number.
* @param rtol The relative tolerance. It scales with the magnitude of `b`.
* @param atol The absolute tolerance. It provides a fixed margin of error.
* @return true if the numbers are approximately equal, false otherwise.
*/

Copilot uses AI. Check for mistakes.
@evan-palmer evan-palmer merged commit d197fc7 into main May 4, 2025
2 of 3 checks passed
mergify bot pushed a commit that referenced this pull request May 4, 2025
* 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
@evan-palmer evan-palmer deleted the dev-ee-traj branch May 4, 2025 06:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement an end effector trajectory controller

2 participants