Skip to content

Commit a2787f5

Browse files
authored
[MISC] Enable more example scripts in CI. (#2057)
* Enable more example script in CI. * Various bug fixes. * Get around argument pruning bug for ndarray.
1 parent d978082 commit a2787f5

26 files changed

+343
-249
lines changed

examples/coupling/cut_dragon.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1+
import os
12
import argparse
2-
3-
import numpy as np
4-
53
import genesis as gs
64

75

@@ -32,45 +30,45 @@ def main():
3230
camera_fov=35,
3331
max_FPS=120,
3432
),
35-
show_viewer=args.vis,
3633
vis_options=gs.options.VisOptions(
3734
visualize_mpm_boundary=True,
3835
# rendered_envs_idx=[2],
3936
),
37+
show_viewer=args.vis,
4038
)
4139

4240
plane = scene.add_entity(
43-
material=gs.materials.Rigid(),
4441
morph=gs.morphs.URDF(file="urdf/plane/plane.urdf", fixed=True),
42+
material=gs.materials.Rigid(),
4543
)
4644
cutter = scene.add_entity(
4745
morph=gs.morphs.Mesh(
4846
file="meshes/cross_cutter.obj",
49-
euler=(90, 0, 0),
5047
scale=0.8,
5148
pos=(0.0, 0.0, 0.3),
49+
euler=(90, 0, 0),
5250
fixed=True,
5351
convexify=False,
5452
),
5553
surface=gs.surfaces.Iron(),
5654
)
5755
dragon = scene.add_entity(
58-
material=gs.materials.MPM.Elastic(sampler="pbs-64"),
5956
morph=gs.morphs.Mesh(
6057
file="meshes/dragon/dragon.obj",
6158
scale=0.007,
6259
euler=(0, 0, 90),
6360
pos=(0.3, -0.0, 1.3),
6461
),
62+
material=gs.materials.MPM.Elastic(sampler="pbs-64"),
6563
surface=gs.surfaces.Rough(
6664
color=(0.6, 1.0, 0.8, 1.0),
6765
vis_mode="particle",
6866
),
6967
)
7068
scene.build(n_envs=2)
7169

72-
horizon = 400
73-
for i in range(horizon):
70+
horizon = 400 if "PYTEST_VERSION" not in os.environ else 5
71+
for _ in range(horizon):
7472
scene.step()
7573

7674

examples/coupling/fem_cube_linked_with_arm.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,9 @@ def main():
1717
"--substeps", type=int, help="Number of substeps (auto-selected based on solver if not specified)"
1818
)
1919
parser.add_argument("--vis", "-v", action="store_true", help="Show visualization GUI")
20-
parser.add_argument("-c", "--cpu", action="store_true", default=False)
20+
parser.add_argument("-c", "--cpu", action="store_true", default="PYTEST_VERSION" in os.environ)
2121
args = parser.parse_args()
2222

23-
args.cpu = args.cpu if "PYTEST_VERSION" not in os.environ else True
24-
2523
gs.init(backend=gs.cpu if args.cpu else gs.gpu, logging_level=None)
2624

2725
if args.solver == "explicit":

examples/coupling/flush_cubes.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1+
import os
12
import argparse
2-
33
import numpy as np
4-
54
import genesis as gs
65

76

@@ -91,7 +90,7 @@ def main():
9190
)
9291
scene.build(n_envs=2)
9392

94-
horizon = 100
93+
horizon = 100 if "PYTEST_VERSION" not in os.environ else 5
9594
for i in range(horizon):
9695
emitter1.emit(
9796
pos=np.array([0.16, -0.4, 0.5]),

examples/differentiable_push.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import argparse
2+
import os
23

34
import torch
45

@@ -89,7 +90,7 @@ def main():
8990
scene.build(n_envs=2)
9091

9192
########################## forward + backward twice ##########################
92-
horizon = 150
93+
horizon = 150 if "PYTEST_VERSION" not in os.environ else 5
9394
v_list = [gs.tensor([[0.0, 1.0, 0.0], [0.0, 1.0, 0.0]], requires_grad=True) for _ in range(horizon)]
9495
for _ in range(2):
9596
scene.reset()

examples/tutorials/IK_motion_planning_grasp.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
import genesis as gs
1+
import os
22
import numpy as np
3+
import genesis as gs
4+
35

46
########################## init ##########################
57
gs.init(backend=gs.gpu)
@@ -61,7 +63,7 @@
6163
qpos[-2:] = 0.04
6264
path = franka.plan_path(
6365
qpos_goal=qpos,
64-
num_waypoints=200, # 2s duration
66+
num_waypoints=200 if "PYTEST_VERSION" not in os.environ else 10, # 2s duration
6567
)
6668
# draw the planned path
6769
path_debug = scene.draw_debug_path(path, franka)
@@ -75,7 +77,7 @@
7577
scene.clear_debug_object(path_debug)
7678

7779
# allow robot to reach the last waypoint
78-
for i in range(100):
80+
for i in range(100 if "PYTEST_VERSION" not in os.environ else 1):
7981
scene.step()
8082

8183
# reach
@@ -86,14 +88,14 @@
8688
)
8789
print(qpos)
8890
franka.control_dofs_position(qpos[:-2], motors_dof)
89-
for i in range(100):
91+
for i in range(100 if "PYTEST_VERSION" not in os.environ else 1):
9092
scene.step()
9193

