Remove custom step_fn for StepControl::Advance.

PiperOrigin-RevId: 936609234
Change-Id: I606cf4d71d856cbd260900d63b22c719974c977d
This commit is contained in:
Haroon Qureshi
2026-06-23 05:48:45 -07:00
committed by Copybara-Service
parent 027cfd1201
commit 5cef2472d5
3 changed files with 7 additions and 21 deletions
+4 -13
View File
@@ -43,22 +43,13 @@ PYBIND11_MODULE(sim, m) {
.def(py::init<>()) .def(py::init<>())
.def( .def(
"advance", "advance",
[](StepControl& self, py::object model_obj, py::object data_obj, [](StepControl& self, py::object model_obj, py::object data_obj) {
py::object step_fn) {
auto& model = py::cast<mujoco::python::MjModelWrapper&>(model_obj); auto& model = py::cast<mujoco::python::MjModelWrapper&>(model_obj);
auto& data = py::cast<mujoco::python::MjDataWrapper&>(data_obj); auto& data = py::cast<mujoco::python::MjDataWrapper&>(data_obj);
if (step_fn.is_none()) { py::gil_scoped_release no_gil;
py::gil_scoped_release no_gil; return self.Advance(model.get(), data.get());
return self.Advance(model.get(), data.get());
} else {
return self.Advance(
model.get(), data.get(),
[step_fn, model_obj, data_obj](mjModel*, mjData*) {
step_fn(model_obj, data_obj);
});
}
}, },
py::arg("model"), py::arg("data"), py::arg("step_fn") = py::none(), py::arg("model"), py::arg("data"),
"Step physics forward, respecting speed settings and refresh budget.") "Step physics forward, respecting speed settings and refresh budget.")
.def("force_sync", &StepControl::ForceSync, .def("force_sync", &StepControl::ForceSync,
"Ensures the next Advance() will synchronize time and step once.") "Ensures the next Advance() will synchronize time and step once.")
@@ -92,8 +92,7 @@ StepControl::PauseState StepControl::GetPauseState() const {
return pause_state_; return pause_state_;
} }
StepControl::Status StepControl::Advance(mjModel* m, mjData* d, StepControl::Status StepControl::Advance(mjModel* m, mjData* d) {
StepFn step_fn) {
if (!m) { if (!m) {
return Status::kOk; return Status::kOk;
} }
@@ -187,11 +186,7 @@ StepControl::Status StepControl::Advance(mjModel* m, mjData* d,
if (pre_step_) { if (pre_step_) {
pre_step_(m, d); pre_step_(m, d);
} }
if (step_fn) { mj_step(m, d);
step_fn(m, d);
} else {
mj_step(m, d);
}
if (post_step_) { if (post_step_) {
post_step_(m, d); post_step_(m, d);
} }
+1 -1
View File
@@ -55,7 +55,7 @@ class StepControl {
mjWARN_BADQACC, mjWARN_BADQVEL, mjWARN_BADQPOS}; mjWARN_BADQACC, mjWARN_BADQVEL, mjWARN_BADQPOS};
// Steps physics forward, respecting speed settings and refresh budget. // Steps physics forward, respecting speed settings and refresh budget.
Status Advance(mjModel* m, mjData* d, StepFn step_fn = nullptr); Status Advance(mjModel* m, mjData* d);
// Ensures the next call to Advance() will synchronize time and step once. // Ensures the next call to Advance() will synchronize time and step once.
void ForceSync(); void ForceSync();