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