Prevent division by zero in Ornstein–Uhlenbeck control noise.

PiperOrigin-RevId: 498753494
Change-Id: Ib43e165a4da524c12fab4ea05848b084b2e7713c
This commit is contained in:
Kevin Zakka
2022-12-31 10:28:11 -08:00
committed by Copybara-Service
parent eb8389fead
commit a173e01f42
4 changed files with 7 additions and 2 deletions
+1 -1
View File
@@ -330,7 +330,7 @@ void PhysicsLoop(mj::Simulate& sim) {
// inject noise
if (sim.ctrlnoisestd) {
// convert rate and scale to discrete time (Ornstein–Uhlenbeck)
mjtNum rate = mju_exp(-m->opt.timestep / sim.ctrlnoiserate);
mjtNum rate = mju_exp(-m->opt.timestep / mju_max(sim.ctrlnoiserate, mjMINVAL));
mjtNum scale = sim.ctrlnoisestd * mju_sqrt(1-rate*rate);
for (int i=0; i<m->nu; i++) {