A floating base rigid body system that uses forward dynamics. The input vector is assumed to consist of joint torques and end-effector forces expressed in the world.
More...
|
| ProjectedFDSystem (typename RBDDynamics::EE_in_contact_t eeInContact=true) |
|
virtual | ~ProjectedFDSystem () |
|
virtual RBDDynamics & | dynamics () override |
|
virtual const RBDDynamics & | dynamics () const override |
|
virtual void | computeControlledDynamics (const StateVector &state, const SCALAR &t, const ControlVector &control, StateVector &derivative) override |
|
void | setEEInContact (typename RBDDynamics::EE_in_contact_t &eeInContact) |
|
RBDDynamics::RBDState_t | RBDStateFromVector (const StateVector &state) |
|
template<bool T> |
RBDDynamics::RBDState_t | RBDStateFromVectorImpl (const StateVector &state, typename std::enable_if< T, bool >::type=true) |
|
template<bool T> |
RBDDynamics::RBDState_t | RBDStateFromVectorImpl (const StateVector &state, typename std::enable_if<!T, bool >::type=true) |
|
template<bool T> |
StateVector | toStateDerivative (const typename RBDDynamics::RBDAcceleration_t &acceleration, const typename RBDDynamics::RBDState_t &state, typename std::enable_if< T, bool >::type=true) |
|
template<bool T> |
StateVector | toStateDerivative (const typename RBDDynamics::RBDAcceleration_t &acceleration, const typename RBDDynamics::RBDState_t &state, typename std::enable_if<!T, bool >::type=true) |
|
virtual ProjectedFDSystem< RBDDynamics, QUAT_INTEGRATION > * | clone () const override |
|
| RBDSystem ()=default |
|
virtual | ~RBDSystem ()=default |
|
| ControlledSystem (const SYSTEM_TYPE &type=SYSTEM_TYPE::GENERAL) |
|
| ControlledSystem (std::shared_ptr< ct::core::Controller< RBDDynamics::NSTATE+QUAT_INTEGRATION, RBDDynamics::NJOINTS, RBDDynamics::SCALAR >> controller, const SYSTEM_TYPE &type=SYSTEM_TYPE::GENERAL) |
|
| ControlledSystem (const ControlledSystem &arg) |
|
virtual | ~ControlledSystem () |
|
void | setController (const std::shared_ptr< Controller< RBDDynamics::NSTATE+QUAT_INTEGRATION, RBDDynamics::NJOINTS, RBDDynamics::SCALAR >> &controller) |
|
void | getController (std::shared_ptr< Controller< RBDDynamics::NSTATE+QUAT_INTEGRATION, RBDDynamics::NJOINTS, RBDDynamics::SCALAR >> &controller) const |
|
std::shared_ptr< Controller< RBDDynamics::NSTATE+QUAT_INTEGRATION, RBDDynamics::NJOINTS, RBDDynamics::SCALAR > > | getController () |
|
virtual void | computeDynamics (const StateVector< RBDDynamics::NSTATE+QUAT_INTEGRATION, RBDDynamics::SCALAR > &state, const time_t &t, StateVector< RBDDynamics::NSTATE+QUAT_INTEGRATION, RBDDynamics::SCALAR > &derivative) override |
|
virtual void | computeControlledDynamics (const StateVector< RBDDynamics::NSTATE+QUAT_INTEGRATION, RBDDynamics::SCALAR > &state, const time_t &t, const ControlVector< RBDDynamics::NJOINTS, RBDDynamics::SCALAR > &control, StateVector< RBDDynamics::NSTATE+QUAT_INTEGRATION, RBDDynamics::SCALAR > &derivative)=0 |
|
ControlVector< RBDDynamics::NJOINTS, RBDDynamics::SCALAR > | getLastControlAction () |
|
| System (const SYSTEM_TYPE &type=SYSTEM_TYPE::GENERAL) |
|
| System (const System &other) |
|
virtual | ~System () |
|
virtual void | computeDynamics (const StateVector< STATE_DIM, SCALAR > &state, const time_t &t, StateVector< STATE_DIM, SCALAR > &derivative)=0 |
|
SYSTEM_TYPE | getType () const |
|
virtual bool | isSymplectic () const |
|
template<class RBDDynamics, bool QUAT_INTEGRATION = false>
class ct::rbd::ProjectedFDSystem< RBDDynamics, QUAT_INTEGRATION >
A floating base rigid body system that uses forward dynamics. The input vector is assumed to consist of joint torques and end-effector forces expressed in the world.
This class creates a ct::core::ControlledSystem based on ProjectedDynamics to make it compatible with ct::core functionality such as a ct::core::Integrator. Please note that there are multiple choices of transforming a Rigid Body Dynamics system into an ODE used for integration and (optimal) control. This particular modelling is explained below. For other choices see FloatingBaseFDSystem and FixBaseFDSystem.
The goal of this class is to transform a Rigid Body Dynamics system into an ODE of the form using projected forward dynamics as implemented in ProjectedDynamics. To do so, we define the state as
where is the base orientation and is the base position, both expressed the world frame. is the local angular velocity of the base and is the linear velocity of the base, both are expressed in the local base coordinate frame. Hence, the velocities are NOT direct derivatives of the position/orientation. and are the joint angles and joint velocities, respectively.
The input vector contains the joint torques. We further assume the base is unactuated.
Given the Projected Rigid Body Dynamics
where are the generalized coordinates expressed in the base frame.
The system dynamics then become: