mshalm / routh-multi-impact

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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().

About


Languages

Language:MATLAB 100.0%