CRAM @ ICRA 2020
This summer our paper on CRAM plan transformations titled “Towards Plan Transformations for Real-World Mobile Fetch and Place” has been presented at the ICRA 2020 conference in a virtual form. You can see the video of the presentation here.
You can read more about plan transformations at the EASE blog or look at the implementation in the cram_plan_transformation
package.
PyCRAM with PyBullet
For the Bachelor Thesis of Andy and Dustin Augsten and later Jonas Dech CRAM was newly implemented in Python. The purpose behind this decision was to make the concepts of CRAM easier accessible to a wider audience.
Currently PyCRAM doesn't include all features of CRAM but the core features are implemented for example the CRAM Plan Language, Process Modules, Motion Designator, the BulletWorld and it's reasoning. While a lot of features, that are already in CRAM, aren't yet implemented in PyCRAM, it is already possible to write a functioning plan for a robot (see the second demo here). With the BulletWorld it is also possible to simulate these plans for testing or to plan future actions. The reasoning mechanisms of the BulletWorld allow to get information about the relationship of two objects in the BulletWorld.
Currently the CRAM Team also works to implement new features for PyCRAM, so stay tuned for more updates.
Below you can see a video which highlights the current capabilities of the PyCRAM framework.
RoboCup@Home German Open 2019
The CRAM Team participated at the German league of RoboCup@Home 2019! Within the Master Project Suturo we had a team of five Master's students, three of whom worked with CRAM on the HSR robot. We are happy to announce that CRAM as a framework was the cornerstone to solve the robot tasks. We used CRAM to write general plans, so the robot managed to enter the arena on its own and perform pick and place tasks. Of course we have cooperated with other frameworks that come from the Institute for AI of the University of Bremen, which we are affiliated with.
Participating in a RoboCup was an exciting and rewarding experience for all of us. Furthermore it showed the students just once again why it is so important to incorporate Failure Handling and test their system for all eventualities. We look forward to the future and hope for a second time CRAM@Robocup.
CRAM Logo is out
There was a process in which this logo was created. At first it was too detailed or even stuffed. Actually, a CRAM logo needs everything, a camera, some tires, a lot of grippers and much more (because CRAM can do so much).
However, we had to reduce it so far that it is abstract but still recognizable. Therefore, we are very satisfied with the logo: it should represent the manipulation of itself and the environment at the same time. We hope you enjoy it too!
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.