pinocchio 4.1.0
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
Loading...
Searching...
No Matches
contact-inverse-dynamics.hpp
1//
2// Copyright (c) 2026 INRIA
3//
4#pragma once
5
6// IWYU pragma: begin_keep
7#include <cassert>
8#include <cstddef>
9
10#include <Eigen/Core>
11
12#include "pinocchio/fwd.hpp"
13#include "pinocchio/macros.hpp"
14
15#include "pinocchio/utils/std-vector.hpp"
16#include "pinocchio/utils/reference.hpp"
17#include "pinocchio/utils/check.hpp"
18
19#include "pinocchio/math.hpp"
20#include "pinocchio/multibody.hpp"
21
22#include "pinocchio/algorithm/proximal.hpp"
23#include "pinocchio/algorithm/rnea.hpp"
24#include "pinocchio/constraints.hpp"
25// IWYU pragma: end_keep
26
27namespace pinocchio
28{
40 template<
41 typename Scalar,
42 class PointContactConstraintModelVector,
43 class PointContactConstraintDataVector,
44 typename VectorLikeC,
45 typename VectorLikeResult>
47 const PointContactConstraintModelVector & constraint_models,
48 const PointContactConstraintDataVector & constraint_datas,
49 const Eigen::MatrixBase<VectorLikeC> & c_ref,
50 const Eigen::MatrixBase<VectorLikeResult> & _lambda,
51 ProximalSettingsTpl<Scalar> & settings,
52 bool solve_ncp = true);
53
79 template<
80 typename Scalar,
81 int Options,
82 template<typename, int> class JointCollectionTpl,
83 typename ConfigVectorType,
84 typename TangentVectorType1,
85 typename TangentVectorType2,
86 class PointContactConstraintModelVector,
87 class PointContactConstraintDataVector,
88 typename VectorLikeGamma,
89 typename VectorLikeLam>
91 const ModelTpl<Scalar, Options, JointCollectionTpl> & model,
92 DataTpl<Scalar, Options, JointCollectionTpl> & data,
93 const Eigen::MatrixBase<ConfigVectorType> & q,
94 const Eigen::MatrixBase<TangentVectorType1> & v,
95 const Eigen::MatrixBase<TangentVectorType2> & a,
96 const Scalar dt,
97 const PointContactConstraintModelVector & constraint_models,
98 PointContactConstraintDataVector & constraint_datas,
99 const Eigen::MatrixBase<VectorLikeGamma> & constraint_correction,
100 const Eigen::MatrixBase<VectorLikeLam> & _lambda_sol,
101 ProximalSettingsTpl<Scalar> & settings,
102 bool solve_ncp = true);
103} // namespace pinocchio
104
105// IWYU pragma: begin_exports
106#include "pinocchio/src/algorithm/contact-inverse-dynamics.hxx"
107// IWYU pragma: end_exports
Main pinocchio namespace.
Definition treeview.dox:11
bool contactInverseDynamics(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, DataTpl< Scalar, Options, JointCollectionTpl > &data, const Eigen::MatrixBase< ConfigVectorType > &q, const Eigen::MatrixBase< TangentVectorType1 > &v, const Eigen::MatrixBase< TangentVectorType2 > &a, const Scalar dt, const PointContactConstraintModelVector &constraint_models, PointContactConstraintDataVector &constraint_datas, const Eigen::MatrixBase< VectorLikeGamma > &constraint_correction, const Eigen::MatrixBase< VectorLikeLam > &_lambda_sol, ProximalSettingsTpl< Scalar > &settings, bool solve_ncp=true)
The Contact Inverse Dynamics algorithm. It computes the inverse dynamics in the presence of contacts,...
bool computeInverseDynamicsConstraintForces(const PointContactConstraintModelVector &constraint_models, const PointContactConstraintDataVector &constraint_datas, const Eigen::MatrixBase< VectorLikeC > &c_ref, const Eigen::MatrixBase< VectorLikeResult > &_lambda, ProximalSettingsTpl< Scalar > &settings, bool solve_ncp=true)
Compute the contact forces given a target velocity of contact points.