更新BT扩展算法的合并算法
|
@ -19,12 +19,12 @@ class Bahavior(ptree.behaviour.Behaviour):
|
|||
'Coffee', 'Water', 'Dessert', 'Softdrink', 'BottledDrink', 'Yogurt', 'ADMilk', 'MilkDrink', 'Milk','VacuumCup',
|
||||
'Chips', 'NFCJuice', 'Bernachon', 'ADMilk', 'SpringWater'}
|
||||
tables_for_guiding = {"QuietTable1","QuietTable2",
|
||||
"BrightTable1","BrightTable2","BrightTable3","BrightTable4","BrightTable5","BrightTable6"
|
||||
"BrightTable1","BrightTable2","BrightTable3","BrightTable4","BrightTable5","BrightTable6",
|
||||
'CoffeeTable','WaterTable','Table1', 'Table2', 'Table3'}
|
||||
|
||||
|
||||
# tables_for_placement = {'Bar', 'WaterTable', 'CoffeeTable'}
|
||||
# all_object = {'Coffee', 'Water', 'Dessert', 'Softdrink', 'Yogurt'}
|
||||
# tables_for_placement = {'Bar', 'CoffeeTable', 'Table2',"BrightTable6", 'WaterTable'}
|
||||
# all_object = {'Coffee'}
|
||||
|
||||
|
||||
num_of_obj_on_place={
|
||||
|
|
|
@ -21,7 +21,7 @@ class MoveTo(Act):
|
|||
info['pre'] |= {f'Exist({arg})'}
|
||||
info["add"] = {f'At(Robot,{arg})'}
|
||||
info["del_set"] = {f'At(Robot,{place})' for place in cls.valid_args if place != arg}
|
||||
info['cost'] = 5
|
||||
info['cost'] = 10
|
||||
# if arg!='Anything':
|
||||
# info['cost']=5
|
||||
# else:
|
||||
|
|
|
@ -18,7 +18,7 @@ class PickUp(Act):
|
|||
info = {}
|
||||
info["pre"] = {f'At(Robot,{arg})','Holding(Nothing)'}
|
||||
info["add"] = {f'Holding({arg})'}
|
||||
info["del_set"] = {f'Holding(Nothing)'}
|
||||
info["del_set"] = {f'Holding(Nothing)',f'Exist({arg})'} #,
|
||||
for place in cls.valid_args:
|
||||
info["del_set"] |= {f'On({arg},{place})'}
|
||||
info['cost'] = 2
|
||||
|
|
|
@ -84,6 +84,7 @@ class OptBTExpAlgorithm:
|
|||
self.conditions_index=[]
|
||||
self.verbose=verbose
|
||||
self.goal=None
|
||||
self.bt_merge = True
|
||||
|
||||
def clear(self):
|
||||
self.bt = None
|
||||
|
@ -169,7 +170,8 @@ class OptBTExpAlgorithm:
|
|||
# 增加实时条件判断,满足条件就不再扩展
|
||||
# if c <= self.scene.state["condition_set"]:
|
||||
if c <= start:
|
||||
self.merge_adjacent_conditions_stack()
|
||||
if self.bt_merge:
|
||||
self.merge_adjacent_conditions_stack()
|
||||
return True
|
||||
else:
|
||||
subtree.add_child([copy.deepcopy(pair_node.act_leaf)])
|
||||
|
@ -215,12 +217,96 @@ class OptBTExpAlgorithm:
|
|||
# 把符合条件的动作节点都放到列表里
|
||||
if self.verbose:
|
||||
print("———— -- %s 符合条件放入列表,对应的c为 %s" % (actions[i].name,c_attr))
|
||||
self.merge_adjacent_conditions_stack()
|
||||
if self.bt_merge:
|
||||
self.merge_adjacent_conditions_stack()
|
||||
if self.verbose:
|
||||
print("算法结束!\n")
|
||||
return True
|
||||
|
||||
def merge_adjacent_conditions_stack(self):
|
||||
# 只针对第一层合并,之后要考虑层层递归合并
|
||||
bt = ControlBT(type='cond')
|
||||
sbtree = ControlBT(type='?')
|
||||
gc_node = Leaf(type='cond', content=self.goal, mincost=0) # 为了统一,都成对出现
|
||||
sbtree.add_child([copy.deepcopy(gc_node)]) # 子树首先保留所扩展结
|
||||
bt.add_child([sbtree])
|
||||
|
||||
parnode = copy.deepcopy(self.bt.children[0])
|
||||
|
||||
stack=[]
|
||||
|
||||
for child in parnode.children:
|
||||
|
||||
if isinstance(child, ControlBT) and child.type == '>':
|
||||
|
||||
if stack==[]:
|
||||
stack.append(child)
|
||||
continue
|
||||
|
||||
# 检查合并的条件,前面一个的条件包含了后面的条件,把包含部分提取出来
|
||||
last_child = stack[-1]
|
||||
set1 = last_child.children[0].content
|
||||
set2 = child.children[0].content
|
||||
|
||||
# 如果后面的动作和前面的一样,删掉前面的
|
||||
# 应该是两棵子树完全相同的情况,先暂时只判断动作
|
||||
if set1>=set2 or set1<=set2:
|
||||
if isinstance(last_child.children[1], Leaf) and isinstance(child.children[1], Leaf): # 将来这些地方都写成递归的
|
||||
if last_child.children[1].content.name == child.children[1].content.name: # a1=a2
|
||||
stack.pop()
|
||||
stack.append(child)
|
||||
continue
|
||||
|
||||
inter = set1 & set2
|
||||
if inter!=set():
|
||||
c1 = set1-set2
|
||||
c2 = set2-set1
|
||||
|
||||
if c1!=set():
|
||||
seq1 = ControlBT(type='>')
|
||||
c1 = Leaf(type='cond', content=c1)
|
||||
a1 = copy.deepcopy(last_child.children[1])
|
||||
seq1.add_child(
|
||||
[copy.deepcopy(c1), copy.deepcopy(a1)])
|
||||
else:
|
||||
seq1 = copy.deepcopy(last_child.children[1])
|
||||
|
||||
if c2!=set():
|
||||
seq2 = ControlBT(type='>')
|
||||
c2 = Leaf(type='cond', content=c2)
|
||||
a2 = copy.deepcopy(child.children[1])
|
||||
seq2.add_child(
|
||||
[copy.deepcopy(c2), copy.deepcopy(a2)])
|
||||
else:
|
||||
seq2 = copy.deepcopy(child.children[1])
|
||||
|
||||
|
||||
sel = ControlBT(type='?')
|
||||
|
||||
if isinstance(last_child.children[1], Leaf) and isinstance(child.children[1], Leaf) \
|
||||
and last_child.children[1].content.name == child.children[1].content.name: # a1=a2
|
||||
# 第三次优化合并
|
||||
# 将来这些地方都写成递归的
|
||||
sel.add_child([copy.deepcopy(c1), copy.deepcopy(c2),copy.deepcopy(last_child.children[1])])
|
||||
else:
|
||||
sel.add_child([copy.deepcopy(seq1), copy.deepcopy(seq2)])
|
||||
|
||||
|
||||
tmp_tree = ControlBT(type='>')
|
||||
c1 = Leaf(type='cond', content=inter)
|
||||
tmp_tree.add_child(
|
||||
[copy.deepcopy(c1), copy.deepcopy(sel)])
|
||||
|
||||
stack.pop()
|
||||
stack.append(tmp_tree)
|
||||
else:
|
||||
stack.append(child)
|
||||
|
||||
for tree in stack:
|
||||
sbtree.add_child([tree])
|
||||
self.bt = copy.deepcopy(bt)
|
||||
|
||||
def merge_adjacent_conditions_stack_old(self):
|
||||
# 递归合并
|
||||
bt = ControlBT(type='cond')
|
||||
sbtree = ControlBT(type='?')
|
||||
|
@ -274,7 +360,6 @@ class OptBTExpAlgorithm:
|
|||
sbtree.add_child([tree])
|
||||
self.bt = copy.deepcopy(bt)
|
||||
|
||||
|
||||
def merge_cond_node(self):
|
||||
# bt合并====================================================
|
||||
bt = ControlBT(type='cond')
|
||||
|
|
|
@ -254,6 +254,27 @@ create_sub_task
|
|||
create_sub_task
|
||||
{"goal":"On(Dessert,Bar)"}
|
||||
|
||||
把咖啡放到吧台上
|
||||
好的
|
||||
create_sub_task
|
||||
{"goal":"On(Coffee,Bar)"}
|
||||
|
||||
把咖啡放到水桌
|
||||
好的
|
||||
create_sub_task
|
||||
{"goal":"On(Coffee,Bar)"}
|
||||
|
||||
把咖啡放到6号桌
|
||||
好的
|
||||
create_sub_task
|
||||
{"goal":"On(Coffee,BrightTable6)"}
|
||||
|
||||
把咖啡放到吧台上,再拿一杯咖啡放到6号桌
|
||||
好的
|
||||
create_sub_task
|
||||
{"goal":"On(Coffee,WaterTable),On(Coffee,BrightTable6)"}
|
||||
|
||||
|
||||
打开空调并降低空调温度
|
||||
好的,没问题
|
||||
create_sub_task
|
||||
|
|
|
@ -19,7 +19,8 @@ def single_round(question, prefix=""):
|
|||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
"content": "你是一个机器人服务员:RoboWaiter. 你的职责是为顾客提供对话及具身服务。"
|
||||
# "content": "你是一个机器人服务员:RoboWaiter. 你的职责是为顾客提供对话及具身服务。"
|
||||
"content": ""
|
||||
# "content":
|
||||
# """
|
||||
# 你是一个熟悉行为树的工程师,你的职责是根据用户需求,为一个人型的机器人设计完成用户需求的行为树序列。
|
||||
|
@ -46,10 +47,165 @@ def single_round(question, prefix=""):
|
|||
|
||||
if __name__ == '__main__':
|
||||
question = '''
|
||||
嘿!能做一杯咖啡吗?咖啡就行!
|
||||
from actions import MoveTo (<obj>/<place>), PickUp (<obj>), PutDown (<obj>,<place>), PutDown(Anything,Anywhere), Make (<obj2>), Clean (<obj3>), Turn (<obj4>,<obj4state>)
|
||||
from states import At (Robor,<obj>/<place>), On (<obj>,<place>), Holding (<obj>), Is (<obj4>,<obj4state>), Exist (<obj>)
|
||||
|
||||
obj=['Coffee', 'Water', 'Dessert', 'Softdrink', 'BottledDrink', 'Yogurt', 'ADMilk', 'MilkDrink', 'Milk','VacuumCup','Chips', 'NFCJuice', 'Bernachon', 'ADMilk', 'SpringWater']
|
||||
place=['Bar', 'Bar2', 'WaterTable', 'CoffeeTable', 'Table1', 'Table2', 'Table3','BrightTable6']
|
||||
obj2=['Coffee', 'Water', 'Dessert']
|
||||
obj3=['Table1','Floor','Chairs']
|
||||
obj4=['AC','TubeLight','HallLight','Curtain','ACTemperature']
|
||||
obj4state=['On','Off','Up','Down']
|
||||
|
||||
currents_state={'At(Robot,Bar)', 'Is(AC,Off)',
|
||||
'Exist(Yogurt)', 'Exist(BottledDrink)','Exist(Softdrink)','Exist(VacuumCup)',
|
||||
'Holding(Coffee)',
|
||||
'On(VacuumCup,Table2)', 'On(Yogurt,Bar)', 'On(BottledDrink,Bar)', 'On(Softdrink,Table1)',
|
||||
'Is(HallLight,Off)', 'Is(TubeLight,On)', 'Is(Curtain,On)',
|
||||
'Is(Table1,Dirty)', 'Is(Floor,Dirty)', 'Is(Chairs,Dirty)'}
|
||||
def Put_SoftDrink_on_WaterTable(currents_state):
|
||||
selector
|
||||
cond On(Softdrink,WaterTable)
|
||||
sequence
|
||||
cond Holding(Softdrink)
|
||||
selector
|
||||
sequence
|
||||
cond At(Robot,WaterTable)
|
||||
act PutDown(Softdrink,WaterTable)
|
||||
act MoveTo(WaterTable)
|
||||
sequence
|
||||
cond At(Robot,Softdrink)
|
||||
selector
|
||||
sequence
|
||||
cond Holding(Nothing)
|
||||
act PickUp(Softdrink)
|
||||
act PutDown(Anything,Anywhere)
|
||||
sequence
|
||||
cond Exist(Softdrink)
|
||||
act MoveTo(Softdrink)
|
||||
|
||||
|
||||
currents_state={'At(Robot,Bar)', 'Is(AC,On)',
|
||||
'Exist(Yogurt)', 'Exist(BottledDrink)',
|
||||
'Exist(Chips)', 'Exist(VacuumCup)', 'Exist(ADMilk)',
|
||||
'Holding(Nothing)',
|
||||
'On(VacuumCup,Table2)', 'On(Chips,Bar)','On(ADMilk,Bar)',
|
||||
'Is(HallLight,Off)', 'Is(TubeLight,On)', 'Is(Curtain,On)',
|
||||
'Is(Table1,Dirty)', 'Is(Floor,Dirty)', 'Is(Chairs,Dirty)'}
|
||||
def Put_Dessert_on_Bar(currents_state):
|
||||
selector
|
||||
cond On(Dessert,Bar)
|
||||
sequence
|
||||
cond Holding(Nothing)
|
||||
act Make(Dessert)
|
||||
|
||||
|
||||
currents_state={'At(Robot,Bar)', 'Is(AC,Off)',
|
||||
'Exist(VacuumCup)','Exist(Coffee)',
|
||||
'On(VacuumCup,Table2)', 'On(Coffee,CoffeeTable)',
|
||||
'Holding(Nothing)',
|
||||
'Is(HallLight,Off)', 'Is(TubeLight,On)', 'Is(Curtain,On)',
|
||||
'Is(Table1,Dirty)', 'Is(Floor,Dirty)', 'Is(Chairs,Dirty)'}
|
||||
def Put_Coffee_on_Bar(currents_state):
|
||||
selector
|
||||
cond On(Coffee,Bar)
|
||||
sequence
|
||||
cond Holding(Coffee)
|
||||
selector
|
||||
sequence
|
||||
cond At(Robot,Bar)
|
||||
act PutDown(Coffee,Bar)
|
||||
act MoveTo(Bar)
|
||||
sequence
|
||||
cond At(Robot,Coffee)
|
||||
selector
|
||||
sequence
|
||||
cond Holding(Nothing)
|
||||
act PickUp(Coffee)
|
||||
act PutDown(Anything,Anywhere)
|
||||
sequence
|
||||
cond Exist(Coffee)
|
||||
cond Holding(Nothing)
|
||||
act MoveTo(Coffee)
|
||||
|
||||
currents_state={'At(Robot,Bar)', 'Is(AC,Off)',
|
||||
'Exist(VacuumCup)', 'Exist(Yogurt)',
|
||||
'On(VacuumCup,Table2)',
|
||||
'Holding(Yogurt)',
|
||||
'Is(HallLight,Off)', 'Is(TubeLight,On)', 'Is(Curtain,On)',
|
||||
'Is(Table1,Dirty)', 'Is(Floor,Dirty)', 'Is(Chairs,Dirty)'}
|
||||
def Put_Coffee_on_Bar(currents_state):
|
||||
selector
|
||||
cond On(Coffee,Bar)
|
||||
sequence
|
||||
cond Holding(Coffee)
|
||||
selector
|
||||
sequence
|
||||
cond At(Robot,Bar)
|
||||
act PutDown(Coffee,Bar)
|
||||
act MoveTo(Bar)
|
||||
sequence
|
||||
cond At(Robot,Coffee)
|
||||
selector
|
||||
sequence
|
||||
cond Holding(Nothing)
|
||||
act PickUp(Coffee)
|
||||
act PutDown(Anything,Anywhere)
|
||||
sequence
|
||||
cond Exist(Coffee)
|
||||
act MoveTo(Coffee)
|
||||
sequence
|
||||
cond Holding(Nothing)
|
||||
act Make(Coffee)
|
||||
sequence
|
||||
cond At(Robot,Bar)
|
||||
cond Holding(Yogurt)
|
||||
act PutDown(Yogurt,Bar)
|
||||
|
||||
|
||||
currents_state={'At(Robot,Bar)', 'Is(AC,Off)',
|
||||
'Exist(Yogurt)', 'Exist(BottledDrink)','Exist(Softdrink)',
|
||||
'Exist(Chips)', 'Exist(NFCJuice)', 'Exist(Bernachon)', 'Exist(ADMilk)', 'Exist(SpringWater)',
|
||||
'Holding(Softdrink)',
|
||||
'Exist(VacuumCup)', 'On(VacuumCup,Table2)',
|
||||
'Is(HallLight,Off)', 'Is(TubeLight,On)', 'Is(Curtain,On)',
|
||||
'Is(Table1,Clean)', 'Is(Floor,Clean)', 'Is(Chairs,Clean)'}
|
||||
def Turn_AC_Temperature_Down(currents_state):
|
||||
selector
|
||||
cond Is(ACTemperature,Down)
|
||||
sequence
|
||||
cond Is(AC,On)
|
||||
selector
|
||||
sequence
|
||||
cond Holding(Nothing)
|
||||
act Turn(ACTemperature,Down)
|
||||
act PutDown(Anything,Anywhere)
|
||||
sequence
|
||||
cond Is(AC,Off)
|
||||
selector
|
||||
sequence
|
||||
cond Holding(Nothing)
|
||||
act Turn(AC,On)
|
||||
act PutDown(Anything,Anywhere)
|
||||
|
||||
|
||||
currents_state={'At(Robot,Bar)', 'Is(AC,Off)',
|
||||
'Exist(Yogurt)','Exist(VacuumCup)','Exist(Coffee)',
|
||||
'Holding(Nothing)',
|
||||
'On(Yogurt,Bar)','On(VacuumCup,Table2)','On(Coffee,CoffeeTable)',
|
||||
'Is(HallLight,Off)', 'Is(TubeLight,On)', 'Is(Curtain,On)',
|
||||
'Is(Table1,Dirty)', 'Is(Floor,Dirty)', 'Is(Chairs,Dirty)'}
|
||||
def Put_one_Coffee_on_WaterTable_and_Put_another_Coffee_on_BrightTable6
|
||||
(currents_state):
|
||||
|
||||
|
||||
Please write the content of this function based on the content of currents_state
|
||||
|
||||
Please write the content of this function based on the content of currents_state
|
||||
'''
|
||||
import timeit
|
||||
|
||||
cur_time = time.time()
|
||||
print(single_round(question, prefix='现在给出符合这句话要求的目标状态: '))
|
||||
print(single_round(question))
|
||||
# print(single_round(question, prefix='现在给出符合这句话要求的目标状态: '))
|
||||
print(f"单次生成耗时:{time.time() - cur_time} s \n")
|
||||
|
|
Before Width: | Height: | Size: 484 KiB After Width: | Height: | Size: 124 KiB |
Before Width: | Height: | Size: 638 KiB After Width: | Height: | Size: 20 KiB |
|
@ -214,19 +214,39 @@ class Scene:
|
|||
"chat_list": [], # 未处理的顾客的对话, (顾客的位置,顾客对话的内容)
|
||||
"sub_goal_list": [], # 子目标列表
|
||||
"status": None, # 仿真器中的观测信息,见下方详细解释
|
||||
# "condition_set": {'At(Robot,Bar)', 'Is(AC,Off)',
|
||||
# 'Exist(Yogurt)', 'Exist(BottledDrink)','Exist(Softdrink)',
|
||||
# # 'On(Yogurt,Bar)','On(BottledDrink,Bar)',
|
||||
# # 'Exist(Softdrink)', 'On(Softdrink,Table1)',
|
||||
# 'Exist(Chips)', 'Exist(NFCJuice)', 'Exist(Bernachon)', 'Exist(ADMilk)', 'Exist(SpringWater)'
|
||||
# 'Holding(Nothing)',
|
||||
# # 'Holding(Yogurt)',
|
||||
# 'Exist(VacuumCup)', 'On(VacuumCup,Table2)',
|
||||
# 'Is(HallLight,Off)', 'Is(TubeLight,On)', 'Is(Curtain,On)',
|
||||
# 'Is(Table1,Dirty)', 'Is(Floor,Dirty)', 'Is(Chairs,Dirty)'},
|
||||
|
||||
"condition_set": {'At(Robot,Bar)', 'Is(AC,Off)',
|
||||
'Exist(Yogurt)', 'Exist(BottledDrink)','Exist(Softdrink)',
|
||||
# 'On(Yogurt,Bar)','On(BottledDrink,Bar)',
|
||||
# 'Exist(Softdrink)', 'On(Softdrink,Table1)',
|
||||
'Exist(Chips)', 'Exist(NFCJuice)', 'Exist(Bernachon)', 'Exist(ADMilk)', 'Exist(SpringWater)',
|
||||
'Exist(Yogurt)','Exist(VacuumCup)',
|
||||
'Holding(Nothing)',
|
||||
'On(Yogurt,Bar)','On(VacuumCup,Table2)',
|
||||
'Is(HallLight,Off)', 'Is(TubeLight,On)', 'Is(Curtain,On)',
|
||||
'Is(Table1,Dirty)', 'Is(Floor,Dirty)', 'Is(Chairs,Dirty)'},
|
||||
|
||||
# 'Holding(Nothing)',
|
||||
'Holding(Coffee)',
|
||||
# "condition_set": {'At(Robot,Bar)', 'Is(AC,Off)',
|
||||
# 'Exist(VacuumCup)','Exist(Coffee)',
|
||||
# 'On(VacuumCup,Table2)', 'On(Coffee,CoffeeTable)',
|
||||
# 'Holding(Nothing)',
|
||||
# 'Is(HallLight,Off)', 'Is(TubeLight,On)', 'Is(Curtain,On)',
|
||||
# 'Is(Table1,Dirty)', 'Is(Floor,Dirty)', 'Is(Chairs,Dirty)'},
|
||||
|
||||
'Exist(VacuumCup)', 'On(VacuumCup,Table2)',
|
||||
'Is(HallLight,Off)', 'Is(TubeLight,On)', 'Is(Curtain,On)',
|
||||
'Is(Table1,Dirty)', 'Is(Floor,Dirty)', 'Is(Chairs,Dirty)'},
|
||||
"obj_mem": {},
|
||||
# "condition_set": {'At(Robot,Bar)', 'Is(AC,Off)',
|
||||
# 'Exist(Yogurt)', 'Exist(VacuumCup)', 'Exist(Coffee)',
|
||||
# 'Holding(Nothing)',
|
||||
# 'On(Yogurt,Bar)', 'On(VacuumCup,Table2)', 'On(Coffee,CoffeeTable)',
|
||||
# 'Is(HallLight,Off)', 'Is(TubeLight,On)',
|
||||
# 'Is(Curtain,On)',
|
||||
# 'Is(Table1,Dirty)', 'Is(Floor,Dirty)', 'Is(Chairs,Dirty)'},
|
||||
"obj_mem": {},
|
||||
"customer_mem": {},
|
||||
"served_mem": {},
|
||||
"greeted_customers": set(),
|
||||
|
@ -274,7 +294,7 @@ class Scene:
|
|||
|
||||
self.is_nav_walk = False
|
||||
|
||||
self.bt_algo_opt = False
|
||||
self.bt_algo_opt = True
|
||||
|
||||
file_name = os.path.join(root_path,'robowaiter/algos/navigator/map_5.pkl')
|
||||
if os.path.exists(file_name):
|
||||
|
|
|
@ -1,23 +1,30 @@
|
|||
selector
|
||||
sequence
|
||||
cond Chatting()
|
||||
act DealChat()
|
||||
sequence
|
||||
cond HasSubTask()
|
||||
selector
|
||||
|
||||
sequence
|
||||
act SubTaskPlaceHolder()
|
||||
sequence
|
||||
cond FocusingCustomer()
|
||||
act ServeCustomer()
|
||||
sequence
|
||||
cond NewCustomer()
|
||||
selector
|
||||
cond At(Robot,Bar)
|
||||
act MoveTo(Bar)
|
||||
act GreetCustomer()
|
||||
sequence
|
||||
cond NeedExplore()
|
||||
act ExploreEnv()
|
||||
sequence
|
||||
cond AnomalyDetected()
|
||||
act ResolveAnomaly()
|
||||
cond At(Robot, Coffee)
|
||||
selector
|
||||
sequence
|
||||
cond Holding(Nothing)
|
||||
act PickUp(Coffee)
|
||||
act PutDown(Anything, Anywhere)
|
||||
selector
|
||||
sequence
|
||||
cond Holding(Coffee)
|
||||
cond At(Robot, WaterTable)
|
||||
act PutDown(Coffee, WaterTable)
|
||||
act MoveTo(WaterTable)
|
||||
|
||||
|
||||
sequence
|
||||
cond At(Robot, Coffee)
|
||||
selector
|
||||
sequence
|
||||
cond Holding(Nothing)
|
||||
act PickUp(Coffee)
|
||||
act PutDown(Anything, Anywhere)
|
||||
selector
|
||||
sequence
|
||||
cond Holding(Coffee)
|
||||
cond At(Robot, BrightTable6)
|
||||
act PutDown(Coffee, BrightTable6)
|
||||
act MoveTo(BrightTable6)
|
||||
|
|
|
@ -2,32 +2,38 @@ selector
|
|||
{
|
||||
sequence
|
||||
{
|
||||
cond Chatting()
|
||||
act DealChat()
|
||||
} sequence
|
||||
{
|
||||
cond HasSubTask()
|
||||
sequence
|
||||
{
|
||||
act SubTaskPlaceHolder()
|
||||
} } sequence
|
||||
{
|
||||
cond FocusingCustomer()
|
||||
act ServeCustomer()
|
||||
} sequence
|
||||
{
|
||||
cond NewCustomer()
|
||||
cond At(Robot, Coffee)
|
||||
selector
|
||||
{
|
||||
cond At(Robot,Bar)
|
||||
act MoveTo(Bar)
|
||||
} act GreetCustomer()
|
||||
} sequence
|
||||
sequence
|
||||
{
|
||||
cond NeedExplore()
|
||||
act ExploreEnv()
|
||||
} sequence
|
||||
cond Holding(Nothing)
|
||||
act PickUp(Coffee)
|
||||
} act PutDown(Anything, Anywhere)
|
||||
} selector
|
||||
{
|
||||
cond AnomalyDetected()
|
||||
act ResolveAnomaly()
|
||||
}}
|
||||
sequence
|
||||
{
|
||||
cond Holding(Coffee)
|
||||
cond At(Robot, WaterTable)
|
||||
act PutDown(Coffee, WaterTable)
|
||||
} act MoveTo(WaterTable)
|
||||
} } sequence
|
||||
{
|
||||
cond At(Robot, Coffee)
|
||||
selector
|
||||
{
|
||||
sequence
|
||||
{
|
||||
cond Holding(Nothing)
|
||||
act PickUp(Coffee)
|
||||
} act PutDown(Anything, Anywhere)
|
||||
} selector
|
||||
{
|
||||
sequence
|
||||
{
|
||||
cond Holding(Coffee)
|
||||
cond At(Robot, BrightTable6)
|
||||
act PutDown(Coffee, BrightTable6)
|
||||
} act MoveTo(BrightTable6)
|
||||
} }}
|
|
@ -16,5 +16,5 @@ if __name__ == '__main__':
|
|||
|
||||
|
||||
|
||||
render_dot_tree(bt.root,name="test")
|
||||
render_dot_tree(bt.root,name="test",png_only = False)
|
||||
# build and tick
|
||||
|
|
|
@ -3,19 +3,57 @@ ordering=out;
|
|||
graph [fontname="times-roman"];
|
||||
node [fontname="times-roman"];
|
||||
edge [fontname="times-roman"];
|
||||
"c9a8671e-b0b8-4587-a4de-a094fd678334" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Selector, shape=octagon, style=filled, width=0.01];
|
||||
"bc597ff6-b3cb-4573-9dea-944fdb38d045" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
|
||||
"c9a8671e-b0b8-4587-a4de-a094fd678334" -> "bc597ff6-b3cb-4573-9dea-944fdb38d045";
|
||||
"a8e26121-f5cc-4ba5-b98e-86bd84de06d6" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01];
|
||||
"c9a8671e-b0b8-4587-a4de-a094fd678334" -> "a8e26121-f5cc-4ba5-b98e-86bd84de06d6";
|
||||
"676d8bda-2c30-44a5-bca2-ade68761403a" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Is(Curtain,Off)", shape=ellipse, style=filled];
|
||||
"a8e26121-f5cc-4ba5-b98e-86bd84de06d6" -> "676d8bda-2c30-44a5-bca2-ade68761403a";
|
||||
"c3d096cf-f848-46a3-9497-5398614798e8" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="Turn(Curtain,On)", shape=box, style=filled];
|
||||
"a8e26121-f5cc-4ba5-b98e-86bd84de06d6" -> "c3d096cf-f848-46a3-9497-5398614798e8";
|
||||
"400b4104-ff96-4d64-89b2-49dc6e4e3cbd" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01];
|
||||
"c9a8671e-b0b8-4587-a4de-a094fd678334" -> "400b4104-ff96-4d64-89b2-49dc6e4e3cbd";
|
||||
"3fc48afc-1cef-45f5-826d-2571d7979a2f" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Is(AC,Off)", shape=ellipse, style=filled];
|
||||
"400b4104-ff96-4d64-89b2-49dc6e4e3cbd" -> "3fc48afc-1cef-45f5-826d-2571d7979a2f";
|
||||
"47af4df0-8811-45a5-95e2-f0fc9458ddfd" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="Turn(AC,On)", shape=box, style=filled];
|
||||
"400b4104-ff96-4d64-89b2-49dc6e4e3cbd" -> "47af4df0-8811-45a5-95e2-f0fc9458ddfd";
|
||||
"c681805a-96e1-4a3d-a38d-0bfca162692b" [fillcolor=cyan, fontcolor=black, fontsize=20, height=0.01, label=Selector, shape=diamond, style=filled, width=0.01];
|
||||
"e878636e-ab91-45b3-8d25-1712a9b919ab" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01];
|
||||
"c681805a-96e1-4a3d-a38d-0bfca162692b" -> "e878636e-ab91-45b3-8d25-1712a9b919ab";
|
||||
"e88e510b-5495-4aa1-95cd-f95b3b4e50dc" [fillcolor=yellow, fontcolor=black, fontsize=20, label="At(Robot,Coffee)", shape=ellipse, style=filled];
|
||||
"e878636e-ab91-45b3-8d25-1712a9b919ab" -> "e88e510b-5495-4aa1-95cd-f95b3b4e50dc";
|
||||
"292edbec-e8dc-44df-a80c-7dd5b6dd6692" [fillcolor=cyan, fontcolor=black, fontsize=20, height=0.01, label=Selector, shape=diamond, style=filled, width=0.01];
|
||||
"e878636e-ab91-45b3-8d25-1712a9b919ab" -> "292edbec-e8dc-44df-a80c-7dd5b6dd6692";
|
||||
"8d44bfa1-3a4e-4ae7-94bb-25d70caf0b4b" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01];
|
||||
"292edbec-e8dc-44df-a80c-7dd5b6dd6692" -> "8d44bfa1-3a4e-4ae7-94bb-25d70caf0b4b";
|
||||
"65f29fbc-02c3-4015-98bf-e71d16a78cbb" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
|
||||
"8d44bfa1-3a4e-4ae7-94bb-25d70caf0b4b" -> "65f29fbc-02c3-4015-98bf-e71d16a78cbb";
|
||||
"c503211c-ab75-4671-a6ca-2f66518be485" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="PickUp(Coffee)", shape=box, style=filled];
|
||||
"8d44bfa1-3a4e-4ae7-94bb-25d70caf0b4b" -> "c503211c-ab75-4671-a6ca-2f66518be485";
|
||||
"27760c0d-aa85-437c-ac87-564d573f6d3d" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="PutDown(Anything,Anywhere)", shape=box, style=filled];
|
||||
"292edbec-e8dc-44df-a80c-7dd5b6dd6692" -> "27760c0d-aa85-437c-ac87-564d573f6d3d";
|
||||
"94f578bf-0c4b-4614-aacc-d73ca0996d2c" [fillcolor=cyan, fontcolor=black, fontsize=20, height=0.01, label=Selector, shape=diamond, style=filled, width=0.01];
|
||||
"e878636e-ab91-45b3-8d25-1712a9b919ab" -> "94f578bf-0c4b-4614-aacc-d73ca0996d2c";
|
||||
"5a162890-11de-41d8-9954-ba17ccf166c4" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01];
|
||||
"94f578bf-0c4b-4614-aacc-d73ca0996d2c" -> "5a162890-11de-41d8-9954-ba17ccf166c4";
|
||||
"296bae80-a542-4fde-87b9-b030340caa1d" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Holding(Coffee)", shape=ellipse, style=filled];
|
||||
"5a162890-11de-41d8-9954-ba17ccf166c4" -> "296bae80-a542-4fde-87b9-b030340caa1d";
|
||||
"cba60b1e-308f-4f5a-939c-28bba802bca5" [fillcolor=yellow, fontcolor=black, fontsize=20, label="At(Robot,WaterTable)", shape=ellipse, style=filled];
|
||||
"5a162890-11de-41d8-9954-ba17ccf166c4" -> "cba60b1e-308f-4f5a-939c-28bba802bca5";
|
||||
"93924025-e88f-47ec-90e4-c53bbc3df60e" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="PutDown(Coffee,WaterTable)", shape=box, style=filled];
|
||||
"5a162890-11de-41d8-9954-ba17ccf166c4" -> "93924025-e88f-47ec-90e4-c53bbc3df60e";
|
||||
"191ca7d5-a98c-429f-b040-66d210c30bdd" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="MoveTo(WaterTable)", shape=box, style=filled];
|
||||
"94f578bf-0c4b-4614-aacc-d73ca0996d2c" -> "191ca7d5-a98c-429f-b040-66d210c30bdd";
|
||||
"5461e129-ef05-4848-9107-2617c82b3566" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01];
|
||||
"c681805a-96e1-4a3d-a38d-0bfca162692b" -> "5461e129-ef05-4848-9107-2617c82b3566";
|
||||
"fd31940a-4e40-433d-8165-c9dd302fae62" [fillcolor=yellow, fontcolor=black, fontsize=20, label="At(Robot,Coffee)", shape=ellipse, style=filled];
|
||||
"5461e129-ef05-4848-9107-2617c82b3566" -> "fd31940a-4e40-433d-8165-c9dd302fae62";
|
||||
"0a9876b0-1ff9-4f96-b7a8-8257a3928f62" [fillcolor=cyan, fontcolor=black, fontsize=20, height=0.01, label=Selector, shape=diamond, style=filled, width=0.01];
|
||||
"5461e129-ef05-4848-9107-2617c82b3566" -> "0a9876b0-1ff9-4f96-b7a8-8257a3928f62";
|
||||
"052d5a92-c6b4-483d-9cef-41745df61ff9" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01];
|
||||
"0a9876b0-1ff9-4f96-b7a8-8257a3928f62" -> "052d5a92-c6b4-483d-9cef-41745df61ff9";
|
||||
"c8462c00-d129-4eba-a0b4-ad6a819e34e8" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
|
||||
"052d5a92-c6b4-483d-9cef-41745df61ff9" -> "c8462c00-d129-4eba-a0b4-ad6a819e34e8";
|
||||
"5a944a18-ea71-4cbe-a04e-675d955b1b1f" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="PickUp(Coffee)", shape=box, style=filled];
|
||||
"052d5a92-c6b4-483d-9cef-41745df61ff9" -> "5a944a18-ea71-4cbe-a04e-675d955b1b1f";
|
||||
"bfea3ed6-08c4-4fd3-9aa7-994f4be28953" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="PutDown(Anything,Anywhere)", shape=box, style=filled];
|
||||
"0a9876b0-1ff9-4f96-b7a8-8257a3928f62" -> "bfea3ed6-08c4-4fd3-9aa7-994f4be28953";
|
||||
"c719600f-4033-418f-8608-5c808481d1aa" [fillcolor=cyan, fontcolor=black, fontsize=20, height=0.01, label=Selector, shape=diamond, style=filled, width=0.01];
|
||||
"5461e129-ef05-4848-9107-2617c82b3566" -> "c719600f-4033-418f-8608-5c808481d1aa";
|
||||
"c9d1af42-f394-4c52-9e7b-32d46487c708" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01];
|
||||
"c719600f-4033-418f-8608-5c808481d1aa" -> "c9d1af42-f394-4c52-9e7b-32d46487c708";
|
||||
"84ecc165-efa0-4747-8ce9-64bf6ac557a2" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Holding(Coffee)", shape=ellipse, style=filled];
|
||||
"c9d1af42-f394-4c52-9e7b-32d46487c708" -> "84ecc165-efa0-4747-8ce9-64bf6ac557a2";
|
||||
"8d3d2c3f-1f52-4742-bb03-a02d578134de" [fillcolor=yellow, fontcolor=black, fontsize=20, label="At(Robot,BrightTable6)", shape=ellipse, style=filled];
|
||||
"c9d1af42-f394-4c52-9e7b-32d46487c708" -> "8d3d2c3f-1f52-4742-bb03-a02d578134de";
|
||||
"b5bcfc9e-f0ad-458b-ba99-19bae2fc6b12" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="PutDown(Coffee,BrightTable6)", shape=box, style=filled];
|
||||
"c9d1af42-f394-4c52-9e7b-32d46487c708" -> "b5bcfc9e-f0ad-458b-ba99-19bae2fc6b12";
|
||||
"5685125a-34f9-40cd-be0c-b7674970c01b" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="MoveTo(BrightTable6)", shape=box, style=filled];
|
||||
"c719600f-4033-418f-8608-5c808481d1aa" -> "5685125a-34f9-40cd-be0c-b7674970c01b";
|
||||
}
|
||||
|
|
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 131 KiB |
|
@ -4,100 +4,328 @@
|
|||
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
|
||||
-->
|
||||
<!-- Title: pastafarianism Pages: 1 -->
|
||||
<svg width="716pt" height="220pt"
|
||||
viewBox="0.00 0.00 715.70 219.87" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 215.87)">
|
||||
<svg width="2460pt" height="417pt"
|
||||
viewBox="0.00 0.00 2460.20 416.87" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 412.87)">
|
||||
<title>pastafarianism</title>
|
||||
<polygon fill="white" stroke="none" points="-4,4 -4,-215.87 711.7,-215.87 711.7,4 -4,4"/>
|
||||
<!-- c9a8671e-b0b8-4587-a4de-a094fd678334 -->
|
||||
<polygon fill="white" stroke="none" points="-4,4 -4,-412.87 2456.2,-412.87 2456.2,4 -4,4"/>
|
||||
<!-- c681805a-96e1-4a3d-a38d-0bfca162692b -->
|
||||
<g id="node1" class="node">
|
||||
<title>c9a8671e-b0b8-4587-a4de-a094fd678334</title>
|
||||
<polygon fill="orange" stroke="black" points="383.11,-178.04 383.11,-197.85 345.67,-211.87 292.73,-211.87 255.29,-197.85 255.29,-178.04 292.73,-164.03 345.67,-164.03 383.11,-178.04"/>
|
||||
<text text-anchor="middle" x="319.2" y="-180.57" font-family="Times New Roman,serif" font-size="20.00">Selector</text>
|
||||
<title>c681805a-96e1-4a3d-a38d-0bfca162692b</title>
|
||||
<polygon fill="cyan" stroke="black" points="848.2,-408.87 764.7,-377.62 848.2,-346.37 931.7,-377.62 848.2,-408.87"/>
|
||||
<text text-anchor="middle" x="848.2" y="-370.24" font-family="Times New Roman,serif" font-size="20.00">Selector</text>
|
||||
</g>
|
||||
<!-- bc597ff6-b3cb-4573-9dea-944fdb38d045 -->
|
||||
<!-- e878636e-ab91-45b3-8d25-1712a9b919ab -->
|
||||
<g id="node2" class="node">
|
||||
<title>bc597ff6-b3cb-4573-9dea-944fdb38d045</title>
|
||||
<ellipse fill="yellow" stroke="black" cx="114.2" cy="-104.11" rx="114.2" ry="22.1"/>
|
||||
<text text-anchor="middle" x="114.2" y="-96.74" font-family="Times New Roman,serif" font-size="20.00">Holding(Nothing)</text>
|
||||
<title>e878636e-ab91-45b3-8d25-1712a9b919ab</title>
|
||||
<polygon fill="orange" stroke="black" points="750.72,-276.54 750.72,-296.35 708.24,-310.37 648.16,-310.37 605.68,-296.35 605.68,-276.54 648.16,-262.53 708.24,-262.53 750.72,-276.54"/>
|
||||
<text text-anchor="middle" x="678.2" y="-279.07" font-family="Times New Roman,serif" font-size="20.00">Sequence</text>
|
||||
</g>
|
||||
<!-- c9a8671e-b0b8-4587-a4de-a094fd678334->bc597ff6-b3cb-4573-9dea-944fdb38d045 -->
|
||||
<!-- c681805a-96e1-4a3d-a38d-0bfca162692b->e878636e-ab91-45b3-8d25-1712a9b919ab -->
|
||||
<g id="edge1" class="edge">
|
||||
<title>c9a8671e-b0b8-4587-a4de-a094fd678334->bc597ff6-b3cb-4573-9dea-944fdb38d045</title>
|
||||
<path fill="none" stroke="black" d="M276.22,-169.79C246.35,-157.87 206.15,-141.82 173.26,-128.69"/>
|
||||
<polygon fill="black" stroke="black" points="174.86,-125.56 164.27,-125.1 172.26,-132.06 174.86,-125.56"/>
|
||||
<title>c681805a-96e1-4a3d-a38d-0bfca162692b->e878636e-ab91-45b3-8d25-1712a9b919ab</title>
|
||||
<path fill="none" stroke="black" d="M814.2,-358.78C789.26,-345.7 755.03,-327.75 727.14,-313.12"/>
|
||||
<polygon fill="black" stroke="black" points="729.01,-310.15 718.53,-308.6 725.76,-316.35 729.01,-310.15"/>
|
||||
</g>
|
||||
<!-- a8e26121-f5cc-4ba5-b98e-86bd84de06d6 -->
|
||||
<!-- 5461e129-ef05-4848-9107-2617c82b3566 -->
|
||||
<g id="node15" class="node">
|
||||
<title>5461e129-ef05-4848-9107-2617c82b3566</title>
|
||||
<polygon fill="orange" stroke="black" points="1467.72,-276.54 1467.72,-296.35 1425.24,-310.37 1365.16,-310.37 1322.68,-296.35 1322.68,-276.54 1365.16,-262.53 1425.24,-262.53 1467.72,-276.54"/>
|
||||
<text text-anchor="middle" x="1395.2" y="-279.07" font-family="Times New Roman,serif" font-size="20.00">Sequence</text>
|
||||
</g>
|
||||
<!-- c681805a-96e1-4a3d-a38d-0bfca162692b->5461e129-ef05-4848-9107-2617c82b3566 -->
|
||||
<g id="edge14" class="edge">
|
||||
<title>c681805a-96e1-4a3d-a38d-0bfca162692b->5461e129-ef05-4848-9107-2617c82b3566</title>
|
||||
<path fill="none" stroke="black" d="M905.45,-367.28C1003.84,-351.24 1205.19,-318.42 1316.64,-300.25"/>
|
||||
<polygon fill="black" stroke="black" points="1316.99,-303.74 1326.3,-298.68 1315.86,-296.83 1316.99,-303.74"/>
|
||||
</g>
|
||||
<!-- e88e510b-5495-4aa1-95cd-f95b3b4e50dc -->
|
||||
<g id="node3" class="node">
|
||||
<title>a8e26121-f5cc-4ba5-b98e-86bd84de06d6</title>
|
||||
<polygon fill="orange" stroke="black" points="391.72,-94.2 391.72,-114.02 349.24,-128.03 289.16,-128.03 246.68,-114.02 246.68,-94.2 289.16,-80.19 349.24,-80.19 391.72,-94.2"/>
|
||||
<text text-anchor="middle" x="319.2" y="-96.74" font-family="Times New Roman,serif" font-size="20.00">Sequence</text>
|
||||
<title>e88e510b-5495-4aa1-95cd-f95b3b4e50dc</title>
|
||||
<ellipse fill="yellow" stroke="black" cx="360.2" cy="-195.28" rx="113.14" ry="22.1"/>
|
||||
<text text-anchor="middle" x="360.2" y="-187.9" font-family="Times New Roman,serif" font-size="20.00">At(Robot,Coffee)</text>
|
||||
</g>
|
||||
<!-- c9a8671e-b0b8-4587-a4de-a094fd678334->a8e26121-f5cc-4ba5-b98e-86bd84de06d6 -->
|
||||
<!-- e878636e-ab91-45b3-8d25-1712a9b919ab->e88e510b-5495-4aa1-95cd-f95b3b4e50dc -->
|
||||
<g id="edge2" class="edge">
|
||||
<title>c9a8671e-b0b8-4587-a4de-a094fd678334->a8e26121-f5cc-4ba5-b98e-86bd84de06d6</title>
|
||||
<path fill="none" stroke="black" d="M319.2,-163.72C319.2,-156.29 319.2,-147.89 319.2,-139.83"/>
|
||||
<polygon fill="black" stroke="black" points="322.7,-139.92 319.2,-129.92 315.7,-139.92 322.7,-139.92"/>
|
||||
<title>e878636e-ab91-45b3-8d25-1712a9b919ab->e88e510b-5495-4aa1-95cd-f95b3b4e50dc</title>
|
||||
<path fill="none" stroke="black" d="M623.89,-270.22C571.65,-255.57 492.25,-233.31 434.23,-217.04"/>
|
||||
<polygon fill="black" stroke="black" points="435.33,-213.71 424.75,-214.38 433.44,-220.45 435.33,-213.71"/>
|
||||
</g>
|
||||
<!-- 400b4104-ff96-4d64-89b2-49dc6e4e3cbd -->
|
||||
<g id="node6" class="node">
|
||||
<title>400b4104-ff96-4d64-89b2-49dc6e4e3cbd</title>
|
||||
<polygon fill="orange" stroke="black" points="562.72,-94.2 562.72,-114.02 520.24,-128.03 460.16,-128.03 417.68,-114.02 417.68,-94.2 460.16,-80.19 520.24,-80.19 562.72,-94.2"/>
|
||||
<text text-anchor="middle" x="490.2" y="-96.74" font-family="Times New Roman,serif" font-size="20.00">Sequence</text>
|
||||
</g>
|
||||
<!-- c9a8671e-b0b8-4587-a4de-a094fd678334->400b4104-ff96-4d64-89b2-49dc6e4e3cbd -->
|
||||
<g id="edge5" class="edge">
|
||||
<title>c9a8671e-b0b8-4587-a4de-a094fd678334->400b4104-ff96-4d64-89b2-49dc6e4e3cbd</title>
|
||||
<path fill="none" stroke="black" d="M358,-168.38C382.01,-156.89 413.11,-142.01 439.11,-129.56"/>
|
||||
<polygon fill="black" stroke="black" points="440.29,-132.88 447.8,-125.4 437.27,-126.56 440.29,-132.88"/>
|
||||
</g>
|
||||
<!-- 676d8bda-2c30-44a5-bca2-ade68761403a -->
|
||||
<!-- 292edbec-e8dc-44df-a80c-7dd5b6dd6692 -->
|
||||
<g id="node4" class="node">
|
||||
<title>676d8bda-2c30-44a5-bca2-ade68761403a</title>
|
||||
<ellipse fill="yellow" stroke="black" cx="124.2" cy="-22.1" rx="96.17" ry="22.1"/>
|
||||
<text text-anchor="middle" x="124.2" y="-14.72" font-family="Times New Roman,serif" font-size="20.00">Is(Curtain,Off)</text>
|
||||
<title>292edbec-e8dc-44df-a80c-7dd5b6dd6692</title>
|
||||
<polygon fill="cyan" stroke="black" points="575.2,-226.53 491.7,-195.28 575.2,-164.03 658.7,-195.28 575.2,-226.53"/>
|
||||
<text text-anchor="middle" x="575.2" y="-187.9" font-family="Times New Roman,serif" font-size="20.00">Selector</text>
|
||||
</g>
|
||||
<!-- a8e26121-f5cc-4ba5-b98e-86bd84de06d6->676d8bda-2c30-44a5-bca2-ade68761403a -->
|
||||
<!-- e878636e-ab91-45b3-8d25-1712a9b919ab->292edbec-e8dc-44df-a80c-7dd5b6dd6692 -->
|
||||
<g id="edge3" class="edge">
|
||||
<title>a8e26121-f5cc-4ba5-b98e-86bd84de06d6->676d8bda-2c30-44a5-bca2-ade68761403a</title>
|
||||
<path fill="none" stroke="black" d="M274.46,-84.75C246.5,-73.28 210.25,-58.41 180.36,-46.14"/>
|
||||
<polygon fill="black" stroke="black" points="182.06,-43.06 171.48,-42.5 179.4,-49.53 182.06,-43.06"/>
|
||||
<title>e878636e-ab91-45b3-8d25-1712a9b919ab->292edbec-e8dc-44df-a80c-7dd5b6dd6692</title>
|
||||
<path fill="none" stroke="black" d="M651.4,-262.25C638.18,-250.8 622.1,-236.88 608.12,-224.78"/>
|
||||
<polygon fill="black" stroke="black" points="610.74,-222.42 600.88,-218.52 606.15,-227.71 610.74,-222.42"/>
|
||||
</g>
|
||||
<!-- c3d096cf-f848-46a3-9497-5398614798e8 -->
|
||||
<!-- 94f578bf-0c4b-4614-aacc-d73ca0996d2c -->
|
||||
<g id="node9" class="node">
|
||||
<title>94f578bf-0c4b-4614-aacc-d73ca0996d2c</title>
|
||||
<polygon fill="cyan" stroke="black" points="780.2,-226.53 696.7,-195.28 780.2,-164.03 863.7,-195.28 780.2,-226.53"/>
|
||||
<text text-anchor="middle" x="780.2" y="-187.9" font-family="Times New Roman,serif" font-size="20.00">Selector</text>
|
||||
</g>
|
||||
<!-- e878636e-ab91-45b3-8d25-1712a9b919ab->94f578bf-0c4b-4614-aacc-d73ca0996d2c -->
|
||||
<g id="edge8" class="edge">
|
||||
<title>e878636e-ab91-45b3-8d25-1712a9b919ab->94f578bf-0c4b-4614-aacc-d73ca0996d2c</title>
|
||||
<path fill="none" stroke="black" d="M704.73,-262.25C717.61,-250.99 733.22,-237.35 746.89,-225.4"/>
|
||||
<polygon fill="black" stroke="black" points="749.18,-228.04 754.41,-218.82 744.58,-222.77 749.18,-228.04"/>
|
||||
</g>
|
||||
<!-- 8d44bfa1-3a4e-4ae7-94bb-25d70caf0b4b -->
|
||||
<g id="node5" class="node">
|
||||
<title>c3d096cf-f848-46a3-9497-5398614798e8</title>
|
||||
<polygon fill="lawngreen" stroke="black" points="399.57,-40.1 238.82,-40.1 238.82,-4.1 399.57,-4.1 399.57,-40.1"/>
|
||||
<text text-anchor="middle" x="319.2" y="-14.72" font-family="Times New Roman,serif" font-size="20.00">Turn(Curtain,On)</text>
|
||||
<title>8d44bfa1-3a4e-4ae7-94bb-25d70caf0b4b</title>
|
||||
<polygon fill="orange" stroke="black" points="390.72,-94.2 390.72,-114.02 348.24,-128.03 288.16,-128.03 245.68,-114.02 245.68,-94.2 288.16,-80.19 348.24,-80.19 390.72,-94.2"/>
|
||||
<text text-anchor="middle" x="318.2" y="-96.74" font-family="Times New Roman,serif" font-size="20.00">Sequence</text>
|
||||
</g>
|
||||
<!-- a8e26121-f5cc-4ba5-b98e-86bd84de06d6->c3d096cf-f848-46a3-9497-5398614798e8 -->
|
||||
<!-- 292edbec-e8dc-44df-a80c-7dd5b6dd6692->8d44bfa1-3a4e-4ae7-94bb-25d70caf0b4b -->
|
||||
<g id="edge4" class="edge">
|
||||
<title>a8e26121-f5cc-4ba5-b98e-86bd84de06d6->c3d096cf-f848-46a3-9497-5398614798e8</title>
|
||||
<path fill="none" stroke="black" d="M319.2,-79.97C319.2,-71.24 319.2,-61.2 319.2,-52.01"/>
|
||||
<polygon fill="black" stroke="black" points="322.7,-52.11 319.2,-42.11 315.7,-52.11 322.7,-52.11"/>
|
||||
<title>292edbec-e8dc-44df-a80c-7dd5b6dd6692->8d44bfa1-3a4e-4ae7-94bb-25d70caf0b4b</title>
|
||||
<path fill="none" stroke="black" d="M532.76,-179.56C490.57,-164.92 425.46,-142.33 378.03,-125.87"/>
|
||||
<polygon fill="black" stroke="black" points="379.31,-122.61 368.72,-122.64 377.02,-129.23 379.31,-122.61"/>
|
||||
</g>
|
||||
<!-- 3fc48afc-1cef-45f5-826d-2571d7979a2f -->
|
||||
<g id="node7" class="node">
|
||||
<title>3fc48afc-1cef-45f5-826d-2571d7979a2f</title>
|
||||
<ellipse fill="yellow" stroke="black" cx="490.2" cy="-22.1" rx="72.3" ry="22.1"/>
|
||||
<text text-anchor="middle" x="490.2" y="-14.72" font-family="Times New Roman,serif" font-size="20.00">Is(AC,Off)</text>
|
||||
</g>
|
||||
<!-- 400b4104-ff96-4d64-89b2-49dc6e4e3cbd->3fc48afc-1cef-45f5-826d-2571d7979a2f -->
|
||||
<g id="edge6" class="edge">
|
||||
<title>400b4104-ff96-4d64-89b2-49dc6e4e3cbd->3fc48afc-1cef-45f5-826d-2571d7979a2f</title>
|
||||
<path fill="none" stroke="black" d="M490.2,-79.97C490.2,-72.46 490.2,-63.99 490.2,-55.92"/>
|
||||
<polygon fill="black" stroke="black" points="493.7,-56.06 490.2,-46.06 486.7,-56.06 493.7,-56.06"/>
|
||||
</g>
|
||||
<!-- 47af4df0-8811-45a5-95e2-f0fc9458ddfd -->
|
||||
<!-- 27760c0d-aa85-437c-ac87-564d573f6d3d -->
|
||||
<g id="node8" class="node">
|
||||
<title>47af4df0-8811-45a5-95e2-f0fc9458ddfd</title>
|
||||
<polygon fill="lawngreen" stroke="black" points="707.7,-40.1 580.7,-40.1 580.7,-4.1 707.7,-4.1 707.7,-40.1"/>
|
||||
<text text-anchor="middle" x="644.2" y="-14.72" font-family="Times New Roman,serif" font-size="20.00">Turn(AC,On)</text>
|
||||
<title>27760c0d-aa85-437c-ac87-564d573f6d3d</title>
|
||||
<polygon fill="lawngreen" stroke="black" points="690.07,-122.11 418.32,-122.11 418.32,-86.11 690.07,-86.11 690.07,-122.11"/>
|
||||
<text text-anchor="middle" x="554.2" y="-96.74" font-family="Times New Roman,serif" font-size="20.00">PutDown(Anything,Anywhere)</text>
|
||||
</g>
|
||||
<!-- 400b4104-ff96-4d64-89b2-49dc6e4e3cbd->47af4df0-8811-45a5-95e2-f0fc9458ddfd -->
|
||||
<!-- 292edbec-e8dc-44df-a80c-7dd5b6dd6692->27760c0d-aa85-437c-ac87-564d573f6d3d -->
|
||||
<g id="edge7" class="edge">
|
||||
<title>400b4104-ff96-4d64-89b2-49dc6e4e3cbd->47af4df0-8811-45a5-95e2-f0fc9458ddfd</title>
|
||||
<path fill="none" stroke="black" d="M529.46,-82.71C551.25,-71.39 578.4,-57.28 600.82,-45.64"/>
|
||||
<polygon fill="black" stroke="black" points="602.15,-48.89 609.41,-41.17 598.92,-42.68 602.15,-48.89"/>
|
||||
<title>292edbec-e8dc-44df-a80c-7dd5b6dd6692->27760c0d-aa85-437c-ac87-564d573f6d3d</title>
|
||||
<path fill="none" stroke="black" d="M568.55,-166.07C566.11,-155.69 563.34,-143.93 560.89,-133.53"/>
|
||||
<polygon fill="black" stroke="black" points="564.34,-132.92 558.64,-123.99 557.53,-134.53 564.34,-132.92"/>
|
||||
</g>
|
||||
<!-- 65f29fbc-02c3-4015-98bf-e71d16a78cbb -->
|
||||
<g id="node6" class="node">
|
||||
<title>65f29fbc-02c3-4015-98bf-e71d16a78cbb</title>
|
||||
<ellipse fill="yellow" stroke="black" cx="114.2" cy="-22.1" rx="114.2" ry="22.1"/>
|
||||
<text text-anchor="middle" x="114.2" y="-14.72" font-family="Times New Roman,serif" font-size="20.00">Holding(Nothing)</text>
|
||||
</g>
|
||||
<!-- 8d44bfa1-3a4e-4ae7-94bb-25d70caf0b4b->65f29fbc-02c3-4015-98bf-e71d16a78cbb -->
|
||||
<g id="edge5" class="edge">
|
||||
<title>8d44bfa1-3a4e-4ae7-94bb-25d70caf0b4b->65f29fbc-02c3-4015-98bf-e71d16a78cbb</title>
|
||||
<path fill="none" stroke="black" d="M272.16,-85.06C243.13,-73.67 205.33,-58.84 173.99,-46.55"/>
|
||||
<polygon fill="black" stroke="black" points="175.63,-43.43 165.04,-43.04 173.07,-49.95 175.63,-43.43"/>
|
||||
</g>
|
||||
<!-- c503211c-ab75-4671-a6ca-2f66518be485 -->
|
||||
<g id="node7" class="node">
|
||||
<title>c503211c-ab75-4671-a6ca-2f66518be485</title>
|
||||
<polygon fill="lawngreen" stroke="black" points="389.95,-40.1 246.45,-40.1 246.45,-4.1 389.95,-4.1 389.95,-40.1"/>
|
||||
<text text-anchor="middle" x="318.2" y="-14.72" font-family="Times New Roman,serif" font-size="20.00">PickUp(Coffee)</text>
|
||||
</g>
|
||||
<!-- 8d44bfa1-3a4e-4ae7-94bb-25d70caf0b4b->c503211c-ab75-4671-a6ca-2f66518be485 -->
|
||||
<g id="edge6" class="edge">
|
||||
<title>8d44bfa1-3a4e-4ae7-94bb-25d70caf0b4b->c503211c-ab75-4671-a6ca-2f66518be485</title>
|
||||
<path fill="none" stroke="black" d="M318.2,-79.97C318.2,-71.24 318.2,-61.2 318.2,-52.01"/>
|
||||
<polygon fill="black" stroke="black" points="321.7,-52.11 318.2,-42.11 314.7,-52.11 321.7,-52.11"/>
|
||||
</g>
|
||||
<!-- 5a162890-11de-41d8-9954-ba17ccf166c4 -->
|
||||
<g id="node10" class="node">
|
||||
<title>5a162890-11de-41d8-9954-ba17ccf166c4</title>
|
||||
<polygon fill="orange" stroke="black" points="852.72,-94.2 852.72,-114.02 810.24,-128.03 750.16,-128.03 707.68,-114.02 707.68,-94.2 750.16,-80.19 810.24,-80.19 852.72,-94.2"/>
|
||||
<text text-anchor="middle" x="780.2" y="-96.74" font-family="Times New Roman,serif" font-size="20.00">Sequence</text>
|
||||
</g>
|
||||
<!-- 94f578bf-0c4b-4614-aacc-d73ca0996d2c->5a162890-11de-41d8-9954-ba17ccf166c4 -->
|
||||
<g id="edge9" class="edge">
|
||||
<title>94f578bf-0c4b-4614-aacc-d73ca0996d2c->5a162890-11de-41d8-9954-ba17ccf166c4</title>
|
||||
<path fill="none" stroke="black" d="M780.2,-163.59C780.2,-155.97 780.2,-147.74 780.2,-139.93"/>
|
||||
<polygon fill="black" stroke="black" points="783.7,-140.04 780.2,-130.04 776.7,-140.04 783.7,-140.04"/>
|
||||
</g>
|
||||
<!-- 191ca7d5-a98c-429f-b040-66d210c30bdd -->
|
||||
<g id="node14" class="node">
|
||||
<title>191ca7d5-a98c-429f-b040-66d210c30bdd</title>
|
||||
<polygon fill="lawngreen" stroke="black" points="1065.45,-122.11 870.95,-122.11 870.95,-86.11 1065.45,-86.11 1065.45,-122.11"/>
|
||||
<text text-anchor="middle" x="968.2" y="-96.74" font-family="Times New Roman,serif" font-size="20.00">MoveTo(WaterTable)</text>
|
||||
</g>
|
||||
<!-- 94f578bf-0c4b-4614-aacc-d73ca0996d2c->191ca7d5-a98c-429f-b040-66d210c30bdd -->
|
||||
<g id="edge13" class="edge">
|
||||
<title>94f578bf-0c4b-4614-aacc-d73ca0996d2c->191ca7d5-a98c-429f-b040-66d210c30bdd</title>
|
||||
<path fill="none" stroke="black" d="M816.45,-177.09C846.29,-162.93 888.82,-142.76 921.27,-127.37"/>
|
||||
<polygon fill="black" stroke="black" points="922.52,-130.65 930.05,-123.2 919.52,-124.33 922.52,-130.65"/>
|
||||
</g>
|
||||
<!-- 296bae80-a542-4fde-87b9-b030340caa1d -->
|
||||
<g id="node11" class="node">
|
||||
<title>296bae80-a542-4fde-87b9-b030340caa1d</title>
|
||||
<ellipse fill="yellow" stroke="black" cx="513.2" cy="-22.1" rx="105.71" ry="22.1"/>
|
||||
<text text-anchor="middle" x="513.2" y="-14.72" font-family="Times New Roman,serif" font-size="20.00">Holding(Coffee)</text>
|
||||
</g>
|
||||
<!-- 5a162890-11de-41d8-9954-ba17ccf166c4->296bae80-a542-4fde-87b9-b030340caa1d -->
|
||||
<g id="edge10" class="edge">
|
||||
<title>5a162890-11de-41d8-9954-ba17ccf166c4->296bae80-a542-4fde-87b9-b030340caa1d</title>
|
||||
<path fill="none" stroke="black" d="M727.45,-87.3C686.17,-74.93 628.39,-57.62 583.24,-44.09"/>
|
||||
<polygon fill="black" stroke="black" points="584.38,-40.77 573.79,-41.26 582.37,-47.48 584.38,-40.77"/>
|
||||
</g>
|
||||
<!-- cba60b1e-308f-4f5a-939c-28bba802bca5 -->
|
||||
<g id="node12" class="node">
|
||||
<title>cba60b1e-308f-4f5a-939c-28bba802bca5</title>
|
||||
<ellipse fill="yellow" stroke="black" cx="780.2" cy="-22.1" rx="142.84" ry="22.1"/>
|
||||
<text text-anchor="middle" x="780.2" y="-14.72" font-family="Times New Roman,serif" font-size="20.00">At(Robot,WaterTable)</text>
|
||||
</g>
|
||||
<!-- 5a162890-11de-41d8-9954-ba17ccf166c4->cba60b1e-308f-4f5a-939c-28bba802bca5 -->
|
||||
<g id="edge11" class="edge">
|
||||
<title>5a162890-11de-41d8-9954-ba17ccf166c4->cba60b1e-308f-4f5a-939c-28bba802bca5</title>
|
||||
<path fill="none" stroke="black" d="M780.2,-79.97C780.2,-72.46 780.2,-63.99 780.2,-55.92"/>
|
||||
<polygon fill="black" stroke="black" points="783.7,-56.06 780.2,-46.06 776.7,-56.06 783.7,-56.06"/>
|
||||
</g>
|
||||
<!-- 93924025-e88f-47ec-90e4-c53bbc3df60e -->
|
||||
<g id="node13" class="node">
|
||||
<title>93924025-e88f-47ec-90e4-c53bbc3df60e</title>
|
||||
<polygon fill="lawngreen" stroke="black" points="1203.2,-40.1 941.2,-40.1 941.2,-4.1 1203.2,-4.1 1203.2,-40.1"/>
|
||||
<text text-anchor="middle" x="1072.2" y="-14.72" font-family="Times New Roman,serif" font-size="20.00">PutDown(Coffee,WaterTable)</text>
|
||||
</g>
|
||||
<!-- 5a162890-11de-41d8-9954-ba17ccf166c4->93924025-e88f-47ec-90e4-c53bbc3df60e -->
|
||||
<g id="edge12" class="edge">
|
||||
<title>5a162890-11de-41d8-9954-ba17ccf166c4->93924025-e88f-47ec-90e4-c53bbc3df60e</title>
|
||||
<path fill="none" stroke="black" d="M834.44,-87.9C843.7,-85.31 853.22,-82.67 862.2,-80.19 906.81,-67.9 956.81,-54.29 996.82,-43.45"/>
|
||||
<polygon fill="black" stroke="black" points="997.63,-46.86 1006.37,-40.87 995.8,-40.1 997.63,-46.86"/>
|
||||
</g>
|
||||
<!-- fd31940a-4e40-433d-8165-c9dd302fae62 -->
|
||||
<g id="node16" class="node">
|
||||
<title>fd31940a-4e40-433d-8165-c9dd302fae62</title>
|
||||
<ellipse fill="yellow" stroke="black" cx="1288.2" cy="-195.28" rx="113.14" ry="22.1"/>
|
||||
<text text-anchor="middle" x="1288.2" y="-187.9" font-family="Times New Roman,serif" font-size="20.00">At(Robot,Coffee)</text>
|
||||
</g>
|
||||
<!-- 5461e129-ef05-4848-9107-2617c82b3566->fd31940a-4e40-433d-8165-c9dd302fae62 -->
|
||||
<g id="edge15" class="edge">
|
||||
<title>5461e129-ef05-4848-9107-2617c82b3566->fd31940a-4e40-433d-8165-c9dd302fae62</title>
|
||||
<path fill="none" stroke="black" d="M1367.36,-262.25C1353.52,-250.71 1336.67,-236.67 1322.08,-224.51"/>
|
||||
<polygon fill="black" stroke="black" points="1324.42,-221.91 1314.49,-218.19 1319.94,-227.28 1324.42,-221.91"/>
|
||||
</g>
|
||||
<!-- 0a9876b0-1ff9-4f96-b7a8-8257a3928f62 -->
|
||||
<g id="node17" class="node">
|
||||
<title>0a9876b0-1ff9-4f96-b7a8-8257a3928f62</title>
|
||||
<polygon fill="cyan" stroke="black" points="1503.2,-226.53 1419.7,-195.28 1503.2,-164.03 1586.7,-195.28 1503.2,-226.53"/>
|
||||
<text text-anchor="middle" x="1503.2" y="-187.9" font-family="Times New Roman,serif" font-size="20.00">Selector</text>
|
||||
</g>
|
||||
<!-- 5461e129-ef05-4848-9107-2617c82b3566->0a9876b0-1ff9-4f96-b7a8-8257a3928f62 -->
|
||||
<g id="edge16" class="edge">
|
||||
<title>5461e129-ef05-4848-9107-2617c82b3566->0a9876b0-1ff9-4f96-b7a8-8257a3928f62</title>
|
||||
<path fill="none" stroke="black" d="M1423.29,-262.25C1437.27,-250.71 1454.27,-236.67 1469,-224.51"/>
|
||||
<polygon fill="black" stroke="black" points="1471.18,-227.25 1476.66,-218.19 1466.72,-221.86 1471.18,-227.25"/>
|
||||
</g>
|
||||
<!-- c719600f-4033-418f-8608-5c808481d1aa -->
|
||||
<g id="node22" class="node">
|
||||
<title>c719600f-4033-418f-8608-5c808481d1aa</title>
|
||||
<polygon fill="cyan" stroke="black" points="1953.2,-226.53 1869.7,-195.28 1953.2,-164.03 2036.7,-195.28 1953.2,-226.53"/>
|
||||
<text text-anchor="middle" x="1953.2" y="-187.9" font-family="Times New Roman,serif" font-size="20.00">Selector</text>
|
||||
</g>
|
||||
<!-- 5461e129-ef05-4848-9107-2617c82b3566->c719600f-4033-418f-8608-5c808481d1aa -->
|
||||
<g id="edge21" class="edge">
|
||||
<title>5461e129-ef05-4848-9107-2617c82b3566->c719600f-4033-418f-8608-5c808481d1aa</title>
|
||||
<path fill="none" stroke="black" d="M1463.06,-274.6C1570.11,-257.5 1777.03,-224.43 1884.56,-207.25"/>
|
||||
<polygon fill="black" stroke="black" points="1885.09,-210.71 1894.41,-205.67 1883.99,-203.8 1885.09,-210.71"/>
|
||||
</g>
|
||||
<!-- 052d5a92-c6b4-483d-9cef-41745df61ff9 -->
|
||||
<g id="node18" class="node">
|
||||
<title>052d5a92-c6b4-483d-9cef-41745df61ff9</title>
|
||||
<polygon fill="orange" stroke="black" points="1462.72,-94.2 1462.72,-114.02 1420.24,-128.03 1360.16,-128.03 1317.68,-114.02 1317.68,-94.2 1360.16,-80.19 1420.24,-80.19 1462.72,-94.2"/>
|
||||
<text text-anchor="middle" x="1390.2" y="-96.74" font-family="Times New Roman,serif" font-size="20.00">Sequence</text>
|
||||
</g>
|
||||
<!-- 0a9876b0-1ff9-4f96-b7a8-8257a3928f62->052d5a92-c6b4-483d-9cef-41745df61ff9 -->
|
||||
<g id="edge17" class="edge">
|
||||
<title>0a9876b0-1ff9-4f96-b7a8-8257a3928f62->052d5a92-c6b4-483d-9cef-41745df61ff9</title>
|
||||
<path fill="none" stroke="black" d="M1476.99,-173.6C1462.58,-162.23 1444.43,-147.91 1428.46,-135.3"/>
|
||||
<polygon fill="black" stroke="black" points="1431.06,-132.9 1421.04,-129.45 1426.72,-138.39 1431.06,-132.9"/>
|
||||
</g>
|
||||
<!-- bfea3ed6-08c4-4fd3-9aa7-994f4be28953 -->
|
||||
<g id="node21" class="node">
|
||||
<title>bfea3ed6-08c4-4fd3-9aa7-994f4be28953</title>
|
||||
<polygon fill="lawngreen" stroke="black" points="1752.07,-122.11 1480.32,-122.11 1480.32,-86.11 1752.07,-86.11 1752.07,-122.11"/>
|
||||
<text text-anchor="middle" x="1616.2" y="-96.74" font-family="Times New Roman,serif" font-size="20.00">PutDown(Anything,Anywhere)</text>
|
||||
</g>
|
||||
<!-- 0a9876b0-1ff9-4f96-b7a8-8257a3928f62->bfea3ed6-08c4-4fd3-9aa7-994f4be28953 -->
|
||||
<g id="edge20" class="edge">
|
||||
<title>0a9876b0-1ff9-4f96-b7a8-8257a3928f62->bfea3ed6-08c4-4fd3-9aa7-994f4be28953</title>
|
||||
<path fill="none" stroke="black" d="M1529.41,-173.6C1546.17,-160.37 1567.99,-143.15 1585.56,-129.29"/>
|
||||
<polygon fill="black" stroke="black" points="1587.44,-132.26 1593.12,-123.32 1583.1,-126.77 1587.44,-132.26"/>
|
||||
</g>
|
||||
<!-- c8462c00-d129-4eba-a0b4-ad6a819e34e8 -->
|
||||
<g id="node19" class="node">
|
||||
<title>c8462c00-d129-4eba-a0b4-ad6a819e34e8</title>
|
||||
<ellipse fill="yellow" stroke="black" cx="1335.2" cy="-22.1" rx="114.2" ry="22.1"/>
|
||||
<text text-anchor="middle" x="1335.2" y="-14.72" font-family="Times New Roman,serif" font-size="20.00">Holding(Nothing)</text>
|
||||
</g>
|
||||
<!-- 052d5a92-c6b4-483d-9cef-41745df61ff9->c8462c00-d129-4eba-a0b4-ad6a819e34e8 -->
|
||||
<g id="edge18" class="edge">
|
||||
<title>052d5a92-c6b4-483d-9cef-41745df61ff9->c8462c00-d129-4eba-a0b4-ad6a819e34e8</title>
|
||||
<path fill="none" stroke="black" d="M1374.29,-79.97C1368.67,-71.79 1362.25,-62.45 1356.26,-53.74"/>
|
||||
<polygon fill="black" stroke="black" points="1359.16,-51.78 1350.61,-45.52 1353.39,-55.74 1359.16,-51.78"/>
|
||||
</g>
|
||||
<!-- 5a944a18-ea71-4cbe-a04e-675d955b1b1f -->
|
||||
<g id="node20" class="node">
|
||||
<title>5a944a18-ea71-4cbe-a04e-675d955b1b1f</title>
|
||||
<polygon fill="lawngreen" stroke="black" points="1610.95,-40.1 1467.45,-40.1 1467.45,-4.1 1610.95,-4.1 1610.95,-40.1"/>
|
||||
<text text-anchor="middle" x="1539.2" y="-14.72" font-family="Times New Roman,serif" font-size="20.00">PickUp(Coffee)</text>
|
||||
</g>
|
||||
<!-- 052d5a92-c6b4-483d-9cef-41745df61ff9->5a944a18-ea71-4cbe-a04e-675d955b1b1f -->
|
||||
<g id="edge19" class="edge">
|
||||
<title>052d5a92-c6b4-483d-9cef-41745df61ff9->5a944a18-ea71-4cbe-a04e-675d955b1b1f</title>
|
||||
<path fill="none" stroke="black" d="M1428.57,-82.51C1449.56,-71.23 1475.6,-57.25 1497.14,-45.68"/>
|
||||
<polygon fill="black" stroke="black" points="1498.51,-48.92 1505.67,-41.1 1495.2,-42.75 1498.51,-48.92"/>
|
||||
</g>
|
||||
<!-- c9d1af42-f394-4c52-9e7b-32d46487c708 -->
|
||||
<g id="node23" class="node">
|
||||
<title>c9d1af42-f394-4c52-9e7b-32d46487c708</title>
|
||||
<polygon fill="orange" stroke="black" points="2025.72,-94.2 2025.72,-114.02 1983.24,-128.03 1923.16,-128.03 1880.68,-114.02 1880.68,-94.2 1923.16,-80.19 1983.24,-80.19 2025.72,-94.2"/>
|
||||
<text text-anchor="middle" x="1953.2" y="-96.74" font-family="Times New Roman,serif" font-size="20.00">Sequence</text>
|
||||
</g>
|
||||
<!-- c719600f-4033-418f-8608-5c808481d1aa->c9d1af42-f394-4c52-9e7b-32d46487c708 -->
|
||||
<g id="edge22" class="edge">
|
||||
<title>c719600f-4033-418f-8608-5c808481d1aa->c9d1af42-f394-4c52-9e7b-32d46487c708</title>
|
||||
<path fill="none" stroke="black" d="M1953.2,-163.59C1953.2,-155.97 1953.2,-147.74 1953.2,-139.93"/>
|
||||
<polygon fill="black" stroke="black" points="1956.7,-140.04 1953.2,-130.04 1949.7,-140.04 1956.7,-140.04"/>
|
||||
</g>
|
||||
<!-- 5685125a-34f9-40cd-be0c-b7674970c01b -->
|
||||
<g id="node27" class="node">
|
||||
<title>5685125a-34f9-40cd-be0c-b7674970c01b</title>
|
||||
<polygon fill="lawngreen" stroke="black" points="2250.45,-122.11 2043.95,-122.11 2043.95,-86.11 2250.45,-86.11 2250.45,-122.11"/>
|
||||
<text text-anchor="middle" x="2147.2" y="-96.74" font-family="Times New Roman,serif" font-size="20.00">MoveTo(BrightTable6)</text>
|
||||
</g>
|
||||
<!-- c719600f-4033-418f-8608-5c808481d1aa->5685125a-34f9-40cd-be0c-b7674970c01b -->
|
||||
<g id="edge26" class="edge">
|
||||
<title>c719600f-4033-418f-8608-5c808481d1aa->5685125a-34f9-40cd-be0c-b7674970c01b</title>
|
||||
<path fill="none" stroke="black" d="M1989.69,-177.51C2020.62,-163.29 2065.23,-142.79 2099.08,-127.23"/>
|
||||
<polygon fill="black" stroke="black" points="2100.22,-130.56 2107.84,-123.2 2097.29,-124.2 2100.22,-130.56"/>
|
||||
</g>
|
||||
<!-- 84ecc165-efa0-4747-8ce9-64bf6ac557a2 -->
|
||||
<g id="node24" class="node">
|
||||
<title>84ecc165-efa0-4747-8ce9-64bf6ac557a2</title>
|
||||
<ellipse fill="yellow" stroke="black" cx="1734.2" cy="-22.1" rx="105.71" ry="22.1"/>
|
||||
<text text-anchor="middle" x="1734.2" y="-14.72" font-family="Times New Roman,serif" font-size="20.00">Holding(Coffee)</text>
|
||||
</g>
|
||||
<!-- c9d1af42-f394-4c52-9e7b-32d46487c708->84ecc165-efa0-4747-8ce9-64bf6ac557a2 -->
|
||||
<g id="edge23" class="edge">
|
||||
<title>c9d1af42-f394-4c52-9e7b-32d46487c708->84ecc165-efa0-4747-8ce9-64bf6ac557a2</title>
|
||||
<path fill="none" stroke="black" d="M1905.41,-85.65C1873.24,-73.9 1830.53,-58.29 1795.82,-45.61"/>
|
||||
<polygon fill="black" stroke="black" points="1797.34,-42.44 1786.74,-42.29 1794.93,-49.01 1797.34,-42.44"/>
|
||||
</g>
|
||||
<!-- 8d3d2c3f-1f52-4742-bb03-a02d578134de -->
|
||||
<g id="node25" class="node">
|
||||
<title>8d3d2c3f-1f52-4742-bb03-a02d578134de</title>
|
||||
<ellipse fill="yellow" stroke="black" cx="2009.2" cy="-22.1" rx="151.32" ry="22.1"/>
|
||||
<text text-anchor="middle" x="2009.2" y="-14.72" font-family="Times New Roman,serif" font-size="20.00">At(Robot,BrightTable6)</text>
|
||||
</g>
|
||||
<!-- c9d1af42-f394-4c52-9e7b-32d46487c708->8d3d2c3f-1f52-4742-bb03-a02d578134de -->
|
||||
<g id="edge24" class="edge">
|
||||
<title>c9d1af42-f394-4c52-9e7b-32d46487c708->8d3d2c3f-1f52-4742-bb03-a02d578134de</title>
|
||||
<path fill="none" stroke="black" d="M1969.4,-79.97C1975.07,-71.85 1981.55,-62.6 1987.6,-53.96"/>
|
||||
<polygon fill="black" stroke="black" points="1990.45,-55.98 1993.32,-45.78 1984.72,-51.97 1990.45,-55.98"/>
|
||||
</g>
|
||||
<!-- b5bcfc9e-f0ad-458b-ba99-19bae2fc6b12 -->
|
||||
<g id="node26" class="node">
|
||||
<title>b5bcfc9e-f0ad-458b-ba99-19bae2fc6b12</title>
|
||||
<polygon fill="lawngreen" stroke="black" points="2452.2,-40.1 2178.2,-40.1 2178.2,-4.1 2452.2,-4.1 2452.2,-40.1"/>
|
||||
<text text-anchor="middle" x="2315.2" y="-14.72" font-family="Times New Roman,serif" font-size="20.00">PutDown(Coffee,BrightTable6)</text>
|
||||
</g>
|
||||
<!-- c9d1af42-f394-4c52-9e7b-32d46487c708->b5bcfc9e-f0ad-458b-ba99-19bae2fc6b12 -->
|
||||
<g id="edge25" class="edge">
|
||||
<title>c9d1af42-f394-4c52-9e7b-32d46487c708->b5bcfc9e-f0ad-458b-ba99-19bae2fc6b12</title>
|
||||
<path fill="none" stroke="black" d="M2006.87,-87.52C2016.28,-84.96 2026,-82.41 2035.2,-80.19 2092.6,-66.34 2157.16,-53.02 2209.81,-42.74"/>
|
||||
<polygon fill="black" stroke="black" points="2210.22,-46.23 2219.37,-40.88 2208.89,-39.36 2210.22,-46.23"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 24 KiB |
|
@ -24,11 +24,17 @@ class SceneOT(Scene):
|
|||
# ]
|
||||
self.signal_event_list =[
|
||||
# (3, self.set_goal,("On(Yogurt,Bar)",)),
|
||||
(3, self.customer_say, ("System", "把盒装冰红茶放到水桌")),
|
||||
# (3, self.customer_say, ("System", "把盒装冰红茶放到水桌")),
|
||||
# (3, self.customer_say, ("System", "打开空调并降低空调温度")),
|
||||
# (3, self.customer_say, ("System", "点心")),
|
||||
# (3, self.customer_say, ("System", "把咖啡放到水桌")),
|
||||
# (3, self.customer_say, ("System", "把咖啡放到吧台上")),
|
||||
# (3, self.customer_say, ("System", "把咖啡放到吧台上,再拿一杯咖啡放到6号桌")),
|
||||
(3, self.customer_say, ("System", "把咖啡放到6号桌")),
|
||||
]
|
||||
|
||||
def _reset(self):
|
||||
self.gen_obj()
|
||||
scene = self.add_walkers([[0, 0], [250, 1200], [-55, 750], [70, -200]])
|
||||
pass
|
||||
|
||||
|
|