Skip to content

Merge pull request #990 from StanfordVL/feat/controller-dependencies #365

Merge pull request #990 from StanfordVL/feat/controller-dependencies

Merge pull request #990 from StanfordVL/feat/controller-dependencies #365

GitHub Actions / Test Results succeeded Nov 18, 2024 in 0s

121 passed, 30 failed and 9 skipped

Tests failed

Report Passed Failed Skipped Time
11898020939-tests-test_controllers/test_controllers.xml 1❌ 500s
11898020939-tests-test_dump_load_states/test_dump_load_states.xml 4✅ 1803s
11898020939-tests-test_envs/test_envs.xml 5✅ 1577s
11898020939-tests-test_multiple_envs/test_multiple_envs.xml 8✅ 2⚪ 628s
11898020939-tests-test_object_removal/test_object_removal.xml 2✅ 1761s
11898020939-tests-test_object_states/test_object_states.xml 33✅ 1218s
11898020939-tests-test_primitives/test_primitives.xml 6❌ 4⚪ 568s
11898020939-tests-test_robot_states_flatcache/test_robot_states_flatcache.xml 3❌ 552s
11898020939-tests-test_robot_states_no_flatcache/test_robot_states_no_flatcache.xml 3❌ 583s
11898020939-tests-test_robot_teleoperation/test_robot_teleoperation.xml 1⚪ 206ms
11898020939-tests-test_scene_graph/test_scene_graph.xml 1✅ 473s
11898020939-tests-test_sensors/test_sensors.xml 2✅ 1011s
11898020939-tests-test_symbolic_primitives/test_symbolic_primitives.xml 9✅ 9❌ 2⚪ 1252s
11898020939-tests-test_systems/test_systems.xml 1✅ 1638s
11898020939-tests-test_transform_utils/test_transform_utils.xml 26✅ 8❌ 85s
11898020939-tests-test_transition_rules/test_transition_rules.xml 30✅ 1931s

❌ 11898020939-tests-test_controllers/test_controllers.xml

1 tests were completed in 500s with 0 passed, 1 failed and 0 skipped.

Test suite Passed Failed Skipped Time
pytest 1❌ 500s

❌ pytest

tests.test_controllers
  ❌ test_arm_control
	def test_arm_control():

✅ 11898020939-tests-test_dump_load_states/test_dump_load_states.xml

4 tests were completed in 1803s with 4 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
pytest 4✅ 1803s

✅ pytest

tests.test_dump_load_states
  ✅ test_dump_load
  ✅ test_dump_load_serialized
  ✅ test_save_restore_partial
  ✅ test_save_restore_full

✅ 11898020939-tests-test_envs/test_envs.xml

5 tests were completed in 1577s with 5 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
pytest 5✅ 1577s

✅ pytest

tests.test_envs
  ✅ test_dummy_task
  ✅ test_point_reaching_task
  ✅ test_point_navigation_task
  ✅ test_behavior_task
  ✅ test_rs_int_full_load

✅ 11898020939-tests-test_multiple_envs/test_multiple_envs.xml

10 tests were completed in 628s with 8 passed, 0 failed and 2 skipped.

Test suite Passed Failed Skipped Time
pytest 8✅ 2⚪ 628s

✅ pytest

tests.test_multiple_envs
  ✅ test_multi_scene_dump_load_states
  ✅ test_multi_scene_get_local_position
  ✅ test_multi_scene_set_local_position
  ✅ test_multi_scene_scene_prim
  ✅ test_multi_scene_particle_source
  ✅ test_multi_scene_position_orientation_relative_to_scene
  ✅ test_tiago_getter
  ✅ test_tiago_setter
  ⚪ test_behavior_getter
  ⚪ test_behavior_setter

✅ 11898020939-tests-test_object_removal/test_object_removal.xml

2 tests were completed in 1761s with 2 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
pytest 2✅ 1761s

✅ pytest

tests.test_object_removal
  ✅ test_removal_and_readdition
  ✅ test_readdition

✅ 11898020939-tests-test_object_states/test_object_states.xml

33 tests were completed in 1218s with 33 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
pytest 33✅ 1218s

✅ pytest

tests.test_object_states
  ✅ test_on_top
  ✅ test_inside
  ✅ test_under
  ✅ test_touching
  ✅ test_contact_bodies
  ✅ test_next_to
  ✅ test_overlaid
  ✅ test_pose
  ✅ test_joint
  ✅ test_aabb
  ✅ test_adjacency
  ✅ test_temperature
  ✅ test_max_temperature
  ✅ test_heat_source_or_sink
  ✅ test_cooked
  ✅ test_burnt
  ✅ test_frozen
  ✅ test_heated
  ✅ test_on_fire
  ✅ test_toggled_on
  ✅ test_attached_to
  ✅ test_particle_source
  ✅ test_particle_sink
  ✅ test_particle_applier
  ✅ test_particle_remover
  ✅ test_saturated
  ✅ test_open
  ✅ test_folded_unfolded
  ✅ test_draped
  ✅ test_filled
  ✅ test_contains
  ✅ test_covered
  ✅ test_clear_sim

❌ 11898020939-tests-test_primitives/test_primitives.xml

10 tests were completed in 568s with 0 passed, 6 failed and 4 skipped.

Test suite Passed Failed Skipped Time
pytest 6❌ 4⚪ 568s

❌ pytest

tests.test_primitives.TestPrimitives
  ❌ test_navigate[Tiago]
	self = <test_primitives.TestPrimitives object at 0x7fdcf4f3efe0>
  ❌ test_navigate[Fetch]
	self = <test_primitives.TestPrimitives object at 0x7fdaf7d17ca0>
  ❌ test_grasp[Tiago]
	self = <test_primitives.TestPrimitives object at 0x7fdaf7d15a20>
  ❌ test_grasp[Fetch]
	self = <test_primitives.TestPrimitives object at 0x7fdaf7d15540>
  ❌ test_place[Tiago]
	self = <test_primitives.TestPrimitives object at 0x7fdaf7d15600>
  ❌ test_place[Fetch]
	self = <test_primitives.TestPrimitives object at 0x7fdaf7d15ed0>
  ⚪ test_open_prismatic[Tiago]
  ⚪ test_open_prismatic[Fetch]
  ⚪ test_open_revolute[Tiago]
  ⚪ test_open_revolute[Fetch]

