Added touch grid sensor plugin.

PiperOrigin-RevId: 527512624
Change-Id: I0f316eb6eb2c52472abbec484e5538b66ba2e82e
This commit is contained in:
Yuval Tassa
2023-04-27 02:02:16 -07:00
committed by Copybara-Service
parent 139328f86e
commit b397b3123e
17 changed files with 940 additions and 2 deletions
+21
View File
@@ -0,0 +1,21 @@
# Copyright 2022 DeepMind Technologies Limited
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
mujoco_test(
sensor_test
PROPERTIES
ENVIRONMENT
"MUJOCO_PLUGIN_DIR=$<TARGET_FILE_DIR:sensor>"
)
target_link_libraries(sensor_test fixture gmock)
+45
View File
@@ -0,0 +1,45 @@
// Copyright 2023 DeepMind Technologies Limited
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Tests for sensor plugins.
#include <string>
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <mujoco/mjmodel.h>
#include <mujoco/mujoco.h>
#include "test/fixture.h"
namespace mujoco {
namespace {
using SensorPluginTest = MujocoTest;
static const char* const kTOuchGridPath =
"plugin/sensor/testdata/touch_grid_test.xml";
TEST_F(SensorPluginTest, ValidAttributes) {
const std::string xml_path = GetTestDataFilePath(kTOuchGridPath);
char error[1024] = {0};
mjModel* model = mj_loadXML(xml_path.c_str(), nullptr, error, sizeof(error));
ASSERT_THAT(model, testing::NotNull()) << error;
int nchannel = 3;
int size_x = 6;
int size_y = 2;
EXPECT_THAT(model->sensor_dim[0], nchannel * size_x * size_y);
mj_deleteModel(model);
}
} // namespace
} // namespace mujoco
+52
View File
@@ -0,0 +1,52 @@
<mujoco model="touchtest">
<extension>
<plugin plugin="mujoco.sensor.touch_grid"/>
</extension>
<asset>
<texture name="grid" type="2d" builtin="checker" rgb1=".1 .2 .3" rgb2=".2 .3 .4" width="300" height="300" mark="edge" markrgb=".2 .3 .4"/>
<material name="grid" texture="grid" texrepeat="3 1" texuniform="true"/>
</asset>
<visual>
<headlight ambient=".7 .7 .7" diffuse=".2 .2 .2" specular="0.1 0.1 0.1"/>
<map znear="0.01"/>
</visual>
<default>
<geom friction="0.4"/>
</default>
<statistic center="0 0 1" extent="1" meansize=".1"/>
<option gravity="0 0 -10"/>
<worldbody>
<body name="dummy2">
<geom name="floor" pos="0 0 0" type="plane" size="1 1 .01" material="grid"/>
</body>
<body name="dummy1">
<site name="touch" pos="0 0 10" group="3"/>
</body>
<body name="box" pos="0 0 .1">
<freejoint/>
<geom type="box" size=".1 .1 .1" mass="0.1"/>
</body>
<light pos="0 0 5"/>
</worldbody>
<sensor>
<plugin name="touch" plugin="mujoco.sensor.touch_grid" objtype="site" objname="touch">
<config key="size_x" value="6"/>
<config key="size_y" value="2"/>
<config key="fov_x" value="5.71"/>
<config key="fov_y" value="5.71"/>
<config key="gamma" value="0"/>
<config key="nchannel" value="3"/>
</plugin>
</sensor>
</mujoco>