This is a web browser implmentation of Prof. Ken Goldberg's PhD Thesis Orienting Polygonal Parts Without Sensors (1993), which describes an algorithm for computing a series of squeeze actions that orient polygonal parts up to symmetry. A Java implementation of the algorithm can be found here, and for more background on the algorithm can be found here or by reading the thesis. A deployment of this web application can be viewed here: https://rieff.bair.berkeley.edu/part-feeder/.
This is written in Python using the Flask web framework, Dash and Plotly for interactive web plotting, and pymunk to simulate the squeeze actions for the animation.
Update V1.7: This now uses planck.js for clientside simulation of the squeeze and push-grasp plans for the animation to avoid putting heavy load on the server.
The application is contained within the part-feeder folder. Inside that folder:
- engine.py contains the functions related to the algorithm itself
- feeder.py uses the functions in engine.py to execute the algorithm and generate the plots
- anim.py contains the simulation of the squeeze actions using pymunk
- explanations.py contains the text seen on the webpage
- gallery.py contains the Gallery page generation
- anim.js contains a full port of
anim.py
to Javascript using theplanck.js
2D physics engine