#include <KatanaKinematics6M90T.h>
Classes | |
struct | angles_calc |
struct | position |
Public Member Functions | |
void | DK (coordinates &solution, encoders const ¤t_encoders) const |
void | IK (encoders::iterator solution, coordinates const &pose, encoders const &cur_angles) const |
void | init (metrics const &length, parameter_container const ¶meters) |
Private Types | |
typedef std::vector< angles_calc > | angles_container |
Private Member Functions | |
void | _setLength (metrics const &length) |
void | _setParameters (parameter_container const ¶meters) |
bool | angledef (angles_calc &a) const |
bool | AnglePositionTest (const angles_calc &a) const |
double | findFirstEqualAngle (const angles &v1, const angles &v2) const |
bool | GripperTest (const position &p_gr, const angles_calc &angle) const |
void | IK_b1b2costh3_6MS (angles_calc &a, const position &p) const |
void | IK_theta234theta5 (angles_calc &angle, const position &p_gr) const |
bool | PositionTest6MS (const double &theta1, const double &theta2, const double &theta3, const double &theta234, const position &p) const |
void | thetacomp (angles_calc &a, const position &p_m, const coordinates &pose) const |
Private Attributes | |
metrics | _length |
parameter_container | _parameters |
Static Private Attributes | |
static const int | _nrOfPossibleSolutions = 8 |
static const double | _tolerance = 0.001 |
Definition at line 39 of file KatanaKinematics6M90T.h.
typedef std::vector<angles_calc> KNI::KatanaKinematics6M90T::angles_container [private] |
Definition at line 71 of file KatanaKinematics6M90T.h.
void KNI::KatanaKinematics6M90T::_setLength | ( | metrics const & | length | ) | [inline, private] |
Definition at line 79 of file KatanaKinematics6M90T.h.
void KNI::KatanaKinematics6M90T::_setParameters | ( | parameter_container const & | parameters | ) | [inline, private] |
Definition at line 80 of file KatanaKinematics6M90T.h.
bool KNI::KatanaKinematics6M90T::angledef | ( | angles_calc & | a | ) | const [private] |
Definition at line 344 of file KatanaKinematics6M90T.cpp.
bool KNI::KatanaKinematics6M90T::AnglePositionTest | ( | const angles_calc & | a | ) | const [private] |
Definition at line 374 of file KatanaKinematics6M90T.cpp.
void KNI::KatanaKinematics6M90T::DK | ( | coordinates & | solution, |
encoders const & | current_encoders | ||
) | const [virtual] |
Direct Kinematic. Calculates the actual position in cartesian coordinates using the given encoders
solution | This is where the algorithm will store the solution to (in cartesian coordinates) |
current_encoders | The encoder values which are being used for the calculation |
Implements KNI::KatanaKinematics.
Definition at line 31 of file KatanaKinematics6M90T.cpp.
double KNI::KatanaKinematics6M90T::findFirstEqualAngle | ( | const angles & | v1, |
const angles & | v2 | ||
) | const [private] |
Definition at line 216 of file KatanaKinematics6M90T.cpp.
bool KNI::KatanaKinematics6M90T::GripperTest | ( | const position & | p_gr, |
const angles_calc & | angle | ||
) | const [private] |
Definition at line 184 of file KatanaKinematics6M90T.cpp.
void KNI::KatanaKinematics6M90T::IK | ( | encoders::iterator | solution, |
coordinates const & | pose, | ||
encoders const & | cur_angles | ||
) | const [virtual] |
Inverse Kinematic. Calculates one set of encoders (=one solution) for the given cartesian coordinates. You also have to provide the current encoders to allow the algorithm to choose between different valid solutions.
solution | This is where the algorithm will store the solution to (in encoders) |
pose | The target position in cartesian coordinates plus the euler angles for the direction of the gripper |
cur_angles | The current angles (in encoders) of the robot |
Implements KNI::KatanaKinematics.
Definition at line 404 of file KatanaKinematics6M90T.cpp.
void KNI::KatanaKinematics6M90T::IK_b1b2costh3_6MS | ( | angles_calc & | a, |
const position & | p | ||
) | const [private] |
Definition at line 199 of file KatanaKinematics6M90T.cpp.
void KNI::KatanaKinematics6M90T::IK_theta234theta5 | ( | angles_calc & | angle, |
const position & | p_gr | ||
) | const [private] |
Definition at line 140 of file KatanaKinematics6M90T.cpp.
void KNI::KatanaKinematics6M90T::init | ( | metrics const & | length, |
parameter_container const & | parameters | ||
) | [virtual] |
Initialize the parameters for the calculations. This is needed to validate the calculated angles and to choose an appropriate solution You have to provide 5 or 6 length's and parameters, depending on you robot type
Implements KNI::KatanaKinematics.
Definition at line 131 of file KatanaKinematics6M90T.cpp.
bool KNI::KatanaKinematics6M90T::PositionTest6MS | ( | const double & | theta1, |
const double & | theta2, | ||
const double & | theta3, | ||
const double & | theta234, | ||
const position & | p | ||
) | const [private] |
Definition at line 328 of file KatanaKinematics6M90T.cpp.
void KNI::KatanaKinematics6M90T::thetacomp | ( | angles_calc & | a, |
const position & | p_m, | ||
const coordinates & | pose | ||
) | const [private] |
Definition at line 230 of file KatanaKinematics6M90T.cpp.
metrics KNI::KatanaKinematics6M90T::_length [private] |
Definition at line 73 of file KatanaKinematics6M90T.h.
const int KNI::KatanaKinematics6M90T::_nrOfPossibleSolutions = 8 [static, private] |
Definition at line 77 of file KatanaKinematics6M90T.h.
Definition at line 74 of file KatanaKinematics6M90T.h.
const double KNI::KatanaKinematics6M90T::_tolerance = 0.001 [static, private] |
Definition at line 76 of file KatanaKinematics6M90T.h.