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.