❌ 11898020939-tests-test_robot_states_flatcache/test_robot_states_flatcache.xml

3 tests were completed in 552s with 0 passed, 3 failed and 0 skipped.

Test suite Passed Failed Skipped Time
pytest 3❌ 552s

❌ pytest

tests.test_robot_states_flatcache
  ❌ test_camera_pose_flatcache_on
	def test_camera_pose_flatcache_on():
  ❌ test_robot_load_drive
	def test_robot_load_drive():
  ❌ test_grasping_mode
	def test_grasping_mode():

❌ 11898020939-tests-test_robot_states_no_flatcache/test_robot_states_no_flatcache.xml

3 tests were completed in 583s with 0 passed, 3 failed and 0 skipped.

Test suite Passed Failed Skipped Time
pytest 3❌ 583s

❌ pytest

tests.test_robot_states_no_flatcache
  ❌ test_camera_pose_flatcache_off
	def test_camera_pose_flatcache_off():
  ❌ test_camera_semantic_segmentation
	def test_camera_semantic_segmentation():
  ❌ test_object_in_FOV_of_robot
	def test_object_in_FOV_of_robot():

✅ 11898020939-tests-test_robot_teleoperation/test_robot_teleoperation.xml

1 tests were completed in 206ms with 0 passed, 0 failed and 1 skipped.

Test suite Passed Failed Skipped Time
pytest 1⚪ 206ms

✅ pytest

tests.test_robot_teleoperation
  ⚪ test_teleop

✅ 11898020939-tests-test_scene_graph/test_scene_graph.xml

1 tests were completed in 473s with 1 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
pytest 1✅ 473s

✅ pytest

tests.test_scene_graph
  ✅ test_scene_graph

✅ 11898020939-tests-test_sensors/test_sensors.xml

2 tests were completed in 1011s with 2 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
pytest 2✅ 1011s

✅ pytest

tests.test_sensors
  ✅ test_segmentation_modalities
  ✅ test_bbox_modalities

❌ 11898020939-tests-test_symbolic_primitives/test_symbolic_primitives.xml

20 tests were completed in 1252s with 9 passed, 9 failed and 2 skipped.

Test suite Passed Failed Skipped Time
pytest 9✅ 9❌ 2⚪ 1252s

❌ pytest

tests.test_symbolic_primitives.TestSymbolicPrimitives
  ✅ test_in_hand_state[Fetch]
  ✅ test_open[Fetch]
  ✅ test_close[Fetch]
  ✅ test_place_inside[Fetch]
  ✅ test_place_ontop[Fetch]
  ✅ test_toggle_on[Fetch]
  ✅ test_soak_under[Fetch]
  ✅ test_wipe[Fetch]
  ⚪ test_cut[Fetch]
  ✅ test_persistent_sticky_grasping[Fetch]
  ❌ test_in_hand_state[Tiago]
	robot_type = 'Tiago'
  ❌ test_open[Tiago]
	robot_type = 'Tiago'
  ❌ test_close[Tiago]
	robot_type = 'Tiago'
  ❌ test_place_inside[Tiago]
	robot_type = 'Tiago'
  ❌ test_place_ontop[Tiago]
	robot_type = 'Tiago'
  ❌ test_toggle_on[Tiago]
	robot_type = 'Tiago'
  ❌ test_soak_under[Tiago]
	robot_type = 'Tiago'
  ❌ test_wipe[Tiago]
	robot_type = 'Tiago'
  ⚪ test_cut[Tiago]
  ❌ test_persistent_sticky_grasping[Tiago]
	robot_type = 'Tiago'

✅ 11898020939-tests-test_systems/test_systems.xml

1 tests were completed in 1638s with 1 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
pytest 1✅ 1638s

✅ pytest

tests.test_systems
  ✅ test_system_clear

❌ 11898020939-tests-test_transform_utils/test_transform_utils.xml

34 tests were completed in 85s with 26 passed, 8 failed and 0 skipped.

Test suite Passed Failed Skipped Time
pytest 26✅ 8❌ 85s

❌ pytest

tests.test_transform_utils.TestQuaternionOperations
  ✅ test_quat2mat_special_cases
  ✅ test_quat_multiply
  ✅ test_quat_conjugate
  ✅ test_quat_inverse
  ✅ test_quat_distance
tests.test_transform_utils.TestVectorOperations
  ❌ test_normalize
	self = <test_transform_utils.TestVectorOperations object at 0x7fcbf0c8f9d0>
  ✅ test_dot_product
  ✅ test_l2_distance
tests.test_transform_utils.TestMatrixOperations
  ✅ test_rotation_matrix_properties
  ❌ test_rotation_matrix
	self = <test_transform_utils.TestMatrixOperations object at 0x7fcbf0c8ffd0>
  ❌ test_transformation_matrix
	self = <test_transform_utils.TestMatrixOperations object at 0x7fcbf0c8d1b0>
  ❌ test_transformation_matrix_no_point
	self = <test_transform_utils.TestMatrixOperations object at 0x7fcbf1d57340>
  ✅ test_matrix_inverse
tests.test_transform_utils.TestCoordinateTransformations
  ✅ test_cartesian_to_polar
tests.test_transform_utils.TestPoseTransformations
  ✅ test_pose2mat_and_mat2pose
  ✅ test_pose_inv
tests.test_transform_utils.TestAxisAngleConversions
  ❌ test_axisangle2quat_and_quat2axisangle
	self = <test_transform_utils.TestAxisAngleConversions object at 0x7fcbf0c8f670>
  ❌ test_vecs2axisangle
	self = <test_transform_utils.TestAxisAngleConversions object at 0x7fcbf0c8fb50>
  ❌ test_vecs2quat
	self = <test_transform_utils.TestAxisAngleConversions object at 0x7fcbf14f1f90>
