pose_cov_ops.cpp
Go to the documentation of this file.
1 /* pose_cov_ops
2  *
3  * Copyright 2012-2022, Jose Luis Blanco Claraco
4  * License: BSD 3-Clause License
5  */
6 
8 
9 #include <mrpt/poses/CPose3D.h>
10 #include <mrpt/poses/CPose3DPDFGaussian.h>
11 
12 #if PACKAGE_ROS_VERSION == 1
13 #include <mrpt/ros1bridge/pose.h>
14 namespace m2r = mrpt::ros1bridge;
15 #else
16 #include <mrpt/ros2bridge/pose.h>
17 namespace m2r = mrpt::ros2bridge;
18 #endif
19 
20 void pose_cov_ops::compose(const Pose &a, const Pose &b, Pose &out) {
21 
22  out = m2r::toROS_Pose(m2r::fromROS(a) + m2r::fromROS(b));
23 }
24 
26  const PoseWithCovariance &b,
27  PoseWithCovariance &out) {
28  using namespace mrpt::poses;
29 
30  const CPose3DPDFGaussian A = m2r::fromROS(a);
31  const CPose3DPDFGaussian B = m2r::fromROS(b);
32 
33  const CPose3DPDFGaussian OUT = A + B;
34  out = m2r::toROS_Pose(OUT);
35 }
36 
38  PoseWithCovariance &out) {
39  using namespace mrpt::poses;
40 
41  CPose3DPDFGaussian A = m2r::fromROS(a);
42  const CPose3D B = m2r::fromROS(b);
43 
44  A += B;
45  out = m2r::toROS_Pose(A);
46 }
47 
49  PoseWithCovariance &out) {
50  using namespace mrpt::poses;
51 
52  const CPose3D A = m2r::fromROS(a);
53  CPose3DPDFGaussian B = m2r::fromROS(b);
54 
55  B.changeCoordinatesReference(A); // b = a (+) b
56  out = m2r::toROS_Pose(B);
57 }
58 
61  const tf2::Transform &b) {
62  using namespace mrpt::poses;
63 
64  CPose3DPDFGaussian A = m2r::fromROS(a);
65  const CPose3D B = m2r::fromROS(b);
66 
67  A += B;
68  return m2r::toROS_Pose(A);
69 }
70 
71 void pose_cov_ops::inverseCompose(const Pose &a, const Pose &b, Pose &out) {
72  out = m2r::toROS_Pose(m2r::fromROS(a) - m2r::fromROS(b));
73 }
74 
76  const PoseWithCovariance &b,
77  PoseWithCovariance &out) {
78  using namespace mrpt::poses;
79 
80  const CPose3DPDFGaussian A = m2r::fromROS(a);
81  const CPose3DPDFGaussian B = m2r::fromROS(b);
82 
83  const CPose3DPDFGaussian OUT = A - B;
84  out = m2r::toROS_Pose(OUT);
85 }
87  PoseWithCovariance &out) {
88  using namespace mrpt::poses;
89  using namespace mrpt::math;
90 
91  const CPose3DPDFGaussian A = m2r::fromROS(a);
92  const CPose3D B_mean = m2r::fromROS(b);
93 
94  const CPose3DPDFGaussian B(B_mean, CMatrixDouble66::Zero());
95 
96  const CPose3DPDFGaussian OUT = A - B;
97  out = m2r::toROS_Pose(OUT);
98 }
99 
101  PoseWithCovariance &out) {
102  using namespace mrpt::poses;
103  using namespace mrpt::math;
104 
105  const CPose3D A_mean = m2r::fromROS(a);
106  const CPose3DPDFGaussian B = m2r::fromROS(b);
107 
108  const CPose3DPDFGaussian A(A_mean, CMatrixDouble66::Zero());
109 
110  const CPose3DPDFGaussian OUT = A - B;
111  out = m2r::toROS_Pose(OUT);
112 }
113 
116  const tf2::Transform &b) {
117  using namespace mrpt::poses;
118  using namespace mrpt::math;
119 
120  const CPose3DPDFGaussian A = m2r::fromROS(a);
121  const CPose3D B_mean = m2r::fromROS(b);
122 
123  const CPose3DPDFGaussian B(B_mean, CMatrixDouble66::Zero());
124 
125  const CPose3DPDFGaussian OUT = A - B;
126  return m2r::toROS_Pose(OUT);
127 }
pose_cov_ops::compose
void compose(const Pose &a, const Pose &b, Pose &out)
Definition: pose_cov_ops.cpp:20
pose_cov_ops::PoseWithCovariance
geometry_msgs::msg::PoseWithCovariance PoseWithCovariance
Definition: pose_cov_ops.h:25
tf2::Transform
pose_cov_ops::inverseCompose
void inverseCompose(const Pose &a, const Pose &b, Pose &out)
Definition: pose_cov_ops.cpp:71
pose_cov_ops.h
pose_cov_ops::Pose
geometry_msgs::msg::Pose Pose
Definition: pose_cov_ops.h:24


pose_cov_ops
Author(s):
autogenerated on Wed Jan 22 2025 03:47:34