Commit eebb5bae authored by Justin Carpentier's avatar Justin Carpentier Committed by GitHub

Merge pull request #888 from jmirabel/fix

Fix usage of row major matrices + fix doc.
parents 6b5c0f07 cb58a6a0
......@@ -658,3 +658,20 @@ EXAMPLE_PATH = @PROJECT_SOURCE_DIR@/examples
# A dedicated BIB_PATH would be preferable
EXAMPLE_PATH += @PROJECT_SOURCE_DIR@/doc/bib
# Enable the USE_MATHJAX option to render $\mbox{\LaTeX}$ formulas using
# MathJax (see http://www.mathjax.org) which uses client side Javascript for
# the rendering instead of using pre-rendered bitmaps. Use this if you do not
# have $\mbox{\LaTeX}$ installed or if you want to formulas look prettier in
# the HTML output. When enabled you may also need to install MathJax separately
# and configure the path to it using the MATHJAX_RELPATH option.
USE_MATHJAX = YES
MATHJAX_RELPATH = MathJax/
# When MathJax is enabled you can set the default output format to be used for
# the MathJax output. See the MathJax site for more details. Possible values
# are: HTML-CSS (which is slower, but has the best compatibility), NativeMML
# (i.e. MathML) and SVG. The default value is: HTML-CSS. This tag requires that
# the tag USE_MATHJAX is set to YES.
MATHJAX_FORMAT = SVG
......@@ -4,7 +4,7 @@
A rigid body system is an assembly of different parts which are joints, rigid bodies and forces. A joint connects two different bodies and gather all kinematic relations between those two bodies, allowing the creation of a relative displacement between the two bodies. This displacement is described by breaking it down into three parts, rotations, translations or the compositions of a rotation and a translation.
Rotation matrices form the so-called **Special Orthogonal** group \f$ SO-n) \f$. There are two groups within the latter which interest us as for now: \f$ SO(2) \f$ and \f$ SO(3) \f$. \f$ SO(3) \f$ is the group of all rotations in the 3-dimensionnal space. Its elements are matrices of size 3 by 3. \f$ SO(3) \f$ is useful for planar problems. It is the group of rotations in the 2-dimensionnal space. Its elements are matrices of size 2 by 2.
Rotation matrices form the so-called **Special Orthogonal** group \f$ SO(n) \f$. There are two groups within the latter which interest us as for now: \f$ SO(2) \f$ and \f$ SO(3) \f$. \f$ SO(3) \f$ is the group of all rotations in the 3-dimensionnal space. Its elements are matrices of size 3 by 3. \f$ SO(3) \f$ is useful for planar problems. It is the group of rotations in the 2-dimensionnal space. Its elements are matrices of size 2 by 2.
The set that brings together all the homogeneous transformations matrices is the **Special Euclidean** group \f$ SE(n) \f$. As with rotation matrices, there are two different groups, \f$ SE(3) \f$ for 3-dimensional transformations and \f$ SE(2) \f$ for 2-dimensional transformation, i.e. transformation in a plane.
......
......@@ -13,7 +13,7 @@
<script type="text/javascript" src="$relpath^dynsections.js"></script>
$treeview
$search
<script src="$relpath$MathJax/MathJax.js"></script>
$mathjax
<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
$extrastylesheet
</head>
......
......@@ -453,7 +453,6 @@ namespace pinocchio
typedef SE3Tpl<Scalar,Options> SE3;
typedef typename SE3::Vector3 Vector3;
EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(Matrix6Like,6,6);
Matrix6Like & value = PINOCCHIO_EIGEN_CONST_CAST(Matrix6Like,Jlog);
typename SE3::ConstAngularRef R = M.rotation();
......@@ -465,7 +464,7 @@ namespace pinocchio
// value is decomposed as following:
// value = [ A, B;
// C, D ]
typedef Eigen::Block<Matrix6Like,3,3,Matrix6Like::IsRowMajor> Block33;
typedef Eigen::Block<Matrix6Like,3,3> Block33;
Block33 A = value.template topLeftCorner<3,3>();
Block33 B = value.template topRightCorner<3,3>();
Block33 C = value.template bottomLeftCorner<3,3>();
......
......@@ -335,19 +335,24 @@ BOOST_AUTO_TEST_CASE(Jexplog6)
Motion v(Motion::Random());
SE3 M (exp6(v));
SE3::Matrix6 Jexp, Jlog;
Jexp6 (v, Jexp);
Jlog6 (M, Jlog);
{
Eigen::Matrix<double, 6, 6, Eigen::RowMajor> Jexp, Jlog;
Jexp6 (v, Jexp);
Jlog6 (M, Jlog);
BOOST_CHECK((Jlog * Jexp).isIdentity());
BOOST_CHECK((Jlog * Jexp).isIdentity());
}
M.setRandom();
v = log6(M);
Jlog6 (M, Jlog);
Jexp6 (v, Jexp);
{
Eigen::Matrix<double, 6, 6> Jexp, Jlog;
Jlog6 (M, Jlog);
Jexp6 (v, Jexp);
BOOST_CHECK((Jexp * Jlog).isIdentity());
BOOST_CHECK((Jexp * Jlog).isIdentity());
}
}
BOOST_AUTO_TEST_CASE (test_basic)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment