Virtual base robot class. More...
#include <robot.h>
Public Member Functions | |
ReturnMatrix | acceleration (const ColumnVector &q, const ColumnVector &qp, const ColumnVector &tau) |
Joints acceleration without contact force. | |
ReturnMatrix | acceleration (const ColumnVector &q, const ColumnVector &qp, const ColumnVector &tau, const ColumnVector &Fext, const ColumnVector &Next) |
Joints acceleration. | |
virtual ReturnMatrix | C (const ColumnVector &qp)=0 |
virtual void | delta_torque (const ColumnVector &q, const ColumnVector &qp, const ColumnVector &qpp, const ColumnVector &dq, const ColumnVector &dqp, const ColumnVector &dqpp, ColumnVector &torque, ColumnVector &dtorque)=0 |
virtual void | dq_torque (const ColumnVector &q, const ColumnVector &qp, const ColumnVector &qpp, const ColumnVector &dq, ColumnVector &torque, ColumnVector &dtorque)=0 |
virtual void | dqp_torque (const ColumnVector &q, const ColumnVector &qp, const ColumnVector &dqp, ColumnVector &torque, ColumnVector &dtorque)=0 |
ReturnMatrix | dtau_dq (const ColumnVector &q, const ColumnVector &qp, const ColumnVector &qpp) |
Sensitivity of the dynamics with respect to . | |
ReturnMatrix | dtau_dqp (const ColumnVector &q, const ColumnVector &qp) |
Sensitivity of the dynamics with respect to . | |
virtual void | dTdqi (Matrix &dRot, ColumnVector &dp, const int i)=0 |
virtual ReturnMatrix | dTdqi (const int i)=0 |
void | error (const std::string &msg1) const |
Print the message msg1 on the console. | |
virtual ReturnMatrix | G ()=0 |
int | get_available_dof () const |
Counts number of currently non-immobile links. | |
int | get_available_dof (const int endlink) const |
Counts number of currently non-immobile links up to and including endlink. | |
ReturnMatrix | get_available_q (void) const |
Return the joint position vector of available (non-immobile) joints. | |
ReturnMatrix | get_available_q (const int endlink) const |
Return the joint position vector of available (non-immobile) joints up to and including endlink. | |
ReturnMatrix | get_available_qp (void) const |
Return the joint velocity vector of available (non-immobile) joints. | |
ReturnMatrix | get_available_qp (const int endlink) const |
Return the joint velocity vector of available (non-immobile) joints up to and including endlink. | |
ReturnMatrix | get_available_qpp (void) const |
Return the joint acceleration vector of available (non-immobile) joints. | |
ReturnMatrix | get_available_qpp (const int endlink) const |
Return the joint acceleration vector of available (non-immobile) joints up to and including endlink. | |
bool | get_DH () const |
Return true if in DH notation, false otherwise. | |
int | get_dof () const |
Return dof. | |
int | get_fix () const |
Return fix. | |
Real | get_q (const int i) const |
ReturnMatrix | get_q (void) const |
Return the joint position vector. | |
ReturnMatrix | get_qp (void) const |
Return the joint velocity vector. | |
ReturnMatrix | get_qpp (void) const |
Return the joint acceleration vector. | |
ReturnMatrix | inertia (const ColumnVector &q) |
Inertia of the manipulator. | |
virtual ReturnMatrix | inv_kin (const Matrix &Tobj, const int mj=0) |
Numerical inverse kinematics. See inv_kin(const Matrix & Tobj, const int mj, const int endlink, bool & converge) | |
ReturnMatrix | inv_kin (const Matrix &Tobj, const int mj, bool &converge) |
virtual ReturnMatrix | inv_kin (const Matrix &Tobj, const int mj, const int endlink, bool &converge) |
Numerical inverse kinematics. | |
virtual ReturnMatrix | inv_kin_puma (const Matrix &Tobj, bool &converge)=0 |
virtual ReturnMatrix | inv_kin_rhino (const Matrix &Tobj, bool &converge)=0 |
virtual ReturnMatrix | inv_kin_schilling (const Matrix &Tobj, bool &converge)=0 |
virtual ReturnMatrix | jacobian (const int ref=0) const |
Jacobian of mobile links expressed at frame ref. | |
virtual ReturnMatrix | jacobian (const int endlink, const int ref) const =0 |
ReturnMatrix | jacobian_DLS_inv (const double eps, const double lambda_max, const int ref=0) const |
Inverse Jacobian based on damped least squares inverse. | |
virtual ReturnMatrix | jacobian_dot (const int ref=0) const =0 |
void | kine (Matrix &Rot, ColumnVector &pos) const |
Direct kinematics at end effector. | |
void | kine (Matrix &Rot, ColumnVector &pos, const int j) const |
Direct kinematics at end effector. | |
ReturnMatrix | kine (void) const |
Return the end effector direct kinematics transform matrix. | |
ReturnMatrix | kine (const int j) const |
Return the frame j direct kinematics transform matrix. | |
ReturnMatrix | kine_pd (const int ref=0) const |
Direct kinematics with velocity. | |
virtual void | kine_pd (Matrix &Rot, ColumnVector &pos, ColumnVector &pos_dot, const int ref) const =0 |
Robot_basic & | operator= (const Robot_basic &x) |
Overload = operator. | |
Robot_basic (const int ndof=1, const bool dh_parameter=false, const bool min_inertial_para=false) | |
Constructor. | |
Robot_basic (const Matrix &initrobot_motor, const bool dh_parameter=false, const bool min_inertial_para=false) | |
Constructor. | |
Robot_basic (const Matrix &initrobot, const Matrix &initmotor, const bool dh_parameter=false, const bool min_inertial_para=false) | |
Constructor. | |
Robot_basic (const std::string &filename, const std::string &robotName, const bool dh_parameter=false, const bool min_inertial_para=false) | |
Robot_basic (const Robot_basic &x) | |
Copy constructor. | |
virtual void | robotType_inv_kin ()=0 |
void | set_q (const ColumnVector &q) |
Set the joint position vector. | |
void | set_q (const Matrix &q) |
Set the joint position vector. | |
void | set_q (const Real q, const int i) |
void | set_qp (const ColumnVector &qp) |
Set the joint velocity vector. | |
void | set_qpp (const ColumnVector &qpp) |
Set the joint acceleration vector. | |
virtual ReturnMatrix | torque (const ColumnVector &q, const ColumnVector &qp, const ColumnVector &qpp)=0 |
virtual ReturnMatrix | torque (const ColumnVector &q, const ColumnVector &qp, const ColumnVector &qpp, const ColumnVector &Fext_, const ColumnVector &Next_)=0 |
virtual ReturnMatrix | torque_novelocity (const ColumnVector &qpp)=0 |
virtual | ~Robot_basic () |
Destructor. | |
Public Attributes | |
ColumnVector * | a |
ColumnVector * | da |
ColumnVector * | df |
ColumnVector * | dF |
ColumnVector * | dn |
ColumnVector * | dN |
ColumnVector * | dp |
ColumnVector * | dvp |
ColumnVector * | dw |
ColumnVector * | dwp |
ColumnVector * | f |
ColumnVector * | F |
ColumnVector * | f_nv |
ColumnVector | gravity |
Gravity vector. | |
Link * | links |
Pointer on Link cclass. | |
ColumnVector * | N |
ColumnVector * | n |
ColumnVector * | n_nv |
ColumnVector * | p |
ColumnVector * | pp |
Matrix * | R |
Temprary rotation matrix. | |
ColumnVector * | vp |
ColumnVector * | w |
ColumnVector * | wp |
ColumnVector | z0 |
Axis vector at each joint. | |
Private Types | |
enum | EnumRobotType { DEFAULT = 0, RHINO = 1, PUMA = 2, SCHILLING = 3 } |
enum EnumRobotType More... | |
Private Member Functions | |
void | cleanUpPointers () |
Free all vectors and matrix memory. | |
Private Attributes | |
int | dof |
Degree of freedom. | |
int | fix |
Virtual link, used with modified DH notation. | |
EnumRobotType | robotType |
Robot type. | |
Friends | |
class | mRobot |
class | mRobot_min_para |
class | mRobotgl |
class | Robot |
class | Robotgl |
enum Robot_basic::EnumRobotType [private] |
Robot_basic::Robot_basic | ( | const int | ndof = 1 , |
const bool | dh_parameter = false , |
||
const bool | min_inertial_para = false |
||
) |
Constructor.
ndof,: | Robot degree of freedom. |
dh_parameter,: | true if DH notation, false if modified DH notation. |
min_inertial_para,: | true inertial parameter are in minimal form. |
Allocate memory for vectors and matrix pointers. Initialize all the Links instance.
Robot_basic::Robot_basic | ( | const Matrix & | dhinit, |
const bool | dh_parameter = false , |
||
const bool | min_inertial_para = false |
||
) |
Constructor.
dhinit,: | Robot initialization matrix. |
dh_parameter,: | true if DH notation, false if modified DH notation. |
min_inertial_para,: | true inertial parameter are in minimal form. |
Allocate memory for vectors and matrix pointers. Initialize all the Links instance.
Robot_basic::Robot_basic | ( | const Matrix & | initrobot, |
const Matrix & | initmotor, | ||
const bool | dh_parameter = false , |
||
const bool | min_inertial_para = false |
||
) |
Constructor.
initrobot,: | Robot initialization matrix. |
initmotor,: | Motor initialization matrix. |
dh_parameter,: | true if DH notation, false if modified DH notation. |
min_inertial_para,: | true inertial parameter are in minimal form. |
Allocate memory for vectors and matrix pointers. Initialize all the Links instance.
Robot_basic::Robot_basic | ( | const std::string & | filename, |
const std::string & | robotName, | ||
const bool | dh_parameter = false , |
||
const bool | min_inertial_para = false |
||
) |
Robot_basic::Robot_basic | ( | const Robot_basic & | x | ) |
Robot_basic::~Robot_basic | ( | ) | [virtual] |
ReturnMatrix Robot_basic::acceleration | ( | const ColumnVector & | q, |
const ColumnVector & | qp, | ||
const ColumnVector & | tau | ||
) |
Joints acceleration without contact force.
Definition at line 100 of file dynamics.cpp.
ReturnMatrix Robot_basic::acceleration | ( | const ColumnVector & | q, |
const ColumnVector & | qp, | ||
const ColumnVector & | tau_cmd, | ||
const ColumnVector & | Fext, | ||
const ColumnVector & | Next | ||
) |
Joints acceleration.
The robot dynamics is
then the joint acceleration is
Definition at line 112 of file dynamics.cpp.
virtual ReturnMatrix Robot_basic::C | ( | const ColumnVector & | qp | ) | [pure virtual] |
Implemented in mRobot_min_para, mRobot, and Robot.
void Robot_basic::cleanUpPointers | ( | ) | [private] |
virtual void Robot_basic::delta_torque | ( | const ColumnVector & | q, |
const ColumnVector & | qp, | ||
const ColumnVector & | qpp, | ||
const ColumnVector & | dq, | ||
const ColumnVector & | dqp, | ||
const ColumnVector & | dqpp, | ||
ColumnVector & | torque, | ||
ColumnVector & | dtorque | ||
) | [pure virtual] |
Implemented in mRobot_min_para, mRobot, and Robot.
virtual void Robot_basic::dq_torque | ( | const ColumnVector & | q, |
const ColumnVector & | qp, | ||
const ColumnVector & | qpp, | ||
const ColumnVector & | dq, | ||
ColumnVector & | torque, | ||
ColumnVector & | dtorque | ||
) | [pure virtual] |
Implemented in mRobot_min_para, mRobot, and Robot.
virtual void Robot_basic::dqp_torque | ( | const ColumnVector & | q, |
const ColumnVector & | qp, | ||
const ColumnVector & | dqp, | ||
ColumnVector & | torque, | ||
ColumnVector & | dtorque | ||
) | [pure virtual] |
Implemented in mRobot_min_para, mRobot, and Robot.
ReturnMatrix Robot_basic::dtau_dq | ( | const ColumnVector & | q, |
const ColumnVector & | qp, | ||
const ColumnVector & | qpp | ||
) |
Sensitivity of the dynamics with respect to .
This function computes .
Definition at line 58 of file sensitiv.cpp.
ReturnMatrix Robot_basic::dtau_dqp | ( | const ColumnVector & | q, |
const ColumnVector & | qp | ||
) |
Sensitivity of the dynamics with respect to .
This function computes .
Definition at line 84 of file sensitiv.cpp.
virtual void Robot_basic::dTdqi | ( | Matrix & | dRot, |
ColumnVector & | dp, | ||
const int | i | ||
) | [pure virtual] |
Implemented in mRobot_min_para, mRobot, and Robot.
virtual ReturnMatrix Robot_basic::dTdqi | ( | const int | i | ) | [pure virtual] |
Implemented in mRobot_min_para, mRobot, and Robot.
void Robot_basic::error | ( | const std::string & | msg1 | ) | const |
virtual ReturnMatrix Robot_basic::G | ( | ) | [pure virtual] |
Implemented in mRobot_min_para, mRobot, and Robot.
int Robot_basic::get_available_dof | ( | ) | const [inline] |
int Robot_basic::get_available_dof | ( | const int | endlink | ) | const |
ReturnMatrix Robot_basic::get_available_q | ( | void | ) | const [inline] |
ReturnMatrix Robot_basic::get_available_q | ( | const int | endlink | ) | const |
ReturnMatrix Robot_basic::get_available_qp | ( | void | ) | const [inline] |
ReturnMatrix Robot_basic::get_available_qp | ( | const int | endlink | ) | const |
ReturnMatrix Robot_basic::get_available_qpp | ( | void | ) | const [inline] |
ReturnMatrix Robot_basic::get_available_qpp | ( | const int | endlink | ) | const |
bool Robot_basic::get_DH | ( | ) | const [inline] |
int Robot_basic::get_dof | ( | ) | const [inline] |
int Robot_basic::get_fix | ( | ) | const [inline] |
Real Robot_basic::get_q | ( | const int | i | ) | const [inline] |
ReturnMatrix Robot_basic::get_q | ( | void | ) | const |
ReturnMatrix Robot_basic::get_qp | ( | void | ) | const |
ReturnMatrix Robot_basic::get_qpp | ( | void | ) | const |
ReturnMatrix Robot_basic::inertia | ( | const ColumnVector & | q | ) |
Inertia of the manipulator.
Definition at line 83 of file dynamics.cpp.
ReturnMatrix Robot_basic::inv_kin | ( | const Matrix & | Tobj, |
const int | mj = 0 |
||
) | [virtual] |
Numerical inverse kinematics. See inv_kin(const Matrix & Tobj, const int mj, const int endlink, bool & converge)
Overload inv_kin function.
Reimplemented in mRobot_min_para, mRobot, and Robot.
Definition at line 83 of file invkine.cpp.
ReturnMatrix Robot_basic::inv_kin | ( | const Matrix & | Tobj, |
const int | mj, | ||
bool & | converge | ||
) | [inline] |
ReturnMatrix Robot_basic::inv_kin | ( | const Matrix & | Tobj, |
const int | mj, | ||
const int | endlink, | ||
bool & | converge | ||
) | [virtual] |
Numerical inverse kinematics.
Tobj,: | Transformation matrix expressing the desired end effector pose. |
mj,: | Select algorithm type, 0: based on Jacobian, 1: based on derivative of T. |
converge,: | Indicate if the algorithm converge. |
endlink,: | the link to pretend is the end effector |
The joint position vector before the inverse kinematics is returned if the algorithm does not converge.
Reimplemented in mRobot_min_para, mRobot, and Robot.
Definition at line 91 of file invkine.cpp.
virtual ReturnMatrix Robot_basic::inv_kin_puma | ( | const Matrix & | Tobj, |
bool & | converge | ||
) | [pure virtual] |
Implemented in mRobot_min_para, mRobot, and Robot.
virtual ReturnMatrix Robot_basic::inv_kin_rhino | ( | const Matrix & | Tobj, |
bool & | converge | ||
) | [pure virtual] |
Implemented in mRobot_min_para, mRobot, and Robot.
virtual ReturnMatrix Robot_basic::inv_kin_schilling | ( | const Matrix & | Tobj, |
bool & | converge | ||
) | [pure virtual] |
Implemented in mRobot_min_para, mRobot, and Robot.
virtual ReturnMatrix Robot_basic::jacobian | ( | const int | ref = 0 | ) | const [inline, virtual] |
Jacobian of mobile links expressed at frame ref.
Reimplemented in mRobot_min_para, mRobot, and Robot.
virtual ReturnMatrix Robot_basic::jacobian | ( | const int | endlink, |
const int | ref | ||
) | const [pure virtual] |
Implemented in mRobot_min_para, mRobot, and Robot.
ReturnMatrix Robot_basic::jacobian_DLS_inv | ( | const double | eps, |
const double | lambda_max, | ||
const int | ref = 0 |
||
) | const |
Inverse Jacobian based on damped least squares inverse.
eps,: | Range of singular region. |
lambda_max,: | Value to obtain a good solution in singular region. |
ref,: | Selected frame (ex: joint 4). |
The Jacobian inverse, based on damped least squares, is
where and is a damping factor and the identity matrix respectively. Based on SVD (Singular Value Decomposition) the Jacobian is , where , and are respectively the input vector, the ouput vector and the singular values ( , is the rank of J). Using the previous equations we obtain
A singular region, based on the smallest singular value, can be defined by
Definition at line 169 of file kinemat.cpp.
virtual ReturnMatrix Robot_basic::jacobian_dot | ( | const int | ref = 0 | ) | const [pure virtual] |
Implemented in mRobot_min_para, mRobot, and Robot.
void Robot_basic::kine | ( | Matrix & | Rot, |
ColumnVector & | pos | ||
) | const |
Direct kinematics at end effector.
Rot,: | End effector orientation. |
pos,: | Enf effector position. |
Definition at line 92 of file kinemat.cpp.
void Robot_basic::kine | ( | Matrix & | Rot, |
ColumnVector & | pos, | ||
const int | j | ||
) | const |
Direct kinematics at end effector.
Rot,: | Frame j orientation. |
pos,: | Frame j position. |
j,: | Selected frame. |
Definition at line 102 of file kinemat.cpp.
ReturnMatrix Robot_basic::kine | ( | void | ) | const |
Return the end effector direct kinematics transform matrix.
Definition at line 120 of file kinemat.cpp.
ReturnMatrix Robot_basic::kine | ( | const int | j | ) | const |
Return the frame j direct kinematics transform matrix.
Definition at line 129 of file kinemat.cpp.
ReturnMatrix Robot_basic::kine_pd | ( | const int | j = 0 | ) | const |
Direct kinematics with velocity.
Return a matrix. The first three columns are the frame j to the base rotation, the fourth column is the frame j w.r.t to the base postion vector and the last column is the frame j w.r.t to the base translational velocity vector. Print an error on the console if j is out of range.
Definition at line 142 of file kinemat.cpp.
virtual void Robot_basic::kine_pd | ( | Matrix & | Rot, |
ColumnVector & | pos, | ||
ColumnVector & | pos_dot, | ||
const int | ref | ||
) | const [pure virtual] |
Implemented in mRobot_min_para, mRobot, and Robot.
Robot_basic & Robot_basic::operator= | ( | const Robot_basic & | x | ) |
virtual void Robot_basic::robotType_inv_kin | ( | ) | [pure virtual] |
Implemented in mRobot_min_para, mRobot, and Robot.
void Robot_basic::set_q | ( | const ColumnVector & | q | ) |
void Robot_basic::set_q | ( | const Matrix & | q | ) |
void Robot_basic::set_q | ( | const Real | q, |
const int | i | ||
) | [inline] |
void Robot_basic::set_qp | ( | const ColumnVector & | qp | ) |
void Robot_basic::set_qpp | ( | const ColumnVector & | qpp | ) |
virtual ReturnMatrix Robot_basic::torque | ( | const ColumnVector & | q, |
const ColumnVector & | qp, | ||
const ColumnVector & | qpp | ||
) | [pure virtual] |
Implemented in mRobot_min_para, mRobot, and Robot.
virtual ReturnMatrix Robot_basic::torque | ( | const ColumnVector & | q, |
const ColumnVector & | qp, | ||
const ColumnVector & | qpp, | ||
const ColumnVector & | Fext_, | ||
const ColumnVector & | Next_ | ||
) | [pure virtual] |
Implemented in mRobot_min_para, mRobot, and Robot.
virtual ReturnMatrix Robot_basic::torque_novelocity | ( | const ColumnVector & | qpp | ) | [pure virtual] |
Implemented in mRobot_min_para, mRobot, and Robot.
friend class mRobot_min_para [friend] |
ColumnVector * Robot_basic::a |
ColumnVector * Robot_basic::da |
ColumnVector * Robot_basic::df |
ColumnVector * Robot_basic::dF |
ColumnVector * Robot_basic::dn |
ColumnVector * Robot_basic::dN |
int Robot_basic::dof [private] |
ColumnVector * Robot_basic::dp |
ColumnVector * Robot_basic::dvp |
ColumnVector * Robot_basic::dw |
ColumnVector * Robot_basic::dwp |
ColumnVector * Robot_basic::f |
ColumnVector * Robot_basic::F |
ColumnVector * Robot_basic::f_nv |
int Robot_basic::fix [private] |
ColumnVector Robot_basic::gravity |
ColumnVector * Robot_basic::n |
ColumnVector * Robot_basic::N |
ColumnVector * Robot_basic::n_nv |
ColumnVector * Robot_basic::p |
ColumnVector * Robot_basic::pp |
Matrix* Robot_basic::R |
EnumRobotType Robot_basic::robotType [private] |
ColumnVector * Robot_basic::vp |
ColumnVector* Robot_basic::w |
ColumnVector * Robot_basic::wp |
ColumnVector Robot_basic::z0 |