CRAM v0.7.0

Four contributors have been working hard to bring to you this new version of CRAM.

Here is a summary of the main new features:

  • We have worked hard on implementing environment manipulation and the first prototype is included in v0.7.0!
    • Currently, PR2 can perform an opening and closing action on any drawer in the kitchen.
    • Support for rotational joints is not finished yet. Coming up in next version, stay tuned!
    • Location costmap for positioning the robot base such that manipulation is possible is provided (right arm does not always produce good costmaps, stick to the left arm for now).
    • Plans for high-level actions of accessing and sealing containers are implemented: collision and IK checks are done in projection prior to execution.
    • New types of failures are included specifically for environment manipulation.
    • Objects can be attached to the environment for following drawers when they are manipulated. Once the robot grasps the object, attachment is destroyed as expected.
    • Environment is loaded as a URDF now, semantic map support is there but not used per default. To enable collision checks between the robot and the environment Bullet engine collision flags are set for the robot and the environment.
    • The environment is loaded from meshes represented in *.obj file format, and are loaded into Assimp and Bullet as compound shape objects, to circumvent the problem of convex hull collision algorithms used by Bullet per default.
    • An update is published on a topic to update the environment representation, e.g., in RViz.
  • Some new location costmaps have been implemented and a lot of the old ones have been refactored and nicified.
    • ON and IN relations are now implemented using URDF axis-aligned bounding boxes and the ON and IN keys require an object designator as a value.
    • RANGE, RANGE-INVERSE and SIDE have been implemented for spatial relation costmaps to specify parts of the costmap region.
    • LEFT-OF, RIGHT-OF, IN-FRONT-OF, BEHIND, FAR, NEAR have been refactored to work with and without supporting planes and are more robust now.
  • GiskardPy software is now used as a manipulation controller with support for collision avoidance
    • Different phases of PICKING-UP and PLACING actions have different collision flags.
    • The environment representation of GiskardPy is updated through the usual CRAM event system.
  • Grasping interfaces and their implementation has been reworked and further improved, and some bugs have been fixed (although some are still remaining :) ).
  • Per default, installing KnowRob is not required anymore for using the core CRAM packages and the projection with PR2 robot.
    • Due to numerous problems related to ROS Java, loosening the dependency on KnowRob should simplify the installation process for ROS beginners.

Please do take a look at the detailed ChangeLog to get familiar with the other smaller but nonetheless important changes.