Main MRPT website > C++ reference for MRPT 1.4.0
CPhidgetInterfaceKitProximitySensors.h
Go to the documentation of this file.
1/* +---------------------------------------------------------------------------+
2 | Mobile Robot Programming Toolkit (MRPT) |
3 | http://www.mrpt.org/ |
4 | |
5 | Copyright (c) 2005-2016, Individual contributors, see AUTHORS file |
6 | See: http://www.mrpt.org/Authors - All rights reserved. |
7 | Released under BSD License. See details in http://www.mrpt.org/License |
8 +---------------------------------------------------------------------------+ */
9
10#ifndef CPhidgetInterfaceKitProximitySensors_H
11#define CPhidgetInterfaceKitProximitySensors_H
12
14#include <mrpt/poses/CPoint3D.h>
17
18namespace mrpt
19{
20 namespace hwdrivers
21 {
22 /** \brief : An interface for the phidget Interface kit board (1018).
23 * \class CPhidgetInterfaceKitProximitySensors
24 * \author Adrien BARRAL - Robopec (aba@robopec.com).
25 *
26 * An interface for the Phidgets Interface kit board (part number 1018) on wich it could be plugged either an Sharp IR adaptater board
27 * (phidget's part number : 1101),or a MaxBotix EZ-1 sonar (phidget's part number : 1118).
28 * The configuration file describe what is plugged to this board, and the geometry of the sensors on the robots. See the exemple below.
29 * \code
30 * [PhidgetInterfaceKitProximitySensors]
31 * sensorLabel = FrontProximitySensors
32 * process_rate = 100 // Integer value in Hz (common to all sensors), default value is 50Hz.
33 * displayRecapitulativeInformations = true // default value = false.
34 * serialNumber = 12345 // The interface kit serial number (Integer value), default value is -1.
35 * sensor1 = SHARP-30cm // sharp InfraRed sensor 30cm range (string value). capital to convert raw data to range data (in meters).
36 * pose1_x = 0 // position on the robot (float value in meters)
37 * pose1_y = 0
38 * pose1_z = 0.5
39 * pose1_yaw = -45.0 // Angles in degrees (float value).
40 * pose1_pitch = 0
41 * pose1_roll = 0
42 * //...
43 * sensorn = EZ1 // Maxbotix Ultrasound sonar
44 * posen_x = 0
45 * // ...
46 * \endcode
47 *
48 * The maximum number of sensors on this board is 8. Sensor 1 is the first sensor. If you haven't plugged any sensor on an entry of the board, you haven't to specify
49 * anyithing about this sensor in the configuration file.
50 * The following table enumerate the different sensors supported by this class.
51 * \latexonly
52 * \begin{tabular}{|c|c|c}
53 * \hline
54 * Part Number & Config file indentifiant & IR or US
55 * \hline
56 * MaxBotix EZ-1 Sonar Sensor & EZ1 & US \\
57 * GP2D12 & SHARP-30cm & IR \\
58 * GP2Y0A21** & SHARP-80cm & IR \\
59 * \hline
60 * \end{tabular}
61 *
62 * This isn't an event based implementation of the phidget library. That means that when an instanciation of a CPhidgetInterfaceKitProximitySensors is done, the constructor will block during
63 * in the worst case 200ms, if the board isn't found, an exception will be thrown.
64 * mrpt::obs::CObservation returned by this class is a CObservationRange. CObservationrange::minSensorDistance will be the minimum of the minimum of the sensor distances, e.g if you plug to the interface
65 * kit a GP2D12 (min range 4 cm) and a GP2Y0A21 (min range 8 cm), then CObservationrange::minSensorDistance = min(0.04,0.08) = 0.04. Respectively for the maximal range.
66 * \endlatexonly
67 * \warning{The Phidget library use udev. By default, udev require to be root to be launched, if you want to be able to run a program wich use a phidget board without be root, you must modify files in /etc/udev/rules.d .}
68 * \ingroup mrpt_hwdrivers_grp
69 */
71
73 {
75
76 public:
77 /** Constructor
78 * \param serialNumber The board's serial number. Set -1 to choose the first available board
79 */
81
82 /** Destructor
83 */
85
86 /** This method tries to get a set of range measurements from the IR sensors.
87 * \param outThereIsObservation Will be true if an observation was sucessfully received.
88 */
90 /** Initialize the sensor according to the parameters previously read in the configuration file.
91 * \exception throw an exception if the board could not be found.
92 * \exception throw an exception if the process rate can't be set on one of the board channel.
93 */
94 void initialize();
95
96 /** This method should be called periodically. Period depend on the process_rate in the configuration file.
97 */
98 void doProcess();
99
100 private:
101 /** An 8 dimension vector of boolean value wich store the presence or abscence of a sensor on the phidget interface kit board.
102 */
103 std::vector<bool> m_sensorIsPlugged;
104 /** The minimum range in meters, this field is automaticaly filled according to the sensor part number read in the configuration file.
105 * Size of this vector depend on the number of sensors described in the configuration file.
106 */
107 std::vector<float> m_minRange;
108
109 /** The maximum range in meters, this field is automaticaly filled according to the sensor part number read in the configuration file.
110 * Size of this vector depend on the number of sensors described in the configuration file.
111 */
112 std::vector<float> m_maxRange;
113
114 /** The sensor type.
115 */
116 std::vector<SensorType> m_sensorType;
117 /** The poses of the 8 sensors x[m] y[m] z[m] yaw[deg] pitch[deg] roll[deg]. This field is automaticaly filled according to the sensor
118 * described in the configuration file.
119 */
120 std::vector<mrpt::poses::CPose3D> m_sensorPoses;
121
122 /** The board serial number read in the configuration file. -1 for any board.
123 */
127
128 void* m_carteInterfaceKit; //CPhidgetInterfaceKitHandle
129
130 /** See the class documentation at the top for expected parameters */
132 const std::string &iniSection );
133 }; // end class
134
135 } // end namespace
136} // end namespace
137
138#endif
#define DEFINE_GENERIC_SENSOR(class_name)
This declaration must be inserted in all CGenericSensor classes definition, within the class declarat...
A generic interface for a wide-variety of sensors designed to be used in the application RawLogGrabbe...
: An interface for the phidget Interface kit board (1018).
std::vector< float > m_minRange
The minimum range in meters, this field is automaticaly filled according to the sensor part number re...
std::vector< mrpt::poses::CPose3D > m_sensorPoses
The poses of the 8 sensors x[m] y[m] z[m] yaw[deg] pitch[deg] roll[deg].
void getObservation(mrpt::obs::CObservationRange &outObservation)
This method tries to get a set of range measurements from the IR sensors.
std::vector< bool > m_sensorIsPlugged
An 8 dimension vector of boolean value wich store the presence or abscence of a sensor on the phidget...
int m_serialNumber
The board serial number read in the configuration file.
std::vector< float > m_maxRange
The maximum range in meters, this field is automaticaly filled according to the sensor part number re...
void initialize()
Initialize the sensor according to the parameters previously read in the configuration file.
void doProcess()
This method should be called periodically.
void loadConfig_sensorSpecific(const mrpt::utils::CConfigFileBase &configSource, const std::string &iniSection)
See the class documentation at the top for expected parameters.
Declares a class derived from "CObservation" that encapsules a single range measurement,...
This class allows loading and storing values and vectors of different types from a configuration text...
This base class provides a common printf-like method to send debug information to std::cout,...
#define HWDRIVERS_IMPEXP
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.



Page generated by Doxygen 1.9.6 for MRPT 1.4.0 SVN: at Wed Mar 22 20:12:58 UTC 2023