Wiki

sbpl_arm_planning: sbpl_arm_planner | sbpl_arm_planner_node

Package Summary

Benjamin Cohen - University of Pennsylvania Advised by: Sachin Chitta - Willow Garage Maxim Likhachev - Carnegie Mellon University

Overview

This package contains a new search-based motion planning algorithm for manipulation.

A detailed explanation of how the planner works can be found in the following papers.

Benjamin Cohen, Gokul Subramanian, Sachin Chitta, and Maxim Likhachev, "Planning for Manipulation with Adaptive Motion Primitives, " Proceedings of the IEEE International Conference on Robotics and Automation (ICRA), 2011.

Benjamin Cohen, Sachin Chitta, and Maxim Likhachev, "Search-based Planning for Manipulation with Motion Primitives, " Proceedings of the IEEE International Conference on Robotics and Automation (ICRA), 2010.

One of the notable differences between this planner and the other popular planning algorithms for manipulation is that the sbpl_arm_planner plans to a desired goal pose constraint without solving for an IK solution first. The joint configuration at the desired goal pose will be determined by the cost function used by the planner.

How to Use It

This planner is intended to be used with the sbpl_arm_planner_node interface.

Videos

The following video shows the PR2 manipulating an 80cm stick through a window that is 86cm wide.

The following video is somewhat repetitive. It's intended to show you that the planner is robust in cluttered environments. First the PR2 plans a couple of paths to navigate the gripper between shelves of the cabinet. Then, The PR2 navigates the gripper above and below a tabletop with obstacles on it.

ROS API

API Stability

Shortcomings

ROS Topics

Subscribed Topics

collision_map_occ (mapping_msgs/CollisionMap)

collision_object (mapping_msgs/CollisionObject) attached_collision_object (mapping_msgs/AttachedCollisionObject)

Published Topics

visualization_marker (visualization_msgs/Marker)

visualization_marker_array (visualization_msgs/MarkerArray)

Services Offered

/sbpl_planning/plan_path (motion_planning_msgs/GetMotionPlan)

ROS Parameters

Planner

General

~/planner/search_mode (bool, default: true)

~/planner/epsilon (double, default: 100.0) ~/planner/verbose (bool, default: false) ~/planner/use_dijkstra_heuristic (bool, default: true) ~/planner/use_research_heuristic (bool, default: true) ~/planner/use_uniform_obstacle_cost (bool, default: false) ~/planner/use_multiresolution_motion_primitives (bool, default: true) ~/planner/arm_description_file (string, default: ) ~/planner/motion_primitive_file (string, default: )

Research

~/planner/research/solve_with_ik_threshold (double, default: 0.10)

~/planner/research/sum_heuristics (bool, default: false) ~/planner/research/short_distance_mprims_threshold (double, default: 0.2)

Debug

~/debug/print_out_path (bool, default: true)

Robot Model

~robot_description (string, default: robot_description)

~/robot/num_joints (int, default: 7) ~/robot/arm_name (string, default: right_arm) ~planning_frame (string, default: base_link) ~fk_service_name (string, default: pr2_right_arm_kinematics/get_fk) ~ik_service_name (string, default: pr2_right_arm_kinematics/get_ik)

Collision Space

~/collision_space/reference_frame (string, default: base_link)

~/collision_space/resolution (double, default: 0.02) ~/collision_space/collision_map_topic (string, default: collision_map_occ) ~/collision_space/occupancy_grid/origin_x (double, default: -0.6) ~/collision_space/occupancy_grid/origin_y (double, default: -1.25) ~/collision_space/occupancy_grid/origin_z (double, default: -0.05) ~/collision_space/occupancy_grid/size_x (double, default: 1.6) ~/collision_space/occupancy_grid/size_y (double, default: 1.6) ~/collision_space/occupancy_grid/size_z (double, default: 1.4)

Visualizations

~/visualizations/heuristic (bool, default: false)

~/visualizations/goal (bool, default: true) ~/visualizations/expanded_states (bool, default: false) ~/visualizations/trajectory (bool, default: false) ~/visualizations/trajectory_throttle (double, default: 5) ~/visualizations/collision_model_trajectory (bool, default: false)

Motion Primitives

The following text file format is how the motion primitives are inputted into the planner. In the future, we plan on moving to a yaml format so that we can put the primitives on the rosparam server.

Motion_Primitives(degrees): {# of prims} {# of angles per prim} {# of short distance prims}
x x x x x x x
...

The default primitive file can be found in config/pr2.mprim and looks like this:

Motion_Primitives(degrees): 8 7 4
4 0 0 0 0 0 0
0 4 0 0 0 0 0
0 0 4 0 0 0 0
0 0 0 4 0 0 0
2 0 0 0 0 0 0
0 2 0 0 0 0 0
0 0 2 0 0 0 0
0 0 0 2 0 0 0

Roadmap

See the stack roadmap for more details.

Wiki: sbpl_arm_planner (last edited 2011-04-05 03:57:37 by KenConley)