mani-skill-nightly 2025.8.19.2202__py3-none-any.whl → 2025.8.29.2141__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mani-skill-nightly might be problematic. Click here for more details.
- mani_skill/agents/robots/so100/so_100.py +12 -36
- mani_skill/utils/scene_builder/registration.py +1 -1
- mani_skill/utils/scene_builder/table/scene_builder.py +1 -1
- mani_skill/utils/structs/articulation.py +2 -2
- {mani_skill_nightly-2025.8.19.2202.dist-info → mani_skill_nightly-2025.8.29.2141.dist-info}/METADATA +1 -1
- {mani_skill_nightly-2025.8.19.2202.dist-info → mani_skill_nightly-2025.8.29.2141.dist-info}/RECORD +9 -9
- {mani_skill_nightly-2025.8.19.2202.dist-info → mani_skill_nightly-2025.8.29.2141.dist-info}/LICENSE +0 -0
- {mani_skill_nightly-2025.8.19.2202.dist-info → mani_skill_nightly-2025.8.29.2141.dist-info}/WHEEL +0 -0
- {mani_skill_nightly-2025.8.19.2202.dist-info → mani_skill_nightly-2025.8.29.2141.dist-info}/top_level.txt +0 -0
|
@@ -102,49 +102,13 @@ class SO100(BaseAgent):
|
|
|
102
102
|
def tcp_pose(self):
|
|
103
103
|
return Pose.create_from_pq(self.tcp_pos, self.finger1_link.pose.q)
|
|
104
104
|
|
|
105
|
-
def is_grasping(self, object: Actor, min_force=0.5, max_angle=110):
|
|
106
|
-
"""Check if the robot is grasping an object
|
|
107
|
-
|
|
108
|
-
Args:
|
|
109
|
-
object (Actor): The object to check if the robot is grasping
|
|
110
|
-
min_force (float, optional): Minimum force before the robot is considered to be grasping the object in Newtons. Defaults to 0.5.
|
|
111
|
-
max_angle (int, optional): Maximum angle of contact to consider grasping. Defaults to 85.
|
|
112
|
-
"""
|
|
113
|
-
l_contact_forces = self.scene.get_pairwise_contact_forces(
|
|
114
|
-
self.finger1_link, object
|
|
115
|
-
)
|
|
116
|
-
r_contact_forces = self.scene.get_pairwise_contact_forces(
|
|
117
|
-
self.finger2_link, object
|
|
118
|
-
)
|
|
119
|
-
lforce = torch.linalg.norm(l_contact_forces, axis=1)
|
|
120
|
-
rforce = torch.linalg.norm(r_contact_forces, axis=1)
|
|
121
|
-
|
|
122
|
-
# direction to open the gripper
|
|
123
|
-
ldirection = self.finger1_link.pose.to_transformation_matrix()[..., :3, 1]
|
|
124
|
-
rdirection = -self.finger2_link.pose.to_transformation_matrix()[..., :3, 1]
|
|
125
|
-
langle = common.compute_angle_between(ldirection, l_contact_forces)
|
|
126
|
-
rangle = common.compute_angle_between(rdirection, r_contact_forces)
|
|
127
|
-
lflag = torch.logical_and(
|
|
128
|
-
lforce >= min_force, torch.rad2deg(langle) <= max_angle
|
|
129
|
-
)
|
|
130
|
-
rflag = torch.logical_and(
|
|
131
|
-
rforce >= min_force, torch.rad2deg(rangle) <= max_angle
|
|
132
|
-
)
|
|
133
|
-
return torch.logical_and(lflag, rflag)
|
|
134
|
-
|
|
135
105
|
def _after_loading_articulation(self):
|
|
136
106
|
super()._after_loading_articulation()
|
|
137
|
-
# self.set_colors()
|
|
138
107
|
self.finger1_link = self.robot.links_map["Fixed_Jaw"]
|
|
139
108
|
self.finger2_link = self.robot.links_map["Moving_Jaw"]
|
|
140
109
|
self.finger1_tip = self.robot.links_map["Fixed_Jaw_tip"]
|
|
141
110
|
self.finger2_tip = self.robot.links_map["Moving_Jaw_tip"]
|
|
142
111
|
|
|
143
|
-
@property
|
|
144
|
-
def tcp_pos(self):
|
|
145
|
-
# computes the tool center point as the mid point between the the fixed and moving jaw's tips
|
|
146
|
-
return (self.finger1_tip.pose.p + self.finger2_tip.pose.p) / 2
|
|
147
|
-
|
|
148
112
|
def is_grasping(self, object: Actor, min_force=0.5, max_angle=110):
|
|
149
113
|
"""Check if the robot is grasping an object
|
|
150
114
|
|
|
@@ -178,3 +142,15 @@ class SO100(BaseAgent):
|
|
|
178
142
|
def is_static(self, threshold=0.2):
|
|
179
143
|
qvel = self.robot.get_qvel()[:, :-1] # exclude the gripper joint
|
|
180
144
|
return torch.max(torch.abs(qvel), 1)[0] <= threshold
|
|
145
|
+
|
|
146
|
+
@staticmethod
|
|
147
|
+
def build_grasp_pose(approaching, closing, center):
|
|
148
|
+
"""Build a grasp pose (panda_hand_tcp)."""
|
|
149
|
+
assert np.abs(1 - np.linalg.norm(approaching)) < 1e-3
|
|
150
|
+
assert np.abs(1 - np.linalg.norm(closing)) < 1e-3
|
|
151
|
+
assert np.abs(approaching @ closing) <= 1e-3
|
|
152
|
+
ortho = np.cross(closing, approaching)
|
|
153
|
+
T = np.eye(4)
|
|
154
|
+
T[:3, :3] = np.stack([ortho, closing, approaching], axis=1)
|
|
155
|
+
T[:3, 3] = center
|
|
156
|
+
return sapien.Pose(T)
|
|
@@ -33,7 +33,7 @@ def register_scene_builder(uid: str, override=False):
|
|
|
33
33
|
logger.warn(
|
|
34
34
|
f"Scene Builder {uid} is already registered. Skip registration."
|
|
35
35
|
)
|
|
36
|
-
|
|
36
|
+
return scene_builder_cls
|
|
37
37
|
|
|
38
38
|
REGISTERED_SCENE_BUILDERS[uid] = SceneBuilderSpec(
|
|
39
39
|
scene_builder_cls=scene_builder_cls
|
|
@@ -281,7 +281,7 @@ class TableSceneBuilder(SceneBuilder):
|
|
|
281
281
|
qpos = self.env.agent.keyframes["ready_to_grasp"].qpos
|
|
282
282
|
self.env.agent.reset(qpos)
|
|
283
283
|
elif self.env.robot_uids == "so100":
|
|
284
|
-
qpos = np.array([0,
|
|
284
|
+
qpos = np.array([0, 0, 0, np.pi / 2, np.pi / 2, 0])
|
|
285
285
|
qpos = (
|
|
286
286
|
self.env._episode_rng.normal(
|
|
287
287
|
0, self.robot_init_qpos_noise, (b, len(qpos))
|
|
@@ -824,7 +824,7 @@ class Articulation(BaseStruct[physx.PhysxArticulation]):
|
|
|
824
824
|
arg1 = common.to_tensor(arg1, device=self.device)
|
|
825
825
|
self.px.cuda_rigid_body_data.torch()[
|
|
826
826
|
self.root._body_data_index[self.scene._reset_mask[self._scene_idxs]],
|
|
827
|
-
|
|
827
|
+
10:13,
|
|
828
828
|
] = arg1
|
|
829
829
|
else:
|
|
830
830
|
arg1 = common.to_numpy(arg1)
|
|
@@ -842,7 +842,7 @@ class Articulation(BaseStruct[physx.PhysxArticulation]):
|
|
|
842
842
|
arg1 = common.to_tensor(arg1, device=self.device)
|
|
843
843
|
self.px.cuda_rigid_body_data.torch()[
|
|
844
844
|
self.root._body_data_index[self.scene._reset_mask[self._scene_idxs]],
|
|
845
|
-
10
|
|
845
|
+
7:10,
|
|
846
846
|
] = arg1
|
|
847
847
|
else:
|
|
848
848
|
arg1 = common.to_numpy(arg1)
|
{mani_skill_nightly-2025.8.19.2202.dist-info → mani_skill_nightly-2025.8.29.2141.dist-info}/RECORD
RENAMED
|
@@ -46,7 +46,7 @@ mani_skill/agents/robots/panda/panda.py,sha256=aufC9et7TK5Ojms03ITT3cb7jsVClcbqL
|
|
|
46
46
|
mani_skill/agents/robots/panda/panda_stick.py,sha256=YEGYLPGZFKkCTTAry4F82_fNZqrso3LdMWgBfT_RRbY,6131
|
|
47
47
|
mani_skill/agents/robots/panda/panda_wristcam.py,sha256=eSw652CaA82YfetCqasHGAcUkaJ_aXJijJm6tHZmKyQ,875
|
|
48
48
|
mani_skill/agents/robots/so100/__init__.py,sha256=54RRpI3ue89zbNtSKOK8JxvSaKrHt6PXQrriTN6X01c,26
|
|
49
|
-
mani_skill/agents/robots/so100/so_100.py,sha256=
|
|
49
|
+
mani_skill/agents/robots/so100/so_100.py,sha256=JWfDM6f-QP-WTv-KGcHiZoaZkMWr-c4Dd9vHuU2-IpI,5896
|
|
50
50
|
mani_skill/agents/robots/so100/so_100_real.py,sha256=-M1iRAe81AQgnM8XE32Q2jsFBmE87MGXgQwA138BVis,125
|
|
51
51
|
mani_skill/agents/robots/stompy/__init__.py,sha256=fNuqeJqKneHPnzvjDYtzbpV3MIGGll8-CMok89hf0zo,27
|
|
52
52
|
mani_skill/agents/robots/stompy/stompy.py,sha256=doBI0c4QCbjCiaHAxdngI73Ux_ISBy6N5JTgPovrX34,4052
|
|
@@ -743,7 +743,7 @@ mani_skill/utils/geometry/geometry.py,sha256=6hvxNDVLNBV5yBzHxam7hjEI2PVGvp67gFr
|
|
|
743
743
|
mani_skill/utils/geometry/rotation_conversions.py,sha256=GmivoJ3pmXCVRDPvZRxel-RP1G_rsLLRbFYa2VTHfu8,20673
|
|
744
744
|
mani_skill/utils/geometry/trimesh_utils.py,sha256=JruFftu0YPMut4Ig3ucv7lq_29dhKf1FH8Brc2nYY08,4558
|
|
745
745
|
mani_skill/utils/scene_builder/__init__.py,sha256=9jJXXQYBuYPabZ_GTIskD41_JX33R5ZT8jiaQOEEf0c,40
|
|
746
|
-
mani_skill/utils/scene_builder/registration.py,sha256=
|
|
746
|
+
mani_skill/utils/scene_builder/registration.py,sha256=O76fnn3XkDidXTxEhrVwWbDDJWpUZua9ge4-IGu4fEs,1512
|
|
747
747
|
mani_skill/utils/scene_builder/scene_builder.py,sha256=7cmP_Em1Xi3hhltrqvtLdSvk8eHkMEgjkEfqEuqecpY,4295
|
|
748
748
|
mani_skill/utils/scene_builder/ai2thor/__init__.py,sha256=kyHl6QlUDKvFJHzuPjYVnAMVKtMq0fICWLsLcBHy-v0,131
|
|
749
749
|
mani_skill/utils/scene_builder/ai2thor/constants.py,sha256=Yiv7awe7MSc0CpsH5UG2rYaSuo30w4NKtcVYt7oY4KY,4027
|
|
@@ -794,13 +794,13 @@ mani_skill/utils/scene_builder/robocasa/utils/placement_samplers.py,sha256=ZUbue
|
|
|
794
794
|
mani_skill/utils/scene_builder/robocasa/utils/scene_registry.py,sha256=16ZHhI1mgDGy3373aMVRliN8pcvrVigNJIMExyTxE1c,3770
|
|
795
795
|
mani_skill/utils/scene_builder/robocasa/utils/scene_utils.py,sha256=a8HnoRtbwmqQyvLQCHUXKj951G2_wlzodW_eD_CBvsc,6293
|
|
796
796
|
mani_skill/utils/scene_builder/table/__init__.py,sha256=g5qmrh4wZ7V_PuKv-ZU9RVwNQUbQhCshAFInAyRLuZc,45
|
|
797
|
-
mani_skill/utils/scene_builder/table/scene_builder.py,sha256=
|
|
797
|
+
mani_skill/utils/scene_builder/table/scene_builder.py,sha256=zSjZGjvFiu_e-P0QT6ylhV7lPwaks-neS2ZGtOHZcJw,10345
|
|
798
798
|
mani_skill/utils/scene_builder/table/assets/Dining_Table_204_1.glb,sha256=IleHi35xfR8O9atKehqjWiuC9McjEFRCBKHRF85w_Tg,150524
|
|
799
799
|
mani_skill/utils/scene_builder/table/assets/table.glb,sha256=yw69itZDjBFg8JXZAr9VQV-dZD-MaZChhqBSJR_nlRo,3891588
|
|
800
800
|
mani_skill/utils/structs/README.md,sha256=qnYKimp_ZkgNcduURrYQxVTimNmq_usDMKoQ8VtMdCs,286
|
|
801
801
|
mani_skill/utils/structs/__init__.py,sha256=BItR3Xe0z6xCrMHAEaH0AAAVyeonsQ3q-DJUyRUibAA,524
|
|
802
802
|
mani_skill/utils/structs/actor.py,sha256=L0p6vkr8rGtJmF22xAq8Q7nhXKnDD5dahzODSAko0bg,17394
|
|
803
|
-
mani_skill/utils/structs/articulation.py,sha256=
|
|
803
|
+
mani_skill/utils/structs/articulation.py,sha256=gmjIxscXwZh4yhPAHzUslnIzkZ2daW8b3yV_sVUaQoA,38491
|
|
804
804
|
mani_skill/utils/structs/articulation_joint.py,sha256=xDQkCAXM3XZ56YgFqLwH5Ec8aFqhR5BqMSvDYCS0bzw,12972
|
|
805
805
|
mani_skill/utils/structs/base.py,sha256=R3L8s3acMUmzQTeP5iYISHp3CXVeJFg1Nml8wF0Zm40,18526
|
|
806
806
|
mani_skill/utils/structs/decorators.py,sha256=Lv6wQ989dOnreo2tB-qopDnkeBp_jsn1pmfUR-OY8VQ,535
|
|
@@ -826,8 +826,8 @@ mani_skill/vector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
|
|
|
826
826
|
mani_skill/vector/wrappers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
827
827
|
mani_skill/vector/wrappers/gymnasium.py,sha256=voHNmYg5Jyy-laMSC2Fd8VggQvhXw3NnfYLbD9QDXAc,7305
|
|
828
828
|
mani_skill/vector/wrappers/sb3.py,sha256=SlXdiEPqcNHYMhJCzA29kBU6zK7DKTe1nc0L6Z3QQtY,4722
|
|
829
|
-
mani_skill_nightly-2025.8.
|
|
830
|
-
mani_skill_nightly-2025.8.
|
|
831
|
-
mani_skill_nightly-2025.8.
|
|
832
|
-
mani_skill_nightly-2025.8.
|
|
833
|
-
mani_skill_nightly-2025.8.
|
|
829
|
+
mani_skill_nightly-2025.8.29.2141.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
830
|
+
mani_skill_nightly-2025.8.29.2141.dist-info/METADATA,sha256=W0frdHuysIxceLikvjeffl6WZFSIB0331zQPGYMlCqM,9316
|
|
831
|
+
mani_skill_nightly-2025.8.29.2141.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
|
832
|
+
mani_skill_nightly-2025.8.29.2141.dist-info/top_level.txt,sha256=bkBgOVl_MZMoQx2aRFsSFEYlZLxjWlip5vtJ39FB3jA,11
|
|
833
|
+
mani_skill_nightly-2025.8.29.2141.dist-info/RECORD,,
|
{mani_skill_nightly-2025.8.19.2202.dist-info → mani_skill_nightly-2025.8.29.2141.dist-info}/LICENSE
RENAMED
|
File without changes
|
{mani_skill_nightly-2025.8.19.2202.dist-info → mani_skill_nightly-2025.8.29.2141.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|