Remove the particle composite (replaced by replicate).

PiperOrigin-RevId: 730089997
Change-Id: If8d18fb56ae01241e76f84dbf7951e034026d829
This commit is contained in:
Alessio Quaglino
2025-02-23 03:13:20 -08:00
committed by Copybara-Service
parent 0fcd20f0da
commit c52d1b3941
20 changed files with 164 additions and 527 deletions
+1 -1
View File
@@ -80,7 +80,7 @@ BENCHMARK(BM_StepFlagPlugin);
void ABSL_ATTRIBUTE_NO_TAIL_CALL BM_StepParticle(benchmark::State& state) {
MujocoErrorTestGuard guard;
static mjModel* model = LoadModelFromPath("composite/particle.xml");
static mjModel* model = LoadModelFromPath("replicate/particle.xml");
run_step_benchmark(model, state);
}
BENCHMARK(BM_StepParticle);
@@ -39,25 +39,49 @@
<geom name="+y" class="wall" zaxis="0 1 0" pos="0 -.5 -.25"/>
<geom name="-y" class="wall" zaxis="0 -1 0" pos="0 .5 -.25"/>
<composite type="particle" count="3 3 2" spacing="0.2" offset="0 0 1">
<geom type="sphere" size=".09" rgba=".8 .2 .1 1" condim="3"/>
<joint kind="particle" type="free"/>
</composite>
<replicate count="3" offset=".2 0 0">
<replicate count="3" offset="0 .2 0">
<replicate count="2" offset="0 0 .2">
<body pos="-.2 -.2 1">
<freejoint/>
<geom type="sphere" size=".09" rgba=".8 .2 .1 1" condim="3"/>
</body>
</replicate>
</replicate>
</replicate>
<composite type="particle" count="3 3 2" spacing="0.2" offset="0 0 1.6" prefix="A">
<geom type="cylinder" size=".09 .02" rgba=".8 .2 .1 1" condim="3"/>
<joint kind="particle" type="free"/>
</composite>
<replicate count="3" offset=".2 0 0" prefix="A">
<replicate count="3" offset="0 .2 0">
<replicate count="2" offset="0 0 .2">
<body pos="-.2 -.2 1.6">
<freejoint/>
<geom type="cylinder" size=".09 .02" rgba=".8 .2 .1 1" condim="3"/>
</body>
</replicate>
</replicate>
</replicate>
<composite type="particle" count="3 3 2" spacing="0.2" offset="0 0 2.2" prefix="B">
<geom type="cylinder" size=".02 .09" rgba=".8 .2 .1 1" condim="3"/>
<joint kind="particle" type="free"/>
</composite>
<replicate count="3" offset=".2 0 0" prefix="B">
<replicate count="3" offset="0 .2 0">
<replicate count="2" offset="0 0 .2">
<body pos="-.2 -.2 2.2">
<freejoint/>
<geom type="cylinder" size=".02 .09" rgba=".8 .2 .1 1" condim="3"/>
</body>
</replicate>
</replicate>
</replicate>
<composite type="particle" count="3 3 2" spacing="0.2" offset="0 0 2.8" prefix="C">
<geom type="sphere" size=".06" rgba=".8 .2 .1 1" condim="3"/>
<joint kind="particle" type="free"/>
</composite>
<replicate count="3" offset=".2 0 0" prefix="C">
<replicate count="3" offset="0 .2 0">
<replicate count="2" offset="0 0 .2">
<body pos="-.2 -.2 2.8">
<freejoint/>
<geom type="sphere" size=".06" rgba=".8 .2 .1 1" condim="3"/>
</body>
</replicate>
</replicate>
</replicate>
</worldbody>
</mujoco>
+21 -24
View File
@@ -35,14 +35,30 @@ using ::testing::NotNull;
using ::testing::HasSubstr;
using UserCompositeTest = MujocoTest;
// ------------- test automatic inference of nuser_xxx -------------------------
// ------------------------ cable tests ---------------------------------------
TEST_F(UserCompositeTest, SpacingGreaterThanGeometry) {
TEST_F(UserCompositeTest, ShapeCanBeOmitted) {
static constexpr char xml[] = R"(
<mujoco>
<worldbody>
<composite type="particle" count="282 2">
<geom size="8"/>
<composite type="cable" count="100 1 1" curve="s">
<geom type="box" size="1 1 1"/>
</composite>
</worldbody>
</mujoco>
)";
std::array<char, 1024> error;
mjModel* m = LoadModelFromString(xml, error.data(), error.size());
EXPECT_THAT(m, NotNull()) << error.data();
mj_deleteModel(m);
}
TEST_F(UserCompositeTest, InvalidShape) {
static constexpr char xml[] = R"(
<mujoco>
<worldbody>
<composite type="cable" count="100 1 1" curve="s s exp">
<geom type="box" size="1 1 1"/>
</composite>
</worldbody>
</mujoco>
@@ -51,26 +67,7 @@ TEST_F(UserCompositeTest, SpacingGreaterThanGeometry) {
mjModel* m = LoadModelFromString(xml, error.data(), error.size());
EXPECT_THAT(m, IsNull()) << error.data();
EXPECT_THAT(error.data(),
HasSubstr("Spacing must be larger than geometry size"));
}
TEST_F(UserCompositeTest, SpacingEqualToGeometry) {
static constexpr char xml[] = R"(
<mujoco>
<worldbody>
<composite type="particle" count="282 2" spacing="8">
<geom size="8"/>
</composite>
</worldbody>
</mujoco>
)";
std::array<char, 1024> error;
mjModel* m = LoadModelFromString(xml, error.data(), error.size());
EXPECT_THAT(m, NotNull()) << error.data();
mjData* d = mj_makeData(m);
mj_step(m, d);
mj_deleteData(d);
mj_deleteModel(m);
HasSubstr("The curve array contains an invalid shape"));
}
} // namespace
+1 -1
View File
@@ -1897,7 +1897,7 @@ TEST_F(XMLReaderTest, InvalidSkinGroup) {
<mujoco>
<worldbody>
<body>
<composite prefix="B0" type="grid" count="6 6 1" spacing=".2">
<composite prefix="B0" type="grid" count="6 6 1">
<geom size=".1"/>
<skin group="6"/>
</composite>