« Previous -
Version 34/36
(diff) -
Next » -
Current version
Daniel Stonier, 01/14/2012 03:33 PM
Features¶
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.
Build Tools¶
- CMake Scripts
- Macro Libraries: ecl_build_utilities, ecl_platform_detection, ecl_ros_utilities
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).