Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
35d19a7
feat(joint-ellipsoid)
Oct 20, 2025
88e7b4d
refactor(joint-ellipsoid): extra methods for S and Sdot
Oct 23, 2025
a0aed21
feat(joint-ellipsoid): bindings, model graphs
Oct 23, 2025
5f4c764
feat(joint-ellipsoid): extra utils for translations
Oct 29, 2025
477fd44
tests(joint-ellipsoid): add composite test
Oct 29, 2025
18ade9e
tests(joint-ellipsoid): Sdot as finite difference
Nov 3, 2025
f6629aa
test(joint-ellipsoid): model-graph
Nov 6, 2025
2e6de55
docs(model-graphs)
Nov 6, 2025
5b015be
clean(joint-ellipsoid): unused variables and warnings
Nov 6, 2025
6bf24b1
fix(joint-ellipsoid): binding python
Nov 6, 2025
0d7aca0
feat(joint-ellipsoid): extra docs for binding + S available .
Nov 7, 2025
25fe425
Add ellipsoid joint kinematics example script
LucasJoseph Nov 10, 2025
d0b5b91
exemple(joint-ellipsoid)
Nov 10, 2025
69d28e1
pre-commit
Nov 10, 2025
8247e72
Update include/pinocchio/multibody/joint/joint-ellipsoid.hpp
Ipuch Nov 12, 2025
2f78c8e
refactor(joint-ellipsoid): remove useless typename
Ipuch Nov 12, 2025
cb468cd
refactor(joint-ellipsoid): remove useless typenames
Ipuch Nov 12, 2025
324fc22
refactor(joint-ellipsoid): remove useless typenames
Ipuch Nov 12, 2025
1c89162
feat(joint-ellipsoid): computeBiais
Nov 13, 2025
84a34d8
Factorized data.M computation
LucasJoseph Nov 13, 2025
c497e6a
fix(joint-ellispoid) : compute_biais
Nov 13, 2025
1d14a09
refactor(joint-ellipsoid) : c instead of Sdot * qdot
Nov 13, 2025
5acc809
Move ComputeTranslations and ComputeTranslationVelocities to tests
LucasJoseph Nov 13, 2025
2c95cd2
Moved computeTranslationAccelerations to tests
LucasJoseph Nov 13, 2025
3cf5441
refactor(joint-ellipsoid) : Sdot computeMotionSubspaceDerivative in t…
Nov 13, 2025
36dad77
clean(joint-ellipsoid) no Sdot anymore.
Nov 13, 2025
d7105f7
doc(joint-ellipsoid)
Nov 13, 2025
764a0e4
tests(joint-ellipsoid): rnea vs aba isolated
Nov 13, 2025
97235d0
docs(joint-ellipsoid): changelog and readme
Nov 13, 2025
ee16242
precommit
Nov 13, 2025
fa20746
docs(joint-ellipsoid) - afeatures
Nov 13, 2025
bf23476
Update include/pinocchio/multibody/joint/joint-ellipsoid.hpp
Ipuch Nov 19, 2025
add7ffd
Update bindings/python/parsers/graph/expose-edges.cpp
Ipuch Nov 19, 2025
c186a48
review(@jorisv): docs and test
Nov 19, 2025
3d62589
scout(freeflyer docs)
Nov 19, 2025
63d012f
refactor(model-graph-algo): AddJointBetweenBodies
Nov 19, 2025
8697c01
doc(new joint): guide for developers.
Nov 26, 2025
bf4bd42
doc: Fix doxygen doc parsing
jorisv Nov 26, 2025
9283dee
core: Avoid cast build issue
jorisv Nov 26, 2025
0709bee
python: Remove redundant member definition
jorisv Nov 26, 2025
55b477d
lint: Run linter
jorisv Nov 26, 2025
60f7246
examples: Try to overcome a Windows encoding issue
jorisv Nov 27, 2025
6295c0c
Revert "examples: Try to overcome a Windows encoding issue"
jorisv Nov 27, 2025
6b732b3
ci: Another try to fix greek letter output issue
jorisv Nov 27, 2025
3e20234
feat/refactor(joint-ellipsoid): joint specialization
Dec 3, 2025
63fe853
refactor(joint-ellipsoid): review comments.
Ipuch Dec 4, 2025
80fbd41
fix(joint-ellipsoid): one more test fixed
Dec 5, 2025
6d43121
wontfix: test not passing
Dec 5, 2025
567be9e
core: Fix build and tests
jorisv Dec 8, 2025
3850bf0
clean(joint-ellipsoid): dead code and comments
Dec 8, 2025
5712e77
core: Small improvments
jorisv Dec 8, 2025
31f6b8f
Update include/pinocchio/multibody/joint/joint-ellipsoid.hpp
Ipuch Dec 9, 2025
4db8d51
review(joint-ellipsoid)
Dec 9, 2025
ee6833b
core: Remove a codacy warning
jorisv Dec 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/macos-linux-windows-pixi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,12 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
# This is needed on Windows because ellipsoid-joint-kinematics.py output
# some utf8 char.
# More detail here: https://gist.github.com/NodeJSmith/e7e37f2d3f162456869f015f842bcf15
PYTHONIOENCODING: "utf8"

