From 0284830b0acdc6f55133fe1c4be3ec284ff9b63f Mon Sep 17 00:00:00 2001 From: Caiyishuai <39987654+Caiyishuai@users.noreply.github.com> Date: Mon, 13 Nov 2023 22:14:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=86=E9=83=A8=E5=88=86?= =?UTF-8?q?=E5=8A=A8=E4=BD=9C=E8=8A=82=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- robowaiter/behavior_lib/_base/Act.py | 4 ++++ robowaiter/behavior_lib/_base/Behavior.py | 1 + robowaiter/behavior_lib/act/Make.py | 17 +++++++++++------ robowaiter/behavior_lib/act/MakeCoffee.py | 23 ----------------------- robowaiter/behavior_lib/act/MoveTo.py | 12 +++++------- robowaiter/behavior_lib/act/PourWater.py | 23 ----------------------- robowaiter/scene/scene.py | 5 +++-- robowaiter/scene/tasks/VLM.py | 10 +++++----- 8 files changed, 29 insertions(+), 66 deletions(-) delete mode 100644 robowaiter/behavior_lib/act/MakeCoffee.py delete mode 100644 robowaiter/behavior_lib/act/PourWater.py diff --git a/robowaiter/behavior_lib/_base/Act.py b/robowaiter/behavior_lib/_base/Act.py index ee948d5..d2e95e5 100644 --- a/robowaiter/behavior_lib/_base/Act.py +++ b/robowaiter/behavior_lib/_base/Act.py @@ -3,9 +3,13 @@ from robowaiter.behavior_lib._base.Behavior import Bahavior class Act(Bahavior): print_name_prefix = "act " type = 'Act' + all_place = {'Bar', 'WaterTable', 'CoffeeTable', 'Bar2', 'Table1', 'Table2', 'Table3'} + all_object = {'Coffee', 'Water', 'Dessert', 'Softdrink', 'BottledDrink', 'Yogurt', 'ADMilk', 'MilkDrink', 'Milk', + 'VacuumCup'} def __init__(self,*args): super().__init__(*args) + self.info = self.get_info(*args) @classmethod def get_info(self,*arg): diff --git a/robowaiter/behavior_lib/_base/Behavior.py b/robowaiter/behavior_lib/_base/Behavior.py index 84ed74b..b80c634 100644 --- a/robowaiter/behavior_lib/_base/Behavior.py +++ b/robowaiter/behavior_lib/_base/Behavior.py @@ -35,6 +35,7 @@ class Bahavior(ptree.behaviour.Behaviour): # self.valid_arg_list.append((x.strip for x in line.split(","))) self.args = args + super().__init__(self.name) def _update(self) -> ptree.common.Status: diff --git a/robowaiter/behavior_lib/act/Make.py b/robowaiter/behavior_lib/act/Make.py index 8388cc2..ecb99f6 100644 --- a/robowaiter/behavior_lib/act/Make.py +++ b/robowaiter/behavior_lib/act/Make.py @@ -7,7 +7,7 @@ class Make(Act): can_be_expanded = True num_args = 1 valid_args = ( - "Coffee", + "Coffee","Water","Dessert" ) def __init__(self, *args): @@ -17,15 +17,20 @@ class Make(Act): @classmethod def get_info(cls,arg): - info = None + info = {} + info["pre"]= {f'Holding(Nothing)'} + info['del'] = set() if arg == "Coffee": - info = { - "add": {f'On(Coffee,Table)'}, - } + info["add"]= {f'On(Coffee,CoffeeTable)'} + elif arg == "Water": + info["add"] = {f'On(Water,WaterTable)'} + elif arg == "Dessert": + info["add"] = {f'On(Dessert,Bar)'} return info def _update(self) -> ptree.common.Status: op_type = 1 self.scene.move_task_area(op_type) self.scene.op_task_execute(op_type) - self.scene.state["condition_set"].add(self.add) + self.scene.state["condition_set"].union(self.info["add"]) + self.scene.state["condition_set"] -= self.info["del"] return Status.RUNNING \ No newline at end of file diff --git a/robowaiter/behavior_lib/act/MakeCoffee.py b/robowaiter/behavior_lib/act/MakeCoffee.py deleted file mode 100644 index b14727f..0000000 --- a/robowaiter/behavior_lib/act/MakeCoffee.py +++ /dev/null @@ -1,23 +0,0 @@ -import py_trees as ptree -from typing import Any -from robowaiter.behavior_lib._base.Act import Act -from robowaiter.behavior_lib._base.Behavior import Status - -class MakeCoffee(Act): - - def __init__(self, *args): - super().__init__(*args) - - @property - def cond_sets(self): - pre = {"At(Robot,CoffeeMachine)","NotHolding"} - add = {"At(Coffee,Bar)"} - de = {} - return pre,add,de - - def _update(self) -> ptree.common.Status: - op_type = 1 - self.scene.move_task_area(op_type) - self.scene.op_task_execute(op_type) - self.scene.state["condition_set"].add(self.add) - return Status.RUNNING \ No newline at end of file diff --git a/robowaiter/behavior_lib/act/MoveTo.py b/robowaiter/behavior_lib/act/MoveTo.py index 000869d..2a1a78a 100644 --- a/robowaiter/behavior_lib/act/MoveTo.py +++ b/robowaiter/behavior_lib/act/MoveTo.py @@ -6,10 +6,8 @@ from robowaiter.algos.navigate.DstarLite.navigate import Navigator class MoveTo(Act): can_be_expanded = True num_args = 1 - valid_args = ( - "Bar", - "Table", - ) + valid_args = Act.all_object | Act.all_place + valid_args.add('Customer') def __init__(self, target_place): super().__init__(target_place) @@ -18,9 +16,9 @@ class MoveTo(Act): @classmethod def get_info(self,arg): - info = { - "add": {f'At(Robot,{arg})'}, - } + info = {} + info["add"] = {f'At(Robot,{arg})'} + info["del"] = {f'At(Robot,{place})' for place in self.valid_args if place != arg} return info diff --git a/robowaiter/behavior_lib/act/PourWater.py b/robowaiter/behavior_lib/act/PourWater.py deleted file mode 100644 index 23db1fe..0000000 --- a/robowaiter/behavior_lib/act/PourWater.py +++ /dev/null @@ -1,23 +0,0 @@ -import py_trees as ptree -from typing import Any -from robowaiter.behavior_lib._base.Act import Act -from robowaiter.behavior_lib._base.Behavior import Status - -class PourWater(Act): - - def __init__(self, *args): - super().__init__(*args) - - @property - def cond_sets(self): - self.pre = {"At(Robot,WaterTable)","NotHolding"} - self.add = {"On(Water,WaterTable)"} - self.de = {} - return self.pre,self.add,self.de - - def _update(self) -> ptree.common.Status: - op_type = 2 - self.scene.move_task_area(op_type) - self.scene.op_task_execute(op_type) - self.scene.state["condition_set"].update(self.add) - return Status.RUNNING \ No newline at end of file diff --git a/robowaiter/scene/scene.py b/robowaiter/scene/scene.py index b3819b1..b0db6e9 100644 --- a/robowaiter/scene/scene.py +++ b/robowaiter/scene/scene.py @@ -409,10 +409,11 @@ class Scene: return True def gen_obj(self,h=100): - # 4;冰红(盒) 5;酸奶 7:保温杯 9;冰红(瓶) 13:代语词典 + # 4;冰红(盒) 5;酸奶 7:保温杯 9;冰红(瓶) 13:代语词典 14:cake 61:甜牛奶 + type= 9 #9 scene = stub.Observe(GrabSim_pb2.SceneID(value=self.sceneID)) ginger_loc = [scene.location.X, scene.location.Y, scene.location.Z] - obj_list = [GrabSim_pb2.ObjectList.Object(x=ginger_loc[0] - 50, y=ginger_loc[1] - 40, z = h, roll=0, pitch=0, yaw=0, type=9)] + obj_list = [GrabSim_pb2.ObjectList.Object(x=ginger_loc[0] - 50, y=ginger_loc[1] - 40, z = h, roll=0, pitch=0, yaw=0, type=type)] scene = stub.AddObjects(GrabSim_pb2.ObjectList(objects=obj_list, scene=self.sceneID)) time.sleep(1.0) diff --git a/robowaiter/scene/tasks/VLM.py b/robowaiter/scene/tasks/VLM.py index 9b4c5cb..d8e646f 100644 --- a/robowaiter/scene/tasks/VLM.py +++ b/robowaiter/scene/tasks/VLM.py @@ -11,14 +11,14 @@ class SceneVLM(Scene): super().__init__(robot) # 在这里加入场景中发生的事件, (事件发生的时间,事件函数) self.event_list = [ - # (5, self.create_chat_event("测试VLM:做一杯咖啡")), - (5, self.create_chat_event("测试VLM:倒一杯水")), + (5, self.create_chat_event("测试VLM:做一杯咖啡")), + # (5, self.create_chat_event("测试VLM:倒一杯水")), ] def _reset(self): pass - def _run(self, op_type=2): + def _run(self, op_type=7): # 共17个操作 # "制作咖啡","倒水","夹点心","拖地","擦桌子","开筒灯","搬椅子", # 1-7 # "关筒灯","开大厅灯","关大厅灯","关闭窗帘","打开窗帘", # 8-12 @@ -30,8 +30,8 @@ class SceneVLM(Scene): # self.gen_obj() # self.op_task_execute(op_type, obj_id=0) # # 原始吧台处:[247.0, 520.0, 100.0], 空调开关旁吧台:[240.0, 40.0, 70.0], 水杯桌:[-70.0, 500.0, 107] - # # 桌子1:[-55.0, 0.0, 107],桌子1:[-55.0, 150.0, 107] - # elif op_type == 17: self.op_task_execute(op_type, release_pos=[-55.0, 150.0, 107]) + # # 桌子1:[-55.0, 0.0, 107],桌子2:[-55.0, 150.0, 107] + # elif op_type == 17: self.op_task_execute(op_type, release_pos=[247.0, 520.0, 100.0])#[-55.0, 150.0, 107] # else: # self.move_task_area(op_type) # self.op_task_execute(op_type)