Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion .github/workflows/gh-pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
with:
submodules: recursive

- uses: prefix-dev/setup-pixi@v0.9.3
- uses: prefix-dev/setup-pixi@v0.9.6
with:
cache: true
environments: all
Expand Down
7 changes: 3 additions & 4 deletions .github/workflows/macos-linux-pixi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, macos-15-intel]
environment: [default, all, all-python-oldest]
environment: [default, all, all-python-oldest, all-pin39]
build_type: [Release, Debug]

steps:
Expand All @@ -53,9 +53,8 @@ jobs:
key: ccache-macos-linux-pixi-${{ matrix.os }}-${{ matrix.build_type }}-${{ github.sha }}
restore-keys: ccache-macos-linux-pixi-${{ matrix.os }}-${{ matrix.build_type }}-

- uses: prefix-dev/setup-pixi@v0.9.4
- uses: prefix-dev/setup-pixi@v0.9.6
with:
pixi-version: v0.67.0
cache: true
environments: ${{ matrix.environment }}

Expand Down Expand Up @@ -89,7 +88,7 @@ jobs:
# with:
# submodules: recursive

# - uses: prefix-dev/setup-pixi@v0.9.3
# - uses: prefix-dev/setup-pixi@v0.9.6
# env:
# CMAKE_BUILD_PARALLEL_LEVEL: 2
# with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/update_pixi_lockfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
persist-credentials: false

- name: Set up pixi
uses: prefix-dev/setup-pixi@v0.9.3
uses: prefix-dev/setup-pixi@v0.9.6
with:
run-install: false

Expand Down
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Fixed

- multibody/tests: call `calc()` on constraint datas before any operation invoking `jacobian()`
In Pinocchio 4.0, `jacobian()` no longer updates `cdata` internally and requires `calc()` to be called first.
- include `<fmt/format.h>` where `fmt::format()`is used. Required since fmt 12.2.0

## [0.19.0] - 2026-04-17

### Added
Expand Down
1 change: 1 addition & 0 deletions include/aligator/core/stage-model.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#include "aligator/core/function-abstract.hpp"
#include "aligator/core/constraint.hpp"
#include <fmt/format.h>

