//------------------------------------------------------------------------- // GOLAEM SDK 2.3 - CHANGELOG //------------------------------------------------------------------------- GLOBAL - (Officially) support x64 architectures - Support gcc4.12 compiler FOUNDATIONS ** New features - Updated to Qt 4.7.1 - The method isNull of Vector uses a precision parameter - Addition of glmConvexPolygon2, a class describing a 2D convex polygon. - The method computeConvexHull of ConvexPolygon2 is able to compute the convex hull of a collection of points in O(n log(n)) - Addition of a contains function checking if a point is inside a convex polygon. It should be much faster than the generic polygon contains. ** Bug fixes - Bug in axis-angle conversions fixed ** Tests - Addition of unit tests for convex polygons MOTION ** New features - Changed the simple ground adpatation component to take the footprints' height into account instead of the root height - Added methods in the normalized motion to obtain the complete trajectory ** Bug fixes - The locomotion database is now acceded by smart pointer only to avoid deleting a database in cache PATH ** New features - Addition of a path::init and path::finish method initializing (resp terminating) the whole Path module. - Added maximum horizontal slope ** Bug fixes - FunnelPath Follower bug fixes - Perceived objects retrieval takes maximum radius into account ** Refactoring - ExtrapolNavigator improved - ExtrapolNavigator and RVO share the same sampling - PathFollower start is randomized from 0 to updateInterval to avoid init bottleneck - RNG getScalar moved to allow reproductibility - Catch pathFollower init result in gotoAction - No more exception if navigator output velocity is outside acceleration range and == 0 - New and more robust roadmap creation ** Tests - Additional unit tests for navigation. COORDINATOR ** Bug fixes - Handle state machines using smart pointers, fixing state machines/ controllers delete issues BEHAVIORTASK ** New features - XOR Conditional Operator ** Bug fixes - Ground function fixed when entities are outside the environment ** Refactoring - Triggers need to be initialized and can be created in 2 steps ACTIVITY ** New features - Support Golaem standard log system & add accurate log messages - Support Golaem Coordinator 2.3 (using smart pointers on state machines and activities) ** Bug fixes - Fix crashes when deleting an activity manager that has not already ended - Fix refactoring on activities time accessor while exporting activity model to state machine files - Fix crash while using a duration for an activity - Fix bug in activities coordinator state & transition names (bad case) POPULATION ** New features - New placement algorithm, ensure entities order all along the placement. - Addition of the Circle spawning zone. - Addition of the Quincunx placing shape for every spawning zones. ** Bug fixes - Now locate entities on the spatial environment with the ground position function. ** Tests - Additionnal unit tests for every spawning zones. //------------------------------------------------------------------------- // GOLAEM SDK 2.2 - CHANGELOG //------------------------------------------------------------------------- FOUNDATIONS ** New features - Added QtFoundations library - Addition of a enumerated typed Quadrant (NE,NW,SE,SW). - Addition of math::Box2, a class representing a 2D box. - Addition of a generic interface defining nodes in a hierarchy defining a 2D region: sds::AbstractRegion2HierarchyNode. Two implementations are provided for now: a grid hierarchy (Grid2HierarchyNode) and a quadtree (QuadtreeNode). The latest replace the old undocumented quadtree. - Addition of two functions projectedDistance and projectedDistance2 computing the distance between two 3D positions projected along a given axis. - Addition of glmIntersectionFunctions.h a file defining intersection related functions. - Addition of point in polygon test in glmContains.h - Added setAttribute method to DataItem - Added touchChild methods to DataItem - Added getAttributeType, get/setValue, get/setPointer, get/setConstPointer, get/setReference, get/setConstReference and getSmartPointer methods to AbstractAttribute ** Bug fixes - Fixed getHashCode methods - Fixed AttributeRTTI types for pointer and reference accessors ** Refactoring - Changed default policy for smart pointers to ExternalReferenceCountingPolicy + corrected unit tests accordingly - Modification of the Axis and the Side enumerated types to fit the guidelines. One should now use math::Axis::X, math::Axis::Y, math::Axis::Z, math::Side::LEFT & math::Side::RIGHT. - Merged glmDistance2.h and glmDistance3.h in glmDistance.h - Merged glmVector2.h, glmVector3.h, glmVector4.h and glmVector.h in glmVector.h (the Vector class and 3 partial template specializations for 2D, 3D and 4D vectors) and glmVectorFunctions (more complex functions). - Moved intersection related methods of Line2 and Segment2 to functions in glmLineIntersections.h. - Removed operator* for smart pointers - AbstractSemanticRole smart pointer uses external reference counter - Added the navigation role from path into foundations - Added the velocity roles from path into foundations - Removed the properties methods from AbstractSemanticRole - Removed the LUA interpreter MOTION ** New features - The MotionEntityComponent can now override the entity's radius and height - Added the MotionActionPositionAndSpeedControl, which control Motion in order to reach the position/velocity of the entity (usefull when using any kind of steering algorythm on the entity) ** Bug fixes - When a motion with a change of orientation was looping, its orientation was reseted to the original one each time it was replayed from the beginning ** Refactoring - In GroundAdaptationPC, the default mode is now SIMPLE_ADAPTATION instead of FOOTPRINT_ADAPTATION_ONCE - In MotionEntityComponent, the animation pipeline is now a BaseContainerProducerPC::SP instead of a HumanControlPC::SP, and the constructor allow the user to give it's own pipeline instead of the default one. If no pipeline is given, the default one is constructed automatically (as it used to be). ** Misc - Now using fbx sdk 2011.3.1 instead of fbx sdk 2011.3 PATH ** New features - Addition of a maximum number of perceived entities. - Velocity sampling for extrapol navigator is now shared for all entities in the path context. - PathActionGoto : user can provide an heuristic to speed up target location - ExtrapolNavigator (and configuration) : user can chose to extrapol obstacles (default to false) ** Bug fixes - RVONavigator ( renaming i used twice for loop and loop internal loop index) - Neighborhood : reusing allocated entities is buggy when removing-adding entities in a single loop, removed - Bug fix on the velocity models for angular velocities - PathFollowerConfiguration : fixed a bad debug assertion - AbstractPathFollower : target reach now check real target distance instead of curvilign abscissa position. COORDINATOR ** New features - Added a start method to the CoordinatorTask ** Bug fixes - Fixed a memory leak ** Refactoring - Suppress deprecated "start" signal from compiler grammar BEHAVIORTASK ** Bug fixes - Fixed a memory leak in NavigationBehaviorEntityComponent ** Refactoring - The Navigation tasks do not take an animation task as a parameter, you now have to start the optional animation task manually ACTIVITY ** New features - Support foundations 2.2 - Support coordinator 2.2 ** Bug fixes - Fix bad name when generating environment library descriptor file - Fix bad namespace for environment when loading .gef file ** Refactoring - Downgraded to qt 4.5.3 - Use qtFoundations instead of qtTools POPULATION ** New features - A placement tool, simple and efficient //------------------------------------------------------------------------- // GOLAEM SDK 2.1 - CHANGELOG //------------------------------------------------------------------------- FOUNDATIONS ** New features - Added the base visualization component to Foundations. - Added trace info for initializations : EngineManager, ContextsManager, Contexts and EntitiesManager - Added the ClassGenerator tool - Added string conversions for distance units - Added a pause parameter in Context - Added a ReplayEntityRole - The RandomNumberGenerator now inherits from AbstractNumberGenerator. - AbstractNumberGenerators now have a 'setSeed' method able to change the seed of the generator. - Ability to build a Segment3 from another scalar type (e.g. construct a Segment3 from a Segment3) - New method project on Segment3 able to build a Segment2 from a Segment3. - Added a makeValid method to AxisAlignedBox3, ensure that min and max are correctly ordered for each coordinate - Progress is now a EventProducer, it produces ProgressEvent. - Addition of an accesible toggle in the spatial environment manager controlling if semantic object automatically register themselves. - Partial definition of DataItem::getAttribute template method for boolean values - Ability to remove an entity from the entities manager - Ability to remove a context from the context manager - Addition of a accessible toggle in the semantic environment manager controlling if semantic object automatically register themselves. - Added a Quaternion accessor on the Transformation - Added getPosition/setPosition and getOrientation/setOrientation methods to Entity - Added a finish method to AbstractGUIObject - Added a finish method to AbstractInputHandler ** Bug fixes - Fixed a bug in AABBTree ray casting. - Fixed a bug in Entity::finish that could cause entity component to be destroyed and not removed. - Fixed a bug in AxisAlignedBox3 makeValid - Fixed : an Entity can not be initialized twice - Fixed : Entity::setName crashed if a subRole is NULL - Fixed : Entity::setEntityPrototype now keep the current name of the Entity - Fixed : the EntityPrototype name is now suffixed with "Prototype" and no longer registered in the SemanticObjects map - Fixed : AbstractSemanticObject::addDynamicRole now correctly add the subRoles to the _roles cache vector - Fixed : AbstractSemanticRole, a number of crashes due to sub-roles set to NULL - Fixed the setName serialization bug in AbstractSemanticRole - Fixed : an EntityComponent can now be added during an Entity init & update - Fixed a bug in Entity::finish that could cause entity component to be destroyed and not removed. - Bug corrections on the or predicate - Modified Timer for Linux (was outputting negative values) - In test / wait, check that time to wait is not 0, or don't do anything to avoid taking latency of wait methods. - Fixed a small issue when normalizing quaternions (seldom case) - Now delete entityComponents when deleting entity - Minor correction in plugin manager when a manager is not found in the addPlugin method - Fixed : the GUIObjects destruction in AbstractVisualizationContext - Fixed : the getTime method of Timer now return 0 when the Timer is not started - Fixed : Entity removeEntityComponent no longer assert when trying to remove a NULL EntityComponent ** Refactoring - EngineManager.clear() -> EngineManager.finish() - Segment3 and Segment3 now exported, most of Segment3 methods now defined in its cpp file. - Moved glmXmlToCppLibraryGenerator.h to system - Set engine::IEntityComponent::getContext virtual - Progress is now a EventProducer, it produces ProgressEvent. - Clear action manager while clearing engine manager - Remove throwing runtime error while handling dead reference in singleton - Entity::getEntityComponent and Entity::touchEntityComponent can not be called before initializing the Entity - An entity name is now mandatory on construction (can be a temporary one before initialization) - AbstractSemanticAction::start and AbstracSemanticAction::stop now return a boolean indicating the success - SEMANTIC_ROLE_RTTI and SEMANTIC_ROLE_RTTI macros now adds the friend InspectableObjectCreator declaration - Corrected mismatch between declaration and definition of toUpper and toLower methods (and added unit test) - Modified stringToBool method to work with upper case strings also - Removed const from touchEntity accessor - BooleanMask : Renamed some local loop variables 'size' in 'mySize', because of conflicts in linus with this->size() method - Renamed method "unitFromString" in "distanceUnitFromString" (the distance unit enum is called "distanceUnit") - An Entity now always agregate an EntityRole, or a derived class that can be set using setEntityRole. Other Roles must be added in a derived class of Entity or using addDynamicRole. - The EngineManager finish() method now call the finish method of the various managers instead of deleting them, this is done in the destructor - The Replay now use golaem::Real instead of float - ContextsManager finish method now call the finish method of the Contexts and do not destroy them - EntitiesManager finish method now call the finish method of the Entities and do not destroy them - AbstractAction now has a public update method ** Tests - Added unit Tests for golaem::engine MOTION ** New features - Integrated with Golaem::Engine - Added a different conversion mode for hierarchical postures to normalized postures. ACCURATE mode is as previous one and provide an accurate conversion for elbows and knees, yet it may flick in some particular cases. The INVERSION_SAFE is less accurate, but it ensure there will be no inversion on nodes. - Addition of a ReadingEntityPosition property to the the motion entity component setting up whether the motion pipeline read the entity position or write it. - Addition of a setHierarchicalSkeletonDescription method to the MotionEntityComponent taking an initialized skeleton rigging. - Addition of a MotionActionPlay constructor taking a initialized S4d motion. - Addition of a touchSkeletonDescription method to HierarchicalSkeletonRigging. ** Bug fixes - When reading a motion, the sequence computation could slightly derive in time due to the way the sequence start times were computed. This bug was not noticeable in usual condition, but had a huge effect on the locomotionModel ** Refactoring - SimpleGroundAdaptation component was removed: the new GroundAdaptationPC has a "SIMPLE_ADAPTATION" mode corresponding to this old component, but can also handle diferent other adaptation modes. ** Tutorials - The tutorial code is up to date, but the documentation is out of date. ** Known issues - Some problems when computing the fingers' postures - Phalanges in the feet can be linked to only one bone in the HierarchicalSkeleton, while they often are separated into two part: big toe and four toes - In some cases, the footprint's axe of rotation is wrong (some deviation on left or right, depending on the skeleton description) PATH ** New features - Dynamic spatial environment tiles loading/unloading - New FBX geometry loader (supports .fbx, .dxf, .dae, .3ds and .obj files) based on the fbx sdk - Tiled spatial environment can now update a list of spatial environment / navigation mesh locations at each tile load/unload - Added spatial environment tiling unit test - New FBX loading unit test - Addition of a computeBoundingBox method on spatial environments - Addition of a PathEntityRole specializing the EntityRole and having the NavigationRole and the PerceptionRole - New command line spatial environment editor - Addition of PathOgreEntity, an easy-to-use navigationg entity in Ogre. - Add trail graphic info to PathOgreEntity and PathEntityComponentGraphicInfos - Addition of a void velocity model to bypass velocity model checks. - Velocity models are now built from a prototype factory, it is possible to add third party velocity model. - The neighborhood now uses lazy evaluation, no more need for an update before a query after the addition of entities. ** Bug fixes - Lots of bug fixed in path followers, the FunnelPathFollower now works properly. - Bug fixes in the adaptive velocity model. - Collision detection during the path entity component init works properly. - The entity built in the non-engine init of the path entity entity component is now deleted properly when the init fails. - Path context properly delete its spatial environment when needed. - Corrected a bug forbbiding the destruction of the the PathGotoAction when the PathGotoNavigation is user-provided. - Added missing radius with SocialForceNavigator frictino forces computation ** Refactoring - In NavigationPathVisualOptimizer, Radius parameter renamed MinimumDistanceToObstacles. - Renamed a few methods in TiledPSSpatialEnvironment for more consistency. ** Tests - New perf tests for navigation mesh enumerators. - New unit tests detecting collisions whe initializing entities. - New unit tests for neighborhood. ** Samples - Addition of a camera informations/control pane in the spatial environment viewer ** Tutorials - Addition of a brand new tutorial doc, to be validated - Existing tutorials slightly changed (mostly cosmetic changes) - New spatial environment tiling tutorial ** Documentation - More code documentation on AlignNavigator, LookWhereYoureGoingNavigator and FaceNavigator COORDINATOR ** New features - Added a start method to the CoordinatorTask ** Bug fixes - Fixed For and Once operators (bad transition names) BEHAVIORTASK ** New features - Set a startTime in a AnimationTask_Motion - ConditionalRandom which triggers each X times on Y releases - ConditionalResult which triggers if a Coordinator task reaches a given Result (SUCCESS, FAILURE or UNDETERMINED) - ConditionalBoolean which triggers when a given boolean turns true - Add a release resources state in all tasks (useful if the task is encapsulated in a while operator) - New resource MASK_ARMS for both arms manipulation - AnimationTask_IkHead & AnimationTask_IkArm are once again available - BehaviorTask_ServantOperator allows enslaving a task to another ** Bug fixes - Fixed a major issue, due to the current version of coordinator, requiring the destruction of the Tasks to be handled by the StateMachineController ** Refactoring - The BehaviorTaskControllers are now named BehaviorEntityComponents, and a first major refactoring pass has been done to work with engine and the current versions of Path and Motion - The namespaces core, animation and navigation have been removed - Updated to the current coordinator - Remove samples & tutorials (move to ogre integration) ACTIVITY ** New features - Support foundations 2.1 - Support coordinator 2.1 //------------------------------------------------------------------------- // GOLAEM SDK 2.0 - CHANGELOG //------------------------------------------------------------------------- FOUNDATIONS ** New features - Added the golaem::engine core files to foundations - Added create and clone methods to the GLM_ATTRIBUTES_RTTI macro family - In golaem::system::RTTI, the function getRTTI is able to retrieve the RTTI instance from the typeID - Added dynamic roles to AbstractSemanticObject - Added the SemanticEnvironmentManager, keep tracks of instantiated semantic objects - Added a setRotate(Quaternion) in the Transformation class - Added an isStarted accessor on the Timer - Added a second intersect method on Segment2 that returns the intersection point - Addition of IPredicate, an interface for predicates functor. - Added a "sameContent" function to FileDir, in order to compare 2 files - Added an approximate equality test for segments - Added a split string function to stringoperators - Added a 2d triangle to segment collision test function - Addition of progress instrumentation. - Added a ConsoleLogOutputter to xmlToCpp executable - Added a library descriptor sample for xmlToCpp - Added getMinimunScalar function to golaem::math - Added getContext and TouchContext methods to IEntityComponent - Added template getEntityComponent and touchEntityComponent methods to Entity - Added template getContext and touchContext methods to ContextsManager - Added a getEntity() method to the EntityRole - Added the glmMemoryTracking.h header, contains two macros : DISABLE_MEMORY_TRACKING and ENABLE_MEMORY_TRACKING for locally enabling Windows Afx memory tracking (e.g. glmRTTI.h ) ** Bug fixes - Fixed a number of methods from DataItem to handle spaces in strings - Fixed XmlToCpp std::string handling - Fixed the std::sort to use names and not the pointers for SemanticRoleRTTI - Fixed getOrientation on EntityRole (conversion from rotation matrix to Euler Angles with axis order was different of X,Y,Z) - Fixed a bug preventing the declaration of GLM_DECLARE_RTTI macros (without inspectable attributes) - New more robust implementation for triangle/triangle collision detection. - Fixed a triangle - triangle collision bug when one of the triangles is degenerated. - Fixed the semanticEnvironment class descriptors to use the correct ancestor classes - Fixed NamespaceDescriptor to use a vector of pointers to classesDescriptors - Fixed xmlToCpp to generate the correct API macro - Fixed an infinite loop in the getDepth method of QuadtreeNode ** Refactoring - Now compile with gcc 4.1.2 - Now compile with Visual Studio 2010 64 bits - Fixed /W4 warnings, removed corresponding #pragma - Refactored SAFE_DELETE -> GLM_SAFE_DELETE - Refactored TRACE_XXX -> GLM_TRACE_XXX - Refactored, even inspectable abstract classes now have to define their RTTI using the GLM_DEFINE_RTTI macros - Change the visibility of some engine methods in order to use engine without XML files. - Addition of the entity name in the Entity constructor - Addition of addComponentEntity method to Entity - Degenerated triangle test uses a precision. - Degenerated segment test uses a precision. - Removed the spatialDataStructures sample - Refactored AttributeDescriptor and SharedAttributesDescriptor from struct to class - Added destructor on NamespaceDescriptor - Explicit error messages while failing to load a plugin - New golaem::Real to be used for real numbers throughout Golaem APIs ; defined in glmTypes.h - golaem::system::Time moved to glmTypes.h and renamed golaem::Time - IComponentEntity renamed IEntityComponent - IComponentContext renamed IContext - ComponentContextsManager renamed ContextsManager - IComponentObject renamed IComponent ** Tests - Added a 2d segment to rectangle collision test function - Added a 2d point to rectangle collision test function MOTION ** New features - New normalized skeleton/posture - New hierarchical skeleton/posture: this hierarchical skeleton/posture is now fully generic for biped, and can handle any coordinate system - Automatic rigging possibilites: hierarchical skeletons may now be fully automatically rigged to the normalized skeleton. In case the automatic rigging doesn't work, a manual, easy to use rigging is available - The hierarchical and normalzied skeletons/postures now have fingers and a tail - Handle fbx motions - Added startShifted function in the MotionProducerPC (with a ttime or a FootSequence::EType) - Added the automatic generation of foot sequence constraint files when loading BvhMotion or FbxMotion - Golaem Motion can now animate quadrupeds as well as bipeds - The kinematic constraints can now be described in a constraint file, and automatically be loaded and pushed trough the whole pipeline till the constraint manager component - New types of constraint's targets available: absolut world position, another bone's position, ground - S4d motions files are now versionned, to allow future modifications to be made without impact on the motion reading - Fbx motion export now available - S4d motions can now be saved with given start and end frames ** Refactoring - HumanSkeleton and HumanPosture removed, please use the NormalizedSkeleton and NormalizedPosture instead - RelativSkeleton and RelativPosture removed, please use the HierarchicalSkeleton and HierarchcialPosture instead - AbsolutPosture removed, no equivalent available anymore - GetParsedObjects becomes touchParsedObjects - HierarchicalBone::setLocalOri replaced by HierarchicalBone::setBaseLocalOri (to take pre-rotation into account) ** Documentation - Rewritten chapter about the skeleton - New chapter about intergration into third party software ** Known issues - Some problems when computing the fingers' postures - Phalanges in the feet can be linked to only one bone in the HierarchicalSkeleton, while they often are separated into two part: big toe and four toes - In some cases, the footprint's axe of rotation is wrong (some deviation on left or right, depending on the skeleton description) PATH ** Global refactoring and enhancement of most features, the important changes are (check the user manual and the tutorial sources for further informations). - Spatial environment now relies on 3D navigation meshes. - New actions easing the use of navigation. - This version introduce the navigation pipeline, a configurable pipeline of navigator that can includes your custom navigators. COORDINATOR ** New features - Golaem engine supported - Task status is updated, even if the task is aggregated within a task operator - States and transitions reference the state machine they belong to - Add accessor on the "autodelete" parameter used to initialize a state machine in StateMachineController ** Bug fixes - Fix bug while attempting to initialize a state machine already initialized - Fix crash in resource scheduler while configurations computation map results empty BEHAVIORTASK ** New features - New navigation task for navigation - New navigation task for goto requests (can handle several targets and target changes) - Conditional class taking a bool functor in parameter - Open loop navigation controller ** Improvements - Supports Golaem Path 2.0, Golaem Motion 2.0, Golaem Coordinator 2.0 - Improvement of the SpatialEnvironmentGround function ** Refactoring - BehaviorTask becomes IBehaviorTask - AnimationTask becomes IAnimationTask - NavigationTask becomes INavigationTask - Conditional becomes IConditional ** Known issues - Entity velocity is still in 2d : can result in unreal animation in stairs and slopes - Some problems with other entities avoidance with the goto task ACTIVITY ** New features - Support foundations 2.0 - Support coordinator 2.0