Only released in EOL distros:  


Starting with ROS Groovy this stack is deprecated. Replacement functionality is now part of MoveIt!

Overview (ROS Electric)

As of ROS Electric, the arm navigation stack has been released at 1.0. This release marks a substantial restructuring of the stack and architecture layout of the system. The arm navigation stack contains useful new tools for auto-generation of arm navigation applications for new robot arms and interactive tools for visualizing the different components provided by arm navigation.

Migrating from Diamondback: The arm_navigation stack contains a number of package members of the old stacks motion_planning_common, motion_planners, kinematics, trajectory_filters, and the old arm_navigation stack.


The ROS electric debians for arm_navigation are now available. So, you can use the following command to install arm_navigation

 sudo apt-get install ros-electric-arm-navigation

Getting started with arm_navigation

The best place to start are the electric specific tutorials on the tutorial page. For information on using arm_navigation with your robot start with this tutorial.

Migration from Diamondback

There will be a more substantial write-up shortly of the new features and system design, but the most important change from a compilation perspective is that the old packages mapping_msgs, geometric_shapes_msgs, move_arm_msgs, motion_planning_msgs, planning_environment_msgs, collision_environment_msgs have been collapsed into a single package called arm_navigation_msgs. If you have code in python or C++ or ROS messages that needs any messages or headers from these packages, you can invoke this script from the directory with your package or stack to make all the necessary changes.

For an explanation of some of the most important architecture changes check out this tutorial.


IROS 2011 Tutorial on Motion Planning for Real Robots

The IROS 2011 Tutorial on Motion Planning for Real Robots is a good starting point for learning about the arm navigation stacks. It will show you how to configure the arm navigation capabilities for your own robot.

Wiki Tutorials

There is an extensive set of tutorials/example on the tutorials page. The tutorials will show you everything from checking collisions to sending motion plans to the PR2 robot in simulation.

Overview (Diamondback)

Navigation for robotic arms is implemented using a set of stacks that do everything from motion planning to trajectory filtering. These stacks include the following:

  1. motion_planning_common - This stack contains a common set of components and packages that are useful for motion planning. It contains a set of messages and services that are useful for specifying queries to motion planners, representing plans, etc. It also contains packages for representing geometric shapes and a filter that can remove data corresponding to the body parts of the robot from 3-D sensor data.

  2. collision_environment - This stack contains tools to create a representation of the environment for collision checking. It also contains a package to convert 3-D sensor data in the form of point clouds into collision maps that can be incorporated into the collision space.

  3. motion_planning_environment - This stack contains tools that can be used to check collisions for a given robot state, check trajectories for collision and add/subtract objects from the environment.

  4. motion planners - This stack contains 3 different motion planners for creating motion plans for a robotic arm.

  5. kinematics - This stack contains a set of messages and services for motion planning that allow you to carry out kinematics computation using a kinematics node.

  6. trajectory_filters - This stack contains a set of smoothers that can be used to smooth out trajectories. It also contains smoothers that can be used to create collision-free smooth trajectories for the PR2 robot.

  7. arm_navigation - This stack contains an implementation of an action node that talks to the motion planners, the planning environment and the controllers to create a complete motion planning and control implementation. It also implements monitoring of executed trajectories and will preempt them if they are heading into collision with the environment.

  8. motion_planning_visualization contains plugins to the rviz visualizer that let you visualize motion plans and collision maps.

In addition there are a bunch of PR2 specific stacks that contain specific implementations of different components for the PR2 robot. These include:

  1. pr2_kinematics - This is a specific implementation of kinematics for the PR2 robot.

  2. pr2_kinematics_with_constraints - This stack contains a node to provide collision free ik solutions for the PR2.

  3. pr2_arm_navigation - This stack contains launch files for running the arm navigation components on the PR2 robot.

  4. pr2_arm_navigation_apps - This stack contains launch files for launching a complete motion planning and control framework for the PR2 robot arms.

Report a Bug

There seems to be no arm_navigation component anywhere, but these tracs might be or might have been suitable:

Component motion planning on ros-pkg: <<TracLink(ros-pkg motion+planning)>> Component motion_planners on wg-ros-pkg: <<TracLink(wg-ros-pkg motion_planners)>>

Wiki: arm_navigation (last edited 2013-01-18 17:12:36 by SachinChitta)