From 6ccc4f77bce3a3449f8f72141760f8b12c41c702 Mon Sep 17 00:00:00 2001 From: Yuval Tassa Date: Mon, 7 Jul 2025 05:36:44 -0700 Subject: [PATCH] Defer sensor reference id resolution from sensor compiler to model compiler PiperOrigin-RevId: 780070082 Change-Id: I7166f589f15bb0cd14b92e213d7a9f2a3bbad4e4 --- src/user/user_model.cc | 2 +- src/user/user_objects.cc | 8 ++------ src/user/user_objects.h | 2 -- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/src/user/user_model.cc b/src/user/user_model.cc index cd765679..7b671ed5 100644 --- a/src/user/user_model.cc +++ b/src/user/user_model.cc @@ -3447,7 +3447,7 @@ void mjCModel::CopyObjects(mjModel* m) { m->sensor_objtype[i] = psen->objtype; m->sensor_objid[i] = psen->obj ? psen->obj->id : -1; m->sensor_reftype[i] = psen->reftype; - m->sensor_refid[i] = psen->refid; + m->sensor_refid[i] = psen->ref ? psen->ref->id : -1; m->sensor_dim[i] = psen->dim; m->sensor_cutoff[i] = (mjtNum)psen->cutoff; m->sensor_noise[i] = (mjtNum)psen->noise; diff --git a/src/user/user_objects.cc b/src/user/user_objects.cc index 1e754f73..9b0c8e54 100644 --- a/src/user/user_objects.cc +++ b/src/user/user_objects.cc @@ -6508,7 +6508,6 @@ mjCSensor::mjCSensor(mjCModel* _model) { spec_userdata_.clear(); obj = nullptr; ref = nullptr; - refid = -1; // in case this sensor is not compiled CopyFromSpec(); @@ -6610,7 +6609,7 @@ void mjCSensor::ResolveReferences(const mjCModel* m) { ref = m->FindObject(reftype, refname_); } - // get objid from objtype and objname + // check object if (objtype != mjOBJ_UNKNOWN) { // check for missing object name if (objname_.empty()) { @@ -6635,7 +6634,7 @@ void mjCSensor::ResolveReferences(const mjCModel* m) { throw mjCError(this, "invalid type in sensor"); } - // get refid from reftype and refname + // check reference object if (reftype != mjOBJ_UNKNOWN) { // check for missing object name if (refname_.empty()) { @@ -6653,9 +6652,6 @@ void mjCSensor::ResolveReferences(const mjCModel* m) { throw mjCError(this, "reference frame object must be (x)body, geom, site or camera in sensor"); } - - // get sensorized object id - refid = ref->id; } spec_objname_ = objname_; diff --git a/src/user/user_objects.h b/src/user/user_objects.h index 06e8e60a..b1b172f4 100644 --- a/src/user/user_objects.h +++ b/src/user/user_objects.h @@ -1764,8 +1764,6 @@ class mjCActuator : public mjCActuator_, private mjsActuator { class mjCSensor_ : public mjCBase { protected: - int refid; // id of reference frame - // variable-size data std::string plugin_name; std::string plugin_instance_name;