pinocchio  3.7.0
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
 
Loading...
Searching...
No Matches
aba.hpp
1//
2// Copyright (c) 2019-2020 INRIA CNRS
3//
4
5#ifndef __pinocchio_autodiff_cppad_algorithm_aba_hpp__
6#define __pinocchio_autodiff_cppad_algorithm_aba_hpp__
7
8namespace pinocchio
9{
10 namespace internal
11 {
12
13 // Fwd def
14 template<typename _Scalar>
15 struct SE3actOn;
16
18 template<typename _Scalar>
19 struct SE3actOn<CppAD::AD<_Scalar>>
20 {
21 typedef CppAD::AD<_Scalar> Scalar;
22
23 template<int Options, typename Matrix6Type>
24 static typename PINOCCHIO_EIGEN_PLAIN_TYPE(Matrix6Type)
25 run(const SE3Tpl<Scalar, Options> & M, const Eigen::MatrixBase<Matrix6Type> & I)
26 {
27 typedef SE3Tpl<Scalar, Options> SE3;
28
29 typedef typename PINOCCHIO_EIGEN_PLAIN_TYPE(Matrix6Type) ReturnType;
30
31 typename SE3::ActionMatrixType dual_action_matrix(M.toDualActionMatrix());
32 typename SE3::ActionMatrixType action_matrix(M.toActionMatrixInverse());
33 ReturnType intermediate_result = dual_action_matrix * I;
34 ReturnType res = intermediate_result * action_matrix;
35 return res;
36 }
37 };
38 } // namespace internal
39} // namespace pinocchio
40
41#endif // __pinocchio_autodiff_cppad_algorithm_aba_hpp__
Main pinocchio namespace.
Definition treeview.dox:11