$darkmode
pinocchio 4.0.0
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
aba.hpp
1 //
2 // Copyright (c) 2016-2018 CNRS
3 // Copyright (c) 2018-2024 INRIA
4 //
5 
6 #pragma once
7 
8 // IWYU pragma: begin_keep
9 #include <Eigen/Core>
10 
11 #include <cassert>
12 #include <vector>
13 
14 #include <boost/fusion/container/vector.hpp>
15 
16 #include "pinocchio/macros.hpp"
17 #include "pinocchio/eigen-common.hpp"
18 
19 #include "pinocchio/math.hpp"
20 
21 #include "pinocchio/spatial.hpp"
22 
23 #include "pinocchio/multibody.hpp"
24 #include "pinocchio/multibody/joint.hpp"
25 #include "pinocchio/multibody/visitor.hpp"
26 
27 #include "pinocchio/algorithm/check.hpp"
28 // IWYU pragma: end_keep
29 
30 namespace pinocchio
31 {
52  template<
53  typename Scalar,
54  int Options,
55  template<typename, int> class JointCollectionTpl,
56  typename ConfigVectorType,
57  typename TangentVectorType1,
58  typename TangentVectorType2>
59  const typename DataTpl<Scalar, Options, JointCollectionTpl>::TangentVectorType & aba(
60  const ModelTpl<Scalar, Options, JointCollectionTpl> & model,
61  DataTpl<Scalar, Options, JointCollectionTpl> & data,
62  const Eigen::MatrixBase<ConfigVectorType> & q,
63  const Eigen::MatrixBase<TangentVectorType1> & v,
64  const Eigen::MatrixBase<TangentVectorType2> & tau,
65  const Convention convention = Convention::LOCAL);
66 
89  template<
90  typename Scalar,
91  int Options,
92  template<typename, int> class JointCollectionTpl,
93  typename ConfigVectorType,
94  typename TangentVectorType1,
95  typename TangentVectorType2,
96  typename SpatialForce,
97  typename SpatialForceAllocator>
98  const typename DataTpl<Scalar, Options, JointCollectionTpl>::TangentVectorType & aba(
99  const ModelTpl<Scalar, Options, JointCollectionTpl> & model,
100  DataTpl<Scalar, Options, JointCollectionTpl> & data,
101  const Eigen::MatrixBase<ConfigVectorType> & q,
102  const Eigen::MatrixBase<TangentVectorType1> & v,
103  const Eigen::MatrixBase<TangentVectorType2> & tau,
104  const std::vector<SpatialForce, SpatialForceAllocator> & fext,
105  const Convention convention = Convention::LOCAL);
106 
120  template<
121  typename Scalar,
122  int Options,
123  template<typename, int> class JointCollectionTpl,
124  typename ConfigVectorType>
125  const typename DataTpl<Scalar, Options, JointCollectionTpl>::RowMatrixXs & computeMinverse(
126  const ModelTpl<Scalar, Options, JointCollectionTpl> & model,
127  DataTpl<Scalar, Options, JointCollectionTpl> & data,
128  const Eigen::MatrixBase<ConfigVectorType> & q);
129 
143  template<typename Scalar, int Options, template<typename, int> class JointCollectionTpl>
144  const typename DataTpl<Scalar, Options, JointCollectionTpl>::RowMatrixXs & computeMinverse(
145  const ModelTpl<Scalar, Options, JointCollectionTpl> & model,
146  DataTpl<Scalar, Options, JointCollectionTpl> & data);
147 
148  PINOCCHIO_DEFINE_ALGO_CHECKER(ABA);
149 
150 } // namespace pinocchio
151 
152 // IWYU pragma: begin_exports
153 #include "pinocchio/src/algorithm/aba.hxx"
154 // IWYU pragma: end_exports
Main pinocchio namespace.
Definition: treeview.dox:11
const DataTpl< Scalar, Options, JointCollectionTpl >::TangentVectorType & aba(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 > &tau, const Convention convention=Convention::LOCAL)
The Articulated-Body algorithm. It computes the forward dynamics, aka the joint accelerations given t...
const DataTpl< Scalar, Options, JointCollectionTpl >::RowMatrixXs & computeMinverse(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, DataTpl< Scalar, Options, JointCollectionTpl > &data, const Eigen::MatrixBase< ConfigVectorType > &q)
Computes the inverse of the joint space inertia matrix using Articulated Body formulation.