Monday, February 25, 2013


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. 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.

Saturday, February 16, 2013

3D Mapping is Here

It's just about 2 years since Willow Garage ran the ROS 3D contest to see what the community could come up with for Kinect/OpenNI applications. The full results are here. The winner in the "most useful" category was a 3D SLAM application called RGBDSLAM. I remember trying to get it running, I eventually did, but it was not easy.

Just this past week I saw a post from the guys over at CCNY, showing off their new visual odometry and keyframe (offiline) mapping system. I decided to give it a try... and it worked out of the box no problem. Here's a video CCNY posted:

A few days later I came across a video (and code with ROS wrappers) from IntRoLab at Sherbrooke:

I also have noticed that RGBDSLAM is still getting updates and documentation revisions, so it is still getting active improvements.

I'm thinking it would be really cool to put together an application that turn these 3d maps into 2d maps usable by the ROS navigation stack. Robots like TurtleBot can typically localize against a map with just their Kinect-like sensor, but building maps has traditionally been tough due to the lack of features visible in a 57-degree wide "fake-laserscan".

This is really awesome stuff for the robotics community -- we have at least 3 different 3D mapping applications released into the ROS ecosphere. Are there more out there that anyone knows of? If you've used these apps, feel free to comment!