iCub-main
|
This solver uses a modified version of the Newton-Euler algorithm to estimate both the external and internal forces/moments of a single kinematic chain. More...
#include <iDynContact.h>
Public Member Functions | |
iDynContactSolver (iDynChain *_c, const std::string &_info="", const NewEulMode _mode=DYNAMIC, iCub::skinDynLib::BodyPart bodyPart=iCub::skinDynLib::BODY_PART_UNKNOWN, unsigned int verb=iCub::skinDynLib::NO_VERBOSE) | |
Constructor. | |
iDynContactSolver (iDynChain *_c, unsigned int sensLink, SensorLinkNewtonEuler *sensor, const std::string &_info="", const NewEulMode _mode=DYNAMIC, iCub::skinDynLib::BodyPart bodyPart=iCub::skinDynLib::BODY_PART_UNKNOWN, unsigned int verb=iCub::skinDynLib::NO_VERBOSE) | |
Constructor with F/T sensor. | |
iDynContactSolver (iDynChain *_c, unsigned int sensLink, const yarp::sig::Matrix &_H, const yarp::sig::Matrix &_HC, double _m, const yarp::sig::Matrix &_I, const std::string &_info="", const NewEulMode _mode=DYNAMIC, iCub::skinDynLib::BodyPart bodyPart=iCub::skinDynLib::BODY_PART_UNKNOWN, unsigned int verb=iCub::skinDynLib::NO_VERBOSE) | |
Constructor with F/T sensor information. | |
~iDynContactSolver () | |
Default destructor. | |
bool | addContact (const iCub::skinDynLib::dynContact &contact) |
Add a new element to the contact list. | |
bool | addContacts (const iCub::skinDynLib::dynContactList &contacts) |
Add the specified elements to the contact list. | |
void | clearContactList () |
Clear the contact list. | |
const iCub::skinDynLib::dynContactList & | computeExternalContacts (const yarp::sig::Vector &FMsens) |
Compute an estimate of the external contact wrenches. | |
const iCub::skinDynLib::dynContactList & | computeExternalContacts () |
Compute an estimate of the external contact wrenches (assuming the F/T sensor measure have already been set) | |
void | computeWrenchFromSensorNewtonEuler () |
Compute an estimate of the external and internal contact wrenches (joint torques included). | |
const iCub::skinDynLib::dynContactList & | getContactList () const |
yarp::sig::Vector | getForceMomentEndEff () const |
Returns the end effector force-moment as a single (6x1) vector. | |
unsigned int | getUnknownNumber () const |
Public Member Functions inherited from iCub::iDyn::iDynSensor | |
iDynSensor (iDyn::iDynChain *_c, std::string _info, const NewEulMode _mode=DYNAMIC, unsigned int verb=iCub::skinDynLib::NO_VERBOSE) | |
Constructor without FT sensor: the sensor must be set with setSensor() | |
iDynSensor (iDyn::iDynChain *_c, unsigned int i, const yarp::sig::Matrix &_H, const yarp::sig::Matrix &_HC, const double _m, const yarp::sig::Matrix &_I, std::string _info, const NewEulMode _mode=DYNAMIC, unsigned int verb=iCub::skinDynLib::NO_VERBOSE) | |
Constructor with FT sensor. | |
bool | setSensorMeasures (const yarp::sig::Vector &F, const yarp::sig::Vector &Mu) |
Set the sensor measured force and moment. | |
bool | setSensorMeasures (const yarp::sig::Vector &FM) |
Set the sensor measured force and moment at once. | |
virtual bool | computeFromSensorNewtonEuler (const yarp::sig::Vector &F, const yarp::sig::Vector &Mu) |
The main computation method: given the FT sensor measurements, compute forces moments and torques in the iDynChain. | |
virtual bool | computeFromSensorNewtonEuler (const yarp::sig::Vector &FMu) |
The main computation method: given the FT sensor measurements, compute forces moments and torques in the iDynChain. | |
virtual void | computeFromSensorNewtonEuler () |
The main computation method: given the FT sensor measurements, compute forces moments and torques in the iDynChain. | |
yarp::sig::Matrix | getForces () const |
Returns the links forces as a matrix, where the i-th col is the i-th force. | |
yarp::sig::Matrix | getMoments () const |
Returns the links moments as a matrix, where the i-th col is the i-th moment. | |
yarp::sig::Vector | getTorques () const |
Returns the links torque as a vector. | |
yarp::sig::Vector | getForce (const unsigned int iLink) const |
Returns the i-th link force. | |
yarp::sig::Vector | getMoment (const unsigned int iLink) const |
Returns the i-th link moment. | |
double | getTorque (const unsigned int iLink) const |
Returns the i-th link torque. | |
yarp::sig::Matrix | getForcesNewtonEuler () const |
Returns the links forces as a matrix, where the i-th col is the i-th force. | |
yarp::sig::Matrix | getMomentsNewtonEuler () const |
Returns the links moments as a matrix, where the i-th col is the i-th moment. | |
yarp::sig::Vector | getTorquesNewtonEuler () const |
Returns the links torque as a vector. | |
Public Member Functions inherited from iCub::iDyn::iDynInvSensor | |
iDynInvSensor (iDyn::iDynChain *_c, const std::string &_info, const NewEulMode _mode=DYNAMIC, unsigned int verb=iCub::skinDynLib::NO_VERBOSE) | |
Constructor without FT sensor: the sensor must be set with setSensor() | |
iDynInvSensor (iDyn::iDynChain *_c, unsigned int i, const yarp::sig::Matrix &_H, const yarp::sig::Matrix &_HC, const double _m, const yarp::sig::Matrix &_I, const std::string &_info, const NewEulMode _mode=DYNAMIC, unsigned int verb=0) | |
Constructor with FT sensor. | |
bool | setSensor (unsigned int i, const yarp::sig::Matrix &_H, const yarp::sig::Matrix &_HC, const double _m, const yarp::sig::Matrix &_I) |
Set a new sensor or new sensor properties. | |
bool | setSensor (unsigned int i, SensorLinkNewtonEuler *sensor) |
void | computeSensorForceMoment () |
Compute forces and moments at the sensor frame; this method calls special Forward and Backward methods of SensorLink, using Newton-Euler's formula applied in the link where the sensor is placed on; the link is automatically found, being specified by the index in the chain and the chain itself; The case of a contact (ie external force) acting in the host link is not currently implemented. | |
std::string | toString () const |
Print some information. | |
yarp::sig::Vector | getSensorForce () const |
Returns the sensor estimated force. | |
yarp::sig::Vector | getSensorMoment () const |
Returns the sensor estimated moment. | |
yarp::sig::Vector | getSensorForceMoment () const |
Get the sensor force and moment in a single (6x1) vector. | |
yarp::sig::Matrix | getH () const |
Get the sensor roto-translational matrix defining its position/orientation wrt the link. | |
double | getMass () const |
Get the mass of the portion of link defined between sensor and i-th frame. | |
yarp::sig::Matrix | getCOM () const |
Get the sensor roto-traslational matrix of the center of mass of the semi-link defined by the sensor in the i-th link. | |
yarp::sig::Matrix | getInertia () const |
Get the inertia of the portion of link defined between sensor and i-th frame. | |
void | setMode (const NewEulMode _mode=DYNAMIC) |
void | setVerbose (unsigned int verb=iCub::skinDynLib::VERBOSE) |
void | setInfo (const std::string &_info) |
void | setSensorInfo (const std::string &_info) |
bool | setDynamicParameters (const double _m, const yarp::sig::Matrix &_HC, const yarp::sig::Matrix &_I) |
Set the dynamic parameters of the the portion of link defined between sensor and i-th frame. | |
std::string | getInfo () const |
std::string | getSensorInfo () const |
unsigned int | getSensorLink () const |
yarp::sig::Vector | getTorques () const |
virtual | ~iDynInvSensor () |
Protected Member Functions | |
void | findContactSubChain (unsigned int &firstLink, unsigned int &lastLink) |
yarp::sig::Matrix | buildA (unsigned int firstContactLink, unsigned int lastContactLink) |
yarp::sig::Vector | buildB (unsigned int firstContactLink, unsigned int lastContactLink) |
yarp::sig::Matrix | getHFromAtoB (unsigned int a, unsigned int b) |
Compute the rototraslation matrix from frame a to frame b. | |
yarp::sig::Vector | projectContact2Root (const iCub::skinDynLib::dynContact &c) |
Compute the wrench of the specified contact expressed w.r.t. | |
Protected Attributes | |
iCub::skinDynLib::dynContactList | contactList |
list of contacts acting on the link chain | |
const iCub::skinDynLib::dynContactList | nullList |
iCub::skinDynLib::BodyPart | bodyPart |
Protected Attributes inherited from iCub::iDyn::iDynInvSensor | |
unsigned int | lSens |
the link where the sensor is attached to | |
SensorLinkNewtonEuler * | sens |
the sensor | |
iDynChain * | chain |
the iDynChain describing the robotic chain | |
NewEulMode | mode |
static/dynamic/etc.. | |
unsigned int | verbose |
verbosity flag | |
std::string | info |
a string with useful information if needed | |
This solver uses a modified version of the Newton-Euler algorithm to estimate both the external and internal forces/moments of a single kinematic chain.
The solver assumes the contact locations are known and a F/T sensor measure is available.
Definition at line 52 of file iDynContact.h.
iDynContactSolver::iDynContactSolver | ( | iDynChain * | _c, |
const std::string & | _info = "" , |
||
const NewEulMode | _mode = DYNAMIC , |
||
iCub::skinDynLib::BodyPart | bodyPart = iCub::skinDynLib::BODY_PART_UNKNOWN , |
||
unsigned int | verb = iCub::skinDynLib::NO_VERBOSE |
||
) |
iDynContactSolver::iDynContactSolver | ( | iDynChain * | _c, |
unsigned int | sensLink, | ||
SensorLinkNewtonEuler * | sensor, | ||
const std::string & | _info = "" , |
||
const NewEulMode | _mode = DYNAMIC , |
||
iCub::skinDynLib::BodyPart | bodyPart = iCub::skinDynLib::BODY_PART_UNKNOWN , |
||
unsigned int | verb = iCub::skinDynLib::NO_VERBOSE |
||
) |
Constructor with F/T sensor.
_c | the robotic chain |
sensLink | the index of the link containing the F/T sensor |
sensor | the F/T sensor |
Definition at line 42 of file iDynContact.cpp.
iCub::iDyn::iDynContactSolver::iDynContactSolver | ( | iDynChain * | _c, |
unsigned int | sensLink, | ||
const yarp::sig::Matrix & | _H, | ||
const yarp::sig::Matrix & | _HC, | ||
double | _m, | ||
const yarp::sig::Matrix & | _I, | ||
const std::string & | _info = "" , |
||
const NewEulMode | _mode = DYNAMIC , |
||
iCub::skinDynLib::BodyPart | bodyPart = iCub::skinDynLib::BODY_PART_UNKNOWN , |
||
unsigned int | verb = iCub::skinDynLib::NO_VERBOSE |
||
) |
Constructor with F/T sensor information.
_c | the robotic chain |
sensLink | the index of the link containing the F/T sensor |
_H | the homogeneous transformation matrix from the F/T sensor link to the F/T sensor sub-link |
_H | the homogeneous transformation matrix from the F/T sensor to the F/T sensor sub-link center of mass |
_m | mass of the F/T sensor sub-link |
_I | inertia of the F/T sensor sub-link |
iDynContactSolver::~iDynContactSolver | ( | ) |
Default destructor.
Definition at line 54 of file iDynContact.cpp.
bool iDynContactSolver::addContact | ( | const iCub::skinDynLib::dynContact & | contact | ) |
Add a new element to the contact list.
The content of this new element is initialized to a copy of "contact".
contact | the contact to add |
Definition at line 56 of file iDynContact.cpp.
bool iDynContactSolver::addContacts | ( | const iCub::skinDynLib::dynContactList & | contacts | ) |
Add the specified elements to the contact list.
contacts | the elements to add |
Definition at line 69 of file iDynContact.cpp.
|
protected |
Definition at line 188 of file iDynContact.cpp.
|
protected |
Definition at line 239 of file iDynContact.cpp.
void iDynContactSolver::clearContactList | ( | ) |
Clear the contact list.
Definition at line 78 of file iDynContact.cpp.
const dynContactList & iDynContactSolver::computeExternalContacts | ( | ) |
Compute an estimate of the external contact wrenches (assuming the F/T sensor measure have already been set)
Definition at line 91 of file iDynContact.cpp.
const iCub::skinDynLib::dynContactList & iCub::iDyn::iDynContactSolver::computeExternalContacts | ( | const yarp::sig::Vector & | FMsens | ) |
Compute an estimate of the external contact wrenches.
FMsens | the wrench measured by the F/T sensor |
|
virtual |
Compute an estimate of the external and internal contact wrenches (joint torques included).
Reimplemented from iCub::iDyn::iDynSensor.
Definition at line 177 of file iDynContact.cpp.
|
protected |
Definition at line 308 of file iDynContact.cpp.
const dynContactList & iDynContactSolver::getContactList | ( | ) | const |
Definition at line 293 of file iDynContact.cpp.
|
virtual |
Returns the end effector force-moment as a single (6x1) vector.
Reimplemented from iCub::iDyn::iDynSensor.
Definition at line 298 of file iDynContact.cpp.
|
protected |
Compute the rototraslation matrix from frame a to frame b.
Definition at line 324 of file iDynContact.cpp.
unsigned int iDynContactSolver::getUnknownNumber | ( | ) | const |
Definition at line 350 of file iDynContact.cpp.
|
protected |
Compute the wrench of the specified contact expressed w.r.t.
the root reference frame of the chain (not the 0th frame, but the root).
Definition at line 341 of file iDynContact.cpp.
|
protected |
Definition at line 60 of file iDynContact.h.
|
protected |
list of contacts acting on the link chain
Definition at line 56 of file iDynContact.h.
|
protected |
Definition at line 58 of file iDynContact.h.