stdr_tools.cpp
Go to the documentation of this file.
1 /******************************************************************************
2  STDR Simulator - Simple Two DImensional Robot Simulator
3  Copyright (C) 2013 STDR Simulator
4  This program is free software; you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation; either version 3 of the License, or
7  (at your option) any later version.
8  This program is distributed in the hope that it will be useful,
9  but WITHOUT ANY WARRANTY; without even the implied warranty of
10  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  GNU General Public License for more details.
12  You should have received a copy of the GNU General Public License
13  along with this program; if not, write to the Free Software Foundation,
14  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
15 
16  Authors :
17  * Manos Tsardoulias, etsardou@gmail.com
18  * Aris Thallas, aris.thallas@gmail.com
19  * Chris Zalidis, zalidis@gmail.com
20 ******************************************************************************/
21 
22 #include "stdr_gui/stdr_tools.h"
23 
24 namespace stdr_gui_tools
25 {
31  std::string getRosPackagePath(std::string package)
32  {
33  return ros::package::getPath(package.c_str());
34  }
35 
41  float angleRadToDegrees(float angle)
42  {
43  return angle * 180.0 / STDR_PI;
44  }
45 
51  float angleDegreesToRad(float angle)
52  {
53  return angle / 180.0 * STDR_PI;
54  }
55 
61  QString getLiteralTime(int ms)
62  {
63  QString str;
64  int h = ms / (1000 * 60 * 60);
65  int m = ms / (1000 * 60) - h * 60;
66  int s = ms / 1000 - h * 60 * 60 - m * 60;
67  int ms_ = ms - h * 60 * 60 * 1000 - m * 1000 * 60 - s * 1000;
68  if(h)
69  {
70  str += QString().setNum(h) + QString(" h ");
71  }
72  if(m || h)
73  {
74  str += QString().setNum(m) + QString(" min ");
75  }
76  if(s || h || m)
77  {
78  str += QString().setNum(s) + QString(" sec ");
79  }
80  if(ms_ || s || h || m)
81  {
82  str += QString().setNum(ms_) + QString(" ms");
83  }
84  return str;
85  }
86 
92  void printSonarMsg(stdr_msgs::SonarSensorMsg &msg)
93  {
94  ROS_ERROR("Sonar sensor msg :");
95  ROS_ERROR("\tMax range : %f",msg.maxRange);
96  ROS_ERROR("\tMin range : %f",msg.minRange);
97  ROS_ERROR("\tCone angle : %f",msg.coneAngle);
98  ROS_ERROR("\tFrequency : %f",msg.frequency);
99  ROS_ERROR("\tNoise :");
100  ROS_ERROR("\t\tMean : %f",msg.noise.noiseMean);
101  ROS_ERROR("\t\tStd : %f",msg.noise.noiseStd);
102  ROS_ERROR("\tFrame id : %s",msg.frame_id.c_str());
103  ROS_ERROR("\tRelative pose :");
104  ROS_ERROR("\t\tx : %f",msg.pose.x);
105  ROS_ERROR("\t\ty : %f",msg.pose.y);
106  ROS_ERROR("\t\ttheta : %f",msg.pose.theta);
107  }
108 
114  void printLaserMsg(stdr_msgs::LaserSensorMsg &msg)
115  {
116  ROS_ERROR("Laser sensor msg :");
117  ROS_ERROR("\tMax range : %f",msg.maxRange);
118  ROS_ERROR("\tMin range : %f",msg.minRange);
119  ROS_ERROR("\tMax angle : %f",msg.maxAngle);
120  ROS_ERROR("\tMin angle : %f",msg.minAngle);
121  ROS_ERROR("\tFrequency : %f",msg.frequency);
122  ROS_ERROR("\tNoise :");
123  ROS_ERROR("\t\tMean : %f",msg.noise.noiseMean);
124  ROS_ERROR("\t\tStd : %f",msg.noise.noiseStd);
125  ROS_ERROR("\tFrame id : %s",msg.frame_id.c_str());
126  ROS_ERROR("\tRelative pose :");
127  ROS_ERROR("\t\tx : %f",msg.pose.x);
128  ROS_ERROR("\t\ty : %f",msg.pose.y);
129  ROS_ERROR("\t\ttheta : %f",msg.pose.theta);
130  }
131 
137  void printPose2D(geometry_msgs::Pose2D &msg)
138  {
139  ROS_ERROR("Pose 2D :");
140  ROS_ERROR("\tx : %f",msg.x);
141  ROS_ERROR("\ty : %f",msg.y);
142  ROS_ERROR("\ttheta : %f",msg.theta);
143  }
144 
150  stdr_msgs::RobotMsg fixRobotAnglesToRad(stdr_msgs::RobotMsg rmsg)
151  {
152  rmsg.initialPose.theta =
153  rmsg.initialPose.theta / 180.0 * STDR_PI;
154  for(unsigned int i = 0 ; i < rmsg.laserSensors.size() ; i++)
155  {
156  rmsg.laserSensors[i].maxAngle =
157  rmsg.laserSensors[i].maxAngle / 180.0 * STDR_PI;
158  rmsg.laserSensors[i].minAngle =
159  rmsg.laserSensors[i].minAngle / 180.0 * STDR_PI;
160  rmsg.laserSensors[i].pose.theta =
161  rmsg.laserSensors[i].pose.theta / 180.0 * STDR_PI;
162  }
163  for(unsigned int i = 0 ; i < rmsg.sonarSensors.size() ; i++)
164  {
165  rmsg.sonarSensors[i].coneAngle =
166  rmsg.sonarSensors[i].coneAngle / 180.0 * STDR_PI;
167  rmsg.sonarSensors[i].pose.theta =
168  rmsg.sonarSensors[i].pose.theta / 180.0 * STDR_PI;
169  }
170  for(unsigned int i = 0 ; i < rmsg.rfidSensors.size() ; i++)
171  {
172  rmsg.rfidSensors[i].angleSpan =
173  rmsg.rfidSensors[i].angleSpan / 180.0 * STDR_PI;
174  rmsg.rfidSensors[i].pose.theta =
175  rmsg.rfidSensors[i].pose.theta / 180.0 * STDR_PI;
176  }
177  for(unsigned int i = 0 ; i < rmsg.co2Sensors.size() ; i++)
178  {
179  //~ rmsg.co2Sensors[i].angleSpan =
180  //~ rmsg.co2Sensors[i].angleSpan / 180.0 * STDR_PI;
181  rmsg.co2Sensors[i].pose.theta =
182  rmsg.co2Sensors[i].pose.theta / 180.0 * STDR_PI;
183  }
184  for(unsigned int i = 0 ; i < rmsg.thermalSensors.size() ; i++)
185  {
186  rmsg.thermalSensors[i].angleSpan =
187  rmsg.thermalSensors[i].angleSpan / 180.0 * STDR_PI;
188  rmsg.thermalSensors[i].pose.theta =
189  rmsg.thermalSensors[i].pose.theta / 180.0 * STDR_PI;
190  }
191  for(unsigned int i = 0 ; i < rmsg.soundSensors.size() ; i++)
192  {
193  rmsg.soundSensors[i].angleSpan =
194  rmsg.soundSensors[i].angleSpan / 180.0 * STDR_PI;
195  rmsg.soundSensors[i].pose.theta =
196  rmsg.soundSensors[i].pose.theta / 180.0 * STDR_PI;
197  }
198  return rmsg;
199  }
200 
206  stdr_msgs::RobotMsg fixRobotAnglesToDegrees(stdr_msgs::RobotMsg rmsg)
207  {
208  rmsg.initialPose.theta =
209  rmsg.initialPose.theta * 180.0 / STDR_PI;
210  for(unsigned int i = 0 ; i < rmsg.laserSensors.size() ; i++)
211  {
212  rmsg.laserSensors[i].maxAngle =
213  rmsg.laserSensors[i].maxAngle * 180.0 / STDR_PI;
214  rmsg.laserSensors[i].minAngle =
215  rmsg.laserSensors[i].minAngle * 180.0 / STDR_PI;
216  rmsg.laserSensors[i].pose.theta =
217  rmsg.laserSensors[i].pose.theta * 180.0 / STDR_PI;
218  }
219  for(unsigned int i = 0 ; i < rmsg.sonarSensors.size() ; i++)
220  {
221  rmsg.sonarSensors[i].coneAngle =
222  rmsg.sonarSensors[i].coneAngle * 180.0 / STDR_PI;
223  rmsg.sonarSensors[i].pose.theta =
224  rmsg.sonarSensors[i].pose.theta * 180.0 / STDR_PI;
225  }
226  for(unsigned int i = 0 ; i < rmsg.rfidSensors.size() ; i++)
227  {
228  rmsg.rfidSensors[i].angleSpan =
229  rmsg.rfidSensors[i].angleSpan * 180.0 / STDR_PI;
230  rmsg.rfidSensors[i].pose.theta =
231  rmsg.rfidSensors[i].pose.theta * 180.0 / STDR_PI;
232  }
233  for(unsigned int i = 0 ; i < rmsg.co2Sensors.size() ; i++)
234  {
235  //~ rmsg.rfidSensors[i].angleSpan =
236  //~ rmsg.rfidSensors[i].angleSpan * 180.0 / STDR_PI;
237  rmsg.co2Sensors[i].pose.theta =
238  rmsg.co2Sensors[i].pose.theta * 180.0 / STDR_PI;
239  }
240  for(unsigned int i = 0 ; i < rmsg.thermalSensors.size() ; i++)
241  {
242  rmsg.thermalSensors[i].angleSpan =
243  rmsg.thermalSensors[i].angleSpan * 180.0 / STDR_PI;
244  rmsg.thermalSensors[i].pose.theta =
245  rmsg.thermalSensors[i].pose.theta * 180.0 / STDR_PI;
246  }
247  for(unsigned int i = 0 ; i < rmsg.soundSensors.size() ; i++)
248  {
249  rmsg.soundSensors[i].angleSpan =
250  rmsg.soundSensors[i].angleSpan * 180.0 / STDR_PI;
251  rmsg.soundSensors[i].pose.theta =
252  rmsg.soundSensors[i].pose.theta * 180.0 / STDR_PI;
253  }
254  return rmsg;
255  }
256 
262  stdr_msgs::LaserSensorMsg fixLaserAnglesToRad(stdr_msgs::LaserSensorMsg rmsg)
263  {
264  rmsg.maxAngle = rmsg.maxAngle / 180.0 * STDR_PI;
265  rmsg.minAngle = rmsg.minAngle / 180.0 * STDR_PI;
266  rmsg.pose.theta = rmsg.pose.theta / 180.0 * STDR_PI;
267  return rmsg;
268  }
269 
275  stdr_msgs::LaserSensorMsg fixLaserAnglesToDegrees(stdr_msgs::LaserSensorMsg rmsg)
276  {
277  rmsg.maxAngle = rmsg.maxAngle * 180.0 / STDR_PI;
278  rmsg.minAngle = rmsg.minAngle * 180.0 / STDR_PI;
279  rmsg.pose.theta = rmsg.pose.theta * 180.0 / STDR_PI;
280  return rmsg;
281  }
282 
288  stdr_msgs::SonarSensorMsg fixSonarAnglesToRad(stdr_msgs::SonarSensorMsg rmsg)
289  {
290  rmsg.coneAngle = rmsg.coneAngle / 180.0 * STDR_PI;
291  rmsg.pose.theta = rmsg.pose.theta / 180.0 * STDR_PI;
292  return rmsg;
293  }
294 
300  stdr_msgs::SonarSensorMsg fixSonarAnglesToDegrees(
301  stdr_msgs::SonarSensorMsg rmsg)
302  {
303  rmsg.coneAngle = rmsg.coneAngle * 180.0 / STDR_PI;
304  rmsg.pose.theta = rmsg.pose.theta * 180.0 / STDR_PI;
305  return rmsg;
306  }
307 
313  stdr_msgs::RfidSensorMsg fixRfidAnglesToRad(stdr_msgs::RfidSensorMsg rmsg)
314  {
315  rmsg.angleSpan = rmsg.angleSpan / 180.0 * STDR_PI;
316  rmsg.pose.theta = rmsg.pose.theta / 180.0 * STDR_PI;
317  return rmsg;
318  }
319 
325  stdr_msgs::RfidSensorMsg fixRfidAnglesToDegrees(
326  stdr_msgs::RfidSensorMsg rmsg)
327  {
328  rmsg.angleSpan = rmsg.angleSpan * 180.0 / STDR_PI;
329  rmsg.pose.theta = rmsg.pose.theta * 180.0 / STDR_PI;
330  return rmsg;
331  }
332 
336  stdr_msgs::CO2SensorMsg fixCO2AnglesToRad(stdr_msgs::CO2SensorMsg rmsg)
337  {
338  //~ rmsg.angleSpan = rmsg.angleSpan / 180.0 * STDR_PI;
339  rmsg.pose.theta = rmsg.pose.theta / 180.0 * STDR_PI;
340  return rmsg;
341  }
342 
346  stdr_msgs::CO2SensorMsg fixCO2AnglesToDegrees(
347  stdr_msgs::CO2SensorMsg rmsg)
348  {
349  //~ rmsg.angleSpan = rmsg.angleSpan * 180.0 / STDR_PI;
350  rmsg.pose.theta = rmsg.pose.theta * 180.0 / STDR_PI;
351  return rmsg;
352  }
353 
357  stdr_msgs::ThermalSensorMsg fixThermalAnglesToRad(stdr_msgs::ThermalSensorMsg rmsg)
358  {
359  rmsg.angleSpan = rmsg.angleSpan / 180.0 * STDR_PI;
360  rmsg.pose.theta = rmsg.pose.theta / 180.0 * STDR_PI;
361  return rmsg;
362  }
363 
367  stdr_msgs::ThermalSensorMsg fixThermalAnglesToDegrees(
368  stdr_msgs::ThermalSensorMsg rmsg)
369  {
370  rmsg.angleSpan = rmsg.angleSpan * 180.0 / STDR_PI;
371  rmsg.pose.theta = rmsg.pose.theta * 180.0 / STDR_PI;
372  return rmsg;
373  }
374 
378  stdr_msgs::SoundSensorMsg fixSoundAnglesToRad(stdr_msgs::SoundSensorMsg rmsg)
379  {
380  rmsg.angleSpan = rmsg.angleSpan / 180.0 * STDR_PI;
381  rmsg.pose.theta = rmsg.pose.theta / 180.0 * STDR_PI;
382  return rmsg;
383  }
384 
388  stdr_msgs::SoundSensorMsg fixSoundAnglesToDegrees(
389  stdr_msgs::SoundSensorMsg rmsg)
390  {
391  rmsg.angleSpan = rmsg.angleSpan * 180.0 / STDR_PI;
392  rmsg.pose.theta = rmsg.pose.theta * 180.0 / STDR_PI;
393  return rmsg;
394  }
395 }
std::string getRosPackagePath(std::string package)
Returns the global path of the ROS package provided.
Definition: stdr_tools.cpp:31
stdr_msgs::CO2SensorMsg fixCO2AnglesToRad(stdr_msgs::CO2SensorMsg rmsg)
Angle conversion.
Definition: stdr_tools.cpp:336
QString getLiteralTime(int ms)
Transforms the milliseconds in literal representation.
Definition: stdr_tools.cpp:61
stdr_msgs::RobotMsg fixRobotAnglesToDegrees(stdr_msgs::RobotMsg rmsg)
Takes a stdr_msgs::RobotMsg and converts its angles to degrees.
Definition: stdr_tools.cpp:206
XmlRpcServer s
stdr_msgs::RfidSensorMsg fixRfidAnglesToDegrees(stdr_msgs::RfidSensorMsg rmsg)
Takes a stdr_msgs::RfidSensorMsg and converts its angles to degrees.
Definition: stdr_tools.cpp:325
stdr_msgs::SoundSensorMsg fixSoundAnglesToDegrees(stdr_msgs::SoundSensorMsg rmsg)
Angle conversion.
Definition: stdr_tools.cpp:388
stdr_msgs::ThermalSensorMsg fixThermalAnglesToRad(stdr_msgs::ThermalSensorMsg rmsg)
Angle conversion.
Definition: stdr_tools.cpp:357
stdr_msgs::LaserSensorMsg fixLaserAnglesToDegrees(stdr_msgs::LaserSensorMsg rmsg)
Takes a stdr_msgs::LaserSensorMsg and converts its angles to degrees.
Definition: stdr_tools.cpp:275
stdr_msgs::RfidSensorMsg fixRfidAnglesToRad(stdr_msgs::RfidSensorMsg rmsg)
Takes a stdr_msgs::RfidSensorMsg and converts its angles to rads.
Definition: stdr_tools.cpp:313
stdr_msgs::LaserSensorMsg fixLaserAnglesToRad(stdr_msgs::LaserSensorMsg rmsg)
Takes a stdr_msgs::LaserSensorMsg and converts its angles to rads.
Definition: stdr_tools.cpp:262
void printSonarMsg(stdr_msgs::SonarSensorMsg &msg)
Prints a sonar msg.
Definition: stdr_tools.cpp:92
stdr_msgs::SonarSensorMsg fixSonarAnglesToDegrees(stdr_msgs::SonarSensorMsg rmsg)
Takes a stdr_msgs::SonarSensorMsg and converts its angles to degrees.
Definition: stdr_tools.cpp:300
float angleDegreesToRad(float angle)
Converts an angle from degrees to rads.
Definition: stdr_tools.cpp:51
The namespace for STDR GUI tools.
stdr_msgs::RobotMsg fixRobotAnglesToRad(stdr_msgs::RobotMsg rmsg)
Takes a stdr_msgs::RobotMsg and converts its angles to rads.
Definition: stdr_tools.cpp:150
#define STDR_PI
Definition: stdr_tools.h:100
stdr_msgs::SonarSensorMsg fixSonarAnglesToRad(stdr_msgs::SonarSensorMsg rmsg)
Takes a stdr_msgs::SonarSensorMsg and converts its angles to rads.
Definition: stdr_tools.cpp:288
stdr_msgs::CO2SensorMsg fixCO2AnglesToDegrees(stdr_msgs::CO2SensorMsg rmsg)
Angle conversion.
Definition: stdr_tools.cpp:346
ROSLIB_DECL std::string getPath(const std::string &package_name)
float angleRadToDegrees(float angle)
Converts an angle from rads to degrees.
Definition: stdr_tools.cpp:41
void printLaserMsg(stdr_msgs::LaserSensorMsg &msg)
Prints a laser msg.
Definition: stdr_tools.cpp:114
stdr_msgs::ThermalSensorMsg fixThermalAnglesToDegrees(stdr_msgs::ThermalSensorMsg rmsg)
Angle conversion.
Definition: stdr_tools.cpp:367
stdr_msgs::SoundSensorMsg fixSoundAnglesToRad(stdr_msgs::SoundSensorMsg rmsg)
Angle conversion.
Definition: stdr_tools.cpp:378
void printPose2D(geometry_msgs::Pose2D &msg)
Prints a ROS pose2d msg.
Definition: stdr_tools.cpp:137
#define ROS_ERROR(...)


stdr_gui
Author(s): Manos Tsardoulias
autogenerated on Mon Jun 10 2019 15:15:17