Skip to content

Fix meta link path and jitscript regressions from latest PRs #2601

Fix meta link path and jitscript regressions from latest PRs

Fix meta link path and jitscript regressions from latest PRs #2601

GitHub Actions / Test Results succeeded Feb 21, 2025 in 0s

65 passed, 51 failed and 13 skipped

Tests failed

Report Passed Failed Skipped Time
test_controllers.xml 1✅ 814s
test_curobo.xml 1❌ 536s
test_data_collection.xml 1✅ 1875s
test_dump_load_states.xml 4❌ 441s
test_envs.xml 4✅ 1❌ 625s
test_multiple_envs.xml 4✅ 4❌ 2⚪ 478s
test_object_removal.xml 2❌ 624s
test_primitives.xml 6❌ 4⚪ 664s
test_robot_states_flatcache.xml 3✅ 1126s
test_robot_states_no_flatcache.xml 3✅ 564s
test_robot_teleoperation.xml 1⚪ 28ms
test_scene_graph.xml 1✅ 540s
test_sensors.xml 2❌ 604s
test_symbolic_primitives.xml 14✅ 6⚪ 1268s
test_systems.xml 1❌ 634s
test_transform_utils.xml 34✅ 139s
test_transition_rules.xml 30❌ 526s

✅ test_controllers.xml

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

Test suite Passed Failed Skipped Time
pytest 1✅ 814s

✅ pytest

tests.test_controllers
  ✅ test_arm_control

❌ test_curobo.xml

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

Test suite Passed Failed Skipped Time
pytest 1❌ 536s

❌ pytest

tests.test_curobo
  ❌ test_curobo
	def test_curobo():

✅ test_data_collection.xml

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

Test suite Passed Failed Skipped Time
pytest 1✅ 1875s

✅ pytest

tests.test_data_collection
  ✅ test_data_collect_and_playback

❌ test_dump_load_states.xml

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

Test suite Passed Failed Skipped Time
pytest 4❌ 441s

❌ pytest

tests.test_dump_load_states
  ❌ test_dump_load
	def wrapper():
  ❌ test_dump_load_serialized
	def wrapper():
  ❌ test_save_restore_partial
	def wrapper():
  ❌ test_save_restore_full
	def wrapper():

❌ test_envs.xml

5 tests were completed in 625s with 4 passed, 1 failed and 0 skipped.

Test suite Passed Failed Skipped Time
pytest 4✅ 1❌ 625s

❌ pytest

tests.test_envs
  ✅ test_dummy_task
  ✅ test_point_reaching_task
  ✅ test_point_navigation_task
  ✅ test_behavior_task
  ❌ test_rs_int_full_load
	def test_rs_int_full_load():

❌ test_multiple_envs.xml

10 tests were completed in 478s with 4 passed, 4 failed and 2 skipped.

Test suite Passed Failed Skipped Time
pytest 4✅ 4❌ 2⚪ 478s

❌ 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
	def test_multi_scene_particle_source():
  ❌ test_multi_scene_position_orientation_relative_to_scene
	def test_multi_scene_position_orientation_relative_to_scene():
  ❌ test_tiago_getter
	def test_tiago_getter():
  ❌ test_tiago_setter
	def test_tiago_setter():
  ⚪ test_behavior_getter
  ⚪ test_behavior_setter

❌ test_object_removal.xml

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

Test suite Passed Failed Skipped Time
pytest 2❌ 624s

❌ pytest

tests.test_object_removal
  ❌ test_removal_and_readdition
	def wrapper():
  ❌ test_readdition
	def wrapper():

❌ test_primitives.xml

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

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

❌ pytest

tests.test_primitives.TestPrimitives
  ❌ test_navigate[Tiago]
	self = <test_primitives.TestPrimitives object at 0x14ea8cfa9660>
  ❌ test_navigate[R1]
	self = <test_primitives.TestPrimitives object at 0x14ea8cfa9b10>, robot = 'R1'
  ❌ test_grasp[Tiago]
	self = <test_primitives.TestPrimitives object at 0x14ea8cfaa4a0>
  ❌ test_grasp[R1]
	self = <test_primitives.TestPrimitives object at 0x14ea8cfa95d0>, robot = 'R1'
  ❌ test_place[Tiago]
	self = <test_primitives.TestPrimitives object at 0x14ea8cfa89a0>
  ❌ test_place[R1]
	self = <test_primitives.TestPrimitives object at 0x14ea8cfa9900>, robot = 'R1'
  ⚪ test_open_prismatic[Tiago]
  ⚪ test_open_prismatic[R1]
  ⚪ test_open_revolute[Tiago]
  ⚪ test_open_revolute[R1]

✅ test_robot_states_flatcache.xml

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

Test suite Passed Failed Skipped Time
pytest 3✅ 1126s

✅ pytest

tests.test_robot_states_flatcache
  ✅ test_camera_pose_flatcache_on
  ✅ test_robot_load_drive
  ✅ test_grasping_mode

✅ test_robot_states_no_flatcache.xml

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

Test suite Passed Failed Skipped Time
pytest 3✅ 564s

✅ pytest

tests.test_robot_states_no_flatcache
  ✅ test_camera_pose_flatcache_off
  ✅ test_camera_semantic_segmentation
  ✅ test_object_in_FOV_of_robot

✅ test_robot_teleoperation.xml

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

Test suite Passed Failed Skipped Time
pytest 1⚪ 28ms

✅ pytest

tests.test_robot_teleoperation
  ⚪ test_teleop

✅ test_scene_graph.xml

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

Test suite Passed Failed Skipped Time
pytest 1✅ 540s

✅ pytest

tests.test_scene_graph
  ✅ test_scene_graph

❌ test_sensors.xml

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

Test suite Passed Failed Skipped Time
pytest 2❌ 604s

❌ pytest

tests.test_sensors
  ❌ test_segmentation_modalities
	def wrapper():
  ❌ test_bbox_modalities
	def wrapper():

✅ test_symbolic_primitives.xml

20 tests were completed in 1268s with 14 passed, 0 failed and 6 skipped.

Test suite Passed Failed Skipped Time
pytest 14✅ 6⚪ 1268s

✅ pytest

tests.test_symbolic_primitives.TestSymbolicPrimitives
  ✅ test_in_hand_state[R1]
  ✅ test_open[R1]
  ✅ test_close[R1]
  ✅ test_place_inside[R1]
  ✅ test_place_ontop[R1]
  ✅ test_toggle_on[R1]
  ⚪ test_soak_under[R1]
  ⚪ test_wipe[R1]
  ⚪ test_cut[R1]
  ✅ test_persistent_sticky_grasping[R1]
  ✅ test_in_hand_state[Tiago]
  ✅ test_open[Tiago]
  ✅ test_close[Tiago]
  ✅ test_place_inside[Tiago]
  ✅ test_place_ontop[Tiago]
  ✅ test_toggle_on[Tiago]
  ⚪ test_soak_under[Tiago]
  ⚪ test_wipe[Tiago]
  ⚪ test_cut[Tiago]
  ✅ test_persistent_sticky_grasping[Tiago]

❌ test_systems.xml

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

Test suite Passed Failed Skipped Time
pytest 1❌ 634s

❌ pytest

tests.test_systems
  ❌ test_system_clear
	def wrapper():

✅ test_transform_utils.xml

34 tests were completed in 139s with 34 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
pytest 34✅ 139s

✅ 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
  ✅ test_dot_product
  ✅ test_l2_distance
tests.test_transform_utils.TestMatrixOperations
  ✅ test_rotation_matrix_properties
  ✅ test_rotation_matrix
  ✅ test_transformation_matrix
  ✅ test_transformation_matrix_no_point
  ✅ 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
  ✅ test_vecs2axisangle
  ✅ test_vecs2quat
tests.test_transform_utils.TestEulerAngleConversions
  ✅ test_euler2quat_and_quat2euler
  ✅ test_euler2mat_and_mat2euler
tests.test_transform_utils.TestQuaternionApplications
  ✅ test_quat_apply
  ✅ test_quat_slerp
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

❌ test_transition_rules.xml

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

Test suite Passed Failed Skipped Time
pytest 30❌ 526s

❌ pytest

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

Annotations

Check failure on line 0 in test_curobo.xml

See this annotation in the file changed.

@github-actions github-actions / Test Results

pytest ► tests.test_curobo ► test_curobo

Failed test found in:
  test_curobo.xml
Error:
  def test_curobo():
