Features

Version 15 (Daniel Stonier, 05/29/2010 07:35 PM) → Version 16/36 (Daniel Stonier, 05/29/2010 08:16 PM)


h1. Features

{{>toc}}

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

The library currently only supports posix platforms but all c++ interfaces have been designed to present non-os dependant interfaces to the programmer. This will ensure porting and usage is easy and at the very least, win32 is expected to be ported across from the ycl at some point in the future.

h2. Build Tools

* **CMake Scripts**
** Configuration: __ConfigurePlatform__, __ConfigurePlatform__
**
__DetectPosix__
** Find Modules: __FindECL__, __FindEigen__, __FindOpenCv__, __FindECL__
** __FindEigen__
** __FindOpenCv__
**
__FindPeekabot__
** Build Scripts: __UnInstall__
* **Platforms** - cmake settings for building on various cpu's.
** Generic Platforms: __Native__, __Vanilla__ __Native__
** Arm Cores: __Arm1176jzf-s__,
__Arm1176jzf-s__
** Intel Atoms: __Atom230__, __AtomN270__, __Atom230__
** __AtomN270__
**
__Atom330__
** Intel x86/64: __Core2__, __Core2__
** __i5__
* **Toolchains**
** __arm-samsung-linux-gnueabi__ - custom toolchain for arm core development at Yujin Robot.
** __arm-generic-linux-gnueabi__ - custom toolchain for arm core development at Yujin Robot.
** __i586-moblin-gnu__
** __i686-pc-linux-gnu__ - typical cross-compiler for 64bit machines.
** __i686-pc-mingw32__ - gentoo crossdev's mingw32 cross-compiler.
** __i586-mingw32msvc__ - ubuntu's mingw32 cross-compiler.

h2. Core

* **Comand Line** - parse program input arguments on the command line (using the tclap library).
* **Concepts** - compile time checking mechanisms for programming concepts.
* **Error Handling**
** __Abort/Asserts__ - functions for conditional handling of errors and termination of processes.
** __Data Exceptions__ - throwing data with exceptions.
** __Macros__ - enable debug mode error handling.
** __Standard Exceptions__ - convenient exception handlers for ecl error types.
* **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.
* **Inter-Process**
** __Process Priority__ - simple, cross platform process priority setting.
** __Semaphore__ - binary style inter process locking mechanism.
** __Shared Memory__ - allocation of shared memory automatically via structure definitions.
* **Meta-Programming**
* **Sigslot** - type-safe, thread-safe, signals and slots implementation with posix style named connections.
* **Threads**
** __Mutex__ - the usual binary style lock.
** __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__
** __Converters__
** __Function Objects__
** __Parameters__
** __Reference Wrappers__
** __Singleton__
* **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.
* **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.
* **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.
* **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.
** __Smooth Linear Spline__ - smoothed linear spline representation and generation.
** __Tension Functions/Splines__ - tension (inverse trig) spline representation and generation.
* **Manipulators**
** __Joint Trajectories__ - standardised joint trajectory interface.
** __Joint Trajectory Generators__ - generator interfaces for developing trajectories from waypoints.
** __Waypoints__ - standard waypoint definition for manipulator trajectories.
* **Math** - basic mathematical constants (these are mostly for cross platform support).
* **Statistics**
** __Covariance Ellipsoids__ - ellipsoid characteristics of a covariance matrix.

h2. Navigation

* **Maps**
** __Grid Maps__ - overlay a 2d grid map on a real world map using fixed dimensions.
* **Mobile Robot**
** __Pose__ - representation and mathematical operations for mobile robot poses.
** __Differential Drive__ - kinematics for differential drive robots.
* **Slam**
** __Slam Ekf__ - modular architecture for a slam-ekf algorithm.