YARP
Yet Another Robot Platform
 
Loading...
Searching...
No Matches
PointCloudTypes.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3 * SPDX-FileCopyrightText: 2010 Willow Garage Inc.
4 * SPDX-FileCopyrightText: 2012 Open Perception Inc.
5 * SPDX-License-Identifier: BSD-3-Clause
6 */
7
8
9#ifndef YARP_SIG_POINTCLOUDTYPES_H
10#define YARP_SIG_POINTCLOUDTYPES_H
11
12#include <yarp/conf/system.h>
13
14#include <yarp/os/Bottle.h>
15#include <yarp/os/LogStream.h>
16#include <yarp/os/NetInt32.h>
17#include <yarp/sig/Vector.h>
18
19namespace yarp::sig {
20
21
22// Plain xy point is not supported for now ... does it make sense to have it?
23// How to let the user to add his own type?
24
25// Define a bit for each piece of information we want to carry
26// Is enum better?? Define some helper to get a string from number
30enum PointCloudBasicType : std::int32_t {
31 PC_XY_DATA = (1 << 0) ,
32 PC_XYZ_DATA = (1 << 1) ,
33 PC_RGBA_DATA = (1 << 2) ,
34 PC_INTENSITY_DATA = (1 << 3) ,
35 PC_INTEREST_DATA = (1 << 4) , // in PCL this field is also called strength
36 PC_NORMAL_DATA = (1 << 5) ,
37 PC_CURVATURE_DATA = (1 << 6) ,
38 PC_RANGE_DATA = (1 << 7) ,
39 PC_VIEWPOINT_DATA = (1 << 8) ,
40 PC_MOMENT_INV_DATA = (1 << 9) ,
41 PC_RADII_RSD_DATA = (1 << 10),
42 PC_BOUNDARY_DATA = (1 << 11),
47 PC_NARF_36_DATA = (1 << 16),
48 PC_BORDER_DATA = (1 << 17),
50 PC_HISTOGRAM_DATA = (1 << 19),
51 PC_SCALE_DATA = (1 << 20),
52 PC_CONFIDENCE_DATA = (1 << 21),
53 PC_RADIUS_DATA = (1 << 22),
54 PC_USER_DEFINED = (1 << 23),
55 PC_PADDING2 = (1 << 24),
56 PC_PADDING3 = (1 << 25)
57};
61enum PointCloudCompositeType : std::int32_t {
62// Shortcuts names for matching PCL predefined types
70 PCL_POINT_XYZ_NORMAL_RGBA = (PC_XYZ_DATA | PC_RGBA_DATA | PC_NORMAL_DATA | PC_CURVATURE_DATA | PC_PADDING2), // Actually PCL has PointXYZRGBNormal, not RGBA, but downgrade from rgba to rgb can be done while casting
87};
88
89// Defined as in PCL pointTypes.h file for better compatibility
108
109// Definition of single fields data structures
111struct DataXY
112{
113 union
114 {
115 float _xy[2];
116 struct
117 {
118 float x;
119 float y;
120 };
121 };
122 std::string toString(int precision, int width) const
123 {
124 std::string ret = "";
125 char tmp[128];
126 if (width < 0) {
127 snprintf(tmp, 128, "% .*lf % .*lf\t", precision, x,
128 precision, y);
129 ret += tmp;
130
131 } else {
132 snprintf(tmp, 128, "% *.*lf % *.*lf", width, precision, x,
133 width, precision, y);
134 ret += tmp;
135 }
136 return ret;
137 }
139 {
142 ret.addFloat64(y);
143 return ret;
144 }
145 void fromBottle(const yarp::os::Bottle& bt, size_t i)
146 {
147 yarp::os::Bottle* intBt = bt.get(static_cast<int>(i)).asList();
148 x = static_cast<float>(intBt->get(0).asFloat64());
149 y = static_cast<float>(intBt->get(1).asFloat64());
150 return;
151 }
152};
154
155// xyz
158{
159 union
160 {
161 float _xyz[4];
162 struct
163 {
164 float x;
165 float y;
166 float z;
167 };
168 };
169 std::string toString(int precision, int width) const
170 {
171 std::string ret = "";
172 char tmp[128];
173 if (width < 0) {
174 snprintf(tmp, 128, "% .*lf % .*lf % .*lf\t", precision, x,
175 precision, y,
176 precision, z);
177 ret += tmp;
178
179 } else {
180 snprintf(tmp, 128, "% *.*lf % *.*lf % *.*lf", width, precision, x,
181 width, precision, y,
182 width, precision, z);
183 ret += tmp;
184 }
185 return ret;
186 }
188 {
191 ret.addFloat64(y);
192 ret.addFloat64(z);
193 return ret;
194 }
196 {
198 v[0] = x;
199 v[1] = y;
200 v[2] = z;
201 return v;
202 }
204 {
206 v[0] = x;
207 v[1] = y;
208 v[2] = z;
209 v[3] = 1;
210 return v;
211 }
212 void fromBottle(const yarp::os::Bottle& bt, size_t i)
213 {
214 yarp::os::Bottle* intBt = bt.get(static_cast<int>(i)).asList();
215
216 if (!intBt) {
217 return;
218 }
219
220 x = static_cast<float>(intBt->get(0).asFloat64());
221 y = static_cast<float>(intBt->get(1).asFloat64());
222 z = static_cast<float>(intBt->get(2).asFloat64());
223 return;
224 }
225};
227
228// RGBA fields - quite useless alone
231{
232 union
233 {
234 struct
235 {
236 unsigned char b;
237 unsigned char g;
238 unsigned char r;
239 unsigned char a;
240 };
242// float data_c[4];
243 };
244 std::string toString(int precision, int width) const
245 {
246 YARP_UNUSED(precision);
247 YARP_UNUSED(width);
248 std::string ret = "";
249 char tmp[128];
250 snprintf(tmp, 128, "%d %d %d %d\t", r, g, b, a);
251 ret += tmp;
252 return ret;
253 }
255 {
257 ret.addInt32(r);
258 ret.addInt32(g);
259 ret.addInt32(b);
260 ret.addInt32(a);
261 return ret;
262 }
263 void fromBottle(const yarp::os::Bottle& bt, size_t i)
264 {
265 yarp::os::Bottle* intBt = bt.get(static_cast<int>(i)).asList();
266 r = intBt->get(0).asInt32();
267 g = intBt->get(1).asInt32();
268 b = intBt->get(2).asInt32();
269 a = intBt->get(3).asInt32();
270 return;
271 }
272};
274
275// Normal
278{
279 union
280 {
281 float filler_n[4];
282 float normal[3];
283 struct
284 {
285 float normal_x;
286 float normal_y;
287 float normal_z;
288 };
289 };
290 union
291 {
292 struct
293 {
295 };
296 float data_c[4];
297 };
298 std::string toString(int precision, int width) const
299 {
300 std::string ret = "";
301 char tmp[128];
302 if (width < 0) {
303 snprintf(tmp, 128, "% .*lf % .*lf % .*lf % .*lf\t", precision, normal_x,
304 precision, normal_y,
305 precision, normal_z,
306 precision, curvature);
307 ret += tmp;
308
309 } else {
310 snprintf(tmp, 128, "% *.*lf % *.*lf % *.*lf % *.*lf", width, precision, normal_x,
311 width, precision, normal_y,
312 width, precision, normal_z,
313 width, precision, curvature);
314 ret += tmp;
315 }
316 return ret;
317 }
319 {
322 ret.addFloat64(normal_y);
323 ret.addFloat64(normal_z);
324 ret.addFloat64(curvature);
325 return ret;
326 }
327 void fromBottle(const yarp::os::Bottle& bt, size_t i)
328 {
329 yarp::os::Bottle* intBt = bt.get(static_cast<int>(i)).asList();
330
331 if (!intBt) {
332 return;
333 }
334
335 normal_x = static_cast<float>(intBt->get(0).asFloat64());
336 normal_y = static_cast<float>(intBt->get(1).asFloat64());
337 normal_z = static_cast<float>(intBt->get(2).asFloat64());
338 curvature = static_cast<float>(intBt->get(3).asFloat64());
339 return;
340 }
341};
343
346{
347 union
348 {
349 float filler_n[4];
350 float normal[3];
351 struct
352 {
353 float normal_x;
354 float normal_y;
355 float normal_z;
356 };
357 };
358 std::string toString(int precision, int width) const
359 {
360 std::string ret = "";
361 char tmp[128];
362 if (width < 0) {
363 snprintf(tmp, 128, "% .*lf % .*lf % .*lf\t", precision, normal_x,
364 precision, normal_y,
365 precision, normal_z);
366 ret += tmp;
367
368 } else {
369 snprintf(tmp, 128, "% *.*lf % *.*lf % *.*lf", width, precision, normal_x,
370 width, precision, normal_y,
371 width, precision, normal_z);
372 ret += tmp;
373 }
374 return ret;
375 }
377 {
380 ret.addFloat64(normal_y);
381 ret.addFloat64(normal_z);
382 return ret;
383 }
384 void fromBottle(const yarp::os::Bottle& bt, size_t i)
385 {
386 yarp::os::Bottle* intBt = bt.get(static_cast<int>(i)).asList();
387
388 if (!intBt) {
389 return;
390 }
391
392 normal_x = static_cast<float>(intBt->get(0).asFloat64());
393 normal_y = static_cast<float>(intBt->get(1).asFloat64());
394 normal_z = static_cast<float>(intBt->get(2).asFloat64());
395 return;
396 }
397};
399
400// curvature
403{
404 union
405 {
406 struct
407 {
409 };
410 };
411};
413// Range
414typedef float Range;
415
416// viewPoint
419{
420 union
421 {
422 float _xyz[4];
423 struct
424 {
425 float vp_x;
426 float vp_y;
427 float vp_z;
428 };
429 };
430 std::string toString(int precision, int width) const
431 {
432 std::string ret = "";
433 char tmp[128];
434 if (width < 0) {
435 snprintf(tmp, 128, "% .*lf % .*lf % .*lf\t", precision, vp_x,
436 precision, vp_y,
437 precision, vp_z);
438 ret += tmp;
439
440 } else {
441 snprintf(tmp, 128, "% *.*lf % *.*lf % *.*lf", width, precision, vp_x,
442 width, precision, vp_y,
443 width, precision, vp_z);
444 ret += tmp;
445 }
446 return ret;
447 }
449 {
452 ret.addFloat64(vp_y);
453 ret.addFloat64(vp_z);
454 return ret;
455 }
456 void fromBottle(const yarp::os::Bottle& bt, size_t i)
457 {
458 yarp::os::Bottle* intBt = bt.get(static_cast<int>(i)).asList();
459
460 if (!intBt) {
461 return;
462 }
463
464 vp_x = static_cast<float>(intBt->get(0).asFloat64());
465 vp_y = static_cast<float>(intBt->get(1).asFloat64());
466 vp_z = static_cast<float>(intBt->get(2).asFloat64());
467 return;
468 }
469};
471
472// TBD: many others ...
473
474
475//
476// Definition of packed types - PCL style
477//
478
479// xyz + rgba - most common type
482{
483 union
484 {
485 float _xyz[4];
486 struct
487 {
488 float x;
489 float y;
490 float z;
492 };
493 };
494
495 union
496 {
497 struct
498 {
499 unsigned char b;
500 unsigned char g;
501 unsigned char r;
502 unsigned char a;
503 };
505 float rgba_padding[4];
506 };
507 std::string toString(int precision, int width) const
508 {
509 std::string ret = "";
510 char tmp[128];
511 if (width < 0) {
512 snprintf(tmp, 128, "% .*lf % .*lf % .*lf ", precision, x,
513 precision, y,
514 precision, z);
515 ret += tmp;
516
517 } else {
518 snprintf(tmp, 128, "% *.*lf % *.*lf % *.*lf ", width, precision, x,
519 width, precision, y,
520 width, precision, z);
521 ret += tmp;
522 }
523 snprintf(tmp, 128, "%d %d %d %d\t", r, g, b, a);
524 ret += tmp;
525 return ret;
526 }
528 {
531 ret.addFloat64(y);
532 ret.addFloat64(z);
533 ret.addInt32(r);
534 ret.addInt32(g);
535 ret.addInt32(b);
536 ret.addInt32(a);
537 return ret;
538 }
539 void fromBottle(const yarp::os::Bottle& bt, size_t i)
540 {
541 yarp::os::Bottle* intBt = bt.get(static_cast<int>(i)).asList();
542
543 if (!intBt) {
544 return;
545 }
546
547 x = static_cast<float>(intBt->get(0).asFloat64());
548 y = static_cast<float>(intBt->get(1).asFloat64());
549 z = static_cast<float>(intBt->get(2).asFloat64());
550 r = intBt->get(3).asInt32();
551 g = intBt->get(4).asInt32();
552 b = intBt->get(5).asInt32();
553 a = intBt->get(6).asInt32();
554 return;
555 }
556};
558
559// xyz + intensity
562{
563 union
564 {
565 float _xyz[4];
566 struct
567 {
568 float x;
569 float y;
570 float z;
571 };
572 };
573
574 union
575 {
576 struct
577 {
579 };
581 };
582 std::string toString(int precision, int width) const
583 {
584 std::string ret = "";
585 char tmp[128];
586 if (width < 0) {
587 snprintf(tmp, 128, "% .*lf % .*lf % .*lf % .*lf\t", precision, x,
588 precision, y,
589 precision, z,
590 precision, intensity);
591 ret += tmp;
592
593 } else {
594 snprintf(tmp, 128, "% *.*lf % *.*lf % *.*lf % *.*lf", width, precision, x,
595 width, precision, y,
596 width, precision, z,
597 width, precision, intensity);
598 ret += tmp;
599 }
600 return ret;
601 }
603 {
606 ret.addFloat64(y);
607 ret.addFloat64(z);
608 ret.addFloat64(intensity);
609 return ret;
610 }
611 void fromBottle(const yarp::os::Bottle& bt, size_t i)
612 {
613 yarp::os::Bottle* intBt = bt.get(static_cast<int>(i)).asList();
614
615 if (!intBt) {
616 return;
617 }
618
619 x = static_cast<float>(intBt->get(0).asFloat64());
620 y = static_cast<float>(intBt->get(1).asFloat64());
621 z = static_cast<float>(intBt->get(2).asFloat64());
622 intensity = static_cast<float>(intBt->get(3).asFloat64());
623 return;
624 }
625};
627
628// interest point -> xyz + strength
631{
632 union
633 {
634 float _xyz[4];
635 struct
636 {
637 float x;
638 float y;
639 float z;
640 };
641 };
642
643 union
644 {
645 struct
646 {
647 float strength;
648 };
650 };
651 std::string toString(int precision, int width) const
652 {
653 std::string ret = "";
654 char tmp[128];
655 if (width < 0) {
656 snprintf(tmp, 128, "% .*lf % .*lf % .*lf % .*lf\t", precision, x,
657 precision, y,
658 precision, z,
659 precision, strength);
660 ret += tmp;
661
662 } else {
663 snprintf(tmp, 128, "% *.*lf % *.*lf % *.*lf % *.*lf", width, precision, x,
664 width, precision, y,
665 width, precision, z,
666 width, precision, strength);
667 ret += tmp;
668 }
669 return ret;
670 }
672 {
675 ret.addFloat64(y);
676 ret.addFloat64(z);
677 ret.addFloat64(strength);
678 return ret;
679 }
680 void fromBottle(const yarp::os::Bottle& bt, size_t i)
681 {
682 yarp::os::Bottle* intBt = bt.get(static_cast<int>(i)).asList();
683
684 if (!intBt) {
685 return;
686 }
687
688 x = static_cast<float>(intBt->get(0).asFloat64());
689 y = static_cast<float>(intBt->get(1).asFloat64());
690 z = static_cast<float>(intBt->get(2).asFloat64());
691 strength = static_cast<float>(intBt->get(3).asFloat64());
692 return;
693 }
694};
696
697
698// point xyz + normals
701{
702 union
703 {
704 float data[4];
705 struct
706 {
707 float x;
708 float y;
709 float z;
710 };
711 };
712 union
713 {
714 float filler_n[4];
715 float normal[3];
716 struct
717 {
718 float normal_x;
719 float normal_y;
720 float normal_z;
721 };
722 };
723 union
724 {
725 struct
726 {
728 };
729 float filler_c[4];
730 };
731 std::string toString(int precision, int width) const
732 {
733 std::string ret = "";
734 char tmp[128];
735 if (width < 0) {
736 snprintf(tmp, 128, "% .*lf % .*lf % .*lf ", precision, x,
737 precision, y,
738 precision, z);
739 ret += tmp;
740 snprintf(tmp, 128, "% .*lf % .*lf % .*lf % .*lf\t", precision, normal_x,
741 precision, normal_y,
742 precision, normal_z,
743 precision, curvature);
744 ret += tmp;
745
746 } else {
747 snprintf(tmp, 128, "% *.*lf % *.*lf % *.*lf ", width, precision, x,
748 width, precision, y,
749 width, precision, z);
750 ret += tmp;
751 snprintf(tmp, 128, "% *.*lf % *.*lf % *.*lf % *.*lf", width, precision, normal_x,
752 width, precision, normal_y,
753 width, precision, normal_z,
754 width, precision, curvature);
755 ret += tmp;
756 }
757 return ret;
758 }
760 {
763 ret.addFloat64(y);
764 ret.addFloat64(z);
765 ret.addFloat64(normal_x);
766 ret.addFloat64(normal_y);
767 ret.addFloat64(normal_z);
768 ret.addFloat64(curvature);
769 return ret;
770 }
771 void fromBottle(const yarp::os::Bottle& bt, size_t i)
772 {
773 yarp::os::Bottle* intBt = bt.get(static_cast<int>(i)).asList();
774
775 if (!intBt) {
776 return;
777 }
778
779 x = static_cast<float>(intBt->get(0).asFloat64());
780 y = static_cast<float>(intBt->get(1).asFloat64());
781 z = static_cast<float>(intBt->get(2).asFloat64());
782 normal_x = static_cast<float>(intBt->get(3).asFloat64());
783 normal_y = static_cast<float>(intBt->get(4).asFloat64());
784 normal_z = static_cast<float>(intBt->get(5).asFloat64());
785 curvature = static_cast<float>(intBt->get(6).asFloat64());
786 return;
787 }
788};
790
791// point xyz + normals + RGBA
794{
795 union
796 {
797 float data[4];
798 struct
799 {
800 float x;
801 float y;
802 float z;
803 };
804 };
805 union
806 {
807 float filler_n[4];
808 float normal[3];
809 struct
810 {
811 float normal_x;
812 float normal_y;
813 float normal_z;
814 };
815 };
816 union
817 {
818 struct
819 {
820 // PCL here uses float rgb, probably for ROS compatibility as stated for PointXYZRGB
821 // Check compatibility, it should be ok if rgb component are in the right place and we drop 'a'
822 union
823 {
824 struct
825 {
826 unsigned char b;
827 unsigned char g;
828 unsigned char r;
829 unsigned char a;
830 };
832 };
834 };
836 };
837 std::string toString(int precision, int width) const
838 {
839 std::string ret = "";
840 char tmp[128];
841 if (width < 0) {
842 snprintf(tmp, 128, "% .*lf % .*lf % .*lf ", precision, x,
843 precision, y,
844 precision, z);
845 ret += tmp;
846 snprintf(tmp, 128, "% .*lf % .*lf % .*lf % .*lf ", precision, normal_x,
847 precision, normal_y,
848 precision, normal_z,
849 precision, curvature);
850 ret += tmp;
851
852 } else {
853 snprintf(tmp, 128, "% *.*lf % *.*lf % *.*lf ", width, precision, x,
854 width, precision, y,
855 width, precision, z);
856 ret += tmp;
857 snprintf(tmp, 128, "% *.*lf % *.*lf % *.*lf % *.*lf ", width, precision, normal_x,
858 width, precision, normal_y,
859 width, precision, normal_z,
860 width, precision, curvature);
861 ret += tmp;
862 }
863 snprintf(tmp, 128, "%d %d %d %d\t", r, g, b, a);
864 ret += tmp;
865 return ret;
866 }
868 {
871 ret.addFloat64(y);
872 ret.addFloat64(z);
873 ret.addFloat64(normal_x);
874 ret.addFloat64(normal_y);
875 ret.addFloat64(normal_z);
876 ret.addFloat64(curvature);
877 ret.addInt32(r);
878 ret.addInt32(g);
879 ret.addInt32(b);
880 ret.addInt32(a);
881 return ret;
882 }
883 void fromBottle(const yarp::os::Bottle& bt, size_t i)
884 {
885 yarp::os::Bottle* intBt = bt.get(static_cast<int>(i)).asList();
886
887 if (!intBt) {
888 return;
889 }
890
891 x = static_cast<float>(intBt->get(0).asFloat64());
892 y = static_cast<float>(intBt->get(1).asFloat64());
893 z = static_cast<float>(intBt->get(2).asFloat64());
894 normal_x = static_cast<float>(intBt->get(3).asFloat64());
895 normal_y = static_cast<float>(intBt->get(4).asFloat64());
896 normal_z = static_cast<float>(intBt->get(5).asFloat64());
897 curvature = static_cast<float>(intBt->get(6).asFloat64());
898 r = intBt->get(7).asInt32();
899 g = intBt->get(8).asInt32();
900 b = intBt->get(9).asInt32();
901 a = intBt->get(10).asInt32();
902 return;
903 }
904};
906
907// TBD: many others ...
908
909} // namespace yarp::sig
910
911
912#endif // YARP_SIG_POINTCLOUDTYPES_H
bool ret
contains the definition of a Vector type
A simple collection of objects that can be described and transmitted in a portable way.
Definition Bottle.h:64
void addFloat64(yarp::conf::float64_t x)
Places a 64-bit floating point number in the bottle, at the end of the list.
Definition Bottle.cpp:158
Value & get(size_type index) const
Reads a Value v from a certain part of the list.
Definition Bottle.cpp:246
void addInt32(std::int32_t x)
Places a 32-bit integer in the bottle, at the end of the list.
Definition Bottle.cpp:140
virtual yarp::conf::float64_t asFloat64() const
Get 64-bit floating point value.
Definition Value.cpp:222
virtual std::int32_t asInt32() const
Get 32-bit integer value.
Definition Value.cpp:204
virtual Bottle * asList() const
Get list value.
Definition Value.cpp:240
std::int32_t NetInt32
Definition of the NetInt32 type.
Definition NetInt32.h:29
PointCloudBasicType
The PointCloudBasicTypes enum.
@ PC_PRINCIPAL_CURVATURE_DATA
PointCloudCompositeType
The PointCloudCompositeType enum.
@ PCL_PRINCIPAL_CURVATURES
@ PCL_POINT_XYZ_VIEWPOINT
@ PCL_PRINCIPAL_RADII_RSD
@ PCL_POINT_XYZ_NORMAL_RGBA
@ BORDER_TRAIT__OBSTACLE_BORDER
@ BORDER_TRAIT__SHADOW_BORDER
@ BORDER_TRAIT__VEIL_POINT_LEFT
@ BORDER_TRAIT__VEIL_POINT_BOTTOM
@ BORDER_TRAIT__VEIL_POINT
@ BORDER_TRAIT__OBSTACLE_BORDER_LEFT
@ BORDER_TRAIT__SHADOW_BORDER_BOTTOM
@ BORDER_TRAIT__VEIL_POINT_RIGHT
@ BORDER_TRAIT__OBSTACLE_BORDER_TOP
@ BORDER_TRAIT__SHADOW_BORDER_LEFT
@ BORDER_TRAIT__SHADOW_BORDER_TOP
@ BORDER_TRAIT__OBSTACLE_BORDER_RIGHT
@ BORDER_TRAIT__SHADOW_BORDER_RIGHT
@ BORDER_TRAIT__OBSTACLE_BORDER_BOTTOM
@ BORDER_TRAIT__VEIL_POINT_TOP
void fromBottle(const yarp::os::Bottle &bt, size_t i)
std::string toString(int precision, int width) const
yarp::os::Bottle toBottle() const
yarp::os::Bottle toBottle() const
std::string toString(int precision, int width) const
void fromBottle(const yarp::os::Bottle &bt, size_t i)
void fromBottle(const yarp::os::Bottle &bt, size_t i)
yarp::os::Bottle toBottle() const
std::string toString(int precision, int width) const
yarp::os::Bottle toBottle() const
std::string toString(int precision, int width) const
yarp::os::NetInt32 rgba
void fromBottle(const yarp::os::Bottle &bt, size_t i)
std::string toString(int precision, int width) const
void fromBottle(const yarp::os::Bottle &bt, size_t i)
yarp::os::Bottle toBottle() const
std::string toString(int precision, int width) const
yarp::os::Bottle toBottle() const
void fromBottle(const yarp::os::Bottle &bt, size_t i)
std::string toString(int precision, int width) const
yarp::os::Bottle toBottle() const
void fromBottle(const yarp::os::Bottle &bt, size_t i)
void fromBottle(const yarp::os::Bottle &bt, size_t i)
yarp::os::Bottle toBottle() const
std::string toString(int precision, int width) const
yarp::os::NetInt32 rgba
std::string toString(int precision, int width) const
void fromBottle(const yarp::os::Bottle &bt, size_t i)
yarp::os::Bottle toBottle() const
yarp::sig::Vector toVector4() const
yarp::os::Bottle toBottle() const
void fromBottle(const yarp::os::Bottle &bt, size_t i)
std::string toString(int precision, int width) const
yarp::sig::Vector toVector3() const
void fromBottle(const yarp::os::Bottle &bt, size_t i)
yarp::os::Bottle toBottle() const
std::string toString(int precision, int width) const
#define YARP_END_PACK
Ends 1 byte packing for structs/classes.
Definition system.h:193
#define YARP_BEGIN_PACK
Starts 1 byte packing for structs/classes.
Definition system.h:192
#define YARP_UNUSED(var)
Definition api.h:162