from __future__ import division from __future__ import print_function import platform # Internal dependencies. from absl.testing import absltest from dm_control import render from dm_control.mujoco import engine from dm_control.mujoco.testing import assets from dm_control.mujoco.testing import decorators from six.moves import range MODEL = assets.get_contents('cartpole.xml') NUM_STEPS = 10 # Context creation with GLFW is not threadsafe. if render.BACKEND == 'glfw': # On Linux we are able to create a GLFW window in a single thread that is not # the main thread. # On Mac we are only allowed to create windows on the main thread, so we # disable the `run_threaded` wrapper entirely. NUM_THREADS = None if platform.system() == 'Darwin' else 1 else: NUM_THREADS = 4 class ThreadSafetyTest(absltest.TestCase): @decorators.run_threaded(num_threads=NUM_THREADS)
from dm_control.mujoco import engine from dm_control.mujoco import wrapper from dm_control.mujoco.testing import assets from dm_control.mujoco.wrapper import mjbindings from dm_control.mujoco.wrapper.mjbindings import enums from dm_control.rl import control import mock import numpy as np import six from six.moves import cPickle from six.moves import range mjlib = mjbindings.mjlib MODEL_PATH = assets.get_path('cartpole.xml') MODEL_WITH_ASSETS = assets.get_contents('model_with_assets.xml') ASSETS = { 'texture.png': assets.get_contents('deepmind.png'), 'mesh.stl': assets.get_contents('cube.stl'), 'included.xml': assets.get_contents('sphere.xml') } class MujocoEngineTest(parameterized.TestCase): def setUp(self): super(MujocoEngineTest, self).setUp() self._physics = engine.Physics.from_xml_path(MODEL_PATH) def _assert_attributes_equal(self, actual_obj, expected_obj, attr_to_compare): for name in attr_to_compare:
from absl.testing import absltest from absl.testing import parameterized from dm_control import render from dm_control.mujoco.testing import assets from dm_control.mujoco.wrapper import core from dm_control.mujoco.wrapper import mjbindings from dm_control.mujoco.wrapper.mjbindings import enums import mock import numpy as np from six.moves import cPickle from six.moves import range mjlib = mjbindings.mjlib HUMANOID_XML_PATH = assets.get_path("humanoid.xml") MODEL_WITH_ASSETS = assets.get_contents("model_with_assets.xml") ASSETS = { "texture.png": assets.get_contents("deepmind.png"), "mesh.stl": assets.get_contents("cube.stl"), "included.xml": assets.get_contents("sphere.xml") } SCALAR_TYPES = (int, float) ARRAY_TYPES = (np.ndarray, ) OUT_DIR = absltest.get_default_test_tmpdir() if not os.path.exists(OUT_DIR): os.makedirs(OUT_DIR) # Ensure that the output directory exists. class CoreTest(parameterized.TestCase):
from __future__ import print_function import itertools # Internal dependencies. from absl.testing import absltest from absl.testing import parameterized from dm_control import mujoco from dm_control.mujoco.testing import assets from dm_control.mujoco.wrapper import mjbindings from dm_control.utils import inverse_kinematics as ik import numpy as np mjlib = mjbindings.mjlib _ARM_XML = assets.get_contents('arm.xml') _MODEL_WITH_BALL_JOINTS_XML = assets.get_contents('model_with_ball_joints.xml') _SITE_NAME = 'gripsite' _JOINTS = ['joint_1', 'joint_2', 'joint_3', 'joint_4', 'joint_5', 'joint_6'] _TOL = 1e-14 _MAX_STEPS = 100 _MAX_RESETS = 10 _TARGETS = [ # target_pos # target_quat (np.array([0., 0., 0.3]), np.array([0., 1., 0., 1.])), (np.array([-0.5, 0., 0.5]), None), (np.array([0., 0., 0.8]), np.array([0., 1., 0., 1.])), (np.array([0., 0., 0.8]), None), (np.array([0., -0.1, 0.5]), None),
import os import itertools from absl.testing import absltest from absl.testing import parameterized from dm_control import mujoco from dm_control.mujoco.testing import assets from dm_control.mujoco.wrapper import mjbindings from dm_control.utils import inverse_kinematics as ik import numpy as np import pdb import random mjlib = mjbindings.mjlib FlexivPeg_XML = assets.get_contents(os.path.abspath(os.path.dirname(os.path.dirname(__file__)))+'/assets/graphics/robot_chain.xml') _SITE_NAME = 'ee_site' _JOINTS = ['joint1', 'joint2', 'joint3', 'joint4', 'joint5', 'joint6', 'joint7'] _TOL = 1e-14 _MAX_STEPS = 100 _MAX_RESETS = 10 _TARGETS = [ # target_pos # target_quat (np.array([0., 0., 0.3]), np.array([0., 1., 0., 1.])), (np.array([-0.5, 0., 0.5]), None), (np.array([0., 0., 0.8]), np.array([0., 1., 0., 1.])), (np.array([0., 0., 0.8]), None), (np.array([0., -0.1, 0.5]), None),
from __future__ import print_function # Internal dependencies. from absl.testing import absltest from absl.testing import parameterized from dm_control.mujoco import index from dm_control.mujoco import wrapper from dm_control.mujoco.testing import assets from dm_control.mujoco.wrapper.mjbindings import sizes import numpy as np import six MODEL = assets.get_contents('cartpole.xml') MODEL_NO_NAMES = assets.get_contents('cartpole_no_names.xml') FIELD_REPR = { 'act': ('FieldIndexer(act):\n' '(empty)'), 'qM': ('FieldIndexer(qM):\n' '0 [ 0 ]\n' '1 [ 1 ]\n' '2 [ 2 ]'), 'sensordata': ('FieldIndexer(sensordata):\n' '0 accelerometer [ 0 ]\n' '1 accelerometer [ 1 ]\n' '2 accelerometer [ 2 ]\n' '3 collision [ 3 ]'), 'xpos': ('FieldIndexer(xpos):\n'
from __future__ import print_function # Internal dependencies. from absl.testing import absltest from absl.testing import parameterized from dm_control.mujoco import index from dm_control.mujoco import wrapper from dm_control.mujoco.testing import assets from dm_control.mujoco.wrapper.mjbindings import sizes import numpy as np import six MODEL = assets.get_contents('cartpole.xml') MODEL_NO_NAMES = assets.get_contents('cartpole_no_names.xml') MODEL_3RD_ORDER_ACTUATORS = assets.get_contents( 'model_with_third_order_actuators.xml') MODEL_INCORRECT_ACTUATOR_ORDER = assets.get_contents( 'model_incorrect_actuator_order.xml') FIELD_REPR = { 'act': ('FieldIndexer(act):\n' '(empty)'), 'qM': ('FieldIndexer(qM):\n' '0 [ 0 ]\n' '1 [ 1 ]\n' '2 [ 2 ]'), 'sensordata': ('FieldIndexer(sensordata):\n' '0 accelerometer [ 0 ]\n'
def _load_pixels(path): image_bytes = assets.get_contents(path) image = Image.open(io.BytesIO(image_bytes)) return np.array(image)
"""Returns an iterator over paths to the reference images.""" for frame_num in range(self._num_frames): filename = self._FILENAME_TEMPLATE.format(frame_num=frame_num) for camera_spec in self._camera_specs: subdir_name = _get_subdir( name=self._name, seed=self._seed, backend_string=BACKEND_STRING, camera_spec=camera_spec) directory = os.path.join(self._FRAMES_DIR, subdir_name) yield directory, filename cartpole = _FrameSequence( name='cartpole', xml_string=assets.get_contents('cartpole.xml'), camera_specs=( _CameraSpec( width=320, height=240, camera_id=0, render_flag_overrides={}), ), steps_per_frame=5) humanoid = _FrameSequence( name='humanoid', xml_string=assets.get_contents('humanoid.xml'), camera_specs=( _CameraSpec( width=240, height=320, camera_id=0, render_flag_overrides={}), _CameraSpec( width=240, height=320,
path = os.path.join(full_directory_path, filename) _save_pixels(pixels, path) def _iter_paths(self): subdir_name = self._SUBDIR_TEMPLATE.format(name=self._name, camera_id=self._camera_id, width=self._width, height=self._height, seed=self._seed) directory = os.path.join(self._FRAMES_DIR, subdir_name) for frame_num in xrange(self._num_frames): filename = self._FILENAME_TEMPLATE.format(frame_num=frame_num) yield directory, filename cartpole = _FrameSequence('cartpole', assets.get_contents('cartpole.xml'), width=320, height=240, camera_id=0, steps_per_frame=5) humanoid = _FrameSequence('humanoid', assets.get_contents('humanoid.xml'), width=128, height=128, camera_id=-1) SEQUENCES = { 'cartpole': cartpole, 'humanoid': humanoid, } def _save_pixels(pixels, path): image = Image.fromarray(pixels)