namespace aligator {
using xyz::polymorphic;
Expand Down
1 change: 1 addition & 0 deletions include/aligator/fmt-eigen.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include <fmt/core.h>
#include <fmt/ostream.h>
#include <fmt/ranges.h>
#include <fmt/format.h>

/// Specialize fmt::formatter using the operator<< implementation for Eigen
/// types.
Expand Down
1 change: 1 addition & 0 deletions include/aligator/fmt.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#pragma once

#include <fmt/core.h>
#include <fmt/format.h>

#if FMT_VERSION < 100000

Expand Down
8 changes: 8 additions & 0 deletions include/aligator/modelling/multibody/constrained-rnea.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,14 @@ void underactuatedConstrainedInverseDynamics(
pin::computeAllTerms(model, data, q, v);
const auto &nle = data.nle;

// pin4: getConstraintJacobian requires cdata to be up-to-date.
// calc() must be called explicitly before jacobian()
#ifdef ALIGATOR_PINOCCHIO_V4
for (std::size_t idx = 0; idx < constraint_models.size(); ++idx) {
constraint_models[idx].calc(model, data, constraint_datas[idx]);
}
#endif

const int d = details::computeRigidConstraintsTotalSize(constraint_models,
constraint_datas);

Expand Down
1 change: 1 addition & 0 deletions include/aligator/solvers/fddp/solver-fddp.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include "aligator/core/stage-data.hpp"

#include <fmt/ranges.h>
#include <fmt/format.h>

namespace aligator {

Expand Down
2 changes: 2 additions & 0 deletions include/aligator/solvers/proxddp/merit-function.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
#include "aligator/core/lagrangian.hpp"
#include "aligator/tracy.hpp"

#include <fmt/format.h>

namespace aligator {

template <typename Scalar>
Expand Down
1 change: 1 addition & 0 deletions include/aligator/solvers/proxddp/results.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#include "aligator/solvers/results-base.hpp"
#include <fmt/ostream.h>
#include <fmt/format.h>

namespace aligator {

Expand Down
2 changes: 2 additions & 0 deletions include/aligator/solvers/proxddp/solver-proxddp.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@

#include "aligator/tracy.hpp"

#include <fmt/format.h>

namespace aligator {

// [1], related to Appendix A, details on aug. Lagrangian method
Expand Down
2 changes: 2 additions & 0 deletions include/aligator/solvers/proxddp/workspace.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@

#include "aligator/modelling/constraints/constraint-set-product.hpp"

#include <fmt/format.h>

namespace aligator {

template <typename Scalar>
Expand Down
1 change: 1 addition & 0 deletions include/aligator/solvers/results-base.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#pragma once

#include "aligator/context.hpp"
#include <fmt/format.h>

namespace aligator {

Expand Down
1 change: 1 addition & 0 deletions include/aligator/solvers/value-function.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include "aligator/context.hpp"

#include <ostream>
#include <fmt/format.h>

namespace aligator {

Expand Down
1 change: 1 addition & 0 deletions include/aligator/utils/exceptions.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#include <stdexcept>
#include <string>
#include <fmt/core.h>
#include <fmt/format.h>

#define ALIGATOR_RUNTIME_ERROR(...) \
throw ::aligator::RuntimeError( \
Expand Down
29,793 changes: 16,508 additions & 13,285 deletions pixi.lock

Large diffs are not rendered by default.

30 changes: 12 additions & 18 deletions pixi.toml
Original file line number Diff line number Diff line change
Expand Up @@ -156,11 +156,12 @@ dependencies = { tracy-profiler-client = ">=0.11.1" }
activation = { env = { ALIGATOR_TRACY_ENABLE = "ON" } }

[feature.pin39]
dependencies = { pinocchio = ">=3.9.0,<4", example-robot-data-loaders = ">=4" }
dependencies = { pinocchio = ">=3.9.0,<4", example-robot-data-loaders = ">=4,<5.0" }

activation = { env = { ALIGATOR_PINOCCHIO_SUPPORT = "ON" } }

[feature.pin4]
dependencies = { pinocchio = ">=4.0.0,<5", example-robot-data-loaders = ">=4" }
dependencies = { pinocchio = ">=4.0.0,<5", example-robot-data-loaders = ">=5" }
activation = { env = { ALIGATOR_PINOCCHIO_SUPPORT = "ON" } }

# crocoddyl 3.2 requires pinocchio 3.8.x, so this feature is pinned to Pinocchio 3
Expand Down Expand Up @@ -209,19 +210,10 @@ graphviz = ">=12"
[environments]
default = { features = ["python-latest"], solve-group = "python-latest" }
clang = { features = ["clang", "python-latest"] }
lint = { features = ["lint"], no-default-feature = false}
pin39 = { features = [
"pin39",
"python-latest",
] }
pin4 = { features = [
"pin4",
"python-latest",
], solve-group = "python-latest" }
crocoddyl = { features = [
"crocoddyl",
"python-latest",
] }
lint = { features = ["lint"], no-default-feature = false }
pin39 = { features = ["pin39", "python-latest"] }
pin4 = { features = ["pin4", "python-latest"], solve-group = "python-latest" }
crocoddyl = { features = ["crocoddyl", "python-latest"] }
openmp = { features = [
"openmp",
"python-latest",
Expand All @@ -236,13 +228,14 @@ all = { features = [
], solve-group = "python-latest" }
all-with-croco = { features = [
"doc",
"crocoddyl", # with pinocchio 3.8
"crocoddyl",
"pin4",
"openmp",
"python-latest"
"python-latest",
] }
all-python-oldest = { features = [
"doc",
"pin39",
"pin4",
"openmp",
"python-oldest",
], solve-group = "python-oldest" }
Expand All @@ -252,4 +245,5 @@ new-version = { features = [
"openmp",
"python-latest",
], solve-group = "python-latest" }
all-pin39 = { features = ["doc", "pin39", "openmp", "python-latest"] }
# test-pixi-build = { features = ["test-pixi-build"], no-default-feature = true }
1 change: 1 addition & 0 deletions src/utils/exceptions.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#include "aligator/utils/exceptions.hpp"
#include <fmt/color.h>
#include <fmt/format.h>

namespace aligator {
namespace detail {
Expand Down
1 change: 1 addition & 0 deletions src/utils/logger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#include <fmt/color.h>
#include <fmt/ranges.h>
#include <fmt/format.h>
#include <vector>

namespace aligator {
Expand Down
9 changes: 8 additions & 1 deletion tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,14 @@ set(
)

if(BUILD_WITH_PINOCCHIO_SUPPORT)
list(APPEND TEST_NAMES forces cycling mpc-cycle continuous)
list(
APPEND
TEST_NAMES
forces
cycling
#mpc-cycle -> Decomment when issue # 410 is fixed
continuous
)
endif()

if(CHECK_RUNTIME_MALLOC)
Expand Down
2 changes: 2 additions & 0 deletions tests/gar/test_util.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
#include "aligator/gar/lqr-problem.hpp"
#include "../test_util.hpp"

#include <fmt/format.h>

ALIGATOR_DYNAMIC_TYPEDEFS(double);
using problem_t = aligator::gar::LqrProblemTpl<double>;
using knot_t = aligator::gar::LqrKnotTpl<double>;
Expand Down
2 changes: 2 additions & 0 deletions tests/python/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ if(NOT BUILD_WITH_PINOCCHIO_SUPPORT)
list(REMOVE_ITEM PYTHON_TESTS test_constrained_dynamics.py)
list(REMOVE_ITEM PYTHON_TESTS test_kinodynamics.py)
endif()
# remove line when issue # 409 is fixed
list(REMOVE_ITEM PYTHON_TESTS test_mpc.py)
make_directory(${CMAKE_CURRENT_BINARY_DIR})

foreach(pyfile ${PYTHON_TESTS})
Expand Down
4 changes: 4 additions & 0 deletions tests/python/test_constrained_dynamics.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,10 @@ def createFourBarLinkages():
N = 100
for k in range(N):
pin.computeJointJacobians(model, data, q)
# pin4 : ConstraintCholeskyDecomposition.compute(...) computes jacobian internally
# but does not call calc() -> caller must do it first
if ALIGATOR_PINOCCHIO_V4:
constraint_model.calc(model, data, constraint_data)
kkt_constraint.compute(model, data, [constraint_model], [constraint_data], mu)
constraint_value = constraint_data.c1Mc2.translation

Expand Down
Loading