Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
f75e576
[bindings/python] visualizer-visitor.hpp : add missing arg names
ManifoldFR May 21, 2025
2589f85
Update CHANGELOG
ManifoldFR May 21, 2025
63c7db6
Add example candlewick-viewer-solo.py
ManifoldFR May 21, 2025
6d29e62
Merge branch 'topic/add-candlewick-example' into pin4
ManifoldFR May 22, 2025
eeb31eb
algorithm/constraints/constraint-model-base.hpp fix location of forwa…
ManifoldFR May 28, 2025
4dec363
Remove unused headers `deprecated-macros.hpp` and `deprecated-namespa…
ManifoldFR Jun 3, 2025
e145b47
Remove header `pinocchio/deprecation.hpp`, directly use generated `pi…
ManifoldFR Jun 3, 2025
860b0e9
macros.hpp : remove macros already provided by jrl-cmakemodules
ManifoldFR Jun 3, 2025
3c41049
Merge pull request #6 from Simple-Robotics/macro-headers-cleanup
ManifoldFR Jun 3, 2025
31b1f00
bindings/python : removed header `utils/registration.hpp`, delegate t…
ManifoldFR Jun 2, 2025
3cf98ee
bindings/python : deprecate and remove contents of `utils/copyable.hp…
ManifoldFR Jun 2, 2025
c23a411
bindings/python : fix console-bridge.cpp
ManifoldFR Jun 2, 2025
d1ec904
Update some more copyright years, restore registration.hpp (as a depr…
ManifoldFR Jun 3, 2025
84e2591
sources.cmake : fix
ManifoldFR Jun 3, 2025
7d4b837
Restore old header deprecation macro, under new name `PINOCCHIO_DEPRE…
ManifoldFR Jun 3, 2025
6b741eb
Merge pull request #5 from Simple-Robotics/topic/cleanup-old-python-i…
ManifoldFR Jun 4, 2025
ccf60e6
readme : update affiliations
ManifoldFR Jun 4, 2025
451016b
doc/Doxyfile : update predefined macros
ManifoldFR Jun 4, 2025
7915016
doc/Doxyfile : remove obsolete option COLS_IN_ALPHA_INDEX
ManifoldFR Jun 4, 2025
bb9f0f6
doc/Doxyfile : update excluded symbols.
ManifoldFR Jun 4, 2025
4964432
Update CHANGELOG
ManifoldFR Jun 4, 2025
d52055f
Use doxygen-awesome
ManifoldFR Jun 4, 2025
33f8064
algorithm/utils : remove wrong use of Doxygen `\example` command
ManifoldFR Jun 4, 2025
706edcf
algorithm/utils : some doc cleanup
ManifoldFR Jun 4, 2025
bf8ce07
Remove outline.txt
ManifoldFR Jun 4, 2025
e1f70a6
Merge pull request #7 from Simple-Robotics/topic/new-look-docs
ManifoldFR Jun 4, 2025
ffd88cc
core: Fix MSVC cl build.
jorisv May 26, 2025
7162a42
cmake: Enforce C++17
jorisv May 26, 2025
7ca2796
scalar: Fix build with custom scalar
jorisv May 27, 2025
b3fc656
test: Deactivate test_constraint_dynamics_derivatives_cassie_proximal
jorisv May 27, 2025
ce05895
core: Add missing include
jorisv Jun 2, 2025
e1503ef
core: Allow to use SE3Tpl::isApprox with custom scalar
jorisv Jun 2, 2025
96b29fd
core: Continue to fix the debug build
jorisv Jun 2, 2025
367b791
pixi: Add tracy feature
jorisv Jun 11, 2025
aa4f072
cmake: Use eigen 3.4.0 as new minimal requirement
jorisv Jun 11, 2025
e881fbf
cmake: Add missing headers
jorisv Jun 11, 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
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,21 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Added joint methods `jointQrows`, `jointQcols` (resp. `jointQVblock`) that make selections of size `NQ` (resp. `NQ x NV`).
- Added joint method `lieGroup` that returns the Lie group instance associated to a joint. This allows performing some operations (e.g. `integrate`...) individually.
- Added model method `lieGroup` that returns the Lie group instance associated to the model. It is a Cartesian product of multiple Lie groups. It allows combination of the model Lie group with other Lie groups.
- Add Python example showcasing the candlewick visualizer

### Changed

- bindings/python : Add missing arg names in `visualizer-visitor.hpp`
- use deprecation, warning macros already provided by jrl-cmakemodules
- renamed `PINOCCHIO_PRAGMA_DEPRECATED_HEADER` to `PINOCCHIO_DEPRECATED_MOVED_HEADER`
- docs : update documentation stylesheet, fix some Doxygen config options

### Removed

- Remove unused headers `deprecated-macros.hpp` and `deprecated-namespaces.hpp`
- Remove header `pinocchio/deprecation.hpp`, directly use generated `pinocchio/deprecated.hpp`
- macros.hpp : remove macros already provided by jrl-cmakemodules
- bindings/python : deprecate and remove contents of `utils/copyable.hpp`, `utils/registration.hpp` and `utils/deprecation.hpp`, include corresponding eigenpy headers instead

## [3.7.0] - 2025-05-21

Expand Down
6 changes: 3 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,8 @@ if(CMAKE_VERSION VERSION_GREATER "3.12")
cmake_policy(SET CMP0074 NEW)
endif()

# Force C++ standard to be C++11 at least
check_minimal_cxx_standard(11 ENFORCE)
# Force C++ standard to be C++17 at least
check_minimal_cxx_standard(17 ENFORCE)

# --- OPTIONS ----------------------------------------
option(BUILD_BENCHMARK "Build the benchmarks" OFF)
Expand Down Expand Up @@ -212,7 +212,7 @@ set(PINOCCHIO_MODEL_DIR "${PROJECT_SOURCE_DIR}/models")
# --- DEPENDENCIES -----------------------------------
# ----------------------------------------------------
set(CMAKE_MODULE_PATH "${JRL_CMAKE_MODULES}/find-external/CppAD/" ${CMAKE_MODULE_PATH})
add_project_dependency(Eigen3 REQUIRED PKG_CONFIG_REQUIRES "eigen3 >= 3.0.5")
add_project_dependency(Eigen3 REQUIRED PKG_CONFIG_REQUIRES "eigen3 >= 3.4.0")

if(BUILD_WITH_URDF_SUPPORT)
add_project_dependency(urdfdom_headers REQUIRED)
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ The currently active core developers of **Pinocchio** are:
- [Justin Carpentier](https://jcarpent.github.io) (Inria): main developer and manager of the project
- [Guilhem Saurel](https://www.laas.fr/fr/annuaire/gsaurel) (LAAS-CNRS): CI/CD, packaging
- [Etienne Arlaud](https://github.com/EtienneAr) (Inria): core developer
- [Wilson Jallet](https://github.com/ManifoldFR) (LAAS-CNRS/Inria): extension of Python bindings, C++ visualization API
- [Wilson Jallet](https://github.com/ManifoldFR) (Inria): extension of Python bindings, C++ visualization API
- [Fabian Schramm](https://github.com/fabinsch) (Inria): core developper
- [Stéphane Caron](https://scaron.info) (Inria): core developper
- [Joris Vaillant](https://github.com/jorisv) (Inria): core developer and project manager
Expand Down
8 changes: 6 additions & 2 deletions bindings/python/algorithm/admm-solver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@ namespace pinocchio
;
}

#ifdef PINOCCHIO_PYTHON_PLAIN_SCALAR_TYPE
class_
.def(
"solve",
Expand Down Expand Up @@ -200,7 +201,7 @@ namespace pinocchio
bp::arg("admm_update_rule") = ADMMUpdateRule::SPECTRAL,
bp::arg("stat_record") = false),
"Solve the constrained conic problem, starting from the optional initial guess.");
#ifdef PINOCCHIO_WITH_ACCELERATE_SUPPORT
#ifdef PINOCCHIO_WITH_ACCELERATE_SUPPORT
{
typedef Eigen::AccelerateLLT<context::SparseMatrix> AccelerateLLT;
typedef DelassusOperatorSparseTpl<context::Scalar, context::Options, AccelerateLLT>
Expand All @@ -216,8 +217,10 @@ namespace pinocchio
bp::arg("stat_record") = false),
"Solve the constrained conic problem, starting from the optional initial guess.");
}
#endif
#endif // ifdef PINOCCHIO_WITH_ACCELERATE_SUPPORT
#endif // ifdef PINOCCHIO_PYTHON_PLAIN_SCALAR_TYPE

#ifndef PINOCCHIO_PYTHON_SKIP_CASADI_UNSUPPORTED
bp::def(
"computeConeProjection",
computeConeProjection_wrapper<ConstraintModel, ConstraintModelAllocator>,
Expand Down Expand Up @@ -247,6 +250,7 @@ namespace pinocchio
computeDeSaxeCorrection_wrapper<ConstraintModel, ConstraintModelAllocator>,
bp::args("constraint_models", "velocities"),
"Compute the complementarity shift associated to the De Saxé function.");
#endif // ifndef PINOCCHIO_PYTHON_SKIP_CASADI_UNSUPPORTED
}
//
// template<typename S, int O>
Expand Down
23 changes: 23 additions & 0 deletions bindings/python/algorithm/constraints/expose-cones.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,29 @@
// #include "pinocchio/bindings/python/serialization/serialization.hpp"
#include "pinocchio/bindings/python/utils/std-aligned-vector.hpp"

#ifdef PINOCCHIO_PYTHON_SKIP_COMPARISON_OPERATIONS
namespace eigenpy
{
// has_operator_equal return true for CoulombFrictionCone and DualCoulombFrictionCone with casadi
// but it should not.
// We provide specialization to enforce good result.
template<>
struct has_operator_equal<
pinocchio::python::context::CoulombFrictionCone,
pinocchio::python::context::CoulombFrictionCone>
{
typedef std::false_type type;
};
template<>
struct has_operator_equal<
pinocchio::python::context::DualCoulombFrictionCone,
pinocchio::python::context::DualCoulombFrictionCone>
{
typedef std::false_type type;
};
} // namespace eigenpy
#endif // ifdef PINOCCHIO_PYTHON_SKIP_COMPARISON_OPERATIONS

namespace pinocchio
{
namespace python
Expand Down
3 changes: 1 addition & 2 deletions bindings/python/algorithm/expose-constrained-dynamics.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
#include "pinocchio/bindings/python/algorithm/contact-cholesky.hpp"

#include "pinocchio/bindings/python/utils/std-vector.hpp"
#include "pinocchio/bindings/python/utils/registration.hpp"
#include "pinocchio/bindings/python/utils/model-checker.hpp"

#include "pinocchio/algorithm/constrained-dynamics.hpp"
Expand Down Expand Up @@ -120,7 +119,7 @@ namespace pinocchio

ContactCholeskyDecompositionPythonVisitor<context::ContactCholeskyDecomposition>::expose();

exposeConstraintDynamicsFor<RigidConstraintModel>();
exposeConstraintDynamicsFor<context::RigidConstraintModel>();
// exposeConstraintDynamicsFor<WeldConstraintModel>();
}
} // namespace python
Expand Down
2 changes: 2 additions & 0 deletions bindings/python/algorithm/pgs-solver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ namespace pinocchio
void run(ConstraintModelBase<ConstraintModel> * ptr = 0)
{
PINOCCHIO_UNUSED_VARIABLE(ptr);
#ifdef PINOCCHIO_PYTHON_PLAIN_SCALAR_TYPE
class_
.def(
"solve", solve_wrapper<context::MatrixXs, ConstraintModel>,
Expand All @@ -72,6 +73,7 @@ namespace pinocchio
bp::arg("solve_ncp") = true, bp::arg("stat_record") = false),
"Solve the constrained conic problem composed of problem data (G,g,cones) and starting "
"from the initial guess.");
#endif // ifdef PINOCCHIO_PYTHON_PLAIN_SCALAR_TYPE
}

// template<typename S, int O>
Expand Down
3 changes: 1 addition & 2 deletions bindings/python/math/expose-eigen-types.cpp
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
//
// Copyright (c) 2020-2021 INRIA
// Copyright (c) 2020-2025 INRIA
//

#include "pinocchio/bindings/python/fwd.hpp"
#include "pinocchio/bindings/python/utils/registration.hpp"
#include "pinocchio/bindings/python/utils/std-vector.hpp"

#include <eigenpy/eigenpy.hpp>
Expand Down
3 changes: 1 addition & 2 deletions bindings/python/module.cpp
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
//
// Copyright (c) 2015-2022 CNRS INRIA
// Copyright (c) 2015-2022 CNRS INRIA, 2025 INRIA
//

#include "pinocchio/bindings/python/fwd.hpp"
#include "pinocchio/multibody/fwd.hpp"
#include "pinocchio/utils/version.hpp"
#include "pinocchio/bindings/python/utils/version.hpp"
#include "pinocchio/bindings/python/utils/dependencies.hpp"
#include "pinocchio/bindings/python/utils/registration.hpp"

#include "pinocchio/bindings/python/utils/std-vector.hpp"
#include "pinocchio/spatial/cartesian-axis.hpp"
Expand Down
6 changes: 3 additions & 3 deletions bindings/python/parsers/urdf/console-bridge.cpp
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
//
// Copyright (c) 2020 INRIA
// Copyright (c) 2020-2025 INRIA
//

#include <boost/python.hpp>
#include <eigenpy/registration.hpp>
#include "pinocchio/bindings/python/parsers/urdf.hpp"
#include "pinocchio/bindings/python/utils/registration.hpp"

#ifdef PINOCCHIO_WITH_URDFDOM
#include <console_bridge/console.h>
Expand All @@ -24,7 +24,7 @@ namespace pinocchio
::console_bridge::setLogLevel(::console_bridge::CONSOLE_BRIDGE_LOG_ERROR);

typedef ::console_bridge::LogLevel LogLevel;
if (!register_symbolic_link_to_registered_type<LogLevel>())
if (!eigenpy::register_symbolic_link_to_registered_type<LogLevel>())
{
bp::enum_<LogLevel>("LogLevel")
.value("CONSOLE_BRIDGE_LOG_DEBUG", ::console_bridge::CONSOLE_BRIDGE_LOG_DEBUG)
Expand Down
1 change: 1 addition & 0 deletions development/scripts/pixi/activation.bat
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,4 @@ if not defined PINOCCHIO_CODEGEN_SUPPORT (set PINOCCHIO_CODEGEN_SUPPORT=OFF)
if not defined PINOCCHIO_SDF_SUPPORT (set PINOCCHIO_SDF_SUPPORT=OFF)
if not defined PINOCCHIO_MPFR_SUPPORT (set PINOCCHIO_MPFR_SUPPORT=OFF)
if not defined PINOCCHIO_BUILD_BENCHMARK (set PINOCCHIO_BUILD_BENCHMARK=OFF)
if not defined PINOCCHIO_BUILD_WITH_TRACY(set PINOCCHIO_BUILD_WITH_TRACY=OFF)
1 change: 1 addition & 0 deletions development/scripts/pixi/activation.sh
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,4 @@ export PINOCCHIO_CODEGEN_SUPPORT=${PINOCCHIO_CODEGEN_SUPPORT:=OFF}
export PINOCCHIO_SDF_SUPPORT=${PINOCCHIO_SDF_SUPPORT:=OFF}
export PINOCCHIO_MPFR_SUPPORT=${PINOCCHIO_MPFR_SUPPORT:=OFF}
export PINOCCHIO_BUILD_BENCHMARK=${PINOCCHIO_BUILD_BENCHMARK:=OFF}
export PINOCCHIO_BUILD_WITH_TRACY=${PINOCCHIO_BUILD_WITH_TRACY:=OFF}
75 changes: 16 additions & 59 deletions doc/Doxyfile.extra.in
Original file line number Diff line number Diff line change
Expand Up @@ -315,10 +315,11 @@ FILE_PATTERNS = *.cc *.cpp *.h *.hpp *.hh *.dox *.md *.py
# Note that relative paths are relative to the directory from which doxygen is
# run.

#EXCLUDE = @PROJECT_SOURCE_DIR@/doc/d-practical-exercises/src
EXCLUDE = @PROJECT_SOURCE_DIR@/doc/d-practical-exercises/src

# Put them back for inclusion as whole files
HTML_EXTRA_FILES += @PROJECT_SOURCE_DIR@/doc/d-practical-exercises/src
HTML_EXTRA_FILES += @PROJECT_SOURCE_DIR@/doc/d-practical-exercises/src \
@PROJECT_SOURCE_DIR@/doc/doxygen-awesome-darkmode-toggle.js

# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
Expand Down Expand Up @@ -355,8 +356,7 @@ EXCLUDE_PATTERNS += CMake* \
# wildcard * is used, a substring. Examples: ANamespace, AClass,
# AClass::ANamespace, ANamespace::*Test

EXCLUDE_SYMBOLS = internal::* \
*Visitor
EXCLUDE_SYMBOLS = internal::*,detail*::**Visitor,boost::*,Eigen::*,eigenpy::*,std::*

# The IMAGE_PATH tag can be used to specify one or more files or
# directories that contain image that are included in the documentation (see
Expand Down Expand Up @@ -397,12 +397,6 @@ VERBATIM_HEADERS = YES

ALPHABETICAL_INDEX = YES

# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
# in which this list will be split (can be a number in the range [1..20])

COLS_IN_ALPHA_INDEX = 4

#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
Expand All @@ -413,7 +407,8 @@ COLS_IN_ALPHA_INDEX = 4
# Doxygen will copy the logo to the output directory.

PROJECT_LOGO = @PROJECT_SOURCE_DIR@/doc/pinocchio.png
HTML_EXTRA_FILES += pinocchio.png
HTML_EXTRA_FILES += @PROJECT_SOURCE_DIR@/doc/pinocchio.png \
@PROJECT_SOURCE_DIR@/doc/pinocchio.ico

# The HTML_HEADER tag can be used to specify a personal HTML header for
# each generated HTML page. If it is left blank doxygen will generate a
Expand All @@ -427,60 +422,21 @@ HTML_EXTRA_FILES += pinocchio.png
# changing the value of configuration settings such as GENERATE_TREEVIEW!

HTML_HEADER = @PROJECT_SOURCE_DIR@/doc/header.html
HTML_EXTRA_FILES += @PROJECT_SOURCE_DIR@/doc/pinocchio.ico

# The HTML_FOOTER tag can be used to specify a personal HTML footer for
# each generated HTML page. If it is left blank doxygen will generate a
# standard footer.

HTML_FOOTER =

# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
# style sheet that is used by each HTML page. It can be used to
# fine-tune the look of the HTML output. If the tag is left blank doxygen
# will generate a default style sheet. Note that doxygen will try to copy
# the style sheet file to the HTML output directory, so don't put your own
# style sheet in the HTML output directory as well, or it will be erased!
# NOTE: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag,
# as it is more robust and this tag (HTML_STYLESHEET)
# will in the future become obsolete.

#HTML_STYLESHEET = @PROJECT_SOURCE_DIR@/doc/package.css

# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
# cascading style sheets that are included after the standard style sheets
# created by doxygen. Using this option one can overrule certain style aspects.
# This is preferred over using HTML_STYLESHEET since it does not replace
# the standard style sheet and is therefore more robust against future updates.
# Doxygen will copy the style sheet files to the output directory.

HTML_EXTRA_STYLESHEET = @PROJECT_SOURCE_DIR@/doc/customdoxygen.css

# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
# Doxygen will adjust the colors in the style sheet and background images
# according to this color. Hue is specified as an angle on a colorwheel,
# see http://en.wikipedia.org/wiki/Hue for more information.
# For instance the value 0 represents red, 60 is yellow, 120 is green,
# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
# The allowed range is 0 to 359.
# The default is 220.

HTML_COLORSTYLE_HUE = 220

# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
# the colors in the HTML output. For a value of 0 the output will use
# grayscales only. A value of 255 will produce the most vivid colors.
HTML_FOOTER =

HTML_COLORSTYLE_SAT = 100
FULL_SIDEBAR = NO

# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
# the luminance component of the colors in the HTML output. Values below
# 100 gradually make the output lighter, whereas values above 100 make
# the output darker. The value divided by 100 is the actual gamma applied,
# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
# and 100 does not change the gamma.
HTML_EXTRA_STYLESHEET = @PROJECT_SOURCE_DIR@/doc/doxygen-awesome.css

HTML_COLORSTYLE_GAMMA = 80
HTML_COLORSTYLE_HUE = 209
HTML_COLORSTYLE_SAT = 255
HTML_COLORSTYLE_GAMMA = 113
HTML_COLORSTYLE = LIGHT

# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
# documentation will contain sections that can be hidden and shown after the
Expand Down Expand Up @@ -534,7 +490,7 @@ ECLIPSE_DOC_ID = org.doxygen.@PACKAGE_NAME@
# top of each HTML page. The value NO (the default) enables the index and
# the value YES disables it.

DISABLE_INDEX = YES
DISABLE_INDEX = NO

# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
# structure should be generated to display hierarchical information.
Expand Down Expand Up @@ -608,7 +564,8 @@ PREDEFINED += EIGEN_MAKE_ALIGNED_OPERATOR_NEW \
PINOCCHIO_WITH_URDFDOM \
PINOCCHIO_WITH_CPPAD_SUPPORT \
PINOCCHIO_WITH_CPPADCG_SUPPORT \
PINOCCHIO_WITH_LUA5
PINOCCHIO_DONT_INLINE \
PINOCCHIO_NOEXCEPT=noexcept

# The following macros would be better treated with EXPAND_AS_DEFINED.
# However, it was not working properly
Expand Down
19 changes: 0 additions & 19 deletions doc/customdoxygen.css

This file was deleted.

Loading
Loading