| import unittest |
| import rlbench.backend.task as task |
| import os |
| from rlbench.backend.utils import task_file_to_task_class |
| from pyrep import PyRep |
| from pyrep.robots.arms.panda import Panda |
| from pyrep.robots.end_effectors.panda_gripper import PandaGripper |
| from rlbench.backend.const import TTT_FILE |
| from tools.task_validator import task_smoke, TaskValidationError |
| from rlbench.observation_config import ObservationConfig |
| from rlbench.backend.scene import Scene |
| from rlbench.backend.robot import Robot |
| from rlbench.backend.robot import UnimanualRobot |
|
|
|
|
| TASKS = [t for t in os.listdir(task.TASKS_PATH) |
| if t != '__init__.py' and t.endswith('.py')] |
| DIR_PATH = os.path.dirname(os.path.abspath(__file__)) |
|
|
|
|
| class TestTasks(unittest.TestCase): |
| """Tests all of the tasks via the task_validator tool but not testing demos. |
| |
| This is a lighter-weight test than the full demo smoke that is run in the |
| `tasks` test directory. |
| """ |
|
|
| def test_run_task_validator(self): |
| sim = PyRep() |
| ttt_file = os.path.join( |
| DIR_PATH, '..', '..', 'rlbench', TTT_FILE) |
| sim.launch(ttt_file, headless=True) |
| sim.step_ui() |
| sim.set_simulation_timestep(50.0) |
| sim.step_ui() |
| sim.start() |
| robot = UnimanualRobot(Panda(), PandaGripper()) |
| obs = ObservationConfig() |
| obs.set_all(False) |
| scene = Scene(sim, robot, obs) |
|
|
| for task_file in TASKS: |
| test_name = task_file.split('.py')[0] |
| with self.subTest(task=test_name): |
| sim.start() |
| task_class = task_file_to_task_class(task_file) |
| active_task = task_class(sim, robot) |
| try: |
| task_smoke(active_task, scene, variation=-1, |
| test_demos=False, max_variations=9999) |
| except Exception as e: |
| sim.stop() |
| raise e |
| sim.stop() |
| sim.shutdown() |
|
|