Skip to content

Adding End Effector SE(3) Targets #429

Merged
kshaji3 merged 13 commits into
masterfrom
kshaji3_steap
Jun 23, 2026
Merged

Adding End Effector SE(3) Targets #429
kshaji3 merged 13 commits into
masterfrom
kshaji3_steap

Conversation

@kshaji3

@kshaji3 kshaji3 commented Jun 22, 2026

Copy link
Copy Markdown
Collaborator

This PR adds the ability to specify an end effector SE(3) position target (previously it was limited to only position, so this adds orientation) with the goal of being mainly applicable to manipulation platforms (such as that used in https://www.bar-lab.org/).

  • Also added a unit test for this based on BAR Lab code in the Python wrapper.

@kshaji3 kshaji3 requested a review from dellaert June 22, 2026 19:08
@dellaert

Copy link
Copy Markdown
Member

It's late here, so I won't do a full review tonight, but here is one comment:

com_T_goal = gts.Pose3()              # identity: constrain the link frame itself (set TCP offset here)
  1. naming convention we use is to_T_from or, if transforms from frame B -> A, aTb
  2. same for rotations to_R_from, aRb
  3. always gtsam, never gts :-)

Maybe do a quick pass so I don't stumble on those guys tomorrow :-).

Also, why not convert that Python as a test? That would be a good test for the wrapper.

@kshaji3

kshaji3 commented Jun 23, 2026

Copy link
Copy Markdown
Collaborator Author

This should have addressed all three of those notes :)

@dellaert

Copy link
Copy Markdown
Member

Still in meetings all day - asked copilot review which will give me over view and possibly actionable comments. Please see conventions in .github/copilot-instructions.md, which it uses to review new code

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

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 extends GTDynamics’ kinematics goal interface to support full SE(3) end-effector pose targets (including orientation), with an option to enforce pose goals as hard equality constraints, and adds BAR Lab–based test coverage (C++ + Python) plus a new example URDF.

Changes:

  • Add SE(3) pose-goal residuals (PoseGoalConstraint) and a corresponding soft cost factor (PoseGoalFactor), and wire pose goals into IK either as soft priors or hard constraints.
  • Add BAR Lab manipulator/gantry URDF model and C++ tests exercising pose-goal IK with augmented Lagrangian hard constraints.
  • Update Python wrapper + tests to exercise pose-goal IK from the Python API.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
python/tests/test_forward_kinematics.py Removed in favor of a consolidated forward/inverse kinematics test file.
python/tests/test_forward_inv_kinematics.py Adds Python tests for FK factor + pose-goal IK round-trip (but currently has a keying bug in PoseGoals).
models/urdfs/bar_lab.urdf Adds BAR Lab gantry + manipulator URDF used by new tests.
gtdynamics/kinematics/tests/testKinematicsSlice.cpp Adds BAR Lab pose-goal IK tests (hard constraints) and a small TODO comment.
gtdynamics/kinematics/tests/testEndEffFactor.cpp Adds unit tests for the new pose-goal factor/constraint residual and Jacobians.
gtdynamics/kinematics/KinematicsSlice.cpp Implements pose-goal constraints path and adds pose_goals_as_constraints option for slice IK.
gtdynamics/kinematics/Kinematics.h Introduces/clarifies PoseGoal semantics (CoM-to-goal offset + world goal) and adds API for pose-goal constraints + IK option flag.
gtdynamics/kinematics/endEffGoalFactor.h New header defining PoseGoalConstraint expression and PoseGoalFactor.
gtdynamics.i Exposes PoseGoal, Kinematics::inverse(... PoseGoals ...), and PoseGoalFactor to the Python wrapper.

Comment thread python/tests/test_forward_inv_kinematics.py Outdated
Comment thread python/tests/test_forward_inv_kinematics.py Outdated
Comment thread models/urdfs/bar_lab.urdf Outdated
kshaji3 and others added 3 commits June 23, 2026 09:46
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

@dellaert dellaert left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM. CI fails, unrelated, but you could maybe fix it as well so board is green again

Comment thread gtdynamics/kinematics/Kinematics.h
@kshaji3 kshaji3 merged commit 6d5dd00 into master Jun 23, 2026
6 checks passed
@dellaert

Copy link
Copy Markdown
Member

Awesome! Please delete the branch after you merge

@kshaji3 kshaji3 deleted the kshaji3_steap branch June 23, 2026 23:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants