RoboDK Plug-In Interface
Mat Class Reference

TheMatclass represents a 4x4 pose matrix. The main purpose of this object is to represent a pose in the 3D space (position and orientation). In other words, a pose is a 4x4 matrix that represents the position and orientation of one reference frame with respect to another one, in the 3D space. Poses are commonly used in robotics to place objects, reference frames and targets with respect to each other.
\( transl(x,y,z) rotx(r) roty(p) rotz(w) = \\ \begin{bmatrix} n_x & o_x & a_x & x \\ n_y & o_y & a_y & y \\ n_z & o_z & a_z & z \\ 0 & 0 & 0 & 1 \end{bmatrix} \).More...

#include <robodktypes.h>

Inheritance diagram for Mat:

Public Member Functions

Mat()
Create the identity matrix.More...
Mat(bool valid)
Create a valid or an invalid matrix.More...
Mat(const QMatrix4x4 &matrix)
Create a copy of the matrix.More...
Mat(constMat&matrix)
Create a copy of the matrix.More...
Mat(double nx, double ox, double ax, double tx, double ny, double oy, double ay, double ty, double nz, double oz, double az, double tz)
Matrix class constructor for a 4x4 homogeneous matrix given N, O, A & T vectorsMore...
Mat(const double values[16])
Create a homogeneoux matrix given a one dimensional 16-value array (doubles)More...
Mat(const float values[16])
Create a homogeneoux matrix given a one dimensional 16-value array (floats)More...
Mat(double x, double y, double z)
Create a translation matrix.More...
operator QString() const
To String operator (use with qDebug() <<tJoints;.More...
void setVX(double x, double y, double z)
Set the X vector values (N vector)More...
void setVY(double x, double y, double z)
Set the Y vector values (O vector)More...
void setVZ(double x, double y, double z)
设置Z值向量(矢量)More...
void setPos(double x, double y, double z)
Set the position (T position) in mm.More...
void setVX(double xyz[3])
Set the X vector values (N vector)More...
void setVY(double xyz[3])
Set the Y vector values (O vector)More...
void setVZ(double xyz[3])
设置Z值向量(矢量)More...
void setPos(double xyz[3])
Set the position (T position) in mm.More...
void setValues(double pose[16])
Set the pose values.More...
void VX(tXYZ xyz) const
Get the X vector (N vector)More...
void VY(tXYZ xyz) const
Get the Y vector (O vector)More...
void VZ(tXYZ xyz) const
Get the Z vector (A vector)More...
void Pos(tXYZ xyz) const
Get the position (T position), in mm.More...
void Set(int r, int c, double value)
Set a matrix value.More...
double Get(int r, int c) const
Get a matrix value.More...
Mat inv() const
Invert the pose (homogeneous matrix assumed)More...
bool isHomogeneous() const
Returns true if the matrix is homogeneous, otherwise it returns false.More...
bool MakeHomogeneous()
Forces 4x4 matrix to be homogeneous (vx,vy,vz must be unitary vectors and respect: vx x vy = vz). Returns True if the matrix was not homogeneous and it was be modified to make it homogeneous.More...
void ToXYZRPW(tXYZWPR xyzwpr) const
Calculates the equivalent position and euler angles ([x,y,z,r,p,w] vector) of the given pose Note: transl(x,y,z)*rotz(w*pi/180)*roty(p*pi/180)*rotx(r*pi/180) See also:FromXYZRPW()More...
QString ToString(const QString &separator=", ", int precision=3, bool xyzrpw_only=false) const
Retrieve a string representation of the pose.More...
bool FromString(const QString &str)
Set the matrix given a XYZRPW string array (6-values)More...
void FromXYZRPW(tXYZWPR xyzwpr)
Calculates the pose from the position and euler angles ([x,y,z,r,p,w] vector) The result is the same as:
H = transl(x,y,z)*rotz(w*pi/180)*roty(p*pi/180)*rotx(r*pi/180)More...
const double * ValuesD() const
Get a pointer to the 16-digit double array.More...
const float * ValuesF() const
Get a pointer to the 16-digit array as an array of floats.More...
const double * Values() const
Get a pointer to the 16-digit array (doubles or floats if ROBODK_API_FLOATS is defined).More...
void Values(double values[16]) const
有限公司py the 16-values of the 4x4 matrix to a double array.More...
void Values(float values[16]) const
有限公司py the 16-values of the 4x4 matrix to a double array.More...
bool Valid() const
Check if the matrix is valid.More...

Static Public Member Functions

staticMat XYZRPW_2_Mat(double x, double y, double z, double r, double p, double w)
Calculates the pose from the position and euler angles ([x,y,z,r,p,w] vector) The result is the same as:
H = transl(x,y,z)*rotz(w*pi/180)*roty(p*pi/180)*rotx(r*pi/180)More...
staticMat XYZRPW_2_Mat(tXYZWPR xyzwpr)
staticMat transl(double x, double y, double z)
Return a translation matrix.More...
staticMat rotx(double rx)
Return the X-axis rotation matrix.More...
staticMat roty(double ry)
Return a Y-axis rotation matrixMore...
staticMat rotz(double rz)
Return a Z-axis rotation matrix.More...

Private Attributes

double _valid
Flags if a matrix is not valid.More...
double _ddata16[16]
有限公司py of the data as a double array.More...

Detailed Description

TheMatclass represents a 4x4 pose matrix. The main purpose of this object is to represent a pose in the 3D space (position and orientation). In other words, a pose is a 4x4 matrix that represents the position and orientation of one reference frame with respect to another one, in the 3D space. Poses are commonly used in robotics to place objects, reference frames and targets with respect to each other.
\( transl(x,y,z) rotx(r) roty(p) rotz(w) = \\ \begin{bmatrix} n_x & o_x & a_x & x \\ n_y & o_y & a_y & y \\ n_z & o_z & a_z & z \\ 0 & 0 & 0 & 1 \end{bmatrix} \).

Definition at line361of filerobodktypes.h.

有限公司nstructor & Destructor Documentation

Mat()[1/8]

Mat ( )

Create the identity matrix.

Definition at line158of filerobodktypes.cpp.

Mat()[2/8]

Mat ( bool valid )

Create a valid or an invalid matrix.

Definition at line162of filerobodktypes.cpp.

Mat()[3/8]

Mat ( const QMatrix4x4 & matrix )

Create a copy of the matrix.

Definition at line167of filerobodktypes.cpp.

Mat()[4/8]

Mat ( constMat& matrix )

Create a copy of the matrix.

Parameters
matrix

Definition at line171of filerobodktypes.cpp.

Mat()[5/8]

Mat ( double nx,
double ox,
double ax,
double tx,
double ny,
double oy,
double ay,
double ty,
double nz,
double oz,
double az,
double tz
)

Matrix class constructor for a 4x4 homogeneous matrix given N, O, A & T vectors

Parameters
nx Matrix[0,0]
ox Matrix[0,1]
ax Matrix[0,2]
tx Matrix[0,3]
ny Matrix[1,0]
oy Matrix[1,1]
ay Matrix[1,2]
ty Matrix[1,3]
nz Matrix[2,0]
oz Matrix[2,1]
az Matrix[2,2]
tz Matrix[2,3]
Returns
\( \begin{bmatrix} n_x & o_x & a_x & x \\ n_y & o_y & a_y & y \\ n_z & o_z & a_z & z \\ 0 & 0 & 0 & 1 \end{bmatrix} \)

Definition at line176of filerobodktypes.cpp.

Mat()[6/8]

Mat ( const double values[16] )

Create a homogeneoux matrix given a one dimensional 16-value array (doubles)

Parameters
values [nx,ny,nz,0, ox,oy,oz,0, ax,ay,az,0, tx,ty,tz,1]
Returns
\( \begin{bmatrix} n_x & o_x & a_x & x \\ n_y & o_y & a_y & y \\ n_z & o_z & a_z & z \\ 0 & 0 & 0 & 1 \end{bmatrix} \)

Definition at line181of filerobodktypes.cpp.

Mat()[7/8]

Mat ( const float values[16] )

Create a homogeneoux matrix given a one dimensional 16-value array (floats)

Parameters
values [nx,ny,nz,0, ox,oy,oz,0, ax,ay,az,0, tx,ty,tz,1]
Returns
\( transl(x,y,z) rotx(r) roty(p) rotz(w) = \\ \begin{bmatrix} n_x & o_x & a_x & x \\ n_y & o_y & a_y & y \\ n_z & o_z & a_z & z \\ 0 & 0 & 0 & 1 \end{bmatrix} \)

Definition at line186of filerobodktypes.cpp.

Mat()[8/8]

Mat ( double x,
double y,
double z
)

Create a translation matrix.

Parameters
x translation along X (mm)
y translation along Y (mm)
z translation along Z (mm)
Returns
\( rotx(\theta) = \begin{bmatrix} 1 & 0 & 0 & x \\ 0 & 1 & 0 & y \\ 0 & 0 & 1 & z \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \)

Definition at line192of filerobodktypes.cpp.

~Mat()

~Mat ( )

Definition at line199of filerobodktypes.cpp.

Member Function Documentation

FromString()

bool FromString ( const QString & str )

Set the matrix given a XYZRPW string array (6-values)

Definition at line440of filerobodktypes.cpp.

FromXYZRPW()

void FromXYZRPW ( tXYZWPR xyzwpr )

Calculates the pose from the position and euler angles ([x,y,z,r,p,w] vector) The result is the same as:
H = transl(x,y,z)*rotz(w*pi/180)*roty(p*pi/180)*rotx(r*pi/180)

Returns
Homogeneous matrix (4x4)

Definition at line475of filerobodktypes.cpp.

Get()

double Get ( int r,
int c
) const

Get a matrix value.

Parameters
r row
c column
Returns
value

Definition at line299of filerobodktypes.cpp.

inv()

Matinv ( ) const

Invert the pose (homogeneous matrix assumed)

Definition at line305of filerobodktypes.cpp.

isHomogeneous()

bool isHomogeneous ( ) const

Returns true if the matrix is homogeneous, otherwise it returns false.

Definition at line310of filerobodktypes.cpp.

MakeHomogeneous()

bool MakeHomogeneous ( )

Forces 4x4 matrix to be homogeneous (vx,vy,vz must be unitary vectors and respect: vx x vy = vz). Returns True if the matrix was not homogeneous and it was be modified to make it homogeneous.

Definition at line351of filerobodktypes.cpp.

运营商QString ()

operator QString ( ) const
inline

To String operator (use with qDebug() <<tJoints;.

Definition at line437of filerobodktypes.h.

Pos()

void Pos ( tXYZ xyz ) const

Get the position (T position), in mm.

Definition at line218of filerobodktypes.cpp.

rotx()

Matrotx ( double rx )
static

Return the X-axis rotation matrix.

Parameters
rx 周围旋转X axis (in radians).
Returns
\( rotx(\theta) = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & c_\theta & -s_\theta & 0 \\ 0 & s_\theta & c_\theta & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \)

Definition at line529of filerobodktypes.cpp.

roty()

Matroty ( double ry )
static

Return a Y-axis rotation matrix

Parameters
ry 周围旋转Y axis (in radians)
Returns
\( roty(\theta) = \begin{bmatrix} c_\theta & 0 & s_\theta & 0 \\ 0 & 1 & 0 & 0 \\ -s_\theta & 0 & c_\theta & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \)

Definition at line535of filerobodktypes.cpp.

rotz()

Matrotz ( double rz )
static

Return a Z-axis rotation matrix.

Parameters
rz 周围旋转Z axis (in radians)
Returns
\( rotz(\theta) = \begin{bmatrix} c_\theta & -s_\theta & 0 & 0 \\ s_\theta & c_\theta & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \)

Definition at line541of filerobodktypes.cpp.

设置()

void Set ( int r,
int c,
double value
)

Set a matrix value.

Parameters
r row
c column
value value

Definition at line290of filerobodktypes.cpp.

setPos()[1/2]

void setPos ( double x,
double y,
double z
)

Set the position (T position) in mm.

Definition at line239of filerobodktypes.cpp.

setPos()[2/2]

void setPos ( double xyz[3] )

Set the position (T position) in mm.

Definition at line260of filerobodktypes.cpp.

setValues()

void setValues ( double pose[16] )

Set the pose values.

Definition at line267of filerobodktypes.cpp.

setVX()[1/2]

void setVX ( double x,
double y,
double z
)

Set the X vector values (N vector)

Definition at line224of filerobodktypes.cpp.

setVX()[2/2]

void setVX ( double xyz[3] )

Set the X vector values (N vector)

Definition at line245of filerobodktypes.cpp.

setVY()[1/2]

void setVY ( double x,
double y,
double z
)

Set the Y vector values (O vector)

Definition at line229of filerobodktypes.cpp.

setVY()[2/2]

void setVY ( double xyz[3] )

Set the Y vector values (O vector)

Definition at line250of filerobodktypes.cpp.

setVZ()[1/2]

void setVZ ( double x,
double y,
double z
)

设置Z值向量(矢量)

Definition at line234of filerobodktypes.cpp.

setVZ()[2/2]

void setVZ ( double xyz[3] )

设置Z值向量(矢量)

Definition at line255of filerobodktypes.cpp.

ToString()

QString ToString ( const QString & separator=", ",
int precision=3,
bool xyzrpw_only=false
) const

Retrieve a string representation of the pose.

Parameters
separator String separator
precision Number of decimals
in_xyzwpr if set to true (default), the pose will be represented as XYZWPR 6-dimensional array using ToXYZRPW
Returns

Definition at line405of filerobodktypes.cpp.

ToXYZRPW()

void ToXYZRPW ( tXYZWPR xyzwpr ) const

Calculates the equivalent position and euler angles ([x,y,z,r,p,w] vector) of the given pose Note: transl(x,y,z)*rotz(w*pi/180)*roty(p*pi/180)*rotx(r*pi/180) See also:FromXYZRPW()

Returns
XYZWPR translation and rotation in mm and degrees

Definition at line380of filerobodktypes.cpp.

transl()

Mattransl ( double x,
double y,
double z
)
static

Return a translation matrix.

Parameters
x translation along X (mm)
y translation along Y (mm)
z translation along Z (mm)
Returns
\( rotx(\theta) = \begin{bmatrix} 1 & 0 & 0 & x \\ 0 & 1 & 0 & y \\ 0 & 0 & 1 & z \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \)

Definition at line522of filerobodktypes.cpp.

Valid()

bool Valid ( ) const

Check if the matrix is valid.

Definition at line518of filerobodktypes.cpp.

Values()[1/3]

const double * Values ( ) const

Get a pointer to the 16-digit array (doubles or floats if ROBODK_API_FLOATS is defined).

Definition at line500of filerobodktypes.cpp.

Values()[2/3]

void Values ( double values[16] ) const

有限公司py the 16-values of the 4x4 matrix to a double array.

Definition at line508of filerobodktypes.cpp.

Values()[3/3]

void Values ( float values[16] ) const

有限公司py the 16-values of the 4x4 matrix to a double array.

Definition at line513of filerobodktypes.cpp.

ValuesD()

const双*礼乐祭祀 ( ) const

Get a pointer to the 16-digit double array.

Definition at line484of filerobodktypes.cpp.

ValuesF()

const float * ValuesF ( ) const

Get a pointer to the 16-digit array as an array of floats.

Definition at line491of filerobodktypes.cpp.

VX()

void VX ( tXYZ xyz ) const

Get the X vector (N vector)

Definition at line203of filerobodktypes.cpp.

VY()

void VY ( tXYZ xyz ) const

Get the Y vector (O vector)

Definition at line208of filerobodktypes.cpp.

VZ()

void VZ ( tXYZ xyz ) const

Get the Z vector (A vector)

Definition at line213of filerobodktypes.cpp.

XYZRPW_2_Mat()[1/2]

MatXYZRPW_2_Mat ( double x,
double y,
double z,
double r,
double p,
double w
)
static

Calculates the pose from the position and euler angles ([x,y,z,r,p,w] vector) The result is the same as:
H = transl(x,y,z)*rotz(w*pi/180)*roty(p*pi/180)*rotx(r*pi/180)

Returns
Homogeneous matrix (4x4)

Definition at line459of filerobodktypes.cpp.

XYZRPW_2_Mat()[2/2]

MatXYZRPW_2_Mat ( tXYZWPR xyzwpr )
static

Definition at line471of filerobodktypes.cpp.

Member Data Documentation

_ddata16

double _ddata16[16]
private

有限公司py of the data as a double array.

Definition at line622of filerobodktypes.h.

_valid

double _valid
private

Flags if a matrix is not valid.

Definition at line617of filerobodktypes.h.


The documentation for this class was generated from the following files: