Управление захватом робота Panda устроено следующим образом.
-
Имена суставов захвата:
gripper_joint_names = [ "panda_finger_joint1", "panda_finger_joint2", ]У робота Panda два сустава захвата:
panda_finger_joint1иpanda_finger_joint2. -
Конфигурация контроллера:
gripper_pd_joint_pos = PDJointPosMimicControllerConfig( self.gripper_joint_names, lower=-0.01, # Приём: при очень тонких объектах можно прикладывать усилие upper=0.04, # Положение полностью открытого захвата stiffness=self.gripper_stiffness, damping=self.gripper_damping, force_limit=self.gripper_force_limit, ) -
Способ управления:
-
Panda использует
PDJointPosMimicController— имитирующий (Mimic) контроллер. -
Это значит, что два пальца движутся синхронно: одно входное значение управляет обоими суставами.
-
Диапазон управления — от -0,01 (слегка закрыт) до 0,04 (полностью открыт).
-
В исходной позе положение захвата задано 0,04 (полностью открыт):
keyframes = dict( rest=Keyframe( qpos=np.array([ 0.0, np.pi/8, 0, -np.pi*5/8, 0, np.pi*3/4, np.pi/4, 0.04, 0.04, # Два сустава захвата, оба полностью открыты ]), pose=sapien.Pose(), ) )
-
-
Определение захвата объекта: Panda определяет, успешно ли захвачен объект, методом
is_grasping, который опирается на контактные силы и углы.
По сравнению с роботом GEN72-EG2:
- У Panda два сустава захвата, а у GEN72-EG2 — четыре.
- Оба используют один и тот же контроллер
PDJointPosMimicController, поэтому суставы захвата движутся синхронно. - Диапазоны управления похожи: у Panda от -0,01 до 0,04, у GEN72-EG2 от 0,0 до 0,04.
- Для управления достаточно одного значения, которое задаёт все суставы захвата сразу.
Итог: во время обучения захват обоих роботов открывается и закрывается одним значением в диапазоне от 0,0 до 0,04, где 0,0 — полностью закрыт, а 0,04 — полностью открыт.