|
virtual scl::sBool | computeExternalContacts (sutil::CMappedList< std::string, scl::SForce > &arg_contacts) |
|
virtual scl::sBool | integrate (scl::SRobotIO &arg_inputs, const scl::sFloat arg_time_interval) |
|
virtual scl::sFloat | computeEnergyKinetic (sutil::CMappedTree< std::string, scl::SRigidBodyDyn > &arg_tree, const Eigen::VectorXd &arg_q, const Eigen::VectorXd &arg_dq) |
|
virtual scl::sFloat | computeEnergyPotential (sutil::CMappedTree< std::string, scl::SRigidBodyDyn > &arg_tree, const Eigen::VectorXd &arg_q) |
|
Eigen::Vector3d | computeForce (std::string name) |
|
Eigen::Vector3d | computeTorque (std::string name, Eigen::Vector3d pos) |
|
scl::sBool | hasContacted (std::string name) |
|
scl::sInt | getNumContacts (std::string name) |
|
virtual bool | computeGCModel (scl::SRobotSensors const *arg_sensor_data, scl::SGcModel *arg_gc_model) |
|
virtual const void * | getIdForLink (std::string arg_link_name) |
|
| CDynamics3d () |
|
virtual | ~CDynamics3d () |
|
virtual bool | init (const scl::SRobotParsed &arg_robot_data) |
|
virtual sBool | computeTransformsForAllLinks (sutil::CMappedTree< std::string, SRigidBodyDyn > &arg_tree, const Eigen::VectorXd &arg_q) |
|
virtual sBool | computeTransform (SRigidBodyDyn &arg_link, const Eigen::VectorXd &arg_q) |
|
virtual sBool | computeTransformToAncestor (Eigen::Affine3d &arg_T, SRigidBodyDyn &arg_link, const SRigidBodyDyn *arg_ancestor, const Eigen::VectorXd &arg_q) |
|
virtual sBool | computeJacobianWithTransforms (Eigen::MatrixXd &arg_J, SRigidBodyDyn &arg_link, const Eigen::VectorXd &arg_q, const Eigen::Vector3d &arg_pos_local) |
|
virtual sBool | computeJacobian (Eigen::MatrixXd &arg_J, const SRigidBodyDyn &arg_link, const Eigen::VectorXd &arg_q, const Eigen::Vector3d &arg_pos_local) const |
|
virtual sBool | computeJacobian (Eigen::MatrixXd &arg_J, const SRigidBodyDyn &arg_link, const SRigidBodyDyn *arg_ancestor, const Eigen::VectorXd &arg_q, const Eigen::Vector3d &arg_pos_local) |
|
virtual sBool | computeJacobianTrans (Eigen::MatrixXd &arg_J, const SRigidBodyDyn &arg_link, const SRigidBodyDyn *arg_ancestor, const Eigen::VectorXd &arg_q, const Eigen::Vector3d &arg_pos_local) |
|
virtual sBool | computeJacobianRot (Eigen::MatrixXd &arg_J, const SRigidBodyDyn &arg_link, const SRigidBodyDyn *arg_ancestor, const Eigen::VectorXd &arg_q, const Eigen::Vector3d &arg_pos_local) |
|
virtual sBool | hasBeenInit () |
|
Computes the dynamics of a robot model using the Dynamics3d dynamics engine.
This is presently under development. Contact the author(s) for more details.
Calculates the collision forces for the robot to which this dynamics object is assigned.
Uses std::string based force lookup. The dynamics implementation should support this (maintain a map or something).
NOTE : The dynamics engine may delete forces from the passed mapped list at will. Do not store pointers to them at random places in your code.
NOTE TODO : Fix this:
- Parameters
-
arg_contacts | This is where the simulator will store the contact forces. It may use the std::string to identify when to remove or re-add forces. |
Reimplemented from scl::CDynamicsBase.
virtual sBool scl::CDynamicsBase::computeTransformToAncestor |
( |
Eigen::Affine3d & |
arg_T, |
|
|
SRigidBodyDyn & |
arg_link, |
|
|
const SRigidBodyDyn * |
arg_ancestor, |
|
|
const Eigen::VectorXd & |
arg_q |
|
) |
| |
|
inlinevirtualinherited |
Calculates the Transformation Matrix for the robot to which this dynamics object is assigned. x_ancestor_link_coords = arg_link.T_lnk_ * x_link_coords
Note that the local transformation matrices are updated in all the link data structs from arg_link to arg_ancestor.
Also note that there are two origins, robot origin, which actually has a node allocated for it. And the global scl origin, for which you should pass in a NULL as ancestor.
- Parameters
-
arg_T | The transformation matrix in which to store the answer |
arg_link | The link at which the transformation matrix is to be calculated |
arg_ancestor | The link up to which the transformation matrix is to be calculated Pass NULL to compute the transform up to the global root. |
arg_q | The current generalized coordinates. |
Reimplemented in scl::CDynamicsScl.
Initializes the dynamics to be computed for a specific robot.
Returns, true : Succeeds in creating a dynamics object
false : If it can't find the robot or if the information is inconsistent with what the implementation requires, it returns false
Implements scl::CDynamicsBase.
Integrates the robot's state. Uses the given applied forces, torques, positions and velocities and its internal dynamic model to compute new positions and velocities. Operates on the SRobotIO data structure.
Reads from, and updates: arg_inputs_.sensors_.q_, dq_, ddq_
Reads from: arg_inputs_.sensors_.forces_external_ arg_inputs_.actuators_.force_gc_commanded_
- Parameters
-
arg_inputs | The existing generalized coordinates, velocities and accelerations + The generalized forces + task (euclidean) forces and the list of contact points and links. |
arg_time_interval | The time across which the system should integrate the dynamics. Could take fixed steps or dynamic ones in between. Up to the integrator implementation. |
Reimplemented from scl::CDynamicsBase.