CARLA
 
载入中...
搜索中...
未找到
Imu.cpp
浏览该文件的文档.
1// Copyright 2016 Proyectos y Sistemas de Mantenimiento SL (eProsima).
2// Licensed under the Apache License, Version 2.0 (the "License");
3// you may not use this file except in compliance with the License.
4// You may obtain a copy of the License at
5// http://www.apache.org/licenses/LICENSE-2.0
6// Unless required by applicable law or agreed to in writing, software
7// distributed under the License is distributed on an "AS IS" BASIS,
8// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9// See the License for the specific language governing permissions and
10// limitations under the License.
11 * @file Imu.cpp
12 * This source file contains the definition of the described types in the IDL file.
13 * This file was generated by the tool gen.
14#ifdef _WIN32
15// Remove linker warning LNK4221 on Visual Studio
16namespace {
17char dummy;
18} // namespace
19#endif // _WIN32
20#include "Imu.h"
21#include <fastcdr/Cdr.h>
22#include <fastcdr/exceptions/BadParamException.h>
23using namespace eprosima::fastcdr::exception;
24#include <utility>
25// 以下定义了各个相关消息类型的最大CDR序列化大小以及最大键CDR序列化大小,这些宏定义的值用于后续序列化相关的计算和操作
26// 宏定义
27#define geometry_msgs_msg_Vector3_max_cdr_typesize 24ULL;
28#define std_msgs_msg_Time_max_cdr_typesize 8ULL;
29
30#define geometry_msgs_msg_Quaternion_max_cdr_typesize 32ULL;
31#define std_msgs_msg_Header_max_cdr_typesize 268ULL;
32#define sensor_msgs_msg_Imu_max_cdr_typesize 568ULL;
33#define geometry_msgs_msg_Vector3_max_key_cdr_typesize 0ULL;
34#define std_msgs_msg_Time_max_key_cdr_typesize 0ULL;
35
36#define geometry_msgs_msg_Quaternion_max_key_cdr_typesize 0ULL;
37#define std_msgs_msg_Header_max_key_cdr_typesize 0ULL;
38#define sensor_msgs_msg_Imu_max_key_cdr_typesize 0ULL;
39// sensor_msgs::msg::Imu类的默认构造函数,用于初始化Imu对象的各个成员变量
40// 初始化imu对象的各个成员变量
42{
43 // std_msgs::msg::Header m_header
44 // geometry_msgs::msg::Quaternion m_orientation
45 // sensor_msgs::msg::sensor_msgs__Imu__double_array_9 m_orientation_covariance
46 // 初始化为0
47 memset(&m_orientation_covariance, 0, (9) * 8);
48 // geometry_msgs::msg::Vector3 m_angular_velocity
49 // sensor_msgs::msg::sensor_msgs__Imu__double_array_9 m_angular_velocity_covariance
50 memset(&m_angular_velocity_covariance, 0, (9) * 8);
51 // geometry_msgs::msg::Vector3 m_linear_acceleration
52 // sensor_msgs::msg::sensor_msgs__Imu__double_array_9 m_linear_acceleration_covariance
53 memset(&m_linear_acceleration_covariance, 0, (9) * 8);
54}
58// 拷贝构造函数
60 const Imu& x)
61{
62 // 依次拷贝各个成员变量的值,实现深拷贝(如果成员变量本身是简单类型,那就是值拷贝;如果是复杂类型且有自己的拷贝逻辑,则按其逻辑拷贝)
63 m_header = x.m_header;
64 m_orientation = x.m_orientation;
65 m_orientation_covariance = x.m_orientation_covariance;
66 m_angular_velocity = x.m_angular_velocity;
67 m_angular_velocity_covariance = x.m_angular_velocity_covariance;
68 m_linear_acceleration = x.m_linear_acceleration;
69 m_linear_acceleration_covariance = x.m_linear_acceleration_covariance;
70}
71// 移动构造函数,用于将另一个Imu对象的资源“移动”到当前对象,避免不必要的拷贝开销,通过std::move来转移资源所有权
73 Imu&& x) noexcept
74{
75 m_header = std::move(x.m_header);
76 m_orientation = std::move(x.m_orientation);
77 m_orientation_covariance = std::move(x.m_orientation_covariance);
78 m_angular_velocity = std::move(x.m_angular_velocity);
79 m_angular_velocity_covariance = std::move(x.m_angular_velocity_covariance);
80 m_linear_acceleration = std::move(x.m_linear_acceleration);
81 m_linear_acceleration_covariance = std::move(x.m_linear_acceleration_covariance);
82}
84 const Imu& x)
85{
86 m_header = x.m_header;
87 m_orientation = x.m_orientation;
88 m_orientation_covariance = x.m_orientation_covariance;
89 m_angular_velocity = x.m_angular_velocity;
90 m_angular_velocity_covariance = x.m_angular_velocity_covariance;
91 m_linear_acceleration = x.m_linear_acceleration;
92 m_linear_acceleration_covariance = x.m_linear_acceleration_covariance;
93 return *this;
94}
95// 重载赋值运算符(拷贝赋值),用于将另一个Imu对象的数据赋值给当前对象
97 Imu&& x) noexcept
98{
99 m_header = std::move(x.m_header);
100 m_orientation = std::move(x.m_orientation);
101 m_orientation_covariance = std::move(x.m_orientation_covariance);
102 m_angular_velocity = std::move(x.m_angular_velocity);
103 m_angular_velocity_covariance = std::move(x.m_angular_velocity_covariance);
104 m_linear_acceleration = std::move(x.m_linear_acceleration);
105 m_linear_acceleration_covariance = std::move(x.m_linear_acceleration_covariance);
106 return *this;
107}
108// 重载相等运算符,用于比较两个Imu对象是否相等,比较各个成员变量是否都相等
110 const Imu& x) const
111{
112 return (m_header == x.m_header && m_orientation == x.m_orientation && m_orientation_covariance == x.m_orientation_covariance && m_angular_velocity == x.m_angular_velocity && m_angular_velocity_covariance == x.m_angular_velocity_covariance && m_linear_acceleration == x.m_linear_acceleration && m_linear_acceleration_covariance == x.m_linear_acceleration_covariance);
113}
114// 重载不等运算符,通过对相等运算符取反来判断两个Imu对象是否不相等
116 const Imu& x) const
117{
118 return !(*this == x);
119}
120// 获取Imu对象的最大CDR序列化大小,这里忽略传入的当前对齐参数,直接返回预定义的sensor_msgs_msg_Imu_max_cdr_typesize值
127// 计算将Imu对象序列化到CDR格式所需的字节数
129 const sensor_msgs::msg::Imu& data,
130 size_t current_alignment)
131{
133 current_alignment += std_msgs::msg::Header::getCdrSerializedSize(data.header(), current_alignment);
135 current_alignment += ((9) * 8) + eprosima::fastcdr::Cdr::alignment(current_alignment, 8);
137 current_alignment += ((9) * 8) + eprosima::fastcdr::Cdr::alignment(current_alignment, 8);
139 current_alignment += ((9) * 8) + eprosima::fastcdr::Cdr::alignment(current_alignment, 8);
140 // 返回序列化后的总字节数与初始对齐式的差值
142}
143// 将Imu对象的各个成员变量序列化到给定的CDR对象中,按照成员变量定义的顺序依次进行序列化操作
145 eprosima::fastcdr::Cdr& scdr) const
146{
147 scdr << m_header;
148 scdr << m_orientation;
149 scdr << m_orientation_covariance;
150 scdr << m_angular_velocity;
151 scdr << m_angular_velocity_covariance;
152 scdr << m_linear_acceleration;
153 scdr << m_linear_acceleration_covariance;
154}
155// 从给定的CDR对象中反序列化数据到Imu对象的各个成员变量中,按照与序列化相反的顺序依次读取数据进行赋值
157 eprosima::fastcdr::Cdr& dcdr)
158{
159 // 从 Cdr 数据流中反序列化成员变量
160 dcdr >> m_header; // 反序列化头部信息
161 dcdr >> m_orientation; // 反序列化方向四元数
162 dcdr >> m_orientation_covariance; // 反序列化方向协方差
163 dcdr >> m_angular_velocity; // 反序列化角速度
164 dcdr >> m_angular_velocity_covariance; // 反序列化角速度协方差
165 dcdr >> m_linear_acceleration; // 反序列化线性加速度
166 dcdr >> m_linear_acceleration_covariance; // 反序列化线性加速度协方差
167}
168
169/*!
170 * @brief 复制成员变量 header 的值
171 * @param _header 新值,将被复制到成员变量 header
172 */
174 const std_msgs::msg::Header& _header)
175{
176 m_header = _header; // 复制 header
177}
178
179/*!
180 * @brief 移动成员变量 header 的值
181 * @param _header 新值,将被移动到成员变量 header
182 */
184 std_msgs::msg::Header&& _header)
185{
186 m_header = std::move(_header); // 移动 header
187}
188
189/*!
190 * @brief 返回成员变量 header 的常量引用
191 * @return 常量引用,指向成员变量 header
192 */
193const std_msgs::msg::Header& sensor_msgs::msg::Imu::header() const
194{
195 return m_header; // 返回 header 的常量引用
196}
197
198/*!
199 * @brief 返回成员变量 header 的引用
200 * @return 引用,指向成员变量 header
201 */
202std_msgs::msg::Header& sensor_msgs::msg::Imu::header()
203{
204 return m_header; // 返回 header 的可修改引用
205}
206
207/*!
208 * @brief 复制成员变量 orientation 的值
209 * @param _orientation 新值,将被复制到成员变量 orientation
210 */
212 const geometry_msgs::msg::Quaternion& _orientation)
213{
214 m_orientation = _orientation; // 复制方向
215}
216
217/*!
218 * @brief 移动成员变量 orientation 的值
219 * @param _orientation 新值,将被移动到成员变量 orientation
220 */
222 geometry_msgs::msg::Quaternion&& _orientation)
223{
224 m_orientation = std::move(_orientation); // 移动方向
225}
226
227/*!
228 * @brief 返回成员变量 orientation 的常量引用
229 * @return 常量引用,指向成员变量 orientation
230 */
232{
233 return m_orientation; // 返回方向的常量引用
234}
235
236/*!
237 * @brief 返回成员变量 orientation 的引用
238 * @return 引用,指向成员变量 orientation
239 */
241{
242 return m_orientation; // 返回方向的可修改引用
243}
244
245/*!
246 * @brief 复制成员变量 orientation_covariance 的值
247 * @param _orientation_covariance 新值,将被复制到成员变量 orientation_covariance
248 */
250 const sensor_msgs::msg::sensor_msgs__Imu__double_array_9& _orientation_covariance)
251{
252 m_orientation_covariance = _orientation_covariance; // 复制方向协方差
253}
254
255/*!
256 * @brief This function moves the value in member orientation_covariance
257 * @param _orientation_covariance New value to be moved in member orientation_covariance
258 */
261{
262 m_orientation_covariance = std::move(_orientation_covariance);
263}
264
265/*!
266 * @brief This function returns a constant reference to member orientation_covariance
267 * @return Constant reference to member orientation_covariance
268 */
273
274/*!
275 * @brief This function returns a reference to member orientation_covariance
276 * @return Reference to member orientation_covariance
277 */
282
283/*!
284 * @brief This function copies the value in member angular_velocity
285 * @param _angular_velocity New value to be copied in member angular_velocity
286 */
288 const geometry_msgs::msg::Vector3& _angular_velocity)
289{
290 m_angular_velocity = _angular_velocity;
291}
292
293/*!
294 * @brief This function moves the value in member angular_velocity
295 * @param _angular_velocity New value to be moved in member angular_velocity
296 */
298 geometry_msgs::msg::Vector3&& _angular_velocity)
299{
300 m_angular_velocity = std::move(_angular_velocity);
301}
302
303/*!
304 * @brief This function returns a constant reference to member angular_velocity
305 * @return Constant reference to member angular_velocity
306 */
308{
309 return m_angular_velocity;
310}
311
312/*!
313 * @brief This function returns a reference to member angular_velocity
314 * @return Reference to member angular_velocity
315 */
320
321/*!
322 * @brief This function copies the value in member angular_velocity_covariance
323 * @param _angular_velocity_covariance New value to be copied in member angular_velocity_covariance
324 */
326 const sensor_msgs::msg::sensor_msgs__Imu__double_array_9& _angular_velocity_covariance)
327{
328 m_angular_velocity_covariance = _angular_velocity_covariance;
329}
330
331/*!
332 * @brief This function moves the value in member angular_velocity_covariance
333 * @param _angular_velocity_covariance New value to be moved in member angular_velocity_covariance
334 */
336 sensor_msgs::msg::sensor_msgs__Imu__double_array_9&& _angular_velocity_covariance)
337{
338 m_angular_velocity_covariance = std::move(_angular_velocity_covariance);
339}
340
341/*!
342 * @brief This function returns a constant reference to member angular_velocity_covariance
343 * @return Constant reference to member angular_velocity_covariance
344 */
349
350/*!
351 * @brief This function returns a reference to member angular_velocity_covariance
352 * @return Reference to member angular_velocity_covariance
353 */
358
359/*!
360 * @brief This function copies the value in member linear_acceleration
361 * @param _linear_acceleration New value to be copied in member linear_acceleration
362 */
364 const geometry_msgs::msg::Vector3& _linear_acceleration)
365{
366 m_linear_acceleration = _linear_acceleration;
367}
368
369/*!
370 * @brief This function moves the value in member linear_acceleration
371 * @param _linear_acceleration New value to be moved in member linear_acceleration
372 */
374 geometry_msgs::msg::Vector3&& _linear_acceleration)
375{
376 m_linear_acceleration = std::move(_linear_acceleration);
377}
378
379/*!
380 * @brief This function returns a constant reference to member linear_acceleration
381 * @return Constant reference to member linear_acceleration
382 */
384{
385 return m_linear_acceleration;
386}
387
388/*!
389 * @brief This function returns a reference to member linear_acceleration
390 * @return Reference to member linear_acceleration
391 */
393{
394 return m_linear_acceleration;
395}
396
397/*!
398 * @brief This function copies the value in member linear_acceleration_covariance
399 * @param _linear_acceleration_covariance New value to be copied in member linear_acceleration_covariance
400 */
402 const sensor_msgs::msg::sensor_msgs__Imu__double_array_9& _linear_acceleration_covariance)
403{
404 m_linear_acceleration_covariance = _linear_acceleration_covariance;
405}
406
407/*!
408 * @brief This function moves the value in member linear_acceleration_covariance
409 * @param _linear_acceleration_covariance New value to be moved in member linear_acceleration_covariance
410 */
412 sensor_msgs::msg::sensor_msgs__Imu__double_array_9&& _linear_acceleration_covariance)
413{
414 m_linear_acceleration_covariance = std::move(_linear_acceleration_covariance);
415}
416
417/*!
418 * @brief This function returns a constant reference to member linear_acceleration_covariance
419 * @return Constant reference to member linear_acceleration_covariance
420 */
422{
423 return m_linear_acceleration_covariance;
424}
425
426/*!
427 * @brief This function returns a reference to member linear_acceleration_covariance
428 * @return Reference to member linear_acceleration_covariance
429sensor_msgs::msg::sensor_msgs__Imu__double_array_9& sensor_msgs::msg::Imu::linear_acceleration_covariance()
430{
431 return m_linear_acceleration_covariance;
432}
433
434size_t sensor_msgs::msg::Imu::getKeyMaxCdrSerializedSize(
435 size_t current_alignment)
436{
437 static_cast<void>(current_alignment);
438 return sensor_msgs_msg_Imu_max_key_cdr_typesize;
439}
440
441bool sensor_msgs::msg::Imu::isKeyDefined()
442{
443 return false;
444}
445
446void sensor_msgs::msg::Imu::serializeKey(
447 eprosima::fastcdr::Cdr& scdr) const
448{
449 (void) scdr;
450}
#define sensor_msgs_msg_Imu_max_cdr_typesize
Definition Imu.cpp:32
return current_alignment initial_alignment
This class represents the structure Quaternion defined by the user in the IDL file.
Definition Quaternion.h:71
static eProsima_user_DllExport size_t getCdrSerializedSize(const geometry_msgs::msg::Quaternion &data, size_t current_alignment=0)
This function returns the serialized size of a data depending on the buffer alignment.
此类表示用户在 IDL 文件中定义的 Vector3 结构。 <>
Definition Vector3.h:72
static eProsima_user_DllExport size_t getCdrSerializedSize(const geometry_msgs::msg::Vector3 &data, size_t current_alignment=0)
此函数返回数据的序列化大小 取决于缓冲区对齐。
Definition Vector3.cpp:111
This class represents the structure Imu defined by the user in the IDL file.
Definition Imu.h:76
std_msgs::msg::Header m_header
Definition Imu.h:362
eProsima_user_DllExport const sensor_msgs::msg::sensor_msgs__Imu__double_array_9 & linear_acceleration_covariance() const
This function returns a constant reference to member linear_acceleration_covariance
Definition Imu.cpp:421
eProsima_user_DllExport void orientation(const geometry_msgs::msg::Quaternion &_orientation)
This function copies the value in member orientation
Definition Imu.cpp:211
sensor_msgs::msg::sensor_msgs__Imu__double_array_9 m_orientation_covariance
Definition Imu.h:364
geometry_msgs::msg::Vector3 m_linear_acceleration
Definition Imu.h:367
eProsima_user_DllExport const sensor_msgs::msg::sensor_msgs__Imu__double_array_9 & angular_velocity_covariance() const
This function returns a constant reference to member angular_velocity_covariance
Definition Imu.cpp:345
sensor_msgs::msg::sensor_msgs__Imu__double_array_9 m_linear_acceleration_covariance
Definition Imu.h:368
sensor_msgs::msg::sensor_msgs__Imu__double_array_9 m_angular_velocity_covariance
Definition Imu.h:366
eProsima_user_DllExport void deserialize(eprosima::fastcdr::Cdr &cdr)
This function deserializes an object using CDR serialization.
Definition Imu.cpp:156
geometry_msgs::msg::Vector3 m_angular_velocity
Definition Imu.h:365
eProsima_user_DllExport const sensor_msgs::msg::sensor_msgs__Imu__double_array_9 & orientation_covariance() const
This function returns a constant reference to member orientation_covariance
Definition Imu.cpp:269
eProsima_user_DllExport const geometry_msgs::msg::Vector3 & linear_acceleration() const
This function returns a constant reference to member linear_acceleration
Definition Imu.cpp:383
eProsima_user_DllExport void angular_velocity(const geometry_msgs::msg::Vector3 &_angular_velocity)
This function copies the value in member angular_velocity
Definition Imu.cpp:287
eProsima_user_DllExport Imu()
Default constructor.
Definition Imu.cpp:41
eProsima_user_DllExport const std_msgs::msg::Header & header() const
This function returns a constant reference to member header
Definition Imu.cpp:193
geometry_msgs::msg::Quaternion m_orientation
Definition Imu.h:363
eProsima_user_DllExport void serialize(eprosima::fastcdr::Cdr &cdr) const
This function serializes an object using CDR serialization.
Definition Imu.cpp:144
eProsima_user_DllExport ~Imu()
Default destructor.
Definition Imu.cpp:55
eProsima_user_DllExport bool operator==(const Imu &x) const
Comparison operator.
Definition Imu.cpp:109
eProsima_user_DllExport void header(const std_msgs::msg::Header &_header)
This function copies the value in member header
Definition Imu.cpp:173
eProsima_user_DllExport bool operator!=(const Imu &x) const
Comparison operator.
Definition Imu.cpp:115
eProsima_user_DllExport void linear_acceleration(const geometry_msgs::msg::Vector3 &_linear_acceleration)
This function copies the value in member linear_acceleration
Definition Imu.cpp:363
eProsima_user_DllExport const geometry_msgs::msg::Vector3 & angular_velocity() const
This function returns a constant reference to member angular_velocity
Definition Imu.cpp:307
static eProsima_user_DllExport size_t getCdrSerializedSize(const sensor_msgs::msg::Imu &data, size_t current_alignment=0)
This function returns the serialized size of a data depending on the buffer alignment.
Definition Imu.cpp:128
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 Imu.cpp:121
eProsima_user_DllExport Imu & operator=(const Imu &x)
Copy assignment.
Definition Imu.cpp:83
eProsima_user_DllExport const geometry_msgs::msg::Quaternion & orientation() const
This function returns a constant reference to member orientation
Definition Imu.cpp:231
std::array< double, 9 > sensor_msgs__Imu__double_array_9
Definition Imu.h:70