From a538a4bb1df01d92788911fd27c0e19bcb944a1a Mon Sep 17 00:00:00 2001 From: Masataro Asai Date: Thu, 25 Nov 2021 10:19:52 -0500 Subject: [PATCH] [grippers] rewritten in python --- grippers/README | 20 +++++++++++++++ grippers/gripper.py | 60 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 grippers/README create mode 100755 grippers/gripper.py diff --git a/grippers/README b/grippers/README new file mode 100644 index 00000000..b36e353f --- /dev/null +++ b/grippers/README @@ -0,0 +1,20 @@ + +# Grippers (python) + +usage: gripper.py [-h] [--seed SEED] balls robots grippers rooms + +positional arguments: + balls the number of balls + robots the number of robots + grippers the number of grippers per robot + rooms the number of rooms + +optional arguments: + -h, --help show this help message and exit + --seed SEED, -s SEED random seed + + +# Grippers (C language) + + +This version is equivalent to the python version with 2 grippers per robot. diff --git a/grippers/gripper.py b/grippers/gripper.py new file mode 100755 index 00000000..4e883857 --- /dev/null +++ b/grippers/gripper.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python + +import argparse +import random + +parser = argparse.ArgumentParser() + +parser.add_argument("balls", type=int, help="the number of balls") +parser.add_argument("robots", type=int, help="the number of robots") +parser.add_argument("grippers", type=int, help="the number of grippers per robot") +parser.add_argument("rooms", type=int, help="the number of rooms") +parser.add_argument("--seed", "-s", type=int, help="random seed") + +args = parser.parse_args() + +random.seed(args.seed) + +robots = [f"robot{i}" for i in range(args.robots)] +rooms = [f"room{i}" for i in range(args.rooms)] +grippers = [f"gripper{i}" for i in range(args.grippers)] +balls = [f"ball{i}" for i in range(args.balls)] + + + +def init(): + facts = [f"(free {r} {g})" + for r in robots + for g in grippers] + + for ball in balls: + room = random.choice(rooms) + facts.append(f"(at {ball} {room})") + for robot in robots: + room = random.choice(rooms) + facts.append(f"(at-robby {robot} {room})") + + return " ".join(facts) + + +def goal(): + facts = [] + + for ball in balls: + room = random.choice(rooms) + facts.append(f"(at {ball} {room})") + + return " ".join(facts) + + +print("(define (problem gripper)") +print(" (:domain gripper-ex-typed)") +print(" (:objects " + + " ".join( + robots + ["-", "robot"] + + rooms + ["-", "room"] + + grippers + ["-", "gripper"] + + balls + ["-", "ball"]) + + ")") +print(" (:init " + init() + ")") +print(" (:goal (and " + goal() + ")))")