Skip to content

Adding a spline joint to the joint collection#2784

Open
MegMll wants to merge 96 commits intostack-of-tasks:develfrom
MegMll:topic/spline_joint
Open

Adding a spline joint to the joint collection#2784
MegMll wants to merge 96 commits intostack-of-tasks:develfrom
MegMll:topic/spline_joint

Conversation

@MegMll
Copy link
Copy Markdown
Collaborator

@MegMll MegMll commented Oct 10, 2025

Description

In this PR, we introduce the new spline joint to pinocchio. This implementation is based on the paper of Lee et al. available here

It allows to define a number of SE3 frames, that will define the movement and dynamics of the joint. It's very useful for biomechanics, but can be used in other applications.

To do

  • Check everything after rebase
  • Finish the min/max knot vectors (still need to update constructor to add min/max limits)
  • add multiple knot vector computation
  • Fit spline algorithm
  • Fix ubuntu CI

Future

Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

👋 Hi,
This is a reminder message to assign an extra build label to this Pull Request if needed.
By default, this PR will be build with minimal build options (URDF support and Python bindings)
The possible extra labels are:

  • build_collision (build Pinocchio with coal support)
  • build_casadi (build Pinocchio with CasADi support)
  • build_autodiff (build Pinocchio with CppAD support)
  • build_codegen (build Pinocchio with CppADCodeGen support)
  • build_extra (build Pinocchio with extra algorithms)
  • build_mpfr (build Pinocchio with Boost.Multiprecision support)
  • build_sdf (build Pinocchio with SDF parser)
  • build_accelerate (build Pinocchio with APPLE Accelerate framework support)
  • build_all (build Pinocchio with ALL the options stated above)

Thanks.
The Pinocchio development team.

@pgraverdy pgraverdy added the pr status wip To not review in weekly meeting label Oct 13, 2025
@MegMll MegMll force-pushed the topic/spline_joint branch from f464bc1 to 660af02 Compare October 13, 2025 11:43
Comment thread include/pinocchio/src/multibody/joint/joint-collection.hxx
Comment thread include/pinocchio/multibody/joint/joint-spline.hpp Outdated
Comment thread include/pinocchio/multibody/joint/joint-spline.hpp Outdated
Comment thread include/pinocchio/multibody/joint/joint-spline.hpp Outdated
Comment thread include/pinocchio/multibody/joint/joint-spline.hpp Outdated
Comment thread include/pinocchio/multibody/joint/joint-spline.hpp Outdated
Comment thread include/pinocchio/multibody/joint/joint-spline.hpp Outdated
Comment thread include/pinocchio/multibody/joint/joint-spline.hpp Outdated
Comment thread include/pinocchio/src/serialization/joints-data.hxx
Comment thread include/pinocchio/src/serialization/joints-model.hxx
Comment thread include/pinocchio/algorithm/splines.hpp
Comment thread include/pinocchio/src/parsers/graph/graph-visitor.hxx
Comment thread src/parsers/graph/model-graph-algo.cpp Outdated
Comment thread unittest/casadi/joints.cpp Outdated
Comment thread unittest/casadi/joints.cpp Outdated
Comment thread unittest/cppad/joints.cpp Outdated
Comment thread unittest/finite-differences.cpp Outdated
Comment thread unittest/casadi/joints.cpp Outdated
Comment thread unittest/finite-differences.cpp Outdated
Comment thread unittest/joint-generic.cpp
Comment thread unittest/joint-generic.cpp Outdated
Comment thread unittest/joint-spline.cpp Outdated
Comment thread unittest/joint-spline.cpp Outdated
Comment thread include/pinocchio/src/multibody/joint/joint-spline.hxx
Comment thread include/pinocchio/src/multibody/joint/joint-spline.hxx
@jorisv jorisv force-pushed the topic/spline_joint branch from 2e60ca8 to 096a5ec Compare November 26, 2025 10:22
Comment thread unittest/finite-differences.cpp Outdated
jorisv
jorisv previously requested changes Nov 27, 2025
Comment thread unittest/finite-differences.cpp Outdated
Comment thread unittest/joint-generic.cpp
@MegMll MegMll force-pushed the topic/spline_joint branch 2 times, most recently from d5ac733 to 75dacff Compare December 11, 2025 11:15
@florent-lamiraux
Copy link
Copy Markdown
Member

Please be aware that modifying the joint collection breaks the API.

@jorisv
Copy link
Copy Markdown
Contributor

jorisv commented Dec 12, 2025

@florent-lamiraux We are not considering adding a joint an API break.
If your code rely on JointCollection order or must handle all the joints inside it, please, create your own joint collection.

@MegMll MegMll marked this pull request as ready for review December 12, 2025 14:40
@MegMll MegMll force-pushed the topic/spline_joint branch from e15d6fb to 00bc40a Compare December 15, 2025 10:06
@Ipuch
Copy link
Copy Markdown
Contributor

Ipuch commented Apr 14, 2026

@MegMll and I were talking about this PR. As Megan left WILLOW and she is full time on other projects now, it's hard for her to pursue the debugging that this PR requires, and looking for why the tests were not passing. Does anyone would like to help and/or review this PR?

Here is the focused help, that would be appreciated and could unlock our next developments.

  • We don't know why window tests with python doesn't pass ?
  • We don't know why it compiles with MacOs Arm, but the test doesn't pass when executed ?

Let us know in which time frame anyone can help, before @MegMll totally loose track of what she had undertaken.

@jorisv
Copy link
Copy Markdown
Contributor

jorisv commented Apr 14, 2026

Hello @Ipuch,

Now we released pinocchio 4, I will probably be able to work again on this PR next month.
I will also check if there is some other engineer in the team able to work on it.

@MegMll MegMll force-pushed the topic/spline_joint branch from f60f2c7 to 025c789 Compare April 14, 2026 14:47
@MegMll MegMll dismissed jorisv’s stale review April 14, 2026 14:48

need to rcheck every test and put all the files in the right folder after rebase of pinocchio 4

@MegMll
Copy link
Copy Markdown
Collaborator Author

MegMll commented Apr 14, 2026

Okay i won't be available in May, but if i need to make some changes myself, i guess it can wait June, anyway

@Ipuch
Copy link
Copy Markdown
Contributor

Ipuch commented Apr 16, 2026

Thanks @MegMll for rebasing 👍

@MegMll
Copy link
Copy Markdown
Collaborator Author

MegMll commented Apr 17, 2026

To do

  • Finish the min/max knot vectors (still need to update constructor to add min/max limits)
  • Add multiple knot vector computation (open, closed ...)
  • Fit spline algorithm
  • Fix ubuntu CI
  • Redo changelog
  • precommit

@Ipuch
Copy link
Copy Markdown
Contributor

Ipuch commented Apr 23, 2026

@MegMll and @LucasJoseph pinocchio/algorithm/splines.hpp also need to be added into the sources.cmake

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.

5 participants