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;
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;
126 char NMEA_GPRMC[72+234];
168 float ROI_x_min, ROI_x_max, ROI_y_min, ROI_y_max,
ROI_z_min, ROI_z_max;
170 float nROI_x_min, nROI_x_max, nROI_y_min, nROI_y_max,
nROI_z_min, nROI_z_max;
209 void generatePointCloudAlongSE3Trajectory(
211 std::vector<mrpt::math::TPointXYZIu8> & out_points,
219 void getDescriptionAsText(std::ostream &o)
const MRPT_OVERRIDE;
Results for generatePointCloudAlongSE3Trajectory()
uint64_t TTimeStamp
A system independent time type, it holds the the number of 100-nanosecond intervals since January 1...
size_t num_points
Number of points in the observation.
Velodyne calibration data, for usage in mrpt::obs::CObservationVelodyneScan.
A CObservation-derived class for RAW DATA (and optionally, point cloud) of scans from 3D Velodyne LID...
unsigned __int16 uint16_t
bool filterOutIsolatedPoints
(Default:false) Simple filter to remove spurious returns (e.g. Sun reflected on large water extension...
#define MRPT_OVERRIDE
C++11 "override" for virtuals:
uint32_t gps_timestamp
us from top of hour
std::vector< mrpt::system::TTimeStamp > timestamp
Timestamp for each point (if generatePerPointTimestamp=true in TGeneratePointCloudParameters), or empty vector if not populated (default).
std::vector< float > azimuth
Original azimuth of each point (if generatePerPointAzimuth=true, empty otherwise ) ...
mrpt::system::TTimeStamp originalReceivedTimestamp
The local computer-based timestamp based on the reception of the message in the computer.
bool generatePerPointAzimuth
(Default:false) If true, populate the vector azimuth
static const float DISTANCE_MAX_UNITS
mrpt::obs::VelodyneCalibration calibration
The calibration data for the LIDAR device. See mrpt::hwdrivers::CVelodyneScanner and mrpt::obs::Velod...
bool has_satellite_timestamp
If true, CObservation::timestamp has been generated from accurate satellite clock. Otherwise, no GPS data is available and timestamps are based on the local computer clock.
bool filterByROI
Enable ROI filter (Default:false): add points inside a given 3D box.
mrpt::poses::CPose3D sensorPose
The 6D pose of the sensor on the robot/vehicle frame of reference.
void clear()
Clear the contents of this container.
void setSensorPose(const mrpt::poses::CPose3D &newSensorPose) MRPT_OVERRIDE
A general method to change the sensor pose on the robot.
double minAzimuth_deg
Minimum azimuth, in degrees (Default=0). Points will be generated only the the area of interest [minA...
double maxAzimuth_deg
Minimum azimuth, in degrees (Default=360). Points will be generated only the the area of interest [mi...
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...
float isolatedPointsFilterDistance
(Default:2.0 meters) Minimum distance between a point and its two neighbors to be considered an inval...
This namespace contains representation of robot actions and observations.
size_t num_correctly_inserted_points
Number of points for which a valid interpolated SE(3) pose could be determined.
uint16_t header
Block id: UPPER_BANK or LOWER_BANK.
Payload of one POSITION packet.
See point_cloud and scan_packets.
bool generatePerPointTimestamp
(Default:false) If true, populate the vector timestamp
#define MRPT_DECLARE_TTYPENAME_PTR_NAMESPACE(_TYPE, __NS)
std::vector< uint8_t > intensity
Color [0,255].
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
#define DEFINE_SERIALIZABLE(class_name)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
One unit of data from the scanner (the payload of one UDP DATA packet)
Declares a class that represents any robot's observation.
uint8_t velodyne_model_ID
0x21: HDL-32E, 0x22: VLP-16
void getSensorPose(mrpt::poses::CPose3D &out_sensorPose) const MRPT_OVERRIDE
A general method to retrieve the sensor pose on the robot.
uint8_t laser_return_mode
0x37: strongest, 0x38: last, 0x39: dual return
static const float DISTANCE_RESOLUTION
meters
static const TGeneratePointCloudParameters defaultPointCloudParams
This class stores a time-stamped trajectory in SE(3) (CPose3D poses).
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.
unsigned __int32 uint32_t
#define DEFINE_SERIALIZABLE_POST_CUSTOM_BASE_LINKAGE(class_name, base_name, _LINKAGE_)
GLenum const GLfloat * params
static const float DISTANCE_MAX
meters
static const float ROTATION_RESOLUTION
degrees
bool filterBynROI
Enable nROI filter (Default:false): do NOT add points inside a given 3D box.