Simulating Non-Unique Outcomes of Simultaneous Impacts
This repository implements the simultaneous fricitonal impact simulator from the following pre-print:
Mathew Halm and Michael Posa. "Set-Valued Rigid Body Dynamics for Simultaneous Frictional Impact," 2021.
Dependencies
The code was developed and tested in MATLAB 2020b, and utilizes both the Parallel Computing and Robotics System Toolboxes.
The linear complementarity Problems (LCPs) generated by this library are solved using PATH. pathlcp
will need to be on the MATLAB path variable for the examples to run correctly.
Additionally, in LCPSolver_Remy.m
, we adapted the brute-force LCP solver developed by Prof. Dr. C. David Remy for the following paper:
C. David Remy. "Ambiguous collision outcomes and sliding with infinite friction in models of legged systems," IJRR 2017
Code structure
This code is based on the FreeBodyDiagram
object, a 2D contact geometry and visualization wrapper for MATLAB's rigidBodyTree environment.
FreeBodyDiagram
models are built by building a tree of frames connected by joints, and populating frames with shape-primitive materials, including point masses (Point.m
), rods (Rod.m
), discs (Disc.m
), rectangles (Rectangle.m
), and flat, static surfaces (Surface.m
).
Examples of FreeBodyDiagram contruction can be found in Results.m
.
Running the code
All simulated results from the paper can be regenerated by running Results()
.