I've recently gotten a chance to play with MoveIt -- a new manipulation framework for ROS. MoveIt is the replacement for arm_navigation in ROS Groovy and later. Like arm_navigation, MoveIt allows you to plan, in collision free space, the movement of your robot arm. However, unlike arm_navigation, it was designed from the ground up as a series of C++ libraries, with thin ROS wrappers, meaning it is far more extensible.

In the past, I had wrapped arm_navigation's move_group with the simple_arm_server package, which allows 5-DOF arms, like Maxwell's to work with MoveIt. This time, I've taken the easy way out and just added a 6th degree of freedom, an upper arm roll:

I had one extra MX-64 around, and printed a couple of brackets on a MakerBot Replicator (files are posted on Thingiverse). With this extra servo, all of MoveIt pretty much works out of the box. Once I wanted to control the real robot, I ran into a bit of issue. While I've heard that you can use the PR2 controller manager plugin, I couldn't quite get the settings correct. I therefore created a simpler version, which you can find in Maxwell's github in the simple_moveit_plugins package (Update: the simple_controller_manager is now a part of MoveIt). Here's a quick shot of RVIZ with the MoveIt plugin:

While MoveIt is still version 0.3.20 something, it's actually pretty awesome.