更新了部分动作节点

This commit is contained in:
Caiyishuai 2023-11-13 22:14:55 +08:00
parent d5f8c289bf
commit 0284830b0a
8 changed files with 29 additions and 66 deletions

View File

@ -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):

View File

@ -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:

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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)