Skip to content

Commit 9fa2acb

Browse files
committed
update
1 parent ad484d4 commit 9fa2acb

File tree

3 files changed

+766
-640
lines changed

3 files changed

+766
-640
lines changed

examples/rigid/grasp_bottle.py

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
def main():
99
parser = argparse.ArgumentParser()
1010
parser.add_argument("-v", "--vis", action="store_true", default=False)
11+
parser.add_argument("-n", "--n_envs", type=int, default=49)
1112
args = parser.parse_args()
1213

1314
########################## init ##########################
@@ -48,12 +49,16 @@ def main():
4849
)
4950

5051
########################## build ##########################
51-
scene.build()
52+
scene.build(n_envs=args.n_envs, env_spacing=(1,1))
5253

5354
motors_dof = np.arange(7)
5455
fingers_dof = np.arange(7, 9)
5556

5657
# Optional: set control gains
58+
if args.n_envs == 0:
59+
franka.set_qpos(np.array([1.56, -0.72, -0.02, -2.09, 0.04, 1.33, 2.4, 0.01, 0.01]))
60+
else:
61+
franka.set_qpos(np.array([[1.56, -0.72, -0.02, -2.09, 0.04, 1.33, 2.4, 0.01, 0.01]] * args.n_envs))
5762
franka.set_dofs_kp(
5863
np.array([4500, 4500, 3500, 3500, 2000, 2000, 2000, 100, 100]),
5964
)
@@ -70,10 +75,11 @@ def main():
7075
# move to pre-grasp pose
7176
qpos = franka.inverse_kinematics(
7277
link=end_effector,
73-
pos=np.array([0.65, 0.0, 0.25]),
74-
quat=np.array([0, 1, 0, 0]),
78+
pos =np.array([0.65, 0.0, 0.25]) if args.n_envs == 0 else np.array([[0.65, 0.0, 0.25]] * args.n_envs),
79+
quat=np.array([0, 1, 0, 0]) if args.n_envs == 0 else np.array([[0, 1, 0, 0]] * args.n_envs),
7580
)
76-
qpos[-2:] = 0.04
81+
qpos[...,-2:] = 0.04
82+
7783
path = franka.plan_path(qpos)
7884
for waypoint in path:
7985
franka.control_dofs_position(waypoint)
@@ -84,30 +90,36 @@ def main():
8490
# reach
8591
qpos = franka.inverse_kinematics(
8692
link=end_effector,
87-
pos=np.array([0.65, 0.0, 0.142]),
88-
quat=np.array([0, 1, 0, 0]),
93+
pos= np.array([0.65, 0.0, 0.142]) if args.n_envs == 0 else np.array([[0.65, 0.0, 0.142]] * args.n_envs),
94+
quat=np.array([0, 1, 0, 0]) if args.n_envs == 0 else np.array([[0, 1, 0, 0]] * args.n_envs),
8995
)
90-
franka.control_dofs_position(qpos[:-2], motors_dof)
96+
franka.control_dofs_position(qpos[...,:-2], motors_dof)
9197
for i in range(100):
9298
scene.step()
9399

94100
# grasp
95-
franka.control_dofs_position(qpos[:-2], motors_dof)
96-
franka.control_dofs_position(np.array([0, 0]), fingers_dof) # you can use position control
101+
franka.control_dofs_position(qpos[...,:-2], motors_dof)
102+
franka.control_dofs_position(
103+
np.array([0, 0]) if args.n_envs == 0 else np.array([[0, 0]] * args.n_envs),
104+
fingers_dof
105+
) # you can use position control
97106
for i in range(100):
98107
scene.step()
99108

100109
# lift
101110
qpos = franka.inverse_kinematics(
102111
link=end_effector,
103-
pos=np.array([0.65, 0.0, 0.3]),
104-
quat=np.array([0, 1, 0, 0]),
112+
pos=np.array([0.65, 0.0, 0.3]) if args.n_envs == 0 else np.array([[0.65, 0.0, 0.3]] * args.n_envs),
113+
quat=np.array([0, 1, 0, 0]) if args.n_envs == 0 else np.array([[0, 1, 0, 0]] * args.n_envs),
105114
)
106-
franka.control_dofs_position(qpos[:-2], motors_dof)
107-
franka.control_dofs_force(np.array([-20, -20]), fingers_dof) # can also use force control
115+
franka.control_dofs_position(qpos[...,:-2], motors_dof)
116+
franka.control_dofs_force(
117+
np.array([-20, -20]) if args.n_envs == 0 else np.array([[-20, -20]] * args.n_envs),
118+
fingers_dof
119+
) # can also use force control
108120
for i in range(1000):
109121
scene.step()
110122

111123

112124
if __name__ == "__main__":
113-
main()
125+
main()

0 commit comments

Comments
 (0)