tests.test_transform_utils.TestEulerAngleConversions
  ✅ test_euler2quat_and_quat2euler
  ✅ test_euler2mat_and_mat2euler
tests.test_transform_utils.TestQuaternionApplications
  ✅ test_quat_apply
  ❌ test_quat_slerp
	self = <test_transform_utils.TestQuaternionApplications object at 0x7fcbf14f2050>
tests.test_transform_utils.TestTransformPoints
  ✅ test_transform_points_2d
  ✅ test_transform_points_3d
tests.test_transform_utils.TestMiscellaneousFunctions
  ✅ test_convert_quat
  ✅ test_random_quaternion
  ✅ test_random_axis_angle
  ✅ test_align_vector_sets
  ✅ test_copysign
  ✅ test_anorm
  ✅ test_check_quat_right_angle
  ✅ test_z_angle_from_quat
  ✅ test_integer_spiral_coordinates

✅ 11898020939-tests-test_transition_rules/test_transition_rules.xml

30 tests were completed in 1931s with 30 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
pytest 30✅ 1931s

✅ pytest

tests.test_transition_rules
  ✅ test_dryer_rule
  ✅ test_washer_rule
  ✅ test_slicing_rule
  ✅ test_dicing_rule_cooked
  ✅ test_dicing_rule_uncooked
  ✅ test_melting_rule
  ✅ test_cooking_physical_particle_rule_failure_recipe_systems
  ✅ test_cooking_physical_particle_rule_success
  ✅ test_mixing_rule_failure_recipe_systems
  ✅ test_mixing_rule_failure_nonrecipe_systems
  ✅ test_mixing_rule_success
  ✅ test_cooking_system_rule_failure_recipe_systems
  ✅ test_cooking_system_rule_failure_nonrecipe_systems
  ✅ test_cooking_system_rule_failure_nonrecipe_objects
  ✅ test_cooking_system_rule_success
  ✅ test_cooking_object_rule_failure_wrong_container
  ✅ test_cooking_object_rule_failure_recipe_objects
  ✅ test_cooking_object_rule_failure_unary_states
  ✅ test_cooking_object_rule_failure_binary_system_states
  ✅ test_cooking_object_rule_failure_binary_object_states
  ✅ test_cooking_object_rule_failure_wrong_heat_source
  ✅ test_cooking_object_rule_success
  ✅ test_single_toggleable_machine_rule_output_system_failure_wrong_container
  ✅ test_single_toggleable_machine_rule_output_system_failure_recipe_systems
  ✅ test_single_toggleable_machine_rule_output_system_failure_recipe_objects
  ✅ test_single_toggleable_machine_rule_output_system_failure_nonrecipe_systems
  ✅ test_single_toggleable_machine_rule_output_system_failure_nonrecipe_objects
  ✅ test_single_toggleable_machine_rule_output_system_success
  ✅ test_single_toggleable_machine_rule_output_object_failure_unary_states
  ✅ test_single_toggleable_machine_rule_output_object_success

Annotations

Check failure on line 0 in 11898020939-tests-test_controllers/test_controllers.xml

See this annotation in the file changed.

@github-actions github-actions / Test Results

pytest ► tests.test_controllers ► test_arm_control

Failed test found in:
  11898020939-tests-test_controllers/test_controllers.xml
Error:
  def test_arm_control():
Raw output
def test_arm_control():
        # Create env
        cfg = {
            "scene": {
                "type": "Scene",
            },
            "objects": [],
            "robots": [
                {
                    "type": "FrankaPanda",
                    "name": "robot0",
                    "obs_modalities": "rgb",
                    "position": [150, 150, 100],
                    "orientation": [0, 0, 0, 1],
                    "action_normalize": False,
                },
                {
                    "type": "Fetch",
                    "name": "robot1",
                    "obs_modalities": "rgb",
                    "position": [150, 150, 105],
                    "orientation": [0, 0, 0, 1],
                    "action_normalize": False,
                },
                {
                    "type": "Tiago",
                    "name": "robot2",
                    "obs_modalities": "rgb",
                    "position": [150, 150, 110],
                    "orientation": [0, 0, 0, 1],
                    "action_normalize": False,
                },
                {
                    "type": "A1",
                    "name": "robot3",
                    "obs_modalities": "rgb",
                    "position": [150, 150, 115],
                    "orientation": [0, 0, 0, 1],
                    "action_normalize": False,
                },
                {
                    "type": "R1",
                    "name": "robot4",
                    "obs_modalities": "rgb",
                    "position": [150, 150, 120],
                    "orientation": [0, 0, 0, 1],
                    "action_normalize": False,
                },
            ],
        }
    
>       env = og.Environment(configs=cfg)

tests/test_controllers.py:61: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
omnigibson/utils/python_utils.py:93: in wrapper
    func(*values.args, **values.kwargs)
omnigibson/envs/env_base.py:132: in __init__
    og.sim.play()
omnigibson/simulator.py:1038: in play
    self._non_physics_step()
omnigibson/simulator.py:936: in _non_physics_step
    obj.initialize()
omnigibson/prims/prim_base.py:79: in initialize
    self._initialize()
omnigibson/robots/holonomic_base_robot.py:137: in _initialize
    super()._initialize()
omnigibson/robots/manipulation_robot.py:210: in _initialize
    super()._initialize()
omnigibson/robots/robot_base.py:171: in _initialize
    super()._initialize()
omnigibson/objects/stateful_object.py:152: in _initialize
    super()._initialize()
omnigibson/objects/controllable_object.py:161: in _initialize
    self._load_controllers()
omnigibson/objects/controllable_object.py:284: in _load_controllers
    self.update_controller_mode()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <omnigibson.robots.r1.R1 object at 0x7f7046ff79d0>

    def update_controller_mode(self):
        """
        Helper function to force the joints to use the internal specified control mode and gains
        """
        # Update the control modes of each joint based on the outputted control from the controllers
        unused_dofs = {i for i in range(self.n_dof)}
        for name in self._controllers:
            for dof in self._controllers[name].dof_idx:
                # Make sure the DOF has not already been set yet, and remove it afterwards
                assert dof.item() in unused_dofs
                unused_dofs.remove(dof.item())
                control_type = self._controllers[name].control_type
                self._joints[self.dof_names_ordered[dof]].set_control_type(
                    control_type=control_type,
                    kp=self.default_kp if control_type == ControlType.POSITION else None,
                    kd=(
                        self.default_kd
                        if control_type == ControlType.POSITION or control_type == ControlType.VELOCITY
                        else None
                    ),
                )
    
        # For all remaining DOFs not controlled, we assume these are free DOFs (e.g.: virtual joints representing free
        # motion wrt a specific axis), so explicitly set kp / kd to 0 to avoid silent bugs when
        # joint positions / velocities are set
        for unused_dof in unused_dofs:
            unused_joint = self._joints[self.dof_names_ordered[unused_dof]]
>           assert not unused_joint.driven, (
                f"All unused joints not mapped to any controller should not have DriveAPI attached to it! "
                f"However, joint {unused_joint.name} is driven!"
            )
E           AssertionError: All unused joints not mapped to any controller should not have DriveAPI attached to it! However, joint robot4:joint_base_footprint_z_joint is driven!

omnigibson/objects/controllable_object.py:313: AssertionError

Check failure on line 0 in 11898020939-tests-test_primitives/test_primitives.xml

See this annotation in the file changed.

@github-actions github-actions / Test Results

pytest ► tests.test_primitives.TestPrimitives ► test_navigate[Tiago]

Failed test found in:
  11898020939-tests-test_primitives/test_primitives.xml
Error:
  self = <test_primitives.TestPrimitives object at 0x7fdcf4f3efe0>
Raw output
self = <test_primitives.TestPrimitives object at 0x7fdcf4f3efe0>
robot = 'Tiago'

    def test_navigate(self, robot):
        categories = ["floors", "ceilings", "walls"]
>       env = setup_environment(categories, robot=robot)

tests/test_primitives.py:92: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_primitives.py:63: in setup_environment
    env = og.Environment(configs=cfg)
omnigibson/utils/python_utils.py:93: in wrapper
    func(*values.args, **values.kwargs)
omnigibson/envs/env_base.py:132: in __init__
    og.sim.play()
omnigibson/simulator.py:1038: in play
    self._non_physics_step()
omnigibson/simulator.py:936: in _non_physics_step
    obj.initialize()
omnigibson/prims/prim_base.py:79: in initialize
    self._initialize()
omnigibson/robots/holonomic_base_robot.py:151: in _initialize
    self.reload_controllers(self._controller_config)
omnigibson/objects/controllable_object.py:363: in reload_controllers
    self._load_controllers()
omnigibson/objects/controllable_object.py:227: in _load_controllers
    self._controller_config = self._generate_controller_config(custom_config=self._controller_config)
omnigibson/objects/controllable_object.py:345: in _generate_controller_config
    controller_config[group] = merge_nested_dicts(
omnigibson/utils/python_utils.py:183: in merge_nested_dicts
    equal = safe_equal(base_dict[k], v)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a = tensor([ 8, 11, 14, 16, 18, 20, 22])
b = tensor([ 6,  8, 11, 14, 16, 18, 20, 22])

    def safe_equal(a, b):
        if isinstance(a, th.Tensor) and isinstance(b, th.Tensor):
>           return (a == b).all().item()
E           RuntimeError: The size of tensor a (7) must match the size of tensor b (8) at non-singleton dimension 0

omnigibson/utils/python_utils.py:154: RuntimeError

Check failure on line 0 in 11898020939-tests-test_primitives/test_primitives.xml

See this annotation in the file changed.

@github-actions github-actions / Test Results

pytest ► tests.test_primitives.TestPrimitives ► test_navigate[Fetch]

Failed test found in:
  11898020939-tests-test_primitives/test_primitives.xml
Error:
  self = <test_primitives.TestPrimitives object at 0x7fdaf7d17ca0>
Raw output
self = <test_primitives.TestPrimitives object at 0x7fdaf7d17ca0>
robot = 'Fetch'

    def test_navigate(self, robot):
        categories = ["floors", "ceilings", "walls"]
>       env = setup_environment(categories, robot=robot)

tests/test_primitives.py:92: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_primitives.py:63: in setup_environment
    env = og.Environment(configs=cfg)
omnigibson/utils/python_utils.py:93: in wrapper
    func(*values.args, **values.kwargs)
omnigibson/envs/env_base.py:128: in __init__
    self.load()
omnigibson/envs/env_base.py:429: in load
    self._load_scene()
omnigibson/envs/env_base.py:257: in _load_scene
    og.sim.import_scene(self._scene)
omnigibson/simulator.py:715: in import_scene
    self.play()
omnigibson/simulator.py:1038: in play
    self._non_physics_step()
omnigibson/simulator.py:936: in _non_physics_step
    obj.initialize()
omnigibson/prims/prim_base.py:79: in initialize
    self._initialize()
omnigibson/robots/holonomic_base_robot.py:137: in _initialize
    super()._initialize()
omnigibson/robots/manipulation_robot.py:210: in _initialize
    super()._initialize()
omnigibson/robots/robot_base.py:171: in _initialize
    super()._initialize()
omnigibson/objects/stateful_object.py:152: in _initialize
    super()._initialize()
omnigibson/objects/controllable_object.py:147: in _initialize
    super()._initialize()
omnigibson/objects/object_base.py:224: in _initialize
    super()._initialize()
omnigibson/prims/entity_prim.py:92: in _initialize
    link.initialize()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <omnigibson.prims.rigid_prim.RigidPrim object at 0x7fdce9194460>

    def initialize(self):
        """
        Initializes state of this object and sets up any references necessary post-loading. Subclasses should
        implement / extend the _initialize() method.
        """
>       assert (
            not self._initialized
        ), f"Prim {self.name} at prim_path {self.prim_path} can only be initialized once! (It is already initialized)"
E       AssertionError: Prim robot_lwahzr:base_footprint at prim_path /World/scene_0/controllable__tiago__robot_lwahzr/base_footprint can only be initialized once! (It is already initialized)

omnigibson/prims/prim_base.py:76: AssertionError

Check failure on line 0 in 11898020939-tests-test_primitives/test_primitives.xml

See this annotation in the file changed.

@github-actions github-actions / Test Results

pytest ► tests.test_primitives.TestPrimitives ► test_grasp[Tiago]

Failed test found in:
  11898020939-tests-test_primitives/test_primitives.xml
Error:
  self = <test_primitives.TestPrimitives object at 0x7fdaf7d15a20>
Raw output
self = <test_primitives.TestPrimitives object at 0x7fdaf7d15a20>
robot = 'Tiago'

    def test_grasp(self, robot):
        categories = ["floors", "ceilings", "walls", "coffee_table"]
>       env = setup_environment(categories, robot=robot)

tests/test_primitives.py:109: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_primitives.py:63: in setup_environment
    env = og.Environment(configs=cfg)
omnigibson/utils/python_utils.py:93: in wrapper
    func(*values.args, **values.kwargs)
omnigibson/envs/env_base.py:128: in __init__
    self.load()
omnigibson/envs/env_base.py:429: in load
    self._load_scene()
omnigibson/envs/env_base.py:257: in _load_scene
    og.sim.import_scene(self._scene)
omnigibson/simulator.py:715: in import_scene
    self.play()
omnigibson/simulator.py:1038: in play
    self._non_physics_step()
omnigibson/simulator.py:936: in _non_physics_step
    obj.initialize()
omnigibson/prims/prim_base.py:79: in initialize
    self._initialize()
omnigibson/robots/holonomic_base_robot.py:137: in _initialize
    super()._initialize()
omnigibson/robots/manipulation_robot.py:210: in _initialize
    super()._initialize()
omnigibson/robots/robot_base.py:171: in _initialize
    super()._initialize()
omnigibson/objects/stateful_object.py:152: in _initialize
    super()._initialize()
omnigibson/objects/controllable_object.py:147: in _initialize
    super()._initialize()
omnigibson/objects/object_base.py:224: in _initialize
    super()._initialize()
omnigibson/prims/entity_prim.py:92: in _initialize
    link.initialize()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <omnigibson.prims.rigid_prim.RigidPrim object at 0x7fdce9194460>

    def initialize(self):
        """
        Initializes state of this object and sets up any references necessary post-loading. Subclasses should
        implement / extend the _initialize() method.
        """
>       assert (
            not self._initialized
        ), f"Prim {self.name} at prim_path {self.prim_path} can only be initialized once! (It is already initialized)"
E       AssertionError: Prim robot_lwahzr:base_footprint at prim_path /World/scene_0/controllable__tiago__robot_lwahzr/base_footprint can only be initialized once! (It is already initialized)

omnigibson/prims/prim_base.py:76: AssertionError

Check failure on line 0 in 11898020939-tests-test_primitives/test_primitives.xml

See this annotation in the file changed.

@github-actions github-actions / Test Results

pytest ► tests.test_primitives.TestPrimitives ► test_grasp[Fetch]

Failed test found in:
  11898020939-tests-test_primitives/test_primitives.xml
Error:
  self = <test_primitives.TestPrimitives object at 0x7fdaf7d15540>
Raw output
self = <test_primitives.TestPrimitives object at 0x7fdaf7d15540>
robot = 'Fetch'

    def test_grasp(self, robot):
        categories = ["floors", "ceilings", "walls", "coffee_table"]
>       env = setup_environment(categories, robot=robot)

tests/test_primitives.py:109: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_primitives.py:63: in setup_environment
    env = og.Environment(configs=cfg)
omnigibson/utils/python_utils.py:93: in wrapper
    func(*values.args, **values.kwargs)
omnigibson/envs/env_base.py:128: in __init__
    self.load()
omnigibson/envs/env_base.py:429: in load
    self._load_scene()
omnigibson/envs/env_base.py:257: in _load_scene
    og.sim.import_scene(self._scene)
omnigibson/simulator.py:715: in import_scene
    self.play()
omnigibson/simulator.py:1038: in play
    self._non_physics_step()
omnigibson/simulator.py:936: in _non_physics_step
    obj.initialize()
omnigibson/prims/prim_base.py:79: in initialize
    self._initialize()
omnigibson/robots/holonomic_base_robot.py:137: in _initialize
    super()._initialize()
omnigibson/robots/manipulation_robot.py:210: in _initialize
    super()._initialize()
omnigibson/robots/robot_base.py:171: in _initialize
    super()._initialize()
omnigibson/objects/stateful_object.py:152: in _initialize
    super()._initialize()
omnigibson/objects/controllable_object.py:147: in _initialize
    super()._initialize()
omnigibson/objects/object_base.py:224: in _initialize
    super()._initialize()
omnigibson/prims/entity_prim.py:92: in _initialize
    link.initialize()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <omnigibson.prims.rigid_prim.RigidPrim object at 0x7fdce9194460>

    def initialize(self):
        """
        Initializes state of this object and sets up any references necessary post-loading. Subclasses should
        implement / extend the _initialize() method.
        """
>       assert (
            not self._initialized
        ), f"Prim {self.name} at prim_path {self.prim_path} can only be initialized once! (It is already initialized)"
E       AssertionError: Prim robot_lwahzr:base_footprint at prim_path /World/scene_0/controllable__tiago__robot_lwahzr/base_footprint can only be initialized once! (It is already initialized)

omnigibson/prims/prim_base.py:76: AssertionError

Check failure on line 0 in 11898020939-tests-test_primitives/test_primitives.xml

See this annotation in the file changed.

@github-actions github-actions / Test Results

pytest ► tests.test_primitives.TestPrimitives ► test_place[Tiago]

Failed test found in:
  11898020939-tests-test_primitives/test_primitives.xml
Error:
  self = <test_primitives.TestPrimitives object at 0x7fdaf7d15600>
Raw output
self = <test_primitives.TestPrimitives object at 0x7fdaf7d15600>
robot = 'Tiago'

    def test_place(self, robot):
        categories = ["floors", "ceilings", "walls", "coffee_table"]
>       env = setup_environment(categories, robot=robot)

tests/test_primitives.py:126: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_primitives.py:63: in setup_environment
    env = og.Environment(configs=cfg)
omnigibson/utils/python_utils.py:93: in wrapper
    func(*values.args, **values.kwargs)
omnigibson/envs/env_base.py:128: in __init__
    self.load()
omnigibson/envs/env_base.py:429: in load
    self._load_scene()
omnigibson/envs/env_base.py:257: in _load_scene
    og.sim.import_scene(self._scene)
omnigibson/simulator.py:715: in import_scene
    self.play()
omnigibson/simulator.py:1038: in play
    self._non_physics_step()
omnigibson/simulator.py:936: in _non_physics_step
    obj.initialize()
omnigibson/prims/prim_base.py:79: in initialize
    self._initialize()
omnigibson/robots/holonomic_base_robot.py:137: in _initialize
    super()._initialize()
omnigibson/robots/manipulation_robot.py:210: in _initialize
    super()._initialize()
omnigibson/robots/robot_base.py:171: in _initialize
    super()._initialize()
omnigibson/objects/stateful_object.py:152: in _initialize
    super()._initialize()
omnigibson/objects/controllable_object.py:147: in _initialize
    super()._initialize()
omnigibson/objects/object_base.py:224: in _initialize
    super()._initialize()
omnigibson/prims/entity_prim.py:92: in _initialize
    link.initialize()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <omnigibson.prims.rigid_prim.RigidPrim object at 0x7fdce9194460>

    def initialize(self):
        """
        Initializes state of this object and sets up any references necessary post-loading. Subclasses should
        implement / extend the _initialize() method.
        """
>       assert (
            not self._initialized
        ), f"Prim {self.name} at prim_path {self.prim_path} can only be initialized once! (It is already initialized)"
E       AssertionError: Prim robot_lwahzr:base_footprint at prim_path /World/scene_0/controllable__tiago__robot_lwahzr/base_footprint can only be initialized once! (It is already initialized)

omnigibson/prims/prim_base.py:76: AssertionError

Check failure on line 0 in 11898020939-tests-test_primitives/test_primitives.xml

See this annotation in the file changed.

@github-actions github-actions / Test Results

pytest ► tests.test_primitives.TestPrimitives ► test_place[Fetch]

Failed test found in:
  11898020939-tests-test_primitives/test_primitives.xml
Error:
  self = <test_primitives.TestPrimitives object at 0x7fdaf7d15ed0>
Raw output
self = <test_primitives.TestPrimitives object at 0x7fdaf7d15ed0>
robot = 'Fetch'

    def test_place(self, robot):
        categories = ["floors", "ceilings", "walls", "coffee_table"]
>       env = setup_environment(categories, robot=robot)

tests/test_primitives.py:126: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_primitives.py:63: in setup_environment
    env = og.Environment(configs=cfg)
omnigibson/utils/python_utils.py:93: in wrapper
    func(*values.args, **values.kwargs)
omnigibson/envs/env_base.py:128: in __init__
    self.load()
omnigibson/envs/env_base.py:429: in load
    self._load_scene()
omnigibson/envs/env_base.py:257: in _load_scene
    og.sim.import_scene(self._scene)
omnigibson/simulator.py:715: in import_scene
    self.play()
omnigibson/simulator.py:1038: in play
    self._non_physics_step()
omnigibson/simulator.py:936: in _non_physics_step
    obj.initialize()
omnigibson/prims/prim_base.py:79: in initialize
    self._initialize()
omnigibson/robots/holonomic_base_robot.py:137: in _initialize
    super()._initialize()
omnigibson/robots/manipulation_robot.py:210: in _initialize
    super()._initialize()
omnigibson/robots/robot_base.py:171: in _initialize
    super()._initialize()
omnigibson/objects/stateful_object.py:152: in _initialize
    super()._initialize()
omnigibson/objects/controllable_object.py:147: in _initialize
    super()._initialize()
omnigibson/objects/object_base.py:224: in _initialize
    super()._initialize()
omnigibson/prims/entity_prim.py:92: in _initialize
    link.initialize()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <omnigibson.prims.rigid_prim.RigidPrim object at 0x7fdce9194460>

    def initialize(self):
        """
        Initializes state of this object and sets up any references necessary post-loading. Subclasses should
        implement / extend the _initialize() method.
        """
>       assert (
            not self._initialized
        ), f"Prim {self.name} at prim_path {self.prim_path} can only be initialized once! (It is already initialized)"
E       AssertionError: Prim robot_lwahzr:base_footprint at prim_path /World/scene_0/controllable__tiago__robot_lwahzr/base_footprint can only be initialized once! (It is already initialized)

omnigibson/prims/prim_base.py:76: AssertionError

Check failure on line 0 in 11898020939-tests-test_robot_states_flatcache/test_robot_states_flatcache.xml

See this annotation in the file changed.

@github-actions github-actions / Test Results

pytest ► tests.test_robot_states_flatcache ► test_camera_pose_flatcache_on

Failed test found in:
  11898020939-tests-test_robot_states_flatcache/test_robot_states_flatcache.xml
Error:
  def test_camera_pose_flatcache_on():
Raw output
def test_camera_pose_flatcache_on():
>       camera_pose_test(True)

tests/test_robot_states_flatcache.py:124: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

flatcache = True

    def camera_pose_test(flatcache):
        env = setup_environment(flatcache)
        robot = env.robots[0]
        env.reset()
        og.sim.step()
    
        sensors = [s for s in robot.sensors.values() if isinstance(s, VisionSensor)]
        assert len(sensors) > 0
        vision_sensor = sensors[0]
    
        # Get vision sensor world pose via directly calling get_position_orientation
        robot_world_pos, robot_world_ori = robot.get_position_orientation()
        sensor_world_pos, sensor_world_ori = vision_sensor.get_position_orientation()
    
        robot_to_sensor_mat = pose2mat(
            relative_pose_transform(sensor_world_pos, sensor_world_ori, robot_world_pos, robot_world_ori)
        )
    
        sensor_world_pos_gt = th.tensor([150.1620, 149.9999, 101.2193])
        sensor_world_ori_gt = th.tensor([-0.2952, 0.2959, 0.6427, -0.6421])
    
>       assert th.allclose(sensor_world_pos, sensor_world_pos_gt, atol=1e-3)
E       assert False
E        +  where False = <built-in method allclose of type object at 0x7fd658e85840>(tensor([150.1628, 149.9993, 101.3773]), tensor([150.1620, 149.9999, 101.2193]), atol=0.001)
E        +    where <built-in method allclose of type object at 0x7fd658e85840> = th.allclose

tests/test_robot_states_flatcache.py:67: AssertionError

Check failure on line 0 in 11898020939-tests-test_robot_states_flatcache/test_robot_states_flatcache.xml

See this annotation in the file changed.

@github-actions github-actions / Test Results

pytest ► tests.test_robot_states_flatcache ► test_robot_load_drive

Failed test found in:
  11898020939-tests-test_robot_states_flatcache/test_robot_states_flatcache.xml
Error:
  def test_robot_load_drive():
Raw output
def test_robot_load_drive():
        if og.sim is None:
            # Set global flags
            gm.ENABLE_OBJECT_STATES = True
            gm.USE_GPU_DYNAMICS = True
            gm.ENABLE_TRANSITION_RULES = False
        else:
            # Make sure sim is stopped
            og.sim.stop()
    
        config = {
            "scene": {
                "type": "Scene",
            },
        }
    
        env = og.Environment(configs=config)
        og.sim.stop()
    
        # Iterate over all robots and test their motion
        for robot_name, robot_cls in REGISTERED_ROBOTS.items():
    
            if robot_name in ["FrankaMounted", "Stretch"]:
                # TODO: skipping FrankaMounted and Stretch for now because CI doesn't have the required assets
                continue
    
            if robot_name in ["Husky", "BehaviorRobot"]:
                # Husky base motion is a little messed up because of the 4-wheel drive; skipping for now
                # BehaviorRobot does not work with the primitive actions at the moment
                continue
    
            robot = robot_cls(
                name=robot_name,
                obs_modalities=[],
            )
>           env.scene.add_object(robot)

tests/test_robot_states_flatcache.py:162: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
omnigibson/scenes/scene_base.py:631: in add_object
    prim = obj.load(self)
omnigibson/objects/controllable_object.py:176: in load
    prim = super().load(scene)
omnigibson/objects/object_base.py:123: in load
    prim = super().load(scene)
omnigibson/prims/prim_base.py:116: in load
    self._post_load()
omnigibson/robots/robot_base.py:164: in _post_load
    super()._post_load()
omnigibson/objects/stateful_object.py:144: in _post_load
    super()._post_load()
omnigibson/objects/controllable_object.py:194: in _post_load
    super()._post_load()
omnigibson/objects/object_base.py:161: in _post_load
    super()._post_load()
omnigibson/prims/entity_prim.py:128: in _post_load
    self.update_links()
omnigibson/prims/entity_prim.py:260: in update_links
    self._links[link_name].load(self.scene)
omnigibson/prims/prim_base.py:116: in load
    self._post_load()
omnigibson/prims/rigid_prim.py:92: in _post_load
    self._rigid_prim_view_direct = RigidPrimView(self.prim_path)
/isaac-sim/exts/omni.isaac.core/omni/isaac/core/prims/rigid_prim_view.py:145: in __init__
    XFormPrimView.__init__(
/isaac-sim/exts/omni.isaac.core/omni/isaac/core/prims/xform_prim_view.py:175: in __init__
    self._set_xform_properties()
/isaac-sim/exts/omni.isaac.core/omni/isaac/core/prims/xform_prim_view.py:321: in _set_xform_properties
    self.set_world_poses(positions=current_positions, orientations=current_orientations)
/isaac-sim/exts/omni.isaac.core/omni/isaac/core/prims/rigid_prim_view.py:367: in set_world_poses
    XFormPrimView.set_world_poses(
/isaac-sim/exts/omni.isaac.core/omni/isaac/core/prims/xform_prim_view.py:939: in set_world_poses
    calculated_translations, calculated_orientations = self._backend_utils.get_local_from_world(
/isaac-sim/exts/omni.isaac.core/omni/isaac/core/utils/torch/transformations.py:44: in get_local_from_world
    my_world_transforms = tf_matrices_from_poses(translations=positions, orientations=orientations, device=device)
/isaac-sim/exts/omni.isaac.core/omni/isaac/core/utils/torch/transformations.py:34: in tf_matrices_from_poses
    r = Rotation.from_quat(orientations[:, [1, 2, 3, 0]].detach().cpu().numpy())
_rotation.pyx:637: in scipy.spatial.transform._rotation.Rotation.from_quat
    ???
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

>   ???
E   ValueError: Found zero norm quaternions in `quat`.

_rotation.pyx:532: ValueError

Check failure on line 0 in 11898020939-tests-test_robot_states_flatcache/test_robot_states_flatcache.xml

See this annotation in the file changed.

@github-actions github-actions / Test Results

pytest ► tests.test_robot_states_flatcache ► test_grasping_mode

Failed test found in:
  11898020939-tests-test_robot_states_flatcache/test_robot_states_flatcache.xml
Error:
  def test_grasping_mode():
Raw output
def test_grasping_mode():
    
        if og.sim is None:
            # Set global flags
            gm.ENABLE_FLATCACHE = True
        else:
            # Make sure sim is stopped
            og.sim.stop()
    
        scene_cfg = dict(type="Scene")
        objects_cfg = []
        objects_cfg.append(
            dict(
                type="DatasetObject",
                name=f"table",
                category="breakfast_table",
                model="lcsizg",
                bounding_box=[0.5, 0.5, 0.8],
                fixed_base=True,
                position=[0.7, -0.1, 0.6],
            )
        )
        objects_cfg.append(
            dict(
                type="PrimitiveObject",
                name=f"box",
                primitive_type="Cube",
                rgba=[1.0, 0, 0, 1.0],
                size=0.05,
                position=[0.53, 0.0, 0.87],
            )
        )
        cfg = dict(scene=scene_cfg, objects=objects_cfg)
    
>       env = og.Environment(configs=cfg)

tests/test_robot_states_flatcache.py:250: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
omnigibson/utils/python_utils.py:93: in wrapper
    func(*values.args, **values.kwargs)
omnigibson/envs/env_base.py:128: in __init__
    self.load()
omnigibson/envs/env_base.py:431: in load
    self._load_objects()
omnigibson/envs/env_base.py:315: in _load_objects
    self.scene.add_object(obj)
omnigibson/scenes/scene_base.py:631: in add_object
    prim = obj.load(self)
omnigibson/objects/object_base.py:123: in load
    prim = super().load(scene)
omnigibson/prims/prim_base.py:116: in load
    self._post_load()
omnigibson/objects/dataset_object.py:240: in _post_load
    super()._post_load()
omnigibson/objects/stateful_object.py:144: in _post_load
    super()._post_load()
omnigibson/objects/object_base.py:161: in _post_load
    super()._post_load()
omnigibson/prims/entity_prim.py:128: in _post_load
    self.update_links()
omnigibson/prims/entity_prim.py:260: in update_links
    self._links[link_name].load(self.scene)
omnigibson/prims/prim_base.py:116: in load
    self._post_load()
omnigibson/prims/rigid_prim.py:92: in _post_load
    self._rigid_prim_view_direct = RigidPrimView(self.prim_path)
/isaac-sim/exts/omni.isaac.core/omni/isaac/core/prims/rigid_prim_view.py:145: in __init__
    XFormPrimView.__init__(
/isaac-sim/exts/omni.isaac.core/omni/isaac/core/prims/xform_prim_view.py:175: in __init__
    self._set_xform_properties()
/isaac-sim/exts/omni.isaac.core/omni/isaac/core/prims/xform_prim_view.py:321: in _set_xform_properties
    self.set_world_poses(positions=current_positions, orientations=current_orientations)
/isaac-sim/exts/omni.isaac.core/omni/isaac/core/prims/rigid_prim_view.py:367: in set_world_poses
    XFormPrimView.set_world_poses(
/isaac-sim/exts/omni.isaac.core/omni/isaac/core/prims/xform_prim_view.py:939: in set_world_poses
    calculated_translations, calculated_orientations = self._backend_utils.get_local_from_world(
/isaac-sim/exts/omni.isaac.core/omni/isaac/core/utils/torch/transformations.py:44: in get_local_from_world
    my_world_transforms = tf_matrices_from_poses(translations=positions, orientations=orientations, device=device)
/isaac-sim/exts/omni.isaac.core/omni/isaac/core/utils/torch/transformations.py:34: in tf_matrices_from_poses
    r = Rotation.from_quat(orientations[:, [1, 2, 3, 0]].detach().cpu().numpy())
_rotation.pyx:637: in scipy.spatial.transform._rotation.Rotation.from_quat
    ???
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

>   ???
E   ValueError: Found zero norm quaternions in `quat`.

_rotation.pyx:532: ValueError

Check failure on line 0 in 11898020939-tests-test_robot_states_no_flatcache/test_robot_states_no_flatcache.xml

See this annotation in the file changed.

@github-actions github-actions / Test Results

pytest ► tests.test_robot_states_no_flatcache ► test_camera_pose_flatcache_off

Failed test found in:
  11898020939-tests-test_robot_states_no_flatcache/test_robot_states_no_flatcache.xml
Error:
  def test_camera_pose_flatcache_off():
Raw output
def test_camera_pose_flatcache_off():
>       camera_pose_test(False)

tests/test_robot_states_no_flatcache.py:11: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

flatcache = False

    def camera_pose_test(flatcache):
        env = setup_environment(flatcache)
        robot = env.robots[0]
        env.reset()
        og.sim.step()
    
        sensors = [s for s in robot.sensors.values() if isinstance(s, VisionSensor)]
        assert len(sensors) > 0
        vision_sensor = sensors[0]
    
        # Get vision sensor world pose via directly calling get_position_orientation
        robot_world_pos, robot_world_ori = robot.get_position_orientation()
        sensor_world_pos, sensor_world_ori = vision_sensor.get_position_orientation()
    
        robot_to_sensor_mat = pose2mat(
            relative_pose_transform(sensor_world_pos, sensor_world_ori, robot_world_pos, robot_world_ori)
        )
    
        sensor_world_pos_gt = th.tensor([150.1620, 149.9999, 101.2193])
        sensor_world_ori_gt = th.tensor([-0.2952, 0.2959, 0.6427, -0.6421])
    
>       assert th.allclose(sensor_world_pos, sensor_world_pos_gt, atol=1e-3)
E       assert False
E        +  where False = <built-in method allclose of type object at 0x7f7d7bc85840>(tensor([150.1628, 149.9993, 101.3773]), tensor([150.1620, 149.9999, 101.2193]), atol=0.001)
E        +    where <built-in method allclose of type object at 0x7f7d7bc85840> = th.allclose

tests/test_robot_states_flatcache.py:67: AssertionError