2.6.0 -> next - Performance improvements of single DOF revolute joints around coordinate axes. - Removed Model::X_J. All joints now have to compute X_lambda directly, especially CustomJoints 2.5.0 -> 2.6.0 - Added support for closed-loop models by replacing Contacts API by a new Constraints API. Loop constraints can be stabilized using Baumgarte stabilization. Special thanks to Davide Corradi for this contribution! - New constraint type CustomConstraint: a versatile interface to define more general types of constraints (e.g. time dependent), contributed by Matthew J. Millard. - New joint type JointTypeHelical that can be used for screwing motions (translations and simultaneous rotations), contributed by Stuart Anderson. - Added support to specify external forces on bodies on constrained forward dynamics and NonlinearEffects() (contributed by Matthew J. Millard) - Changed Quaternion multiplication behaviour for a more standard convention: multiplying q1 (1,0,0,0) with q2 (0,1,0,0) results now in (0,0,1,0) instead of the previous (0,0,-1,0). - Removed Model::SetFloatingBaseBody(). Use JointTypeFloatingBase instead. - LuaModel: extended specification to support ConstraintSets. 2.4.1 -> 2.5.0 - Added an experimental Cython based Python wrapper of RBDL. The API is very close to the C++ API. For a brief glimpse of the API see the file python/test_wrapper.py. - Matthew Millard added CustomJoints which allow to create different joint types completely by user code. They are implemented as proxy joints for which their behaviour is specified using virtual functions. - Added CalcMInvTimesTau() that evaluates multiplication of the inverse of the joint space inertia matrix with a vector in O(n) time. - Added JointTypeFloatingBase which uses TX,TY,TZ and a spherical joint for the floating base joint. - Loading of floating base URDF models must now be specified as a third parameter to URDFReadFromFile() and URDFReadFromString() - Added the URDF code from Bullet3 which gets used when ROS is not found. Otherwise use the URDF libraries found via Catkin. - Added CalcPointVelocity6D, CalcPointAcceleration6D, and CalcPointJacobian6D that compute both linear and angular quantities - Removed Model::SetFloatingBase (body). Use a 6-DoF joint or JointTypeFloatingBase instead. - Fixed building issues when building DLL with MSVC++. 2.4.0 -> 2.4.1 (20 April 2016) This is a bugfix release that maintains binary compatibility and only fixes erroneous behaviour. - critical: fixed termination criterion for InverseKinematics. The termination criterion would be evaluated too early and thus report convergence too early. This was reported independently by Kevin Stein, Yun Fei, and Davide Corradi. Thanks for the reports! - critical: fixed CompositeRigidBodyAlgorithm when using spherical joints (thanks to Sébastien Barthélémy for reporting!) 2.3.3 -> 2.4.0 (23 February 2015) - Added sparse range-space method ForwardDynamicsContactsRangeSpaceSparse() and ComputeContactImpulsesRangeSpaceSparse() - Added null-space method ForwardDynamicsContactsNullSpace() and ComputeContactImpulsesNullSpace() - Renamed ForwardDynamicsContactsLagrangian() to ForwardDynamicsContactsDirect() and ComputeContactImpulsesLagrangian() to ComputeContactImpulsesDirect() - Renamed ForwardDynamicsContacts() to ForwardDynamicsContactsKokkevis() - Removed/Fixed CalcAngularMomentum(). The function produced wrong values. The functionality has been integrated into CalcCenterOfMass(). - CalcPointJacobian() does not clear the argument of the result anymore. Caller has to ensure that the matrix was set to zero before using this function. - Added optional workspace parameters for ForwardDynamicsLagrangian() to optionally reduce memory allocations - Added JointTypeTranslationXYZ, JointTypeEulerXYZ, and JointTypeEulerYXZ which are equivalent to the emulated multidof joints but faster. - Added optional parameter to CalcCenterOfMass to compute angular momentum. - Added CalcBodySpatialJacobian() - Added CalcContactJacobian() - Added NonlinearEffects() - Added solving of linear systems using standard Householder QR - LuaModel: Added LuaModelReadFromLuaState() - URDFReader: Fixed various issues and using faster joints for floating base models - Various performance improvements 2.3.2 -> 2.3.3 (21 October 2014) - critical: fixed ForwardDynamicsContacts with constraints on a body hat is attached with a fixed joint. Previous versions simply crashed. Thanks to Yue Hu for reporting! - rbdl_print_version() now properly prints whether URDFReader was enabled at build time - build system: fixed roblems especially building of the URDFreader - build system: all CMake variables for RBDL are now prefixed with RBDL_ - FindRBDL.cmake now can use components to search for the LuaModel or URDFReader addon 2.3.1 -> 2.3.2 (29 August 2014) - critical: fixed ForwardDynamicsLagrangian which used uninitialized values for the joint space inertia matrix - critical: fixed ForwardDynamicsContacts when using 3-dof joints - critical: fixed CalcBodyWorldOrientation for fixed joints (thanks to Hilaro Tome!) - critical: fixed CompositeRigidBodyDynamics when using 3-dof joints (thanks to Henning Koch!) 2.3.0 -> 2.3.1 (13 July 2014) - critical: fixed angular momentum computation. Version 2.3.0 produced wrong results. Thanks to Hilario Tome and Benjamin Michaud for reporting! - critical: fixed JointTypeEulerZYX. Previous versions produce wrong results! - fixed library version number for the LuaModel addon. It now uses version 2.3 instead of the wrong 2.2. 2.2.2 -> 2.3.0 (14 March 2014) - disabled clearing of joint space inertia matrix in CRBA. It is expected that the matrix is cleared by the user when neccessary. - Added experimental joint type JointTypeEulerZYX. It does not emulate multiple degrees of freedom using virtual bodies instead it uses a 3 DoF motion subspace. Performance is better for the CompositeRigidBodyAlgorithm but worse for other algorithms. - Using Eigen3's default column-major ordering for matrices when using Eigen3. This should have no effect for the user unless matrix elements are accessed using the .data()[i] operator of Eigen3's matrix class. However if .data()[i] is used the access indices have to be adjusted. - added functions to compute kinetic and potential energy and the computation of the center of mass and its linear velocity: RigidBodyDynamics::Utils::CalcCenterOfMass RigidBodyDynamics::Utils::CalcPotentialEnergy RigidBodyDynamics::Utils::CalcKineticEnergy RigidBodyDynamics::Utils::CalcAngularMomentum 2.2.1 -> 2.2.2 (06 November 2013) - adjusted default constructor for Body. It now has the identity matrix as inertia, instead of a zero matrix. - LuaModel: made sure that the Body value is optional and uses the default Body constructor if not defined. 2.2.0 -> 2.2.1 04 (November 2013) - properly exporting LuaTables++ functions when using LuaModel addon Fixes linking - fixed exported library version (now at 2.2 as expected) 2.1.0 -> 2.2.0 (28 October 2013) - added spherical joints that do not suffer from singularities: Use joint type JointTypeSpherical - added Model::q_size, and Model::qdot_size that report the sizes including all 4 Quaternion parameters when spherical joints are used. User is advised to use Model::q_size and Model::qdot_size instead of Model::dof_count. - removed "constraint_" prefix from constraint impulses, forces and accelerations from the ConstraintSets: renaming required if values are queried - Contact impulses: specification of a contact velocity after a collision: added ConstraintSet::v_plus which can be set for the desired constraint velocity after a collision. Previously it used the values stored in ConstraintSet::constraint_acceleration. User has to store desired exit velocities manually in CS::v_plus 2.0.1 -> 2.1.0 (29 September 2013) - made codebase compatible to Debian Binary symbol export was changed. No change in user code required, however everything needs to be recompiled and linked. - Removed Lua 5.2 source When building the addon LuaModel, one hast to have it installed on the system already. - Removed UnitTest++ sources When building tests one has to have it installed on the system already. 2.0.0 -> 2.0.1 (05 September 2013) - fixed compiler errors on some older compilers No change required when using RBDL version 2.0.0. - fixed CMake configurations for examples No change required when using RBDL version 2.0.0. 1.X.Y -> 2.0.0 (18 July 2013) - removed Model::Init(): All initialization is now done in the default constructor in Model(). To be compatible with the new API simply remove any calls to Model::Init(). - removed Eigen3 sources: Eigen3 is no more included in RBDL instead it uses the Eigen3 library that is installed on the system. If you want to use RBDL with Eigen3 you have to install it on your system yourself. - inverted sign of contact forces/impulses: ConstraintSet::constraint_force and ConstraintSet::constraint_impulse are now the forces or impulses that are acting on the constrained body by the constraint. 1.0.0 -> 1.1.0 (20 February 2013) - removed constructor Body (mass, com, length, gyration_radii) This constructor did some erroneous calculations to compute the real radii of gyration. It was removed as the two remaining constructors are properly tested and are more general.