rbdlsim/3rdparty/rbdl/python/crbdl.pxd

488 lines
14 KiB
Cython
Raw Normal View History

2020-10-03 22:55:14 +02:00
#cython: boundscheck=False
from libcpp.string cimport string
from libcpp cimport bool
from libcpp.vector cimport vector
cdef extern from "<rbdl/rbdl_math.h>" namespace "RigidBodyDynamics::Math":
cdef cppclass VectorNd:
VectorNd ()
VectorNd (int dim)
int rows()
int cols()
void resize (int)
double& operator[](int)
double* data()
cdef cppclass Vector3d:
Vector3d ()
int rows()
int cols()
double& operator[](int)
double* data()
cdef cppclass Quaternion:
Quaternion ()
int rows()
int cols()
double& operator[](int)
double* data()
Matrix3d toMatrix()
# Quaternion fromMatrix (Matrix3d &mat)
cdef cppclass SpatialVector:
SpatialVector ()
int rows()
int cols()
double& operator[](int)
double* data()
cdef cppclass Matrix3d:
Matrix3d ()
int rows()
int cols()
double& coeff "operator()"(int,int)
double* data()
cdef cppclass MatrixNd:
MatrixNd ()
MatrixNd (int rows, int cols)
int rows()
int cols()
void resize (int,int)
double& coeff "operator()"(int,int)
double* data()
void setZero()
cdef cppclass SpatialMatrix:
SpatialMatrix ()
int rows()
int cols()
double& coeff "operator()"(int,int)
double* data()
cdef cppclass Matrix63:
Matrix63 ()
int rows()
int cols()
double& coeff "operator()"(int,int)
double* data()
cdef extern from "<rbdl/Quaternion.h>" namespace "RigidBodyDynamics::Math::Quaternion":
Quaternion fromMatrix(const Matrix3d &mat)
cdef extern from "<rbdl/SpatialAlgebraOperators.h>" namespace "RigidBodyDynamics::Math":
cdef cppclass SpatialTransform:
SpatialTransform()
SpatialMatrix toMatrix()
SpatialTransform inverse()
SpatialTransform operator*(const SpatialTransform&)
Matrix3d E
Vector3d r
cdef cppclass SpatialRigidBodyInertia:
SpatialRigidBodyInertia()
SpatialMatrix toMatrix()
double m
Vector3d h
double Ixx, Iyx, Iyy, Izx, Izy, Izz
cdef extern from "<rbdl/Body.h>" namespace "RigidBodyDynamics":
cdef cppclass Body:
Body()
Body(const double mass, const Vector3d &com, const Matrix3d &inertia)
double mMass
Vector3d mCenterOfMass
Matrix3d mInertia
bool mIsVirtual
cdef cppclass FixedBody:
FixedBody()
double mMass
Vector3d mCenterOfMass
Matrix3d mInertia
unsigned int mMovableParent
SpatialTransform mParentTransform
SpatialTransform mBaseTransform
bool mIsVirtual
cdef extern from "<rbdl/Joint.h>" namespace "RigidBodyDynamics":
cdef enum JointType:
JointTypeUndefined = 0
JointTypeRevolute
JointTypePrismatic
JointTypeRevoluteX
JointTypeRevoluteY
JointTypeRevoluteZ
JointTypeSpherical
JointTypeEulerZYX
JointTypeEulerXYZ
JointTypeEulerYXZ
JointTypeTranslationXYZ
JointTypeFloatingBase
JointTypeFixed
JointType1DoF
JointType2DoF
JointType3DoF
JointType4DoF
JointType5DoF
JointType6DoF
JointTypeCustom
cdef extern from "<rbdl/Joint.h>" namespace "RigidBodyDynamics":
cdef cppclass Joint:
Joint()
Joint(JointType joint_type)
SpatialVector* mJointAxes
JointType mJointType
unsigned int mDoFCount
unsigned int q_index
cdef extern from "<rbdl/Model.h>" namespace "RigidBodyDynamics":
cdef cppclass Model:
Model()
unsigned int AddBody (const unsigned int parent_id,
const SpatialTransform &joint_frame,
const Joint &joint,
const Body &body,
string body_name
)
unsigned int AppendBody (const SpatialTransform &joint_frame,
const Joint &joint,
const Body &body,
string body_name
)
unsigned int GetParentBodyId(
unsigned int body_id)
unsigned int GetBodyId(
const char *body_name)
string GetBodyName (
unsigned int body_id)
bool IsBodyId (
unsigned int body_id)
bool IsFixedBodyId (
unsigned int body_id)
Quaternion GetQuaternion (
unsigned int body_id,
const VectorNd &q)
void SetQuaternion (
unsigned int body_id,
const Quaternion &quat,
VectorNd &q)
vector[unsigned int] _lambda
vector[unsigned int] lambda_q
# vector[vector[unsigned int]] mu
unsigned int dof_count
unsigned int q_size
unsigned int qdot_size
unsigned int previously_added_body_id
Vector3d gravity
vector[SpatialVector] v
vector[SpatialVector] a
vector[Joint] mJoints
vector[SpatialVector] S
vector[SpatialVector] v_J
vector[SpatialVector] c_J
vector[unsigned int] mJointUpdateOrder
vector[SpatialTransform] X_T
vector[unsigned int] mFixedJointCount
vector[Matrix63] multdof3_S
vector[Matrix63] multdof3_U
vector[Matrix63] multdof3_Dinv
vector[Matrix63] multdof3_u
vector[unsigned int] multdof3_w_index
vector[SpatialVector] c
vector[SpatialMatrix] IA
vector[SpatialVector] pA
vector[SpatialVector] U
VectorNd d
VectorNd u
vector[SpatialVector] f
vector[SpatialRigidBodyInertia] I
vector[SpatialRigidBodyInertia] Ic
vector[SpatialVector] hc
vector[SpatialTransform] X_lambda
vector[SpatialTransform] X_base
vector[FixedBody] mFixedBodies
unsigned int fixed_body_discriminator
vector[Body] mBodies
cdef extern from "<rbdl/Kinematics.h>" namespace "RigidBodyDynamics":
cdef void UpdateKinematics (Model& model,
const VectorNd &q,
const VectorNd &qdot,
const VectorNd &qddot)
cdef Vector3d CalcBodyToBaseCoordinates (Model& model,
const VectorNd &q,
const unsigned int body_id,
const Vector3d &body_point_coordinates,
bool update_kinematics)
cdef Vector3d CalcBaseToBodyCoordinates (Model& model,
const VectorNd &q,
const unsigned int body_id,
const Vector3d &body_point_coordinates,
bool update_kinematics)
cdef Matrix3d CalcBodyWorldOrientation (Model& model,
const VectorNd &q,
const unsigned int body_id,
bool update_kinematics)
cdef Vector3d CalcPointVelocity (Model& model,
const VectorNd &q,
const VectorNd &qdot,
const unsigned int body_id,
const Vector3d &body_point_coordinates,
bool update_kinematics)
cdef Vector3d CalcPointAcceleration (Model& model,
const VectorNd &q,
const VectorNd &qdot,
const VectorNd &qddot,
const unsigned int body_id,
const Vector3d &body_point_coordinates,
bool update_kinematics)
cdef SpatialVector CalcPointVelocity6D (Model& model,
const VectorNd &q,
const VectorNd &qdot,
const unsigned int body_id,
const Vector3d &body_point_coordinates,
bool update_kinematics)
cdef SpatialVector CalcPointAcceleration6D (Model& model,
const VectorNd &q,
const VectorNd &qdot,
const VectorNd &qddot,
const unsigned int body_id,
const Vector3d &body_point_coordinates,
bool update_kinematics)
cdef Vector3d CalcAngularVelocityfromMatrix (
const Matrix3d &RotMat
)
cdef cppclass InverseKinematicsConstraintSet:
InverseKinematicsConstraintSet()
unsigned int AddPointConstraint (
unsigned int body_id,
const Vector3d &body_point,
const Vector3d &target_pos
)
unsigned int AddOrientationConstraint (
unsigned int body_id,
const Matrix3d &target_orientation
)
unsigned int AddFullConstraint (
unsigned int body_id,
const Vector3d &body_point,
const Vector3d &target_pos,
const Matrix3d &target_orientation
)
unsigned int ClearConstraints()
unsigned int num_constraints
double damper # lambda is built-in keyword
unsigned int num_steps
unsigned int max_steps
double step_tol
double constraint_tol
double error_norm
MatrixNd J # Jacobian of all constraints
VectorNd e # Vector of all constraint residuals
vector[unsigned int] body_ids
vector[Vector3d] body_points
vector[Vector3d] target_positions
vector[Matrix3d] target_orientations
cdef bool InverseKinematics (
Model &model,
const VectorNd &Qinit,
InverseKinematicsConstraintSet &CS,
VectorNd &Qres
)
cdef extern from "<rbdl/rbdl_utils.h>" namespace "RigidBodyDynamics::Utils":
cdef void CalcCenterOfMass (Model& model,
const VectorNd &q,
const VectorNd &qdot,
const VectorNd *qdot,
double &mass,
Vector3d &com,
Vector3d *com_velocity,
Vector3d *com_acceleration,
Vector3d *angular_momentum,
Vector3d *change_of_angular_momentum,
bool update_kinematics)
cdef void CalcZeroMomentPoint (Model& model,
const VectorNd &q,
const VectorNd &qdot,
const VectorNd &qddot,
Vector3d* zmp,
const Vector3d &normal,
const Vector3d &point,
bool update_kinematics)
cdef extern from "<rbdl/Constraints.h>" namespace "RigidBodyDynamics":
cdef cppclass ConstraintSet:
ConstraintSet()
unsigned int AddContactConstraint (
unsigned int body_id,
const Vector3d &body_point,
const Vector3d &world_normal,
const char* constraint_name,
double normal_acceleration)
unsigned int AddLoopConstraint (
unsigned int id_predecessor,
unsigned int id_successor,
const SpatialTransform &X_predecessor,
const SpatialTransform &X_successor,
const SpatialVector &axis,
bool enable_stabilization,
double stabilization_param,
const char *constraint_name)
ConstraintSet Copy()
# void SetSolver (Math::LinearSolver solver)
bool Bind (const Model &model)
size_t size()
void clear()
# Math::LinearSolver
bool bound
vector[string] name
vector[unsigned int] body
vector[Vector3d] point
vector[Vector3d] normal
VectorNd acceleration
VectorNd force
VectorNd impulse
VectorNd v_plus
MatrixNd H
VectorNd C
VectorNd gamma
VectorNd G
MatrixNd A
VectorNd b
VectorNd x
MatrixNd GT_qr_Q
MatrixNd Y
MatrixNd Z
VectorNd qddot_y
VectorNd qddot_z
MatrixNd K
VectorNd a
VectorNd QDDot_t
VectorNd QDDot_0
vector[SpatialVector] f_t
vector[SpatialVector] f_ext_constraints
vector[Vector3d] point_accel_0
vector[SpatialVector] d_pA
vector[SpatialVector] d_a
VectorNd d_u
vector[SpatialMatrix] d_IA
vector[SpatialVector] d_U
VectorNd d_d
vector[Vector3d] d_multdof3_u
cdef extern from "rbdl_ptr_functions.h" namespace "RigidBodyDynamics":
cdef void CalcPointJacobianPtr (Model& model,
const double *q_ptr,
unsigned int body_id,
const Vector3d &point_position,
double *G,
bool update_kinematics)
cdef void CalcPointJacobian6DPtr (Model &model,
const double *q_ptr,
unsigned int body_id,
const Vector3d &point_position,
double *G,
bool update_kinematics)
cdef void CalcBodySpatialJacobianPtr (
Model &model,
const double *q_ptr,
unsigned int body_id,
double *G,
bool update_kinematics)
cdef void InverseDynamicsPtr (
Model &model,
const double* q_ptr,
const double* qdot_ptr,
const double* qddot_ptr,
double* tau_ptr,
vector[SpatialVector] *f_ext
)
cdef void NonlinearEffectsPtr (
Model &model,
const double* q_ptr,
const double* qdot_ptr,
double* tau_ptr
)
cdef void CompositeRigidBodyAlgorithmPtr (Model& model,
const double *q,
double *H,
bool update_kinematics)
cdef void ForwardDynamicsPtr (
Model &model,
const double* q_ptr,
const double* qdot_ptr,
double* tau_ptr,
const double* qddot_ptr,
vector[SpatialVector] *f_ext
)
cdef void ForwardDynamicsConstraintsDirectPtr (
Model &model,
const double* q_ptr,
const double* qdot_ptr,
const double* tau_ptr,
ConstraintSet &CS,
double* qddot_ptr
)
cdef extern from "rbdl_loadmodel.cc":
cdef bool rbdl_loadmodel (
const char* filename,
Model* model,
bool floating_base,
bool verbose)