pinocchio  3.7.0
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
 
Loading...
Searching...
No Matches
classic-acceleration.hpp
1//
2// Copyright (c) 2019 INRIA
3//
4
5#ifndef __pinocchio_spatial_classic_acceleration_hpp__
6#define __pinocchio_spatial_classic_acceleration_hpp__
7
8#include "pinocchio/spatial/se3.hpp"
9#include "pinocchio/spatial/motion.hpp"
10
11namespace pinocchio
12{
28 template<typename Motion1, typename Motion2, typename Vector3Like>
32 const Eigen::MatrixBase<Vector3Like> & res)
33 {
34 PINOCCHIO_EIGEN_CONST_CAST(Vector3Like, res).noalias() =
35 spatial_acceleration.linear() + spatial_velocity.angular().cross(spatial_velocity.linear());
36 }
37
51 template<typename Motion1, typename Motion2>
52 inline typename PINOCCHIO_EIGEN_PLAIN_TYPE(typename Motion2::Vector3) classicAcceleration(
55 {
56 typedef typename PINOCCHIO_EIGEN_PLAIN_TYPE(typename Motion2::Vector3) ReturnType;
57 ReturnType res;
59 return res;
60 }
61
78 template<
79 typename Motion1,
80 typename Motion2,
81 typename SE3Scalar,
82 int SE3Options,
83 typename Vector3Like>
87 const SE3Tpl<SE3Scalar, SE3Options> & placement,
88 const Eigen::MatrixBase<Vector3Like> & res)
89 {
90 typedef typename PINOCCHIO_EIGEN_PLAIN_TYPE(typename Motion1::LinearType) Vector3;
91
92 const Vector3 linear_velocity_frame_B =
93 spatial_velocity.linear() + spatial_velocity.angular().cross(placement.translation());
94
95 const Vector3 linear_acceleration_frame_B // expressed in the coordinate frame A
97
98 PINOCCHIO_EIGEN_CONST_CAST(Vector3Like, res).noalias() =
99 placement.rotation().transpose()
100 * (linear_acceleration_frame_B - placement.translation().cross(spatial_acceleration.angular()));
101 }
102
117 template<typename Motion1, typename Motion2, typename SE3Scalar, int SE3Options>
118 inline typename PINOCCHIO_EIGEN_PLAIN_TYPE(typename Motion2::Vector3) classicAcceleration(
121 const SE3Tpl<SE3Scalar, SE3Options> & placement)
122 {
123 typedef typename PINOCCHIO_EIGEN_PLAIN_TYPE(typename Motion2::Vector3) ReturnType;
124 ReturnType res;
126 return res;
127 }
128} // namespace pinocchio
129
130#endif // ifndef __pinocchio_spatial_classic_acceleration_hpp__
Main pinocchio namespace.
Definition treeview.dox:11
void classicAcceleration(const MotionDense< Motion1 > &spatial_velocity, const MotionDense< Motion2 > &spatial_acceleration, const Eigen::MatrixBase< Vector3Like > &res)
Computes the classic acceleration from a given spatial velocity and spatial acceleration.