diff --git a/robowaiter/scene/scene.py b/robowaiter/scene/scene.py index bd105c2..25c64a2 100644 --- a/robowaiter/scene/scene.py +++ b/robowaiter/scene/scene.py @@ -208,23 +208,22 @@ class Scene: else: return True - def add_walker(self, X, Y, Yaw): - if self.use_offset: - X, Y = X + loc_offset[0], Y + loc_offset[1] - if self.reachable_check(X, Y, Yaw): - stub.AddWalker( - GrabSim_pb2.WalkerList( - walkers=[ - GrabSim_pb2.WalkerList.Walker( - id=0, - pose=GrabSim_pb2.Pose( - X=X, Y=Y, Yaw=Yaw - ), # Parameter id is useless - ) - ], - scene=self.sceneID, - ) - ) + def add_walkers(self,walker_loc=[[0, 880], [250, 1200], [-55, 750], [70, -200]]): + print('------------------add_walkers----------------------') + walker_list = [] + for i in range(len(walker_loc)): + loc = walker_loc[i] + [0, 0, 100] + action = GrabSim_pb2.Action(scene=self.sceneID, action=GrabSim_pb2.Action.ActionType.WalkTo, values=loc) + scene = stub.Do(action) + print(scene.info) + if (str(scene.info).find('unreachable') > -1): + print('当前位置不可达,无法初始化NPC') + else: + walker_list.append( + GrabSim_pb2.WalkerList.Walker(id=i + 5, pose=GrabSim_pb2.Pose(X=loc[0], Y=loc[1], Yaw=90))) + + scene = stub.AddWalker(GrabSim_pb2.WalkerList(walkers=walker_list, scene=self.sceneID)) + return scene def remove_walker(self, *args): # take single walkerID or a list of walkerIDs remove_list = [] diff --git a/robowaiter/scene/tasks/Open_tasks.py b/robowaiter/scene/tasks/Open_tasks.py index 418c809..0ba0c97 100644 --- a/robowaiter/scene/tasks/Open_tasks.py +++ b/robowaiter/scene/tasks/Open_tasks.py @@ -7,6 +7,7 @@ 具体描述:设计一套点单规则(如菜单包含咖啡、水、点心等),按照规则拟造随机的订单。在收到订单后,通过大模型让机器人输出合理的备餐计划,并尝试在模拟环境中按照这个规划实现任务。 """ +import time # todo: 接收点单信息,大模型生成任务规划 @@ -23,11 +24,12 @@ class SceneOT(Scene): ] def _reset(self): - scene = self.add_walker(0, 0, 0) - print("我有点热,能开个空调吗?") - # print("scene.walkers:",scene.walkers) - # cont = scene.walkers[0].name+":我有点热,能开个空调吗?" - # self.control_robot_action(0,3,cont) + scene = self.add_walkers([[0, 0], [250, 1200], [-55, 750], [70, -200]]) + # time.sleep(2.0) + # print("我有点热,能开个空调吗?") + print("scene.walkers:",scene.walkers) + cont = scene.walkers[0].name+":我有点热,能开个空调吗?" + self.control_robot_action(0,3,cont) # self.control_walker([self.walker_control_generator(0, False, 100, 755, 1900, 180)]) pass