更好的编写事件逻辑
This commit is contained in:
parent
1cd40c7bb7
commit
f82ef1a7b0
|
@ -10,7 +10,8 @@ class DealChat(Act):
|
||||||
self.function_success = False
|
self.function_success = False
|
||||||
self.func_map = {
|
self.func_map = {
|
||||||
"create_sub_task": self.create_sub_task,
|
"create_sub_task": self.create_sub_task,
|
||||||
"get_object_info": self.get_object_info
|
"get_object_info": self.get_object_info,
|
||||||
|
"stop_serve": self.stop_serve
|
||||||
}
|
}
|
||||||
|
|
||||||
def _update(self) -> ptree.common.Status:
|
def _update(self) -> ptree.common.Status:
|
||||||
|
@ -70,3 +71,10 @@ class DealChat(Act):
|
||||||
near_object = "大门"
|
near_object = "大门"
|
||||||
|
|
||||||
return near_object
|
return near_object
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def stop_serve(self,**args):
|
||||||
|
|
||||||
|
|
||||||
|
return "好的"
|
|
@ -137,6 +137,9 @@ class Robot(object):
|
||||||
|
|
||||||
print("\n")
|
print("\n")
|
||||||
self.last_tick_output = bt_output
|
self.last_tick_output = bt_output
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
pass
|
pass
|
|
@ -51,7 +51,9 @@ class Scene:
|
||||||
robot = None
|
robot = None
|
||||||
event_list = []
|
event_list = []
|
||||||
new_event_list = []
|
new_event_list = []
|
||||||
|
signal_event_list = []
|
||||||
show_bubble = False
|
show_bubble = False
|
||||||
|
event_signal = "None"
|
||||||
|
|
||||||
default_state = {
|
default_state = {
|
||||||
"map": {
|
"map": {
|
||||||
|
@ -99,6 +101,8 @@ class Scene:
|
||||||
robot.load_BT()
|
robot.load_BT()
|
||||||
self.robot = robot
|
self.robot = robot
|
||||||
|
|
||||||
|
self.robot_changed = False
|
||||||
|
|
||||||
# 1-7 正常执行, 8-10 控灯操作移动到6, 11-12窗帘操作不需要移动,
|
# 1-7 正常执行, 8-10 控灯操作移动到6, 11-12窗帘操作不需要移动,
|
||||||
self.op_dialog = ["","制作咖啡","倒水","夹点心","拖地","擦桌子","开筒灯","搬椅子", # 1-7
|
self.op_dialog = ["","制作咖啡","倒水","夹点心","拖地","擦桌子","开筒灯","搬椅子", # 1-7
|
||||||
"关筒灯","开大厅灯","关大厅灯","关闭窗帘","打开窗帘", # 8-12
|
"关筒灯","开大厅灯","关大厅灯","关闭窗帘","打开窗帘", # 8-12
|
||||||
|
@ -153,8 +157,9 @@ class Scene:
|
||||||
|
|
||||||
self.deal_event()
|
self.deal_event()
|
||||||
self.deal_new_event()
|
self.deal_new_event()
|
||||||
|
self.deal_signal_event()
|
||||||
self._step()
|
self._step()
|
||||||
self.robot.step()
|
self.robot_changed = self.robot.step()
|
||||||
|
|
||||||
def deal_new_event(self):
|
def deal_new_event(self):
|
||||||
if len(self.new_event_list)>0:
|
if len(self.new_event_list)>0:
|
||||||
|
@ -165,6 +170,20 @@ class Scene:
|
||||||
self.new_event_list.pop(0)
|
self.new_event_list.pop(0)
|
||||||
func(*args)
|
func(*args)
|
||||||
|
|
||||||
|
def deal_signal_event(self):
|
||||||
|
if len(self.signal_event_list)>0:
|
||||||
|
next_event = self.signal_event_list[0]
|
||||||
|
t, func,args = next_event
|
||||||
|
if t < 0 and self.robot_changed: #一直等待机器人行动,直到机器人无行动
|
||||||
|
return
|
||||||
|
if t > 0:
|
||||||
|
time.sleep(t)
|
||||||
|
|
||||||
|
print(f'event: {t}, {func.__name__}')
|
||||||
|
self.signal_event_list.pop(0)
|
||||||
|
func(*args)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def deal_event(self):
|
def deal_event(self):
|
||||||
if len(self.event_list)>0:
|
if len(self.event_list)>0:
|
||||||
|
|
|
@ -17,8 +17,9 @@ class SceneOT(Scene):
|
||||||
def __init__(self, robot):
|
def __init__(self, robot):
|
||||||
super().__init__(robot)
|
super().__init__(robot)
|
||||||
# 在这里加入场景中发生的事件
|
# 在这里加入场景中发生的事件
|
||||||
self.new_event_list = [
|
self.signal_event_list = [
|
||||||
(3, self.customer_say, ("System","来一号桌"))
|
(3, self.customer_say, ("System","来一号桌")),
|
||||||
|
(-1, self.customer_say, ("System","回去吧")),
|
||||||
# (5, self.set_goal("At(Robot,BrightTable4)"))
|
# (5, self.set_goal("At(Robot,BrightTable4)"))
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -10,12 +10,12 @@ class SceneVLM(Scene):
|
||||||
def __init__(self, robot):
|
def __init__(self, robot):
|
||||||
super().__init__(robot)
|
super().__init__(robot)
|
||||||
# 在这里加入场景中发生的事件, (事件发生的时间,事件函数)
|
# 在这里加入场景中发生的事件, (事件发生的时间,事件函数)
|
||||||
self.new_event_list = [
|
self.signal_event_list = [
|
||||||
(3, self.add_walker, (20,0,700)),
|
(3, self.add_walker, (20,0,700)),
|
||||||
(5, self.control_walker, (6, False,100, 60, 520,0)), #[walkerID,autowalk,speed,X,Y,Yaw]
|
(1, self.control_walker, (4, False,100, 60, 520,0)), #[walkerID,autowalk,speed,X,Y,Yaw]
|
||||||
# (10, self.customer_say, (6,"给我来杯酸奶和咖啡,哦对,再倒一杯水。")),
|
# (10, self.customer_say, (6,"给我来杯酸奶和咖啡,哦对,再倒一杯水。")),
|
||||||
(8, self.customer_say, (6, "来杯酸奶吧。")),
|
(-1, self.customer_say, (4, "来杯酸奶吧。")),
|
||||||
(7, self.control_walker, (6, False, 100, -250, 480, 0)), #(-100,600)
|
(-1, self.control_walker, (4, False, 100, -250, 480, 0)), #(-100,600)
|
||||||
|
|
||||||
# 有人提出要开空调和关窗帘
|
# 有人提出要开空调和关窗帘
|
||||||
# bar (60, 520)
|
# bar (60, 520)
|
||||||
|
@ -24,10 +24,10 @@ class SceneVLM(Scene):
|
||||||
# (35, self.customer_say, (7,"好热呀!太阳也好大!")),
|
# (35, self.customer_say, (7,"好热呀!太阳也好大!")),
|
||||||
# (45, self.control_walkers_and_say, ([[[7, False, 100, 270, -240, -65, "谢谢,这下凉快了!"]]])),
|
# (45, self.control_walkers_and_say, ([[[7, False, 100, 270, -240, -65, "谢谢,这下凉快了!"]]])),
|
||||||
|
|
||||||
(5, self.add_walker, (0, 0, 0)),
|
(3, self.add_walker, (0, 0, 0)),
|
||||||
(6, self.control_walker, (7, False, 100, 60, 520, 180)),
|
(1, self.control_walker, (5, False, 100, 60, 520, 180)),
|
||||||
(7, self.customer_say, (7,"好热呀!太阳也好大!")),
|
(1, self.customer_say, (5,"好热呀!太阳也好大!")),
|
||||||
(8, self.control_walkers_and_say, ([[[7, False, 100, 270, -240, -65, "谢谢,这下凉快了!"]]])),
|
(-1, self.control_walkers_and_say, ([[[5, False, 100, 270, -240, -65, "谢谢,这下凉快了!"]]])),
|
||||||
]
|
]
|
||||||
|
|
||||||
def _reset(self):
|
def _reset(self):
|
||||||
|
|
Loading…
Reference in New Issue