YARP
Yet Another Robot Platform
 
Loading...
Searching...
No Matches

fakeLaser : fake sensor device driver for testing purposes and reference for IRangefinder2D devices. More...

#include <fake/fakeLaser/FakeLaser.h>

+ Inheritance diagram for FakeLaser:

Public Member Functions

 FakeLaser (double period=0.02)
 
 ~FakeLaser ()
 
bool open (yarp::os::Searchable &config) override
 Open the DeviceDriver.
 
bool close () override
 Close the DeviceDriver.
 
bool threadInit () override
 Initialization method.
 
void threadRelease () override
 Release method.
 
void run () override
 Loop function.
 
bool setDistanceRange (double min, double max) override
 set the device detection range.
 
bool setScanLimits (double min, double max) override
 set the scan angular range.
 
bool setHorizontalResolution (double step) override
 get the angular step between two measurements (if available)
 
bool setScanRate (double rate) override
 set the scan rate (scans per seconds)
 
bool acquireDataFromHW () override final
 This method should be implemented by the user, and contain the logic to grab data from the hardware.
 
bool read (yarp::os::ConnectionReader &connection) override
 Read this object from a network connection.
 
- Public Member Functions inherited from yarp::os::PeriodicThread
 PeriodicThread (double period, ShouldUseSystemClock useSystemClock=ShouldUseSystemClock::No, PeriodicThreadClock clockAccuracy=PeriodicThreadClock::Relative)
 Constructor.
 
 PeriodicThread (double period, PeriodicThreadClock clockAccuracy)
 Constructor.
 
virtual ~PeriodicThread ()
 
bool start ()
 Call this to start the thread.
 
void step ()
 Call this to "step" the thread rather than starting it.
 
void stop ()
 Call this to stop the thread, this call blocks until the thread is terminated (and releaseThread() called).
 
void askToStop ()
 Stop the thread.
 
bool isRunning () const
 Returns true when the thread is started, false otherwise.
 
bool isSuspended () const
 Returns true when the thread is suspended, false otherwise.
 
bool setPeriod (double period)
 Set the (new) period of the thread.
 
double getPeriod () const
 Return the current period of the thread.
 
void suspend ()
 Suspend the thread, the thread keeps running by doLoop is never executed.
 
void resume ()
 Resume the thread if previously suspended.
 
void resetStat ()
 Reset thread statistics.
 
double getEstimatedPeriod () const
 Return estimated period since last reset.
 
void getEstimatedPeriod (double &av, double &std) const
 Return estimated period since last reset.
 
unsigned int getIterations () const
 Return the number of iterations performed since last reset.
 
double getEstimatedUsed () const
 Return the estimated duration of the run() function since last reset.
 
void getEstimatedUsed (double &av, double &std) const
 Return estimated duration of the run() function since last reset.
 
int setPriority (int priority, int policy=-1)
 Set the priority and scheduling policy of the thread, if the OS supports that.
 
int getPriority () const
 Query the current priority of the thread, if the OS supports that.
 
int getPolicy () const
 Query the current scheduling policy of the thread, if the OS supports that.
 
- Public Member Functions inherited from yarp::dev::Lidar2DDeviceBase
bool parseConfiguration (yarp::os::Searchable &config)
 
 Lidar2DDeviceBase ()
 
bool getRawData (yarp::sig::Vector &data, double *timestamp=nullptr) override
 Get the device measurements.
 
bool getLaserMeasurement (std::vector< yarp::sig::LaserMeasurementData > &data, double *timestamp=nullptr) override
 Get the device measurements.
 
bool getDeviceStatus (Device_status &status) override
 get the device status
 
bool getDeviceInfo (std::string &device_info) override
 get the device hardware characteristics
 
bool getDistanceRange (double &min, double &max) override
 get the device detection range
 
bool getScanLimits (double &min, double &max) override
 get the scan angular range.
 
bool getHorizontalResolution (double &step) override
 get the angular step between two measurements.
 
bool getScanRate (double &rate) override
 get the scan rate (scans per seconds)
 
- Public Member Functions inherited from yarp::dev::IRangefinder2D
virtual ~IRangefinder2D ()
 
- Public Member Functions inherited from yarp::dev::DeviceDriver
 DeviceDriver ()
 
 DeviceDriver (const DeviceDriver &other)=delete
 
 DeviceDriver (DeviceDriver &&other) noexcept=delete
 
DeviceDriveroperator= (const DeviceDriver &other)=delete
 
DeviceDriveroperator= (DeviceDriver &&other) noexcept=delete
 
virtual ~DeviceDriver ()
 
virtual std::string id () const
 Return the id assigned to the PolyDriver.
 
virtual void setId (const std::string &id)
 Set the id for this device.
 
template<class T >
bool view (T *&x)
 Get an interface to the device driver.
 
