Skip to content

raisim::contact::SweepRows ​

abstract class · #include <raisim/contact/BisectionContactSolver.hpp>

Constraints that their objects solve themselves inside the solver's Gauss-Seidel sweeps (the elastic constraints of deformables): they read and change the same body velocities as the contact rows, so contacts and these constraints converge together. Every sweep visits them first, so a sweep always ends with the contact rows.

Constructors & destructor ​

~SweepRows ​

cpp
virtual ~SweepRows() = default

Public member functions ​

sweep ​

cpp
virtual double sweep() = 0

One pass over the rows. Returns the squared velocity change of the pass (the analogue of a contact row's error) and bumps the solverImpulseAccum_ of every object whose velocity changed.

changed ​

cpp
virtual bool changed() const = 0

Returns whether the last sweep changed a velocity

rowCount ​

cpp
virtual size_t rowCount() const = 0

Returns number of rows, for the termination threshold

pending ​

cpp
virtual bool pending() const = 0

Returns whether the rows still need sweeps (their iteration count is fixed): the solve does not end before they had them, even if the contacts have converged

RaiSim — physics for robotics and AI.