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.
Navigation¶
- 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).