ServerFixture.hh
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012 Open Source Robotics Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16 */
17 #ifndef _GAZEBO_SERVER_FIXTURE_HH_
18 #define _GAZEBO_SERVER_FIXTURE_HH_
19 
20 #pragma GCC diagnostic ignored "-Wswitch-default"
21 #pragma GCC diagnostic ignored "-Wfloat-equal"
22 #pragma GCC diagnostic ignored "-Wshadow"
23 
24 // The following is needed to enable the GetMemInfo function for OSX
25 #ifdef __MACH__
26 # include <mach/mach.h>
27 #endif // __MACH__
28 
29 #include <sdf/sdf.hh>
30 
31 #include <gtest/gtest.h>
32 #include <boost/thread.hpp>
33 #include <mutex>
34 #include <boost/filesystem.hpp>
35 
36 #include <map>
37 #include <string>
38 #include <vector>
39 
40 #include <ignition/math/Pose3.hh>
41 #include <ignition/math/SignalStats.hh>
42 #include <ignition/math/Vector3Stats.hh>
43 
44 #include "gazebo/transport/transport.hh"
45 
48 #include "gazebo/common/Console.hh"
49 #include "gazebo/physics/World.hh"
52 #include "gazebo/sensors/sensors.hh"
53 #include "gazebo/rendering/rendering.hh"
54 #include "gazebo/msgs/msgs.hh"
55 
56 #include "gazebo/gazebo_config.h"
57 #include "gazebo/Server.hh"
58 #include "gazebo/util/system.hh"
59 
60 #include "test_config.h"
61 
62 namespace gazebo
63 {
64  std::string custom_exec(std::string _cmd);
65 
66  class ServerFixture : public testing::Test
67  {
69  protected: ServerFixture();
70 
72  protected: virtual ~ServerFixture();
73 
75  protected: virtual void TearDown();
76 
78  protected: virtual void Unload();
79 
82  protected: virtual void Load(const std::string &_worldFilename);
83 
88  protected: virtual void Load(const std::string &_worldFilename,
89  bool _paused);
90 
98  protected: virtual void Load(const std::string &_worldFilename,
99  bool _paused, const std::string &_physics,
100  const std::vector<std::string> &_systemPlugins = {});
101 
106  protected: virtual void LoadArgs(const std::string &_args);
107 
112  protected: void RunServer(const std::vector<std::string> &_args);
113 
117  const std::string &_sceneName = "default");
118 
121  protected: void OnStats(ConstWorldStatisticsPtr &_msg);
122 
124  protected: void SetPause(bool _pause);
125 
128  protected: double GetPercentRealTime() const;
129 
133  protected: void OnPose(ConstPosesStampedPtr &_msg);
134 
138  protected: ignition::math::Pose3d EntityPose(
139  const std::string &_name);
140 
144  protected: bool HasEntity(const std::string &_name);
145 
152  protected: void PrintImage(const std::string &_name, unsigned char **_image,
153  unsigned int _width, unsigned int _height,
154  unsigned int _depth);
155 
160  protected: void PrintScan(const std::string &_name, double *_scan,
161  unsigned int _sampleCount);
162 
171  protected: void FloatCompare(float *_scanA, float *_scanB,
172  unsigned int _sampleCount, float &_diffMax,
173  float &_diffSum, float &_diffAvg);
174 
183  protected: void DoubleCompare(double *_scanA, double *_scanB,
184  unsigned int _sampleCount, double &_diffMax,
185  double &_diffSum, double &_diffAvg);
186 
196  protected: void ImageCompare(unsigned char *_imageA,
197  unsigned char *_imageB,
198  unsigned int _width, unsigned int _height,
199  unsigned int _depth,
200  unsigned int &_diffMax, unsigned int &_diffSum,
201  double &_diffAvg);
202 
209  private: void OnNewFrame(const unsigned char *_image,
210  unsigned int _width, unsigned int _height,
211  unsigned int _depth,
212  const std::string &/*_format*/);
213 
219  protected: void GetFrame(const std::string &_cameraName,
220  unsigned char **_imgData, unsigned int &_width,
221  unsigned int &_height);
222 
226  protected: physics::ModelPtr SpawnModel(const msgs::Model &_msg);
227 
232  protected: template<typename T>
233  static void CheckPointer(boost::shared_ptr<T> _ptr)
234  {
235  ASSERT_TRUE(_ptr != NULL);
236  }
237 
259  protected: void SpawnCamera(const std::string &_modelName,
260  const std::string &_cameraName,
261  const ignition::math::Vector3d &_pos =
262  ignition::math::Vector3d::Zero,
263  const ignition::math::Vector3d &_rpy =
264  ignition::math::Vector3d::Zero,
265  unsigned int _width = 320, unsigned int _height = 240,
266  double _rate = 25,
267  const std::string &_noiseType = "",
268  double _noiseMean = 0.0, double _noiseStdDev = 0.0,
269  bool _distortion = false, double _distortionK1 = 0.0,
270  double _distortionK2 = 0.0, double _distortionK3 = 0.0,
271  double _distortionP1 = 0.0, double _distortionP2 = 0.0,
272  double _cx = 0.5, double _cy = 0.5,
273  bool _legacyMode = true,
274  double _horizontalFov = 0.78539816339744828);
275 
299  protected: void SpawnWideAngleCamera(const std::string &_modelName,
300  const std::string &_cameraName,
301  const ignition::math::Vector3d &_pos =
302  ignition::math::Vector3d::Zero,
303  const ignition::math::Vector3d &_rpy =
304  ignition::math::Vector3d::Zero,
305  unsigned int _width = 320,
306  unsigned int _height = 240,
307  double _rate = 25,
308  const double _hfov = 60,
309  const std::string &_lensType = "stereographic",
310  const bool _scaleToHfov = true,
311  const double _cutoffAngle = 3.1415,
312  const double _envTextureSize = 512,
313  const double _c1 = 1.05, const double _c2 = 4,
314  const double _f = 1.0,
315  const std::string &_fun = "tan");
316 
332  protected: void SpawnRaySensor(const std::string &_modelName,
333  const std::string &_raySensorName,
334  const ignition::math::Vector3d &_pos =
335  ignition::math::Vector3d::Zero,
336  const ignition::math::Vector3d &_rpy =
337  ignition::math::Vector3d::Zero,
338  double _hMinAngle = -2.0, double _hMaxAngle = 2.0,
339  double _vMinAngle = -1.0, double _vMaxAngle = 1.0,
340  double _minRange = 0.08, double _maxRange = 10,
341  double _rangeResolution = 0.01, unsigned int _samples = 640,
342  unsigned int _vSamples = 1, double _hResolution = 1.0,
343  double _vResolution = 1.0,
344  const std::string &_noiseType = "", double _noiseMean = 0.0,
345  double _noiseStdDev = 0.0);
346 
354  protected: sensors::SonarSensorPtr SpawnSonar(const std::string &_modelName,
355  const std::string &_sonarName,
356  const ignition::math::Pose3d &_pose,
357  const double _minRange,
358  const double _maxRange,
359  const double _radius);
360 
375  protected: void SpawnGpuRaySensor(const std::string &_modelName,
376  const std::string &_raySensorName,
377  const ignition::math::Vector3d &_pos =
378  ignition::math::Vector3d::Zero,
379  const ignition::math::Vector3d &_rpy =
380  ignition::math::Vector3d::Zero,
381  double _hMinAngle = -2.0, double _hMaxAngle = 2.0,
382  double _minRange = 0.08, double _maxRange = 10,
383  double _rangeResolution = 0.01, unsigned int _samples = 640,
384  const std::string &_noiseType = "", double _noiseMean = 0.0,
385  double _noiseStdDev = 0.0);
386 
406  protected: void SpawnGpuRaySensorVertical(const std::string &_modelName,
407  const std::string &_raySensorName,
408  const ignition::math::Vector3d &_pos,
409  const ignition::math::Vector3d &_rpy,
410  double _hMinAngle = -2.0, double _hMaxAngle = 2.0,
411  double _vMinAngle = -1.0, double _vMaxAngle = 1.0,
412  double _minRange = 0.08, double _maxRange = 10,
413  double _rangeResolution = 0.01, unsigned int _samples = 640,
414  unsigned int _vSamples = 1, double _hResolution = 1.0,
415  double _vResolution = 1.0,
416  const std::string &_noiseType = "", double _noiseMean = 0.0,
417  double _noiseStdDev = 0.0);
418 
429  protected: void SpawnDepthCameraSensor(const std::string &_modelName,
430  const std::string &_cameraName,
431  const ignition::math::Vector3d &_pos =
432  ignition::math::Vector3d::Zero,
433  const ignition::math::Vector3d &_rpy =
434  ignition::math::Vector3d::Zero,
435  const unsigned int _width = 320,
436  const unsigned int _height = 240,
437  const double _rate = 25, const double _near = 0.1,
438  const double _far = 10);
439 
453  protected: void SpawnImuSensor(const std::string &_modelName,
454  const std::string &_imuSensorName,
455  const ignition::math::Vector3d &_pos =
456  ignition::math::Vector3d::Zero,
457  const ignition::math::Vector3d &_rpy =
458  ignition::math::Vector3d::Zero,
459  const std::string &_noiseType = "",
460  double _rateNoiseMean = 0.0, double _rateNoiseStdDev = 0.0,
461  double _rateBiasMean = 0.0, double _rateBiasStdDev = 0.0,
462  double _accelNoiseMean = 0.0, double _accelNoiseStdDev = 0.0,
463  double _accelBiasMean = 0.0, double _accelBiasStdDev = 0.0);
464 
472  protected: void SpawnUnitContactSensor(const std::string &_name,
473  const std::string &_sensorName,
474  const std::string &_collisionType,
475  const ignition::math::Vector3d &_pos =
476  ignition::math::Vector3d::Zero,
477  const ignition::math::Vector3d &_rpy =
478  ignition::math::Vector3d::Zero,
479  bool _static = false);
480 
489  protected: void SpawnUnitImuSensor(const std::string &_name,
490  const std::string &_sensorName,
491  const std::string &_collisionType,
492  const std::string &_topic,
493  const ignition::math::Vector3d &_pos =
494  ignition::math::Vector3d::Zero,
495  const ignition::math::Vector3d &_rpy =
496  ignition::math::Vector3d::Zero,
497  bool _static = false);
498 
507  protected: void SpawnUnitAltimeterSensor(const std::string &_name,
508  const std::string &_sensorName,
509  const std::string &_collisionType,
510  const std::string &_topic,
511  const ignition::math::Vector3d &_pos =
512  ignition::math::Vector3d::Zero,
513  const ignition::math::Vector3d &_rpy =
514  ignition::math::Vector3d::Zero,
515  bool _static = false);
516 
525  protected: void SpawnUnitMagnetometerSensor(const std::string &_name,
526  const std::string &_sensorName,
527  const std::string &_collisionType,
528  const std::string &_topic,
529  const ignition::math::Vector3d &_pos =
530  ignition::math::Vector3d::Zero,
531  const ignition::math::Vector3d &_rpy =
532  ignition::math::Vector3d::Zero,
533  bool _static = false);
534 
539  private: void launchTimeoutFailure(const char *_logMsg,
540  const int _timeoutCS);
541 
552  protected: void SpawnWirelessTransmitterSensor(const std::string &_name,
553  const std::string &_sensorName,
554  const ignition::math::Vector3d &_pos,
555  const ignition::math::Vector3d &_rpy,
556  const std::string &_essid,
557  double _freq,
558  double _power,
559  double _gain,
560  bool _visualize = true);
561 
573  protected: void SpawnWirelessReceiverSensor(const std::string &_name,
574  const std::string &_sensorName,
575  const ignition::math::Vector3d &_pos,
576  const ignition::math::Vector3d &_rpy,
577  double _minFreq,
578  double _maxFreq,
579  double _power,
580  double _gain,
581  double _sensitivity,
582  bool _visualize = true);
583 
588  protected: void WaitUntilEntitySpawn(const std::string &_name,
589  unsigned int _sleepEach,
590  int _retries);
591 
596  protected: void WaitUntilSensorSpawn(const std::string &_name,
597  unsigned int _sleepEach,
598  int _retries);
599 
605  protected: void WaitUntilIteration(const uint32_t _goalIteration,
606  const int _sleepEach,
607  const int _retries) const;
608 
614  protected: void WaitUntilSimTime(const common::Time &_goalTime,
615  const int _ms,
616  const int _maxRetries) const;
617 
634  protected: void SpawnLight(const std::string &_name,
635  const std::string &_type,
636  const ignition::math::Vector3d &_pos =
637  ignition::math::Vector3d::Zero,
638  const ignition::math::Vector3d &_rpy =
639  ignition::math::Vector3d::Zero,
640  const ignition::math::Color &_diffuse =
641  ignition::math::Color::White,
642  const ignition::math::Color &_specular =
643  ignition::math::Color::White,
644  const ignition::math::Vector3d &_direction =
645  -ignition::math::Vector3d::UnitZ,
646  const double _attenuationRange = 20,
647  const double _attenuationConstant = 0.5,
648  const double _attenuationLinear = 0.01,
649  const double _attenuationQuadratic = 0.001,
650  const double _spotInnerAngle = 0,
651  const double _spotOuterAngle = 0,
652  const double _spotFallOff = 0,
653  const bool _castShadows = true);
654 
660  protected: void SpawnCylinder(const std::string &_name,
661  const ignition::math::Vector3d &_pos =
662  ignition::math::Vector3d::Zero,
663  const ignition::math::Vector3d &_rpy =
664  ignition::math::Vector3d::Zero,
665  bool _static = false);
666 
674  protected: void SpawnSphere(const std::string &_name,
675  const ignition::math::Vector3d &_pos,
676  const ignition::math::Vector3d &_rpy,
677  bool _wait = true, bool _static = false);
678 
688  protected: void SpawnSphere(const std::string &_name,
689  const ignition::math::Vector3d &_pos,
690  const ignition::math::Vector3d &_rpy,
691  const ignition::math::Vector3d &_cog,
692  double _radius = 1.0,
693  bool _wait = true, bool _static = false);
694 
701  protected: void SpawnBox(const std::string &_name,
702  const ignition::math::Vector3d &_size =
703  ignition::math::Vector3d::One,
704  const ignition::math::Vector3d &_pos =
705  ignition::math::Vector3d::Zero,
706  const ignition::math::Vector3d &_rpy =
707  ignition::math::Vector3d::Zero,
708  bool _static = false);
709 
717  protected: void SpawnTrimesh(const std::string &_name,
718  const std::string &_modelPath,
719  const ignition::math::Vector3d &_scale =
720  ignition::math::Vector3d::One,
721  const ignition::math::Vector3d &_pos =
722  ignition::math::Vector3d::Zero,
723  const ignition::math::Vector3d &_rpy =
724  ignition::math::Vector3d::Zero,
725  bool _static = false);
726 
732  protected: void SpawnEmptyLink(const std::string &_name,
733  const ignition::math::Vector3d &_pos =
734  ignition::math::Vector3d::Zero,
735  const ignition::math::Vector3d &_rpy =
736  ignition::math::Vector3d::Zero,
737  bool _static = false);
738 
741  protected: void SpawnModel(const std::string &_filename);
742 
745  protected: void SpawnSDF(const std::string &_sdf);
746 
750  protected: void LoadPlugin(const std::string &_filename,
751  const std::string &_name);
752 
756  protected: physics::ModelPtr GetModel(const std::string &_name);
757 
760  protected: void RemoveModel(const std::string &_name);
761 
764  protected: void RemovePlugin(const std::string &_name);
765 
769  protected: void GetMemInfo(double &_resident, double &_share);
770 
774  protected: std::string GetUniqueString(const std::string &_prefix);
775 
779  protected: void Record(const std::string &_name, const double _data);
780 
784  protected: void Record(const std::string &_prefix,
785  const ignition::math::SignalStats &_stats);
786 
790  protected: void Record(const std::string &_prefix,
791  const ignition::math::Vector3Stats &_stats);
792 
794  protected: Server *server;
795 
797  protected: boost::thread *serverThread;
798 
801 
804 
807 
810 
813 
815  protected: std::map<std::string, ignition::math::Pose3d> poses;
816 
818  protected: std::mutex receiveMutex;
819 
821  private: unsigned char **imgData;
822 
824  private: int gotImage;
825 
828 
830  private: double percentRealTime;
831 
833  private: bool paused;
834 
836  private: bool serverRunning;
837 
839  private: int uniqueCounter;
840  };
841 
843  {
844  // Documentation inherited.
845  public: virtual void SetUp();
846 
847  // Documentation inherited.
848  protected: virtual void Unload();
849  };
850 } // namespace gazebo
851 #endif // define _GAZEBO_SERVER_FIXTURE_HH_
#define NULL
Definition: CommonTypes.hh:31
default namespace for gazebo
Definition: ServerFixture.hh:843
virtual void Unload()
Unload the test fixture.
Definition: ServerFixture.hh:67
void SpawnWirelessTransmitterSensor(const std::string &_name, const std::string &_sensorName, const ignition::math::Vector3d &_pos, const ignition::math::Vector3d &_rpy, const std::string &_essid, double _freq, double _power, double _gain, bool _visualize=true)
Spawn an Wireless transmitter sensor on a link.
virtual void LoadArgs(const std::string &_args)
Load a world in gzserver.
void Record(const std::string &_prefix, const ignition::math::Vector3Stats &_stats)
Helper to record Vector3d signal statistics to gtest xml output.
virtual ~ServerFixture()
Destructor.
boost::thread * serverThread
Pointer the thread the runs the server.
Definition: ServerFixture.hh:797
physics::ModelPtr GetModel(const std::string &_name)
Get a pointer to a model.
void PrintImage(const std::string &_name, unsigned char **_image, unsigned int _width, unsigned int _height, unsigned int _depth)
Print image data to screen.
void Record(const std::string &_name, const double _data)
Helper to record data to gtest xml output.
std::mutex receiveMutex
Mutex to protect data structures that store messages.
Definition: ServerFixture.hh:818
void SpawnUnitAltimeterSensor(const std::string &_name, const std::string &_sensorName, const std::string &_collisionType, const std::string &_topic, const ignition::math::Vector3d &_pos=ignition::math::Vector3d::Zero, const ignition::math::Vector3d &_rpy=ignition::math::Vector3d::Zero, bool _static=false)
Spawn an altimeter sensor on a link.
transport::SubscriberPtr poseSub
Pose subscription.
Definition: ServerFixture.hh:803
void ImageCompare(unsigned char *_imageA, unsigned char *_imageB, unsigned int _width, unsigned int _height, unsigned int _depth, unsigned int &_diffMax, unsigned int &_diffSum, double &_diffAvg)
Function to compare two images.
transport::SubscriberPtr statsSub
World statistics subscription.
Definition: ServerFixture.hh:806
bool HasEntity(const std::string &_name)
Return true if the named entity exists.
void SpawnLight(const std::string &_name, const std::string &_type, const ignition::math::Vector3d &_pos=ignition::math::Vector3d::Zero, const ignition::math::Vector3d &_rpy=ignition::math::Vector3d::Zero, const ignition::math::Color &_diffuse=ignition::math::Color::White, const ignition::math::Color &_specular=ignition::math::Color::White, const ignition::math::Vector3d &_direction=-ignition::math::Vector3d::UnitZ, const double _attenuationRange=20, const double _attenuationConstant=0.5, const double _attenuationLinear=0.01, const double _attenuationQuadratic=0.001, const double _spotInnerAngle=0, const double _spotOuterAngle=0, const double _spotFallOff=0, const bool _castShadows=true)
Spawn a light.
virtual void Load(const std::string &_worldFilename)
Load a world based on a filename.
void RemovePlugin(const std::string &_name)
Remove a plugin.
void SpawnBox(const std::string &_name, const ignition::math::Vector3d &_size=ignition::math::Vector3d::One, const ignition::math::Vector3d &_pos=ignition::math::Vector3d::Zero, const ignition::math::Vector3d &_rpy=ignition::math::Vector3d::Zero, bool _static=false)
Spawn a box.
void SetPause(bool _pause)
Set a running simulation paused/unpaused.
void WaitUntilSimTime(const common::Time &_goalTime, const int _ms, const int _maxRetries) const
Wait for a number of ms.
void SpawnGpuRaySensor(const std::string &_modelName, const std::string &_raySensorName, const ignition::math::Vector3d &_pos=ignition::math::Vector3d::Zero, const ignition::math::Vector3d &_rpy=ignition::math::Vector3d::Zero, double _hMinAngle=-2.0, double _hMaxAngle=2.0, double _minRange=0.08, double _maxRange=10, double _rangeResolution=0.01, unsigned int _samples=640, const std::string &_noiseType="", double _noiseMean=0.0, double _noiseStdDev=0.0)
Spawn a gpu laser.
virtual void Load(const std::string &_worldFilename, bool _paused, const std::string &_physics, const std::vector< std::string > &_systemPlugins={})
Load a world based on a filename and set simulation paused/un-paused, and specify physics engine.
void SpawnDepthCameraSensor(const std::string &_modelName, const std::string &_cameraName, const ignition::math::Vector3d &_pos=ignition::math::Vector3d::Zero, const ignition::math::Vector3d &_rpy=ignition::math::Vector3d::Zero, const unsigned int _width=320, const unsigned int _height=240, const double _rate=25, const double _near=0.1, const double _far=10)
Spawn a depth camera.
void SpawnSphere(const std::string &_name, const ignition::math::Vector3d &_pos, const ignition::math::Vector3d &_rpy, bool _wait=true, bool _static=false)
Spawn a sphere.
void SpawnSphere(const std::string &_name, const ignition::math::Vector3d &_pos, const ignition::math::Vector3d &_rpy, const ignition::math::Vector3d &_cog, double _radius=1.0, bool _wait=true, bool _static=false)
Spawn a sphere.
void SpawnImuSensor(const std::string &_modelName, const std::string &_imuSensorName, const ignition::math::Vector3d &_pos=ignition::math::Vector3d::Zero, const ignition::math::Vector3d &_rpy=ignition::math::Vector3d::Zero, const std::string &_noiseType="", double _rateNoiseMean=0.0, double _rateNoiseStdDev=0.0, double _rateBiasMean=0.0, double _rateBiasStdDev=0.0, double _accelNoiseMean=0.0, double _accelNoiseStdDev=0.0, double _accelBiasMean=0.0, double _accelBiasStdDev=0.0)
Spawn an imu sensor laser.
virtual void Load(const std::string &_worldFilename, bool _paused)
Load a world based on a filename and set simulation paused/un-paused.
ServerFixture()
Constructor.
Server * server
Pointer the Gazebo server.
Definition: ServerFixture.hh:794
transport::NodePtr node
Pointer to a node for communication.
Definition: ServerFixture.hh:800
void FloatCompare(float *_scanA, float *_scanB, unsigned int _sampleCount, float &_diffMax, float &_diffSum, float &_diffAvg)
Function to compare two float arrays (for example two laser scans).
void WaitUntilIteration(const uint32_t _goalIteration, const int _sleepEach, const int _retries) const
Wait for a number of ms.
ignition::math::Pose3d EntityPose(const std::string &_name)
Get the pose of an entity.
void SpawnUnitImuSensor(const std::string &_name, const std::string &_sensorName, const std::string &_collisionType, const std::string &_topic, const ignition::math::Vector3d &_pos=ignition::math::Vector3d::Zero, const ignition::math::Vector3d &_rpy=ignition::math::Vector3d::Zero, bool _static=false)
Spawn an IMU sensor on a link.
void Record(const std::string &_prefix, const ignition::math::SignalStats &_stats)
Helper to record signal statistics to gtest xml output.
void SpawnWideAngleCamera(const std::string &_modelName, const std::string &_cameraName, const ignition::math::Vector3d &_pos=ignition::math::Vector3d::Zero, const ignition::math::Vector3d &_rpy=ignition::math::Vector3d::Zero, unsigned int _width=320, unsigned int _height=240, double _rate=25, const double _hfov=60, const std::string &_lensType="stereographic", const bool _scaleToHfov=true, const double _cutoffAngle=3.1415, const double _envTextureSize=512, const double _c1=1.05, const double _c2=4, const double _f=1.0, const std::string &_fun="tan")
Spawn a wide angle camera.
void SpawnCamera(const std::string &_modelName, const std::string &_cameraName, const ignition::math::Vector3d &_pos=ignition::math::Vector3d::Zero, const ignition::math::Vector3d &_rpy=ignition::math::Vector3d::Zero, unsigned int _width=320, unsigned int _height=240, double _rate=25, const std::string &_noiseType="", double _noiseMean=0.0, double _noiseStdDev=0.0, bool _distortion=false, double _distortionK1=0.0, double _distortionK2=0.0, double _distortionK3=0.0, double _distortionP1=0.0, double _distortionP2=0.0, double _cx=0.5, double _cy=0.5, bool _legacyMode=true, double _horizontalFov=0.78539816339744828)
Spawn a camera.
virtual void Unload()
Unload the test fixture.
void PrintScan(const std::string &_name, double *_scan, unsigned int _sampleCount)
Print laser scan to screen.
void SpawnModel(const std::string &_filename)
Spawn a model from file.
virtual void TearDown()
Tear down the test fixture. This gets called by gtest.
void GetMemInfo(double &_resident, double &_share)
Get the current memory information.
void SpawnGpuRaySensorVertical(const std::string &_modelName, const std::string &_raySensorName, const ignition::math::Vector3d &_pos, const ignition::math::Vector3d &_rpy, double _hMinAngle=-2.0, double _hMaxAngle=2.0, double _vMinAngle=-1.0, double _vMaxAngle=1.0, double _minRange=0.08, double _maxRange=10, double _rangeResolution=0.01, unsigned int _samples=640, unsigned int _vSamples=1, double _hResolution=1.0, double _vResolution=1.0, const std::string &_noiseType="", double _noiseMean=0.0, double _noiseStdDev=0.0)
Spawn a gpu laser.
sensors::SonarSensorPtr SpawnSonar(const std::string &_modelName, const std::string &_sonarName, const ignition::math::Pose3d &_pose, const double _minRange, const double _maxRange, const double _radius)
Spawn a sonar.
void WaitUntilEntitySpawn(const std::string &_name, unsigned int _sleepEach, int _retries)
Wait for a number of ms.
void LoadPlugin(const std::string &_filename, const std::string &_name)
Load a plugin.
void SpawnTrimesh(const std::string &_name, const std::string &_modelPath, const ignition::math::Vector3d &_scale=ignition::math::Vector3d::One, const ignition::math::Vector3d &_pos=ignition::math::Vector3d::Zero, const ignition::math::Vector3d &_rpy=ignition::math::Vector3d::Zero, bool _static=false)
Spawn a triangle mesh.
void RunServer(const std::vector< std::string > &_args)
Run the server.
void OnPose(ConstPosesStampedPtr &_msg)
Function that received poses messages from a running simulation.
transport::PublisherPtr factoryPub
Factory publisher.
Definition: ServerFixture.hh:809
void WaitUntilSensorSpawn(const std::string &_name, unsigned int _sleepEach, int _retries)
Wait for a number of ms.
void SpawnWirelessReceiverSensor(const std::string &_name, const std::string &_sensorName, const ignition::math::Vector3d &_pos, const ignition::math::Vector3d &_rpy, double _minFreq, double _maxFreq, double _power, double _gain, double _sensitivity, bool _visualize=true)
Spawn an Wireless receiver sensor on a link.
std::map< std::string, ignition::math::Pose3d > poses
Map of received poses.
Definition: ServerFixture.hh:815
rendering::ScenePtr GetScene(const std::string &_sceneName="default")
Get a pointer to the rendering scene.
static void CheckPointer(boost::shared_ptr< T > _ptr)
Check that a pointer is not NULL.
Definition: ServerFixture.hh:233
void SpawnRaySensor(const std::string &_modelName, const std::string &_raySensorName, const ignition::math::Vector3d &_pos=ignition::math::Vector3d::Zero, const ignition::math::Vector3d &_rpy=ignition::math::Vector3d::Zero, double _hMinAngle=-2.0, double _hMaxAngle=2.0, double _vMinAngle=-1.0, double _vMaxAngle=1.0, double _minRange=0.08, double _maxRange=10, double _rangeResolution=0.01, unsigned int _samples=640, unsigned int _vSamples=1, double _hResolution=1.0, double _vResolution=1.0, const std::string &_noiseType="", double _noiseMean=0.0, double _noiseStdDev=0.0)
Spawn a laser.
common::Time simTime
Current simulation time, real time, and pause time.
Definition: ServerFixture.hh:827
void GetFrame(const std::string &_cameraName, unsigned char **_imgData, unsigned int &_width, unsigned int &_height)
Get an image frame from a camera.
void SpawnUnitContactSensor(const std::string &_name, const std::string &_sensorName, const std::string &_collisionType, const ignition::math::Vector3d &_pos=ignition::math::Vector3d::Zero, const ignition::math::Vector3d &_rpy=ignition::math::Vector3d::Zero, bool _static=false)
Spawn a contact sensor with the specified collision geometry.
common::Time pauseTime
Definition: ServerFixture.hh:827
void SpawnCylinder(const std::string &_name, const ignition::math::Vector3d &_pos=ignition::math::Vector3d::Zero, const ignition::math::Vector3d &_rpy=ignition::math::Vector3d::Zero, bool _static=false)
Spawn a cylinder.
physics::ModelPtr SpawnModel(const msgs::Model &_msg)
Spawn a model from a msgs::Model and return ModelPtr.
void SpawnSDF(const std::string &_sdf)
Send a factory message based on an SDF string.
transport::PublisherPtr requestPub
Request publisher.
Definition: ServerFixture.hh:812
double GetPercentRealTime() const
Get the real-time factor.
std::string GetUniqueString(const std::string &_prefix)
Get unique string with a specified prefix.
void OnStats(ConstWorldStatisticsPtr &_msg)
Function that received world stastics messages.
void SpawnUnitMagnetometerSensor(const std::string &_name, const std::string &_sensorName, const std::string &_collisionType, const std::string &_topic, const ignition::math::Vector3d &_pos=ignition::math::Vector3d::Zero, const ignition::math::Vector3d &_rpy=ignition::math::Vector3d::Zero, bool _static=false)
Spawn a magnetometer sensor on a link.
void RemoveModel(const std::string &_name)
Remove a model by name.
common::Time realTime
Definition: ServerFixture.hh:827
void DoubleCompare(double *_scanA, double *_scanB, unsigned int _sampleCount, double &_diffMax, double &_diffSum, double &_diffAvg)
Function to compare two double arrays (for example two laser scans).
void SpawnEmptyLink(const std::string &_name, const ignition::math::Vector3d &_pos=ignition::math::Vector3d::Zero, const ignition::math::Vector3d &_rpy=ignition::math::Vector3d::Zero, bool _static=false)
Spawn an empty link.
Definition: Server.hh:42
A Time class, can be used to hold wall- or sim-time.
Definition: Time.hh:48
boost::shared_ptr< Model > ModelPtr
Definition: PhysicsTypes.hh:94
boost::shared_ptr< Scene > ScenePtr
Definition: RenderTypes.hh:82
std::shared_ptr< SonarSensor > SonarSensorPtr
Definition: SensorTypes.hh:112
boost::shared_ptr< Subscriber > SubscriberPtr
Definition: TransportTypes.hh:53
boost::shared_ptr< Publisher > PublisherPtr
Definition: TransportTypes.hh:49
boost::shared_ptr< Node > NodePtr
Definition: TransportTypes.hh:57
Forward declarations for the common classes.
Definition: Animation.hh:27
std::string custom_exec(std::string _cmd)
#define GAZEBO_VISIBLE
Use to represent "symbol visible" if supported.
Definition: system.hh:59