CARLA
 
载入中...
搜索中...
未找到
Odometry.cpp
浏览该文件的文档.
1// Copyright 2016 Proyectos y Sistemas de Mantenimiento SL (eProsima).
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15/*!
16 * @file Odometry.cpp
17 * This source file contains the definition of the described types in the IDL file.
18 *
19 * This file was generated by the tool gen.
20 */
21
22#ifdef _WIN32
23// Remove linker warning LNK4221 on Visual Studio
24namespace {
25char dummy;
26} // namespace
27#endif // _WIN32
28
29#include "Odometry.h"
30#include <fastcdr/Cdr.h>
31
32#include <fastcdr/exceptions/BadParamException.h>
33using namespace eprosima::fastcdr::exception;
34
35#include <utility>
36
37#define geometry_msgs_msg_TwistWithCovariance_max_cdr_typesize 336ULL;
38#define geometry_msgs_msg_Vector3_max_cdr_typesize 24ULL;
39#define geometry_msgs_msg_Pose_max_cdr_typesize 56ULL;
40#define std_msgs_msg_Time_max_cdr_typesize 8ULL;
41#define nav_msgs_msg_Odometry_max_cdr_typesize 1208ULL;
42#define geometry_msgs_msg_Twist_max_cdr_typesize 48ULL;
43#define geometry_msgs_msg_Point_max_cdr_typesize 24ULL;
44#define geometry_msgs_msg_PoseWithCovariance_max_cdr_typesize 344ULL;
45#define geometry_msgs_msg_Quaternion_max_cdr_typesize 32ULL;
46#define std_msgs_msg_Header_max_cdr_typesize 268ULL;
47#define geometry_msgs_msg_TwistWithCovariance_max_key_cdr_typesize 0ULL;
48#define geometry_msgs_msg_Vector3_max_key_cdr_typesize 0ULL;
49#define geometry_msgs_msg_Pose_max_key_cdr_typesize 0ULL;
50#define std_msgs_msg_Time_max_key_cdr_typesize 0ULL;
51#define nav_msgs_msg_Odometry_max_key_cdr_typesize 0ULL;
52#define geometry_msgs_msg_Twist_max_key_cdr_typesize 0ULL;
53#define geometry_msgs_msg_Point_max_key_cdr_typesize 0ULL;
54#define geometry_msgs_msg_PoseWithCovariance_max_key_cdr_typesize 0ULL;
55#define geometry_msgs_msg_Quaternion_max_key_cdr_typesize 0ULL;
56#define std_msgs_msg_Header_max_key_cdr_typesize 0ULL;
57
59{
60 // std_msgs::msg::Header m_header
61
62 // string m_child_frame_id
64 // geometry_msgs::msg::PoseWithCovariance m_pose
65
66 // geometry_msgs::msg::TwistWithCovariance m_twist
67}
68
72
74 const Odometry& x)
75{
76 m_header = x.m_header;
77 m_child_frame_id = x.m_child_frame_id;
78 m_pose = x.m_pose;
79 m_twist = x.m_twist;
80}
81
83 Odometry&& x) noexcept
84{
85 m_header = std::move(x.m_header);
86 m_child_frame_id = std::move(x.m_child_frame_id);
87 m_pose = std::move(x.m_pose);
88 m_twist = std::move(x.m_twist);
89}
90
92 const Odometry& x)
93{
94 // 将传入对象 x 的 m_header 成员复制到当前对象的 m_header 成员中
95 m_header = x.m_header;
96
97 // 将传入对象 x 的 m_child_frame_id 成员复制到当前对象的 m_child_frame_id 成员中
98 m_child_frame_id = x.m_child_frame_id;
99
100 // 将传入对象 x 的 m_pose 成员复制到当前对象的 m_pose 成员中
101 m_pose = x.m_pose;
102
103 // 将传入对象 x 的 m_twist 成员复制到当前对象的 m_twist 成员中
104 m_twist = x.m_twist;
105
106 // 返回当前对象的引用,支持链式赋值操作(例如 obj1 = obj2 = obj3)
107 return *this;
108}
109
110// 重载赋值运算符(移动赋值),用于将一个右值类型的Odometry对象赋值给当前对象
111// noexcept表示该函数不会抛出异常,保证了移动赋值操作的异常安全性
113 Odometry&& x) noexcept
114{
115// 将传入右值对象的头部信息通过移动语义赋值给当前对象的头部信息
116 m_header = std::move(x.m_header);
117// 将传入右值对象的子坐标系框架ID通过移动语义赋值给当前对象的对应成员
118 m_child_frame_id = std::move(x.m_child_frame_id);
119 // 将传入右值对象的位姿信息通过移动语义赋值给当前对象的对应成员
120 m_pose = std::move(x.m_pose);
121// 将传入右值对象的速度信息通过移动语义赋值给当前对象的对应成员
122 m_twist = std::move(x.m_twist);
123// 返回当前对象自身的引用,以支持连续赋值等操作,例如 a = b = c这种形式
124 return *this;
125}
126// 重载相等比较运算符,用于比较当前的Odometry对象与另一个Odometry对象是否相等
127// 参数x为要与之比较的另一个Odometry对象,const表示该函数不会修改当前对象以及传入的参数对象
129 const Odometry& x) const
130{
131 // 通过分别比较两个对象的头部信息、子坐标系框架ID、位姿信息、速度信息是否都相等
132 // 来判断整个Odometry对象是否相等,只有所有这些成员都相等时才返回true,否则返回false
133 return (m_header == x.m_header && m_child_frame_id == x.m_child_frame_id && m_pose == x.m_pose && m_twist == x.m_twist);
134}
135// 重载不等比较运算符,通过对相等比较运算符取反来实现
136// 即如果当前对象与传入的对象不相等就返回true,相等则返回false
138 const Odometry& x) const
139{
140 return !(*this == x);
141}
142// 获取最大的CDR序列化大小(这里可能基于某种固定的类型相关的最大尺寸定义,从函数名推测)
143// 参数current_alignment可能表示当前的对齐相关信息,但在函数体内暂时未使用(通过强制类型转换将其忽略)
145 size_t current_alignment)
146{
147 // 将current_alignment参数强制转换为void类型,相当于忽略这个参数的实际传入值,因为函数内暂时不用它
148 static_cast<void>(current_alignment);
149// 返回一个预定义的最大CDR类型尺寸(应该是基于nav_msgs_msg_Odometry类型相关的固定值)
151}
152// 获取给定Odometry对象的CDR序列化大小
153// 参数data为要计算序列化大小的Odometry对象,current_alignment表示当前的对齐相关信息
155 const nav_msgs::msg::Odometry& data,
156 size_t current_alignment)
157{
158// 记录初始的对齐信息,后续用于计算相对于初始状态增加的序列化大小差值
160 // 计算并更新当前对齐信息,增加头部信息序列化后的大小,通过调用std_msgs::msg::Header的相关函数来实现
161 current_alignment += std_msgs::msg::Header::getCdrSerializedSize(data.header(), current_alignment);
162// 以下计算依次增加子坐标系框架ID、位姿、速度信息序列化后的大小
163 // 4可能是用于表示字符串长度等相关的一些固定字节数(推测),这里先加上4字节,然后进行对齐操作
164 // 再加上子坐标系框架ID字符串的实际长度以及一个结束符(这里推测'\0'占1字节)
165 current_alignment += 4 + eprosima::fastcdr::Cdr::alignment(current_alignment, 4) + data.child_frame_id().size() + 1;
166// 增加位姿信息序列化后的大小,通过调用geometry_msgs::msg::PoseWithCovariance的相关函数来实现
168// 增加速度信息序列化后的大小,通过调用geometry_msgs::msg::TwistWithCovariance的相关函数来实现
170// 返回相对于初始对齐信息增加的序列化大小,即整个Odometry对象序列化后的大小
172}
173// 将当前的Odometry对象进行序列化,将其数据按照特定的CDR格式写入到给定的Cdr对象中
174// 参数scdr为用于序列化操作的Cdr对象,const表示该函数不会修改当前的Odometry对象自身
176 eprosima::fastcdr::Cdr& scdr) const
177{
178// 将头部信息序列化到scdr对象中,按照相应的CDR序列化规则进行写入
179 scdr << m_header;
180// 将子坐标系框架ID字符串序列化到scdr对象中(这里先将C风格字符串传入,应该会按照对应的规则处理字符串内容)
181 scdr << m_child_frame_id.c_str();
182 // 将位姿信息序列化到scdr对象中
183 scdr << m_pose;
184// 将速度信息序列化到scdr对象中
185 scdr << m_twist;
186}
187// 对给定的Cdr对象中的数据进行反序列化,将数据提取出来赋值给当前的Odometry对象成员
188// 参数dcdr为包含要反序列化数据的Cdr对象
190 eprosima::fastcdr::Cdr& dcdr)
191{
192// 从dcdr对象中按照CDR反序列化规则读取头部信息并赋值给当前对象的头部成员
193 dcdr >> m_header;
194// 从dcdr对象中读取子坐标系框架ID并赋值给当前对象的对应成员
195 dcdr >> m_child_frame_id;
196// 从dcdr对象中读取位姿信息并赋值给当前对象的位姿成员
197 dcdr >> m_pose;
198 // 从dcdr对象中读取速度信息并赋值给当前对象的速度成员
199 dcdr >> m_twist;
200}
201
202/*!
203 * @brief This function copies the value in member header
204 * @param _header New value to be copied in member header
205 */
207 const std_msgs::msg::Header& _header)
208{
209 m_header = _header;
210}
211
212/*!
213 * @brief This function moves the value in member header
214 * @param _header New value to be moved in member header
215 */
217 std_msgs::msg::Header&& _header)
218{
219 m_header = std::move(_header);
220}
221
222/*!
223 * @brief This function returns a constant reference to member header
224 * @return Constant reference to member header
225 */
226const std_msgs::msg::Header& nav_msgs::msg::Odometry::header() const
227{
228 return m_header;
229}
230
231/*!
232 * @brief This function returns a reference to member header
233 * @return Reference to member header
234 */
235std_msgs::msg::Header& nav_msgs::msg::Odometry::header()
236{
237 return m_header;
238}
239/*!
240 * @brief This function copies the value in member child_frame_id
241 * @param _child_frame_id New value to be copied in member child_frame_id
242 */
244 const std::string& _child_frame_id)
245{
246 m_child_frame_id = _child_frame_id;
247}
248
249/*!
250 * @brief This function moves the value in member child_frame_id
251 * @param _child_frame_id New value to be moved in member child_frame_id
252 */
254 std::string&& _child_frame_id)
255{
256 m_child_frame_id = std::move(_child_frame_id);
257}
258
259/*!
260 * @brief This function returns a constant reference to member child_frame_id
261 * @return Constant reference to member child_frame_id
262 */
264{
265 return m_child_frame_id;
266}
267
268/*!
269 * @brief This function returns a reference to member child_frame_id
270 * @return Reference to member child_frame_id
271 */
273{
274 return m_child_frame_id;
275}
276
277/*!
278 * @brief This function copies the value in member pose
279 * @param _pose New value to be copied in member pose
280 */
283{
284 m_pose = _pose;
285}
286
287/*!
288 * @brief This function moves the value in member pose
289 * @param _pose New value to be moved in member pose
290 */
293{
294 m_pose = std::move(_pose);
295}
296
297/*!
298 * @brief This function returns a constant reference to member pose
299 * @return Constant reference to member pose
300 */
305
306/*!
307 * @brief This function returns a reference to member pose
308 * @return Reference to member pose
309 */
314
315/*!
316 * @brief This function copies the value in member twist
317 * @param _twist New value to be copied in member twist
318 */
321{
322 m_twist = _twist;
323}
324
325/*!
326 * @brief This function moves the value in member twist
327 * @param _twist New value to be moved in member twist
328 */
331{
332 m_twist = std::move(_twist);
333}
334
335/*!
336 * @brief This function returns a constant reference to member twist
337 * @return Constant reference to member twist
338 */
343
344/*!
345 * @brief This function returns a reference to member twist
346 * @return Reference to member twist
347 */
352// 函数用于获取Odometry类型对象的键(Key)的最大CDR序列化大小。
353// 参数current_alignment表示当前的对齐情况(可能用于序列化时字节对齐相关处理,但在此函数中暂未实际用到)。
355 size_t current_alignment)
356{
357 // 将传入的current_alignment参数强制转换为void类型,意味着在这个函数里忽略该参数,不进行基于它的任何操作。
358 // 通常这么做是因为函数定义需要这个参数,但函数实现暂时不需要使用它的情况。
359 static_cast<void>(current_alignment);
360// 返回预先定义好的Odometry对象键的最大CDR类型尺寸,具体值应该由nav_msgs_msg_Odometry_max_key_cdr_typesize表示(其定义可能在别处)。
362}
363// 函数用于判断Odometry类型对象的键(Key)是否已被定义,返回一个布尔值来表示结果。
365{
366 // 直接返回false,表示默认情况下Odometry对象的键未被定义。
367 // 具体是否符合实际需求,取决于该类型在整个系统中的设计和使用场景。
368 return false;
369}
370// 函数用于对Odometry类型对象的键(Key)进行序列化操作,将键相关的数据按照CDR格式写入到给定的Cdr对象中。
371// 参数scdr是一个eprosima::fastcdr::Cdr类型的对象,用于执行序列化相关的写入操作,const表示此函数不会修改调用它的Odometry对象本身。
373 eprosima::fastcdr::Cdr& scdr) const
374{
375 // 将scdr参数强制转换为void类型,也就是忽略这个参数,意味着这个函数目前实际上并没有对传入的Cdr对象进行任何有效的写入操作。
376 // 这可能是函数还未完全实现相关功能,或者在当前场景下不需要进行实际写入的一种占位写法。
377 (void) scdr;
378}
#define nav_msgs_msg_Odometry_max_cdr_typesize
Definition Odometry.cpp:41
#define nav_msgs_msg_Odometry_max_key_cdr_typesize
Definition Odometry.cpp:51
return current_alignment initial_alignment
This class represents the structure PoseWithCovariance defined by the user in the IDL file.
static eProsima_user_DllExport size_t getCdrSerializedSize(const geometry_msgs::msg::PoseWithCovariance &data, size_t current_alignment=0)
This function returns the serialized size of a data depending on the buffer alignment.
此类表示用户在 IDL 文件中定义的 TwistWithCovariance 结构。 <>
static eProsima_user_DllExport size_t getCdrSerializedSize(const geometry_msgs::msg::TwistWithCovariance &data, size_t current_alignment=0)
返回数据的序列化大小(取决于缓冲区对齐)。
This class represents the structure Odometry defined by the user in the IDL file.
Definition Odometry.h:75
eProsima_user_DllExport void serializeKey(eprosima::fastcdr::Cdr &cdr) const
This function serializes the key members of an object using CDR serialization.
Definition Odometry.cpp:372
eProsima_user_DllExport const std::string & child_frame_id() const
This function returns a constant reference to member child_frame_id
Definition Odometry.cpp:263
std_msgs::msg::Header m_header
Definition Odometry.h:286
std::string m_child_frame_id
Definition Odometry.h:287
eProsima_user_DllExport void pose(const geometry_msgs::msg::PoseWithCovariance &_pose)
This function copies the value in member pose
Definition Odometry.cpp:281
eProsima_user_DllExport void deserialize(eprosima::fastcdr::Cdr &cdr)
This function deserializes an object using CDR serialization.
Definition Odometry.cpp:189
geometry_msgs::msg::PoseWithCovariance m_pose
Definition Odometry.h:288
eProsima_user_DllExport const geometry_msgs::msg::PoseWithCovariance & pose() const
This function returns a constant reference to member pose
Definition Odometry.cpp:301
eProsima_user_DllExport bool operator==(const Odometry &x) const
Comparison operator.
Definition Odometry.cpp:128
eProsima_user_DllExport ~Odometry()
Default destructor.
Definition Odometry.cpp:69
eProsima_user_DllExport bool operator!=(const Odometry &x) const
Comparison operator.
Definition Odometry.cpp:137
static eProsima_user_DllExport size_t getKeyMaxCdrSerializedSize(size_t current_alignment=0)
This function returns the maximum serialized size of the Key of an object depending on the buffer ali...
Definition Odometry.cpp:354
eProsima_user_DllExport void twist(const geometry_msgs::msg::TwistWithCovariance &_twist)
This function copies the value in member twist
Definition Odometry.cpp:319
static eProsima_user_DllExport bool isKeyDefined()
This function tells you if the Key has been defined for this type
Definition Odometry.cpp:364
eProsima_user_DllExport void header(const std_msgs::msg::Header &_header)
This function copies the value in member header
Definition Odometry.cpp:206
eProsima_user_DllExport const std_msgs::msg::Header & header() const
This function returns a constant reference to member header
Definition Odometry.cpp:226
eProsima_user_DllExport Odometry()
Default constructor.
Definition Odometry.cpp:58
static eProsima_user_DllExport size_t getCdrSerializedSize(const nav_msgs::msg::Odometry &data, size_t current_alignment=0)
This function returns the serialized size of a data depending on the buffer alignment.
Definition Odometry.cpp:154
eProsima_user_DllExport void child_frame_id(const std::string &_child_frame_id)
This function copies the value in member child_frame_id
Definition Odometry.cpp:243
geometry_msgs::msg::TwistWithCovariance m_twist
Definition Odometry.h:289
eProsima_user_DllExport Odometry & operator=(const Odometry &x)
Copy assignment.
Definition Odometry.cpp:91
eProsima_user_DllExport const geometry_msgs::msg::TwistWithCovariance & twist() const
This function returns a constant reference to member twist
Definition Odometry.cpp:339
static eProsima_user_DllExport size_t getMaxCdrSerializedSize(size_t current_alignment=0)
This function returns the maximum serialized size of an object depending on the buffer alignment.
Definition Odometry.cpp:144
eProsima_user_DllExport void serialize(eprosima::fastcdr::Cdr &cdr) const
This function serializes an object using CDR serialization.
Definition Odometry.cpp:175