Class
List
Hierarchy
Modules
Common
Events
Math
Messages
Physics
Rendering
Sensors
Transport
Links
Gazebo Website
Wiki
Tutorials
Download
Report Documentation Issues
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
gazebo
sensors
RaySensor.hh
Go to the documentation of this file.
1
/*
2
* Copyright 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
/* Desc: RaySensor proximity sensor
18
* Author: Nate Koenig
19
* Date: 23 february 2004
20
*/
21
22
#ifndef _RAYSENSOR_HH_
23
#define _RAYSENSOR_HH_
24
25
#include <vector>
26
#include <string>
27
28
#include "
gazebo/math/Angle.hh
"
29
#include "
gazebo/math/Pose.hh
"
30
#include "
gazebo/transport/TransportTypes.hh
"
31
#include "
gazebo/sensors/Sensor.hh
"
32
33
namespace
gazebo
34
{
35
class
OgreDynamicLines;
36
class
Collision;
37
class
MultiRayShape;
38
41
namespace
sensors
42
{
45
52
class
RaySensor
:
public
Sensor
53
{
55
public
:
RaySensor
();
56
58
public
:
virtual
~RaySensor
();
59
60
// Documentation inherited
61
public
:
virtual
void
Load
(
const
std::string &_worldName);
62
63
// Documentation inherited
64
public
:
virtual
void
Init
();
65
66
// Documentation inherited
67
protected
:
virtual
void
UpdateImpl
(
bool
_force);
68
69
// Documentation inherited
70
protected
:
virtual
void
Fini
();
71
72
// Documentation inherited
73
public
:
virtual
std::string
GetTopic
()
const
;
74
77
public
:
math::Angle
GetAngleMin
()
const
;
78
81
public
:
math::Angle
GetAngleMax
()
const
;
82
85
public
:
double
GetAngleResolution
()
const
;
86
89
public
:
double
GetRangeMin
()
const
;
90
93
public
:
double
GetRangeMax
()
const
;
94
97
public
:
double
GetRangeResolution
()
const
;
98
101
public
:
int
GetRayCount
()
const
;
102
105
public
:
int
GetRangeCount
()
const
;
106
109
public
:
int
GetVerticalRayCount
()
const
;
110
113
public
:
int
GetVerticalRangeCount
()
const
;
114
117
public
:
math::Angle
GetVerticalAngleMin
()
const
;
118
121
public
:
math::Angle
GetVerticalAngleMax
()
const
;
122
132
public
:
double
GetRange
(
int
_index);
133
136
public
:
void
GetRanges
(std::vector<double> &_ranges);
137
147
public
:
double
GetRetro
(
int
_index);
148
158
public
:
int
GetFiducial
(
int
_index);
159
162
public
:
physics::MultiRayShapePtr
GetLaserShape
()
const
163
{
return
this->laserShape;}
164
165
// Documentation inherited
166
public
:
virtual
bool
IsActive
();
167
168
private
:
physics::CollisionPtr
laserCollision;
169
private
:
physics::MultiRayShapePtr
laserShape;
170
private
:
physics::EntityPtr
parentEntity;
171
172
private
:
transport::PublisherPtr
scanPub;
173
private
: boost::mutex mutex;
174
private
: msgs::LaserScanStamped laserMsg;
175
176
// Which noise type we support
177
private
:
enum
NoiseModelType
178
{
179
NONE,
180
GAUSSIAN
181
};
182
// If true, apply the noise model specified by other noise parameters
183
private
:
bool
noiseActive;
184
// Which type of noise we're applying
185
private
:
enum
NoiseModelType noiseType;
186
// If noiseType==GAUSSIAN, noiseMean is the mean of the distibution
187
// from which we sample
188
private
:
double
noiseMean;
189
// If noiseType==GAUSSIAN, noiseStdDev is the standard devation of
190
// the distibution from which we sample
191
private
:
double
noiseStdDev;
192
};
194
}
195
}
196
197
#endif