9294
# grasp
9395
franka.control_dofs_position(qpos[:-2], motors_dof)
9496
franka.control_dofs_force(np.array([-0.5, -0.5]), fingers_dof)
9597

96-
for i in range(100):
98+
for i in range(100 if "PYTEST_VERSION" not in os.environ else 1):
9799
scene.step()
98100

99101
# lift
@@ -104,5 +106,5 @@
104106
)
105107
print(qpos)
106108
franka.control_dofs_position(qpos[:-2], motors_dof)
107-
for i in range(200):
109+
for i in range(200 if "PYTEST_VERSION" not in os.environ else 1):
108110
scene.step()

examples/tutorials/advanced_IK_multilink.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
import os
12
import numpy as np
2-
33
import genesis as gs
44

55
########################## init ##########################
@@ -53,7 +53,8 @@
5353
left_finger = robot.get_link("left_finger")
5454
right_finger = robot.get_link("right_finger")
5555

56-
for i in range(0, 2000):
56+
horizon = 2000 if "PYTEST_VERSION" not in os.environ else 5
57+
for i in range(horizon):
5758
target_pos_left = center + np.array([np.cos(i / 360 * np.pi), np.sin(i / 360 * np.pi), 0]) * r
5859
target_pos_right = target_pos_left + np.array([0.0, 0.03, 0])
5960

examples/tutorials/advanced_hybrid_robot.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import os
2+
13
import numpy as np
24
import genesis as gs
35

@@ -77,15 +79,9 @@
7779
scene.build()
7880

7981
########################## run ##########################
82+
horizon = 1000 if "PYTEST_VERSION" not in os.environ else 5
8083
scene.reset()
81-
for i in range(1000):
82-
dofs_ctrl = np.array(
83-
[
84-
1.0 * np.sin(2 * np.pi * i * 0.001),
85-
]
86-
* robot.n_dofs
87-
)
88-
84+
for i in range(horizon):
85+
dofs_ctrl = [1.0 * np.sin(2 * np.pi * i * 0.001)] * robot.n_dofs
8986
robot.control_dofs_velocity(dofs_ctrl)
90-
9187
scene.step()

examples/tutorials/advanced_muscle.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import os
12
import numpy as np
23
import genesis as gs
34

@@ -68,10 +69,10 @@
6869
scene.build(n_envs=2)
6970

7071
########################## run ##########################
72+
horizon = 1000 if "PYTEST_VERSION" not in os.environ else 5
7173
scene.reset()
72-
for i in range(1000):
73-
actu = np.array([0.2 * (0.5 + np.sin(0.01 * np.pi * i))])
74-
74+
for i in range(horizon):
75+
actu = [0.2 * (0.5 + np.sin(0.01 * np.pi * i))]
7576
robot_mpm.set_actuation(actu)
7677
robot_fem.set_actuation(actu)
7778
scene.step()

examples/tutorials/advanced_worm.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import math
2-
2+
import os
33
import torch
44
import genesis as gs
55

@@ -72,7 +72,7 @@
7272
else:
7373
raise NotImplementedError
7474

75-
pos_max, pos_min = pos.max(dim=0), pos.min(dim=0)
75+
pos_max, pos_min = pos.max(dim=0).values, pos.min(dim=0).values
7676
pos_range = pos_max - pos_min
7777

7878
lu_thr, fh_thr = 0.3, 0.6
@@ -93,8 +93,9 @@
9393

9494

9595
########################## run ##########################
96+
horizon = 1000 if "PYTEST_VERSION" not in os.environ else 5
9697
scene.reset()
97-
for i in range(1000):
98+
for i in range(horizon):
9899
actu = (0.0, 0.0, 0.0, 1.0 * (0.5 + math.sin(0.005 * math.pi * i)))
99100
worm.set_actuation(actu)
100101
scene.step()

examples/tutorials/batched_IK.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
import os
12
import numpy as np
2-
33
import genesis as gs
44

55
########################## init ##########################
@@ -34,10 +34,10 @@
3434
center = np.tile(np.array([0.4, -0.2, 0.25]), [n_envs, 1])
3535
angular_speed = np.random.uniform(-10, 10, n_envs)
3636
r = 0.1
37-
3837
ee_link = robot.get_link("hand")
3938

40-
for i in range(0, 1000):
39+
horizon = 1000 if "PYTEST_VERSION" not in os.environ else 5
40+
for i in range(horizon):
4141
target_pos = np.zeros([n_envs, 3])
4242
target_pos[:, 0] = center[:, 0] + np.cos(i / 360 * np.pi * angular_speed) * r
4343
target_pos[:, 1] = center[:, 1] + np.sin(i / 360 * np.pi * angular_speed) * r

0 commit comments

Comments
 (0)