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
GpuRaySensor.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: Mihai Emanuel Dolha
19
* Date: 29 March 2012
20
*/
21
22
#ifndef _GPURAYSENSOR_HH_
23
#define _GPURAYSENSOR_HH_
24
25
#include <vector>
26
#include <string>
27
#include <boost/thread/mutex.hpp>
28
29
#include "
math/Angle.hh
"
30
#include "
math/Pose.hh
"
31
#include "
transport/TransportTypes.hh
"
32
#include "
sensors/Sensor.hh
"
33
#include "
rendering/RenderTypes.hh
"
34
35
namespace
gazebo
36
{
39
namespace
sensors
40
{
49
class
GpuRaySensor
:
public
Sensor
50
{
52
public
:
GpuRaySensor
();
53
55
public
:
virtual
~GpuRaySensor
();
56
60
public
:
virtual
void
Load
(
const
std::string &_worldName,
61
sdf::ElementPtr
&_sdf);
62
65
public
:
virtual
void
Load
(
const
std::string &_worldName);
66
68
public
:
virtual
void
Init
();
69
72
protected
:
virtual
void
UpdateImpl
(
bool
_force);
73
75
protected
:
virtual
void
Fini
();
76
79
public
:
rendering::GpuLaserPtr
GetLaserCamera
()
const
80
{
return
this->laserCam;}
81
84
public
:
math::Angle
GetAngleMin
()
const
;
85
88
public
:
void
SetAngleMin
(
double
_angle);
89
92
public
:
math::Angle
GetAngleMax
()
const
;
93
96
public
:
void
SetAngleMax
(
double
_angle);
97
99
public
:
double
GetAngleResolution
()
const
;
100
103
public
:
double
GetRangeMin
()
const
;
104
107
public
:
double
GetRangeMax
()
const
;
108
116
public
:
double
GetRangeResolution
()
const
;
117
120
public
:
int
GetRayCount
()
const
;
121
124
public
:
int
GetRangeCount
()
const
;
125
128
public
:
int
GetVerticalRayCount
()
const
;
129
132
public
:
int
GetVerticalRangeCount
()
const
;
133
136
public
:
math::Angle
GetVerticalAngleMin
()
const
;
137
140
public
:
void
SetVerticalAngleMin
(
double
_angle);
141
144
public
:
math::Angle
GetVerticalAngleMax
()
const
;
145
148
public
:
void
SetVerticalAngleMax
(
double
_angle);
149
159
public
:
double
GetRange
(
int
_index);
160
163
public
:
void
GetRanges
(std::vector<double> &_ranges)
const
;
164
174
public
:
double
GetRetro
(
int
_index)
const
;
175
185
public
:
int
GetFiducial
(
int
_index)
const
;
186
189
public
:
unsigned
int
GetCameraCount
()
const
;
190
193
public
:
bool
IsHorizontal
()
const
;
194
201
public
:
double
GetRayCountRatio
()
const
;
202
209
public
:
double
GetRangeCountRatio
()
const
;
210
213
public
:
double
GetHorzFOV
()
const
;
214
217
public
:
double
GetCosHorzFOV
()
const
;
218
220
public
:
double
GetVertFOV
()
const
;
221
224
public
:
double
GetCosVertFOV
()
const
;
225
228
public
:
double
GetHorzHalfAngle
()
const
;
229
232
public
:
double
GetVertHalfAngle
()
const
;
233
236
public
:
event::ConnectionPtr
ConnectNewLaserFrame
(
237
boost::function<
void
(
const
float
*,
unsigned
int
,
unsigned
int
,
238
unsigned
int
,
const
std::string &)> _subscriber);
239
242
public
:
void
DisconnectNewLaserFrame
(
event::ConnectionPtr
&_conn);
243
245
protected
:
sdf::ElementPtr
scanElem
;
246
248
protected
:
sdf::ElementPtr
horzElem
;
249
251
protected
:
sdf::ElementPtr
vertElem
;
252
254
protected
:
sdf::ElementPtr
rangeElem
;
255
257
protected
:
sdf::ElementPtr
cameraElem
;
258
260
protected
:
unsigned
int
cameraCount
;
261
263
protected
:
double
hfov
;
264
266
protected
:
double
vfov
;
267
269
protected
:
double
chfov
;
270
272
protected
:
double
cvfov
;
273
275
protected
:
double
horzHalfAngle
;
276
278
protected
:
double
vertHalfAngle
;
279
281
protected
:
double
near
;
282
284
protected
:
double
far
;
285
287
protected
:
unsigned
int
horzRayCount
;
288
290
protected
:
unsigned
int
vertRayCount
;
291
293
protected
:
unsigned
int
horzRangeCount
;
294
296
protected
:
unsigned
int
vertRangeCount
;
297
299
protected
:
double
rayCountRatio
;
300
302
protected
:
double
rangeCountRatio
;
303
305
protected
:
bool
isHorizontal
;
306
308
private
:
rendering::GpuLaserPtr
laserCam;
309
311
private
:
rendering::ScenePtr
scene;
312
314
private
: boost::mutex mutex;
315
317
private
: msgs::LaserScan laserMsg;
318
};
320
}
321
}
322
#endif