Replace glfw.get_time with time.time in the Python viewer timing logic.
PiperOrigin-RevId: 563134207 Change-Id: Ic548701fc78336d8d87e94ea48833f94ee6395b8
This commit is contained in:
committed by
Copybara-Service
parent
ba66bd4f8b
commit
48d0bfde44
@@ -31,6 +31,7 @@
|
|||||||
|
|
||||||
namespace mujoco::python {
|
namespace mujoco::python {
|
||||||
namespace {
|
namespace {
|
||||||
|
using UIAdapter = mujoco::GlfwAdapter;
|
||||||
namespace py = ::pybind11;
|
namespace py = ::pybind11;
|
||||||
|
|
||||||
template <typename T, int N>
|
template <typename T, int N>
|
||||||
@@ -196,7 +197,7 @@ PYBIND11_MODULE(_simulate, pymodule) {
|
|||||||
py::object pert, bool fully_managed,
|
py::object pert, bool fully_managed,
|
||||||
py::object key_callback) {
|
py::object key_callback) {
|
||||||
return std::make_unique<SimulateWrapper>(
|
return std::make_unique<SimulateWrapper>(
|
||||||
std::make_unique<UIAdapterWithPyCallback<mujoco::GlfwAdapter>>(
|
std::make_unique<UIAdapterWithPyCallback<UIAdapter>>(
|
||||||
key_callback),
|
key_callback),
|
||||||
scn, cam, opt, pert, fully_managed);
|
scn, cam, opt, pert, fully_managed);
|
||||||
}))
|
}))
|
||||||
|
|||||||
@@ -236,7 +236,7 @@ def _physics_loop(simulate: _Simulate, loader: Optional[_InternalLoaderType]):
|
|||||||
assert d is not None
|
assert d is not None
|
||||||
if simulate.run:
|
if simulate.run:
|
||||||
# Record CPU time at start of iteration.
|
# Record CPU time at start of iteration.
|
||||||
startcpu = glfw.get_time()
|
startcpu = time.time()
|
||||||
|
|
||||||
elapsedcpu = startcpu - synccpu
|
elapsedcpu = startcpu - synccpu
|
||||||
elapsedsim = d.time - syncsim
|
elapsedsim = d.time - syncsim
|
||||||
@@ -281,8 +281,8 @@ def _physics_loop(simulate: _Simulate, loader: Optional[_InternalLoaderType]):
|
|||||||
refreshtime = SIM_REFRESH_FRACTION / simulate.refresh_rate
|
refreshtime = SIM_REFRESH_FRACTION / simulate.refresh_rate
|
||||||
# Step while sim lags behind CPU and within refreshtime.
|
# Step while sim lags behind CPU and within refreshtime.
|
||||||
while (((d.time - syncsim) * slowdown <
|
while (((d.time - syncsim) * slowdown <
|
||||||
(glfw.get_time() - synccpu)) and
|
(time.time() - synccpu)) and
|
||||||
((glfw.get_time() - startcpu) < refreshtime)):
|
((time.time() - startcpu) < refreshtime)):
|
||||||
# Measure slowdown before first step.
|
# Measure slowdown before first step.
|
||||||
if not measured and elapsedsim:
|
if not measured and elapsedsim:
|
||||||
simulate.measured_slowdown = elapsedcpu / elapsedsim
|
simulate.measured_slowdown = elapsedcpu / elapsedsim
|
||||||
@@ -349,7 +349,6 @@ def _launch_internal(
|
|||||||
notify_loaded = (
|
notify_loaded = (
|
||||||
lambda: handle_return.put_nowait(Handle(simulate, scn, cam, opt, pert)))
|
lambda: handle_return.put_nowait(Handle(simulate, scn, cam, opt, pert)))
|
||||||
|
|
||||||
side_thread = None
|
|
||||||
if run_physics_thread:
|
if run_physics_thread:
|
||||||
side_thread = threading.Thread(
|
side_thread = threading.Thread(
|
||||||
target=_physics_loop, args=(simulate, loader))
|
target=_physics_loop, args=(simulate, loader))
|
||||||
@@ -427,6 +426,7 @@ def launch_passive(
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
# pylint: disable=g-bad-import-order
|
||||||
from absl import app # pylint: disable=g-import-not-at-top
|
from absl import app # pylint: disable=g-import-not-at-top
|
||||||
from absl import flags # pylint: disable=g-import-not-at-top
|
from absl import flags # pylint: disable=g-import-not-at-top
|
||||||
|
|
||||||
|
|||||||
@@ -263,9 +263,9 @@ void mjv_updateSceneState(const mjModel* m, mjData* d, const mjvOption* opt,
|
|||||||
mjvSceneState* scnstate) {
|
mjvSceneState* scnstate) {
|
||||||
// Check that mjModel sizes haven't changed.
|
// Check that mjModel sizes haven't changed.
|
||||||
#define X(var)
|
#define X(var)
|
||||||
#define XMJV(var) \
|
#define XMJV(var) \
|
||||||
if (scnstate->model.var != m->var) { \
|
if (scnstate->model.var != m->var) { \
|
||||||
mjERROR("m->%s changed", #var); \
|
mjERROR("m->%s changed: %d vs %d", #var, scnstate->model.var, m->var); \
|
||||||
}
|
}
|
||||||
MJMODEL_INTS
|
MJMODEL_INTS
|
||||||
#undef XMJV
|
#undef XMJV
|
||||||
|
|||||||
Reference in New Issue
Block a user