spatial-dyn
opspace_dynamics.h
1 
10 #ifndef SPATIAL_DYN_ALGORITHMS_OPSPACE_DYNAMICS_H_
11 #define SPATIAL_DYN_ALGORITHMS_OPSPACE_DYNAMICS_H_
12 
13 #include <map> // std::map
14 
15 #include "spatial_dyn/eigen/spatial_math.h"
16 #include "spatial_dyn/structs/articulated_body.h"
17 #include "spatial_dyn/structs/options.h"
18 
19 namespace spatial_dyn {
20 namespace opspace {
21 
22 bool IsSingular(const ArticulatedBody& ab, const Eigen::MatrixXd& J, double svd_epsilon = 0);
23 
24 Eigen::VectorXd InverseDynamics(const ArticulatedBody& ab, const Eigen::MatrixXd& J,
25  const Eigen::VectorXd& ddx, Eigen::MatrixXd *N = nullptr,
26  const std::map<size_t, SpatialForced>& f_external = {},
27  const InverseDynamicsOptions& options = {});
28 
29 const Eigen::MatrixXd& Inertia(const ArticulatedBody& ab, const Eigen::MatrixXd& J,
30  double svd_epsilon = 0);
31 
32 const Eigen::MatrixXd& InertiaInverse(const ArticulatedBody& ab, const Eigen::MatrixXd& J);
33 
34 const Eigen::MatrixXd& JacobianDynamicInverse(const ArticulatedBody& ab,
35  const Eigen::MatrixXd& J,
36  double svd_epsilon = 0);
37 
38 Eigen::Vector6d CentrifugalCoriolis(const ArticulatedBody& ab, const Eigen::MatrixXd& J,
39  int idx_link = -1,
40  const Eigen::Vector3d& offset = Eigen::Vector3d::Zero(),
41  double svd_epsilon = 0);
42 
43 Eigen::VectorXd Gravity(const ArticulatedBody& ab, const Eigen::MatrixXd& J,
44  double svd_epsilon = 0);
45 
46 Eigen::VectorXd ExternalForces(const ArticulatedBody& ab, const Eigen::MatrixXd& J,
47  const std::map<size_t, SpatialForced>& f_external = {},
48  double svd_epsilon = 0);
49 
50 Eigen::VectorXd Friction(const ArticulatedBody& ab, const Eigen::MatrixXd& J,
51  const Eigen::Ref<const Eigen::VectorXd> tau,
52  double svd_epsilon = 0, double stiction_epsilon = 0.01);
53 
54 // ABA
55 const Eigen::Matrix6d& InertiaAba(const ArticulatedBody& ab, int idx_link = -1,
56  const Eigen::Vector3d& offset = Eigen::Vector3d::Zero(),
57  double svd_epsilon = 0);
58 
59 const Eigen::Matrix6d& InertiaInverseAba(const ArticulatedBody& ab, int idx_link = -1,
60  const Eigen::Vector3d& offset = Eigen::Vector3d::Zero());
61 
62 Eigen::Vector6d CentrifugalCoriolisAba(const ArticulatedBody& ab, int idx_link = -1,
63  const Eigen::Vector3d& offset = Eigen::Vector3d::Zero(),
64  double svd_epsilon = 0);
65 
66 Eigen::Vector6d GravityAba(const ArticulatedBody& ab, int idx_link = -1,
67  const Eigen::Vector3d& offset = Eigen::Vector3d::Zero(),
68  const std::map<size_t, SpatialForced>& f_external = {},
69  double svd_epsilon = 0);
70 
71 } // namespace opspace
72 } // namespace spatial_dyn
73 
74 #endif // SPATIAL_DYN_ALGORITHMS_OPSPACE_DYNAMICS_H_
const Eigen::MatrixXd & InertiaInverseAba(const ArticulatedBody &ab)
Definition: forward_dynamics.cc:146
const Eigen::LDLT< Eigen::MatrixXd > & InertiaInverse(const ArticulatedBody &ab)
Definition: forward_dynamics.cc:137
const Eigen::VectorXd & Gravity(const ArticulatedBody &ab)
Definition: inverse_dynamics.cc:144
const Eigen::VectorXd & CentrifugalCoriolis(const ArticulatedBody &ab)
Definition: inverse_dynamics.cc:99
Eigen::VectorXd Friction(const ArticulatedBody &ab, Eigen::Ref< const Eigen::VectorXd > tau, bool compensate, double stiction_epsilon)
Definition: inverse_dynamics.cc:199
Eigen::VectorXd InverseDynamics(const ArticulatedBody &ab, const Eigen::VectorXd &ddq, const std::map< size_t, SpatialForced > &f_external, const InverseDynamicsOptions &options)
Definition: inverse_dynamics.cc:21
const Eigen::MatrixXd & Inertia(const ArticulatedBody &ab)
Definition: inverse_dynamics.cc:223
Definition: discrete_dynamics.cc:21