Features

The following is a brief list of the features currently available in the embedded control library.

Tools

CMake modules, makefiles, scripts, documentation generators.

Lite

  • Config
    • Macros : macros defining the platform.
    • Portable Types : portable types that can be used across platforms.
    • Platform Checks : platform detection functions (e.g. endianness).
  • Errors
    • Abort/Asserts - functions for conditional handling of errors and termination of processes.
    • Error - flags for low level error handling.
  • Converters Lite - low level c-style functional implementation of type converters.
  • IO - cross platform io functions for low-level functionality (good for porting projects).
  • Sigslots Lite - very low level implementation of sigslots (no heap or templates).
  • Time Lite - cross platform time functions for low-level functionality (good for porting projects).

Core

  • Comand Line - parse program input arguments on the command line (using the tclap library).
  • Concepts - compile time checking mechanisms for programming concepts.
  • Containers
    • Dynamic Array - heap allocated c++ arrays with a minimal interface, including eigen style initialiser.
    • Fixed Array - stack allocated c++ arrays with a minimal interface (mem_checking variant also available), including eigen style initialiser.
    • Mem Checking Array Extensions - transparent modifications to the array class that enable memory checking for buffer under/overruns.
    • Stencils - typesafe, pointer safe windows onto ecl containers.
  • Containers
    • Templatised - provides extensions for creating your own converters within their internal api.
    • Fundamental Types - conversions between fundamental types.
    • Byte Arrays - useful for control, convert between byte arrays and integral types.
  • Devices
    • OFile - synchronous output file device.
    • SharedFile - multi-threaded, multi-instance output file device.
    • Console - standard input/output/error (console) devices.
    • Serial - the serial RS232 device.
    • Sockets - a very simple ipv4 socket server and client.
    • String - virtual string storage (io)devices.
  • Exceptions
    • Data Exceptions - throwing data with exceptions.
    • Macros - debug mode and assert exceptions, also mode for disabling exceptions.
    • Standard Exceptions - convenient exception handlers for ecl error types.
  • Formatters
    • Floats - formatting floats for insertion into streams.
    • Integers - formatting integral types for insertion into streams.
    • Strings - formatting strings for insertion into streams.
    • Containers - formatting containers for insertion into streams.
  • Geometry
    • Angle - convenient interface for angles, does auto-wrapping, conversions and math operations.
    • Cartesian Point - defines c++ style cartesian point representations.
    • Cubic Spline - third order polynomial spline representation and generation.
    • Polynomials - generic polynomial representations as c++ classes.
    • Pose : classes for 2D and 3D pose (closely related to eigen's geometry module).
    • Smooth Linear Spline - smoothed linear spline representation and generation.
    • Tension Functions/Splines - tension (inverse trig) spline representation and generation.
  • Inter-Process
    • Semaphore - binary style inter process locking mechanism.
    • Shared Memory - allocation of shared memory automatically via structure definitions.
  • Linear Algebra
    • Plugin : formalises a plugin for the Eigen matrix library.
    • Switcher : definitions to switch between eigen2/3.
    • Formatter : a formatter for eigen objects.
    • Functions : extra functions (e.g. conservative resizing) that go in eigen's plugin.
  • Math
    • Constants : basic mathematical constants (these are mostly for cross platform support).
    • Functions : some c++ classes for math functions, norms trig etc.
  • Meta-Programming
    • Conditionals - conditional compile time elements, Bool and If
    • Type Traits - until c++0x gets them, is_integral and is_float
    • Sfinae - until c++0x gets them, enable_if.
  • Sigslot - type-safe, thread-safe, signals and slots implementation with posix style named connections.
  • Statistics
    • Covariance Ellipsoids - ellipsoid characteristics of a covariance matrix.
  • Streams
    • Text Streams - generic text streaming class.
    • Console Streams - streams to and from standard input/output/error.
    • Log Streams - convenient macro enabled stream for multi-threaded, multi-modal logging.
    • Output File Streams - streams to output files (vanilla and multi-threaded versions).
    • String Streams - customised textstream wrapper for connections with virtual serial devices.
  • Threads
    • Mutex - the usual binary style lock.
    • Priority - simple, cross platform process priority setting for threads and processes.
    • Thread - threading via composition.
    • Threadable - threading via inheritance.
  • Time
    • Durations - representation and math operations for intervals of times.
    • Sleepers - generic sleep functions with varied resolutions.
    • Snooze - provides sleeping functionality with minimal drift for absolutely periodic loops.
    • Stopwatches - all the features you'd expect in a stopwatch with nanosecond resolution.
    • Timestamps - representation and math operations for system timestamping.
  • Utilities
    • Blueprints
    • Function Objects
    • Parameters
    • Reference Wrappers
    • Singleton

Manipulation

  • Manipulators
    • Joint Trajectories - standardised joint trajectory interface.
    • Joint Trajectory Generators - generator interfaces for developing trajectories from waypoints.
    • Waypoints - standard waypoint definition for manipulator trajectories.
  • Maps
    • Grid Maps - overlay a 2d grid map on a real world map using fixed dimensions.
  • Mobile Robot
    • Differential Drive - kinematics for differential drive robots.
  • Slam
    • Slam Ekf - modular architecture for a slam-ekf algorithm (depracating).

Also available in: HTML TXT