jobs:
pinocchio-pixi:
name: Standard - ${{ matrix.os }} - Env ${{ matrix.environment }} ${{ matrix.build_type }} ${{ matrix.compiler }}
Expand Down
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Add names to joints that are inside a composite joint ([#2786](https://github.com/stack-of-tasks/pinocchio/pull/2786))
- Add color support for robot meshes in Viser ([#2793](https://github.com/stack-of-tasks/pinocchio/pull/2793))
- Add Realtime Sanitizer (RTSan) uniittest and CI to track dynamic allocations in main API ([#2809](https://github.com/stack-of-tasks/pinocchio/pull/2809))
- Add Ellipsoid Joint (3-DOF surface constraint), get ready for biomechanics ([#2797](https://github.com/stack-of-tasks/pinocchio/pull/2797))

### Changed
- Python version update ([#2802](https://github.com/stack-of-tasks/pinocchio/pull/2802)):
Expand All @@ -36,7 +37,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### Removed
- Remove CMake < 3.22 details ([#2790](https://github.com/stack-of-tasks/pinocchio/pull/2790))


## [3.8.0] - 2025-09-17

### Added
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,8 @@ In addition to the core dev team, the following people have also been involved i
- [Lev Kozlov](https://github.com/lvjonok): Kinetic and potential energy regressors
- [Simeon Nedelchev](https://github.com/simeon-ned): Pseudo inertia and Log-Cholesky parametrization
- [Alexy Legrand](https://www.linkedin.com/in/alexy-legrand-125889232/): Viser color bug fixes
- [Pierre Puchaud](https://github.com/ipuch): Ellipsoid Joint
- [Lucas Joseph](https://github.com/LucasJoseph): Ellipsoid Joint

If you have participated in the development of **Pinocchio**, please add your name and contribution to this list.

Expand Down
17 changes: 17 additions & 0 deletions bindings/python/parsers/graph/expose-edges.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ namespace pinocchio
const int JointSphericalZYX::nq;
const int JointSphericalZYX::nv;

const int JointEllipsoid::nq;
const int JointEllipsoid::nv;

const int JointTranslation::nq;
const int JointTranslation::nv;

Expand Down Expand Up @@ -111,6 +114,20 @@ namespace pinocchio
.def_readonly("nq", &JointSphericalZYX::nq, "Number of configuration variables.")
.def_readonly("nv", &JointSphericalZYX::nv, "Number of tangent variables.");

bp::class_<JointEllipsoid>(
"JointEllipsoid", "Represents an ellipsoidal joint.",
bp::init<>(bp::args("self"), "Default constructor."))
.def(bp::init<double, double, double>(
bp::args("self", "radius_x", "radius_y", "radius_z"), "Constructor with radii."))
.def_readwrite(
"radius_x", &JointEllipsoid::radius_x, "Semi-axis length in the x direction.")
.def_readwrite(
"radius_y", &JointEllipsoid::radius_y, "Semi-axis length in the y direction.")
.def_readwrite(
"radius_z", &JointEllipsoid::radius_z, "Semi-axis length in the z direction.")
.def_readonly("nq", &JointEllipsoid::nq, "Number of configuration variables.")
.def_readonly("nv", &JointEllipsoid::nv, "Number of tangent variables.");

bp::class_<JointTranslation>(
"JointTranslation", "Represents a translation joint.",
bp::init<>(bp::args("self"), "Default constructor."))
Expand Down
6 changes: 6 additions & 0 deletions doc/a-features/c-joints.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@ belongs to one of the following categories:
- **Revolute** joints, rotating around a fixed axis, either one of \f$X,Y,Z\f$ or a custom one;
- **Prismatic** joints, translating along any fixed axis, as in the revolute case;
- **Spherical** joints, free rotations in the 3D space;
- **Spherical ZYX** joints, free rotations parameterized by ZYX Euler angles;
- **Ellipsoid** joints, constraining motion to an ellipsoid surface with 3-DOF (2 rotations + 1 spin),
useful for biomechanics. The translation follows the ellipsoid surface \f$\left(\frac{x}{a}\right)^2 + \left(\frac{y}{b}\right)^2 + \left(\frac{z}{c}\right)^2 = 1\f$,
while the rotational part uses the normal direction of an equivalent sphere.
This approximation is exact only when \f$a = b = c\f$ (spherical case).
See Seth et al., "Minimal formulation of joint motion for biomechanisms," Nonlinear Dynamics 62(1):291-303, 2010.
- **Translation** joints, for free translations in the 3D space;
- **Planar** joints, for free movements in the 2D space;
- **Free-floating** joints, for free movements in the 3D space. Planar and free-floating joints are meant to be
Expand Down
Loading
Loading