Features
Version 24 (Daniel Stonier, 07/11/2010 12:44 PM)
| 1 | 1 | h1. Features |
|
|---|---|---|---|
| 2 | 1 | ||
| 3 | 1 | {{>toc}} |
|
| 4 | 1 | ||
| 5 | 1 | The following is a brief list of the features currently available in the embedded control library. |
|
| 6 | 1 | ||
| 7 | 1 | 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. |
|
| 8 | 1 | ||
| 9 | 1 | h2. Build Tools |
|
| 10 | 1 | ||
| 11 | 1 | * **CMake Scripts** |
|
| 12 | 18 | Daniel Stonier | ** __Configuration:__ ConfigurePlatform, DetectPosix |
| 13 | 18 | Daniel Stonier | ** __Find Modules:__ FindECL, FindEigen, FindOpenCv, FindPeekabot |
| 14 | 18 | Daniel Stonier | ** __Build Scripts:__ UnInstall |
| 15 | 16 | Daniel Stonier | * **Platforms** - cmake settings for building on various cpu's. |
| 16 | 18 | Daniel Stonier | ** __Generic Platforms:__ Native, Vanilla |
| 17 | 18 | Daniel Stonier | ** __Arm Cores:__ Arm1176jzf-s |
| 18 | 18 | Daniel Stonier | ** __Intel Atoms:__ Atom230, AtomN270, Atom330 |
| 19 | 19 | Daniel Stonier | ** __Intel x86/64:__ Core2, i5 |
| 20 | 1 | * **Toolchains** |
|
| 21 | 20 | Daniel Stonier | ** __arm-none-linux-gnueabi__ - configuration for the code sourcery arm toolchain. |
| 22 | 12 | Daniel Stonier | ** __arm-samsung-linux-gnueabi__ - custom toolchain for arm core development at Yujin Robot. |
| 23 | 12 | Daniel Stonier | ** __arm-generic-linux-gnueabi__ - custom toolchain for arm core development at Yujin Robot. |
| 24 | 1 | ** __i586-moblin-gnu__ |
|
| 25 | 12 | Daniel Stonier | ** __i686-pc-linux-gnu__ - typical cross-compiler for 64bit machines. |
| 26 | 12 | Daniel Stonier | ** __i686-pc-mingw32__ - gentoo crossdev's mingw32 cross-compiler. |
| 27 | 12 | Daniel Stonier | ** __i586-mingw32msvc__ - ubuntu's mingw32 cross-compiler. |
| 28 | 1 | ||
| 29 | 1 | h2. Core |
|
| 30 | 1 | ||
| 31 | 13 | Daniel Stonier | * **Comand Line** - parse program input arguments on the command line (using the tclap library). |
| 32 | 14 | Daniel Stonier | * **Concepts** - compile time checking mechanisms for programming concepts. |
| 33 | 1 | * **Error Handling** |
|
| 34 | 1 | ** __Abort/Asserts__ - functions for conditional handling of errors and termination of processes. |
|
| 35 | 1 | ** __Data Exceptions__ - throwing data with exceptions. |
|
| 36 | 1 | ** __Macros__ - enable debug mode error handling. |
|
| 37 | 1 | ** __Standard Exceptions__ - convenient exception handlers for ecl error types. |
|
| 38 | 1 | * **Containers** |
|
| 39 | 1 | ** __Dynamic Array__ - heap allocated c++ arrays with a minimal interface, including eigen style initialiser. |
|
| 40 | 2 | Daniel Stonier | ** __Fixed Array__ - stack allocated c++ arrays with a minimal interface (mem_checking variant also available), including eigen style initialiser. |
| 41 | 4 | Daniel Stonier | ** __Mem Checking Array Extensions__ - transparent modifications to the array class that enable memory checking for buffer under/overruns. |
| 42 | 7 | Daniel Stonier | ** __Stencils__ - typesafe, pointer safe windows onto ecl containers. |
| 43 | 1 | * **Inter-Process** |
|
| 44 | 1 | ** __Process Priority__ - simple, cross platform process priority setting. |
|
| 45 | 1 | ** __Semaphore__ - binary style inter process locking mechanism. |
|
| 46 | 1 | ** __Shared Memory__ - allocation of shared memory automatically via structure definitions. |
|
| 47 | 1 | * **Meta-Programming** |
|
| 48 | 15 | Daniel Stonier | * **Sigslot** - type-safe, thread-safe, signals and slots implementation with posix style named connections. |
| 49 | 1 | * **Threads** |
|
| 50 | 1 | ** __Mutex__ - the usual binary style lock. |
|
| 51 | 1 | ** __Thread__ - threading via composition. |
|
| 52 | 6 | Daniel Stonier | ** __Threadable__ - threading via inheritance. |
| 53 | 6 | Daniel Stonier | * **Time** |
| 54 | 15 | Daniel Stonier | ** __Durations__ - representation and math operations for intervals of times. |
| 55 | 15 | Daniel Stonier | ** __Sleepers__ - generic sleep functions with varied resolutions. |
| 56 | 1 | ** __Snooze__ - provides sleeping functionality with minimal drift for absolutely periodic loops. |
|
| 57 | 15 | Daniel Stonier | ** __Stopwatches__ - all the features you'd expect in a stopwatch with nanosecond resolution. |
| 58 | 15 | Daniel Stonier | ** __Timestamps__ - representation and math operations for system timestamping. |
| 59 | 1 | * **Utilities** |
|
| 60 | 1 | ** __Blueprints__ |
|
| 61 | 1 | ** __Converters__ |
|
| 62 | 1 | ** __Function Objects__ |
|
| 63 | 1 | ** __Parameters__ |
|
| 64 | 1 | ** __Reference Wrappers__ |
|
| 65 | 1 | ** __Singleton__ |
|
| 66 | 1 | * **Devices** |
|
| 67 | 1 | ** __OFile__ - synchronous output file device. |
|
| 68 | 1 | ** __SharedFile__ - multi-threaded, multi-instance output file device. |
|
| 69 | 1 | ** __Console__ - standard input/output/error (console) devices. |
|
| 70 | 1 | ** __Serial__ - the serial RS232 device. |
|
| 71 | 2 | Daniel Stonier | ** __Sockets__ - a very simple ipv4 socket server and client. |
| 72 | 1 | ** __String__ - virtual string storage (io)devices. |
|
| 73 | 1 | * **Formatters** |
|
| 74 | 1 | ** __Floats__ - formatting floats for insertion into streams. |
|
| 75 | 1 | ** __Integers__ - formatting integral types for insertion into streams. |
|
| 76 | 1 | ** __Strings__ - formatting strings for insertion into streams. |
|
| 77 | 1 | ** __Containers__ - formatting containers for insertion into streams. |
|
| 78 | 1 | * **Streams** |
|
| 79 | 1 | ** __Text Streams__ - generic text streaming class. |
|
| 80 | 1 | ** __Console Streams__ - streams to and from standard input/output/error. |
|
| 81 | 1 | ** __Log Streams__ - convenient macro enabled stream for multi-threaded, multi-modal logging. |
|
| 82 | 1 | ** __Output File Streams__ - streams to output files (vanilla and multi-threaded versions). |
|
| 83 | 1 | ** __String Streams__ - customised textstream wrapper for connections with virtual serial devices. |
|
| 84 | 1 | * **Geometry** |
|
| 85 | 15 | Daniel Stonier | ** __Angle__ - convenient interface for angles, does auto-wrapping, conversions and math operations. |
| 86 | 2 | Daniel Stonier | ** __Cartesian Point__ - defines c++ style cartesian point representations. |
| 87 | 1 | ** __Cubic Spline__ - third order polynomial spline representation and generation. |
|
| 88 | 1 | ** __Polynomials__ - generic polynomial representations as c++ classes. |
|
| 89 | 1 | ** __Smooth Linear Spline__ - smoothed linear spline representation and generation. |
|
| 90 | 1 | ** __Tension Functions/Splines__ - tension (inverse trig) spline representation and generation. |
|
| 91 | 24 | Daniel Stonier | * **Math** - basic mathematical constants (these are mostly for cross platform support). |
| 92 | 24 | Daniel Stonier | * **Statistics** |
| 93 | 24 | Daniel Stonier | ** __Covariance Ellipsoids__ - ellipsoid characteristics of a covariance matrix. |
| 94 | 24 | Daniel Stonier | |
| 95 | 24 | Daniel Stonier | h2. Manipulation |
| 96 | 24 | Daniel Stonier | |
| 97 | 1 | * **Manipulators** |
|
| 98 | 15 | Daniel Stonier | ** __Joint Trajectories__ - standardised joint trajectory interface. |
| 99 | 1 | ** __Joint Trajectory Generators__ - generator interfaces for developing trajectories from waypoints. |
|
| 100 | 1 | ** __Waypoints__ - standard waypoint definition for manipulator trajectories. |
|
| 101 | 1 | ||
| 102 | 9 | Daniel Stonier | h2. Navigation |
| 103 | 9 | Daniel Stonier | |
| 104 | 9 | Daniel Stonier | * **Maps** |
| 105 | 9 | Daniel Stonier | ** __Grid Maps__ - overlay a 2d grid map on a real world map using fixed dimensions. |
| 106 | 9 | Daniel Stonier | * **Mobile Robot** |
| 107 | 15 | Daniel Stonier | ** __Pose__ - representation and mathematical operations for mobile robot poses. |
| 108 | 15 | Daniel Stonier | ** __Differential Drive__ - kinematics for differential drive robots. |
| 109 | 9 | Daniel Stonier | * **Slam** |
| 110 | 1 | ** __Slam Ekf__ - modular architecture for a slam-ekf algorithm. |
|
| 111 | 1 | ||
| 112 | 1 | h2. Cross |
|
| 113 | 1 | ||
| 114 | 1 | Build recipes for cross-compilations of various packages from source. |
|
| 115 | 1 | ||
| 116 | 24 | Daniel Stonier | * **Ros Deps** |
| 117 | 24 | Daniel Stonier | ** __Apr__ |
| 118 | 24 | Daniel Stonier | ** __Apr-Util__ |
| 119 | 24 | Daniel Stonier | ** __Boost__ : this is a trimmed boost suitable for embedded systems. |
| 120 | 24 | Daniel Stonier | ** __Bzip2__ |
| 121 | 24 | Daniel Stonier | ** __Log4cxx__ |
| 122 | 24 | Daniel Stonier | ** __Zlib__ |
| 123 | 24 | Daniel Stonier | * **Other Packages** |
| 124 | 24 | Daniel Stonier | ** __Busybox__ |
| 125 | 24 | Daniel Stonier | ** __Gdb__ |
| 126 | 24 | Daniel Stonier | ** __NCurses__ |
| 127 | 24 | Daniel Stonier | ** __Opencv__ : this is a trimmed opencv2 suitable for embedded systems. |
| 128 | 24 | Daniel Stonier | * **Toolchains** |
| 129 | 24 | Daniel Stonier | ** __Sourcery Toolchain__ : installer for code sourcery's g++ toolchain. |