Laelaps  2.3.5
RoadNarrows Robotics Small Outdoor Mobile Robot Project
laeReports.h
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////////////
2 //
3 // Package: Laelaps
4 //
5 // Library: liblaelaps
6 //
7 // File: laeReports.h
8 //
9 /*! \file
10  *
11  * $LastChangedDate: 2016-02-11 15:06:42 -0700 (Thu, 11 Feb 2016) $
12  * $Rev: 4312 $
13  *
14  * \brief Interfaces of Laelaps requested and/or published report classes.
15  *
16  * \author Robin Knight (robin.knight@roadnarrows.com)
17  *
18  * \par Copyright
19  * \h_copy 2015-2017. RoadNarrows LLC.\n
20  * http://www.roadnarrows.com\n
21  * All Rights Reserved
22  */
23 /*
24  * @EulaBegin@
25  *
26  * Unless otherwise stated explicitly, all materials contained are copyrighted
27  * and may not be used without RoadNarrows LLC's written consent,
28  * except as provided in these terms and conditions or in the copyright
29  * notice (documents and software) or other proprietary notice provided with
30  * the relevant materials.
31  *
32  * IN NO EVENT SHALL THE AUTHOR, ROADNARROWS LLC, OR ANY
33  * MEMBERS/EMPLOYEES/CONTRACTORS OF ROADNARROWS OR DISTRIBUTORS OF THIS SOFTWARE
34  * BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR
35  * CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
36  * DOCUMENTATION, EVEN IF THE AUTHORS OR ANY OF THE ABOVE PARTIES HAVE BEEN
37  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38  *
39  * THE AUTHORS AND ROADNARROWS LLC SPECIFICALLY DISCLAIM ANY WARRANTIES,
40  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
41  * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN
42  * "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO
43  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
44  *
45  * @EulaEnd@
46  */
47 ////////////////////////////////////////////////////////////////////////////////
48 
49 #ifndef _LAE_REPORTS_H
50 #define _LAE_REPORTS_H
51 
52 #include <string>
53 #include <vector>
54 
55 #include "rnr/rnrconfig.h"
56 
57 #include "Laelaps/laelaps.h"
58 #include "Laelaps/laeAlarms.h"
59 #include "Laelaps/laeTraj.h"
60 #include "Laelaps/laePowertrain.h"
61 
62 namespace laelaps
63 {
64  //
65  // Forward declarations.
66  //
67  class LaeRobot;
68 
69  // ---------------------------------------------------------------------------
70  // Class LaeRptMotorCtlrHealth
71  // ---------------------------------------------------------------------------
72 
73  /*!
74  * \brief Robot motor health.
75  */
77  {
78  public:
79  std::string m_strName; ///< motor controller name
80  double m_fTemperature; ///< motor controller board temperature (C)
81  double m_fVoltage; ///< motor controller main input voltage (V)
82  LaeAlarmInfo m_alarms; ///< motor controller alarms and warnings
83 
84  /*!
85  * \brief Default constructor.
86  */
88 
89  /*!
90  * \brief Copy constructor.
91  */
93 
94  /*!
95  * \brief Destructor.
96  */
98  {
99  }
100 
101  /*!
102  * \brief Assignment operator.
103  *
104  * \param rhs Right hand side object.
105  *
106  * \return Returns copy of this.
107  */
109  };
110 
111 
112  // ---------------------------------------------------------------------------
113  // Class LaeRptMotorHealth
114  // ---------------------------------------------------------------------------
115 
116  /*!
117  * \brief Robot motor health.
118  */
120  {
121  public:
122  std::string m_strName; ///< motor name
123  double m_fTemperature; ///< motor temperature (Celsius)
124  double m_fVoltage; ///< motor voltage (volts)
125  double m_fCurrent; ///< motor current draw (amperes)
126  LaeAlarmInfo m_alarms; ///< motor alarms and warnings
127 
128  /*!
129  * \brief Default constructor.
130  */
132 
133  /*!
134  * \brief Copy constructor.
135  */
137 
138  /*!
139  * \brief Destructor.
140  */
142  {
143  }
144 
145  /*!
146  * \brief Assignment operator.
147  *
148  * \param rhs Right hand side object.
149  *
150  * \return Returns copy of this.
151  */
153  };
154 
155 
156  // ---------------------------------------------------------------------------
157  // Class LaeRptRobotStatus
158  // ---------------------------------------------------------------------------
159 
160  /*!
161  * \brief Robot global status report.
162  */
164  {
165  public:
166  typedef std::vector<LaeRptMotorHealth> VecMotorHealth;
167  typedef std::vector<LaeRptMotorCtlrHealth> VecMotorCtlrHealth;
168 
169  // ROS industrial
170  LaeRobotMode m_eRobotMode; ///< robot operating mode
171  LaeTriState m_eIsEStopped; ///< robot is [not] emergency stopped
172  LaeTriState m_eAreDrivesPowered; ///< motor are [not] powered
173  LaeTriState m_eIsMotionPossible; ///< motion is [not] possible
174  LaeTriState m_eIsInMotion; ///< robot is [not] moving
175  LaeTriState m_eIsInError; ///< robot is [not] in error condition
176  int m_nErrorCode; ///< laelaps error code
177 
178  // robot base extensions
179  double m_fBatterySoC; ///< battery state of charge (0%-100%)
180  bool m_bIsCharging; ///< battery is [not] being charged
181  double m_fCurrent; ///< estimated robot draw (A)
182  double m_fVoltage; ///< average battery voltage (V)
183  double m_fTemperature; ///< interior average temperature (C)
184  LaeTriState m_eAuxBattEn; ///< auxilliary battery power enable
185  LaeTriState m_eAux5VEn; ///< auxilliary 5V power enable
186  LaeAlarmInfo m_alarms; ///< system alarms and warnings
187 
188  // motor extensions
189  VecMotorCtlrHealth m_vecCtlrHealth; ///< motors controllers' health
190  VecMotorHealth m_vecMotorHealth; ///< motors' health
191 
192  /*!
193  * \brief Default constructor.
194  */
196  {
197  clear();
198  }
199 
200  /*!
201  * \brief Copy constructor.
202  */
204 
205  /*!
206  * \brief Destructor.
207  */
209  {
210  }
211 
212  /*!
213  * \brief Assignment operator.
214  *
215  * \param rhs Right hand side object.
216  *
217  * \return Returns copy of this.
218  */
220 
221  /*!
222  * \brief Clear report.
223  */
224  void clear();
225 
226  /*!
227  * \brief Generate report.
228  *
229  * \param pRobot Pointer to the robot.
230  */
231  void generate(LaeRobot *pRobot);
232 
233  }; // class LaeRptRobotStatus
234 
235 
236  // ---------------------------------------------------------------------------
237  // Class LaeRptDynPowertrain
238  // ---------------------------------------------------------------------------
239 
240  /*!
241  * \brief Powertrain dynamics subreport.
242  */
244  {
245  public:
246  std::string m_strName; ///< powertrain unique name (key)
247  s64_t m_nEncoder; ///< motor encoder position (quad pulses)
248  int m_nSpeed; ///< raw speed (qpps)
249  double m_fPosition; ///< wheel angular position (radians)
250  double m_fVelocity; ///< wheel angular velocity (radians/second)
251  double m_fPe; ///< motor input electrical power (W)
252  double m_fTorque; ///< wheel torque (N-m)
253 
254  /*!
255  * \brief Default constructor.
256  */
258 
259  /*!
260  * \brief Copy constructor.
261  */
263 
264  /*!
265  * \brief Destructor.
266  */
268  {
269  }
270 
271  /*!
272  * \brief Assignment operator.
273  *
274  * \param rhs Right hand side object.
275  *
276  * \return Returns copy of this.
277  */
279 
280  /*!
281  * \brief Clear report.
282  */
283  void clear();
284 
285  /*!
286  * \brief Generate report.
287  *
288  * \param nMotorId Globally unique powertrain/motor id.
289  */
290  void generate(int nMotorId);
291 
292  }; // class LaeRptDynPowertrain
293 
294 
295  // ---------------------------------------------------------------------------
296  // Class LaeRptDynamics
297  // ---------------------------------------------------------------------------
298 
299  /*!
300  * \brief Laelaps dynamics report.
301  */
303  {
304  public:
305  typedef std::vector<LaeRptDynPowertrain> VecDynPowertrain;
306 
307  // robot platform dynamics
308  LaePose m_pose; ///< robot 2D pose (meters, meters, radians)
309  double m_fOdometer; ///< robot odometer (meters)
310  double m_fVelocity; ///< robot linear velocity v (meters/second)
311 
312  // powertrain dynamics
313  VecDynPowertrain m_vecDynPowertrain; ///< powertrains' state
314 
315  /*!
316  * \brief Default constructor.
317  */
318  LaeRptDynamics();
319 
320  /*!
321  * \brief Copy constructor.
322  */
323  LaeRptDynamics(const LaeRptDynamics &src);
324 
325  /*!
326  * \brief Destructor.
327  */
329  {
330  }
331 
332  /*!
333  * \brief Assignment operator.
334  *
335  * \param rhs Right hand side object.
336  *
337  * \return Returns copy of this.
338  */
340 
341  /*!
342  * \brief Clear report.
343  */
344  void clear();
345 
346  /*!
347  * \brief Generate report.
348  *
349  * \param pRobot Pointer to the robot (not used).
350  */
351  void generate(LaeRobot *pRobot);
352 
353  }; // class LaeRptDynamics
354 
355 } // namespace laelaps
356 
357 #endif // _LAE_REPORTS_H
double m_fVoltage
motor controller main input voltage (V)
Definition: laeReports.h:81
double m_fBatterySoC
battery state of charge (0%-100%)
Definition: laeReports.h:179
LaeRptMotorCtlrHealth operator=(const LaeRptMotorCtlrHealth &rhs)
Assignment operator.
Definition: laeReports.cxx:92
Robot motor health.
Definition: laeReports.h:76
double m_fVelocity
robot linear velocity v (meters/second)
Definition: laeReports.h:310
Trajectory classes interfaces.
double m_fPe
motor input electrical power (W)
Definition: laeReports.h:251
Alarm information state structure.
Definition: laeAlarms.h:157
LaeTriState m_eIsInMotion
robot is [not] moving
Definition: laeReports.h:174
double m_fTemperature
motor controller board temperature (C)
Definition: laeReports.h:80
LaeRobotMode
<b><i>Laelaps</i></b> mode of operation.
Definition: laelaps.h:327
LaeTriState m_eIsInError
robot is [not] in error condition
Definition: laeReports.h:175
LaeAlarmInfo m_alarms
motor alarms and warnings
Definition: laeReports.h:126
Laelaps dynamics report.
Definition: laeReports.h:302
VecMotorCtlrHealth m_vecCtlrHealth
motors controllers&#39; health
Definition: laeReports.h:189
LaeTriState m_eIsMotionPossible
motion is [not] possible
Definition: laeReports.h:173
VecDynPowertrain m_vecDynPowertrain
powertrains&#39; state
Definition: laeReports.h:313
int m_nSpeed
raw speed (qpps)
Definition: laeReports.h:248
LaeTriState m_eAux5VEn
auxilliary 5V power enable
Definition: laeReports.h:185
double m_fOdometer
robot odometer (meters)
Definition: laeReports.h:309
~LaeRptMotorHealth()
Destructor.
Definition: laeReports.h:141
double m_fPosition
wheel angular position (radians)
Definition: laeReports.h:249
Powertrain dynamics subreport.
Definition: laeReports.h:243
double m_fVoltage
average battery voltage (V)
Definition: laeReports.h:182
double m_fVoltage
motor voltage (volts)
Definition: laeReports.h:124
The <b><i>Laelaps</i></b> namespace encapsulates all <b><i>Laelaps</i></b> related constructs...
Definition: laeAlarms.h:64
Robot motor health.
Definition: laeReports.h:119
Laelaps powertrain class interfaces.
double m_fCurrent
estimated robot draw (A)
Definition: laeReports.h:181
~LaeRptDynamics()
Destructor.
Definition: laeReports.h:328
~LaeRptMotorCtlrHealth()
Destructor.
Definition: laeReports.h:97
std::string m_strName
motor controller name
Definition: laeReports.h:79
LaeTriState m_eIsEStopped
robot is [not] emergency stopped
Definition: laeReports.h:171
double m_fCurrent
motor current draw (amperes)
Definition: laeReports.h:125
double m_fTemperature
motor temperature (Celsius)
Definition: laeReports.h:123
s64_t m_nEncoder
motor encoder position (quad pulses)
Definition: laeReports.h:247
LaeRptMotorCtlrHealth()
Default constructor.
Definition: laeReports.cxx:77
LaeAlarmInfo m_alarms
motor controller alarms and warnings
Definition: laeReports.h:82
std::string m_strName
powertrain unique name (key)
Definition: laeReports.h:246
LaeRobotMode m_eRobotMode
robot operating mode
Definition: laeReports.h:170
Laelaps alarm monitoring class interface.
~LaeRptDynPowertrain()
Destructor.
Definition: laeReports.h:267
Laelaps 2D pose class.
Definition: laeTraj.h:170
LaeRptRobotStatus()
Default constructor.
Definition: laeReports.h:195
LaeAlarmInfo m_alarms
system alarms and warnings
Definition: laeReports.h:186
Robot global status report.
Definition: laeReports.h:163
double m_fTorque
wheel torque (N-m)
Definition: laeReports.h:252
VecMotorHealth m_vecMotorHealth
motors&#39; health
Definition: laeReports.h:190
int m_nErrorCode
laelaps error code
Definition: laeReports.h:176
double m_fTemperature
interior average temperature (C)
Definition: laeReports.h:183
LaeTriState m_eAreDrivesPowered
motor are [not] powered
Definition: laeReports.h:172
LaeTriState
<b><i>Laelaps</i></b> tri-state type.
Definition: laelaps.h:300
std::string m_strName
motor name
Definition: laeReports.h:122
LaePose m_pose
robot 2D pose (meters, meters, radians)
Definition: laeReports.h:308
double m_fVelocity
wheel angular velocity (radians/second)
Definition: laeReports.h:250
~LaeRptRobotStatus()
Destructor.
Definition: laeReports.h:208
LaeTriState m_eAuxBattEn
auxilliary battery power enable
Definition: laeReports.h:184
bool m_bIsCharging
battery is [not] being charged
Definition: laeReports.h:180
Laelaps robotic manipulator plus accesories class.
Definition: laeRobot.h:103
Top-level package include file.