Go to the documentation of this file.
9 #ifndef CObservationVelodyneScan_H
10 #define CObservationVelodyneScan_H
20 namespace poses {
class CPose3DInterpolator; }
67 static const int SIZE_BLOCK = 100;
68 static const int RAW_SCAN_SIZE = 3;
69 static const int SCANS_PER_BLOCK = 32;
70 static const int BLOCK_DATA_SIZE = (SCANS_PER_BLOCK * RAW_SCAN_SIZE);
73 static const uint16_t ROTATION_MAX_UNITS = 36000;
79 static const uint16_t UPPER_BANK = 0xeeff;
80 static const uint16_t LOWER_BANK = 0xddff;
82 static const int PACKET_SIZE = 1206;
83 static const int POS_PACKET_SIZE = 512;
84 static const int BLOCKS_PER_PACKET = 12;
85 static const int PACKET_STATUS_SIZE = 4;
86 static const int SCANS_PER_PACKET = (SCANS_PER_BLOCK * BLOCKS_PER_PACKET);
88 static const uint8_t RETMODE_STRONGEST = 0x37;
89 static const uint8_t RETMODE_LAST = 0x38;
90 static const uint8_t RETMODE_DUAL = 0x39;
126 char NMEA_GPRMC[72+234];
142 std::vector<float> x,y,
z;
155 { std::vector<float> dumm; x.swap(dumm); }
156 { std::vector<float> dumm; y.swap(dumm); }
157 { std::vector<float> dumm; z.swap(dumm); }
158 { std::vector<uint8_t> dumm; intensity.swap(dumm); }
176 float ROI_x_min, ROI_x_max, ROI_y_min, ROI_y_max,
ROI_z_min, ROI_z_max;
178 float nROI_x_min, nROI_x_max, nROI_y_min, nROI_y_max,
nROI_z_min, nROI_z_max;
215 void generatePointCloudAlongSE3Trajectory(
217 std::vector<mrpt::math::TPointXYZIu8> & out_points,
225 void getDescriptionAsText(std::ostream &o)
const MRPT_OVERRIDE;
mrpt::poses::CPose3D sensorPose
The 6D pose of the sensor on the robot/vehicle frame of reference.
uint16_t header
Block id: UPPER_BANK or LOWER_BANK.
mrpt::obs::VelodyneCalibration calibration
The calibration data for the LIDAR device. See mrpt::hwdrivers::CVelodyneScanner and mrpt::obs::Velod...
bool filterOutIsolatedPoints
(Default:false) Simple filter to remove spurious returns (e.g. Sun reflected on large water extension...
static const float DISTANCE_MAX
meters
static const float DISTANCE_MAX_UNITS
One unit of data from the scanner (the payload of one UDP DATA packet)
void getSensorPose(mrpt::poses::CPose3D &out_sensorPose) const MRPT_OVERRIDE
A general method to retrieve the sensor pose on the robot.
double maxAzimuth_deg
Minimum azimuth, in degrees (Default=360). Points will be generated only the the area of interest [mi...
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
bool filterBynROI
Enable nROI filter (Default:false): do NOT add points inside a given 3D box.
This namespace contains representation of robot actions and observations.
void setSensorPose(const mrpt::poses::CPose3D &newSensorPose) MRPT_OVERRIDE
A general method to change the sensor pose on the robot.
This class stores a time-stamped trajectory in SE(3) (CPose3D poses).
uint64_t TTimeStamp
A system independent time type, it holds the the number of 100-nanosecond intervals since January 1,...
mrpt::system::TTimeStamp originalReceivedTimestamp
The local computer-based timestamp based on the reception of the message in the computer.
uint8_t velodyne_model_ID
0x21: HDL-32E, 0x22: VLP-16
size_t num_correctly_inserted_points
Number of points for which a valid interpolated SE(3) pose could be determined.
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
#define MRPT_DECLARE_TTYPENAME_PTR_NAMESPACE(_TYPE, __NS)
uint32_t gps_timestamp
us from top of hour
static const float DISTANCE_RESOLUTION
meters
#define DEFINE_SERIALIZABLE_POST_CUSTOM_BASE_LINKAGE(class_name, base_name, _LINKAGE_)
Velodyne calibration data, for usage in mrpt::obs::CObservationVelodyneScan.
std::vector< uint8_t > intensity
Color [0,255].
static const float ROTATION_RESOLUTION
bool has_satellite_timestamp
If true, CObservation::timestamp has been generated from accurate satellite clock....
size_t num_points
Number of points in the observation.
double minAzimuth_deg
Minimum azimuth, in degrees (Default=0). Points will be generated only the the area of interest [minA...
static const TGeneratePointCloudParameters defaultPointCloudParams
TPointCloud point_cloud
Optionally, raw data can be converted into a 3D point cloud (local coordinates wrt the sensor,...
#define DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE_LINKAGE(class_name, base_name, _LINKAGE_)
This declaration must be inserted in all CSerializable classes definition, before the class declarati...
Payload of one POSITION packet.
float isolatedPointsFilterDistance
(Default:2.0 meters) Minimum distance between a point and its two neighbors to be considered an inval...
#define DEFINE_SERIALIZABLE(class_name)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
uint16_t rotation
0-35999, divide by 100 to get degrees
std::vector< TVelodyneRawPacket > scan_packets
The main content of this object: raw data packet from the LIDAR.
Results for generatePointCloudAlongSE3Trajectory()
Declares a class that represents any robot's observation.
uint8_t laser_return_mode
0x37: strongest, 0x38: last, 0x39: dual return
bool filterByROI
Enable ROI filter (Default:false): add points inside a given 3D box.
See point_cloud and scan_packets.
#define MRPT_OVERRIDE
C++11 "override" for virtuals:
A CObservation-derived class for RAW DATA (and optionally, point cloud) of scans from 3D Velodyne LID...
Page generated by Doxygen 1.8.17 for MRPT 1.4.0 SVN: at Tue Mar 3 09:15:16 UTC 2020 | | |