OpenKarto
source
RigidBodyTransform.cpp
Go to the documentation of this file.
1
/*
2
* Karto (tm) Robot Navigation Software - Software Development Kit
3
* Release 2.1
4
*
5
* Copyright (C) 2006-2011, SRI International (R)
6
*
7
* The material contained in this release is copyrighted. It may not be copied,
8
* reproduced, translated, reverse engineered, modified or reduced to any electronic
9
* medium or machine-readable form without the prior written consent of
10
* SRI International (R).
11
*
12
* Portions of files in this release may be unpublished work
13
* containing SRI International (R) CONFIDENTIAL AND PROPRIETARY INFORMATION.
14
* Disclosure, use, reverse engineering, modification, or reproduction without
15
* written authorization of SRI International (R) is likewise prohibited.
16
*
17
* Karto (tm) is a Trademark of SRI International (R).
18
*
19
* Author(s): Benson Limketkai (bensonl@ai.sri.com)
20
*/
21
22
#include <
OpenKarto/Geometry.h
>
23
#include <
OpenKarto/RigidBodyTransform.h
>
24
25
using namespace
karto
;
26
27
RigidBodyTransform::RigidBodyTransform
(
const
karto::Pose2
& rPose)
28
{
29
SetTransform
(
karto::Pose2
(), rPose);
30
}
31
32
RigidBodyTransform::RigidBodyTransform
(
const
karto::Pose2
& rPose1,
const
karto::Pose2
& rPose2)
33
{
34
SetTransform
(rPose1, rPose2);
35
}
36
37
void
RigidBodyTransform::SetTransform
(
const
karto::Pose2
& rPose1,
const
karto::Pose2
& rPose2)
38
{
39
m_Transform
= rPose2;
40
m_Transform
.
SetX
(
m_Transform
.
GetX
() - rPose1.
GetX
());
41
m_Transform
.
SetY
(
m_Transform
.
GetY
() - rPose1.
GetY
());
42
43
karto::Matrix3
rotation;
44
rotation.
FromAxisAngle
(0, 0, 1, -rPose1.
GetHeading
());
45
m_Transform
= rotation *
m_Transform
;
46
m_Transform
.
SetHeading
(
m_Transform
.
GetHeading
() - rPose1.
GetHeading
());
47
48
m_InvTransform
= rPose1;
49
m_InvTransform
.
SetX
(
m_InvTransform
.
GetX
() - rPose2.
GetX
());
50
m_InvTransform
.
SetY
(
m_InvTransform
.
GetY
() - rPose2.
GetY
());
51
52
karto::Matrix3
invRotation;
53
invRotation.
FromAxisAngle
(0, 0, 1, -rPose2.
GetHeading
());
54
m_InvTransform
= invRotation *
m_InvTransform
;
55
m_InvTransform
.
SetHeading
(
m_InvTransform
.
GetHeading
() - rPose2.
GetHeading
());
56
}
57
58
karto::Pose2
RigidBodyTransform::TransformPose
(
const
karto::Pose2
& rSourcePose)
59
{
60
karto::Matrix3
rotation;
61
rotation.
FromAxisAngle
(0, 0, 1, rSourcePose.
GetHeading
());
62
karto::Pose2
newPose = rotation *
m_Transform
;
63
newPose += rSourcePose;
64
65
return
newPose;
66
}
67
68
karto::Pose2
RigidBodyTransform::InverseTransformPose
(
const
karto::Pose2
& rSourcePose)
69
{
70
karto::Matrix3
rotation;
71
rotation.
FromAxisAngle
(0, 0, 1, rSourcePose.
GetHeading
());
72
karto::Pose2
newPose = rotation *
m_InvTransform
;
73
newPose += rSourcePose;
74
75
return
newPose;
76
}
RigidBodyTransform.h
karto::RigidBodyTransform::InverseTransformPose
karto::Pose2 InverseTransformPose(const karto::Pose2 &rSourcePose)
Definition:
RigidBodyTransform.cpp:68
karto::Pose2::GetY
kt_double GetY() const
Definition:
Geometry.h:2238
Geometry.h
karto::RigidBodyTransform::SetTransform
void SetTransform(const karto::Pose2 &rPose1, const karto::Pose2 &rPose2)
Definition:
RigidBodyTransform.cpp:37
karto::Matrix3::FromAxisAngle
void FromAxisAngle(kt_double x, kt_double y, kt_double z, const kt_double radians)
Definition:
Geometry.h:2605
karto::Matrix3
Definition:
Geometry.h:2557
karto::RigidBodyTransform::m_InvTransform
karto::Pose2 m_InvTransform
Definition:
RigidBodyTransform.h:40
karto::Pose2::SetY
void SetY(kt_double y)
Definition:
Geometry.h:2247
karto::RigidBodyTransform::TransformPose
karto::Pose2 TransformPose(const karto::Pose2 &rSourcePose)
Definition:
RigidBodyTransform.cpp:58
karto::Pose2::GetX
kt_double GetX() const
Definition:
Geometry.h:2220
karto::Pose2::SetHeading
void SetHeading(kt_double heading)
Definition:
Geometry.h:2283
karto::Pose2
Definition:
Geometry.h:2182
karto::RigidBodyTransform::m_Transform
karto::Pose2 m_Transform
Definition:
RigidBodyTransform.h:39
karto::Pose2::SetX
void SetX(kt_double x)
Definition:
Geometry.h:2229
karto::RigidBodyTransform::RigidBodyTransform
RigidBodyTransform(const karto::Pose2 &rPose)
Definition:
RigidBodyTransform.cpp:27
karto::Pose2::GetHeading
kt_double GetHeading() const
Definition:
Geometry.h:2274
karto
Definition:
Any.cpp:20
nav2d_karto
Author(s): Sebastian Kasperski
autogenerated on Wed Mar 2 2022 00:37:22