93 const std::string& iniSection);
130 bool& outThereIsObservation,
132 bool& hardwareError);
143 bool& outThereIsObservation,
145 bool& hardwareError) = 0;
152 virtual bool turnOn() = 0;
A generic interface for a wide-variety of sensors designed to be used in the application RawLogGrabbe...
virtual void doProcessSimple(bool &outThereIsObservation, mrpt::obs::CObservation2DRangeScan &outObservation, bool &hardwareError)=0
Specific laser scanner "software drivers" must process here new data from the I/O stream...
mrpt::obs::CObservation2DRangeScan m_lastObservation
int m_max_missed_scan_failures
void bindIO(const std::shared_ptr< mrpt::io::CStream > &streamIO)
Binds the object to a given I/O channel.
mrpt::gui::CDisplayWindow3D::Ptr m_win
void internal_notifyGoodScanNow()
Must be called from doProcessSimple() implementations.
virtual bool turnOn()=0
Enables the scanning mode (which may depend on the specific laser device); this must be called before...
std::mutex m_csChangeStream
For being thread-safe.
Contains classes for various device interfaces.
mrpt::system::TTimeStamp m_last_good_scan
Used in internal_notifyGoodScanNow()
void filterByExclusionAreas(mrpt::obs::CObservation2DRangeScan &obs) const
Mark as invalid those points which (x,y) coordinates fall within the exclusion polygons.
void filterByExclusionAngles(mrpt::obs::CObservation2DRangeScan &obs) const
Mark as invalid those ranges in a set of forbiden angle ranges.
void getObservation(bool &outThereIsObservation, mrpt::obs::CObservation2DRangeScan &outObservation, bool &hardwareError)
Get the last observation from the sensor, if available, and unmarks it as being "the last one" (thus ...
mrpt::Clock::time_point TTimeStamp
A system independent time type, it holds the the number of 100-nanosecond intervals since January 1...
double m_estimated_scan_period
Updated in internal_notifyGoodScanNow()
This class allows loading and storing values and vectors of different types from a configuration text...
std::vector< std::pair< double, double > > m_lstExclusionAngles
A list of pairs of angles <init,end> such as all sensor ranges falling in those forbiden angles will ...
Versatile class for consistent logging and management of output messages.
void doProcess() override
Main method for a CGenericSensor.
void showPreview(bool enable=true)
Enables GUI visualization in real-time.
C2DRangeFinderAbstract()
Default constructor.
mrpt::obs::CObservation2DRangeScan::TListExclusionAreasWithRanges m_lstExclusionPolys
A list of optional exclusion polygons, in coordinates relative to the vehicle, that is...
mrpt::obs::CObservation2DRangeScan::Ptr m_nextObservation
A dynamic object used as buffer in doProcess.
This is the base, abstract class for "software drivers" interfaces to 2D scanners (laser range finder...
A "CObservation"-derived class that represents a 2D range scan measurement (typically from a laser sc...
std::shared_ptr< mrpt::io::CStream > m_stream
The I/O channel (will be nullptr if not bound).
bool internal_notifyNoScanReceived()
Must be called from doProcessSimple() implementations.
std::vector< std::pair< mrpt::math::CPolygon, std::pair< double, double > >> TListExclusionAreasWithRanges
Used in filterByExclusionAreas.
bool m_showPreview
If true, shows a 3D window with a preview of the grabber data.
void loadCommonParams(const mrpt::config::CConfigFileBase &configSource, const std::string &iniSection)
Should be call by derived classes at "loadConfig" (loads exclusion areas AND exclusion angles)...
int m_failure_waiting_scan_counter
Used in internal_notifyNoScanReceived()
void processPreview(const mrpt::obs::CObservation2DRangeScan &obs)
Must be called inside the capture method to allow optional GUI preview of scans.
std::mutex m_csLastObservation
~C2DRangeFinderAbstract() override
Destructor.
virtual bool turnOff()=0
Disables the scanning mode (this can be used to turn the device in low energy mode, if available)
#define INVALID_TIMESTAMP
Represents an invalid timestamp, where applicable.
bool m_lastObservationIsNew
double getEstimatedScanPeriod() const
Returns the empirical, filtered estimation for the period at which whole scans are being returned fro...