Note: This tutorial assumes that you have completed the previous tutorials: navigation tutorials,
(!) Please ask about problems and questions regarding this tutorial on 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 cart

Description: This tutorial will describe how to add a new cart to the cart pushing stack.

Tutorial Level:


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

Base-cart geometry


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.

Cart geometry

  • 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

Laser filtering

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.

Initial configuration

  • 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

Wiki: cart_pushing/Tutorials/Configuring a new cart (last edited 2010-11-02 23:30:29 by BhaskaraMarthi)