Skip to content

Releases: stack-of-tasks/pinocchio

Release 1.1.2

31 May 15:39
Compare
Choose a tag to compare

Summary

This release is directly accessible as a Debian package. Please see https://github.com/stack-of-tasks/pinocchio/wiki/installation for further details.

New Features

  • Added operational frames (that are a Plucker coordinate frame attached to a parent joint inside a kinematic tree). Position and Jacobian of such frames can be computed
  • Geometry primitives can now be handled (and added to the Pinocchio GeometryModel) when encountered in an urdf file
  • Implemented simple srdf parsing for GeometryData : parse the desactivated collision pairs
  • Added Articulated Body Algorithm (ABA), and CCRBA
  • When parsing a urdf file, now look in the environment variable ROS_PACKAGE_PATH for directories where to search for meshes. Users can provide hint directories to search in as a priority. Updated python RobotWrapper consequently
  • Added forward dynamics with contact algorithm
  • Added algorithms working with vectors of configuration or velocity(either on a JointModel or on a Model, iterating through all the kinematic tree)
    • One can integrate a configuration at a constant velocity during a unit time
    • One can differentiate two configurations (i.e compute the velocity that must be integrated during a unit time to go from first configuration to the other )
    • One can interpolate between two configurations
    • One cancompute the distance between two configurations ( such as dist = norm ( difference) )
    • One can shoot a configuration uniformly sampled between specified limits
  • Added Impulse Dynamic Algorithm
  • Completed the list of method to access or call Joint's data or method when joint are stored in a variant.
  • Added JointAccessor that is a general joint encapsulating a JointVariant ( abstracting the use of visitors for the user).

API modifications

  • Moved limits from joint models to Model as vectors of size nq for position limits and size nv for velocity and effort limits
  • The Geometry objects stored in GeometryModel are now splitted in two types : visual and collision

Minor

  • Improved documentation of Data, Model, Spatial Classes
  • Improved efficiency when executing algorithms
  • One can now create Inertia for simple shapes such as cylinders, boxes, ellipsoid
  • Rework some unittests to increase to coverage of whole package ( C++ and Python )

Bugs Fixed

  • Fixed operator Inertia x constraint in JointSphericalZYX
  • Fixed the Dense conversion of joints (models and datas)
    Fixed bugs in JointRevoluteUnaligned and JointPrismaticUnaligned to access the access when visiting a variant containing such joints with boost::fusion

Release 1.1.0

04 Feb 12:15
Compare
Choose a tag to compare

Summary

New Features

  • Spatial classes now follow the CRTP Design Pattern, for performance reasons.
  • JointModels are now exposed in Python. This feature enables one to load a URDF model with a precise root joint and to create his/her own model.
  • Python models can now be created by hand ( ex: buildEmptyModel() + calls to addBody() )
  • Added utility tools to check an urdf model ( same as check_urdf but dislpay the Pinocchio model created from urdf parsing)
  • Add unaligned prismatic joint
  • Add geometry through Flexible Collision Library (hpp-fcl)
    • Add dedicated structs to handle geometry. GeometryModel (list of geometry objects and its relation wrt kinematic model) and GeometryData
    • When parsing urdf, meshes can be read from collada files and handled in Pinocchio
    • Created parser that handles geometry and exposed it in python
    • Add algorithms to update the geometry kinematics, to compute the distances for pairs of collision or if they are colliding or not.
  • Added algorithms to compute the kinetic energy, the potential energy and exposed it in python
  • The complete documentation is in progress

API modifications

  • Change name of kinematics algorithms: now forwardKinematics instead of previous geometry, kinematics and dynamics.

Minor

  • SimpleHumanoid is now built with joint limits
  • Handle floating joints in urdf parsing
  • Slight separation between joints and body in Model to avoid confusion
  • Internally, Motion and Force classes now use a 6D-vector instead of two 3D-vectors for linear and angular part

Bugs Fixed

  • Fixed a bug when trying to merge a link with its parent in case of fixed joint. Now merge only if it has an inertial tag.
  • All the algorithms are now set to inline
  • Fix compilation errors

Installation

The source of the release are available in the file pinocchio-1.1.0.tar.gz just below along with a binary version for 64-bits Debian architecture of Pinocchio pinocchio_1.1.0_amd64.deb and its dependencies. For information, those packages will be installed in /opt/openrobots directory.

Release 1.0.2

14 Sep 08:46
Compare
Choose a tag to compare

Summary

New Features

  • The limits in position, velocity and torque for joints Revolute and Prismatic are now parsed from urdf model and accessible
  • Implementation of exp and log functions on SE3 in C++ with its python binding thanks to @aelkhour
  • Data now contains information relative to the center of mass position, velocity and acceleration
  • Add Lua parser - compatible with RBDL
  • Add translational joint
  • Add planar joint

Minor

  • Reduction of compilation warnings.

Bugs Fixed

  • Fixed bug in operator Y*S in JointRevoluteUnaligned

Release 1.0.0

03 Apr 06:13
Compare
Choose a tag to compare

The following algorithms are implemented.
• Recursive Newton-Euler algorithm (RNEA, i.e inverse dynamics)
• Composite Rigid Body algorithm (CRBA, i.e generalized inertia matrix)
• Sparse Cholesky decomposition of the inertia matrix (for constrained forward-dynamics resolution)
• Placement Jacobians (i.e application from configuration velocities to end-effector spatial velocities), along with computation of body placements, velocities and accelerations.
• Center of mass and its Jacobian

The model can either be parsed from a URDF format or be created by appendending bodies. The following joint models are implemented.
• Revolute X, Y, Z (optimized) and unaligned with Cartesian directions
• Prismatic X, Y, Z
• Spherical (with and withoug singularities)
• FreeFlyer (i.e. no constraint, for mobile robots like humanoids -- using quaternion representation for the rotation)
• Fixed (concatenation of two consecutive bodies)