RobWorkProject
24.8.23-
|
A Jacobian class. A jacobian with m rows and n columns. More...
#include <Jacobian.hpp>
Public Types | |
typedef Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > | Base |
The type of the internal Eigen matrix implementation. | |
Public Member Functions | |
Jacobian (size_t m, size_t n) | |
Creates an empty \( m\times n \) (uninitialized) Jacobian matrix. More... | |
Jacobian () | |
Default constructor. | |
Jacobian (size_t n) | |
Creates an empty \( 6\times n \) (uninitialized) Jacobian matrix. More... | |
template<class R > | |
Jacobian (const Eigen::MatrixBase< R > &r) | |
Creates a Jacobian from a Eigen::MatrixBase. More... | |
Jacobian (const rw::math::Transform3D< double > &aTb) | |
Creates the velocity transform jacobian \( \robabcdx{a}{b}{a}{b}{\bf{J_v}} \) for transforming both the reference frame and the velocity reference point from one frame b to another frame a. More... | |
Jacobian (const rw::math::Rotation3D< double > &aRb) | |
Creates the velocity transform jacobian \( \robabcdx{a}{b}{i}{i}{\bf{J_v}} \) for transforming a velocity screw from one frame of reference b to another frame a. More... | |
Jacobian (const rw::math::Vector3D< double > &aPb) | |
Creates the velocity transform jacobian \( \robabcdx{i}{i}{b}{a}{\bf{J}_v} \) for transforming the reference point of a velocity screw from one frame b to another frame a. More... | |
size_t | size1 () const |
The number of rows. | |
size_t | size2 () const |
The number of columns. | |
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > & | e () |
Accessor for the internal Eigen matrix state. | |
const Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > & | e () const |
Accessor for the internal Eigen matrix state. | |
double & | operator() (size_t row, size_t column) |
Returns reference to matrix element. More... | |
const double & | operator() (size_t row, size_t column) const |
Returns reference to matrix element. More... | |
double & | elem (size_t row, size_t col) |
Get an element of the jacobian. More... | |
void | addRotation (const rw::math::Vector3D<> &part, size_t row, size_t col) |
add rotation jacobian to a specific row and column in this jacobian More... | |
void | addPosition (const rw::math::Vector3D<> &part, size_t row, size_t col) |
add position jacobian to a specific row and column in this jacobian More... | |
Static Public Member Functions | |
static Jacobian | zero (size_t size1, size_t size2) |
Construct zero initialized Jacobian. More... | |
Friends | |
std::ostream & | operator<< (std::ostream &out, const Jacobian &v) |
Streaming operator. | |
Related Functions | |
(Note that these are not member functions.) | |
const rw::math::VelocityScrew6D | operator* (const Jacobian &Jq, const rw::math::Q &dq) |
Calculates velocity vector. More... | |
const rw::math::Q | operator* (const Jacobian &JqInv, const rw::math::VelocityScrew6D<> &v) |
Calculates joint velocities. More... | |
const Jacobian | operator* (const Jacobian &j1, const Jacobian &j2) |
Multiplies jacobians \( \mathbf{J} = \mathbf{J}_1 * \mathbf{J}_2 \). More... | |
const Jacobian | operator* (const rw::math::Rotation3D<> &r, const Jacobian &v) |
Rotates each column of v by r. More... | |
template<> | |
void | write (const rw::math::Jacobian &sobject, rw::common::OutputArchive &oarchive, const std::string &id) |
template<> | |
void | read (rw::math::Jacobian &sobject, rw::common::InputArchive &iarchive, const std::string &id) |
A Jacobian class. A jacobian with m rows and n columns.
An ordinary robot jacobian defined over the joints 0 to n with configuration q is expressed as a \( 6\times n \) matrix:
\[ \robabx{0}{n}{\bf{J}}(\bf{q}) = [ \robabx{0}{1}{\bf{J}}(\bf{q}), \robabx{1}{2}{\bf{J}}(\bf{q}),..., \robabx{n-1}{n}{\bf{J}}(\bf{q}) ] \]
|
inline |
Creates an empty \( m\times n \) (uninitialized) Jacobian matrix.
m | [in] number of rows |
n | [in] number of columns |
|
inlineexplicit |
Creates an empty \( 6\times n \) (uninitialized) Jacobian matrix.
n | [in] number of columns |
|
inlineexplicit |
Creates a Jacobian from a Eigen::MatrixBase.
r | [in] an Eigen Matrix |
|
explicit |
Creates the velocity transform jacobian \( \robabcdx{a}{b}{a}{b}{\bf{J_v}} \) for transforming both the reference frame and the velocity reference point from one frame b to another frame a.
aTb | [in] \( \robabx{a}{b}{\bf{T}} \) |
\[ \robabcdx{a}{b}{a}{b}{\bf{J_v}} = \left[ \begin{array}{cc} \robabx{a}{b}{\mathbf{R}} & S(\robabx{a}{b}{\mathbf{d}})\robabx{a}{b}{\mathbf{R}} \\ \mathbf{0}^{3x3} & \robabx{a}{b}{\mathbf{R}} \end{array} \right] \]
Change the frame of reference from b to frame a and reference point from frame a to frame b: \( \robabx{a}{b}{\bf{J}} = \robabcdx{a}{b}{a}{b}{\bf{J}_v} \cdot \robabx{b}{a}{\bf{J}} \)
|
explicit |
Creates the velocity transform jacobian \( \robabcdx{a}{b}{i}{i}{\bf{J_v}} \) for transforming a velocity screw from one frame of reference b to another frame a.
aRb | [in] \( \robabx{a}{b}{\bf{R}} \) |
\[ \robabcdx{a}{b}{i}{i}{\bf{J_v}} = \left[ \begin{array}{cc} \robabx{a}{b}{\mathbf{R}} & \mathbf{0}^{3x3} \\ \mathbf{0}^{3x3} & \robabx{a}{b}{\mathbf{R}} \end{array} \right] \]
Change the frame of reference from b to frame a : \( \robabx{a}{c}{\bf{J}} = \robabcdx{a}{b}{c}{c}{\bf{J}_v} \cdot \robabx{b}{c}{\bf{J}} \)
|
explicit |
Creates the velocity transform jacobian \( \robabcdx{i}{i}{b}{a}{\bf{J}_v} \) for transforming the reference point of a velocity screw from one frame b to another frame a.
aPb | [in] \( \robabx{a}{b}{\bf{P}} \) |
\[ \robabcdx{i}{i}{b}{a}{\bf{J}_v} = \left[ \begin{array}{cc} \bf{I}^{3x3} & S(\robabx{a}{b}{\bf{P}}) \\ \bf{0}^{3x3} & \bf{I}^{3x3} \end{array} \right] \]
transforming the reference point of a Jacobian from frame c to frame d : \( \robabx{a}{d}{\mathbf{J}} = \robabcdx{a}{a}{c}{d}{\mathbf{J_v}} \cdot \robabx{a}{c}{\mathbf{J}} \)
void addPosition | ( | const rw::math::Vector3D<> & | part, |
size_t | row, | ||
size_t | col | ||
) |
add position jacobian to a specific row and column in this jacobian
part | |
row | |
col |
void addRotation | ( | const rw::math::Vector3D<> & | part, |
size_t | row, | ||
size_t | col | ||
) |
add rotation jacobian to a specific row and column in this jacobian
part | |
row | |
col |
|
inline |
Get an element of the jacobian.
row | [in] the row. |
col | [in] the column. |
|
inline |
Returns reference to matrix element.
row | [in] row |
column | [in] column |
|
inline |
Returns reference to matrix element.
row | [in] row |
column | [in] column |
|
inlinestatic |
Construct zero initialized Jacobian.
size1 | [in] number of rows. |
size2 | [in] number of columns. |
Multiplies jacobians \( \mathbf{J} = \mathbf{J}_1 * \mathbf{J}_2 \).
j1 | [in] \( \mathbf{J}_1 \) |
j2 | [in] \( \mathbf{J}_2 \) |
|
related |
Calculates velocity vector.
Jq | [in] the jacobian \( \mathbf{J}_{\mathbf{q}} \) |
dq | [in] the joint velocity vector \( \dot{\mathbf{q}} \) |
|
related |
Calculates joint velocities.
JqInv | [in] the inverse jacobian \( \mathbf{J}_{\mathbf{q}}^{-1} \) |
v | [in] the velocity vector \( \mathbf{\nu} \) |
|
related |
Rotates each column of v by r.
The Jacobian must be of height 6.
|
related |
Enable read-serialization of class T by overloading this method. Data is read from iarchive and filled into sobject.
sobject | [out] the object in which the data should be streamed into |
iarchive | [in] the InputArchive from which to read data. |
id | [in] The id of the serialized sobject. |
|
related |
Enable write-serialization of class T by overloading this method. Data is written to oarchive from the sobject.
sobject | [in] the object from which the data should be streamed. |
oarchive | [out] the OutputArchive in which data should be written. |
id | [in] The id of the serialized sobject. |