Raw output
def test_curobo():
        # Make sure object states are enabled
        assert gm.ENABLE_OBJECT_STATES
    
        # Create env
        cfg = {
            "env": {
                "action_frequency": 30,
                "physics_frequency": 300,
            },
            "scene": {
                "type": "Scene",
            },
            "objects": [
                {
                    "type": "PrimitiveObject",
                    "name": "obj0",
                    "primitive_type": "Cube",
                    "scale": [0.4, 0.4, 0.4],
                    "fixed_base": True,
                    "position": [0.5, -0.1, 0.2],
                    "orientation": [0, 0, 0, 1],
                },
                {
                    "type": "PrimitiveObject",
                    "name": "eef_marker_0",
                    "primitive_type": "Sphere",
                    "radius": 0.05,
                    "visual_only": True,
                    "position": [0, 0, 0],
                    "orientation": [0, 0, 0, 1],
                    "rgba": [1, 0, 0, 1],
                },
                {
                    "type": "PrimitiveObject",
                    "name": "eef_marker_1",
                    "primitive_type": "Sphere",
                    "radius": 0.05,
                    "visual_only": True,
                    "position": [0, 0, 0],
                    "orientation": [0, 0, 0, 1],
                    "rgba": [0, 1, 0, 1],
                },
            ],
            "robots": [],
        }
    
        robot_cfgs = [
            {
                "type": "FrankaPanda",
                "obs_modalities": "rgb",
                "position": [0.7, -0.55, 0.0],
                "orientation": [0, 0, 0.707, 0.707],
                "self_collisions": True,
                "action_normalize": False,
                "controller_config": {
                    "arm_0": {
                        "name": "JointController",
                        "motor_type": "position",
                        "command_input_limits": None,
                        "use_delta_commands": False,
                        "use_impedances": False,
                    },
                    "gripper_0": {
                        "name": "JointController",
                        "motor_type": "position",
                        "command_input_limits": None,
                        "use_delta_commands": False,
                        "use_impedances": False,
                    },
                },
            },
            {
                "type": "R1",
                "obs_modalities": "rgb",
                "position": [0.7, -0.7, 0.056],
                "orientation": [0, 0, 0.707, 0.707],
                "self_collisions": True,
                "action_normalize": False,
                "controller_config": {
                    "base": {
                        "name": "HolonomicBaseJointController",
                        "motor_type": "position",
                        "command_input_limits": None,
                        "use_impedances": False,
                    },
                    "trunk": {
                        "name": "JointController",
                        "motor_type": "position",
                        "command_input_limits": None,
                        "use_delta_commands": False,
                        "use_impedances": False,
                    },
                    "arm_left": {
                        "name": "JointController",
                        "motor_type": "position",
                        "command_input_limits": None,
                        "use_delta_commands": False,
                        "use_impedances": False,
                    },
                    "arm_right": {
                        "name": "JointController",
                        "motor_type": "position",
                        "command_input_limits": None,
                        "use_delta_commands": False,
                        "use_impedances": False,
                    },
                    "gripper_left": {
                        "name": "JointController",
                        "motor_type": "position",
                        "command_input_limits": None,
                        "use_delta_commands": False,
                        "use_impedances": False,
                    },
                    "gripper_right": {
                        "name": "JointController",
                        "motor_type": "position",
                        "command_input_limits": None,
                        "use_delta_commands": False,
                        "use_impedances": False,
                    },
                },
            },
            {
                "type": "Tiago",
                "obs_modalities": "rgb",
                "position": [0.7, -0.85, 0],
                "orientation": [0, 0, 0.707, 0.707],
                "self_collisions": True,
                "action_normalize": False,
                "controller_config": {
                    "base": {
                        "name": "HolonomicBaseJointController",
                        "motor_type": "position",
                        "command_input_limits": None,
                        "use_impedances": False,
                    },
                    "trunk": {
                        "name": "JointController",
                        "motor_type": "position",
                        "command_input_limits": None,
                        "use_delta_commands": False,
                        "use_impedances": False,
                    },
                    "camera": {
                        "name": "JointController",
                        "motor_type": "position",
                        "command_input_limits": None,
                        "use_delta_commands": False,
                        "use_impedances": False,
                    },
                    "arm_left": {
                        "name": "JointController",
                        "motor_type": "position",
                        "command_input_limits": None,
                        "use_delta_commands": False,
                        "use_impedances": False,
                    },
                    "arm_right": {
                        "name": "JointController",
                        "motor_type": "position",
                        "command_input_limits": None,
                        "use_delta_commands": False,
                        "use_impedances": False,
                    },
                    "gripper_left": {
                        "name": "JointController",
                        "motor_type": "position",
                        "command_input_limits": None,
                        "use_delta_commands": False,
                        "use_impedances": False,
                    },
                    "gripper_right": {
                        "name": "JointController",
                        "motor_type": "position",
                        "command_input_limits": None,
                        "use_delta_commands": False,
                        "use_impedances": False,
                    },
                },
            },
        ]
        for robot_cfg in robot_cfgs:
            cfg["robots"] = [robot_cfg]
    
            env = og.Environment(configs=cfg)
            robot = env.robots[0]
            obj = env.scene.object_registry("name", "obj0")
            eef_markers = [env.scene.object_registry("name", f"eef_marker_{i}") for i in range(2)]
    
            floor_touching_base_link_prim_paths = (
                [os.path.join(robot.prim_path, link_name) for link_name in robot.floor_touching_base_link_names]
                if isinstance(robot, LocomotionRobot)
                else []
            )
    
            robot.reset()
    
            # Open the gripper(s) to match cuRobo's default state
            for arm_name in robot.gripper_control_idx.keys():
                gripper_control_idx = robot.gripper_control_idx[arm_name]
                robot.set_joint_positions(th.ones_like(gripper_control_idx), indices=gripper_control_idx, normalized=True)
    
            robot.keep_still()
    
            for _ in range(5):
                og.sim.step()
    
            env.scene.update_initial_state()
            env.scene.reset()
    
            # Create CuRobo instance
            batch_size = 2
            n_samples = 20
    
>           cmg = CuRoboMotionGenerator(
                robot=robot,
                batch_size=batch_size,
                debug=False,
                use_cuda_graph=True,
                collision_activation_distance=0.03,  # Use larger activation distance for better reproducibility
                use_default_embodiment_only=True,
            )

tests/test_curobo.py:230: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
omnigibson/action_primitives/curobo.py:147: in __init__
    robot_cfg_obj = lazy.curobo.types.robot.RobotConfig.from_dict(robot_cfg_dict, self._tensor_args)
/micromamba/envs/omnigibson/lib/python3.10/site-packages/curobo/types/robot.py:50: in from_dict
    data_dict["kinematics"] = CudaRobotModelConfig.from_config(
/micromamba/envs/omnigibson/lib/python3.10/site-packages/curobo/cuda_robot_model/cuda_robot_model.py:248: in from_config
    generator = CudaRobotGenerator(config)
/micromamba/envs/omnigibson/lib/python3.10/site-packages/curobo/cuda_robot_model/cuda_robot_generator.py:260: in __init__
    self.initialize_tensors()
/micromamba/envs/omnigibson/lib/python3.10/contextlib.py:79: in inner
    return func(*args, **kwds)
/micromamba/envs/omnigibson/lib/python3.10/site-packages/curobo/cuda_robot_model/cuda_robot_generator.py:337: in initialize_tensors
    self._build_kinematics_with_lock_joints(
/micromamba/envs/omnigibson/lib/python3.10/contextlib.py:79: in inner
    return func(*args, **kwds)
/micromamba/envs/omnigibson/lib/python3.10/site-packages/curobo/cuda_robot_model/cuda_robot_generator.py:654: in _build_kinematics_with_lock_joints
    l_val = self.tensor_args.to_device([lock_joints[l] for l in lock_joints.keys()])
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = TensorDeviceType(device=device(type='cuda', index=0), dtype=torch.float32, collision_geometry_dtype=torch.float32, collision_gradient_dtype=torch.float32, collision_distance_dtype=torch.float32)
data_tensor = [None, None]

    def to_device(self, data_tensor):
        if isinstance(data_tensor, torch.Tensor):
            return data_tensor.to(device=self.device, dtype=self.dtype)
        else:
>           return torch.as_tensor(np.array(data_tensor), device=self.device, dtype=self.dtype)
E           TypeError: can't convert np.ndarray of type numpy.object_. The only supported types are: float64, float32, float16, complex64, complex128, int64, int32, int16, int8, uint64, uint32, uint16, uint8, and bool.

/micromamba/envs/omnigibson/lib/python3.10/site-packages/curobo/types/base.py:35: TypeError

Check failure on line 0 in test_dump_load_states.xml

See this annotation in the file changed.

@github-actions github-actions / Test Results

pytest ► tests.test_dump_load_states ► test_dump_load

Failed test found in:
  test_dump_load_states.xml
Error:
  def wrapper():
Raw output
def wrapper():
>       assert_test_env()

tests/utils.py:25: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/utils.py:192: in assert_test_env
    env = og.Environment(configs=cfg)
omnigibson/utils/python_utils.py:92: in wrapper
    func(*values.args, **values.kwargs)
omnigibson/envs/env_base.py:132: in __init__
    og.sim.play()
omnigibson/simulator.py:1053: in play
    self._non_physics_step()
omnigibson/simulator.py:952: in _non_physics_step
    obj.initialize()
omnigibson/prims/prim_base.py:78: in initialize
    self._initialize()
omnigibson/objects/dataset_object.py:195: in _initialize
    super()._initialize()
omnigibson/objects/stateful_object.py:154: in _initialize
    state.initialize()
omnigibson/object_states/object_state_base.py:172: in initialize
    self._initialize()
omnigibson/object_states/particle_source_or_sink.py:104: in _initialize
    super()._initialize()
omnigibson/object_states/particle_modifier.py:1031: in _initialize
    super()._initialize()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <omnigibson.object_states.particle_source_or_sink.ParticleSource object at 0x14f8089718a0>

    def _initialize(self):
        super()._initialize()
    
        # Run link initialization
        self.initialize_link_mixin()
    
        # Sanity check scale if requested
        if self.requires_overlap:
            # Run sanity check to make sure compatibility with omniverse physx
            if self.method == ParticleModifyMethod.PROJECTION and not th.isclose(
                self.obj.scale.max(), self.obj.scale.min(), atol=1e-04
            ):
                raise ValueError(
                    f"{self.__class__.__name__} for obj {self.obj.name} using PROJECTION method cannot be "
                    f"created with non-uniform scale and requires_overlap! Got scale: {self.obj.scale}"
                )
    
        # Initialize internal variables
        self._current_step = 0
    
        # Grab link prim paths and potentially update projection mesh params
        self._link_prim_paths = set(self.obj.link_prim_paths)
    
        # Define callback used during overlap method
        # We want to ignore any hits that are with this object itself
        valid_hit = False
    
        def overlap_callback(hit):
            nonlocal valid_hit
            valid_hit = hit.rigid_body not in self._link_prim_paths
            # Continue traversal only if we don't have a valid hit yet
            return not valid_hit
    
        # Possibly create a projection volume if we're using the projection method
        if self.method == ParticleModifyMethod.PROJECTION:
            # Construct naming prefix to apply to generated prims
            name_prefix = f"{self.obj.name}_{self.__class__.__name__}"
            shape_defaults = {
                "radius": 0.5,
                "height": 1.0,
                "size": 1.0,
            }
    
            # See if the mesh exists at the latest dataset's target location
            mesh_prim_path = f"{self.link.prim_path}/visuals/mesh_0"
            pre_existing_mesh = lazy.omni.isaac.core.utils.prims.get_prim_at_path(mesh_prim_path)
    
            # If not, see if it exists in the legacy format's location
            # TODO: Remove this after new dataset release
            if pre_existing_mesh is None:
                mesh_prim_path = f"{self.link.prim_path}/mesh_0"
                pre_existing_mesh = lazy.omni.isaac.core.utils.prims.get_prim_at_path(mesh_prim_path)
    
            # Create a primitive mesh neither option exists
            if not pre_existing_mesh:
                mesh_prim_path = f"{self.link.prim_path}/visuals/mesh_0"
    
                # Projection mesh params must be specified in order to determine scalings
>               assert self._projection_mesh_params is not None, (
                    f"Must specify projection_mesh_params for {self.obj.name}'s {self.__class__.__name__} "
                    f"since it has no pre-existing projection mesh!"
                )
E               AssertionError: Must specify projection_mesh_params for sink's ParticleSource since it has no pre-existing projection mesh!

omnigibson/object_states/particle_modifier.py:367: AssertionError

Check failure on line 0 in test_dump_load_states.xml

See this annotation in the file changed.

@github-actions github-actions / Test Results

pytest ► tests.test_dump_load_states ► test_dump_load_serialized

Failed test found in:
  test_dump_load_states.xml
Error:
  def wrapper():
Raw output
def wrapper():
>       assert_test_env()

tests/utils.py:25: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/utils.py:192: in assert_test_env
    env = og.Environment(configs=cfg)
omnigibson/utils/python_utils.py:92: 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_scene()
omnigibson/envs/env_base.py:257: in _load_scene
    og.sim.import_scene(self._scene)
omnigibson/simulator.py:719: in import_scene
    self._last_scene_edge = scene.load(
omnigibson/scenes/scene_base.py:450: in load
    self._pose = T.pose2mat(self._scene_prim.get_position_orientation())
omnigibson/prims/xform_prim.py:263: in get_position_orientation
    return PoseAPI.get_world_pose(self.prim_path)
omnigibson/utils/usd_utils.py:783: in get_world_pose
    position, orientation = get_world_pose(cls.PRIMS[prim_path])
omnigibson/utils/deprecated_utils.py:1029: in get_world_pose
    return result_transform[:3, 3], R.from_matrix(result_transform[:3, :3]).as_quat()
_rotation.pyx:1144: in scipy.spatial.transform._rotation.Rotation.from_matrix
    ???
/isaac-sim/kit/exts/omni.kit.pip_archive/pip_prebundle/numpy/linalg/linalg.py:1681: in svd
    u, s, vh = gufunc(a, signature=signature, extobj=extobj)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

err = 'invalid value', flag = 8

    def _raise_linalgerror_svd_nonconvergence(err, flag):
>       raise LinAlgError("SVD did not converge")
E       numpy.linalg.LinAlgError: SVD did not converge

/isaac-sim/kit/exts/omni.kit.pip_archive/pip_prebundle/numpy/linalg/linalg.py:121: LinAlgError

Check failure on line 0 in test_dump_load_states.xml

See this annotation in the file changed.

@github-actions github-actions / Test Results

pytest ► tests.test_dump_load_states ► test_save_restore_partial

Failed test found in:
  test_dump_load_states.xml
  test_dump_load_states.xml
Error:
  def wrapper():
Raw output
def wrapper():
>       assert_test_env()

tests/utils.py:25: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/utils.py:192: in assert_test_env
    env = og.Environment(configs=cfg)
omnigibson/utils/python_utils.py:92: 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_scene()
omnigibson/envs/env_base.py:257: in _load_scene
    og.sim.import_scene(self._scene)
omnigibson/simulator.py:719: in import_scene
    self._last_scene_edge = scene.load(
omnigibson/scenes/scene_base.py:445: in load
    new_scene_edge = self._load_scene_prim_with_objects(**kwargs)
omnigibson/scenes/scene_base.py:338: in _load_scene_prim_with_objects
    self._scene_prim.load(None)
omnigibson/prims/prim_base.py:115: in load
    self._post_load()
omnigibson/prims/xform_prim.py:69: in _post_load
    self._set_xform_properties()
omnigibson/prims/xform_prim.py:97: in _set_xform_properties
    current_position, current_orientation = self.get_position_orientation()
omnigibson/prims/xform_prim.py:263: in get_position_orientation
    return PoseAPI.get_world_pose(self.prim_path)
omnigibson/utils/usd_utils.py:783: in get_world_pose
    position, orientation = get_world_pose(cls.PRIMS[prim_path])
omnigibson/utils/deprecated_utils.py:1029: in get_world_pose
    return result_transform[:3, 3], R.from_matrix(result_transform[:3, :3]).as_quat()
_rotation.pyx:1144: in scipy.spatial.transform._rotation.Rotation.from_matrix
    ???
/isaac-sim/kit/exts/omni.kit.pip_archive/pip_prebundle/numpy/linalg/linalg.py:1681: in svd
    u, s, vh = gufunc(a, signature=signature, extobj=extobj)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

err = 'invalid value', flag = 8

    def _raise_linalgerror_svd_nonconvergence(err, flag):
>       raise LinAlgError("SVD did not converge")
E       numpy.linalg.LinAlgError: SVD did not converge

/isaac-sim/kit/exts/omni.kit.pip_archive/pip_prebundle/numpy/linalg/linalg.py:121: LinAlgError

Check failure on line 0 in test_envs.xml

See this annotation in the file changed.

@github-actions github-actions / Test Results

pytest ► tests.test_envs ► test_rs_int_full_load

Failed test found in:
  test_envs.xml
Error:
  def test_rs_int_full_load():
Raw output
def test_rs_int_full_load():
        cfg = {
            "scene": {
                "type": "InteractiveTraversableScene",
                "scene_model": "Rs_int",
            },
            "robots": [
                {
                    "type": "Fetch",
                    "obs_modalities": [],
                }
            ],
            # Task kwargs
            "task": {
                "type": "DummyTask",
            },
        }
    
        # Make sure sim is stopped
        if og.sim:
            og.sim.stop()
    
        # Create the environment
>       env = og.Environment(configs=cfg)

tests/test_envs.py:86: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
omnigibson/utils/python_utils.py:92: 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_scene()
omnigibson/envs/env_base.py:257: in _load_scene
    og.sim.import_scene(self._scene)
omnigibson/simulator.py:731: in import_scene
    self.play()
omnigibson/simulator.py:1053: in play
    self._non_physics_step()
omnigibson/simulator.py:952: in _non_physics_step
    obj.initialize()
omnigibson/prims/prim_base.py:78: in initialize
    self._initialize()
omnigibson/objects/dataset_object.py:195: in _initialize
    super()._initialize()
omnigibson/objects/stateful_object.py:154: in _initialize
    state.initialize()
omnigibson/object_states/object_state_base.py:172: in initialize
    self._initialize()
omnigibson/object_states/particle_source_or_sink.py:104: in _initialize
    super()._initialize()
omnigibson/object_states/particle_modifier.py:1031: in _initialize
    super()._initialize()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <omnigibson.object_states.particle_source_or_sink.ParticleSource object at 0x1548ce791840>

    def _initialize(self):
        super()._initialize()
    
        # Run link initialization
        self.initialize_link_mixin()
    
        # Sanity check scale if requested
        if self.requires_overlap:
            # Run sanity check to make sure compatibility with omniverse physx
            if self.method == ParticleModifyMethod.PROJECTION and not th.isclose(
                self.obj.scale.max(), self.obj.scale.min(), atol=1e-04
            ):
                raise ValueError(
                    f"{self.__class__.__name__} for obj {self.obj.name} using PROJECTION method cannot be "
                    f"created with non-uniform scale and requires_overlap! Got scale: {self.obj.scale}"
                )
    
        # Initialize internal variables
        self._current_step = 0
    
        # Grab link prim paths and potentially update projection mesh params
        self._link_prim_paths = set(self.obj.link_prim_paths)
    
        # Define callback used during overlap method
        # We want to ignore any hits that are with this object itself
        valid_hit = False
    
        def overlap_callback(hit):
            nonlocal valid_hit
            valid_hit = hit.rigid_body not in self._link_prim_paths
            # Continue traversal only if we don't have a valid hit yet
            return not valid_hit
    
        # Possibly create a projection volume if we're using the projection method
        if self.method == ParticleModifyMethod.PROJECTION:
            # Construct naming prefix to apply to generated prims
            name_prefix = f"{self.obj.name}_{self.__class__.__name__}"
            shape_defaults = {
                "radius": 0.5,
                "height": 1.0,
                "size": 1.0,
            }
    
            # See if the mesh exists at the latest dataset's target location
            mesh_prim_path = f"{self.link.prim_path}/visuals/mesh_0"
            pre_existing_mesh = lazy.omni.isaac.core.utils.prims.get_prim_at_path(mesh_prim_path)
    
            # If not, see if it exists in the legacy format's location
            # TODO: Remove this after new dataset release
            if pre_existing_mesh is None:
                mesh_prim_path = f"{self.link.prim_path}/mesh_0"
                pre_existing_mesh = lazy.omni.isaac.core.utils.prims.get_prim_at_path(mesh_prim_path)
    
            # Create a primitive mesh neither option exists
            if not pre_existing_mesh:
                mesh_prim_path = f"{self.link.prim_path}/visuals/mesh_0"
    
                # Projection mesh params must be specified in order to determine scalings
>               assert self._projection_mesh_params is not None, (
                    f"Must specify projection_mesh_params for {self.obj.name}'s {self.__class__.__name__} "
                    f"since it has no pre-existing projection mesh!"
                )
E               AssertionError: Must specify projection_mesh_params for sink_ksecxq_0's ParticleSource since it has no pre-existing projection mesh!

omnigibson/object_states/particle_modifier.py:367: AssertionError

Check failure on line 0 in test_multiple_envs.xml

See this annotation in the file changed.

@github-actions github-actions / Test Results

pytest ► tests.test_multiple_envs ► test_multi_scene_particle_source

Failed test found in:
  test_multiple_envs.xml
Error:
  def test_multi_scene_particle_source():
Raw output
def test_multi_scene_particle_source():
        sink_cfg = dict(
            type="DatasetObject",
            name="sink",
            category="sink",
            model="egwapq",
            bounding_box=[2.427, 0.625, 1.2],
            abilities={
                "toggleable": {},
                "particleSource": {
                    "conditions": {
                        "water": [
                            (ParticleModifyCondition.TOGGLEDON, True)
                        ],  # Must be toggled on for water source to be active
                    },
                    "initial_speed": 0.0,  # Water merely falls out of the spout
                },
                "particleSink": {
                    "conditions": {
                        "water": [],  # No conditions, always sinking nearby particles
                    },
                },
            },
            position=[0.0, -1.5, 0.42],
        )
    
>       vec_env = setup_multi_environment(3, additional_objects_cfg=[sink_cfg])

tests/test_multiple_envs.py:206: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_multiple_envs.py:40: in setup_multi_environment
    vec_env = og.VectorEnvironment(num_of_envs, cfg)
omnigibson/envs/vec_env_base.py:16: in __init__
    self.envs = [
omnigibson/envs/vec_env_base.py:17: in <listcomp>
    og.Environment(configs=copy.deepcopy(config), in_vec_env=True)
omnigibson/utils/python_utils.py:92: 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_scene()
omnigibson/envs/env_base.py:257: in _load_scene
    og.sim.import_scene(self._scene)
omnigibson/simulator.py:731: in import_scene
    self.play()
omnigibson/simulator.py:1053: in play
    self._non_physics_step()
omnigibson/simulator.py:952: in _non_physics_step
    obj.initialize()
omnigibson/prims/prim_base.py:78: in initialize
    self._initialize()
omnigibson/objects/dataset_object.py:195: in _initialize
    super()._initialize()
omnigibson/objects/stateful_object.py:154: in _initialize
    state.initialize()
omnigibson/object_states/object_state_base.py:172: in initialize
    self._initialize()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <omnigibson.object_states.particle_source_or_sink.ParticleSink object at 0x14e612b4d270>

    def _initialize(self):
        super()._initialize()
    
        # Run link initialization
        self.initialize_link_mixin()
    
        # Sanity check scale if requested
        if self.requires_overlap:
            # Run sanity check to make sure compatibility with omniverse physx
            if self.method == ParticleModifyMethod.PROJECTION and not th.isclose(
                self.obj.scale.max(), self.obj.scale.min(), atol=1e-04
            ):
                raise ValueError(
                    f"{self.__class__.__name__} for obj {self.obj.name} using PROJECTION method cannot be "
                    f"created with non-uniform scale and requires_overlap! Got scale: {self.obj.scale}"
                )
    
        # Initialize internal variables
        self._current_step = 0
    
        # Grab link prim paths and potentially update projection mesh params
        self._link_prim_paths = set(self.obj.link_prim_paths)
    
        # Define callback used during overlap method
        # We want to ignore any hits that are with this object itself
        valid_hit = False
    
        def overlap_callback(hit):
            nonlocal valid_hit
            valid_hit = hit.rigid_body not in self._link_prim_paths
            # Continue traversal only if we don't have a valid hit yet
            return not valid_hit
    
        # Possibly create a projection volume if we're using the projection method
        if self.method == ParticleModifyMethod.PROJECTION:
            # Construct naming prefix to apply to generated prims
            name_prefix = f"{self.obj.name}_{self.__class__.__name__}"
            shape_defaults = {
                "radius": 0.5,
                "height": 1.0,
                "size": 1.0,
            }
    
            # See if the mesh exists at the latest dataset's target location
            mesh_prim_path = f"{self.link.prim_path}/visuals/mesh_0"
            pre_existing_mesh = lazy.omni.isaac.core.utils.prims.get_prim_at_path(mesh_prim_path)
    
            # If not, see if it exists in the legacy format's location
            # TODO: Remove this after new dataset release
            if pre_existing_mesh is None:
                mesh_prim_path = f"{self.link.prim_path}/mesh_0"
                pre_existing_mesh = lazy.omni.isaac.core.utils.prims.get_prim_at_path(mesh_prim_path)
    
            # Create a primitive mesh neither option exists
            if not pre_existing_mesh:
                mesh_prim_path = f"{self.link.prim_path}/visuals/mesh_0"
    
                # Projection mesh params must be specified in order to determine scalings
>               assert self._projection_mesh_params is not None, (
                    f"Must specify projection_mesh_params for {self.obj.name}'s {self.__class__.__name__} "
                    f"since it has no pre-existing projection mesh!"
                )
E               AssertionError: Must specify projection_mesh_params for sink's ParticleSink since it has no pre-existing projection mesh!

omnigibson/object_states/particle_modifier.py:367: AssertionError

Check failure on line 0 in test_multiple_envs.xml

See this annotation in the file changed.

@github-actions github-actions / Test Results

pytest ► tests.test_multiple_envs ► test_multi_scene_position_orientation_relative_to_scene

Failed test found in:
  test_multiple_envs.xml
Error:
  def test_multi_scene_position_orientation_relative_to_scene():
Raw output
def test_multi_scene_position_orientation_relative_to_scene():
>       vec_env = setup_multi_environment(3)

tests/test_multiple_envs.py:219: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_multiple_envs.py:40: in setup_multi_environment
    vec_env = og.VectorEnvironment(num_of_envs, cfg)
omnigibson/envs/vec_env_base.py:16: in __init__
    self.envs = [
omnigibson/envs/vec_env_base.py:17: in <listcomp>
    og.Environment(configs=copy.deepcopy(config), in_vec_env=True)
omnigibson/utils/python_utils.py:92: 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_scene()
omnigibson/envs/env_base.py:257: in _load_scene
    og.sim.import_scene(self._scene)
omnigibson/simulator.py:731: in import_scene
    self.play()
omnigibson/simulator.py:1053: in play
    self._non_physics_step()
omnigibson/simulator.py:952: in _non_physics_step
    obj.initialize()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <omnigibson.robots.fetch.Fetch object at 0x14e612b713f0>

    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_rnwwsx at prim_path /World/scene_0/controllable__fetch__robot_rnwwsx can only be initialized once! (It is already initialized)

omnigibson/prims/prim_base.py:75: AssertionError

Check failure on line 0 in test_multiple_envs.xml

See this annotation in the file changed.

@github-actions github-actions / Test Results

pytest ► tests.test_multiple_envs ► test_tiago_getter

Failed test found in:
  test_multiple_envs.xml
Error:
  def test_tiago_getter():
Raw output
def test_tiago_getter():
>       vec_env = setup_multi_environment(2, robot="Tiago")

tests/test_multiple_envs.py:270: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_multiple_envs.py:40: in setup_multi_environment
    vec_env = og.VectorEnvironment(num_of_envs, cfg)
omnigibson/envs/vec_env_base.py:16: in __init__
    self.envs = [
omnigibson/envs/vec_env_base.py:17: in <listcomp>
    og.Environment(configs=copy.deepcopy(config), in_vec_env=True)
omnigibson/utils/python_utils.py:92: 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_scene()
omnigibson/envs/env_base.py:257: in _load_scene
    og.sim.import_scene(self._scene)
omnigibson/simulator.py:731: in import_scene
    self.play()
omnigibson/simulator.py:1053: in play
    self._non_physics_step()
omnigibson/simulator.py:952: in _non_physics_step
    obj.initialize()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <omnigibson.robots.fetch.Fetch object at 0x14e612b713f0>

    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_rnwwsx at prim_path /World/scene_0/controllable__fetch__robot_rnwwsx can only be initialized once! (It is already initialized)

omnigibson/prims/prim_base.py:75: AssertionError

Check failure on line 0 in test_multiple_envs.xml

See this annotation in the file changed.

@github-actions github-actions / Test Results

pytest ► tests.test_multiple_envs ► test_tiago_setter

Failed test found in:
  test_multiple_envs.xml
Error:
  def test_tiago_setter():
Raw output
def test_tiago_setter():
>       vec_env = setup_multi_environment(2, robot="Tiago")

tests/test_multiple_envs.py:299: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_multiple_envs.py:40: in setup_multi_environment
    vec_env = og.VectorEnvironment(num_of_envs, cfg)
omnigibson/envs/vec_env_base.py:16: in __init__
    self.envs = [
omnigibson/envs/vec_env_base.py:17: in <listcomp>
    og.Environment(configs=copy.deepcopy(config), in_vec_env=True)
omnigibson/utils/python_utils.py:92: 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_scene()
omnigibson/envs/env_base.py:257: in _load_scene
    og.sim.import_scene(self._scene)
omnigibson/simulator.py:731: in import_scene
    self.play()
omnigibson/simulator.py:1053: in play
    self._non_physics_step()
omnigibson/simulator.py:952: in _non_physics_step
    obj.initialize()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <omnigibson.robots.fetch.Fetch object at 0x14e612b713f0>

    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_rnwwsx at prim_path /World/scene_0/controllable__fetch__robot_rnwwsx can only be initialized once! (It is already initialized)

omnigibson/prims/prim_base.py:75: AssertionError

Check failure on line 0 in test_object_removal.xml

See this annotation in the file changed.

@github-actions github-actions / Test Results

pytest ► tests.test_object_removal ► test_removal_and_readdition

Failed test found in:
  test_object_removal.xml
Error:
  def wrapper():
Raw output
def wrapper():
>       assert_test_env()

tests/utils.py:25: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/utils.py:192: in assert_test_env
    env = og.Environment(configs=cfg)
omnigibson/utils/python_utils.py:92: in wrapper
    func(*values.args, **values.kwargs)
omnigibson/envs/env_base.py:132: in __init__
    og.sim.play()
omnigibson/simulator.py:1053: in play
    self._non_physics_step()
omnigibson/simulator.py:952: in _non_physics_step
    obj.initialize()
omnigibson/prims/prim_base.py:78: in initialize
    self._initialize()
omnigibson/objects/dataset_object.py:195: in _initialize
    super()._initialize()
omnigibson/objects/stateful_object.py:154: in _initialize
    state.initialize()
omnigibson/object_states/object_state_base.py:172: in initialize
    self._initialize()
omnigibson/object_states/particle_source_or_sink.py:104: in _initialize
    super()._initialize()
omnigibson/object_states/particle_modifier.py:1031: in _initialize
    super()._initialize()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <omnigibson.object_states.particle_source_or_sink.ParticleSource object at 0x1511c27490c0>

    def _initialize(self):
        super()._initialize()
    
        # Run link initialization
        self.initialize_link_mixin()
    
        # Sanity check scale if requested
        if self.requires_overlap:
            # Run sanity check to make sure compatibility with omniverse physx
            if self.method == ParticleModifyMethod.PROJECTION and not th.isclose(
                self.obj.scale.max(), self.obj.scale.min(), atol=1e-04
            ):
                raise ValueError(
                    f"{self.__class__.__name__} for obj {self.obj.name} using PROJECTION method cannot be "
                    f"created with non-uniform scale and requires_overlap! Got scale: {self.obj.scale}"
                )
    
        # Initialize internal variables
        self._current_step = 0
    
        # Grab link prim paths and potentially update projection mesh params
        self._link_prim_paths = set(self.obj.link_prim_paths)
    
        # Define callback used during overlap method
        # We want to ignore any hits that are with this object itself
        valid_hit = False
    
        def overlap_callback(hit):
            nonlocal valid_hit
            valid_hit = hit.rigid_body not in self._link_prim_paths
            # Continue traversal only if we don't have a valid hit yet
            return not valid_hit
    
        # Possibly create a projection volume if we're using the projection method
        if self.method == ParticleModifyMethod.PROJECTION:
            # Construct naming prefix to apply to generated prims
            name_prefix = f"{self.obj.name}_{self.__class__.__name__}"
            shape_defaults = {
                "radius": 0.5,
                "height": 1.0,
                "size": 1.0,
            }
    
            # See if the mesh exists at the latest dataset's target location
            mesh_prim_path = f"{self.link.prim_path}/visuals/mesh_0"
            pre_existing_mesh = lazy.omni.isaac.core.utils.prims.get_prim_at_path(mesh_prim_path)
    
            # If not, see if it exists in the legacy format's location
            # TODO: Remove this after new dataset release
            if pre_existing_mesh is None:
                mesh_prim_path = f"{self.link.prim_path}/mesh_0"
                pre_existing_mesh = lazy.omni.isaac.core.utils.prims.get_prim_at_path(mesh_prim_path)
    
            # Create a primitive mesh neither option exists
            if not pre_existing_mesh:
                mesh_prim_path = f"{self.link.prim_path}/visuals/mesh_0"
    
                # Projection mesh params must be specified in order to determine scalings
>               assert self._projection_mesh_params is not None, (
                    f"Must specify projection_mesh_params for {self.obj.name}'s {self.__class__.__name__} "
                    f"since it has no pre-existing projection mesh!"
                )
E               AssertionError: Must specify projection_mesh_params for sink's ParticleSource since it has no pre-existing projection mesh!

omnigibson/object_states/particle_modifier.py:367: AssertionError

Check failure on line 0 in test_object_removal.xml

See this annotation in the file changed.

@github-actions github-actions / Test Results

pytest ► tests.test_object_removal ► test_readdition

Failed test found in:
  test_object_removal.xml
Error:
  def wrapper():
Raw output
def wrapper():
>       assert_test_env()

tests/utils.py:25: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/utils.py:192: in assert_test_env
    env = og.Environment(configs=cfg)
omnigibson/utils/python_utils.py:92: 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_scene()
omnigibson/envs/env_base.py:257: in _load_scene
    og.sim.import_scene(self._scene)
omnigibson/simulator.py:719: in import_scene
    self._last_scene_edge = scene.load(
omnigibson/scenes/scene_base.py:450: in load
    self._pose = T.pose2mat(self._scene_prim.get_position_orientation())
omnigibson/prims/xform_prim.py:263: in get_position_orientation
    return PoseAPI.get_world_pose(self.prim_path)
omnigibson/utils/usd_utils.py:783: in get_world_pose
    position, orientation = get_world_pose(cls.PRIMS[prim_path])
omnigibson/utils/deprecated_utils.py:1029: in get_world_pose
    return result_transform[:3, 3], R.from_matrix(result_transform[:3, :3]).as_quat()
_rotation.pyx:1144: in scipy.spatial.transform._rotation.Rotation.from_matrix
    ???
/isaac-sim/kit/exts/omni.kit.pip_archive/pip_prebundle/numpy/linalg/linalg.py:1681: in svd
    u, s, vh = gufunc(a, signature=signature, extobj=extobj)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

err = 'invalid value', flag = 8

    def _raise_linalgerror_svd_nonconvergence(err, flag):
>       raise LinAlgError("SVD did not converge")
E       numpy.linalg.LinAlgError: SVD did not converge

/isaac-sim/kit/exts/omni.kit.pip_archive/pip_prebundle/numpy/linalg/linalg.py:121: LinAlgError