Go to the documentation of this file.
10 #ifndef CGenericSensor_H
11 #define CGenericSensor_H
73 using Ptr = std::shared_ptr<CGenericSensor>;
124 std::map<std::string, const TSensorClassId*>;
176 const std::vector<mrpt::serialization::CSerializable::Ptr>&
obj);
182 std::vector<mrpt::serialization::CSerializable::Ptr>(1,
obj));
304 #define SENSOR_CLASS_ID(class_name) \
305 static_cast<const mrpt::hwdrivers::TSensorClassId*>( \
306 &mrpt::hwdrivers::class_name::class##class_name)
308 #define SENSOR_IS_CLASS(ptrObj, class_name) \
309 (ptrObj->GetRuntimeClass() == SENSOR_CLASS_ID(class_name))
314 #define DEFINE_GENERIC_SENSOR(class_name) \
316 static mrpt::hwdrivers::CGenericSensor::CLASSINIT_GENERIC_SENSOR \
317 _init_##class_name; \
320 static mrpt::hwdrivers::TSensorClassId class##class_name; \
321 virtual const mrpt::hwdrivers::TSensorClassId* GetRuntimeClass() const; \
322 static mrpt::hwdrivers::CGenericSensor* CreateObject(); \
323 static void doRegister() \
325 CGenericSensor::registerClass(SENSOR_CLASS_ID(class_name)); \
330 #define IMPLEMENTS_GENERIC_SENSOR(class_name, NameSpace) \
331 mrpt::hwdrivers::CGenericSensor* NameSpace::class_name::CreateObject() \
333 return static_cast<hwdrivers::CGenericSensor*>( \
334 new NameSpace::class_name); \
336 mrpt::hwdrivers::TSensorClassId NameSpace::class_name::class##class_name = \
337 {#class_name, NameSpace::class_name::CreateObject}; \
338 const mrpt::hwdrivers::TSensorClassId* \
339 NameSpace::class_name::GetRuntimeClass() const \
341 return SENSOR_CLASS_ID(class_name); \
void setExternalImageJPEGQuality(const unsigned int quality)
The quality of JPEG compression, when external images is enabled and the format is "jpg".
std::multimap< mrpt::system::TTimeStamp, mrpt::serialization::CSerializable::Ptr > TListObservations
std::shared_ptr< CGenericSensor > Ptr
const char * className
Class name.
virtual ~CGenericSensor()
Destructor.
std::shared_ptr< CSerializable > Ptr
TSensorState getState() const
The current state of the sensor
Auxiliary structure used for CSerializable runtime class ID support.
std::string m_path_for_external_images
The path where to save off-rawlog images: empty means save images embedded in the rawlog.
virtual const mrpt::hwdrivers::TSensorClassId * GetRuntimeClass() const =0
GLsizei GLsizei GLuint * obj
#define MRPT_UNUSED_PARAM(a)
Determines whether this is an X86 or AMD64 platform.
void enableVerbose(bool enabled=true)
Enable or disable extra debug info dumped to std::cout during sensor operation.
size_t m_max_queue_len
See CGenericSensor.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
double m_process_rate
See CGenericSensor.
TSensorState
The current state of the sensor.
static CGenericSensor * createSensor(const std::string &className)
Creates a sensor by a name of the class.
size_t m_grab_decimation_counter
Used when "m_grab_decimation" is enabled.
static CGenericSensor::Ptr createSensorPtr(const std::string &className)
Just like createSensor, but returning a smart pointer to the newly created sensor object.
CGenericSensor & operator=(const CGenericSensor &)=delete
virtual void doProcess()=0
This method will be invoked at a minimum rate of "process_rate" (Hz)
uint64_t TTimeStamp
A system independent time type, it holds the the number of 100-nanosecond intervals since January 1,...
std::map< std::string, const TSensorClassId * > registered_sensor_classes_t
Used in registerClass.
unsigned int getExternalImageJPEGQuality() const
virtual void setPathForExternalImages(const std::string &directory)
Set the path where to save off-rawlog image files (will be ignored in those sensors where this is not...
std::string m_external_images_format
The extension ("jpg","gif","png",...) that determines the format of images saved externally.
void setExternalImageFormat(const std::string &ext)
Set the extension ("jpg","gif","png",...) that determines the format of images saved externally The d...
double getProcessRate() const
CLASSINIT_GENERIC_SENSOR(const TSensorClassId *pNewClass)
This class allows loading and storing values and vectors of different types from a configuration text...
static void registerClass(const TSensorClassId *pNewClass)
Register a class into the internal list of "CGenericSensor" descendents.
std::mutex m_csObjList
The critical section for m_objList.
void appendObservations(const std::vector< mrpt::serialization::CSerializable::Ptr > &obj)
This method must be called by derived classes to enqueue a new observation in the list to be returned...
void getObservations(TListObservations &lstObjects)
Returns a list of enqueued objects, emptying it (thread-safe).
void appendObservation(const mrpt::serialization::CSerializable::Ptr &obj)
Like appendObservations() but for just one observation.
void setSensorLabel(const std::string &sensorLabel)
std::string m_sensorLabel
See CGenericSensor.
A generic interface for a wide-variety of sensors designed to be used in the application RawLogGrabbe...
A structure for runtime ID class type information in the context of hwdrivers::CGenericSensor.
TListObservations m_objList
The queue of objects to be returned by getObservations.
unsigned int m_external_images_jpeg_quality
For JPEG images, the quality (default=95%).
virtual void loadConfig_sensorSpecific(const mrpt::config::CConfigFileBase &configSource, const std::string §ion)=0
Loads specific configuration for the device from a given source of configuration parameters,...
bool isVerboseEnabled() const
CGenericSensor()
Constructor.
GLsizei const GLfloat * value
std::pair< mrpt::system::TTimeStamp, mrpt::serialization::CSerializable::Ptr > TListObsPair
#define MRPT_MAKE_ALIGNED_OPERATOR_NEW
Put this macro inside any class with members that require {16,32,64}-byte memory alignment (e....
GLsizei const GLchar ** string
void loadConfig(const mrpt::config::CConfigFileBase &configSource, const std::string §ion)
Loads the generic settings common to any sensor (See CGenericSensor), then call to "loadConfig_sensor...
std::string getSensorLabel() const
virtual void initialize()
This method can or cannot be implemented in the derived class, depending on the need for it.
static registered_sensor_classes_t & get_registered_sensor_classes()
Access to singleton.
size_t m_grab_decimation
If set to N>=2, only 1 out of N observations will be saved to m_objList.
Page generated by Doxygen 1.8.17 for MRPT 1.9.9 Git: ad3a9d8ae Tue May 1 23:10:22 2018 -0700 at miƩ 12 jul 2023 10:03:34 CEST | |