Add insidesite sensor for detecting when an object is inside the volume of a site.
PiperOrigin-RevId: 780993257 Change-Id: I2dcfc840d222680adc3b934344a0819f4d78b6eb
This commit is contained in:
committed by
Copybara-Service
parent
a86461fc57
commit
e6c5715903
@@ -3532,11 +3532,7 @@ void mjCSite::Compile(void) {
|
||||
}
|
||||
|
||||
// size[1] = length (for capsule and cylinder)
|
||||
double vec[3] = {
|
||||
fromto[0]-fromto[3],
|
||||
fromto[1]-fromto[4],
|
||||
fromto[2]-fromto[5]
|
||||
};
|
||||
double vec[3] = {fromto[0]-fromto[3], fromto[1]-fromto[4], fromto[2]-fromto[5]};
|
||||
size[1] = mjuu_normvec(vec, 3)/2;
|
||||
if (size[1] < mjEPS) {
|
||||
throw mjCError(this, "fromto points too close in geom");
|
||||
@@ -6940,6 +6936,19 @@ void mjCSensor::Compile(void) {
|
||||
}
|
||||
break;
|
||||
|
||||
case mjSENS_INSIDESITE:
|
||||
if (objtype != mjOBJ_BODY && objtype != mjOBJ_XBODY &&
|
||||
objtype != mjOBJ_GEOM && objtype != mjOBJ_SITE && objtype != mjOBJ_CAMERA) {
|
||||
throw mjCError(this, "sensor must be attached to (x)body, geom, site or camera");
|
||||
}
|
||||
if (reftype != mjOBJ_SITE) {
|
||||
throw mjCError(this, "sensor must be associated with a site");
|
||||
}
|
||||
dim = 1;
|
||||
datatype = mjDATATYPE_REAL;
|
||||
needstage = mjSTAGE_POS;
|
||||
break;
|
||||
|
||||
case mjSENS_GEOMDIST:
|
||||
case mjSENS_GEOMNORMAL:
|
||||
case mjSENS_GEOMFROMTO:
|
||||
|
||||
Reference in New Issue
Block a user