source: pacpusframework/branches/2.0-beta1/include/Pacpus/structure/genericLidarStructures.h@ 94

Last change on this file since 94 was 94, checked in by DHERBOMEZ Gérald, 11 years ago

fix windows

  • Property svn:executable set to *
File size: 3.1 KB
Line 
1#ifndef STRUCTURE_LIDAR_H
2#define STRUCTURE_LIDAR_H
3
4#include <Pacpus/PacpusTools/pacpusStruct.h>
5#include <QVariant>
6#include <QVector>
7#include <QMatrix4x4>
8
9namespace pacpus {
10
11typedef enum {
12 NONE = 0,
13 ALASCA_XT = 10,
14 SICK = 20,
15 HOKUYO_ = 30,
16 HOKUYO_30LX = 40,
17 VELODYNE_64HEL = 50
18} ScannerType;
19
20typedef struct {
21 float x,y,z;
22 quint16 d; // distance in cm
23 quint8 echo;
24 quint8 intensity;
25} LidarPoint; // Plusieurs
26
27//template <class T>
28struct LidarLayer{
29 quint16 layerNumber;
30 quint16 nbPoint;
31 float verticalAngle;
32 //QVector<T> points;
33 QVector<LidarPoint> points;
34};
35
36//template <class T>
37struct LidarScan : public PacpusTimeStampedData{
38
39 quint8 scannerType;
40 quint8 scannerId;
41 quint8 nbLayer;
42 quint32 nbPoint;
43 QMatrix4x4 calib;
44 //int reserved;
45 //QVector< LidarLayer<T> > layers;
46 QVector<LidarLayer> layers;
47 LidarScan(int layerCount = 1, int pointsPerLayer = 2100){
48 layers.resize(layerCount);
49 /*for (typename QVector< LidarLayer<T> >::iterator it = layers.begin(), itend = layers.end(); it != itend; ++it) {
50 it->points.reserve(pointsPerLayer);
51 }*/
52 nbLayer = layerCount;
53 for (/*typename*/ QVector<LidarLayer>::iterator it = layers.begin(), itend = layers.end(); it != itend; ++it)
54 it->points.reserve(pointsPerLayer);
55
56 }
57};
58
59// A définir
60typedef struct {
61
62
63} LidarConfig;
64
65} // end namespace pacpus
66
67Q_DECLARE_METATYPE(pacpus::LidarPoint)
68inline QDataStream & operator << (QDataStream & out, const pacpus::LidarPoint & Valeur){
69 out << Valeur.x << Valeur.y << Valeur.z << Valeur.intensity << Valeur.d << Valeur.echo;
70 return out;}
71
72inline QDataStream & operator >> (QDataStream & in, pacpus::LidarPoint & Valeur){
73 in >> Valeur.x >> Valeur.y >> Valeur.z >> Valeur.intensity >> Valeur.d >> Valeur.echo;
74 return in;}
75
76Q_DECLARE_METATYPE(pacpus::LidarLayer)
77inline QDataStream & operator << (QDataStream & out, const pacpus::LidarLayer & Valeur){
78 out << Valeur.nbPoint << Valeur.layerNumber << Valeur.verticalAngle;
79 for(int i = 0; i < Valeur.nbPoint ; ++i)
80 out << Valeur.points[i];
81 return out;}
82
83inline QDataStream & operator >> (QDataStream & in, pacpus::LidarLayer & Valeur){
84 in >> Valeur.nbPoint >> Valeur.layerNumber >> Valeur.verticalAngle;
85 for(int i = 0; i < Valeur.nbPoint; ++i)
86 in >> Valeur.points[i];
87 return in;}
88
89Q_DECLARE_METATYPE(pacpus::LidarScan)
90inline QDataStream & operator << (QDataStream & out, const pacpus::LidarScan & Valeur){
91 out << (quint64)Valeur.time << Valeur.timerange << Valeur.sequenceNumber <<
92 Valeur.scannerId << Valeur.scannerType << Valeur.nbPoint << Valeur.nbLayer;
93 for(int i=0; i < Valeur.nbLayer ; ++i)
94 out << Valeur.layers[i];
95 return out;
96}
97
98inline QDataStream & operator >> (QDataStream & in, pacpus::LidarScan & Valeur){
99 in >> (quint64&)Valeur.time >> Valeur.timerange >> Valeur.sequenceNumber >>
100 Valeur.scannerId >> Valeur.scannerType >> Valeur.nbPoint >> Valeur.nbLayer;
101 for(int i=0; i < Valeur.nbLayer ; ++i)
102 in >> Valeur.layers[i];
103 return in;
104}
105
106#endif // STRUCTURE_LIDAR_H
Note: See TracBrowser for help on using the repository browser.