Allow contact sensor subtree1/subtree2 to be any body.
PiperOrigin-RevId: 799632590 Change-Id: If9cd6c5a3a5f83d89ae024a8f64232ab1f1d603a
This commit is contained in:
committed by
Copybara-Service
parent
9eaa31af2f
commit
7443e685ac
@@ -708,8 +708,6 @@ TEST_F(SensorTest, BadContact) {
|
||||
"at most one of (geom1, body1, subtree1, site) can be specified"},
|
||||
{"geom2='sphere1' body2='body'",
|
||||
"at most one of (geom2, body2, subtree2) can be specified"},
|
||||
{"subtree1='non_root'",
|
||||
"must be a child of the world"}
|
||||
};
|
||||
|
||||
for (const auto& test : test_cases) {
|
||||
@@ -870,6 +868,31 @@ TEST_F(SensorTest, ContactSubtree) {
|
||||
mj_deleteModel(model);
|
||||
}
|
||||
|
||||
TEST_F(SensorTest, ContactSubtreePartial) {
|
||||
const string xml_path =
|
||||
GetTestDataFilePath("engine/testdata/sensor/contact_subtree_partial.xml");
|
||||
char error[1024];
|
||||
mjModel* model = mj_loadXML(xml_path.c_str(), nullptr, error, sizeof(error));
|
||||
ASSERT_THAT(model, NotNull()) << error;
|
||||
|
||||
mjData* data = mj_makeData(model);
|
||||
|
||||
while (data->time < 0.6) {
|
||||
mj_step(model, data);
|
||||
}
|
||||
|
||||
EXPECT_EQ(GetSensor(model, data, "all")[0], 4);
|
||||
EXPECT_EQ(GetSensor(model, data, "world")[0], 4);
|
||||
EXPECT_EQ(GetSensor(model, data, "thigh")[0], 4);
|
||||
EXPECT_EQ(GetSensor(model, data, "shin")[0], 2);
|
||||
EXPECT_EQ(GetSensor(model, data, "foot")[0], 1);
|
||||
EXPECT_EQ(GetSensor(model, data, "foot_w")[0], 0);
|
||||
EXPECT_EQ(GetSensor(model, data, "foot_w2")[0], 1);
|
||||
|
||||
mj_deleteData(data);
|
||||
mj_deleteModel(model);
|
||||
}
|
||||
|
||||
TEST_F(SensorTest, ContactNet) {
|
||||
const string xml_path =
|
||||
GetTestDataFilePath("engine/testdata/sensor/contact_net.xml");
|
||||
|
||||
Reference in New Issue
Block a user