CARLA
 
载入中...
搜索中...
未找到
PointCloud2.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 PointCloud2.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 "PointCloud2.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 sensor_msgs_msg_PointField_max_cdr_typesize 272ULL;
38#define std_msgs_msg_Time_max_cdr_typesize 8ULL;
39#define sensor_msgs_msg_PointCloud2_max_cdr_typesize 27597ULL;
40#define std_msgs_msg_Header_max_cdr_typesize 268ULL;
41#define sensor_msgs_msg_PointField_max_key_cdr_typesize 0ULL;
42#define std_msgs_msg_Time_max_key_cdr_typesize 0ULL;
43#define sensor_msgs_msg_PointCloud2_max_key_cdr_typesize 0ULL;
44#define std_msgs_msg_Header_max_key_cdr_typesize 0ULL;
45
47{
48 // std_msgs::msg::Header m_header
49
50 // unsigned long m_height
51 m_height = 0;
52 // unsigned long m_width
53 m_width = 0;
54 // sequence<sensor_msgs::msg::PointField> m_fields
55
56 // boolean m_is_bigendian
57 m_is_bigendian = false;
58 // unsigned long m_point_step
59 m_point_step = 0;
60 // unsigned long m_row_step
61 m_row_step = 0;
62 // sequence<octet> m_data
63
64 // boolean m_is_dense
65 m_is_dense = false;
66}
67
71
73 const PointCloud2& x)
74{
75 // 拷贝构造函数,将另一个 PointCloud2 对象 x 的成员变量复制到当前对象
76
77 // 将 x 的 m_header 成员复制到当前对象的 m_header
78 m_header = x.m_header;
79
80 // 将 x 的 m_height 成员复制到当前对象的 m_height
81 m_height = x.m_height;
82
83 // 将 x 的 m_width 成员复制到当前对象的 m_width
84 m_width = x.m_width;
85
86 // 将 x 的 m_fields 成员复制到当前对象的 m_fields
87 m_fields = x.m_fields;
88
89 // 将 x 的 m_is_bigendian 成员复制到当前对象的 m_is_bigendian
90 m_is_bigendian = x.m_is_bigendian;
91
92 // 将 x 的 m_point_step 成员复制到当前对象的 m_point_step
93 m_point_step = x.m_point_step;
94
95 // 将 x 的 m_row_step 成员复制到当前对象的 m_row_step
96 m_row_step = x.m_row_step;
97
98 // 将 x 的 m_data 成员复制到当前对象的 m_data
99 m_data = x.m_data;
100
101 // 将 x 的 m_is_dense 成员复制到当前对象的 m_is_dense
102 m_is_dense = x.m_is_dense;
103}
104
105// 定义PointCloud2的移动构造函数,用于通过移动语义从另一个PointCloud2对象构造当前对象,并且声明不会抛出异常
107 PointCloud2&& x) noexcept
108{
109// 使用std::move将传入对象x的头信息移动赋值给当前对象的头信息,实现资源所有权的转移
110 m_header = std::move(x.m_header);
111// 将传入对象x的高度值直接赋值给当前对象的高度成员变量
112 m_height = x.m_height;
113// 将传入对象x的宽度值直接赋值给当前对象的宽度成员变量
114 m_width = x.m_width;
115 // 使用std::move将传入对象x的字段信息移动赋值给当前对象的字段信息,转移资源所有权
116 m_fields = std::move(x.m_fields);
117// 将传入对象x的大端序标志直接赋值给当前对象的大端序标志成员变量
118 m_is_bigendian = x.m_is_bigendian;
119// 将传入对象x的点步长值直接赋值给当前对象的点步长成员变量
120 m_point_step = x.m_point_step;
121 // 将传入对象x的行步长值直接赋值给当前对象的行步长成员变量
122 m_row_step = x.m_row_step;
123 // 使用std::move将传入对象x的数据移动赋值给当前对象的数据,转移资源所有权
124 m_data = std::move(x.m_data);
125// 将传入对象x的是否密集标志直接赋值给当前对象的是否密集标志成员变量
126 m_is_dense = x.m_is_dense;
127}
128// 定义PointCloud2的拷贝赋值运算符,用于将另一个PointCloud2对象的内容拷贝赋值给当前对象
130 const PointCloud2& x)
131{
132// 将传入对象x的头信息拷贝赋值给当前对象的头信息
133 m_header = x.m_header;
134// 将传入对象x的高度值拷贝赋值给当前对象的高度成员变量
135 m_height = x.m_height;
136// 将传入对象x的宽度值拷贝赋值给当前对象的宽度成员变量
137 m_width = x.m_width;
138 // 将传入对象x的字段信息拷贝赋值给当前对象的字段信息
139 m_fields = x.m_fields;
140// 将传入对象x的大端序标志拷贝赋值给当前对象的大端序标志成员变量
141 m_is_bigendian = x.m_is_bigendian;
142 // 将传入对象x的点步长值拷贝赋值给当前对象的点步长成员变量
143 m_point_step = x.m_point_step;
144// 将传入对象x的行步长值拷贝赋值给当前对象的行步长成员变量
145 m_row_step = x.m_row_step;
146// 将传入对象x的数据拷贝赋值给当前对象的数据
147 m_data = x.m_data;
148 // 将传入对象x的是否密集标志拷贝赋值给当前对象的是否密集标志成员变量
149 m_is_dense = x.m_is_dense;
150 // 返回当前对象的引用,以支持连续赋值等操作
151 return *this;
152}
153// 定义PointCloud2的移动赋值运算符,用于通过移动语义将另一个PointCloud2对象的内容移动赋值给当前对象,并且声明不会抛出异常
155 PointCloud2&& x) noexcept
156{
157// 使用std::move将传入对象x的头信息移动赋值给当前对象的头信息,转移资源所有权
158 m_header = std::move(x.m_header);
159 // 将传入对象x的高度值直接赋值给当前对象的高度成员变量
160 m_height = x.m_height;
161// 将传入对象x的宽度值直接赋值给当前对象的宽度成员变量
162 m_width = x.m_width;
163// 使用std::move将传入对象x的字段信息移动赋值给当前对象的字段信息,转移资源所有权
164 m_fields = std::move(x.m_fields);
165// 将传入对象x的大端序标志直接赋值给当前对象的大端序标志成员变量
166 m_is_bigendian = x.m_is_bigendian;
167// 将传入对象x的点步长值直接赋值给当前对象的点步长成员变量
168 m_point_step = x.m_point_step;
169// 将传入对象x的行步长值直接赋值给当前对象的行步长成员变量
170 m_row_step = x.m_row_step;
171// 使用std::move将传入对象x的数据移动赋值给当前对象的数据,转移资源所有权
172 m_data = std::move(x.m_data);
173// 将传入对象x的是否密集标志直接赋值给当前对象的是否密集标志成员变量
174 m_is_dense = x.m_is_dense;
175// 返回当前对象的引用,以支持连续赋值等操作
176 return *this;
177}
178// 定义PointCloud2的相等比较运算符,用于比较当前对象和另一个PointCloud2对象是否相等
180 const PointCloud2& x) const
181{
182// 依次比较两个对象的各个成员变量是否相等,只有所有成员变量都相等时,才返回true,表示两个对象相等
183 return (m_header == x.m_header && m_height == x.m_height && m_width == x.m_width && m_fields == x.m_fields && m_is_bigendian == x.m_is_bigendian && m_point_step == x.m_point_step && m_row_step == x.m_row_step && m_data == x.m_data && m_is_dense == x.m_is_dense);
184}
185// 定义PointCloud2的不等比较运算符,通过调用相等比较运算符取反的结果来判断两个对象是否不相等
187 const PointCloud2& x) const
188{
189 return !(*this == x);
190}
191// 定义函数用于获取PointCloud2对象在CDR序列化时的最大尺寸,当前传入的current_alignment参数未被使用(可能在更完整的逻辑中有作用)
193 size_t current_alignment)
194{
195// 将current_alignment参数进行强制类型转换为void类型,以避免编译器产生未使用参数的警告,实际在这里它未起到作用
196 static_cast<void>(current_alignment);
197// 返回PointCloud2对象在CDR序列化时的最大尺寸值,该值通过sensor_msgs_msg_PointCloud2_max_cdr_typesize获取(应该是一个预定义的常量之类的)
199}
200
202 const sensor_msgs::msg::PointCloud2& data, // 传入PointCloud2数据对象
203 size_t current_alignment) // 当前对齐方式,通常是0
204{
205 size_t initial_alignment = current_alignment; // 记录初始对齐值
206
207 // 获取消息头(Header)的序列化大小,并更新对齐值
208 current_alignment += std_msgs::msg::Header::getCdrSerializedSize(data.header(), current_alignment);
209
210 // 添加4字节的字段,表示PointCloud2的字段数
211 // 同时确保数据按照4字节对齐
212 current_alignment += 4 + eprosima::fastcdr::Cdr::alignment(current_alignment, 4);
213
214 // 添加4字节的字段,表示数据的宽度(width)
215 current_alignment += 4 + eprosima::fastcdr::Cdr::alignment(current_alignment, 4);
216
217 // 添加4字节的字段,表示数据的高度(height)
218 current_alignment += 4 + eprosima::fastcdr::Cdr::alignment(current_alignment, 4);
219
220 // 遍历字段列表(PointCloud2中的PointField),累加每个字段的序列化大小
221 // 这些字段用于描述每个点的属性(例如位置、颜色等)
222 for(size_t a = 0; a < data.fields().size(); ++a)
223 {
224 // 获取每个PointField的序列化大小
226 }
227
228 // 添加1字节的字段,表示是否有总数标志
229 // 该字段为可选字段,因此需要计算对齐
230 current_alignment += 1 + eprosima::fastcdr::Cdr::alignment(current_alignment, 1);
231
232 // 添加4字节的字段,表示点云数据的序列化大小(data)
233 current_alignment += 4 + eprosima::fastcdr::Cdr::alignment(current_alignment, 4);
234
235 // 添加4字节的字段,表示数据的起始偏移量(point_step)
236 current_alignment += 4 + eprosima::fastcdr::Cdr::alignment(current_alignment, 4);
237
238 // 添加4字节的字段,表示每个点的字节数(row_step)
239 current_alignment += 4 + eprosima::fastcdr::Cdr::alignment(current_alignment, 4);
240
241 // 如果点云数据(data)不为空,计算数据部分的序列化大小
242 // 这里假设数据是一个字节数组,并计算对齐和大小
243 if (data.data().size() > 0)
244 {
245 // 计算data的序列化大小,考虑到可能的对齐
246 current_alignment += (data.data().size() * 1) + eprosima::fastcdr::Cdr::alignment(current_alignment, 1);
247 }
248
249 // 添加1字节的字段,表示是否有总数标志
250 current_alignment += 1 + eprosima::fastcdr::Cdr::alignment(current_alignment, 1);
251
252 // 返回当前对齐位置与初始对齐位置的差值,表示整个消息的序列化大小
254}
255
256// 定义PointCloud2类的serialize函数,用于将PointCloud2对象的各个成员变量序列化到给定的eprosima::fastcdr::Cdr对象中,函数被声明为const,表示不会修改当前PointCloud2对象的状态
258 eprosima::fastcdr::Cdr& scdr) const
259{
260// 使用eprosima::fastcdr::Cdr的重载<<运算符,将当前PointCloud2对象的头信息成员变量(m_header)序列化到scdr对象中,具体的序列化规则由eprosima::fastcdr::Cdr中对应类型的重载实现决定
261 scdr << m_header;
262 // 使用eprosima::fastcdr::Cdr的重载<<运算符,将当前PointCloud2对象的高度成员变量(m_height)序列化到scdr对象中
263 scdr << m_height;
264 // 使用eprosima::fastcdr::Cdr的重载<<运算符,将当前PointCloud2对象的宽度成员变量(m_width)序列化到scdr对象中
265 scdr << m_width;
266// 使用eprosima::fastcdr::Cdr的重载<<运算符,将当前PointCloud2对象的字段信息成员变量(m_fields)序列化到scdr对象中
267 scdr << m_fields;
268 // 使用eprosima::fastcdr::Cdr的重载<<运算符,将当前PointCloud2对象的大端序标志成员变量(m_is_bigendian)序列化到scdr对象中
269 scdr << m_is_bigendian;
270// 使用eprosima::fastcdr::Cdr的重载<<运算符,将当前PointCloud2对象的点步长成员变量(m_point_step)序列化到scdr对象中
271 scdr << m_point_step;
272// 使用eprosima::fastcdr::Cdr的重载<<运算符,将当前PointCloud2对象的行步长成员变量(m_row_step)序列化到scdr对象中
273 scdr << m_row_step;
274// 使用eprosima::fastcdr::Cdr的重载<<运算符,将当前PointCloud2对象的数据成员变量(m_data)序列化到scdr对象中
275 scdr << m_data;
276// 使用eprosima::fastcdr::Cdr的重载<<运算符,将当前PointCloud2对象的是否密集标志成员变量(m_is_dense)序列化到scdr对象中
277 scdr << m_is_dense;
278}
279// 定义PointCloud2类的deserialize函数,用于从给定的eprosima::fastcdr::Cdr对象中反序列化数据,来填充当前PointCloud2对象的各个成员变量
281 eprosima::fastcdr::Cdr& dcdr)
282{
283// 使用eprosima::fastcdr::Cdr的重载>>运算符,从dcdr对象中反序列化数据来填充当前PointCloud2对象的头信息成员变量(m_header),具体的反序列化规则由eprosima::fastcdr::Cdr中对应类型的重载实现决定
284 dcdr >> m_header;
285// 使用eprosima::fastcdr::Cdr的重载>>运算符,从dcdr对象中反序列化数据来填充当前PointCloud2对象的高度成员变量(m_height
286 dcdr >> m_height;
287// 使用eprosima::fastcdr::Cdr的重载>>运算符,从dcdr对象中反序列化数据来填充当前PointCloud2对象的宽度成员变量(m_width)
288 dcdr >> m_width;
289 // 使用eprosima::fastcdr::Cdr的重载>>运算符,从dcdr对象中反序列化数据来填充当前PointCloud2对象的字段信息成员变量(m_fields)
290 dcdr >> m_fields;
291// 使用eprosima::fastcdr::Cdr的重载>>运算符,从dcdr对象中反序列化数据来填充当前PointCloud2对象的大端序标志成员变量(m_is_bigendian)
292 dcdr >> m_is_bigendian;
293// 使用eprosima::fastcdr::Cdr的重载>>运算符,从dcdr对象中反序列化数据来填充当前PointCloud2对象的点步长成员变量(m_point_step)
294 dcdr >> m_point_step;
295// 使用eprosima::fastcdr::Cdr的重载>>运算符,从dcdr对象中反序列化数据来填充当前PointCloud2对象的行步长成员变量(m_row_step)
296 dcdr >> m_row_step;
297// 使用eprosima::fastcdr::Cdr的重载>>运算符,从dcdr对象中反序列化数据来填充当前PointCloud2对象的数据成员变量(m_data)
298 dcdr >> m_data;
299// 使用eprosima::fastcdr::Cdr的重载>>运算符,从dcdr对象中反序列化数据来填充当前PointCloud2对象的是否密集标志成员变量(m_is_dense)
300 dcdr >> m_is_dense;
301}
302
303/*!
304 * @brief This function copies the value in member header
305 * @param _header New value to be copied in member header
306 */
308 const std_msgs::msg::Header& _header)
309{
310 m_header = _header;
311}
312
313/*!
314 * @brief This function moves the value in member header
315 * @param _header New value to be moved in member header
316 */
318 std_msgs::msg::Header&& _header)
319{
320 m_header = std::move(_header);
321}
322
323/*!
324 * @brief This function returns a constant reference to member header
325 * @return Constant reference to member header
326 */
327const std_msgs::msg::Header& sensor_msgs::msg::PointCloud2::header() const
328{
329 return m_header;
330}
331
332/*!
333 * @brief This function returns a reference to member header
334 * @return Reference to member header
335 */
337{
338 return m_header;
339}
340
341/*!
342 * @brief This function sets a value in member height
343 * @param _height New value for member height
344 */
346 uint32_t _height)
347{
348 m_height = _height;
349}
350
351/*!
352 * @brief This function returns the value of member height
353 * @return Value of member height
354 */
356{
357 return m_height;
358}
359
360/*!
361 * @brief This function returns a reference to member height
362 * @return Reference to member height
363 */
365{
366 return m_height;
367}
368
369/*!
370 * @brief This function sets a value in member width
371 * @param _width New value for member width
372 */
374 uint32_t _width)
375{
376 m_width = _width;
377}
378
379/*!
380 * @brief This function returns the value of member width
381 * @return Value of member width
382 */
384{
385 return m_width;
386}
387
388/*!
389 * @brief This function returns a reference to member width
390 * @return Reference to member width
391 */
393{
394 return m_width;
395}
396
397/*!
398 * @brief This function copies the value in member fields
399 * @param _fields New value to be copied in member fields
400 */
402 const std::vector<sensor_msgs::msg::PointField>& _fields)
403{
404 m_fields = _fields;
405}
406
407/*!
408 * @brief This function moves the value in member fields
409 * @param _fields New value to be moved in member fields
410 */
412 std::vector<sensor_msgs::msg::PointField>&& _fields)
413{
414 m_fields = std::move(_fields);
415}
416
417/*!
418 * @brief This function returns a constant reference to member fields
419 * @return Constant reference to member fields
420 */
421const std::vector<sensor_msgs::msg::PointField>& sensor_msgs::msg::PointCloud2::fields() const
422{
423 return m_fields;
424}
425
426/*!
427 * @brief This function returns a reference to member fields
428 * @return Reference to member fields
429 */
430std::vector<sensor_msgs::msg::PointField>& sensor_msgs::msg::PointCloud2::fields()
431{
432 return m_fields;
433}
434
435/*!
436 * @brief This function sets a value in member is_bigendian
437 * @param _is_bigendian New value for member is_bigendian
438 */
440 bool _is_bigendian)
441{
442 m_is_bigendian = _is_bigendian;
443}
444
445/*!
446 * @brief This function returns the value of member is_bigendian
447 * @return Value of member is_bigendian
448 */
450{
451 return m_is_bigendian;
452}
453
454/*!
455 * @brief This function returns a reference to member is_bigendian
456 * @return Reference to member is_bigendian
457 */
459{
460 return m_is_bigendian;
461}
462
463/*!
464 * @brief This function sets a value in member point_step
465 * @param _point_step New value for member point_step
466 */
468 uint32_t _point_step)
469{
470 m_point_step = _point_step;
471}
472
473/*!
474 * @brief This function returns the value of member point_step
475 * @return Value of member point_step
476 */
478{
479 return m_point_step;
480}
481
482/*!
483 * @brief This function returns a reference to member point_step
484 * @return Reference to member point_step
485 */
487{
488 return m_point_step;
489}
490
491/*!
492 * @brief This function sets a value in member row_step
493 * @param _row_step New value for member row_step
494 */
496 uint32_t _row_step)
497{
498 m_row_step = _row_step;
499}
500
501/*!
502 * @brief This function returns the value of member row_step
503 * @return Value of member row_step
504 */
506{
507 return m_row_step;
508}
509
510/*!
511 * @brief This function returns a reference to member row_step
512 * @return Reference to member row_step
513 */
515{
516 return m_row_step;
517}
518
519/*!
520 * @brief This function copies the value in member data
521 * @param _data New value to be copied in member data
522 */
524 const std::vector<uint8_t>& _data)
525{
526 m_data = _data;
527}
528
529/*!
530 * @brief This function moves the value in member data
531 * @param _data New value to be moved in member data
532 */
534 std::vector<uint8_t>&& _data)
535{
536 m_data = std::move(_data);
537}
538
539/*!
540 * @brief This function returns a constant reference to member data
541 * @return Constant reference to member data
542 */
543const std::vector<uint8_t>& sensor_msgs::msg::PointCloud2::data() const
544{
545 return m_data;
546}
547
548/*!
549 * @brief This function returns a reference to member data
550 * @return Reference to member data
551 */
553{
554 return m_data;
555}
556
557/*!
558 * @brief This function sets a value in member is_dense
559 * @param _is_dense New value for member is_dense
560 */
562 bool _is_dense)
563{
564 m_is_dense = _is_dense;
565}
566
567/*!
568 * @brief This function returns the value of member is_dense
569 * @return Value of member is_dense
570 */
572{
573 return m_is_dense;
574}
575
576/*!
577 * @brief This function returns a reference to member is_dense
578 * @return Reference to member is_dense
579 */
580// 定义一个名为is_dense的成员函数,它返回一个对布尔类型的引用,用于获取PointCloud2对象中表示是否密集的成员变量m_is_dense的引用
581// 通过返回引用,外部代码可以直接修改这个成员变量的值
583{
584 return m_is_dense;
585}
586// 定义一个名为getKeyMaxCdrSerializedSize的成员函数,用于获取PointCloud2对象在特定序列化(可能是与键相关的CDR序列化,具体取决于上下文)情况下的最大尺寸
587// 函数接收一个size_t类型的参数current_alignment,表示当前的对齐方式(不过在这里暂时没实际用到,只是进行了类型转换避免编译器警告)
589 size_t current_alignment)
590{
591// 将传入的current_alignment参数强制转换为void类型,其目的是消除编译器关于未使用参数的警告提示,说明在当前函数实现中这个参数暂时没有实际参与计算等操作
592 static_cast<void>(current_alignment);
593// 返回PointCloud2对象在相关键的CDR序列化时的最大尺寸,该尺寸的值来源于sensor_msgs_msg_PointCloud2_max_key_cdr_typesize(推测是一个预定义的表示尺寸大小的常量之类的量)
595}
596// 定义一个名为isKeyDefined的成员函数,用于判断PointCloud2对象中与键相关的内容是否已经被定义
597// 这里直接返回false,表示默认情况下键相关内容未被定义,具体返回值的逻辑可能需要根据实际应用场景和更完整的类设计来进一步理解和调整
599{
600 return false;
601}
602// 定义一个名为serializeKey的成员函数,用于将PointCloud2对象中与“键”相关的数据进行序列化操作,函数接收一个eprosima::fastcdr::Cdr类型的引用参数scdr,
603// 这个参数应该是用于承载序列化后的数据的对象,函数被声明为const,表示该函数不会修改调用它的PointCloud2对象本身的状态。
605 eprosima::fastcdr::Cdr& scdr) const
606{
607
608 (void) scdr;
609}
#define sensor_msgs_msg_PointCloud2_max_cdr_typesize
#define sensor_msgs_msg_PointCloud2_max_key_cdr_typesize
return current_alignment initial_alignment
This class represents the structure PointCloud2 defined by the user in the IDL file.
Definition PointCloud2.h:74
std_msgs::msg::Header m_header
eProsima_user_DllExport bool operator==(const PointCloud2 &x) const
Comparison operator.
eProsima_user_DllExport const std::vector< uint8_t > & data() const
This function returns a constant reference to member data
static eProsima_user_DllExport bool isKeyDefined()
This function tells you if the Key has been defined for this type
eProsima_user_DllExport bool is_bigendian() const
This function returns the value of member is_bigendian
std::vector< sensor_msgs::msg::PointField > m_fields
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.
eProsima_user_DllExport const std::vector< sensor_msgs::msg::PointField > & fields() const
This function returns a constant reference to member fields
eProsima_user_DllExport uint32_t width() const
This function returns the value of member width
eProsima_user_DllExport void deserialize(eprosima::fastcdr::Cdr &cdr)
This function deserializes an object using CDR serialization.
eProsima_user_DllExport void serialize(eprosima::fastcdr::Cdr &cdr) const
This function serializes an object using CDR serialization.
eProsima_user_DllExport void fields(const std::vector< sensor_msgs::msg::PointField > &_fields)
This function copies the value in member fields
eProsima_user_DllExport PointCloud2()
Default constructor.
eProsima_user_DllExport bool operator!=(const PointCloud2 &x) const
Comparison operator.
eProsima_user_DllExport const std_msgs::msg::Header & header() const
This function returns a constant reference to member header
eProsima_user_DllExport void serializeKey(eprosima::fastcdr::Cdr &cdr) const
This function serializes the key members of an object using CDR serialization.
eProsima_user_DllExport uint32_t row_step() const
This function returns the value of member row_step
eProsima_user_DllExport void data(const std::vector< uint8_t > &_data)
This function copies the value in member data
std::vector< uint8_t > m_data
eProsima_user_DllExport uint32_t point_step() const
This function returns the value of member point_step
static eProsima_user_DllExport size_t getCdrSerializedSize(const sensor_msgs::msg::PointCloud2 &data, size_t current_alignment=0)
This function returns the serialized size of a data depending on the buffer alignment.
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...
eProsima_user_DllExport bool is_dense() const
This function returns the value of member is_dense
eProsima_user_DllExport ~PointCloud2()
Default destructor.
eProsima_user_DllExport uint32_t height() const
This function returns the value of member height
eProsima_user_DllExport PointCloud2 & operator=(const PointCloud2 &x)
Copy assignment.
eProsima_user_DllExport void header(const std_msgs::msg::Header &_header)
This function copies the value in member header
static eProsima_user_DllExport size_t getCdrSerializedSize(const sensor_msgs::msg::PointField &data, size_t current_alignment=0)
此函数返回数据的序列化大小 取决于缓冲区对齐。