Fix bugs in actuator parsing.
- Adhesion actuator defaults were not parsed, now fixed. - Both damper and adhesion actuators were requiring `ctrlrange` at parse time, which prevented this attribute from being inherited from defaults, now fixed. - Added tests for all 3 cases. PiperOrigin-RevId: 475145255 Change-Id: I8dd6196e20734136d990f522893ebd4d156cd7a8
This commit is contained in:
committed by
Copybara-Service
parent
142c0eb200
commit
5dc26cf4a0
@@ -1598,7 +1598,7 @@ void mjXReader::OneActuator(XMLElement* elem, mjCActuator* pact) {
|
||||
pact->gainprm[2] = -pact->gainprm[2];
|
||||
|
||||
// require nonnegative range
|
||||
ReadAttr(elem, "ctrlrange", 2, pact->ctrlrange, text, true);
|
||||
ReadAttr(elem, "ctrlrange", 2, pact->ctrlrange, text);
|
||||
if (pact->ctrlrange[0]<0 || pact->ctrlrange[1]<0) {
|
||||
throw mjXError(elem, "damper control range cannot be negative");
|
||||
}
|
||||
@@ -1676,7 +1676,7 @@ void mjXReader::OneActuator(XMLElement* elem, mjCActuator* pact) {
|
||||
throw mjXError(elem, "adhesion gain cannot be negative");
|
||||
|
||||
// require nonnegative range
|
||||
ReadAttr(elem, "ctrlrange", 2, pact->ctrlrange, text, true);
|
||||
ReadAttr(elem, "ctrlrange", 2, pact->ctrlrange, text);
|
||||
if (pact->ctrlrange[0]<0 || pact->ctrlrange[1]<0) {
|
||||
throw mjXError(elem, "adhesion control range cannot be negative");
|
||||
}
|
||||
@@ -1947,7 +1947,7 @@ void mjXReader::Default(XMLElement* section, int parentid) {
|
||||
// read tendon
|
||||
else if (name=="tendon") OneTendon(elem, &def->tendon);
|
||||
|
||||
// read actuator: general, motor, position, velocity, cylinder
|
||||
// read actuator
|
||||
else if (name=="general" ||
|
||||
name=="motor" ||
|
||||
name=="position" ||
|
||||
@@ -1955,7 +1955,8 @@ void mjXReader::Default(XMLElement* section, int parentid) {
|
||||
name=="damper" ||
|
||||
name=="intvelocity" ||
|
||||
name=="cylinder" ||
|
||||
name=="muscle") {
|
||||
name=="muscle" ||
|
||||
name=="adhesion") {
|
||||
OneActuator(elem, &def->actuator);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user