virtual DeviceDrivergetImplementation ()
 Some drivers are bureaucrats, pointing at others.
 
- Public Member Functions inherited from yarp::os::PortReader
virtual ~PortReader ()
 Destructor.
 
virtual Type getReadType () const
 
- Public Member Functions inherited from FakeLaser_ParamsParser
 FakeLaser_ParamsParser ()
 
 ~FakeLaser_ParamsParser () override=default
 
bool parseParams (const yarp::os::Searchable &config) override
 Parse the DeviceDriver parameters.
 
std::string getDeviceClassName () const override
 Get the name of the DeviceDriver class.
 
std::string getDeviceName () const override
 Get the name of the device (i.e.
 
std::string getDocumentationOfDeviceParams () const override
 Get the documentation of the DeviceDriver's parameters.
 
std::vector< std::string > getListOfParams () const override
 Return a list of all params used by the device.
 
- Public Member Functions inherited from yarp::dev::IDeviceDriverParams
virtual ~IDeviceDriverParams ()
 

Protected Types

enum  test_mode_t {
  NO_OBSTACLES = 0 ,
  USE_PATTERN =1 ,
  USE_MAPFILE =2 ,
  USE_CONSTANT_VALUE =3 ,
  USE_SQUARE_TRAP =4
}
 
enum  localization_mode_t {
  LOC_NOT_SET =0 ,
  LOC_FROM_PORT = 1 ,
  LOC_FROM_CLIENT = 2
}
 

Protected Attributes

test_mode_t m_test_mode
 
localization_mode_t m_loc_mode
 
yarp::dev::Nav2D::MapGrid2D m_originally_loaded_map
 
yarp::dev::Nav2D::MapGrid2D m_map
 
yarp::os::BufferedPort< yarp::os::Bottle > * m_loc_port
 
yarp::dev::PolyDriverm_pLoc
 
yarp::dev::Nav2D::ILocalization2Dm_iLoc
 
double m_robot_loc_x
 
double m_robot_loc_y
 
double m_robot_loc_t
 
std::random_device * m_rd
 
std::mt19937 * m_gen
 
std::uniform_real_distribution * m_dis
 
yarp::os::Port m_rpcPort
 
- Protected Attributes inherited from yarp::dev::Lidar2DDeviceBase
yarp::sig::Vector m_laser_data
 
yarp::os::Stamp m_timestamp
 
yarp::dev::IRangefinder2D::Device_status m_device_status
 
std::mutex m_mutex
 
std::string m_info
 
double m_scan_rate
 
size_t m_sensorsNum
 
double m_min_angle
 
double m_max_angle
 
double m_min_distance
 
double m_max_distance
 
double m_resolution
 
bool m_clip_max_enable
 
bool m_clip_min_enable
 
bool m_do_not_clip_and_allow_infinity_enable
 
std::vector< Range_tm_range_skip_vector
 

Additional Inherited Members

- Public Types inherited from yarp::dev::IRangefinder2D
enum  Device_status {
  DEVICE_OK_STANDBY = 0 ,
  DEVICE_OK_IN_USE = 1 ,
  DEVICE_GENERAL_ERROR = 2 ,
  DEVICE_TIMEOUT = 3
}
 
- Public Attributes inherited from FakeLaser_ParamsParser
const std::string m_device_classname = {"FakeLaser"}
 
const std::string m_device_name = {"fakeLaser"}
 
bool m_parser_is_strict = false
 
const parser_version_type m_parser_version = {}
 
const std::string m_test_defaultValue = {"use_pattern"}
 
const std::string m_localization_port_defaultValue = {"/fakeLaser/location:i"}
 
const std::string m_localization_server_defaultValue = {"/localizationServer"}
 
const std::string m_localization_client_defaultValue = {"/fakeLaser/localizationClient"}
 
const std::string m_localization_device_defaultValue = {"localization2DClient"}
 
const std::string m_MAP_MODE_map_file_defaultValue = {""}
 
const std::string m_MAP_MODE_map_context_defaultValue = {""}
 
const std::string m_clip_max_defaultValue = {"3.5"}
 
const std::string m_clip_min_defaultValue = {"0.1"}
 
const std::string m_GENERAL_period_defaultValue = {"0.02"}
 
const std::string m_CONSTANT_MODE_const_distance_defaultValue = {"1"}
 
std::string m_test = {"use_pattern"}
 
std::string m_localization_port = {"/fakeLaser/location:i"}
 
std::string m_localization_server = {"/localizationServer"}
 
std::string m_localization_client = {"/fakeLaser/localizationClient"}
 
std::string m_localization_device = {"localization2DClient"}
 
std::string m_MAP_MODE_map_file = {}
 
std::string m_MAP_MODE_map_context = {}
 
double m_clip_max = {3.5}
 
double m_clip_min = {0.1}
 
double m_GENERAL_period = {0.02}
 
double m_CONSTANT_MODE_const_distance = {1}
 
- Protected Member Functions inherited from yarp::os::PeriodicThread
virtual void beforeStart ()
 Called just before a new thread starts.
 
virtual void afterStart (bool success)
 Called just after a new thread starts (or fails to start), this is executed by the same thread that calls start().
 
- Protected Member Functions inherited from yarp::dev::Lidar2DDeviceBase
virtual bool updateLidarData ()
 This utility method calls in sequence: grabDataFromHW(), updateTimestamp and applyLimitsOnLaserData().
 
virtual bool updateTimestamp ()
 By default, it automatically updates the internal timestamp with the yarp time.
 
virtual bool applyLimitsOnLaserData ()
 Apply the limits on the internally stored lidar measurements.
 

Detailed Description

fakeLaser : fake sensor device driver for testing purposes and reference for IRangefinder2D devices.

Parameters required by this device are shown in class: FakeLaser_ParamsParser

examples:

yarpdev –device fakeLaser –help yarpdev –device rangefinder2D_nws_yarp –subdevice fakeLaser –period 0.01 –name /ikart/laser:o –test no_obstacles yarpdev –device rangefinder2D_nws_yarp –subdevice fakeLaser –period 0.01 –name /ikart/laser:o –test use_pattern yarpdev –device rangefinder2D_nws_yarp –subdevice fakeLaser –period 0.01 –name /ikart/laser:o –test use_mapfile –map_file mymap.map yarpdev –device rangefinder2D_nws_yarp –subdevice fakeLaser –period 0.01 –name /ikart/laser:o –test use_mapfile –map_file mymap.map –localization_port /fakeLaser/location:i yarpdev –device rangefinder2D_nws_yarp –subdevice fakeLaser –period 0.01 –name /ikart/laser:o –test use_mapfile –map_file mymap.map –localization_client /fakeLaser/localizationClient yarpdev –device rangefinder2D_nws_yarp –subdevice fakeLaser –period 0.01 –name /ikart/laser:o –test use_mapfile –map_file mymap.map –localization_client /fakeLaser/localizationClient –localization_device localization2D_nwc_yarp

Definition at line 44 of file FakeLaser.h.

Member Enumeration Documentation

◆ localization_mode_t

Enumerator
LOC_NOT_SET 
LOC_FROM_PORT 
LOC_FROM_CLIENT 

Definition at line 52 of file FakeLaser.h.

◆ test_mode_t

enum FakeLaser::test_mode_t
protected
Enumerator
NO_OBSTACLES 
USE_PATTERN 
USE_MAPFILE 
USE_CONSTANT_VALUE 
USE_SQUARE_TRAP 

Definition at line 51 of file FakeLaser.h.

Constructor & Destructor Documentation

◆ FakeLaser()

FakeLaser::FakeLaser ( double  period = 0.02)
inline

Definition at line 75 of file FakeLaser.h.

◆ ~FakeLaser()

FakeLaser::~FakeLaser ( )
inline

Definition at line 99 of file FakeLaser.h.

Member Function Documentation

◆ acquireDataFromHW()

bool FakeLaser::acquireDataFromHW ( )
finaloverridevirtual

This method should be implemented by the user, and contain the logic to grab data from the hardware.

Returns
true/false if the method is successful.

Implements yarp::dev::Lidar2DDeviceBase.

Definition at line 297 of file FakeLaser.cpp.

◆ close()

bool FakeLaser::close ( )
overridevirtual

Close the DeviceDriver.

Returns
true/false on success/failure.

Reimplemented from yarp::dev::DeviceDriver.

Definition at line 202 of file FakeLaser.cpp.

◆ open()

bool FakeLaser::open ( yarp::os::Searchable config)
overridevirtual

Open the DeviceDriver.

Parameters
configis a list of parameters for the device. Which parameters are effective for your device can vary. See device invocation examples. If there is no example for your device, you can run the "yarpdev" program with the verbose flag set to probe what parameters the device is checking. If that fails too, you'll need to read the source code (please nag one of the yarp developers to add documentation for your device).
Returns
true/false upon success/failure

Reimplemented from yarp::dev::DeviceDriver.

Definition at line 32 of file FakeLaser.cpp.

◆ read()

bool FakeLaser::read ( yarp::os::ConnectionReader reader)
overridevirtual

Read this object from a network connection.

Override this for your particular class.

Parameters
readeran interface to the network connection for reading
Returns
true iff the object is successfully read

Implements yarp::os::PortReader.

Definition at line 510 of file FakeLaser.cpp.

◆ run()

void FakeLaser::run ( )
overridevirtual

Loop function.

This is the thread itself. The thread calls the run() function every <period> ms. At the end of each run, the thread will sleep the amounth of time required, taking into account the time spent inside the loop function. Example: requested period is 10ms, the run() function take 3ms to be executed, the thread will sleep for 7ms.

Note: after each run is completed, the thread will call a yield() in order to facilitate other threads to run.

Implements yarp::os::PeriodicThread.

Definition at line 436 of file FakeLaser.cpp.

◆ setDistanceRange()

bool FakeLaser::setDistanceRange ( double  min,
double  max 
)
overridevirtual

set the device detection range.

Invalid setting will be discarded.

Parameters
minthe minimum detection distance
maxthe maximum detection distance
Returns
true/false on success/failure.

Implements yarp::dev::IRangefinder2D.

Definition at line 214 of file FakeLaser.cpp.

◆ setHorizontalResolution()

bool FakeLaser::setHorizontalResolution ( double  step)
overridevirtual

get the angular step between two measurements (if available)

Parameters
stepthe angular step between two measurements
Returns
true/false on success/failure.

Implements yarp::dev::IRangefinder2D.

Definition at line 232 of file FakeLaser.cpp.

◆ setScanLimits()

bool FakeLaser::setScanLimits ( double  min,
double  max 
)
overridevirtual

set the scan angular range.

Parameters
minstart angle of the scan
maxend angle of the scan
Returns
true/false on success/failure.

Implements yarp::dev::IRangefinder2D.

Definition at line 223 of file FakeLaser.cpp.

◆ setScanRate()

bool FakeLaser::setScanRate ( double  rate)
overridevirtual

set the scan rate (scans per seconds)

Parameters
ratethe scan rate
Returns
true/false on success/failure.

Implements yarp::dev::IRangefinder2D.

Definition at line 240 of file FakeLaser.cpp.

◆ threadInit()

bool FakeLaser::threadInit ( )
overridevirtual

Initialization method.

The thread executes this function when it starts and before "run". This is a good place to perform initialization tasks that need to be done by the thread itself (device drivers initialization, memory allocation etc). If the function returns false the thread quits and never calls "run". The return value of threadInit() is notified to the class and passed as a parameter to afterStart(). Note that afterStart() is called by the same thread that is executing the "start" method.

Reimplemented from yarp::os::PeriodicThread.

Definition at line 248 of file FakeLaser.cpp.

◆ threadRelease()

void FakeLaser::threadRelease ( )
overridevirtual

Release method.

The thread executes this function once when it exits, after the last "run". This is a good place to release resources that were initialized in threadInit() (release memory, and device driver resources).

Reimplemented from yarp::os::PeriodicThread.

Definition at line 730 of file FakeLaser.cpp.

Member Data Documentation

◆ m_dis

std::uniform_real_distribution* FakeLaser::m_dis
protected

Definition at line 70 of file FakeLaser.h.

◆ m_gen

std::mt19937* FakeLaser::m_gen
protected

Definition at line 69 of file FakeLaser.h.

◆ m_iLoc

yarp::dev::Nav2D::ILocalization2D* FakeLaser::m_iLoc
protected

Definition at line 61 of file FakeLaser.h.

◆ m_loc_mode

localization_mode_t FakeLaser::m_loc_mode
protected

Definition at line 55 of file FakeLaser.h.

◆ m_loc_port

yarp::os::BufferedPort<yarp::os::Bottle>* FakeLaser::m_loc_port
protected

Definition at line 59 of file FakeLaser.h.

◆ m_map

yarp::dev::Nav2D::MapGrid2D FakeLaser::m_map
protected

Definition at line 58 of file FakeLaser.h.

◆ m_originally_loaded_map

yarp::dev::Nav2D::MapGrid2D FakeLaser::m_originally_loaded_map
protected

Definition at line 57 of file FakeLaser.h.

◆ m_pLoc

yarp::dev::PolyDriver* FakeLaser::m_pLoc
protected

Definition at line 60 of file FakeLaser.h.

◆ m_rd

std::random_device* FakeLaser::m_rd
protected

Definition at line 68 of file FakeLaser.h.

◆ m_robot_loc_t

double FakeLaser::m_robot_loc_t
protected

Definition at line 66 of file FakeLaser.h.

◆ m_robot_loc_x

double FakeLaser::m_robot_loc_x
protected

Definition at line 64 of file FakeLaser.h.

◆ m_robot_loc_y

double FakeLaser::m_robot_loc_y
protected

Definition at line 65 of file FakeLaser.h.

◆ m_rpcPort

yarp::os::Port FakeLaser::m_rpcPort
protected

Definition at line 72 of file FakeLaser.h.

◆ m_test_mode

test_mode_t FakeLaser::m_test_mode
protected

Definition at line 54 of file FakeLaser.h.


The documentation for this class was generated from the following files: