botsense
3.2.0
RoadNarrows Client-Server Proxied Services Framework
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
main.doxy
Go to the documentation of this file.
1
////////////////////////////////////////////////////////////////////////////////
2
//
3
// Package: RoadNarrows BotSense Package
4
//
5
// File: main.doxy
6
//
7
// Description:
8
// This file contains the doxygen directives to generate the main page.
9
//
10
////////////////////////////////////////////////////////////////////////////////
11
12
/*! \file */
13
14
/*! \mainpage RoadNarrows BotSense Package
15
16
\section intro Introduction
17
18
\htmlonly
19
<div style="float:right; border:0; text-align:center;">
20
\endhtmlonly
21
\image html bsFrameWork-Small.png "Figure 1: BotSense Framework"
22
\htmlonly
23
<div style="text-align: center;"><a href="bsFrameWork.png">click to enlarge</a></div>
24
</div>
25
\endhtmlonly
26
27
The \h_botsense software package provides a client-server framework for clients
28
to remotely interface to proxied server devices over IP. Additional proxied
29
devices may be easily added by developers using the open and documented
30
programming interface.
31
32
Figure 1 illustrates the \h_botsense framework. The bsProxy server plus any
33
specific module plug-ins operate on the target system. The target system has
34
direct access to the devices and resources to be proxied. The client
35
applications may running either on or off target.
36
Compiled C/C++ applications are linked to the \h_botsense libraries.
37
Python clients use the modules imported from the BotSense python package.
38
39
\subsection intro_mot Motivation
40
The \h_botsense effort is motivated by the need by RoadNarrows to
41
support diverse robotic systems and remote embedded devices in unified and
42
virtualized framework over the ubiquitous Internet. Client applications using
43
\h_botsense may then be implemented rapidly to a consistent, common, open API.
44
45
\subsection intro_obj Objective
46
The objective is to create an IP-based, open-source, near real-time
47
client-server middleware framework that readily supports multiple computing
48
architectures including embedded processors with limited resources. The proxy
49
server supports concurrent clients. Both request-response and streaming-out
50
message exchange patterns are supported. The extensible framework easily
51
supports application-specific new proxied (pseudo) devices and robotic systems.
52
\subsection intro_horse Some Horse Sense
53
\termblock
54
\term "Common sense is not so common." \termdata - Voltaire \endterm
55
\term "Common sense...Get some!" \termdata - Anonymous \endterm
56
\term "Robot sense...Build some!" \termdata - RoadNarrows \endterm
57
\endtermblock
58
59
60
\page page_arch Architecture
61
The \h_botsense architecture is summarized in the following sections
62
(refer to Figure 2):
63
64
\htmlonly
65
<div style="float:right; border:0; text-align:center;">
66
\endhtmlonly
67
\image html bsArch-Small.png "Figure 2: BotSense Architecture"
68
\htmlonly
69
<div style="text-align: center;"><a href="bsArch.png">click to enlarge</a></div>
70
</div>
71
\endhtmlonly
72
73
\section arch_prj Project Constraints
74
\li Provide open source with well documented and published interfaces.
75
\li Core system written in C to the POSIX compliant interface standards.
76
\li Use the cross-compiler, multi-platform RoadNarrows <b>rnmake</b> make system
77
built around GNU make.
78
\li Use RoadNarrows <b>NetMsgs</b> package for client-server and
79
module-device message XML specifications with auto-code
80
generation.
81
\li Fully doxygen source documentation.
82
\li Provide a Programmer's Guide.
83
\li Use subversion for source control.
84
85
\section arch_core Invariant Core:
86
\li Software written in C to the POSIX compliant interface standards.
87
\li \h_botsense interface moudle plug-ins support multiple languages:\n
88
C, C++, and Python (to be expanded in the future).
89
\li Proxy server and core client library are multi-threaded, multi-client,
90
and real-time optimized.
91
\li Approach is validated by support of legged and wheeled robots and other
92
intelligent devices.
93
94
\section arch_bsproxy BotSense bsProxy Server
95
\li Multi-threaded, multi-client, and real-time optimized.
96
\li Multiple instances can run on one target server – each listening to a
97
different IP port.
98
\li XML configuration file(s).
99
\li 16 clients per bsProxy server (default, configurable).
100
\li 255 virtual connections per bsProxy server.
101
\li Message Exchange Patterns: request-response, stream-out.
102
103
\section arch_libbs BotSense libbotsense Client Library
104
\li Multi-threaded safe, multi-client support, and real-time optimized.
105
\li Automatic receive message ordering.
106
\li Message Exchange Patterns: request-response, stream-out.
107
108
\section arch_plugin Application-Specfic BotSense Plug-Ins
109
\li \h_botsense plug-ins support multiple languages.
110
\li Well defined plug-in interfaces for server.
111
\li \h_botsense Standard Modules:\n
112
raw serial, raw I2C, STREAMS, pipes, shared memory.
113
\li Client-server and plugin-device message XML specifications with auto-code
114
generation.
115
116
\section arch_util RoadNarrows Utilities and Libraries
117
\li RoadNarrows <b>NetMsgs</b> message packing/unpacking auto-code generation
118
package.\n
119
output languages: C, Python;\n
120
byte order: big, little, native;\n
121
encoding: flat, identifier-type-value.\n
122
libnetmsgs – network messaging packing and unpacking library.
123
\li RoadNarrows <b>librnr</b> package – common definitions and functions
124
library.
125
\li RoadNarrows <b>libserial</b> package – RS-232 serial library.
126
\li RoadNarrows <b>libi2c</b> package – I2C library.
127
128
129
130
\page page_pkg Package
131
The RoadNarrows \h_botsense package is a collections of libraries,
132
API header files, applications, and python modules.
133
134
\section pkg_core Core Components
135
\termblock
136
\term bsProxy
137
\termdata The \h_botsense IP proxy server. \endterm
138
\term libbotsense.[so,a]
139
\termdata The \h_botsense client base static and shared libraries. \endterm
140
\term botsense/BotSense.h
141
\termdata \h_botsense package top-level C header file. \endterm
142
\term botsense/libBotSense.h
143
\termdata \h_botsense client base library declarations. \endterm
144
\term botsense/bsProxyModIF.h
145
\termdata \h_botsense bsProxy DLL module interface. \endterm
146
\term bsProxyMsgs.xml
147
\termdata Core server-terminated NetMsg XML specificiation. \endterm
148
\term botsense/bsProxyMsgs.h
149
\termdata \h_botsense core server-terminated, NetMsgs generated
150
message types and declarations. \endterm
151
\endtermblock
152
153
\section pkg_py Python Core BotSense Components
154
\termblock
155
\term BotSense._BotSenseCore
156
\termdata The swigged extended module C library interface to libbotsense.
157
\endterm
158
\term BotSense.BotSenseCore
159
\termdata The swigged raw python module for _BotSenseCore.so \endterm
160
\term BotSense.BotSenseError
161
\termdata \h_botsense exception classes and supporting routines. \endterm
162
\term BotSense.BotSenseTypes
163
\termdata \h_botsense types. \endterm
164
\term BotSense.BotSenseServer
165
\termdata \h_botsense client-server connection and request functions.
166
\endterm
167
\term BotSense.bsProxyMsgs
168
\termdata \h_botsense core server-terminated NetMsgs generated
169
message classes and data. \endterm
170
\endtermblock
171
172
\section pkg_mod Standard PlugIn Modules
173
For each \h_botsense Standard Module, there are a set of module specific
174
components. See \ref bsmod for more details.
175
Given that the module base name is <em>Mod</em> (and <em>mod</em> for all
176
lower case):
177
\termblock
178
\term libbsserver_<em>mod</em>.so
179
\termdata \h_botsense bsProxy server plug-in library. \endterm
180
\term libbsclient_<em>mod</em>.[a,so]
181
\termdata \h_botsense client interface static and shared libraries. \endterm
182
\term botsense/bs<em>Mod</em>.h
183
\termdata Client interface declarations. \endterm
184
\term bs<em>Mod</em>Msgs.xml
185
\termdata Module virtual connection specific NetMsg XML specificiation.
186
\endterm
187
\term botsense/bs<em>Mod</em>Msgs.h
188
\termdata Module-terminated, NetMsgs generated
189
message types and declarations.\endterm
190
\term \h_botsense._bs<em>Mod</em>
191
\termdata The swigged extended module C library interface to
192
libbsclient_<em>mod</em>. \endterm
193
\term \h_botsense.bs<em>Mod</em>
194
\termdata The swigged python module for _bs<em>Mod</em>.so \endterm
195
\term \h_botsense.bs<em>Mod</em>Msgs
196
\termdata \h_botsense module-terminated, NetMsgs generated
197
message classes and data. \endterm
198
\endtermblock
199
200
201
\page page_req Requirements and Dependencies
202
\section req_rn RoadNarrows Required Packages
203
\termblock
204
\term <b>rnmake</b>
205
\termdata RoadNarrows make system package. \endterm
206
\term <b>librnr</b>
207
\termdata RoadNarrows Robotics common libray 1 package. \endterm
208
\term <b>libserial</b>
209
\termdata RoadNarrows Robotics RS-232 serial library package. \endterm
210
\term <b>i2c</b>
211
\termdata RoadNarrows Robotics \h_i2c package. \endterm
212
\term <b>netmsgs</b>
213
\termdata RoadNarrows network messaging code generation and run-time
214
packing/unpacking package. \endterm
215
\endtermblock
216
217
218
\page page_platforms Supported Platforms
219
Validation through Experience
220
221
\section platform_proxied Proxied Platforms
222
The list current and planned near-term proxied hardware supported
223
by \h_botsense are itemized below.
224
225
\subsection plat_prox_sz RoadNarrows SkewlZone Legged Robots
226
\htmlonly
227
<div style="float:left; border:0; text-align:center;">
228
\endhtmlonly
229
\image html RN-SZ-Pack-100.png
230
\htmlonly
231
</div>
232
\endhtmlonly
233
The RoadNarrows SkewlZone\h_tm robots are installed the SkewlZone Brain and
234
Sensor pack. The "brain" is the K-Team's KoreBot2\h_tm board
235
containing the gumstix Verdex\h_tm Pro PXA270 Arm process running Angsrom linux.
236
The bsProxy runs on the KoreBot2 with IP over WiFi for off-target clients.
237
interactions. Proxied devices are the SkewlZone \h_i2c smart sensors plus
238
the robot's manufacture's controller board (usually interfaced through a
239
serial interface).
240
\htmlonly
241
<div style="clear:both;">
242
</div>
243
\endhtmlonly
244
245
\subsection plat_prox_rs RoadNarrows RoboSight
246
\htmlonly
247
<div style="float:left; border:0; text-align:center;">
248
\endhtmlonly
249
\image html RN-RS-100.png
250
\htmlonly
251
</div>
252
\endhtmlonly
253
The RoadNarrows RoboSight\h_tm neural-network camera. The bsProxy does not
254
execute on the RoboSights PIC processor, but rather on any supported
255
target computing architecture with a serial connection to the RoboSight(s).
256
\htmlonly
257
<div style="clear:both;">
258
</div>
259
\endhtmlonly
260
261
\subsection plat_prox_k3 K-Team's Khepera III
262
\htmlonly
263
<div style="float:left; border:0; text-align:center;">
264
\endhtmlonly
265
\image html RN-K3-100.png
266
\htmlonly
267
</div>
268
\endhtmlonly
269
K-Team's Khepera\h_tm III robot with an installed KoreBot2.
270
The bsProxy running on the KoreBot2 supports proxied interfaces for the
271
Khepera III's motors, odometry, IR sensors, UltraSonic sensors, plus any other
272
RoadNarrows supported sensors.
273
The remote bsProxy interfaces are IP over WiFi for off-target clients.
274
\htmlonly
275
<div style="clear:both;">
276
</div>
277
\endhtmlonly
278
279
\subsection plat_prox_koa K-Team's Koala
280
\htmlonly
281
<div style="float:left; border:0; text-align:center;">
282
\endhtmlonly
283
\image html RN-Koa-100.png
284
\htmlonly
285
</div>
286
\endhtmlonly
287
K-Team's Koala robot with an installed KoreBot2.
288
The bsProxy running on the KoreBot2 supports proxied interfaces for the
289
Koala's motors, odometry, IR sensors, plus any other
290
RoadNarrows supported sensors.
291
The remote bsProxy interfaces are IP over WiFi for off-target clients.
292
\htmlonly
293
<div style="clear:both;">
294
</div>
295
\endhtmlonly
296
297
\subsection plat_prox_hek RoadNarrows Hekateros Robotic Manipulator
298
\htmlonly
299
<div style="float:left; border:0; text-align:center;">
300
\endhtmlonly
301
\image html RN-HekArm-100.png
302
\htmlonly
303
</div>
304
\endhtmlonly
305
RoadNarrows' Hekateros\h_tm robotic arm has a built-in gumstix Overo\h_tm
306
main processor with a TI OMAP 35xx processor.
307
The bsProxy running on the OMAP supports proxied interfaces for the
308
Robotis Dynamixel\h_tm servos, encoders, USB cameras and inverse and forward
309
kinematics.
310
The remote bsProxy interfaces are IP over WiFi and IP over USB for off-target
311
clients.
312
\htmlonly
313
<div style="clear:both;">
314
</div>
315
\endhtmlonly
316
317
\subsection plat_prox_ctlr Robot Controller Boards
318
\htmlonly
319
<div style="float:left; border:0; text-align:center;">
320
\endhtmlonly
321
\image html RN-Dyna-100.png
322
\htmlonly
323
</div>
324
\endhtmlonly
325
The \h_botsense package supports a variety of proxied robot controller boards.
326
Most of these boards have some form of serial interface in which the bsProxy
327
server interface to from any supported
328
target computing architecture with the supported serial drivers.
329
Current and planned supported controller boards are:
330
<div style="padding-left:120px;">
331
<ul>
332
<li>Kondo RCB-3 controller board for KHR robots.</li>
333
<li>Robotis Dynamixel CM-5x and CM-700 controller boards.</li>
334
<li>Hitec Robonova controller board.</li>
335
</ul>
336
</div>
337
\htmlonly
338
<div style="clear:both;">
339
</div>
340
\endhtmlonly
341
342
\section platform_3rd 3rd Party Software Interfaces
343
The list current and planned support for third party software platforms
344
by \h_botsense are itemized below.
345
\li Tekkotsu - an open source framework for a variety of robotic platforms.\n
346
http://www.tekkotsu.org
347
\li OpenRave - the Open Robotics Automation Virtual Environment.\n
348
http://openrave.programmingvision.com
349
\li ROS - Willow Garage's Robot Operating System or Robot Open Source.\n
350
http://www.ros.org
351
\li Myro - Institute for Personal Robots in Education python software.\n
352
http://wiki.roboteducation.org
353
354
\section platform_arch Supported Target Architectures
355
The list of current and planned support of processor architectures are listed
356
below:
357
\li Ubuntu Linux 32-bit and 64-bit Intel compatible processors.
358
\li Fedora Linux 32-bit and 64-bit Intel compatible processors.
359
\li Familiar Linux 32-bit ARM processors (K-Team old KoreBot).
360
\li Angstrom Linux 32-bit ARM processors (Verdex gumstix).
361
\li Angstrom Linux 32-bit OMAP processors (Overo gumstix).
362
\li Ubuntu Linux 32-bit OMAP processors (Overo gumstix).
363
\li Windows XP and 7 systems with cygwin.
364
\li Mac OS X systems.
365
366
\section platform_tested Tested Systems
367
The list of tested architecures are list below. Note that the list continually
368
expands and may not be up to date.
369
\termblock
370
\term Ubuntu
371
\termdata Ubuntu 10.4 Linux for the i386 and x86_64 architectures.
372
\endterm
373
\term Fedora Core
374
\termdata Fedora Core 5 and 6 Linux for the i386 and x86_64 architectures.
375
\endterm
376
\term Angstrom
377
\termdata Angstrom Linux 2.6 (K-Team KoreBot2 version) for the XScale PXA
378
255 Arm.
379
\endterm
380
\term Familiar
381
\termdata Familiar Linux 2.4 (K-Team KoreBot version) for the XScale PXA
382
255 Arm.
383
\endterm
384
\term Windows
385
\termdata Windows 7 and XP with Cygwin for Intel processors.
386
\endterm
387
\term Mac
388
\termdata Mac OS-X 10.x for Intel processors.
389
\endterm
390
\endtermblock
391
392
\page page_eula EULA
393
\section eula_txt RoadNarrows Robotics BotSense Package End User Licence Agreement
394
395
\subsection eula_permissions Permissions
396
Permission is hereby granted, without written agreement and without
397
license or royalty fees, to use, copy, modify, and distribute this
398
software and its documentation for any purpose, provided that
399
(1) The above copyright notice and the following two paragraphs
400
appear in all copies of the source code and (2) redistributions
401
including binaries reproduces these notices in the supporting
402
documentation. Substantial modifications to this software may be
403
copyrighted by their authors and need not follow the licensing terms
404
described here, provided that the new terms are clearly indicated in
405
all files where they apply.
406
407
\subsection eula_warranties Warranties
408
In no event shall the author, RoadNarrows Robotics or any members/employees
409
of RoadNarrows Robotics or distributors of this software be liable to any
410
party for direct, indirect, special, incidental, or consequential
411
damages arising out of the use of this software and its documentation,
412
even if the authors or any of the above parties have been advised of
413
the possibility of such damage.
414
415
The author and RoadNarrows Robotics specifically disclaim any warranties,
416
including, but not limited to, the implied warranties of merchantability anD
417
fitness for a particular purpose. the software provided hereunder is on an
418
"as is" basis, and the authors and distributors have no obligation tO
419
provide maintenance, support, updates, enhancements, or modifications.
420
421
\subsection eula_copyright Copyright
422
All Rights Reserved by RoadNarrows Robotics
423
\n (C) 2007-2010
424
\n http://www.roadnarrowsrobotics.com
425
426
*/
docs
doxy
main.doxy
Generated on Fri Aug 10 2018 13:54:32 for botsense by
1.8.11
©2018 RoadNarrows LLC
www.roadnarrows.com