It’s been almost a year since I wrote my post on how to model friction in a dynamic multibody system. Since then, I’ve reconsidered my ideas from the post a few times and finally found out that there’s a theory called “hybrid systems” that intersects with the problems described there.
The Wikipeda article provides a very nice overview:
A hybrid system is a dynamic system that exhibits both continuous and discrete dynamic behavior – a system that can both flow (described by a differential equation) and jump (described by a difference equation or control graph).
Also, there’s the HyEQ-Toolbox for Matlab which appears to cover tools for the dynamic simulation plus a decent documentation from Matlab itself on how Stateflow in Simulink handles these things. As far as I’m aware, Modelica also seems to cover functionality to model hybrid systems (the bouncing ball is one of the standard Modelica examples I’ve seen).
So the whole hybrid system thing appears to cover some of the problems I encountered with the friction example, mainly the error margin for the sticking condition. If you’re looking for a scientifically exact model of mechanical friction, a hybrid system solver is probably your best option.
Then again, the solution I originally found has the amazing advantage that you can just throw a standard ODE solver onto the equations and the step size management will automatically find the transitions between sticking and sliding. So if you’re bound to a certain type of solver, just stick with it (if it works… you’ll have to carefully validate the model behavior anyway)…