Timsty's picture
Add files using upload-large-folder tool
e479c46 verified
Raw
History Blame Contribute Delete
5.01 kB
import argparse
import numpy as np
from sapien.core import Pose
from transforms3d.euler import euler2quat
from simpler_env.utils.io import DictAction
def parse_range_tuple(t):
return np.linspace(t[0], t[1], int(t[2]))
def get_args():
# parse command-line arguments
parser = argparse.ArgumentParser()
parser.add_argument(
"--policy-model",
type=str,
default="rt1",
help="Policy model type; e.g., 'rt1', 'octo-base', 'octo-small'",
)
parser.add_argument(
"--policy-setup",
type=str,
default="google_robot",
help="Policy model setup; e.g., 'google_robot', 'widowx_bridge'",
)
parser.add_argument("--ckpt-path", type=str, default=None)
parser.add_argument("--env-name", type=str, required=True)
parser.add_argument(
"--additional-env-save-tags",
type=str,
default=None,
help="Additional tags to save the environment eval results",
)
parser.add_argument("--scene-name", type=str, default="google_pick_coke_can_1_v4")
parser.add_argument("--enable-raytracing", action="store_true")
parser.add_argument("--robot", type=str, default="google_robot_static")
parser.add_argument(
"--obs-camera-name",
type=str,
default=None,
help="Obtain image observation from this camera for policy input. None = default",
)
parser.add_argument("--action-scale", type=float, default=1.0)
parser.add_argument("--control-freq", type=int, default=3)
parser.add_argument("--sim-freq", type=int, default=513)
parser.add_argument("--max-episode-steps", type=int, default=80)
parser.add_argument("--rgb-overlay-path", type=str, default=None)
parser.add_argument(
"--robot-init-x-range",
type=float,
nargs=3,
default=[0.35, 0.35, 1],
help="[xmin, xmax, num]",
)
parser.add_argument(
"--robot-init-y-range",
type=float,
nargs=3,
default=[0.20, 0.20, 1],
help="[ymin, ymax, num]",
)
parser.add_argument(
"--robot-init-rot-quat-center",
type=float,
nargs=4,
default=[1, 0, 0, 0],
help="[x, y, z, w]",
)
parser.add_argument(
"--robot-init-rot-rpy-range",
type=float,
nargs=9,
default=[0, 0, 1, 0, 0, 1, 0, 0, 1],
help="[rmin, rmax, rnum, pmin, pmax, pnum, ymin, ymax, ynum]",
)
parser.add_argument(
"--obj-variation-mode",
type=str,
default="xy",
choices=["xy", "episode"],
help="Whether to vary the xy position of a single object, or to vary predetermined episodes",
)
parser.add_argument("--obj-episode-range", type=int, nargs=2, default=[0, 60], help="[start, end]")
parser.add_argument(
"--obj-init-x-range",
type=float,
nargs=3,
default=[-0.35, -0.12, 5],
help="[xmin, xmax, num]",
)
parser.add_argument(
"--obj-init-y-range",
type=float,
nargs=3,
default=[-0.02, 0.42, 5],
help="[ymin, ymax, num]",
)
parser.add_argument(
"--additional-env-build-kwargs",
nargs="+",
action=DictAction,
help="Additional env build kwargs in xxx=yyy format. If the value "
'is a list, it should be like key="[a,b]" or key=a,b '
'It also allows nested list/tuple values, e.g. key="[(a,b),(c,d)]" '
"Note that the quotation marks are necessary and that no white space "
"is allowed.",
)
parser.add_argument("--logging-dir", type=str, default="./results")
parser.add_argument("--tf-memory-limit", type=int, default=3072, help="Tensorflow memory limit")
parser.add_argument("--octo-init-rng", type=int, default=0, help="Octo init rng seed")
args = parser.parse_args()
# env args: robot pose
args.robot_init_xs = parse_range_tuple(args.robot_init_x_range)
args.robot_init_ys = parse_range_tuple(args.robot_init_y_range)
args.robot_init_quats = []
for r in parse_range_tuple(args.robot_init_rot_rpy_range[:3]):
for p in parse_range_tuple(args.robot_init_rot_rpy_range[3:6]):
for y in parse_range_tuple(args.robot_init_rot_rpy_range[6:]):
args.robot_init_quats.append((Pose(q=euler2quat(r, p, y)) * Pose(q=args.robot_init_rot_quat_center)).q)
# env args: object position
if args.obj_variation_mode == "xy":
args.obj_init_xs = parse_range_tuple(args.obj_init_x_range)
args.obj_init_ys = parse_range_tuple(args.obj_init_y_range)
# update logging info (args.additional_env_save_tags) if using a different camera from default
if args.obs_camera_name is not None:
if args.additional_env_save_tags is None:
args.additional_env_save_tags = f"obs_camera_{args.obs_camera_name}"
else:
args.additional_env_save_tags = args.additional_env_save_tags + f"_obs_camera_{args.obs_camera_name}"
return args