class mrpt::hwdrivers::FakeLaser
Overview
A minimal 2D scanner driver: it returns whatever scan the test stages, so that the generic machinery of the base class can be exercised without any real device protocol in the way.
class FakeLaser: public mrpt::hwdrivers::C2DRangeFinderAbstract { public: // typedefs typedef std::shared_ptr<CGenericSensor> Ptr; typedef std::multimap<mrpt::system::TTimeStamp, mrpt::serialization::CSerializable::Ptr> TListObservations; typedef std::pair<mrpt::system::TTimeStamp, mrpt::serialization::CSerializable::Ptr> TListObsPair; // construction FakeLaser(); // methods virtual void doProcessSimple( bool& outThereIsObservation, mrpt::obs::CObservation2DRangeScan& outObservation, bool& hardwareError ); virtual bool turnOn(); virtual bool turnOff(); void stageScan(const mrpt::obs::CObservation2DRangeScan& s); void stageNothing(); void stageHardwareError(); bool lastNoScanWasOk() const; void loadCommon( const mrpt::config::CConfigFileBase& c, const std::string& s ); virtual const mrpt::hwdrivers::TSensorClassId* GetRuntimeClass() const = 0; double getProcessRate() const; std::string getSensorLabel() const; void setSensorLabel(const std::string& sensorLabel); bool isVerboseEnabled() const; virtual unsigned int getExternalImageJPEGQuality() const; };
Inherited Members
public: // enums enum TSensorState; // structs struct TMsg; // fields bool logging_enable_console_output {true}; bool logging_enable_keep_record {false}; // methods COutputLogger& operator = (const COutputLogger&); COutputLogger& operator = (COutputLogger&&); CGenericSensor& operator = (const CGenericSensor&); virtual void doProcess() = 0; void logStr(const VerbosityLevel level, std::string_view msg_str) const; void logFmt(const VerbosityLevel level, const char* fmt, ...) const; void void logCond(const VerbosityLevel level, bool cond, const std::string& msg_str) const; void setLoggerName(const std::string& name); std::string getLoggerName() const; void setVerbosityLevel(const VerbosityLevel level); void setVerbosityLevelForCallbacks(const VerbosityLevel level); void setMinLoggingLevel(const VerbosityLevel level); VerbosityLevel getMinLoggingLevel() const; VerbosityLevel getMinLoggingLevelForCallbacks() const; void getLogAsString(std::string& log_contents) const; std::string getLogAsString() const; void writeLogToFile(const std::optional<std::string>& fname_in = std::nullopt) const; void dumpLogToConsole() const; std::string getLoggerLastMsg() const; void getLoggerLastMsg(std::string& msg_str) const; void loggerReset(); bool logDeregisterCallback(output_logger_callback_t userFunc); void bindIO(const std::shared_ptr<mrpt::io::CStream>& streamIO); void getObservation(bool& outThereIsObservation, mrpt::obs::CObservation2DRangeScan& outObservation, bool& hardwareError); virtual void doProcess(); virtual void doProcessSimple( bool& outThereIsObservation, mrpt::obs::CObservation2DRangeScan& outObservation, bool& hardwareError ) = 0; virtual bool turnOn() = 0; virtual bool turnOff() = 0; double getEstimatedScanPeriod() const; TSensorState getState() const; void enableVerbose(bool enabled = true); virtual void loadConfig(const mrpt::config::CConfigFileBase& configSource, const std::string& section); virtual void initialize(); virtual TListObservations getObservations(); virtual void setPathForExternalImages(] const std::string& directory); virtual void setExternalImageFormat(const std::string& ext); virtual void setExternalImageJPEGQuality(const unsigned int quality); static const std::array<const char*, NUMBER_OF_VERBOSITY_LEVELS>& logging_levels_to_names(); static void registerClass(const TSensorClassId* pNewClass); static CGenericSensor* createSensor(const std::string& className); static Ptr createSensorPtr(const std::string& className);
Methods
virtual void doProcessSimple( bool& outThereIsObservation, mrpt::obs::CObservation2DRangeScan& outObservation, bool& hardwareError )
Specific laser scanner “software drivers” must process here new data from the I/O stream, and, if a whole scan has arrived, return it.
This method MUST BE CALLED in a timely fashion by the user to allow the proccessing of incoming data. It can be run in a different thread safely.
virtual bool turnOn()
Enables the scanning mode (which may depend on the specific laser device); this must be called before asking for observations to assure that the protocol has been initializated.
Returns:
If everything works “true”, or “false” if there is any error.
virtual bool turnOff()
Disables the scanning mode (this can be used to turn the device in low energy mode, if available)
Returns:
If everything works “true”, or “false” if there is any error.