From emss Framework - iRobot Create C++ Framework
========================================================================
= CHANGELOG =
========================================================================
emss framework
http://emssframework.sourceforge.net
========================================================================
= Changelog v1.1 =
========================================================================
* Finished create_packages.sh port for linux/osx/win (!!)
* Added support for library include in packages
* Defined new CoreObject.h and CoreThread.h as parent class of all Core components
* Implemented heap logger gui
* Created a heap logger and ported all code to comply with it
* Implemented GPS math lib with geocentral and gps conversions as well as support for cartesian conversion on grid
* Added a task for accuracy-test-purposes
* Added a new discovery task with a new discovery approach
* Modified FingerprintTask to send GPS coordinates
* Implemented SingleTracker strategy
* New (extended) definition of fingerprint message
* Created new script engine/environment for more robust and automated scripts
* Implemented a RemoteInterfaceView for detailed viewing of messages and subscribers
* Made entire core thread-safe (maps, controller, trackers, tasklist, et cetera)
* Implemented new Tracker module for localization
* Implemented AveragedTracker module which can combine any number of trackers
* Refactored all the Tracker code to use single getTransformation() instead of doing all the same calculations over and over
* Fixed bug in calc for average transformation
* Updated TaskEditor to reflect Idle task and improved connection to Core
* Created Safe-Mode option (i.e. full mode upon request on OI)
* Worked in Discovery task. Uses the structure map to create boundaries for the height map of the discovery task
* Re-implemented all the drawing code to use mm instead of pixel on Core level. Only paint() methods use the pixel scale. Note: definately performance cost because of upstream scaling :( -cost of nice design. !!!!!
* Created CoreFactory to handle the (safe) creation of all Core modules.
* Changed the connection between Map-Controller-Trackers. The communications channels are much more logical now and no longer require the Core to intermediate messages
* Wrote packaging script for source forge. Works on Linux and OS X.
* Installed inadyn on robot
* Improved interrupt mechanism for TaskManager, new function interrupt() on every Task...
* Improved CollisionAvoidance weight - chooses best direction to turn
* Improved WallFollowerWeight - works together with collision avoidance.
* Tested new version of WallFollower: not so sucessful. There is noise in the SharpIR signal??
* Improved Viewport GUI
* Fixed bug in Util::setSettingsFromStringData...
* Fixed bug in Viewport when settings tasks as well as cross-cursor remains
* Re-defined Controller interface to disclude legacy stuff, deprecated BlockDriveController and FluidDriveController, ported all Core code to new Controller interface making EmssController disjoint from the rest of the Core
* Added orienation tracking/logging to MovementTracker
* Extensive testing driving the robot around with joystick. Install new protocol NXClient/NXServer which uses JPEG compression. Works nice. Alot of areas in HSR have very bad WiFi during the day...?
* Added RemoteInterface to Core::run(), can be disabled by setting REMOTEINTERFACE=false in emssCore.config.
* Implemented LOG_TO_FILE=true|false for permannent record on disk of all Debug::print|warning|error's... :)
* Created Watchdog thread. Doesn't do anything but beep yet...
* Added Text-to-Speech module
* Added support for full-mode switch
* Created Watchdog actions: Beep, NetworkMonitor, ThreadMonitor(buggy)
* Added Joystickweight
* Extended TaskManager with an idle task
* Added RoamingTask and RoamingWeight
* Reimplementation of the WallFollowerWeight (use another approach)
* Reimplemenation of CollisionAvoidanceWeight (yet another approach)
* Ininitial test imeplemation of StructureMap
* Ininitial test imeplemation of FadingHeatMap
* Refactored SplineDiscovery to generic Discovery Task
* Collisions on heat map from all sensors are distributed in different sizes and weights and according to the exact position of the sensor
* Map Overview GUI widget implemented: shows the entire map(s) on screen...
* Worked on SystemOfWeights Weights
* Improved TaskEditor refresh
* Full-featured WeightEditor GUI widget implemented
* Fixed bug in EmulatedCOIL under "Calculate change in angle based on physics"
* Fixed bug in COIL when connecting on unexistent serial port
* Create unit test project and initial TestCOIL tests
* Added opengl (!!) support for viewport rendering. Much more performant when hardware accelerated :).
* Implemented DrawCanvas.h and DrawCanvasGL.h
* Create MapOverview widget for rendering entire map as an overview (really slow)
* Create global resources path (Util::getResourcePath())
* Added support for webcam via gstreamer
* Implemented CameraView.h/.cpp GUI element for viewing webcam
* Fixed reverse bug in double precision algo in EmulatedCOIL
* Updated emssInterface GUI to reflect the current modules
* Worked on SplineDiscoveryTask
* Refactored Spline Navigation code to SplineNavigation
* Re-modelled Navigation interface/workings
* Created SystemOfWeightsNavigation and intitial Weights
* Updated Physical Map to reflect walls/stairs/open areas
* Improved rendering performance in GUI thread over all GUI widgets
* Finished EmulatedCOIL emulations for all sensors except Homebase IR
* Update EmssController to enforce emergencyStop()
* Worked on different Weights such as CollisionAvoidanceWeight
* Implemented RobotSpeedGraph which plots speed over time of the left and right wheel.
* Continued updates to GUI of emssInterface
* Improved Core Reset capability (more stable and robust)
* Changed libemssCore to static lib
* Fixed drawing warnings and bounds checking
* Improved spline navigation curve calculation, should yield better results for calculateLeftRightWheelSpline()
* Added support for 'magnet tracking' during spline navgation, where the robot peers back to the spline if of-track because of tight angles or error in movement
* Added new MarkerObstacle which takes Vector2D or Trafo2D and draws it on screen accordingly (for debugging). Very usefull.
* Implemented core components in EmulatedCoil.cpp and orginized what is responsible for emulating what...
* Improved double-to-int accuracy by tracking the double precision internally in emulation and outputting int (just like OIL). The algo keeps the rounding cut-offs for next time, so it is very accurate.