Robotics Library
0.6.0
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
hal
SickLms200.h
Go to the documentation of this file.
1
//
2
// Copyright (c) 2009, Markus Rickert
3
// All rights reserved.
4
//
5
// Redistribution and use in source and binary forms, with or without
6
// modification, are permitted provided that the following conditions are met:
7
//
8
// * Redistributions of source code must retain the above copyright notice,
9
// this list of conditions and the following disclaimer.
10
// * Redistributions in binary form must reproduce the above copyright notice,
11
// this list of conditions and the following disclaimer in the documentation
12
// and/or other materials provided with the distribution.
13
// * Neither the name of the Technische Universitaet Muenchen nor the names of
14
// its contributors may be used to endorse or promote products derived from
15
// this software without specific prior written permission.
16
//
17
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
// POSSIBILITY OF SUCH DAMAGE.
28
//
29
30
#ifndef _RL_HAL_SICKLMS200_H_
31
#define _RL_HAL_SICKLMS200_H_
32
33
#include <
rl/util/Timer.h
>
34
35
#include "
Device.h
"
36
#include "
Lidar.h
"
37
#include "
types.h
"
38
39
namespace
rl
40
{
41
namespace
hal
42
{
43
class
Serial;
44
45
class
SickLms200
:
public
Lidar
46
{
47
public
:
48
enum
BaudRate
49
{
51
BAUDRATE_9600BPS
,
53
BAUDRATE_19200BPS
,
55
#if defined(WIN32) || defined(__QNX__)
56
BAUDRATE_38400BPS
57
#else // defined(WIN32) || defined(__QNX__)
58
BAUDRATE_38400BPS
,
60
BAUDRATE_500000BPS
61
#endif // defined(WIN32) || defined(__QNX__)
62
};
63
64
enum
Measuring
65
{
66
MEASURING_8M
,
67
MEASURING_16M
,
68
MEASURING_32M
,
69
MEASURING_80M
,
70
MEASURING_160M
,
71
MEASURING_320M
72
};
73
74
enum
Monitoring
75
{
76
MONITORING_CONTINUOUS
,
77
MONITORING_SINGLE
78
};
79
80
enum
Variant
81
{
83
VARIANT_100_25
,
85
VARIANT_100_50
,
87
VARIANT_100_100
,
89
VARIANT_180_50
,
91
VARIANT_180_100
92
};
93
97
SickLms200
(
98
const ::std::string& device =
"/dev/ttyS0"
,
99
const
BaudRate
&
baudRate
=
BAUDRATE_9600BPS
,
100
const
Monitoring
&
monitoring
=
MONITORING_SINGLE
,
101
const
Variant
&
variant
=
VARIANT_180_50
,
102
const
Measuring
&
measuring
=
MEASURING_8M
,
103
const ::std::string&
password
=
"SICK_LMS"
104
);
105
106
virtual
~SickLms200
();
107
108
void
close
();
109
110
void
dumpConfiguration
();
111
112
void
dumpStatus
();
113
114
BaudRate
getBaudRate
()
const
;
115
116
void
getDistances
(::
rl::math::Vector
& distances)
const
;
117
118
::std::size_t
getDistancesCount
()
const
;
119
120
::rl::math::Real
getDistancesMaximum
(const ::std::size_t& i)
const
;
121
122
::rl::math::Real
getDistancesMinimum
(const ::std::size_t& i)
const
;
123
124
Measuring
getMeasuring
()
const
;
125
126
Monitoring
getMonitoring
()
const
;
127
128
::rl::math::Real
getResolution
()
const
;
129
130
::rl::math::Real
getStartAngle
()
const
;
131
132
::rl::math::Real
getStopAngle
()
const
;
133
134
::std::string
getType
();
135
136
Variant
getVariant
()
const
;
137
138
void
open
();
139
140
void
reset
();
141
142
void
setBaudRate
(
const
BaudRate
&
baudRate
);
143
144
void
setMeasuring
(
const
Measuring
&
measuring
);
145
146
void
setMonitoring
(
const
Monitoring
&
monitoring
);
147
148
void
setVariant
(
const
Variant
&
variant
);
149
150
void
start
();
151
152
void
step
();
153
154
void
stop
();
155
156
protected
:
157
158
private
:
159
uint16_t
crc
(
const
uint8_t* buf, const ::std::size_t& len)
const
;
160
161
::std::size_t
recv
(uint8_t* buf, const ::std::size_t& len,
const
uint8_t& command);
162
163
void
send
(uint8_t* buf, const ::std::size_t& len);
164
165
bool
waitAck
();
166
167
BaudRate
baudRate
;
168
169
uint8_t
configuration
;
170
171
uint8_t
data
[812];
172
173
BaudRate
desired
;
174
175
Measuring
measuring
;
176
177
Monitoring
monitoring
;
178
179
::std::string
password
;
180
181
Serial
*
serial
;
182
183
::rl::util::Timer
timer
;
184
185
Variant
variant
;
186
};
187
}
188
}
189
190
#endif // _RL_HAL_SICKLMS200_H_
Generated on Mon Dec 10 2012 14:23:33 for Robotics Library by
1.8.1.1