Skip to content
Snippets Groups Projects
Commit 2d99e973 authored by Joan Solà Ortega's avatar Joan Solà Ortega
Browse files

Merge branch 'devel' into do-not-use-default-yaml-params

parents 38eaf282 5d619a95
No related branches found
No related tags found
1 merge request!312Adress 244: Do not use default yaml params
Pipeline #4147 passed
# Building and populating the wolf tree from .graph file (TORO)
#ADD_EXECUTABLE(test_wolf_imported_graph test_wolf_imported_graph.cpp)
#TARGET_LINK_LIBRARIES(test_wolf_imported_graph ${PROJECT_NAME})
# Comparing analytic and autodiff odometry factors
#ADD_EXECUTABLE(test_analytic_autodiff_factor test_analytic_autodiff_factor.cpp)
#TARGET_LINK_LIBRARIES(test_analytic_autodiff_factor ${PROJECT_NAME})
\ No newline at end of file
This diff is collapsed.
......@@ -22,15 +22,20 @@
namespace wolf
{
namespace SO2{
template<typename T>
Eigen::Matrix<T, 2, 2> exp_SO2(const T theta)
Eigen::Matrix<T, 2, 2> exp(const T theta)
{
return Eigen::Rotation2D<T>(theta).matrix();
}
} // namespace SO2
namespace SE2{
template<typename T>
Eigen::Matrix2s V_SE2(const T theta)
Eigen::Matrix2s V_helper(const T theta)
{
T s; // sin(theta) / theta
T c_1; // (1-cos(theta)) / theta
......@@ -52,13 +57,13 @@ Eigen::Matrix2s V_SE2(const T theta)
}
template<class D1, class D2>
void exp_SE2(const Eigen::MatrixBase<D1>& _tau, Eigen::MatrixBase<D2>& _delta)
void exp(const Eigen::MatrixBase<D1>& _tau, Eigen::MatrixBase<D2>& _delta)
{
MatrixSizeCheck<3, 1>::check(_tau);
MatrixSizeCheck<3, 1>::check(_delta);
// [1] eq. 156
_delta.head(2) = V_SE2(_tau(2)) * _tau.head(2);
_delta.head(2) = V_helper(_tau(2)) * _tau.head(2);
_delta(2) = pi2pi(_tau(2));
}
......@@ -90,7 +95,7 @@ Eigen::Matrix<T, 2, 1> J_Vp_theta(const Eigen::MatrixBase<D>& p, const T theta)
}
template<class D1, class D2, class D3>
void exp_SE2(const MatrixBase<D1>& _tau, MatrixBase<D2>& _delta, MatrixBase<D3>& _J_delta_tau)
void exp(const MatrixBase<D1>& _tau, MatrixBase<D2>& _delta, MatrixBase<D3>& _J_delta_tau)
{
MatrixSizeCheck<3, 1>::check(_tau);
MatrixSizeCheck<3, 1>::check(_delta);
......@@ -100,17 +105,18 @@ void exp_SE2(const MatrixBase<D1>& _tau, MatrixBase<D2>& _delta, MatrixBase<D3>&
// [1] eq. 156
T theta = pi2pi(_tau(2));
Eigen::Matrix<T, 2, 2> V = V_SE2(theta);
Eigen::Matrix<T, 2, 2> V = V_helper(theta);
_delta.head(2) = V * _tau.head(2);
_delta(2) = theta;
// Jacobian is the composite definition [1] eq. 89, with jacobian blocks:
// J_Vp_p = V: see V_SE2 below, eq. 158
// J_Vp_theta: see fcn helper below
// J_Vp_p = V: see V_helper, eq. 158
// J_Vp_theta: see fcn helper
// J_theta_theta = 1; eq. 126
_J_delta_tau << V, J_Vp_theta(_tau.template head<2>(), theta), 0.0, 0.0, 1.0;
}
} // namespace SE2
} // namespacs wolf
#endif /* MATH_SE2_H_ */
......@@ -35,7 +35,7 @@
namespace wolf
{
namespace three_D {
namespace SE3 {
using namespace Eigen;
template<typename D1, typename D2>
......
......@@ -119,7 +119,7 @@ void ProcessorDiffDrive::computeCurrentDelta(const Eigen::VectorXs& _data,
Matrix3s J_delta_tangent;
exp_SE2(tangent, _delta, J_delta_tangent);
SE2::exp(tangent, _delta, J_delta_tangent);
/// 3. delta covariance -----------------------------------------------
......
......@@ -13,7 +13,7 @@
using namespace Eigen;
using namespace wolf;
using namespace three_D;
using namespace SE3;
TEST(SE3, exp_0)
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment