|Note: This tutorial assumes that you have completed the previous tutorials: navigation tutorials, ros.org.|
|Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.|
Configuring a new cartDescription: This tutorial will describe how to add a new cart to the cart pushing stack.
This tutorial describes how to configure the cart navigation stack for use with a new cart. Note that the stack is currently only supported on the PR2. We further require that the cart is holonomic. The following three files contain parameters that need to be updated given a new cart:
wg_holonomic_cart_params.yaml in cart_pushing_executive/launch/move_base
wg_holonomic_cart_filter_params.yaml in cart_pushing_executive/launch/move_base
sbpl_global_planner.yaml in sbpl_cart_planner/launch/move_base
The above figure shows the setup when the robot initially grasps the cart. There are two coordinate frames. The base_footprint tf frame (denoted by 'B') is is rigidly attached to the robot's base, while the cart tf frame (denoted by 'C') is rigidly attached to the cart. There is also a pivot point (denoted by 'P') rigidly attached to both the base and cart frames. For both frames, the x-axis is red and the y-axis is green. During actual execution of a plan, we also impose workspace limits, by placing limits on the pose of C with respect to B.
The next figure shows the situation when the cart has been rotated. The cart frame has now moved relative to the base frame. Note, however, that the pivot point has remained fixed in both the base and cart frames. The location of the pivot point thus determines the configuration space of the cart-base combination. The choice is between allowing very tight in-place turns, that might require awkward, possibly infeasible, arm configurations, and loose turns that allow the arms more freedom.
All parameters are in wg_holonomic_cart_params.yaml unless specified otherwise.
length - length of cart (in x direction)
width - width of cart (in y direction)
Base-cart configuration space
pivot_x_offset - distance from base to cart frame along x axis of base frame (in sbpl_global_planner.yaml)
Control and feasibility checks
footprint_x_offset, footprint_y_offset - govern the position of the cart frame C in the cart footprint rectangle.
x_min, x_max, y_min, y_max, t_min, t_max - bounds on the pose of cart frame C w.r.t. base origin B (where t is yaw).
max_vel_base_x, max_vel_base_y, max_vel_base_theta - used to limit the velocity of the base w.r.t. the map
max_vel_cart_x, max_vel_cart_y, max_vel_cart_theta - used to limit the velocity of the cart w.r.t. the base
The cart polygon must also be separately specified for the laser filter. All laser returns lying within this polygon are ignored. The polygon is specified in params/polygon in the cart_footprint_filter section of wg_holonomic_cart_filter_params.yaml.
cart_init_pose - initial pose of cart frame w.r.t base frame
l_gripper_grasp, r_gripper_grasp - initial pose of left and right grippers in cart frame