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.

2018/08/14 19:36 · Gayane Kazhoyan

CRAM Plan Transformation

In the scope of his bachelor's thesis, Arthur Niedzwiecki researched the topic of plan transformations in CRAM. He implemented new transformation rules for pick and place scenarios and developed a plan transformation pipeline. The video explains three possible transformations that are applied to the plans used on our PR2 (and Boxy) robot in the projected as well as real world environments. By analyzing the task tree of an executed CRAM plan, improvable patterns are found and altered to generate a better performing plan.
The code is currently under review and will be merged soon. So keep an eye open for a new cram_plan_transformation package!

2018/05/18 16:28 · Arthur Niedzwiecki

CRAM v0.6.0

Yet another version is out, yay!

  • New feature: using plan projection for adapting a plan to its environment:
    • changed PERFORM from cram function into goal to use execution trace tools
    • moved CET:*EPISODE-KNOWLEDGE* projection var declaration into pr2-proj package
    • TASK-TREE-NODE now has an optional NODE param
    • added predicates and testing functions for traversing task tree
    • AT and DURING and THROUGHOUT are now from cet package
    • implemented finding best projection round according to driving distance
    • fixed (HOLDS ?TIMELINE ?OCC …)
    • LOC occasion now returns a designator with pose-stamped
    • made relevant desigs of fetch and deliver plans into explicit args
    • implemented WITH-PROJECTED-TASK-TREE
    • projection reasoning works on the real robot
  • Fetch and deliver plans are now cleaner and nicer:
    • GRASP is now an attribute of PICKING-UP action desig
    • moved SEARCHING out of FETCHING into TRANSPORTING
    • world is now simulated after spawning a perceived obj
    • in the demo placing locations are now more easily reachable
    • ROBOT-STATE-CHANGED is asserted even if navigation action failed
    • stopped using CAD model fitter for perception for CUP and BOWL
    • added second lift pose to GET-OBJECT-GRASPING-POSES.
  • Various smaller new features:
    • implemented broadcasting of TF from projection (robot + items)
    • added *SPAWN-DEBUG-WINDOW* parameters for belief state setup
    • added virtual links of the robot's URDF into projection TF tree.
  • Bugfixes and small improvements:
    • allow asking CURRENT-DESIG also on NULL objects
    • fixed PROJECTION-RUNNING predicate
    • WITH-REAL-ROBOT now creates a named top level
    • RS now only supports input parameters such as TYPE and CAD-MODEL
    • added null pointer guards in CPL constructs
    • bugfix: when checking for collisions ignoring attached objects
    • bugfix: IK solver only works if every arm movement is asserted into TF

Please see the detailed changelog on GitHub.

2018/04/11 19:28 · Gayane Kazhoyan

CRAM v0.5.0

New features:

  • Created new package CRAM-PR2-FETCH-DELIVER-PLANS with FETCHING and DELIVERING plans that fetch an object from a surface in the environment and deliver it at the specified location on a surface.
  • Created new types of plan failures, mostly high-level ones, such as OBJECT-UNFETCHABLE.
  • Created new package CRAM-PR2-PROJ-REASONING where projection-based reasoning is done, etc. reasoning about collisions.
  • Created new package CRAM-PR2-PICK-PLACE-DEMO with a pick and place scenario in the kitchen.
  • Manipulation configuration calculations have been majorly improved:
    • Pregrasp and postgrasp are now transforms and not poses to enable easy multiplication
    • The gripper coordinate frame of different robots does not influence object grasping configuration anymore
    • Pregrasp configuration is now calculated w.r.t the object, such that the gripper approaches the object without tipping it over.
    • Grasping actions can now also accept a list like ”'(left right)”
    • Some new objects have been added, such as cereal, etc.
    • Old offsets have been fixed to work better on the real robot.
  • Basic logging for pick and place actions has been implemented, see “cram_cloud_logger” package:
    • Object designators can be logged.
    • Poses can be logged.
    • Location designators can be logged.
    • Fetch and deliver action designators can be logged with their parameters but without action hierarchy.
    • Success or failure boolean of an action can be logged.
  • When picking action asks for IK solutions, now a torso angle sampling is also done to increase the robot's reachability area.
  • Implemented a caching mechanism for IK solver as it seemed to have a problem with configurations that have already been processed.
  • A pretty printer for DESIGNATOR class has been implemented.
  • TF utilities from “cram_pr2_cloud” package were moved into “cram_tf” package, they're quite useful (multiplying transform-stamped-s etc.), check them out.
  • Perceived object events are now handled correctly by the belief state, such that perceived objects get spawned in the bullet world etc.
  • Object attachment and detachment events are now handled correctly, including Bullet world attachments.
  • (a location (of (an object (pose … ) now returns the pose of the object.
  • Added ROBOT-CARRYING-POSES to go together with ROBOT-PARKING-POSES.
  • Implemented WITH-PROJECTED-ROBOT & WITH-SIMULATED-ROBOT & WITH-REAL-ROBOT macros for running plans accordingly.
  • Renamed:
    • cram_pr2_pick_place_plans → cram_mobile_pick_place_plans
    • cram_pr2_plans → cram_pr2_plans_deprecated
  • Rearranged and cleaned up a lot of code, especially the pick and place plans.
  • An initial version of a script for checking ASDF dependencies and configuring workspaces with CATKIN_IGNORES was implemented.

See ChangeLog for more details.

2018/01/30 18:02 · Gayane Kazhoyan

CRAM v0.4 is out

The development of CRAM continues and we have a new version out!

The biggest changes in CRAM v0.4.0 is comparison to v0.3.0 is the restructuring: all main CRAM repositories got merged into one big repo, which makes maintenance and installation easier. Now we can be sure that all the packages have compatible with each other versions. Moreover, to install CRAM you now only need to clone one repository from GitHub, run rosdep install and you're ready to go.

For those who worry about huge repositories with enormous dependencies: don't worry! With the new script for managing dependencies, only the dependencies of a particular high-level package you want to use or a particular tutorial code, will be installed on your system. It's a smart script that crawls the package.xml file of the entry high-level package and all its dependencies and adds CATKIN_IGNORE files automatically to all the unused packages. More about this in the v0.4.1 blog post, stay tuned.

The tutorial on using PR2 for pick and place tasks in a fast simulation environment has been updated with new cool plans, so do check it out. The beginner tutorials have also been updated and majorly improved, with these tutorials learning CRAM hasn't ever been more fun than it is now.

2017/09/19 17:05 · Gayane Kazhoyan

Older entries >>