# Revision history [back]

1. You can read about mu and mu2 on the ODE user guide. The difference is not about static vs dynamic, but about direction: mu acts on direction fdir1 and mu2 acts perpendicular to that and to the contact normal.

If fdir1 is not specified in the SDF, "automatically compute friction direction 1 to be perpendicular to the contact normal (in which case its resulting orientation is unpredictable)."

If you want contact that never slips, you must set mu to infinity (<mu>Inf</mu>) as explained in the same link.

2. max_vel, as explained in the link, is not about surfaces sliding against each other (like friction), but about interpenetration: "Maximum interpenetration error correction velocity. If set to 0, two objects interpenetrating each other will not be pushed apart."

1. You can read about mu and mu2 on the ODE user guide. The difference is not about static vs dynamic, but about direction: mu acts on direction fdir1 and mu2 acts perpendicular to that and to the contact normal.

If fdir1 is not specified in the SDF, "automatically compute friction direction 1 to be perpendicular to the contact normal (in which case its resulting orientation is unpredictable)."

If you want contact that never slips, you must set mu to infinity (<mu>Inf</mu>) as explained in the same link.

2. max_vel, as explained in the link, Gazebo API, is not about surfaces sliding against each other (like friction), but about interpenetration: "Maximum interpenetration error correction velocity. If set to 0, two objects interpenetrating each other will not be pushed apart."