botsense  3.2.0
RoadNarrows Client-Server Proxied Services Framework
Architecture

The BotSense architecture is summarized in the following sections (refer to Figure 2):

bsArch-Small.png
Figure 2: BotSense Architecture

click to enlarge

Project Constraints

  • Provide open source with well documented and published interfaces.
  • Core system written in C to the POSIX compliant interface standards.
  • Use the cross-compiler, multi-platform RoadNarrows rnmake make system built around GNU make.
  • Use RoadNarrows NetMsgs package for client-server and module-device message XML specifications with auto-code generation.
  • Fully doxygen source documentation.
  • Provide a Programmer's Guide.
  • Use subversion for source control.

Invariant Core:

  • Software written in C to the POSIX compliant interface standards.
  • BotSense interface moudle plug-ins support multiple languages:
    C, C++, and Python (to be expanded in the future).
  • Proxy server and core client library are multi-threaded, multi-client, and real-time optimized.
  • Approach is validated by support of legged and wheeled robots and other intelligent devices.

BotSense bsProxy Server

  • Multi-threaded, multi-client, and real-time optimized.
  • Multiple instances can run on one target server – each listening to a different IP port.
  • XML configuration file(s).
  • 16 clients per bsProxy server (default, configurable).
  • 255 virtual connections per bsProxy server.
  • Message Exchange Patterns: request-response, stream-out.

BotSense libbotsense Client Library

  • Multi-threaded safe, multi-client support, and real-time optimized.
  • Automatic receive message ordering.
  • Message Exchange Patterns: request-response, stream-out.

Application-Specfic BotSense Plug-Ins

  • BotSense plug-ins support multiple languages.
  • Well defined plug-in interfaces for server.
  • BotSense Standard Modules:
    raw serial, raw I2C, STREAMS, pipes, shared memory.
  • Client-server and plugin-device message XML specifications with auto-code generation.

RoadNarrows Utilities and Libraries

  • RoadNarrows NetMsgs message packing/unpacking auto-code generation package.
    output languages: C, Python;
    byte order: big, little, native;
    encoding: flat, identifier-type-value.
    libnetmsgs – network messaging packing and unpacking library.
  • RoadNarrows librnr package – common definitions and functions library.
  • RoadNarrows libserial package – RS-232 serial library.
  • RoadNarrows libi2c package – I2C library.