Skip to content

Commit 21c09db

Browse files
authored
Merge pull request #96 from artivis/fix/normalize
fix typo compilation issue in normalize SE2/3
2 parents 847c966 + 13eec1e commit 21c09db

File tree

3 files changed

+31
-3
lines changed

3 files changed

+31
-3
lines changed

include/manif/impl/se2/SE2_base.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ SE2Base<_Derived>::y() const
383383
template <typename _Derived>
384384
void SE2Base<_Derived>::normalize()
385385
{
386-
coeffs_nonconst().template tails<2>().normalize();
386+
coeffs_nonconst().template tail<2>().normalize();
387387
}
388388

389389
namespace internal {

include/manif/impl/se3/SE3_base.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ SE3Base<_Derived>::z() const
361361
template <typename _Derived>
362362
void SE3Base<_Derived>::normalize()
363363
{
364-
coeffs_nonconst().template tails<4>().normalize();
364+
coeffs_nonconst().template tail<4>().normalize();
365365
}
366366

367367
namespace internal {

test/common_tester.h

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
using TEST_##manifold##_TESTER = CommonTester<manifold>; \
1010
TEST_F(TEST_##manifold##_TESTER, TEST_##manifold##_COPY_CONSTRUCTOR) \
1111
{ evalCopyConstructor(); } \
12+
TEST_F(TEST_##manifold##_TESTER, TEST_##manifold##_UNNORMALIZE_DATA) \
13+
{ evalConstructorUnnormalizedData(); } \
1214
TEST_F(TEST_##manifold##_TESTER, TEST_##manifold##_ASSIGNMENT) \
1315
{ evalAssignment(); } \
1416
TEST_F(TEST_##manifold##_TESTER, TEST_##manifold##_DATA_PTR_VALID) \
@@ -64,7 +66,9 @@
6466
TEST_F(TEST_##manifold##_TESTER, TEST_##manifold##_INNER) \
6567
{ evalInner(); } \
6668
TEST_F(TEST_##manifold##_TESTER, TEST_##manifold##_NUMERICAL_STABILITY) \
67-
{ evalNumericalStability(); }
69+
{ evalNumericalStability(); } \
70+
TEST_F(TEST_##manifold##_TESTER, TEST_##manifold##_NORMALIZE) \
71+
{ evalNormalize(); }
6872

6973
#define MANIF_TEST_JACOBIANS(manifold) \
7074
using TEST_##manifold##_JACOBIANS_TESTER = JacobianTester<manifold>; \
@@ -136,6 +140,14 @@ class CommonTester : public ::testing::Test
136140
EXPECT_MANIF_NEAR(state, state_copy, tol_);
137141
}
138142

143+
void evalConstructorUnnormalizedData()
144+
{
145+
using DataType = typename LieGroup::DataType;
146+
EXPECT_THROW(
147+
LieGroup(DataType::Random()*10.), manif::invalid_argument
148+
);
149+
}
150+
139151
void evalAssignment()
140152
{
141153
LieGroup state_copy;
@@ -509,6 +521,22 @@ class CommonTester : public ::testing::Test
509521
) << "+= failed at iteration " << i ;
510522
}
511523

524+
void evalNormalize()
525+
{
526+
typename LieGroup::DataType data = LieGroup::DataType::Random() * 100.;
527+
528+
EXPECT_THROW(
529+
LieGroup a(data), manif::invalid_argument
530+
);
531+
532+
Eigen::Map<LieGroup> map(data.data());
533+
map.normalize();
534+
535+
EXPECT_NO_THROW(
536+
LieGroup b = map
537+
);
538+
}
539+
512540
protected:
513541

514542
Scalar tol_ = Constants<Scalar>::eps;

0 commit comments

Comments
 (0)