diff --git a/eval/cup_stacking_eval.py b/eval/cup_stacking_eval.py index 0eb1bfc..1ff7cc6 100644 --- a/eval/cup_stacking_eval.py +++ b/eval/cup_stacking_eval.py @@ -28,7 +28,7 @@ TAG_TO_OBJECT: dict[int, str] = {1: "blue_cup", 2: "pink_cup"} ANCHOR_TAG_ID: int = 0 ANCHOR_WORLD_POSE: tuple[float, float, float] = (0.0, 0.0, 0.0) -OBJECT_Z: float = 0.12 +OBJECT_Z: float = 1.0 OBJECT_ROLL: float = 0.0 OBJECT_PITCH: float = 0.0 @@ -44,7 +44,7 @@ class CupStackingEvalSceneCfg(SingleArmFrankaTaskSceneCfg): usd_path=str(KITCHEN_OBJECTS_ROOT / "BlueCup" / "BlueCup.usd"), mass_props=MassPropertiesCfg(mass=0.1), ), - init_state=RigidObjectCfg.InitialStateCfg(pos=(0.36, -0.4, 0.12), rot=(1.0, 0.0, 0.0, 0.0)), + init_state=RigidObjectCfg.InitialStateCfg(pos=(9.0, 6.45, 1.0), rot=(1.0, 0.0, 0.0, 0.0)), ) pink_cup: RigidObjectCfg = RigidObjectCfg( prim_path="{ENV_REGEX_NS}/Scene/pink_cup", @@ -52,7 +52,7 @@ class CupStackingEvalSceneCfg(SingleArmFrankaTaskSceneCfg): usd_path=str(KITCHEN_OBJECTS_ROOT / "PinkCup" / "PinkCup.usd"), mass_props=MassPropertiesCfg(mass=0.1), ), - init_state=RigidObjectCfg.InitialStateCfg(pos=(0.46, -0.4, 0.12), rot=(1.0, 0.0, 0.0, 0.0)), + init_state=RigidObjectCfg.InitialStateCfg(pos=(9.2, 6.5, 1.0), rot=(1.0, 0.0, 0.0, 0.0)), ) @@ -105,7 +105,7 @@ def __post_init__(self) -> None: self.viewer.lookat = (0.4, -1.3, -0.2) self.dynamic_reset_gripper_effort_limit = False - self.scene.robot.init_state.pos = (0.35, -0.74, 0.01) + self.scene.robot.init_state.pos = (9.0, 6.0, 0.9) self.scene.robot.init_state.rot = (0.707, 0.0, 0.0, 0.707) self.scene.robot.init_state.joint_pos = { "panda_joint1": 0.0, diff --git a/packages/simulator/assets/scenes/dining_room/nycu_light_collider_wooden.usd b/packages/simulator/assets/scenes/dining_room/nycu_light_collider_wooden.usd new file mode 100644 index 0000000..248bf78 Binary files /dev/null and b/packages/simulator/assets/scenes/dining_room/nycu_light_collider_wooden.usd differ diff --git a/packages/simulator/assets/scenes/dining_table_0000/Materials/M_BaseMaterial.mdl b/packages/simulator/assets/scenes/dining_table_0000/Materials/M_BaseMaterial.mdl new file mode 100644 index 0000000..ed00d16 --- /dev/null +++ b/packages/simulator/assets/scenes/dining_table_0000/Materials/M_BaseMaterial.mdl @@ -0,0 +1,290 @@ +mdl 1.6; + +import ::math::*; +import ::state::*; +import ::tex::*; +import ::anno::*; +import ::scene::*; +using .::OmniUe4Function import *; +using .::OmniUe4Base import *; + +export annotation sampler_color(); +export annotation sampler_normal(); +export annotation sampler_grayscale(); +export annotation sampler_alpha(); +export annotation sampler_masks(); +export annotation sampler_distancefield(); +export annotation dither_masked_off(); +export annotation world_space_normal(); + +export material M_BaseMaterial( + float IsNormalTex = 0.0 + [[ + anno::display_name("IsNormalTex"), + anno::ui_order(32), + anno::in_group("Normal") + ]], + uniform texture_2d Normal_Tex = texture_2d("./Textures/T_Normal.png",::tex::gamma_linear) + [[ + anno::display_name("Normal_Tex"), + anno::ui_order(32), + anno::in_group("Normal"), + sampler_normal() + ]], + float4 Normal_UVA = float4(1.0,1.0,0.0,0.0) + [[ + anno::display_name("Normal_UVA"), + anno::ui_order(32), + anno::in_group("Normal") + ]], + float EmissiveIntensity = 0.0 + [[ + anno::display_name("EmissiveIntensity"), + anno::ui_order(32), + anno::in_group("EmissiveColor") + ]], + float IsEmissiveTex = 0.0 + [[ + anno::display_name("IsEmissiveTex"), + anno::in_group("EmissiveColor") + ]], + float4 Emissive_Color = float4(1.0,1.0,1.0,1.0) + [[ + anno::display_name("Emissive_Color"), + anno::ui_order(32), + anno::in_group("EmissiveColor") + ]], + uniform texture_2d Emissive_Tex = texture_2d("./Textures/DefaultTexture.png",::tex::gamma_srgb) + [[ + anno::display_name("Emissive_Tex"), + anno::ui_order(32), + anno::in_group("EmissiveColor"), + sampler_color() + ]], + float4 Emissive_UVA = float4(1.0,1.0,0.0,0.0) + [[ + anno::display_name("Emissive_UVA"), + anno::ui_order(32), + anno::in_group("EmissiveColor") + ]], + float IsBaseColorTex = 0.0 + [[ + anno::display_name("IsBaseColorTex"), + anno::in_group("BaseColor") + ]], + float4 BaseColor_Color = float4(1.0,1.0,1.0,1.0) + [[ + anno::display_name("BaseColor_Color"), + anno::ui_order(32), + anno::in_group("BaseColor") + ]], + uniform texture_2d BaseColor_Tex = texture_2d("./Textures/DefaultTexture.png",::tex::gamma_srgb) + [[ + anno::display_name("BaseColor_Tex"), + anno::ui_order(32), + anno::in_group("BaseColor"), + sampler_color() + ]], + float4 BaseColor_UVA = float4(1.0,1.0,0.0,0.0) + [[ + anno::display_name("BaseColor_UVA"), + anno::ui_order(32), + anno::in_group("BaseColor") + ]], + float IsMetallicTex = 0.0 + [[ + anno::display_name("IsMetallicTex"), + anno::in_group("Metallic") + ]], + float4 Metallic_Color = float4(0.0,0.0,0.0,1.0) + [[ + anno::display_name("Metallic_Color"), + anno::ui_order(32), + anno::in_group("Metallic") + ]], + uniform texture_2d Metallic_Tex = texture_2d("./Textures/DefaultTexture.png",::tex::gamma_srgb) + [[ + anno::display_name("Metallic_Tex"), + anno::ui_order(32), + anno::in_group("Metallic"), + sampler_color() + ]], + float4 Metallic_UVA = float4(1.0,1.0,0.0,0.0) + [[ + anno::display_name("Metallic_UVA"), + anno::ui_order(32), + anno::in_group("Metallic") + ]], + float IsSpecularTex = 0.0 + [[ + anno::display_name("IsSpecularTex"), + anno::in_group("Specular") + ]], + float4 Specular_Color = float4(1.0,1.0,1.0,1.0) + [[ + anno::display_name("Specular_Color"), + anno::ui_order(32), + anno::in_group("Specular") + ]], + uniform texture_2d Specular_Tex = texture_2d("./Textures/DefaultTexture.png",::tex::gamma_srgb) + [[ + anno::display_name("Specular_Tex"), + anno::ui_order(32), + anno::in_group("Specular"), + sampler_color() + ]], + float4 Specular_UVA = float4(1.0,1.0,0.0,0.0) + [[ + anno::display_name("Specular_UVA"), + anno::ui_order(32), + anno::in_group("Specular") + ]], + float IsGlossTex = 0.0 + [[ + anno::display_name("IsGlossTex"), + anno::in_group("Roughness") + ]], + float4 Gloss_Color = float4(0.1,0.1,0.1,1.0) + [[ + anno::display_name("Gloss_Color"), + anno::ui_order(32), + anno::in_group("Roughness") + ]], + uniform texture_2d Gloss_Tex = texture_2d("./Textures/DefaultTexture.png",::tex::gamma_srgb) + [[ + anno::display_name("Gloss_Tex"), + anno::ui_order(32), + anno::in_group("Roughness"), + sampler_color() + ]], + float4 Gloss_UVA = float4(1.0,1.0,0.0,0.0) + [[ + anno::display_name("Gloss_UVA"), + anno::ui_order(32), + anno::in_group("Roughness") + ]], + float PolygonOffset = 0.0 + [[ + anno::display_name("PolygonOffset"), + anno::ui_order(32), + anno::in_group("WorldPosition") + ]], + int MaxTexCoordIndex = 3 + [[ + anno::hidden() + ]]) + = + let { + float3 Local82 = ::camera_position(); + float3 Local83 = (Local82 - (::convert_to_left_hand(state::transform_point(state::coordinate_internal,state::coordinate_world,state::position()), true)*state::meters_per_scene_unit()*100.0)); + float3 Local84 = math::normalize(Local83); + float3 Local85 = (Local84 * PolygonOffset); + + float3 WorldPositionOffset_mdl = Local85; + float2 CustomizedUV0_mdl = float2(state::texture_coordinate(math::min(0,MaxTexCoordIndex)).x,1.0-state::texture_coordinate(math::min(0,MaxTexCoordIndex)).y); + + float2 Local0 = (float2(0.5,0.5) * -1.0); + float Local1 = (CustomizedUV0_mdl.x * float3(Normal_UVA.x,Normal_UVA.y,Normal_UVA.z).x); + float Local2 = (CustomizedUV0_mdl.y * float3(Normal_UVA.x,Normal_UVA.y,Normal_UVA.z).y); + float2 Local3 = (Local0 + float2(Local1,Local2)); + float Local4 = (3.141592 * -2.0); + float Local5 = (float3(Normal_UVA.x,Normal_UVA.y,Normal_UVA.z).z / Local4); + float Local6 = (Local5 * 6.283185); + float Local7 = math::cos(Local6); + float Local8 = math::sin(Local6); + float Local9 = (Local8 * -1.0); + float Local10 = math::dot(Local3, float2(Local7,Local9)); + float Local11 = math::dot(Local3, float2(Local8,Local7)); + float2 Local12 = (float2(0.5,0.5) + float2(Local10,Local11)); + float4 Local13 = ::unpack_normal_map(tex::lookup_float4(Normal_Tex,float2(Local12.x,1.0-Local12.y),tex::wrap_repeat,tex::wrap_repeat)); + float3 Local14 = ((math::abs(IsNormalTex - 1.0) > 0.00001) ? (float3(0.0,0.0,1.0)) : float3(Local13.x,Local13.y,Local13.z)); + + float3 Normal_mdl = Local14; + + float Local15 = (CustomizedUV0_mdl.x * float3(Emissive_UVA.x,Emissive_UVA.y,Emissive_UVA.z).x); + float Local16 = (CustomizedUV0_mdl.y * float3(Emissive_UVA.x,Emissive_UVA.y,Emissive_UVA.z).y); + float2 Local17 = (Local0 + float2(Local15,Local16)); + float Local18 = (float3(Emissive_UVA.x,Emissive_UVA.y,Emissive_UVA.z).z / Local4); + float Local19 = (Local18 * 6.283185); + float Local20 = math::cos(Local19); + float Local21 = math::sin(Local19); + float Local22 = (Local21 * -1.0); + float Local23 = math::dot(Local17, float2(Local20,Local22)); + float Local24 = math::dot(Local17, float2(Local21,Local20)); + float2 Local25 = (float2(0.5,0.5) + float2(Local23,Local24)); + float4 Local26 = tex::lookup_float4(Emissive_Tex,float2(Local25.x,1.0-Local25.y),tex::wrap_repeat,tex::wrap_repeat); + float3 Local27 = ((math::abs(IsEmissiveTex - 1.0) > 0.00001) ? (float3(Emissive_Color.x,Emissive_Color.y,Emissive_Color.z)) : float3(Local26.x,Local26.y,Local26.z)); + float3 Local28 = (EmissiveIntensity * Local27); + float Local29 = (CustomizedUV0_mdl.x * float3(BaseColor_UVA.x,BaseColor_UVA.y,BaseColor_UVA.z).x); + float Local30 = (CustomizedUV0_mdl.y * float3(BaseColor_UVA.x,BaseColor_UVA.y,BaseColor_UVA.z).y); + float2 Local31 = (Local0 + float2(Local29,Local30)); + float Local32 = (float3(BaseColor_UVA.x,BaseColor_UVA.y,BaseColor_UVA.z).z / Local4); + float Local33 = (Local32 * 6.283185); + float Local34 = math::cos(Local33); + float Local35 = math::sin(Local33); + float Local36 = (Local35 * -1.0); + float Local37 = math::dot(Local31, float2(Local34,Local36)); + float Local38 = math::dot(Local31, float2(Local35,Local34)); + float2 Local39 = (float2(0.5,0.5) + float2(Local37,Local38)); + float4 Local40 = tex::lookup_float4(BaseColor_Tex,float2(Local39.x,1.0-Local39.y),tex::wrap_repeat,tex::wrap_repeat); + float3 Local41 = ((math::abs(IsBaseColorTex - 1.0) > 0.00001) ? (float3(BaseColor_Color.x,BaseColor_Color.y,BaseColor_Color.z)) : float3(Local40.x,Local40.y,Local40.z)); + float Local42 = (CustomizedUV0_mdl.x * float3(Metallic_UVA.x,Metallic_UVA.y,Metallic_UVA.z).x); + float Local43 = (CustomizedUV0_mdl.y * float3(Metallic_UVA.x,Metallic_UVA.y,Metallic_UVA.z).y); + float2 Local44 = (Local0 + float2(Local42,Local43)); + float Local45 = (float3(Metallic_UVA.x,Metallic_UVA.y,Metallic_UVA.z).z / Local4); + float Local46 = (Local45 * 6.283185); + float Local47 = math::cos(Local46); + float Local48 = math::sin(Local46); + float Local49 = (Local48 * -1.0); + float Local50 = math::dot(Local44, float2(Local47,Local49)); + float Local51 = math::dot(Local44, float2(Local48,Local47)); + float2 Local52 = (float2(0.5,0.5) + float2(Local50,Local51)); + float4 Local53 = tex::lookup_float4(Metallic_Tex,float2(Local52.x,1.0-Local52.y),tex::wrap_repeat,tex::wrap_repeat); + float3 Local54 = ((math::abs(IsMetallicTex - 1.0) > 0.00001) ? (float3(Metallic_Color.x,Metallic_Color.y,Metallic_Color.z)) : float3(Local53.x,Local53.y,Local53.z)); + float Local55 = (CustomizedUV0_mdl.x * float3(Specular_UVA.x,Specular_UVA.y,Specular_UVA.z).x); + float Local56 = (CustomizedUV0_mdl.y * float3(Specular_UVA.x,Specular_UVA.y,Specular_UVA.z).y); + float2 Local57 = (Local0 + float2(Local55,Local56)); + float Local58 = (float3(Specular_UVA.x,Specular_UVA.y,Specular_UVA.z).z / Local4); + float Local59 = (Local58 * 6.283185); + float Local60 = math::cos(Local59); + float Local61 = math::sin(Local59); + float Local62 = (Local61 * -1.0); + float Local63 = math::dot(Local57, float2(Local60,Local62)); + float Local64 = math::dot(Local57, float2(Local61,Local60)); + float2 Local65 = (float2(0.5,0.5) + float2(Local63,Local64)); + float4 Local66 = tex::lookup_float4(Specular_Tex,float2(Local65.x,1.0-Local65.y),tex::wrap_repeat,tex::wrap_repeat); + float3 Local67 = ((math::abs(IsSpecularTex - 1.0) > 0.00001) ? (float3(Specular_Color.x,Specular_Color.y,Specular_Color.z)) : float3(Local66.x,Local66.y,Local66.z)); + float Local68 = (CustomizedUV0_mdl.x * float3(Gloss_UVA.x,Gloss_UVA.y,Gloss_UVA.z).x); + float Local69 = (CustomizedUV0_mdl.y * float3(Gloss_UVA.x,Gloss_UVA.y,Gloss_UVA.z).y); + float2 Local70 = (Local0 + float2(Local68,Local69)); + float Local71 = (float3(Gloss_UVA.x,Gloss_UVA.y,Gloss_UVA.z).z / Local4); + float Local72 = (Local71 * 6.283185); + float Local73 = math::cos(Local72); + float Local74 = math::sin(Local72); + float Local75 = (Local74 * -1.0); + float Local76 = math::dot(Local70, float2(Local73,Local75)); + float Local77 = math::dot(Local70, float2(Local74,Local73)); + float2 Local78 = (float2(0.5,0.5) + float2(Local76,Local77)); + float4 Local79 = tex::lookup_float4(Gloss_Tex,float2(Local78.x,1.0-Local78.y),tex::wrap_repeat,tex::wrap_repeat); + float3 Local80 = ((math::abs(IsGlossTex - 1.0) > 0.00001) ? (float3(Gloss_Color.x,Gloss_Color.y,Gloss_Color.z)) : float3(Local79.x,Local79.y,Local79.z)); + float3 Local81 = (1.0 - Local80); + + float3 EmissiveColor_mdl = Local28; + float OpacityMask_mdl = 1.0; + float3 BaseColor_mdl = Local41; + float Metallic_mdl = Local54.x; + float Specular_mdl = Local67.x; + float Roughness_mdl = Local81.x; + float SurfaceThickness_mdl = 0.01; + + } in + ::OmniUe4Base( + base_color: BaseColor_mdl, + metallic: Metallic_mdl, + roughness: Roughness_mdl, + specular: Specular_mdl, + normal: Normal_mdl, + opacity: OpacityMask_mdl, + emissive_color: EmissiveColor_mdl, + displacement: WorldPositionOffset_mdl, + two_sided: false); diff --git a/packages/simulator/assets/scenes/dining_table_0000/Materials/Textures/DefaultTexture.png b/packages/simulator/assets/scenes/dining_table_0000/Materials/Textures/DefaultTexture.png new file mode 100644 index 0000000..93665d6 Binary files /dev/null and b/packages/simulator/assets/scenes/dining_table_0000/Materials/Textures/DefaultTexture.png differ diff --git a/packages/simulator/assets/scenes/dining_table_0000/Materials/Textures/T_5b5eb828b532761d1bcdb4e5_color.png b/packages/simulator/assets/scenes/dining_table_0000/Materials/Textures/T_5b5eb828b532761d1bcdb4e5_color.png new file mode 100644 index 0000000..db22f23 Binary files /dev/null and b/packages/simulator/assets/scenes/dining_table_0000/Materials/Textures/T_5b5eb828b532761d1bcdb4e5_color.png differ diff --git a/packages/simulator/assets/scenes/dining_table_0000/Materials/Textures/T_5b5eb82ab532761d1bcdb4ec_color.png b/packages/simulator/assets/scenes/dining_table_0000/Materials/Textures/T_5b5eb82ab532761d1bcdb4ec_color.png new file mode 100644 index 0000000..530974a Binary files /dev/null and b/packages/simulator/assets/scenes/dining_table_0000/Materials/Textures/T_5b5eb82ab532761d1bcdb4ec_color.png differ diff --git a/packages/simulator/assets/scenes/dining_table_0000/Materials/Textures/T_5b5eb82ab532761d1bcdb4ec_normal.png b/packages/simulator/assets/scenes/dining_table_0000/Materials/Textures/T_5b5eb82ab532761d1bcdb4ec_normal.png new file mode 100644 index 0000000..415f897 Binary files /dev/null and b/packages/simulator/assets/scenes/dining_table_0000/Materials/Textures/T_5b5eb82ab532761d1bcdb4ec_normal.png differ diff --git a/packages/simulator/assets/scenes/dining_table_0000/Materials/Textures/T_Normal.png b/packages/simulator/assets/scenes/dining_table_0000/Materials/Textures/T_Normal.png new file mode 100644 index 0000000..9d8116f Binary files /dev/null and b/packages/simulator/assets/scenes/dining_table_0000/Materials/Textures/T_Normal.png differ diff --git a/packages/simulator/assets/scenes/dining_table_0000/Materials/WorldGridMaterial.mdl b/packages/simulator/assets/scenes/dining_table_0000/Materials/WorldGridMaterial.mdl new file mode 100644 index 0000000..1374299 --- /dev/null +++ b/packages/simulator/assets/scenes/dining_table_0000/Materials/WorldGridMaterial.mdl @@ -0,0 +1,77 @@ +mdl 1.6; + +import ::math::*; +import ::state::*; +import ::tex::*; +import ::anno::*; +import ::scene::*; +using .::OmniUe4Function import *; +using .::OmniUe4Base import *; + +export annotation sampler_color(); +export annotation sampler_normal(); +export annotation sampler_grayscale(); +export annotation sampler_alpha(); +export annotation sampler_masks(); +export annotation sampler_distancefield(); +export annotation dither_masked_off(); +export annotation world_space_normal(); + +export material WorldGridMaterial( + int MaxTexCoordIndex = 3 + [[ + anno::hidden() + ]]) + = + let { + float3 WorldPositionOffset_mdl = float3(0.0,0.0,0.0); + float2 CustomizedUV0_mdl = float2(state::texture_coordinate(math::min(0,MaxTexCoordIndex)).x,1.0-state::texture_coordinate(math::min(0,MaxTexCoordIndex)).y); + + float2 Local0 = (CustomizedUV0_mdl / 2.0); + float2 Local1 = (Local0 / 0.05); + float4 Local2 = ::unpack_normal_map(tex::lookup_float4(texture_2d("./Textures/T_Default_Material_Grid_N.png",::tex::gamma_linear),float2(Local1.x,1.0-Local1.y),tex::wrap_repeat,tex::wrap_repeat)); + float3 Local3 = (float3(Local2.x,Local2.y,Local2.z) * float3(0.3,0.3,1.0)); + + float3 Normal_mdl = Local3; + + float2 Local4 = (CustomizedUV0_mdl * 20.0); + float4 Local5 = tex::lookup_float4(texture_2d("./Textures/T_Default_Material_Grid_M.png",::tex::gamma_linear),float2(Local4.x,1.0-Local4.y),tex::wrap_repeat,tex::wrap_repeat); + float Local6 = math::lerp(0.4,1.0,Local5.x); + float Local7 = (1.0 - Local6); + float2 Local8 = (Local0 / 0.1); + float4 Local9 = tex::lookup_float4(texture_2d("./Textures/T_Default_Material_Grid_M.png",::tex::gamma_linear),float2(Local8.x,1.0-Local8.y),tex::wrap_repeat,tex::wrap_repeat); + float Local10 = math::lerp(Local9.y,1.0,0.0); + float Local11 = math::lerp(Local6,Local7,Local10); + float4 Local12 = tex::lookup_float4(texture_2d("./Textures/T_Default_Material_Grid_M.png",::tex::gamma_linear),float2(Local0.x,1.0-Local0.y),tex::wrap_repeat,tex::wrap_repeat); + float Local13 = math::lerp(Local9.y,0.0,0.0); + float Local14 = (Local12.y + Local13); + float Local15 = math::lerp(Local14,0.5,0.5); + float Local16 = math::lerp(0.295,0.66,Local15); + float Local17 = (Local16 * 0.5); + float Local18 = (Local11 * Local17); + float Local19 = math::lerp(0.0,0.5,Local12.y); + float Local20 = math::lerp(0.7,1.0,Local9.y); + float Local21 = math::lerp(Local20,1.0,0.0); + float Local22 = (Local21 * 1.0); + float Local23 = (Local19 + Local22); + float Local24 = math::min(math::max(Local23,0.0),1.0); + + float3 EmissiveColor_mdl = float3(0.0,0.0,0.0); + float OpacityMask_mdl = 1.0; + float3 BaseColor_mdl = float3(Local18,Local18,Local18); + float Metallic_mdl = 0.0; + float Specular_mdl = 0.5; + float Roughness_mdl = Local24; + float SurfaceThickness_mdl = 0.01; + + } in + ::OmniUe4Base( + base_color: BaseColor_mdl, + metallic: Metallic_mdl, + roughness: Roughness_mdl, + specular: Specular_mdl, + normal: Normal_mdl, + opacity: OpacityMask_mdl, + emissive_color: EmissiveColor_mdl, + displacement: WorldPositionOffset_mdl, + two_sided: false); diff --git a/packages/simulator/assets/scenes/dining_table_0000/Meshes/dining_table_0000.usd b/packages/simulator/assets/scenes/dining_table_0000/Meshes/dining_table_0000.usd new file mode 100644 index 0000000..b3293ff Binary files /dev/null and b/packages/simulator/assets/scenes/dining_table_0000/Meshes/dining_table_0000.usd differ diff --git a/packages/simulator/assets/scenes/dining_table_0000/dining_table.usd b/packages/simulator/assets/scenes/dining_table_0000/dining_table.usd new file mode 100644 index 0000000..342c02f Binary files /dev/null and b/packages/simulator/assets/scenes/dining_table_0000/dining_table.usd differ diff --git a/packages/simulator/assets/scenes/kitchen/nycu_light_collider_wooden.usd b/packages/simulator/assets/scenes/kitchen/nycu_light_collider_wooden.usd new file mode 100644 index 0000000..248bf78 Binary files /dev/null and b/packages/simulator/assets/scenes/kitchen/nycu_light_collider_wooden.usd differ diff --git a/packages/simulator/assets/scenes/kitchen/objects/PinkCup/PinkCup.usd b/packages/simulator/assets/scenes/kitchen/objects/PinkCup/PinkCup.usd index 038b353..0cddd3d 100755 Binary files a/packages/simulator/assets/scenes/kitchen/objects/PinkCup/PinkCup.usd and b/packages/simulator/assets/scenes/kitchen/objects/PinkCup/PinkCup.usd differ diff --git a/packages/simulator/src/simulator/assets/scenes/dining_room.py b/packages/simulator/src/simulator/assets/scenes/dining_room.py index 5bcd594..a115ebb 100644 --- a/packages/simulator/src/simulator/assets/scenes/dining_room.py +++ b/packages/simulator/src/simulator/assets/scenes/dining_room.py @@ -7,7 +7,7 @@ """Configuration for the Dining Room Scene""" SCENES_ROOT = Path(ASSETS_ROOT) / "scenes" -DINING_ROOM_USD_PATH = str(SCENES_ROOT / "dining_room" / "scene.usd") +DINING_ROOM_USD_PATH = str(SCENES_ROOT / "dining_room" / "nycu_light_collider_wooden.usd") DINING_ROOM_CFG = AssetBaseCfg( spawn=sim_utils.UsdFileCfg( diff --git a/packages/simulator/src/simulator/assets/scenes/kitchen.py b/packages/simulator/src/simulator/assets/scenes/kitchen.py index 91e94e7..99f12fd 100644 --- a/packages/simulator/src/simulator/assets/scenes/kitchen.py +++ b/packages/simulator/src/simulator/assets/scenes/kitchen.py @@ -7,7 +7,7 @@ """Configuration for the Kitchen Scene""" SCENES_ROOT = Path(ASSETS_ROOT) / "scenes" -KITCHEN_USD_PATH = str(SCENES_ROOT / "kitchen" / "scene.usd") +KITCHEN_USD_PATH = str(SCENES_ROOT / "kitchen" / "nycu_light_collider_wooden.usd") KITCHEN_CFG = AssetBaseCfg( spawn=sim_utils.UsdFileCfg( diff --git a/packages/simulator/src/simulator/datagen/state_machine/cup_stacking.py b/packages/simulator/src/simulator/datagen/state_machine/cup_stacking.py index b9bc7a8..1aa321c 100644 --- a/packages/simulator/src/simulator/datagen/state_machine/cup_stacking.py +++ b/packages/simulator/src/simulator/datagen/state_machine/cup_stacking.py @@ -41,7 +41,7 @@ _HOVER_Z_OFFSET = 0.15 _GRASP_Z_OFFSET = 0.08 -_LIFT_Z_OFFSET = 0.2 +_LIFT_Z_OFFSET = 0.25 _RELEASE_Z_OFFSET = 0.09 _GRIPPER_DOWN_ROLL_W = math.pi _GRIPPER_DOWN_PITCH_W = 0.0 @@ -133,9 +133,9 @@ def __init__(self) -> None: 80, # Phase 1: Approach down to the blue cup 20, # Phase 2: Close gripper to grasp 100, # Phase 3: Lift blue cup upward - 85, # Phase 4: Move blue cup above the pink cup - 35, # Phase 5: Lower/place and release - 30, # Phase 6: Move up and away + 120, # Phase 4: Move blue cup above the pink cup + 40, # Phase 5: Lower/place and release + 80, # Phase 6: Move up and away ] # ------------------------------------------------------------------ @@ -250,11 +250,13 @@ def _phase_lift_blue(self, blue_cup_pos_w, num_envs, device): def _phase_move_above_pink(self, pink_cup_pos_w, num_envs, device): target_pos_w = pink_cup_pos_w.clone() target_pos_w[:, 2] += _LIFT_Z_OFFSET + #target_pos_w[:, 1] += 0.01 # +y 1cm return target_pos_w, _constant_gripper(num_envs, device, _GRIPPER_CLOSE) def _phase_lower_to_release(self, pink_cup_pos_w, num_envs, device): target_pos_w = pink_cup_pos_w.clone() target_pos_w[:, 2] += _RELEASE_Z_OFFSET + #target_pos_w[:, 1] += 0.01 # +y 1cm return target_pos_w, _constant_gripper(num_envs, device, _GRIPPER_CLOSE) def _phase_lift_away(self, pink_cup_pos_w, num_envs, device): diff --git a/packages/simulator/src/simulator/tasks/cup_stacking/cup_stacking_env_cfg.py b/packages/simulator/src/simulator/tasks/cup_stacking/cup_stacking_env_cfg.py index 4b5a503..5b44985 100644 --- a/packages/simulator/src/simulator/tasks/cup_stacking/cup_stacking_env_cfg.py +++ b/packages/simulator/src/simulator/tasks/cup_stacking/cup_stacking_env_cfg.py @@ -26,7 +26,7 @@ TAG_TO_OBJECT: dict[int, str] = {1: "blue_cup", 2: "pink_cup"} ANCHOR_TAG_ID: int = 0 ANCHOR_WORLD_POSE: tuple[float, float, float] = (0.5, -0.2, 0.0) -OBJECT_Z: float = 0.12 +OBJECT_Z: float = 1.0 OBJECT_ROLL: float = 0.0 OBJECT_PITCH: float = 0.0 @@ -109,7 +109,7 @@ def __post_init__(self) -> None: self.viewer.lookat = (0.4, -1.3, -0.2) self.dynamic_reset_gripper_effort_limit = False - self.scene.robot.init_state.pos = (0.35, -0.74, 0.01) + self.scene.robot.init_state.pos = (9.0, 6.0, 0.9) self.scene.robot.init_state.rot = (0.707, 0.0, 0.0, 0.707) self.scene.robot.init_state.joint_pos = { "panda_joint1": 0.0, diff --git a/packages/simulator/src/simulator/tasks/cutlery_arrangement/cutlery_arrangement_env_cfg.py b/packages/simulator/src/simulator/tasks/cutlery_arrangement/cutlery_arrangement_env_cfg.py index e8698ab..e0e5ff7 100644 --- a/packages/simulator/src/simulator/tasks/cutlery_arrangement/cutlery_arrangement_env_cfg.py +++ b/packages/simulator/src/simulator/tasks/cutlery_arrangement/cutlery_arrangement_env_cfg.py @@ -23,12 +23,21 @@ DINING_OBJECTS_ROOT = ASSETS_ROOT / "scenes" / "dining_room" / "objects" +# kujiale dining_table_0000 (light wood, convexDecomposition colliders, self-contained). +# Origin is at the table's vertical CENTER (spans z +-0.355), so place at z=0.355 to +# sit the base on the floor (top ends up at ~0.71). +DININGTABLE_USD = str( + ASSETS_ROOT / "scenes" / "dining_table_0000" / "dining_table.usd" +) +DININGTABLE_WORLD_POS: tuple[float, float, float] = (7.0, 3.5, 0.354) +DININGTABLE_WORLD_ROT: tuple[float, float, float, float] = ( 0.70711, 0.0, 0.0, -0.70711) + TAG_TO_OBJECT: dict[int, str] = {2: "knife", 3: "fork"} ANCHOR_TAG_ID: int = 0 # Anchor for fork/knife spawns; placed away from the fixed plate so the cutlery # starts well clear of the plate area. ANCHOR_WORLD_POSE: tuple[float, float, float] = (0.40, 0.10, 0.0) -OBJECT_Z: float = 0.05 +OBJECT_Z: float = 1.00 OBJECT_ROLL: float = 0.0 OBJECT_PITCH: float = 0.0 # Per-USD yaw correction (rad) so the spawned object matches its visual heading @@ -44,7 +53,7 @@ # Fixed plate world position. Robot is at (0.35, -0.74); plate sits in front of # it with ≥ 10 cm of free space on both ±y sides for fork (left) and knife # (right) drop targets (state machine uses `_PLACE_Y_OFFSET = 0.10`). -PLATE_WORLD_POS: tuple[float, float, float] = (0.50, -0.40, 0.05) +PLATE_WORLD_POS: tuple[float, float, float] = (7.0, 2.9, 0.74416) # (0.50, -0.40, 0.05) @configclass @@ -53,6 +62,19 @@ class CutleryArrangementSceneCfg(SingleArmFrankaTaskSceneCfg): scene: AssetBaseCfg = DINING_ROOM_CFG.replace(prim_path="{ENV_REGEX_NS}/Scene") + # Standalone white table (matte, static colliders baked in). Static furniture + # -> AssetBaseCfg (no rigid body). Tune DININGTABLE_WORLD_POS for the scene. + diningtable: AssetBaseCfg = AssetBaseCfg( + prim_path="{ENV_REGEX_NS}/Scene/diningtable", + init_state=AssetBaseCfg.InitialStateCfg( + pos=DININGTABLE_WORLD_POS, + rot=DININGTABLE_WORLD_ROT, + ), + spawn=sim_utils.UsdFileCfg( + usd_path=DININGTABLE_USD, + ), + ) + plate: RigidObjectCfg = RigidObjectCfg( prim_path="{ENV_REGEX_NS}/Scene/plate", init_state=RigidObjectCfg.InitialStateCfg( @@ -146,8 +168,18 @@ def __post_init__(self) -> None: self.viewer.lookat = (0.4, -1.3, -0.2) self.dynamic_reset_gripper_effort_limit = False - self.scene.robot.init_state.pos = (0.35, -0.74, 0.01) + self.scene.robot.init_state.pos = (7.0, 2.4, 0.6) self.scene.robot.init_state.rot = (0.707, 0.0, 0.0, 0.707) + + + # Per-task front camera: pos (7.05,4.5,1.6), aimed at table workspace + # (7,3.5,~1.05). rot computed as opengl look-at quaternion (w,x,y,z). + self.scene.front.offset.pos = (7.05, 4.77904, 1.16108) + self.scene.front.offset.rot = (0.00747, 0.00888, 0.64418, 0.76479) + self.scene.front.offset.convention = "opengl" + self.scene.front.spawn.focal_length = 55 + + self.scene.robot.init_state.joint_pos = { "panda_joint1": 0.0, "panda_joint2": -math.pi / 4.0, diff --git a/packages/simulator/src/simulator/tasks/template/single_arm_franka_cfg.py b/packages/simulator/src/simulator/tasks/template/single_arm_franka_cfg.py index 54e3078..0d6030b 100644 --- a/packages/simulator/src/simulator/tasks/template/single_arm_franka_cfg.py +++ b/packages/simulator/src/simulator/tasks/template/single_arm_franka_cfg.py @@ -70,7 +70,13 @@ class SingleArmFrankaTaskSceneCfg(InteractiveSceneCfg): wrist: TiledCameraCfg = TiledCameraCfg( prim_path="{ENV_REGEX_NS}/Robot/panda_hand/wrist", - offset=TiledCameraCfg.OffsetCfg(pos=(0.04, 0.0, 0.0), rot=(0.707, 0, 0, 0.707), convention="ros"), + offset=TiledCameraCfg.OffsetCfg(pos=(0.04, 0.0, 0.0), rot=(0.707, 0, 0, 0.707), convention="ros"), + + # rot=(0.707, 0, 0, 0.707) + # => wxyz=(0, 0.707, 0.707, 0) + # rot=(0, 0.707, 0, 0.707) + # => wxyz=(0.707, 0, 0.707, 0) + data_types=["rgb"], spawn=sim_utils.PinholeCameraCfg( focal_length=24, @@ -87,11 +93,13 @@ class SingleArmFrankaTaskSceneCfg(InteractiveSceneCfg): front: TiledCameraCfg = TiledCameraCfg( prim_path="/World/front_camera", offset=TiledCameraCfg.OffsetCfg( - pos=(0.35, 1.1, 0.6), rot=(0.0, -0.0, -0.60182, -0.79864), convention="opengl" + # pos=(8.19043, 6.69887, 1.06662), rot=(0.459121, 0.459121, -0.53778, -0.53778), convention="opengl" + pos=(7.80362, 6.78599, 1.1197), rot=(0.37025, 0.37025, -0.60242, -0.60242), convention="opengl" ), data_types=["rgb"], spawn=sim_utils.PinholeCameraCfg( - focal_length=55, + #focal_length=55, + focal_length=18.14756, focus_distance=400.0, horizontal_aperture=38.11, clipping_range=(0.01, 50.0),