This repo contains the assets used in Tang and Lin, et al., "IndustReal: Transferring Contact-Rich Assembly Tasks from Simulation to Reality," Robotics: Science and Systems (RSS), 2023.
Specifically, this repo contains the following:
- 3D-printable STL files for all 3D-printed parts
- OBJ files for all 3D-printed parts (if you would like to import the assets into your simulator)
- Links to Onshape CAD documents for all 3D-printed parts (if you would like to modify the assets and export your own STL files)
- Purchasing information for all non-3D-printed parts
The files, documents, and information are organized by assembly type.
Please read these notes prior to printing or using the assets.
The STL files were exported directly from Onshape. We 3D printed these files on an Ultimaker 3 with MatterHackers PLA filament at 0.15 mm layer resolution.
In general, 3D printers do not print features to the exact dimensions specified in STL files (e.g., due to overextrusion), and such deviations may vary from printer to printer. Thus, after printing the parts, we measured the diametral clearance between mating parts for the insertion task (i.e., between pegs and holes, and between gears and gearshafts) using calipers, and we observed a 0.5-0.6 mm clearance between the parts. Higher or lower clearances may have a significant impact on policy performance in the real world; if you would like to closely reproduce the exact conditions used in the IndustReal paper, you should ensure that your printed parts also have clearances in this range. To do so, you may have to modify the CAD documents to increase or decrease hole or shaft diameters, such that your printer ultimately achieves the desired clearance.
The OBJ files were exported directly from Onshape for convenience. These are not the exact OBJ files used in the IndustReal policy training code, as those files were post-processed for use with our simulator. To access a subset of those files, please see IndustRealSim.
By default, Onshape may tessellate certain surfaces with very few elements or use elements with extreme aspect ratios. When you use these meshes in a simulator, certain contact schemes may be insensitive to mesh quality, whereas others may be sensitive. We simulated physics using SDF-based contacts from Factory in Isaac Gym. This contact scheme offers exceptional performance for contact-rich interactions, but is sensitive to mesh quality; for more information, see the Best Practices and Debugging section of the Factory documentation.
MTL files corresponding to each OBJ file are provided simply to add color during visualization.
There are typically multiple tabs in each Onshape CAD document (i.e., one for each part studio), and each part studio may contain multiple configurations (e.g., for different sizes). If you do not immediately see a particular part, please check the tabs and configurations.
- Peg-and-hole assemblies
- Electrical connector assemblies
- Gear assembly
- Optical breadboard
- Franka fingers
- Camera and mount
- Lighting
The pegs are initially located in the peg trays. The robot should remove the pegs from the peg trays and insert the pegs into the holes.
- Round pegs: Misumi RGOCG8-50 8 mm peg | Misumi RGOCG12-50 12 mm peg | Misumi RGOCG16-50 16 mm peg
- Note: These parts were sourced from NIST Task Board 1
- Round peg trays: STL | OBJ | CAD
- Round holes: STL | OBJ | CAD
- Rectangular pegs: Misumi KET8 8 mm peg | Misumi KET12 12 mm peg | Misumi KET16 16 mm peg
- Note: These parts were sourced from NIST Task Board 1. They are currently only available in a length of 300 mm and must be cut to a length of 50 mm.
- Rectangular peg trays: STL | OBJ | CAD
- Rectangular holes: STL | OBJ | CAD
The plugs are initially located in the plug trays, and the sockets are permanently press-fit into the socket trays. The robot should remove the plugs from the plug trays and insert the plugs into the sockets.
To install the sockets into the socket trays, we tapped them carefully with a rubber mallet.
- NEMA 2-prong plug: Tensility International 16-00241 plug
- NEMA 2-prong plug tray: STL | OBJ | CAD
- NEMA 2-prong socket: Schurter 4300.0705 socket
- NEMA 2-prong socket tray: STL | OBJ | CAD
- NEMA 3-prong plug: Qualtek Q-910 plug
- NEMA 3-prong plug tray: STL | OBJ | CAD
- NEMA 3-prong socket: TE Connectivity 3-213598-2 socket
- NEMA 3-prong socket tray: STL | OBJ | CAD
- Note: We glued the socket tray lip on top of the socket tray with super glue (i.e., cyanoacrylate) after the socket was installed.
The gears and gear base are initially located on the work surface. The robot should pick up each gear and insert it onto the corresponding shaft on the gear base.
These parts are based closely on the gear assembly in NIST Task Board 1.
- Small gear: STL | OBJ | CAD
- Medium gear: STL | OBJ | CAD
- Large gear: STL | OBJ | CAD
- Gear base: STL | OBJ | CAD
- Breadboard: Thorlabs MB3045/M aluminum breadboard
- Vibration-dampening feet: Thorlabs AV4/M sorbothane feet
- Screws: M6 socket-head screws
- Finger mold: STL | OBJ
- Note: These parts were originally designed by Karl Van Wyk
- Silicone rubber: Smooth-On Dragon Skin 30 resin
- Camera: Intel RealSense D435
- Camera mount: STL | OBJ
- Note: This part was originally designed by Kenneth MacLean
- Light: GTX Studio 85W LED
- Softbox: Zuma octagonal CFL softbox
- Light stand: Zuma 3-section light stand
If you use any of the IndustRealKit assembly assets in your work, please consider citing the following paper:
@inproceedings{
tang2023industreal,
author = {Bingjie Tang and Michael A Lin and Iretiayo Akinola and Ankur Handa and Gaurav S Sukhatme and Fabio Ramos and Dieter Fox and Yashraj Narang},
title = {IndustReal: Transferring contact-rich assembly tasks from simulation to reality},
booktitle = {Robotics: Science and Systems},
year = {2023}
}
If you use the Franka fingers or camera mount in your work, please acknowledge Karl Van Wyk or Kenneth MacLean, respectively.
- Isaac Gym (simulate robots): paper | website | environments repo
- Factory (simulate contact-rich interactions in Isaac Gym): paper | website | environments repo
- IndustRealSim (reproduce RL policy training algorithms used in IndustReal): paper | project website | code | shorter docs | longer docs
- IndustRealLib (reproduce RL policy deployment code used in IndustReal): paper | project website | code
Please create a GitHub issue.