Push Dataset

We provide a comprehensive and high-fidelity dataset of planar pushing experiments. The dataset contains timestamped poses of a pusher and a pushed object, as well as forces at the interaction. The push interaction varies in 6 dimensions: surface material, shape of the pushed object, contact position, pushing direction, pushing speed, and pushing acceleration.

Paper: Kuan-Ting Yu, Maria Bauza, Nima Fazeli, and Alberto Rodriguez. More than a Million Ways to Be Pushed: A High-Fidelity Experimental Dataset of Planar Pushing. (To appear in IROS 2016) arXiv.

Contact: Kuan-Ting YuMaria Bauza



Get the data

plywood-rect1 data: you can have access to this first set of data through this dropbox link. We provide the files in .json and .h5 formats.

abs data: all the data collected on the abs surface can be found here.

delrin data: all the data collected on the delrin surface can be found here.

pu data: all the data collected on the pu surface can be found here.

plywood data: all the data collected on the plywood surface can be found here.

Each data file corresponds to one straight push and contains the interaction forces and the positions of the object and the pusher. In particular, each file contains three kinds of measurement:

  • "tip_pose": contains a sequence of tip positions. Each measurement contains the time in second, the x and y position in meters of the center of the tip with respect to the robot frame and the orientation of the tip in radians.
  •  "obj_pose": contains several measurements of the object position. Each measurement contains the time in second, the x and y position of the center of the object with respect to the robot in meters and its orientation in radians.
  • "ft_wrench": provides the force excerted on the pusher. Each measurement contains the time in second and the force in x and y in Newton, and torque in z in Newton*meters.

The conventions used to define the centers of the objects and their orientation will be explained later.

Note the time is not synchronized among the three measurements. We suggest to use resample() function in matlab or python pandas to synchronize them.

Repeated data: we have also added the set of repeated trajectories described in the paper. You can now find them here.

Data capturing setup

About the surfaces

Here are the McMaster links to the surface materials we used. 

abs Easy-to-Machine ABS Shapes, 1/2" Thick, 24" x 24", Black

delrin White Delrin ® Acetal Resin Sheet, 1/2" Thick, 24" x 24"

    plywood Marine-Grade Plywood Sheet, 24" x 24" x 1/2"

    pu Abrasion-Resistant Polyurethane Rubber Sheet, Semi-Clear, 24" x 24", 1/4" Thick, 80A Durometer

    About the objects

    Mesh models

    Detailed example: rect1

    The pictures of the object shape are given at zero orientation and match the notation used for naming the data. The length of the square sides is 90 mm.


    File notation:

    Each file has a file name containing fields of a (acceleration in mm/s^2), v (velocity in mm/s), i (side number), s (contact point position on that side 0 to 1), and t (contact angle in rad).
    If the trial has no acceleration then a = 0, and if the trail has nonzero acceleration v = -1.

    The file 'motion_surface=plywood_shape=rect1_a=0_v=20_i=1.000_s=0.700_t=-0.349.h5' will start pushing the square at side 1, approximately at the contact point 0.3 and with an angle of -20 degres. The trajectory of the pusher and the object can be represented from the data as:

    In this case, the pusher follows a straight line without accelartion and with a constant velocity of 20 mm/s.

    Shapes notation

    Dimensions are given in meters (m). In the next figures, blue gives the contact-point notation and the green signs (+, - ) the definition of the angle of pushing.


    rect1:  a= 0.0450   b= 0.0450
    rect2:  a= 0.0450   b= 0.0563
    rect3:  a= 0.0675  b= 0.0450



    ellip1:  a= 0.0525  b=0.0525
    ellip2:  a= 0.0525  b= 0.0654
    ellip3:  a= 0.525  b= 0.785



    tri1:  A= (0.0450, 0.0450)  B = (-0.0809, 0.0450)  C = (0.0450, -0.0809)
    tri2:  A= (0.0450, 0.0450)  B = (-0.1060, 0.0450)  C = (0.0450, -0.1060)
    tri3:  A= (0.0450, 0.0450)  B = (-0.1315, 0.0450)  C = (0.0450, -0.0806)



    Each side measures: 0.0605 m




    Here is the repo for the dataset. You can find out the details of data collection process or useful python and matlab cripts to analyze the data