From 49c333485aeaec777d86a89223a26bff28cd20bf Mon Sep 17 00:00:00 2001 From: Caiyishuai <39987654+Caiyishuai@users.noreply.github.com> Date: Thu, 30 Nov 2023 17:36:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E3=80=80=E5=92=96?= =?UTF-8?q?=E5=95=A1=E5=8E=85=E7=9A=84=E4=B8=80=E5=A4=A9=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../retrieval/retrieval_lm/fix_questions.txt | 5 + robowaiter/behavior_lib/act/DealChat.py | 3 +- robowaiter/behavior_lib/act/GreetCustomer.py | 1 + robowaiter/behavior_lib/act/MoveTo.py | 1 + robowaiter/behavior_lib/act/ServeCustomer.py | 4 +- robowaiter/behavior_lib/cond/Exist.py | 2 + robowaiter/llm_client/data/fix_questions.txt | 261 ++++++++++++++++++ robowaiter/proto/objs.json | 2 +- robowaiter/scene/scene.py | 82 +++++- robowaiter/scene/ui/scene_ui.py | 105 +++++++ tasks_no_ui/CafeDailyOperations/CafeOneDay.py | 2 +- .../CafeDailyOperations/CafeOneDay_1128.py | 129 +++++++++ tasks_no_ui/OT/Open_tasks_bright_table.py | 3 +- tasks_no_ui/OT/Open_tasks_test.py | 6 +- 14 files changed, 596 insertions(+), 10 deletions(-) create mode 100644 robowaiter/llm_client/data/fix_questions.txt create mode 100644 tasks_no_ui/CafeDailyOperations/CafeOneDay_1128.py diff --git a/robowaiter/algos/retrieval/retrieval_lm/fix_questions.txt b/robowaiter/algos/retrieval/retrieval_lm/fix_questions.txt index 3d5df4d..e485218 100644 --- a/robowaiter/algos/retrieval/retrieval_lm/fix_questions.txt +++ b/robowaiter/algos/retrieval/retrieval_lm/fix_questions.txt @@ -31,6 +31,11 @@ create_sub_task create_sub_task {"goal":"At(Robot,BrightTable1)"} +你可以带我过去嘛? +当然,请跟我来! +create_sub_task +{"goal":"At(Robot,BrightTable1)"} + 嘿,RoboWaiter,过来一下! 我在来的路上啦,请稍等噢! diff --git a/robowaiter/behavior_lib/act/DealChat.py b/robowaiter/behavior_lib/act/DealChat.py index ae854bc..0991a34 100644 --- a/robowaiter/behavior_lib/act/DealChat.py +++ b/robowaiter/behavior_lib/act/DealChat.py @@ -1,7 +1,8 @@ import py_trees as ptree from robowaiter.behavior_lib._base.Act import Act -from robowaiter.llm_client.multi_rounds_retri import ask_llm, new_history +# from robowaiter.llm_client.multi_rounds_retri import ask_llm, new_history +from robowaiter.llm_client.multi_rounds import ask_llm, new_history import random from collections import deque diff --git a/robowaiter/behavior_lib/act/GreetCustomer.py b/robowaiter/behavior_lib/act/GreetCustomer.py index 6353d42..629c3cf 100644 --- a/robowaiter/behavior_lib/act/GreetCustomer.py +++ b/robowaiter/behavior_lib/act/GreetCustomer.py @@ -24,6 +24,7 @@ class GreetCustomer(Act): goal = Act.place_xy_yaw_dic['Bar'] if self.scene.is_nav_walk: self.scene.navigator.navigate(goal=(goal[0]-5,goal[1]), animation=False) + self.scene.walk_to(goal[0] - 4, goal[1], 180, 180, 0) else: self.scene.walk_to(goal[0] - 5, goal[1], 180, 180, 0) diff --git a/robowaiter/behavior_lib/act/MoveTo.py b/robowaiter/behavior_lib/act/MoveTo.py index f28cebf..6965505 100644 --- a/robowaiter/behavior_lib/act/MoveTo.py +++ b/robowaiter/behavior_lib/act/MoveTo.py @@ -46,6 +46,7 @@ class MoveTo(Act): goal = Act.place_xy_yaw_dic[self.target_place] if self.scene.is_nav_walk: self.scene.navigator.navigate(goal=(goal[0] + 1, goal[1]), animation=False) + self.scene.walk_to(goal[0]+2, goal[1], goal[2]) else: self.scene.walk_to(goal[0]+1,goal[1],goal[2]) # 走到物品边上 diff --git a/robowaiter/behavior_lib/act/ServeCustomer.py b/robowaiter/behavior_lib/act/ServeCustomer.py index d274b9c..6ba5509 100644 --- a/robowaiter/behavior_lib/act/ServeCustomer.py +++ b/robowaiter/behavior_lib/act/ServeCustomer.py @@ -24,6 +24,8 @@ class ServeCustomer(Act): goal = Act.place_xy_yaw_dic['Bar'] if self.scene.is_nav_walk: self.scene.navigator.navigate(goal=(goal[0] - 5, goal[1]), animation=False) + self.scene.walk_to(goal[0] - 4, goal[1], 180, 180, 0) + else: self.scene.walk_to(goal[0] - 5, goal[1], 180, 180, 0) @@ -37,7 +39,7 @@ class ServeCustomer(Act): serve_state = self.scene.state["serve_state"][customer] - if self.scene.time - serve_state['last_chat_time'] > 3: + if self.scene.time - serve_state['last_chat_time'] > 6: serve_state['served'] = True del self.scene.state["attention"]["customer"] diff --git a/robowaiter/behavior_lib/cond/Exist.py b/robowaiter/behavior_lib/cond/Exist.py index 459c556..407d030 100644 --- a/robowaiter/behavior_lib/cond/Exist.py +++ b/robowaiter/behavior_lib/cond/Exist.py @@ -15,6 +15,8 @@ class Exist(Cond): def _update(self) -> ptree.common.Status: # if self.scene.status? + + if self.name in self.scene.state["condition_set"]: return ptree.common.Status.SUCCESS else: diff --git a/robowaiter/llm_client/data/fix_questions.txt b/robowaiter/llm_client/data/fix_questions.txt new file mode 100644 index 0000000..701f909 --- /dev/null +++ b/robowaiter/llm_client/data/fix_questions.txt @@ -0,0 +1,261 @@ +你好 +您好,我是这家咖啡厅的服务员,请问您要点什么? + + +感谢,这些够啦,你去忙吧。 +ok, 有需要您再找我。 + + +做一杯咖啡 +好的,我马上做咖啡 +create_sub_task +{"goal":"On(Coffee,CoffeeTable)"} + +不用了。 +好的,您有需要再跟我说 +stop_serve +{} + +来一号桌 +好的,我马上来一号桌 +create_sub_task +{"goal":"At(Robot,Table1)"} + + +早上好呀,我想找个能晒太阳的地方。 +您右手边就有能晒太阳的位置呢。 +get_object_info +{"obj":"晒太阳的地方"} + +谢谢! +不客气,希望你在阳光下有个愉快的时光。 + + + +可以带我过去嘛? +当然,请跟我来! +create_sub_task +{"goal":"At(Robot,BrightTable1)"} + +你可以带我过去嘛? +当然,请跟我来! +create_sub_task +{"goal":"At(Robot,BrightTable1)"} + + +嘿,RoboWaiter,过来一下! +我在来的路上啦,请稍等噢! +create_sub_task +{"goal":"At(Robot,BrightTable6)"} + + +你们这有什么饮料嘛? +我们咖啡厅提供各种口味咖啡,水,冰红茶,酸奶等饮品,还提供点心蛋糕等甜品。您想点什么? + + +来杯卡布奇诺吧。 +ok,请稍等! +create_sub_task +{"goal":"On(Coffee,BrightTable6)"} + + + + +我昨天保温杯好像落在你们咖啡厅了,你看到了吗? +是的,我有印象,保温杯在大厅的2号桌子上。 +get_object_info +{"obj":"保温杯"} + + +给我来份午餐套餐。 +本店的午餐套餐包括咖啡和点心,请问您是打包还是堂食? + +打包吧,快点! +请稍等,马上就好! +create_sub_task +{"goal":"On(Dessert,Bar),On(Coffee,Bar)"} + + +你可以帮我拿来吗,我在前门的桌子前等你。 +当然,请稍等! +create_sub_task +{"goal":"On(VacuumCup,Table1)"} + +麻烦啦! +没事儿,为您服务是我的荣幸! + +大厅的桌子好啊,快带我去呀! +好的好的,请跟我来。 +create_sub_task +{"goal":"At(Robot,WaterTable)"} + + +我想来杯水,帮我孩子拿个酸奶吧。 +ok,没问题,请稍等! +create_sub_task +{"goal":"On(Water,WaterTable),On(Yogurt,WaterTable)"} + +来杯酸奶吧。 +好的没问题,请稍等! +create_sub_task +{"goal":"On(Yogurt,WaterTable)"} + + +还有酸奶吗 +不好意思,酸奶卖完了呢 +get_number_of_objects +{"obj":"酸奶"} + +那好吧,那就先把窗帘给我关上,再开个空调 +抱歉,我这就去开空调和关窗帘。 +create_sub_task +{"goal":"Is(AC,On),Is(Curtain,Off)"} + + +下班啦!别忘了打扫卫生。 +收到!下班啦! +create_sub_task +{"goal":"Is(Floor,Clean),Is(Table1,Clean),Is(Chairs,Clean),Is(AC,Off),Is(HallLight,Off),Is(TubeLight,Off),Is(Curtain,Off)"} + + +请问洗手间在哪里? +洗手间在这附近 +get_object_info +{"obj":"洗手间"} + + + +给我来杯酸奶和冰红茶,我坐在对面的桌子那儿。 +好的,请稍等。 +create_sub_task +{"goal":"On(BottledDrink,WaterTable),On(Yogurt,WaterTable)"} + + +给我来份薯片和果汁,我坐在对面的桌子那儿。 +好的,请稍等。 +create_sub_task +{"goal":"On(Chips,WaterTable),On(NFCJuice,WaterTable)"} + +给我来份薯片和果汁,我坐在对面的水杯桌那儿。 +好的,请稍等。 +create_sub_task +{"goal":"On(Chips,WaterTable),On(NFCJuice,WaterTable)"} + +好热呀,想开空调,想要温度调低点! +抱歉,我马上去开空调并调低空调温度。 +create_sub_task +{"goal":"Is(ACTemperature,Down)"} + +请问有空位吗? +现在有不少空位呢,请问您有什么要求嘛? + +我想坐高脚凳子。 +没问题,大厅里就有这样的位置呢! +get_object_info +{"obj":"高脚凳子的空位"} + + +你带我去吧。 +OK,请跟我来! +create_sub_task +{"goal":"At(Robot,BrightTable5)"} + + +可以关筒灯和关窗帘吗? +好的,请稍等。 +create_sub_task +{"goal":"Is(TubeLight,Off),Is(Curtain,Off)"} + + +给我来杯咖啡,哦对,再倒一杯水。 +速速就好,请稍等! +create_sub_task +{"goal":"On(Water,WaterTable),On(Coffee,WaterTable)"} + + +我想来份点心和酸奶。 +稍等片刻噢~ +create_sub_task +{"goal":"On(Yogurt,Bar),On(Dessert,Bar)"} + +酸奶。 +稍等片刻噢~ +create_sub_task +{"goal":"On(Yogurt,Bar)"} + + + +你好呀,你们这有啥好吃的? +我们咖啡厅有咖啡,还有饮料和点心蛋糕呢?您想点什么不? +get_object_info +{"obj":"饮料,水果,点心"} + + +听起来都好甜呀,我女朋友爱吃水果。 +没问题,我们也提供草莓、橘子和苹果等水果呢。 + + +你们这人可真多。 +目前还有空位呢,你们可以坐下来一起品尝水果呢? +get_object_info +{"obj":"空位"} + +我女朋友怕晒,有空余的阴凉位置嘛? +我查询完毕,阴凉位置有两个。在你们右侧往里走,就有适合你们二位的沙发呢。 +get_object_info +{"obj":"阴凉空位"} + +那还不错。 +是的,那边安静,不会晒到太阳呢。 + +我们还想一起下下棋,切磋切磋。 +我们这有两份军棋呢,在大厅的三号桌上。 +get_object_info +{"obj":"棋"} + +请问洗手间在哪呢? +在后门,你们的左侧往里走就是了呢。 +get_object_info +{"obj":"洗手间"} + +我带着孩子呢,想要宽敞亮堂的地方。 +好的,我明白了,那么我们推荐您到大厅的桌子,那里的空间比较宽敞,环境也比较明亮,适合带着孩子一起用餐。 + + +冰红茶 +好的 +create_sub_task +{"goal":"On(Yogurt,WaterTable)"} + + +水杯 +好的 +create_sub_task +{"goal":"On(Water,Bar)"} + +点心 +好的 +create_sub_task +{"goal":"On(Dessert,Bar)"} + +酸奶 +好的 +create_sub_task +{"goal":"On(Yogurt,Bar)"} + + +做一杯咖啡 +好的,我马上做咖啡 +create_sub_task +{"goal":"On(Coffee,CoffeeTable)"} + + +把盒装冰红茶放到水桌 +好的 +create_sub_task +{"goal":"On(Softdrink,WaterTable)"} + +点心 +好的 +create_sub_task +{"goal":"On(Dessert,Bar)"} \ No newline at end of file diff --git a/robowaiter/proto/objs.json b/robowaiter/proto/objs.json index a4f253e..69de70a 100644 --- a/robowaiter/proto/objs.json +++ b/robowaiter/proto/objs.json @@ -1 +1 @@ -[{"id": "0", "name": "Desk", "location": "Y: -6.000000212225132e-06\nZ: 144.0\n", "height": "288.0"}, {"id": "1", "name": "Desk", "location": "Z: 148.0\n", "height": "296.0"}, {"id": "2", "name": "Desk", "location": "X: -79.99998474121094\nY: -310.0\nZ: 48.0\n", "height": "96.0"}, {"id": "3", "name": "XiangGui", "location": "X: 1.2000000424450263e-05\nY: -6.000000212225132e-06\nZ: 144.0\n", "height": "144.0"}, {"id": "4", "name": "BaTai", "location": "X: 1.2000000424450263e-05\nY: -6.000000212225132e-06\nZ: 144.0\n", "height": "144.0"}, {"id": "5", "name": "Chair", "location": "X: -159.99998474121094\nY: 72.99999237060547\nZ: 40.0\n", "height": "80.0"}, {"id": "6", "name": "Chair", "location": "X: 53.99998092651367\nY: 1217.0\nZ: 34.0\n", "height": "68.0"}, {"id": "7", "name": "Chair", "location": "X: 384.9216613769531\nY: 1133.7135009765625\nZ: 40.0\n", "height": "80.0"}, {"id": "8", "name": "Chair", "location": "X: 316.6040344238281\nY: 1076.7864990234375\nZ: 40.0\n", "height": "80.0"}, {"id": "9", "name": "Chair", "location": "X: 170.00001525878906\nY: -330.0\nZ: 40.0\n", "height": "80.0"}, {"id": "10", "name": "Chair", "location": "X: 41.99998474121094\nY: 1134.0\nZ: 34.0\n", "height": "68.0"}, {"id": "11", "name": "Chair", "location": "X: -234.00001525878906\nY: 842.0\nZ: 34.0\n", "height": "68.0"}, {"id": "12", "name": "Chair", "location": "X: -300.0\nY: 249.99998474121094\nZ: 36.0\n", "height": "72.0"}, {"id": "13", "name": "Chair", "location": "X: -151.39605712890625\nY: 576.6644897460938\nZ: 40.0\n", "height": "80.0"}, {"id": "14", "name": "Broom", "location": "X: -120.0\nY: 770.0\n", "height": "0.0"}, {"id": "15", "name": "BoJi", "location": "X: -160.0\nY: 740.0\n", "height": "0.0"}, {"id": "16", "name": "SaoBa", "location": "X: -180.0\nY: 720.0\n", "height": "0.0"}, {"id": "17", "name": "TuoBu", "location": "X: -200.0\nY: 685.0\nZ: 3.5\n", "height": "3.5"}, {"id": "18", "name": "Kettle", "location": "X: -137.76065063476562\nY: 436.5726318359375\nZ: 89.0\n", "height": "89.0"}, {"id": "19", "name": "TuoPan", "location": "X: 179.0\nY: 470.0\nZ: 95.0\n", "height": "95.0"}, {"id": "20", "name": "CoffeeCup", "location": "X: 150.0\nY: 471.0\nZ: 84.0\n", "height": "84.0"}, {"id": "21", "name": "Box", "location": "X: 132.0\nY: 445.0\nZ: 89.0\n", "height": "89.0"}, {"id": "22", "name": "Spoon", "location": "X: 132.5\nY: 446.0\nZ: 90.0\n", "height": "90.0"}, {"id": "23", "name": "Sugar", "location": "X: 361.0\nY: 743.0\nZ: 90.5\n", "height": "90.5"}, {"id": "24", "name": "WaterCup", "location": "X: 400.0\nY: 829.0999755859375\nZ: 96.0\n", "height": "96.0"}, {"id": "25", "name": "XiGuan", "location": "X: 146.0\nY: 445.0\nZ: 90.69999694824219\n", "height": "90.69999694824219"}, {"id": "26", "name": "ZhiBeiHe", "location": "X: 152.0\nY: 292.0\nZ: 96.0\n", "height": "96.0"}, {"id": "27", "name": "IceMachine", "location": "X: 410.0\nY: 810.0\nZ: 115.0\n", "height": "115.0"}, {"id": "28", "name": "ZaoTai", "location": "X: 1.2000000424450263e-05\nY: -6.000000212225132e-06\nZ: 144.0\n", "height": "144.0"}, {"id": "29", "name": "TuoPan", "location": "X: 334.0\nY: 670.0\nZ: 91.0\n", "height": "91.0"}, {"id": "30", "name": "WaterCup", "location": "X: 159.99998474121094\nY: 840.0\nZ: 92.0\n", "height": "92.0"}, {"id": "31", "name": "WaterCup", "location": "X: 149.99998474121094\nY: 830.0\nZ: 92.0\n", "height": "92.0"}, {"id": "32", "name": "Apple", "location": "X: 330.0\nY: 760.0\nZ: 85.0\n", "height": "85.0"}, {"id": "33", "name": "ChaZuo", "location": "X: 543.0\nY: 1079.0\nZ: 64.0\n", "height": "64.0"}, {"id": "34", "name": "ChaTou", "location": "X: 540.0\nY: 1092.0\nZ: 48.0\n", "height": "48.0"}, {"id": "35", "name": "KaoXiang", "location": "X: 1.2000000424450263e-05\nY: -6.000000212225132e-06\nZ: 144.0\n", "height": "144.0"}, {"id": "36", "name": "Knife", "location": "X: 318.0\nY: 780.0\nZ: 85.0\n", "height": "85.0"}, {"id": "37", "name": "BaTai", "location": "X: -20.0\nY: -6.000000212225132e-06\nZ: 144.0\n", "height": "144.0"}, {"id": "38", "name": "Chair", "location": "X: 3.999983072280884\nY: 1169.0\nZ: 34.0\n", "height": "68.0"}, {"id": "39", "name": "Chair", "location": "X: -159.99998474121094\nY: 159.99998474121094\nZ: 40.0\n", "height": "80.0"}, {"id": "40", "name": "Towel", "location": "X: 270.2892150878906\nY: 985.1807250976562\nZ: 92.29227447509766\n", "height": "92.29227447509766"}, {"id": "41", "name": "Plate", "location": "X: 360.0\nY: 740.0\nZ: 89.0\n", "height": "89.0"}, {"id": "42", "name": "Cake", "location": "X: 158.99998474121094\nY: 863.0\nZ: 139.0\n", "height": "139.0"}, {"id": "43", "name": "Cake", "location": "X: 180.0\nY: 636.6373901367188\nZ: 82.0\n", "height": "82.0"}, {"id": "44", "name": "XiangGui", "location": "X: 194.0\nY: 655.0\nZ: 90.0\n", "height": "90.0"}, {"id": "45", "name": "Bread", "location": "X: 158.0\nY: 688.0\nZ: 108.0\n", "height": "108.0"}, {"id": "46", "name": "Bread", "location": "X: 162.0\nY: 676.0\nZ: 78.0\n", "height": "78.0"}, {"id": "47", "name": "Chair", "location": "X: -189.00001525878906\nY: 821.0\nZ: 34.0\n", "height": "68.0"}, {"id": "48", "name": "Chair", "location": "X: -160.0\nY: 249.99998474121094\nZ: 40.0\n", "height": "80.0"}, {"id": "49", "name": "Chair", "location": "X: -420.0\nY: 399.9999694824219\nZ: 34.0\n", "height": "68.0"}, {"id": "50", "name": "Desk", "location": "X: -2.0\nY: -6.000000212225132e-06\nZ: 144.0\n", "height": "288.0"}, {"id": "51", "name": "Plate", "location": "X: 181.12826538085938\nY: 606.5259399414062\nZ: 83.41112518310547\n", "height": "83.41112518310547"}, {"id": "52", "name": "Cake", "location": "X: 156.99998474121094\nY: 860.0\nZ: 115.5\n", "height": "115.5"}, {"id": "53", "name": "Cake", "location": "X: 155.99998474121094\nY: 858.0\nZ: 139.0\n", "height": "139.0"}, {"id": "54", "name": "WaterCup", "location": "X: 159.99998474121094\nY: 850.0\nZ: 92.0\n", "height": "92.0"}, {"id": "55", "name": "LaJiTong", "location": "X: 525.0\nY: 985.0\nZ: 3.0\n", "height": "3.0"}, {"id": "56", "name": "Chair", "location": "X: -300.0\nY: 320.0\nZ: 36.0\n", "height": "72.0"}, {"id": "57", "name": "Chair", "location": "X: -197.7161865234375\nY: 430.29150390625\nZ: 40.0\n", "height": "80.0"}, {"id": "58", "name": "Chair", "location": "X: 229.00001525878906\nY: -315.0\nZ: 40.0\n", "height": "80.0"}, {"id": "59", "name": "Desk", "location": "X: 129.99998474121094\nY: 1255.0\nZ: 20.0\n", "height": "40.0"}, {"id": "60", "name": "ZhiBeiHe", "location": "X: 152.0\nY: 422.0\nZ: 83.0\n", "height": "83.0"}, {"id": "61", "name": "KaiGuan", "location": "X: 543.0\nY: 1102.0\nZ: 114.0\n", "height": "114.0"}, {"id": "62", "name": "KaiGuan", "location": "X: 339.7881774902344\nY: -183.87770080566406\nZ: 114.0\n", "height": "114.0"}, {"id": "63", "name": "Sofa", "location": "X: 1.2000000424450263e-05\nY: -6.000000212225132e-06\nZ: 144.0\n", "height": "144.0"}, {"id": "64", "name": "Chair", "location": "X: -350.0\nY: 490.0\nZ: 34.0\n", "height": "68.0"}, {"id": "65", "name": "Chair", "location": "X: 158.99998474121094\nY: 1320.0\nZ: 34.0\n", "height": "68.0"}, {"id": "66", "name": "Chair", "location": "X: -290.0\nY: 169.99998474121094\nZ: 36.0\n", "height": "72.0"}, {"id": "67", "name": "Chair", "location": "X: 91.99998474121094\nY: 1182.0\nZ: 34.0\n", "height": "68.0"}, {"id": "68", "name": "Desk", "location": "X: 400.0000305175781\nY: -350.0\nZ: 48.0\n", "height": "96.0"}, {"id": "69", "name": "Desk", "location": "X: -360.0\nY: 119.99998474121094\nZ: 20.0\n", "height": "40.0"}, {"id": "70", "name": "Desk", "location": "X: -310.0\nY: -1.2999999853491317e-05\nZ: 22.5\n", "height": "45.0"}, {"id": "71", "name": "Desk", "location": "X: -30.000015258789062\nY: 1080.0\nZ: 20.0\n", "height": "40.0"}, {"id": "72", "name": "Desk", "location": "X: -380.0\nY: 270.0\nZ: 20.0\n", "height": "40.0"}, {"id": "73", "name": "Chair", "location": "X: -73.00001525878906\nY: 997.0\nZ: 34.0\n", "height": "68.0"}, {"id": "74", "name": "Chair", "location": "X: 390.0000305175781\nY: -400.0\nZ: 40.0\n", "height": "80.0"}, {"id": "75", "name": "Desk", "location": "X: 210.00001525878906\nY: -350.0\nZ: 48.0\n", "height": "96.0"}, {"id": "76", "name": "Chair", "location": "X: -190.0\nY: 510.0\nZ: 40.0\n", "height": "80.0"}, {"id": "77", "name": "Cake", "location": "X: 166.99998474121094\nY: 850.0\nZ: 115.0\n", "height": "115.0"}, {"id": "78", "name": "Plate", "location": "X: 330.0\nY: 270.0\nZ: 84.0\n", "height": "84.0"}, {"id": "79", "name": "WaterCup", "location": "X: 149.99998474121094\nY: 840.0\nZ: 92.0\n", "height": "92.0"}, {"id": "80", "name": "WaterCup", "location": "X: 132.0\nY: 435.5\nZ: 89.5\n", "height": "89.5"}, {"id": "81", "name": "XiangGui", "location": "X: 194.0\nY: 716.5267944335938\nZ: 90.0\n", "height": "90.0"}, {"id": "82", "name": "Bread", "location": "X: 178.0\nY: 697.0\nZ: 54.5\n", "height": "54.5"}, {"id": "83", "name": "Bread", "location": "X: 161.0\nY: 638.0\nZ: 108.0\n", "height": "108.0"}, {"id": "84", "name": "Bread", "location": "X: 178.0\nY: 712.0\nZ: 54.5\n", "height": "54.5"}, {"id": "85", "name": "Clip", "location": "X: 198.8828125\nY: 558.66650390625\nZ: 85.95439910888672\n", "height": "85.95439910888672"}, {"id": "86", "name": "CoffeeMachine", "location": "X: 360.0\nY: 540.0\nZ: 84.0\n", "height": "84.0"}, {"id": "87", "name": "TuoPan", "location": "X: 334.0\nY: 670.0\nZ: 87.0\n", "height": "87.0"}, {"id": "88", "name": "Sugar", "location": "X: 357.0\nY: 742.0\nZ: 90.5\n", "height": "90.5"}, {"id": "89", "name": "CoffeeBag", "location": "X: 450.0\nY: 808.0\nZ: 169.0\n", "height": "169.0"}, {"id": "90", "name": "Chair", "location": "X: -41.83454513549805\nY: -68.69022369384766\nZ: 40.0\n", "height": "80.0"}, {"id": "91", "name": "Chair", "location": "X: -400.0\nY: 449.9999694824219\nZ: 34.0\n", "height": "68.0"}, {"id": "92", "name": "Chair", "location": "X: -113.00001525878906\nY: 1029.0\nZ: 34.0\n", "height": "68.0"}, {"id": "93", "name": "Desk", "location": "X: -2.0\nY: -5.99999930273043e-06\nZ: 144.0\n", "height": "288.0"}, {"id": "94", "name": "Desk", "location": "X: 1.2000000424450263e-05\nY: -6.000000212225132e-06\nZ: 144.0\n", "height": "288.0"}, {"id": "95", "name": "Desk", "location": "X: -180.00001525878906\nY: 900.0\nZ: 20.0\n", "height": "40.0"}, {"id": "96", "name": "Chair", "location": "X: -116.00000762939453\nY: 947.0\nZ: 34.0\n", "height": "68.0"}, {"id": "97", "name": "Kettle", "location": "X: 370.0\nY: 410.0\nZ: 105.0\n", "height": "105.0"}, {"id": "98", "name": "Bread", "location": "X: 146.0\nY: 636.0\nZ: 51.0\n", "height": "51.0"}, {"id": "99", "name": "Box", "location": "X: 152.0\nY: 275.0\nZ: 102.0\n", "height": "102.0"}, {"id": "100", "name": "CoffeeMachine", "location": "X: 163.37042236328125\nY: 320.0\nZ: 97.0\n", "height": "97.0"}, {"id": "101", "name": "CoffeeMachine", "location": "X: 350.0\nY: 460.0\nZ: 84.0\n", "height": "84.0"}, {"id": "102", "name": "Plate", "location": "X: 330.0\nY: 300.0\nZ: 84.0\n", "height": "84.0"}, {"id": "103", "name": "Spoon", "location": "X: 134.5\nY: 443.0\nZ: 90.0\n", "height": "90.0"}, {"id": "104", "name": "ZhiBeiHe", "location": "X: 516.0\nY: 900.0\nZ: 84.0\n", "height": "84.0"}, {"id": "105", "name": "WaterCup", "location": "X: 159.99998474121094\nY: 830.0\nZ: 92.0\n", "height": "92.0"}, {"id": "106", "name": "WaterCup", "location": "X: 149.99998474121094\nY: 850.0\nZ: 92.0\n", "height": "92.0"}, {"id": "107", "name": "CoffeeCup", "location": "X: 140.0\nY: 180.0\nZ: 83.0\n", "height": "83.0"}, {"id": "108", "name": "Cake", "location": "X: 170.99998474121094\nY: 855.0\nZ: 139.0\n", "height": "139.0"}, {"id": "109", "name": "Cake", "location": "X: 170.99998474121094\nY: 857.0\nZ: 117.0\n", "height": "117.0"}, {"id": "110", "name": "TuoPan", "location": "X: 179.0\nY: 470.0\nZ: 93.0\n", "height": "93.0"}, {"id": "111", "name": "Mug", "location": "X: 377.0\nY: 520.0\nZ: 161.0\n", "height": "161.0"}, {"id": "112", "name": "Mug", "location": "X: 377.0\nY: 413.0\nZ: 170.0\n", "height": "170.0"}, {"id": "113", "name": "Mug", "location": "X: 377.0\nY: 117.0\nZ: 170.0\n", "height": "170.0"}, {"id": "114", "name": "Apple", "location": "X: 343.4442138671875\nY: 760.1776123046875\nZ: 85.0\n", "height": "85.0"}, {"id": "115", "name": "Chair", "location": "X: -300.0\nY: 660.0\nZ: 34.0\n", "height": "68.0"}, {"id": "116", "name": "Chair", "location": "X: -156.00001525878906\nY: 977.0\nZ: 34.0\n", "height": "68.0"}, {"id": "117", "name": "Chair", "location": "X: -249.99998474121094\nY: 9.999987602233887\nZ: 36.0\n", "height": "72.0"}, {"id": "118", "name": "CoffeeMachine", "location": "X: 332.0\nY: 580.0\nZ: 89.0\n", "height": "89.0"}, {"id": "119", "name": "CoffeeMachine", "location": "X: 143.0\nY: 373.0\nZ: 97.0\n", "height": "97.0"}, {"id": "120", "name": "ZhiBeiHe", "location": "X: 150.0\nY: 222.0\nZ: 83.0\n", "height": "83.0"}, {"id": "121", "name": "Box", "location": "X: 132.0\nY: 435.0\nZ: 89.0\n", "height": "89.0"}, {"id": "122", "name": "CoffeeCup", "location": "X: 323.010009765625\nY: 33.000003814697266\nZ: 95.0\n", "height": "95.0"}, {"id": "123", "name": "TuoPan", "location": "X: 174.00001525878906\nY: 170.0\nZ: 87.0\n", "height": "87.0"}, {"id": "124", "name": "Bread", "location": "X: 164.0\nY: 637.0\nZ: 52.0\n", "height": "52.0"}, {"id": "125", "name": "Bread", "location": "X: 177.0\nY: 733.4129028320312\nZ: 81.0\n", "height": "81.0"}, {"id": "126", "name": "Bread", "location": "X: 154.0\nY: 647.0\nZ: 51.0\n", "height": "51.0"}, {"id": "127", "name": "Bread", "location": "X: 176.0\nY: 728.0\nZ: 110.0\n", "height": "110.0"}, {"id": "128", "name": "Bread", "location": "X: 155.0\nY: 734.0\nZ: 80.0\n", "height": "80.0"}, {"id": "129", "name": "Bread", "location": "X: 180.0\nY: 735.0\nZ: 53.0\n", "height": "53.0"}, {"id": "130", "name": "Bread", "location": "X: 184.0\nY: 660.0\nZ: 82.0\n", "height": "82.0"}, {"id": "131", "name": "Bread", "location": "X: 145.0\nY: 652.0\nZ: 79.0\n", "height": "79.0"}, {"id": "132", "name": "Bread", "location": "X: 142.0\nY: 671.0\nZ: 50.0\n", "height": "50.0"}, {"id": "133", "name": "Bread", "location": "X: 140.0\nY: 668.0\nZ: 106.0\n", "height": "106.0"}, {"id": "134", "name": "Bread", "location": "X: 173.0\nY: 647.0\nZ: 53.0\n", "height": "53.0"}, {"id": "135", "name": "Bread", "location": "X: 157.0\nY: 635.0\nZ: 79.0\n", "height": "79.0"}, {"id": "136", "name": "Bread", "location": "X: 140.0\nY: 688.0\nZ: 106.0\n", "height": "106.0"}, {"id": "137", "name": "Bread", "location": "X: 160.0\nY: 712.0\nZ: 52.0\n", "height": "52.0"}, {"id": "138", "name": "Mug", "location": "X: 377.0\nY: 220.0\nZ: 161.0\n", "height": "161.0"}, {"id": "139", "name": "Mug", "location": "X: 377.0\nY: 506.0\nZ: 161.0\n", "height": "161.0"}, {"id": "140", "name": "Container", "location": "X: 370.0\nY: 360.0\nZ: 84.0\n", "height": "84.0"}, {"id": "141", "name": "Chair", "location": "X: -350.0\nY: 560.0\nZ: 34.0\n", "height": "68.0"}, {"id": "142", "name": "Chair", "location": "X: -80.0\nY: 60.0\nZ: 40.0\n", "height": "80.0"}, {"id": "143", "name": "Chair", "location": "X: 400.0000305175781\nY: -300.0\nZ: 40.0\n", "height": "80.0"}, {"id": "144", "name": "Chair", "location": "X: -280.0\nY: 99.99998474121094\nZ: 36.0\n", "height": "72.0"}, {"id": "145", "name": "Kettle", "location": "X: 130.00001525878906\nY: 150.0\nZ: 104.0\n", "height": "104.0"}, {"id": "146", "name": "CoffeeMachine", "location": "X: 350.0\nY: 580.0\nZ: 84.0\n", "height": "84.0"}, {"id": "147", "name": "CoffeeMachine", "location": "X: 150.0\nY: 250.0\nZ: 123.0\n", "height": "123.0"}, {"id": "148", "name": "Spoon", "location": "X: 134.5\nY: 446.0\nZ: 90.0\n", "height": "90.0"}, {"id": "149", "name": "XiGuan", "location": "X: 146.0\nY: 444.5\nZ: 92.0\n", "height": "92.0"}, {"id": "150", "name": "CoffeeCup", "location": "X: 130.0\nY: 180.0\nZ: 84.0\n", "height": "84.0"}, {"id": "151", "name": "TuoPan", "location": "X: 334.0\nY: 670.0\nZ: 89.0\n", "height": "89.0"}, {"id": "152", "name": "Mug", "location": "X: 377.0\nY: 513.0\nZ: 170.0\n", "height": "170.0"}, {"id": "153", "name": "Mug", "location": "X: 377.0\nY: 110.0\nZ: 161.0\n", "height": "161.0"}, {"id": "154", "name": "Bread", "location": "X: 181.0\nY: 710.0\nZ: 81.19999694824219\n", "height": "81.19999694824219"}, {"id": "155", "name": "Bread", "location": "X: 135.0\nY: 734.0\nZ: 78.0\n", "height": "78.0"}, {"id": "156", "name": "Bread", "location": "X: 137.0\nY: 635.0\nZ: 78.0\n", "height": "78.0"}, {"id": "157", "name": "Bread", "location": "X: 160.0\nY: 670.0\nZ: 108.0\n", "height": "108.0"}, {"id": "158", "name": "Bread", "location": "X: 145.0\nY: 660.0\nZ: 79.0\n", "height": "79.0"}, {"id": "159", "name": "Bread", "location": "X: 176.0\nY: 708.0\nZ: 110.0\n", "height": "110.0"}, {"id": "160", "name": "Bread", "location": "X: 140.0\nY: 735.0\nZ: 49.0\n", "height": "49.0"}, {"id": "161", "name": "Glass", "location": "X: 129.0\nY: 257.0\nZ: 144.5\n", "height": "144.5"}, {"id": "162", "name": "Container", "location": "X: 370.0\nY: 390.0\nZ: 84.0\n", "height": "84.0"}, {"id": "163", "name": "Chair", "location": "X: 350.0000305175781\nY: -350.0\nZ: 40.0\n", "height": "80.0"}, {"id": "164", "name": "Chair", "location": "X: -80.0\nY: 230.0\nZ: 40.0\n", "height": "80.0"}, {"id": "165", "name": "Chair", "location": "X: 193.99998474121094\nY: 1283.0\nZ: 34.0\n", "height": "68.0"}, {"id": "166", "name": "Chair", "location": "X: -310.0\nY: 600.0\nZ: 34.0\n", "height": "68.0"}, {"id": "167", "name": "Chair", "location": "X: 249.00001525878906\nY: -365.0\nZ: 40.0\n", "height": "80.0"}, {"id": "168", "name": "CoffeeMachine", "location": "X: 349.0\nY: 620.0\nZ: 84.0\n", "height": "84.0"}, {"id": "169", "name": "DrinkMachine", "location": "X: 345.0\nY: 42.000003814697266\nZ: 131.0\n", "height": "131.0"}, {"id": "170", "name": "Mug", "location": "X: 377.0\nY: 611.0\nZ: 170.0\n", "height": "170.0"}, {"id": "171", "name": "CoffeeMachine", "location": "X: 360.0\nY: 190.0\nZ: 114.0\n", "height": "114.0"}, {"id": "172", "name": "CoffeeMachine", "location": "X: 350.0\nY: 510.0\nZ: 84.0\n", "height": "84.0"}, {"id": "173", "name": "Mug", "location": "X: 377.0\nY: 320.0\nZ: 161.0\n", "height": "161.0"}, {"id": "174", "name": "Mug", "location": "X: 377.0\nY: 206.0\nZ: 161.0\n", "height": "161.0"}, {"id": "175", "name": "Mug", "location": "X: 377.0\nY: 213.0\nZ: 170.0\n", "height": "170.0"}, {"id": "176", "name": "Mug", "location": "X: 377.0\nY: 313.0\nZ: 170.0\n", "height": "170.0"}, {"id": "177", "name": "TuoPan", "location": "X: 174.00001525878906\nY: 170.0\nZ: 84.5\n", "height": "84.5"}, {"id": "178", "name": "CoffeeCup", "location": "X: 130.0\nY: 190.0\nZ: 84.0\n", "height": "84.0"}, {"id": "179", "name": "Glass", "location": "X: -133.5\nY: 466.0\nZ: 89.0\n", "height": "89.0"}, {"id": "180", "name": "Container", "location": "X: 370.0\nY: 370.0\nZ: 84.0\n", "height": "84.0"}, {"id": "181", "name": "CoffeeMachine", "location": "X: 360.0\nY: 214.0\nZ: 114.0\n", "height": "114.0"}, {"id": "182", "name": "CoffeeMachine", "location": "X: 350.0\nY: 154.0\nZ: 84.0\n", "height": "84.0"}, {"id": "183", "name": "Plate", "location": "X: 163.99998474121094\nY: 856.0\nZ: 111.0\n", "height": "111.0"}, {"id": "184", "name": "Cake", "location": "X: 156.99998474121094\nY: 852.0\nZ: 139.0\n", "height": "139.0"}, {"id": "185", "name": "Bread", "location": "X: 175.0\nY: 688.0\nZ: 109.0\n", "height": "109.0"}, {"id": "186", "name": "Bread", "location": "X: 181.0\nY: 700.0\nZ: 81.19999694824219\n", "height": "81.19999694824219"}, {"id": "187", "name": "Bread", "location": "X: 140.0\nY: 712.0\nZ: 50.0\n", "height": "50.0"}, {"id": "188", "name": "Bread", "location": "X: 141.0\nY: 638.0\nZ: 107.0\n", "height": "107.0"}, {"id": "189", "name": "Bread", "location": "X: 169.0\nY: 700.0\nZ: 81.19999694824219\n", "height": "81.19999694824219"}, {"id": "190", "name": "Bread", "location": "X: 161.0\nY: 648.0\nZ: 108.0\n", "height": "108.0"}, {"id": "191", "name": "Bread", "location": "X: 157.0\nY: 710.0\nZ: 108.0\n", "height": "108.0"}, {"id": "192", "name": "Bread", "location": "X: 178.0\nY: 671.0\nZ: 54.0\n", "height": "54.0"}, {"id": "193", "name": "Bread", "location": "X: 135.0\nY: 660.0\nZ: 78.0\n", "height": "78.0"}, {"id": "194", "name": "Sugar", "location": "X: 357.0\nY: 744.0\nZ: 90.5\n", "height": "90.5"}, {"id": "195", "name": "CoffeeBag", "location": "X: 425.0\nY: 787.0\nZ: 169.0\n", "height": "169.0"}, {"id": "196", "name": "CoffeeCup", "location": "X: 130.00001525878906\nY: 170.0\nZ: 84.0\n", "height": "84.0"}, {"id": "197", "name": "CoffeeCup", "location": "X: 187.5\nY: 352.5\nZ: 105.69999694824219\n", "height": "105.69999694824219"}, {"id": "198", "name": "TuoPan", "location": "X: 179.0\nY: 470.0\nZ: 91.0\n", "height": "91.0"}, {"id": "199", "name": "BaoJing", "location": "X: 360.8000183105469\nY: -199.0\nZ: 115.0\n", "height": "115.0"}, {"id": "200", "name": "KongTiao", "location": "X: 300.5\nY: -140.0\nZ: 114.0\n", "height": "114.0"}, {"id": "201", "name": "BaoJing", "location": "X: 362.10003662109375\nY: -197.0\nZ: 115.0\n", "height": "115.0"}, {"id": "202", "name": "KaiGuan", "location": "X: 342.0000305175781\nY: -184.28216552734375\nZ: 114.0\n", "height": "114.0"}, {"id": "203", "name": "Mug", "location": "X: 377.0\nY: 420.0\nZ: 161.0\n", "height": "161.0"}, {"id": "204", "name": "Mug", "location": "X: 377.0\nY: 306.0\nZ: 161.0\n", "height": "161.0"}, {"id": "205", "name": "Container", "location": "X: 370.0\nY: 380.0\nZ: 84.0\n", "height": "84.0"}, {"id": "206", "name": "Glass", "location": "X: 140.0\nY: 460.0\nZ: 84.0\n", "height": "84.0"}, {"id": "207", "name": "TuoPan", "location": "X: 179.0\nY: 470.0\nZ: 89.0\n", "height": "89.0"}, {"id": "208", "name": "Sugar", "location": "X: 359.0\nY: 741.0\nZ: 93.0\n", "height": "93.0"}, {"id": "209", "name": "Mug", "location": "X: 377.0\nY: 604.0\nZ: 161.0\n", "height": "161.0"}, {"id": "210", "name": "Mug", "location": "X: 377.0\nY: 617.0\nZ: 161.0\n", "height": "161.0"}, {"id": "211", "name": "Mug", "location": "X: 377.0\nY: 123.0\nZ: 161.0\n", "height": "161.0"}, {"id": "212", "name": "Mug", "location": "X: 377.0\nY: 406.0\nZ: 161.0\n", "height": "161.0"}, {"id": "213", "name": "Glass", "location": "X: 324.0\nY: 56.000003814697266\nZ: 89.0\n", "height": "89.0"}, {"id": "214", "name": "Container", "location": "X: 370.0\nY: 370.0\nZ: 104.0\n", "height": "104.0"}, {"id": "215", "name": "TuoPan", "location": "X: 179.0\nY: 470.0\nZ: 87.0\n", "height": "87.0"}, {"id": "216", "name": "Sugar", "location": "X: 164.0\nY: 276.0\nZ: 104.0\n", "height": "104.0"}, {"id": "217", "name": "Glass", "location": "X: 129.0\nY: 247.0\nZ: 144.5\n", "height": "144.5"}, {"id": "218", "name": "TuoPan", "location": "X: 174.00001525878906\nY: 170.0\nZ: 89.0\n", "height": "89.0"}, {"id": "219", "name": "Bread", "location": "X: 175.0\nY: 668.0\nZ: 109.0\n", "height": "109.0"}, {"id": "220", "name": "Sugar", "location": "X: 362.0\nY: 740.0\nZ: 91.0\n", "height": "91.0"}, {"id": "221", "name": "TuoPan", "location": "X: 179.0\nY: 470.0\nZ: 85.0\n", "height": "85.0"}, {"id": "222", "name": "Bread", "location": "X: 155.0\nY: 660.0\nZ: 80.0\n", "height": "80.0"}, {"id": "223", "name": "Bread", "location": "X: 160.0\nY: 735.0\nZ: 52.0\n", "height": "52.0"}, {"id": "224", "name": "TuoPan", "location": "X: 334.0\nY: 670.0\nZ: 85.0\n", "height": "85.0"}, {"id": "225", "name": "Sugar", "location": "X: 356.0\nY: 738.0\nZ: 90.5\n", "height": "90.5"}, {"id": "226", "name": "Cake", "location": "X: 157.99998474121094\nY: 852.0\nZ: 117.0\n", "height": "117.0"}, {"id": "227", "name": "Bread", "location": "X: 175.0\nY: 652.0\nZ: 82.0\n", "height": "82.0"}, {"id": "228", "name": "Bread", "location": "X: 181.0\nY: 637.0\nZ: 54.0\n", "height": "54.0"}] \ No newline at end of file +[{"id": "0", "name": "Desk", "location": "Y: -6.000000212225132e-06\nZ: 144.0\n", "height": "288.0"}, {"id": "1", "name": "Desk", "location": "Z: 148.0\n", "height": "296.0"}, {"id": "2", "name": "Desk", "location": "X: -79.99998474121094\nY: -310.0\nZ: 48.0\n", "height": "96.0"}, {"id": "3", "name": "XiangGui", "location": "X: 1.2000000424450263e-05\nY: -6.000000212225132e-06\nZ: 144.0\n", "height": "144.0"}, {"id": "4", "name": "BaTai", "location": "X: 1.2000000424450263e-05\nY: -6.000000212225132e-06\nZ: 144.0\n", "height": "144.0"}, {"id": "5", "name": "Chair", "location": "X: -159.99998474121094\nY: 72.99999237060547\nZ: 40.0\n", "height": "80.0"}, {"id": "6", "name": "Chair", "location": "X: 53.99998092651367\nY: 1217.0\nZ: 34.0\n", "height": "68.0"}, {"id": "7", "name": "Chair", "location": "X: 384.9216613769531\nY: 1133.7135009765625\nZ: 40.0\n", "height": "80.0"}, {"id": "8", "name": "Chair", "location": "X: 316.6040344238281\nY: 1076.7864990234375\nZ: 40.0\n", "height": "80.0"}, {"id": "9", "name": "Chair", "location": "X: 170.00001525878906\nY: -330.0\nZ: 40.0\n", "height": "80.0"}, {"id": "10", "name": "Chair", "location": "X: 41.99998474121094\nY: 1134.0\nZ: 34.0\n", "height": "68.0"}, {"id": "11", "name": "Chair", "location": "X: -234.00001525878906\nY: 842.0\nZ: 34.0\n", "height": "68.0"}, {"id": "12", "name": "Chair", "location": "X: -300.0\nY: 249.99998474121094\nZ: 36.0\n", "height": "72.0"}, {"id": "13", "name": "Chair", "location": "X: -151.39605712890625\nY: 576.6644897460938\nZ: 40.0\n", "height": "80.0"}, {"id": "14", "name": "Broom", "location": "X: -120.0\nY: 770.0\n", "height": "0.0"}, {"id": "15", "name": "BoJi", "location": "X: -160.0\nY: 740.0\n", "height": "0.0"}, {"id": "16", "name": "SaoBa", "location": "X: -180.0\nY: 720.0\n", "height": "0.0"}, {"id": "17", "name": "TuoBu", "location": "X: -200.0\nY: 685.0\nZ: 3.5\n", "height": "3.5"}, {"id": "18", "name": "Kettle", "location": "X: -137.76065063476562\nY: 436.5726318359375\nZ: 89.0\n", "height": "89.0"}, {"id": "19", "name": "TuoPan", "location": "X: 179.0\nY: 470.0\nZ: 95.0\n", "height": "95.0"}, {"id": "20", "name": "CoffeeCup", "location": "X: 150.0\nY: 471.0\nZ: 84.0\n", "height": "84.0"}, {"id": "21", "name": "Yogurt", "location": "X: 192.0\nY: 495.0\nZ: 104.42500305175781\n", "height": "104.42500305175781"}, {"id": "22", "name": "Box", "location": "X: 132.0\nY: 445.0\nZ: 89.0\n", "height": "89.0"}, {"id": "23", "name": "RubikCube", "location": "X: -115.0\nY: 280.0\nZ: 88.875\n", "height": "88.875"}, {"id": "24", "name": "BottledDrink", "location": "X: 192.0\nY: 485.0\nZ: 105.125\n", "height": "105.125"}, {"id": "25", "name": "Spoon", "location": "X: 132.5\nY: 446.0\nZ: 90.0\n", "height": "90.0"}, {"id": "26", "name": "Sugar", "location": "X: 361.0\nY: 743.0\nZ: 90.5\n", "height": "90.5"}, {"id": "27", "name": "Chess", "location": "X: -115.0\nY: 200.0\nZ: 85.42500305175781\n", "height": "85.42500305175781"}, {"id": "28", "name": "WaterCup", "location": "X: 400.0\nY: 829.0999755859375\nZ: 96.0\n", "height": "96.0"}, {"id": "29", "name": "XiGuan", "location": "X: 146.0\nY: 445.0\nZ: 90.69999694824219\n", "height": "90.69999694824219"}, {"id": "30", "name": "ToyDog", "location": "X: -130.0\nY: 225.0\nZ: 86.7249984741211\n", "height": "86.7249984741211"}, {"id": "31", "name": "ZhiBeiHe", "location": "X: 152.0\nY: 292.0\nZ: 96.0\n", "height": "96.0"}, {"id": "32", "name": "ToyBear", "location": "X: -109.8427734375\nY: 225.0\nZ: 88.47236633300781\n", "height": "88.47236633300781"}, {"id": "33", "name": "IceMachine", "location": "X: 410.0\nY: 810.0\nZ: 115.0\n", "height": "115.0"}, {"id": "34", "name": "ZaoTai", "location": "X: 1.2000000424450263e-05\nY: -6.000000212225132e-06\nZ: 144.0\n", "height": "144.0"}, {"id": "35", "name": "TuoPan", "location": "X: 334.0\nY: 670.0\nZ: 91.0\n", "height": "91.0"}, {"id": "36", "name": "WaterCup", "location": "X: 159.99998474121094\nY: 840.0\nZ: 92.0\n", "height": "92.0"}, {"id": "37", "name": "WaterCup", "location": "X: 149.99998474121094\nY: 830.0\nZ: 92.0\n", "height": "92.0"}, {"id": "38", "name": "Apple", "location": "X: 330.0\nY: 760.0\nZ: 85.0\n", "height": "85.0"}, {"id": "39", "name": "ChaZuo", "location": "X: 543.0\nY: 1079.0\nZ: 64.0\n", "height": "64.0"}, {"id": "40", "name": "ChaTou", "location": "X: 540.0\nY: 1092.0\nZ: 48.0\n", "height": "48.0"}, {"id": "41", "name": "KaoXiang", "location": "X: 1.2000000424450263e-05\nY: -6.000000212225132e-06\nZ: 144.0\n", "height": "144.0"}, {"id": "42", "name": "Knife", "location": "X: 318.0\nY: 780.0\nZ: 85.0\n", "height": "85.0"}, {"id": "43", "name": "BaTai", "location": "X: -20.0\nY: -6.000000212225132e-06\nZ: 144.0\n", "height": "144.0"}, {"id": "44", "name": "Tomato", "location": "X: 380.0\nY: 1000.0\nZ: 90.7249984741211\n", "height": "90.7249984741211"}, {"id": "45", "name": "Mangosteen", "location": "X: 380.0\nY: 1020.0\nZ: 91.125\n", "height": "91.125"}, {"id": "46", "name": "Banana", "location": "X: 370.0\nY: 1000.0\nZ: 89.875\n", "height": "89.875"}, {"id": "47", "name": "Orange", "location": "X: 360.0\nY: 1020.0\nZ: 90.625\n", "height": "90.625"}, {"id": "48", "name": "Softdrink", "location": "X: 340.0\nY: 965.0\nZ: 95.625\n", "height": "95.625"}, {"id": "49", "name": "Chair", "location": "X: 3.999983072280884\nY: 1169.0\nZ: 34.0\n", "height": "68.0"}, {"id": "50", "name": "Chair", "location": "X: -159.99998474121094\nY: 159.99998474121094\nZ: 40.0\n", "height": "80.0"}, {"id": "51", "name": "Towel", "location": "X: 270.2892150878906\nY: 985.1807250976562\nZ: 92.29227447509766\n", "height": "92.29227447509766"}, {"id": "52", "name": "Plate", "location": "X: 360.0\nY: 740.0\nZ: 89.0\n", "height": "89.0"}, {"id": "53", "name": "Cake", "location": "X: 158.99998474121094\nY: 863.0\nZ: 139.0\n", "height": "139.0"}, {"id": "54", "name": "Cake", "location": "X: 180.0\nY: 636.6373901367188\nZ: 82.0\n", "height": "82.0"}, {"id": "55", "name": "XiangGui", "location": "X: 194.0\nY: 655.0\nZ: 90.0\n", "height": "90.0"}, {"id": "56", "name": "Bread", "location": "X: 158.0\nY: 688.0\nZ: 108.0\n", "height": "108.0"}, {"id": "57", "name": "Bread", "location": "X: 162.0\nY: 676.0\nZ: 78.0\n", "height": "78.0"}, {"id": "58", "name": "Softdrink", "location": "X: 320.0\nY: 940.0\nZ: 95.625\n", "height": "95.625"}, {"id": "59", "name": "Chair", "location": "X: -189.00001525878906\nY: 821.0\nZ: 34.0\n", "height": "68.0"}, {"id": "60", "name": "Chair", "location": "X: -160.0\nY: 249.99998474121094\nZ: 40.0\n", "height": "80.0"}, {"id": "61", "name": "Chair", "location": "X: -420.0\nY: 399.9999694824219\nZ: 34.0\n", "height": "68.0"}, {"id": "62", "name": "Desk", "location": "X: -2.0\nY: -6.000000212225132e-06\nZ: 144.0\n", "height": "288.0"}, {"id": "63", "name": "Plate", "location": "X: 181.12826538085938\nY: 606.5259399414062\nZ: 83.41112518310547\n", "height": "83.41112518310547"}, {"id": "64", "name": "Cake", "location": "X: 156.99998474121094\nY: 860.0\nZ: 115.5\n", "height": "115.5"}, {"id": "65", "name": "Cake", "location": "X: 155.99998474121094\nY: 858.0\nZ: 139.0\n", "height": "139.0"}, {"id": "66", "name": "WaterCup", "location": "X: 159.99998474121094\nY: 850.0\nZ: 92.0\n", "height": "92.0"}, {"id": "67", "name": "LaJiTong", "location": "X: 525.0\nY: 985.0\nZ: 3.0\n", "height": "3.0"}, {"id": "68", "name": "Chair", "location": "X: -300.0\nY: 320.0\nZ: 36.0\n", "height": "72.0"}, {"id": "69", "name": "Chair", "location": "X: -197.7161865234375\nY: 430.29150390625\nZ: 40.0\n", "height": "80.0"}, {"id": "70", "name": "Chair", "location": "X: 229.00001525878906\nY: -315.0\nZ: 40.0\n", "height": "80.0"}, {"id": "71", "name": "Desk", "location": "X: 129.99998474121094\nY: 1255.0\nZ: 20.0\n", "height": "40.0"}, {"id": "72", "name": "ZhiBeiHe", "location": "X: 152.0\nY: 422.0\nZ: 83.0\n", "height": "83.0"}, {"id": "73", "name": "KaiGuan", "location": "X: 543.0\nY: 1102.0\nZ: 114.0\n", "height": "114.0"}, {"id": "74", "name": "KaiGuan", "location": "X: 339.7881774902344\nY: -183.87770080566406\nZ: 114.0\n", "height": "114.0"}, {"id": "75", "name": "Sofa", "location": "X: 1.2000000424450263e-05\nY: -6.000000212225132e-06\nZ: 144.0\n", "height": "144.0"}, {"id": "76", "name": "Chair", "location": "X: -350.0\nY: 490.0\nZ: 34.0\n", "height": "68.0"}, {"id": "77", "name": "Chair", "location": "X: 158.99998474121094\nY: 1320.0\nZ: 34.0\n", "height": "68.0"}, {"id": "78", "name": "Chair", "location": "X: -290.0\nY: 169.99998474121094\nZ: 36.0\n", "height": "72.0"}, {"id": "79", "name": "Chair", "location": "X: 91.99998474121094\nY: 1182.0\nZ: 34.0\n", "height": "68.0"}, {"id": "80", "name": "Desk", "location": "X: 400.0000305175781\nY: -350.0\nZ: 48.0\n", "height": "96.0"}, {"id": "81", "name": "Desk", "location": "X: -360.0\nY: 119.99998474121094\nZ: 20.0\n", "height": "40.0"}, {"id": "82", "name": "Desk", "location": "X: -310.0\nY: -1.2999999853491317e-05\nZ: 22.5\n", "height": "45.0"}, {"id": "83", "name": "LunchBox", "location": "X: -15.0\nY: 1050.0\nZ: 45.125\n", "height": "45.125"}, {"id": "84", "name": "Desk", "location": "X: -30.000015258789062\nY: 1080.0\nZ: 20.0\n", "height": "40.0"}, {"id": "85", "name": "Desk", "location": "X: -380.0\nY: 270.0\nZ: 20.0\n", "height": "40.0"}, {"id": "86", "name": "Chair", "location": "X: -73.00001525878906\nY: 997.0\nZ: 34.0\n", "height": "68.0"}, {"id": "87", "name": "Chair", "location": "X: 390.0000305175781\nY: -400.0\nZ: 40.0\n", "height": "80.0"}, {"id": "88", "name": "Desk", "location": "X: 210.00001525878906\nY: -350.0\nZ: 48.0\n", "height": "96.0"}, {"id": "89", "name": "Chair", "location": "X: -190.0\nY: 510.0\nZ: 40.0\n", "height": "80.0"}, {"id": "90", "name": "Cake", "location": "X: 166.99998474121094\nY: 850.0\nZ: 115.0\n", "height": "115.0"}, {"id": "91", "name": "Plate", "location": "X: 330.0\nY: 270.0\nZ: 84.0\n", "height": "84.0"}, {"id": "92", "name": "WaterCup", "location": "X: 149.99998474121094\nY: 840.0\nZ: 92.0\n", "height": "92.0"}, {"id": "93", "name": "WaterCup", "location": "X: 132.0\nY: 435.5\nZ: 89.5\n", "height": "89.5"}, {"id": "94", "name": "XiangGui", "location": "X: 194.0\nY: 716.5267944335938\nZ: 90.0\n", "height": "90.0"}, {"id": "95", "name": "Bread", "location": "X: 178.0\nY: 697.0\nZ: 54.5\n", "height": "54.5"}, {"id": "96", "name": "Bread", "location": "X: 161.0\nY: 638.0\nZ: 108.0\n", "height": "108.0"}, {"id": "97", "name": "Bread", "location": "X: 178.0\nY: 712.0\nZ: 54.5\n", "height": "54.5"}, {"id": "98", "name": "Clip", "location": "X: 198.8828125\nY: 558.66650390625\nZ: 85.95439910888672\n", "height": "85.95439910888672"}, {"id": "99", "name": "CoffeeMachine", "location": "X: 360.0\nY: 540.0\nZ: 84.0\n", "height": "84.0"}, {"id": "100", "name": "TuoPan", "location": "X: 334.0\nY: 670.0\nZ: 87.0\n", "height": "87.0"}, {"id": "101", "name": "Sugar", "location": "X: 357.0\nY: 742.0\nZ: 90.5\n", "height": "90.5"}, {"id": "102", "name": "CoffeeBag", "location": "X: 450.0\nY: 808.0\nZ: 169.0\n", "height": "169.0"}, {"id": "103", "name": "Chair", "location": "X: -41.83454513549805\nY: -68.69022369384766\nZ: 40.0\n", "height": "80.0"}, {"id": "104", "name": "Chair", "location": "X: -400.0\nY: 449.9999694824219\nZ: 34.0\n", "height": "68.0"}, {"id": "105", "name": "Chair", "location": "X: -113.00001525878906\nY: 1029.0\nZ: 34.0\n", "height": "68.0"}, {"id": "106", "name": "Desk", "location": "X: -2.0\nY: -5.99999930273043e-06\nZ: 144.0\n", "height": "288.0"}, {"id": "107", "name": "Desk", "location": "X: 1.2000000424450263e-05\nY: -6.000000212225132e-06\nZ: 144.0\n", "height": "288.0"}, {"id": "108", "name": "Desk", "location": "X: -180.00001525878906\nY: 900.0\nZ: 20.0\n", "height": "40.0"}, {"id": "109", "name": "Chair", "location": "X: -116.00000762939453\nY: 947.0\nZ: 34.0\n", "height": "68.0"}, {"id": "110", "name": "Kettle", "location": "X: 370.0\nY: 410.0\nZ: 105.0\n", "height": "105.0"}, {"id": "111", "name": "Bread", "location": "X: 146.0\nY: 636.0\nZ: 51.0\n", "height": "51.0"}, {"id": "112", "name": "Box", "location": "X: 152.0\nY: 275.0\nZ: 102.0\n", "height": "102.0"}, {"id": "113", "name": "CoffeeMachine", "location": "X: 163.37042236328125\nY: 320.0\nZ: 97.0\n", "height": "97.0"}, {"id": "114", "name": "CoffeeMachine", "location": "X: 350.0\nY: 460.0\nZ: 84.0\n", "height": "84.0"}, {"id": "115", "name": "Plate", "location": "X: 330.0\nY: 300.0\nZ: 84.0\n", "height": "84.0"}, {"id": "116", "name": "Spoon", "location": "X: 134.5\nY: 443.0\nZ: 90.0\n", "height": "90.0"}, {"id": "117", "name": "ZhiBeiHe", "location": "X: 516.0\nY: 900.0\nZ: 84.0\n", "height": "84.0"}, {"id": "118", "name": "WaterCup", "location": "X: 159.99998474121094\nY: 830.0\nZ: 92.0\n", "height": "92.0"}, {"id": "119", "name": "WaterCup", "location": "X: 149.99998474121094\nY: 850.0\nZ: 92.0\n", "height": "92.0"}, {"id": "120", "name": "CoffeeCup", "location": "X: 140.0\nY: 180.0\nZ: 83.0\n", "height": "83.0"}, {"id": "121", "name": "Cake", "location": "X: 170.99998474121094\nY: 855.0\nZ: 139.0\n", "height": "139.0"}, {"id": "122", "name": "Cake", "location": "X: 170.99998474121094\nY: 857.0\nZ: 117.0\n", "height": "117.0"}, {"id": "123", "name": "TuoPan", "location": "X: 179.0\nY: 470.0\nZ: 93.0\n", "height": "93.0"}, {"id": "124", "name": "CocountWater", "location": "X: 320.0\nY: 400.0\nZ: 108.125\n", "height": "108.125"}, {"id": "125", "name": "Mug", "location": "X: 377.0\nY: 520.0\nZ: 161.0\n", "height": "161.0"}, {"id": "126", "name": "Mug", "location": "X: 377.0\nY: 413.0\nZ: 170.0\n", "height": "170.0"}, {"id": "127", "name": "Mug", "location": "X: 377.0\nY: 117.0\nZ: 170.0\n", "height": "170.0"}, {"id": "128", "name": "Apple", "location": "X: 343.4442138671875\nY: 760.1776123046875\nZ: 85.0\n", "height": "85.0"}, {"id": "129", "name": "Chair", "location": "X: -300.0\nY: 660.0\nZ: 34.0\n", "height": "68.0"}, {"id": "130", "name": "Chair", "location": "X: -156.00001525878906\nY: 977.0\nZ: 34.0\n", "height": "68.0"}, {"id": "131", "name": "Chair", "location": "X: -249.99998474121094\nY: 9.999987602233887\nZ: 36.0\n", "height": "72.0"}, {"id": "132", "name": "CoffeeMachine", "location": "X: 332.0\nY: 580.0\nZ: 89.0\n", "height": "89.0"}, {"id": "133", "name": "CoffeeMachine", "location": "X: 143.0\nY: 373.0\nZ: 97.0\n", "height": "97.0"}, {"id": "134", "name": "ZhiBeiHe", "location": "X: 150.0\nY: 222.0\nZ: 83.0\n", "height": "83.0"}, {"id": "135", "name": "Box", "location": "X: 132.0\nY: 435.0\nZ: 89.0\n", "height": "89.0"}, {"id": "136", "name": "CoffeeCup", "location": "X: 323.010009765625\nY: 33.000003814697266\nZ: 95.0\n", "height": "95.0"}, {"id": "137", "name": "TuoPan", "location": "X: 174.00001525878906\nY: 170.0\nZ: 87.0\n", "height": "87.0"}, {"id": "138", "name": "Chips", "location": "X: 191.8000030517578\nY: 444.79998779296875\nZ: 105.625\n", "height": "105.625"}, {"id": "139", "name": "NFCJuice", "location": "X: 192.0\nY: 455.0\nZ: 102.625\n", "height": "102.625"}, {"id": "140", "name": "Bernachon", "location": "X: 192.0\nY: 465.0\nZ: 101.125\n", "height": "101.125"}, {"id": "141", "name": "Bread", "location": "X: 164.0\nY: 637.0\nZ: 52.0\n", "height": "52.0"}, {"id": "142", "name": "Bread", "location": "X: 177.0\nY: 733.4129028320312\nZ: 81.0\n", "height": "81.0"}, {"id": "143", "name": "Bread", "location": "X: 154.0\nY: 647.0\nZ: 51.0\n", "height": "51.0"}, {"id": "144", "name": "Bread", "location": "X: 176.0\nY: 728.0\nZ: 110.0\n", "height": "110.0"}, {"id": "145", "name": "Bread", "location": "X: 155.0\nY: 734.0\nZ: 80.0\n", "height": "80.0"}, {"id": "146", "name": "Bread", "location": "X: 180.0\nY: 735.0\nZ: 53.0\n", "height": "53.0"}, {"id": "147", "name": "Bread", "location": "X: 184.0\nY: 660.0\nZ: 82.0\n", "height": "82.0"}, {"id": "148", "name": "Bread", "location": "X: 145.0\nY: 652.0\nZ: 79.0\n", "height": "79.0"}, {"id": "149", "name": "Bread", "location": "X: 142.0\nY: 671.0\nZ: 50.0\n", "height": "50.0"}, {"id": "150", "name": "Bread", "location": "X: 140.0\nY: 668.0\nZ: 106.0\n", "height": "106.0"}, {"id": "151", "name": "Bread", "location": "X: 173.0\nY: 647.0\nZ: 53.0\n", "height": "53.0"}, {"id": "152", "name": "Bread", "location": "X: 157.0\nY: 635.0\nZ: 79.0\n", "height": "79.0"}, {"id": "153", "name": "Bread", "location": "X: 140.0\nY: 688.0\nZ: 106.0\n", "height": "106.0"}, {"id": "154", "name": "Bread", "location": "X: 160.0\nY: 712.0\nZ: 52.0\n", "height": "52.0"}, {"id": "155", "name": "ADMilk", "location": "X: 192.0\nY: 475.0\nZ: 101.5250015258789\n", "height": "101.5250015258789"}, {"id": "156", "name": "Mug", "location": "X: 377.0\nY: 220.0\nZ: 161.0\n", "height": "161.0"}, {"id": "157", "name": "Mug", "location": "X: 377.0\nY: 506.0\nZ: 161.0\n", "height": "161.0"}, {"id": "158", "name": "Container", "location": "X: 370.0\nY: 360.0\nZ: 84.0\n", "height": "84.0"}, {"id": "159", "name": "Chair", "location": "X: -350.0\nY: 560.0\nZ: 34.0\n", "height": "68.0"}, {"id": "160", "name": "Chair", "location": "X: -80.0\nY: 60.0\nZ: 40.0\n", "height": "80.0"}, {"id": "161", "name": "Chair", "location": "X: 400.0000305175781\nY: -300.0\nZ: 40.0\n", "height": "80.0"}, {"id": "162", "name": "Chair", "location": "X: -280.0\nY: 99.99998474121094\nZ: 36.0\n", "height": "72.0"}, {"id": "163", "name": "Kettle", "location": "X: 130.00001525878906\nY: 150.0\nZ: 104.0\n", "height": "104.0"}, {"id": "164", "name": "Chess", "location": "X: -115.0\nY: 250.0\nZ: 85.42500305175781\n", "height": "85.42500305175781"}, {"id": "165", "name": "CoffeeMachine", "location": "X: 350.0\nY: 580.0\nZ: 84.0\n", "height": "84.0"}, {"id": "166", "name": "CoffeeMachine", "location": "X: 150.0\nY: 250.0\nZ: 123.0\n", "height": "123.0"}, {"id": "167", "name": "Spoon", "location": "X: 134.5\nY: 446.0\nZ: 90.0\n", "height": "90.0"}, {"id": "168", "name": "XiGuan", "location": "X: 146.0\nY: 444.5\nZ: 92.0\n", "height": "92.0"}, {"id": "169", "name": "CoffeeCup", "location": "X: 130.0\nY: 180.0\nZ: 84.0\n", "height": "84.0"}, {"id": "170", "name": "TuoPan", "location": "X: 334.0\nY: 670.0\nZ: 89.0\n", "height": "89.0"}, {"id": "171", "name": "Mug", "location": "X: 377.0\nY: 513.0\nZ: 170.0\n", "height": "170.0"}, {"id": "172", "name": "Mug", "location": "X: 377.0\nY: 110.0\nZ: 161.0\n", "height": "161.0"}, {"id": "173", "name": "Bread", "location": "X: 181.0\nY: 710.0\nZ: 81.19999694824219\n", "height": "81.19999694824219"}, {"id": "174", "name": "Bread", "location": "X: 135.0\nY: 734.0\nZ: 78.0\n", "height": "78.0"}, {"id": "175", "name": "Bread", "location": "X: 137.0\nY: 635.0\nZ: 78.0\n", "height": "78.0"}, {"id": "176", "name": "Bread", "location": "X: 160.0\nY: 670.0\nZ: 108.0\n", "height": "108.0"}, {"id": "177", "name": "Bread", "location": "X: 145.0\nY: 660.0\nZ: 79.0\n", "height": "79.0"}, {"id": "178", "name": "Bread", "location": "X: 176.0\nY: 708.0\nZ: 110.0\n", "height": "110.0"}, {"id": "179", "name": "Bread", "location": "X: 140.0\nY: 735.0\nZ: 49.0\n", "height": "49.0"}, {"id": "180", "name": "Glass", "location": "X: 129.0\nY: 257.0\nZ: 144.5\n", "height": "144.5"}, {"id": "181", "name": "Container", "location": "X: 370.0\nY: 390.0\nZ: 84.0\n", "height": "84.0"}, {"id": "182", "name": "Chair", "location": "X: 350.0000305175781\nY: -350.0\nZ: 40.0\n", "height": "80.0"}, {"id": "183", "name": "Chair", "location": "X: -80.0\nY: 230.0\nZ: 40.0\n", "height": "80.0"}, {"id": "184", "name": "Novel", "location": "X: -400.0\nY: 520.0\nZ: 81.125\n", "height": "81.125"}, {"id": "185", "name": "Chair", "location": "X: 193.99998474121094\nY: 1283.0\nZ: 34.0\n", "height": "68.0"}, {"id": "186", "name": "Chair", "location": "X: -310.0\nY: 600.0\nZ: 34.0\n", "height": "68.0"}, {"id": "187", "name": "Chair", "location": "X: 249.00001525878906\nY: -365.0\nZ: 40.0\n", "height": "80.0"}, {"id": "188", "name": "CoffeeMachine", "location": "X: 349.0\nY: 620.0\nZ: 84.0\n", "height": "84.0"}, {"id": "189", "name": "DrinkMachine", "location": "X: 345.0\nY: 42.000003814697266\nZ: 131.0\n", "height": "131.0"}, {"id": "190", "name": "Mug", "location": "X: 377.0\nY: 611.0\nZ: 170.0\n", "height": "170.0"}, {"id": "191", "name": "VacuumCup", "location": "X: -102.0\nY: 10.0\nZ: 99.7249984741211\n", "height": "99.7249984741211"}, {"id": "192", "name": "SpringWater", "location": "X: 190.0\nY: 40.0\nZ: 98.125\n", "height": "98.125"}, {"id": "193", "name": "CoffeeMachine", "location": "X: 360.0\nY: 190.0\nZ: 114.0\n", "height": "114.0"}, {"id": "194", "name": "CoffeeMachine", "location": "X: 350.0\nY: 510.0\nZ: 84.0\n", "height": "84.0"}, {"id": "195", "name": "Mug", "location": "X: 377.0\nY: 320.0\nZ: 161.0\n", "height": "161.0"}, {"id": "196", "name": "Mug", "location": "X: 377.0\nY: 206.0\nZ: 161.0\n", "height": "161.0"}, {"id": "197", "name": "Mug", "location": "X: 377.0\nY: 213.0\nZ: 170.0\n", "height": "170.0"}, {"id": "198", "name": "Mug", "location": "X: 377.0\nY: 313.0\nZ: 170.0\n", "height": "170.0"}, {"id": "199", "name": "TuoPan", "location": "X: 174.00001525878906\nY: 170.0\nZ: 84.5\n", "height": "84.5"}, {"id": "200", "name": "CoffeeCup", "location": "X: 130.0\nY: 190.0\nZ: 84.0\n", "height": "84.0"}, {"id": "201", "name": "Glass", "location": "X: -133.5\nY: 466.0\nZ: 89.0\n", "height": "89.0"}, {"id": "202", "name": "Container", "location": "X: 370.0\nY: 370.0\nZ: 84.0\n", "height": "84.0"}, {"id": "203", "name": "CoffeeMachine", "location": "X: 360.0\nY: 214.0\nZ: 114.0\n", "height": "114.0"}, {"id": "204", "name": "CoffeeMachine", "location": "X: 350.0\nY: 154.0\nZ: 84.0\n", "height": "84.0"}, {"id": "205", "name": "Plate", "location": "X: 163.99998474121094\nY: 856.0\nZ: 111.0\n", "height": "111.0"}, {"id": "206", "name": "Cake", "location": "X: 156.99998474121094\nY: 852.0\nZ: 139.0\n", "height": "139.0"}, {"id": "207", "name": "Bread", "location": "X: 175.0\nY: 688.0\nZ: 109.0\n", "height": "109.0"}, {"id": "208", "name": "Bread", "location": "X: 181.0\nY: 700.0\nZ: 81.19999694824219\n", "height": "81.19999694824219"}, {"id": "209", "name": "Bread", "location": "X: 140.0\nY: 712.0\nZ: 50.0\n", "height": "50.0"}, {"id": "210", "name": "Bread", "location": "X: 141.0\nY: 638.0\nZ: 107.0\n", "height": "107.0"}, {"id": "211", "name": "Bread", "location": "X: 169.0\nY: 700.0\nZ: 81.19999694824219\n", "height": "81.19999694824219"}, {"id": "212", "name": "Bread", "location": "X: 161.0\nY: 648.0\nZ: 108.0\n", "height": "108.0"}, {"id": "213", "name": "Bread", "location": "X: 157.0\nY: 710.0\nZ: 108.0\n", "height": "108.0"}, {"id": "214", "name": "Bread", "location": "X: 178.0\nY: 671.0\nZ: 54.0\n", "height": "54.0"}, {"id": "215", "name": "Bread", "location": "X: 135.0\nY: 660.0\nZ: 78.0\n", "height": "78.0"}, {"id": "216", "name": "Sugar", "location": "X: 357.0\nY: 744.0\nZ: 90.5\n", "height": "90.5"}, {"id": "217", "name": "CoffeeBag", "location": "X: 425.0\nY: 787.0\nZ: 169.0\n", "height": "169.0"}, {"id": "218", "name": "CoffeeCup", "location": "X: 130.00001525878906\nY: 170.0\nZ: 84.0\n", "height": "84.0"}, {"id": "219", "name": "CoffeeCup", "location": "X: 187.5\nY: 352.5\nZ: 105.69999694824219\n", "height": "105.69999694824219"}, {"id": "220", "name": "TuoPan", "location": "X: 179.0\nY: 470.0\nZ: 91.0\n", "height": "91.0"}, {"id": "221", "name": "BaoJing", "location": "X: 360.8000183105469\nY: -199.0\nZ: 115.0\n", "height": "115.0"}, {"id": "222", "name": "KongTiao", "location": "X: 300.5\nY: -140.0\nZ: 114.0\n", "height": "114.0"}, {"id": "223", "name": "BaoJing", "location": "X: 362.10003662109375\nY: -197.0\nZ: 115.0\n", "height": "115.0"}, {"id": "224", "name": "KaiGuan", "location": "X: 342.0000305175781\nY: -184.28216552734375\nZ: 114.0\n", "height": "114.0"}, {"id": "225", "name": "Mug", "location": "X: 377.0\nY: 420.0\nZ: 161.0\n", "height": "161.0"}, {"id": "226", "name": "Mug", "location": "X: 377.0\nY: 306.0\nZ: 161.0\n", "height": "161.0"}, {"id": "227", "name": "Container", "location": "X: 370.0\nY: 380.0\nZ: 84.0\n", "height": "84.0"}, {"id": "228", "name": "Glass", "location": "X: 140.0\nY: 460.0\nZ: 84.0\n", "height": "84.0"}, {"id": "229", "name": "TuoPan", "location": "X: 179.0\nY: 470.0\nZ: 89.0\n", "height": "89.0"}, {"id": "230", "name": "Sugar", "location": "X: 359.0\nY: 741.0\nZ: 93.0\n", "height": "93.0"}, {"id": "231", "name": "Mug", "location": "X: 377.0\nY: 604.0\nZ: 161.0\n", "height": "161.0"}, {"id": "232", "name": "Mug", "location": "X: 377.0\nY: 617.0\nZ: 161.0\n", "height": "161.0"}, {"id": "233", "name": "Mug", "location": "X: 377.0\nY: 123.0\nZ: 161.0\n", "height": "161.0"}, {"id": "234", "name": "Mug", "location": "X: 377.0\nY: 406.0\nZ: 161.0\n", "height": "161.0"}, {"id": "235", "name": "Glass", "location": "X: 324.0\nY: 56.000003814697266\nZ: 89.0\n", "height": "89.0"}, {"id": "236", "name": "Container", "location": "X: 370.0\nY: 370.0\nZ: 104.0\n", "height": "104.0"}, {"id": "237", "name": "TuoPan", "location": "X: 179.0\nY: 470.0\nZ: 87.0\n", "height": "87.0"}, {"id": "238", "name": "Sugar", "location": "X: 164.0\nY: 276.0\nZ: 104.0\n", "height": "104.0"}, {"id": "239", "name": "Glass", "location": "X: 129.0\nY: 247.0\nZ: 144.5\n", "height": "144.5"}, {"id": "240", "name": "TuoPan", "location": "X: 174.00001525878906\nY: 170.0\nZ: 89.0\n", "height": "89.0"}, {"id": "241", "name": "Sugar", "location": "X: 362.0\nY: 740.0\nZ: 91.0\n", "height": "91.0"}, {"id": "242", "name": "TuoPan", "location": "X: 179.0\nY: 470.0\nZ: 85.0\n", "height": "85.0"}, {"id": "243", "name": "Bread", "location": "X: 175.0\nY: 668.0\nZ: 109.0\n", "height": "109.0"}, {"id": "244", "name": "Bread", "location": "X: 155.0\nY: 660.0\nZ: 80.0\n", "height": "80.0"}, {"id": "245", "name": "TuoPan", "location": "X: 334.0\nY: 670.0\nZ: 85.0\n", "height": "85.0"}, {"id": "246", "name": "Sugar", "location": "X: 356.0\nY: 738.0\nZ: 90.5\n", "height": "90.5"}, {"id": "247", "name": "Cake", "location": "X: 157.99998474121094\nY: 852.0\nZ: 117.0\n", "height": "117.0"}, {"id": "248", "name": "Bread", "location": "X: 160.0\nY: 735.0\nZ: 52.0\n", "height": "52.0"}, {"id": "249", "name": "Bread", "location": "X: 175.0\nY: 652.0\nZ: 82.0\n", "height": "82.0"}, {"id": "250", "name": "Bracelet", "location": "X: -395.0\nY: 570.0\nZ: 71.7249984741211\n", "height": "71.7249984741211"}, {"id": "251", "name": "Scarf", "location": "X: -410.0\nY: 550.0\nZ: 73.125\n", "height": "73.125"}] \ No newline at end of file diff --git a/robowaiter/scene/scene.py b/robowaiter/scene/scene.py index 8108ae3..f3af272 100644 --- a/robowaiter/scene/scene.py +++ b/robowaiter/scene/scene.py @@ -219,7 +219,7 @@ class Scene: 'Exist(Softdrink)', # 'On(Yogurt,Bar)','On(BottledDrink,Bar)', # 'Exist(Softdrink)', 'On(Softdrink,Table1)', - 'Exist(Chips)', 'Exist(NFCJuice)', 'Exist(Bernachon)', 'Exist(ADMilk)', 'Exist(SpringWater)' + 'Exist(Chips)', 'Exist(NFCJuice)', 'Exist(Bernachon)', 'Exist(ADMilk)', 'Exist(SpringWater)', 'Exist(VacuumCup)', 'On(VacuumCup,Table2)', 'Is(HallLight,Off)', 'Is(TubeLight,On)', 'Is(Curtain,On)', @@ -270,7 +270,7 @@ class Scene: self.db = DBSCAN(eps=self.map_ratio, min_samples=int(self.map_ratio / 2)) self.infoCount = 0 - self.is_nav_walk = True + self.is_nav_walk = False file_name = os.path.join(root_path,'robowaiter/algos/navigator/map_5.pkl') if os.path.exists(file_name): @@ -948,6 +948,82 @@ class Scene: self.robo_recover() # 恢复肢体关节 return True + def gen_obj_tmp(self, h=100): + # 4;冰红(盒) 5;酸奶 7:保温杯 9;冰红(瓶) 13:代语词典 14:cake 61:甜牛奶 + scene = self.status + ginger_loc = [scene.location.X, scene.location.Y, scene.location.Z] + obj_list = [ + + GrabSim_pb2.ObjectList.Object(x=190, y=40, z=87, roll=0, pitch=0, yaw=0, + type=38), #矿泉水 + + + GrabSim_pb2.ObjectList.Object(x=ginger_loc[0] - 55, y=ginger_loc[1] - 75, z=95, roll=0, pitch=0, yaw=0, + type=48), # 48是薯片 + # GrabSim_pb2.ObjectList.Object(x=190, y=40, z=87, roll=0, pitch=0, yaw=0, + # type=48), #48是薯片 + GrabSim_pb2.ObjectList.Object(x=ginger_loc[0] - 55, y=ginger_loc[1] - 65, z=95, roll=0, pitch=0, yaw=0, + type=37), #37是NFC果汁 + GrabSim_pb2.ObjectList.Object(x=ginger_loc[0] - 55, y=ginger_loc[1] - 55, z=95, roll=0, pitch=0, yaw=0, + type=8), #8是贝尔纳松 + GrabSim_pb2.ObjectList.Object(x=ginger_loc[0] - 55, y=ginger_loc[1] - 45, z=95, roll=0, pitch=0, yaw=0, + type=6), #6是AD钙奶 + GrabSim_pb2.ObjectList.Object(x=ginger_loc[0] - 55, y=ginger_loc[1] - 35, z=95, roll=0, pitch=0, yaw=0, + type=9), #9是冰红(瓶) + # GrabSim_pb2.ObjectList.Object(x=ginger_loc[0] - 55, y=ginger_loc[1] - 25, z=95, roll=0, pitch=0, yaw=0, + # type=7), # 5是酸奶 + + # GrabSim_pb2.ObjectList.Object(x=ginger_loc[0] - 55, y=ginger_loc[1] - 30, z=95, roll=0, pitch=0, yaw=0, + # type=13), + # GrabSim_pb2.ObjectList.Object(x=ginger_loc[0] - 55, y=ginger_loc[1] - 40, z=95, roll=0, pitch=0, yaw=0, + # type=48), + # GrabSim_pb2.ObjectList.Object(x=340, y=960, z=88, roll=0, pitch=0, yaw=90, type=7), + # GrabSim_pb2.ObjectList.Object(x=340, y=960, z = 88, roll=0, pitch=0, yaw=90, type=9), + + GrabSim_pb2.ObjectList.Object(x=320, y=400, z=95, roll=0, pitch=0, yaw=0, + type=20), + + # 斜桌三瓶冰红茶 + # GrabSim_pb2.ObjectList.Object(x=340, y=965, z=88, roll=0, pitch=0, yaw=90, type=4), + # GrabSim_pb2.ObjectList.Object(x=320, y=940, z=88, roll=0, pitch=0, yaw=90, type=4), + GrabSim_pb2.ObjectList.Object(x=300, y=930, z=88, roll=0, pitch=0, yaw=90, type=5), + # GrabSim_pb2.ObjectList.Object(x=300, y=930, z=88, roll=0, pitch=0, yaw=90, type=38), #矿泉水 + + GrabSim_pb2.ObjectList.Object(x=370, y=1000, z=88, roll=0, pitch=0, yaw=90, type=1), #香蕉 + GrabSim_pb2.ObjectList.Object(x=380, y=1000, z=88, roll=0, pitch=0, yaw=90, type=65), # 番茄 + GrabSim_pb2.ObjectList.Object(x=380, y=1020, z=88, roll=0, pitch=0, yaw=90, type=42), # 山竹 + GrabSim_pb2.ObjectList.Object(x=360, y=1020, z=88, roll=0, pitch=0, yaw=90, type=27), # 橙子 + + # BrightTable2 + # GrabSim_pb2.ObjectList.Object(x=-30, y=1000, z=35, roll=0, pitch=0, yaw=90, type=64), #西瓜 + GrabSim_pb2.ObjectList.Object(x=-15, y=1050, z=40, roll=0, pitch=0, yaw=90, type=17), #a午餐盒 + + # 保温杯 + GrabSim_pb2.ObjectList.Object(x=-102, y=10, z=90, roll=0, pitch=0, yaw=90, type=7), + # GrabSim_pb2.ObjectList.Object(x=ginger_loc[0] - 55, y=ginger_loc[1] - 70, z=95, roll=0, pitch=0, yaw=0, + # type=9), + + # Table3上由两套军旗,一个模仿 + GrabSim_pb2.ObjectList.Object(x=-115, y=200, z=85, roll=0, pitch=0, yaw=90, type=26), # Chess + GrabSim_pb2.ObjectList.Object(x=-130, y=225, z=85, roll=0, pitch=0, yaw=90, type=55), # 玩具狗 + GrabSim_pb2.ObjectList.Object(x=-110, y=225, z=85, roll=0, pitch=0, yaw=90, type=56), #玩具熊 + GrabSim_pb2.ObjectList.Object(x=-115, y=250, z=85, roll=0, pitch=0, yaw=90, type=26), # Chess + GrabSim_pb2.ObjectList.Object(x=-115, y=280, z=85, roll=0, pitch=0, yaw=90, type=35), # 魔方 + + # 靠窗边的桌子上 + GrabSim_pb2.ObjectList.Object(x=-400, y=520, z=70, roll=0, pitch=0, yaw=0, type=63), # 小说 + GrabSim_pb2.ObjectList.Object(x=-410, y=550, z=70, roll=0, pitch=0, yaw=0, type=59), # 围巾 + GrabSim_pb2.ObjectList.Object(x=-395, y=570, z=70, roll=0, pitch=0, yaw=0, type=18), # 手镯 + + + ] + scene = self.stub.AddObjects(GrabSim_pb2.ObjectList(objects=obj_list, scene=self.sceneID)) + time.sleep(1.0) + + + + + def gen_obj(self, h=100): # 4;冰红(盒) 5;酸奶 7:保温杯 9;冰红(瓶) 13:代语词典 14:cake 61:甜牛奶 scene = self.status @@ -986,7 +1062,7 @@ class Scene: # 斜桌三瓶冰红茶 GrabSim_pb2.ObjectList.Object(x=340, y=965, z=88, roll=0, pitch=0, yaw=90, type=4), GrabSim_pb2.ObjectList.Object(x=320, y=940, z=88, roll=0, pitch=0, yaw=90, type=4), - GrabSim_pb2.ObjectList.Object(x=300, y=930, z=88, roll=0, pitch=0, yaw=90, type=4), + # GrabSim_pb2.ObjectList.Object(x=300, y=930, z=88, roll=0, pitch=0, yaw=90, type=4), # GrabSim_pb2.ObjectList.Object(x=300, y=930, z=88, roll=0, pitch=0, yaw=90, type=38), #矿泉水 GrabSim_pb2.ObjectList.Object(x=370, y=1000, z=88, roll=0, pitch=0, yaw=90, type=1), #香蕉 diff --git a/robowaiter/scene/ui/scene_ui.py b/robowaiter/scene/ui/scene_ui.py index 78d557f..10dac58 100644 --- a/robowaiter/scene/ui/scene_ui.py +++ b/robowaiter/scene/ui/scene_ui.py @@ -25,6 +25,8 @@ from robowaiter.utils.bt.draw import render_dot_tree class SceneUI(Scene): scene_queue = None ui_queue = None + scene_flag=2 + walker_followed = False # camera_interval = 4 def __init__(self, robot,scene_queue,ui_queue): self.scene_queue = scene_queue @@ -53,6 +55,7 @@ class SceneUI(Scene): pass def run_AEM(self): + self.gen_obj() print(len(self.status.objects)) # 创建一个从白色(1)到灰色(0)的 colormap objs = self.status.objects @@ -261,10 +264,102 @@ class SceneUI(Scene): pass def run_CafeDaily(self): + # self.run_AEM() + self.walker_followed = False + self.gen_obj() + self.scene_flag = 1 + self.st1 = 3 + # self.st2 = self.st1 + 30 + # self.st3 = self.st2 + 65 + self.st2 = 3 + self.st3 = 3 + self.st4 = 3 + + self.signal_event_list = [ + + # 场景1:带小女孩找阳光下的空位 + (3, self.add_walker, (5, 230, 1200)), # 0号"Girl02_C_3" + (1, self.control_walker, (0, False, 200, 60, 520, 0)), + (9, self.customer_say, (0, "早上好呀,我想找个能晒太阳的地方。")), + (1, self.customer_say, (0, "你可以带我过去嘛?")),#可以带我过去嘛? + (13, self.control_walker, (0, False, 50, 140, 1200, 180)), # 小女孩站在了 BrightTable1 旁边就餐啦 + # + # # # 场景2:有个胖胖男人点单交流并要咖啡,帮他送去角落的桌子 + # (3, self.add_walker, (5, 230, 1200)), # 小女孩 + # # # 上述准备 + (10, self.add_walker, (26, -28, -150, 90)), + (0, self.add_walker, (10, -70, -200, -45)), + (9, self.customer_say, (1, "嘿,RoboWaiter,过来一下!")), + (10, self.control_walkers_and_say, ([[[1, False, 100, -18, -200, -90, "你们这有什么饮料嘛?"]]])), #6 + # 20 胖胖男到了 BrightTable6 + (2, self.customer_say, (1, "咖啡有哪些呢?")), # 10 + (2, self.customer_say, (1, "来杯卡布奇诺吧。")), # 15 + + # # 场景3:有位女士要杯水和冰红茶 + # (0, self.add_walker, (5, 230, 1200)), + # (0, self.add_walker, (26, -30, -200, -90)), + # (0, self.add_walker, (10, -80, -180, -45)), + ############# + (3, self.add_walkers, + ([[[21, 65, 1000, -90], [32, -80, 850, 135], [1, 60, 420, 135], [29, -290, 400, 180]]])), + (0, self.control_walker, (5, True, 50, 250, 1200, 180)), # 设置id=4 的2小男孩随机游走红随机游走 + (0, self.add_walker, (48, 60, 520, 0)), # 生成他妈妈 + (0, self.add_walkers, ([[[48, 60, 520, 0], [31, 60, 600, -90], [20, 60, 680, -90], [9, 60, 760, -90]]])), + (50, self.customer_say, (7, "哎呦,今天这么多人,还有空位吗?")), # 女士问 50 + (10, self.customer_say, (7, "我带着孩子呢,想要宽敞亮堂的地方。")), # 女士问 + (8, self.customer_say, (7, "大厅的桌子好啊,快带我去呀!")), + (15, self.control_walker, (7, False, 50, -250, 480, 0)), # #290, 400 + (3, self.customer_say, (7, "我想来杯水,帮我孩子拿个酸奶吧。")), + # # ### 9号灰色男 排队排着排着,不排了 + (0, self.control_walker, (10, False, 100, 100, 760, 180)), + (0, self.control_walker, (10, True, 100, 0, 0, 180)), + (110, self.customer_say, (7, "谢谢你的水和酸奶!")), # 倒水+取放酸奶 90s 这次是110 + + # # # 场景4:三人排队点单,女士要保温杯 + # (0, self.add_walker, (5, 230, 1200)), + # (0, self.add_walker, (26, -30, -200, -90)), + # (0, self.add_walker, (10, -80, -180, -45)), + # (0, self.add_walker, (21, 65, 1000, -90)), # 男 'BrightTable2': (65, 1000, 135), + # (0, self.add_walker, (32, -80, 850, 135)), + # (0, self.add_walker, (1, 60, 220, 135)), + # (0, self.add_walker, (48, 60, 320, 0)), + # (0, self.add_walker, (31, 60, 600, -90)), # 女红色排队 7号找保温杯的顾客 + # (0, self.add_walker, (20, 60, 680, -90)), # 大胖男排队 + # (0, self.add_walker, (9, 60, 760, -90)), # 男灰黑色排队 + # (0, self.add_walker, (29, -290, 400, 180)), # # 青色女人占了位置 BrightTable5 + # # # # # # 上述准备 10开始 + (10, self.control_walkers_and_say, ([[[8, False, 100, 60, 520, 180, "我昨天保温杯好像落在你们咖啡厅了,你看到了吗?"]]])), + (9, self.customer_say, (8,"你可以帮我拿来吗,我在前门的桌子前等你。")), + (1, self.control_walker,(8, False, 80, -10, 520, 90)),# 红女士在吧台前后退一步 + (1, self.control_walker, (8, False, 80, 240, 1000, -45)), # 红女士走到Table1前 + (1, self.control_walker, (9, False, 100, 60, 600, -90)), # 大胖男排队往前走一步 + (2, self.control_walker, (10, False, 100, 60, 680, -90)), # 男灰黑色排队往前走一步 + (15, self.customer_say, (8,"就是这个杯子!找到啦,好开心!")), # 红女士在Table1前 + (5, self.customer_say, (8, "不用了。")), # 红女士在Table1前 + + + (8, self.remove_walkers, ([[0, 7, 8]])), + (3, self.control_walker, (6, False, 100, 60, 520, 0)), # 10号变7号 男灰黑色排队往前,轮到他 + (8, self.customer_say, (6, "还有酸奶吗")), + (8, self.customer_say, (6, "那好吧,那就先把窗帘给我关上,再开个空调")), + (35, self.control_walkers_and_say, ([[[6, True, 100, 60, 520, 0, "谢谢,这下凉快了"]]])), + + + # # 场景8 结束了,删除所有顾客。此处增加自主探索发现空间比较暗,打开大厅灯 + (28, self.clean_walkers,()), + (1, self.add_walker, (17, 60, 1000)),# 增加警察,提醒下班啦 + (3, self.control_walkers_and_say, ([[[0, False, 150, 60, 520, 0, "下班啦!别忘了打扫卫生。"]]])), + (10, self.control_walker, (0, False, 100, 60, 1000, 0)), + (4, self.clean_walkers, ()) + + ] + + pass def run_reset(self): + self.gen_obj() pass def init_robot(self): @@ -299,6 +394,16 @@ class SceneUI(Scene): # self.new_set_goal(question) # else: # self.customer_say("System",question) + if self.scene_flag == 1: + # 如果机器人不在 吧台 + if self.walker_followed: + return + end = [self.status.location.X, self.status.location.Y] + if end[1] >= 600 or end[1] <= 450 or end[0] >= 250: + # if int(self.status.location.X)!=247 or int(self.status.location.X)!=520: + self.walker_followed = True + self.control_walkers_and_say([[0, False, 150, end[0], end[1], 90, "谢谢!"]]) + self.scene_flag += 1 def handle_queue_messages(self): diff --git a/tasks_no_ui/CafeDailyOperations/CafeOneDay.py b/tasks_no_ui/CafeDailyOperations/CafeOneDay.py index 6bbe815..a0e6d2f 100644 --- a/tasks_no_ui/CafeDailyOperations/CafeOneDay.py +++ b/tasks_no_ui/CafeDailyOperations/CafeOneDay.py @@ -47,7 +47,7 @@ class SceneVLM(Scene): (0, self.control_walker, (5, True, 50, 250, 1200, 180)), # 设置id=4 的2小男孩随机游走红随机游走 (0, self.add_walker, (48, 60, 520, 0)), # 生成他妈妈 (0, self.add_walkers, ([[[48, 60, 520, 0], [31, 60, 600, -90], [20, 60, 680, -90], [9, 60, 760, -90]]])), - (38, self.customer_say, (7, "哎呦,今天这么多人,还有空位吗?")), # 女士问 38 + (55, self.customer_say, (7, "哎呦,今天这么多人,还有空位吗?")), # 女士问 38 (10, self.customer_say, (7, "我带着孩子呢,想要宽敞亮堂的地方。")), # 女士问 (8, self.customer_say, (7, "大厅的桌子好啊,快带我去呀!")), (15, self.control_walker, (7, False, 50, -250, 480, 0)), # #290, 400 diff --git a/tasks_no_ui/CafeDailyOperations/CafeOneDay_1128.py b/tasks_no_ui/CafeDailyOperations/CafeOneDay_1128.py new file mode 100644 index 0000000..2c199d8 --- /dev/null +++ b/tasks_no_ui/CafeDailyOperations/CafeOneDay_1128.py @@ -0,0 +1,129 @@ +""" +视觉语言操作 +机器人根据指令人的指令调节空调,自主探索环境导航到目标点,通过手臂的运动规划能力操作空调,比如开关按钮、调温按钮、显示面板 +""" + +import time +from robowaiter.scene.scene import Scene + + +class SceneVLM(Scene): + + def __init__(self, robot): + super().__init__(robot) + # 在这里加入场景中发生的事件, (事件发生的时间,事件函数) + + self.scene_flag = 1 + self.st1 = 3 + # self.st2 = self.st1 + 30 + # self.st3 = self.st2 + 65 + self.st2 = 3 + self.st3 = 3 + self.st4 = 3 + + self.signal_event_list = [ + + # 场景1:带小女孩找阳光下的空位 + (3, self.add_walker, (5, 230, 1200)), # 0号"Girl02_C_3" + # (1, self.control_walker, (0, False, 200, 60, 520, 0)), + # (9, self.customer_say, (0, "早上好呀,我想找个能晒太阳的地方。")), + (1, self.customer_say, (0, "可以带我过去嘛?")),#可以带我过去嘛? + (13, self.control_walker, (0, False, 50, 140, 1200, 180)), # 小女孩站在了 BrightTable1 旁边就餐啦 + + # # 场景2:有个胖胖男人点单交流并要咖啡,帮他送去角落的桌子 + # (3, self.add_walker, (5, 230, 1200)), # 小女孩 + # # # 上述准备 + (10, self.add_walker, (26, -28, -150, 90)), + (0, self.add_walker, (10, -70, -200, -45)), + (6, self.customer_say, (1, "嘿,RoboWaiter,过来一下!")), + (12, self.control_walkers_and_say, ([[[1, False, 100, -18, -200, -90, "你们这有什么饮料嘛?"]]])), #6 + # 20 胖胖男到了 BrightTable6 + (4, self.customer_say, (1, "咖啡有哪些呢?")), # 10 + (4, self.customer_say, (1, "来杯卡布奇诺吧。")), # 15 + + # # 场景3:有位女士要杯水和冰红茶 + (3, self.add_walkers, + ([[[21, 65, 1000, -90], [32, -80, 850, 135], [1, 60, 420, 135], [29, -290, 400, 180]]])), + (0, self.control_walker, (5, True, 50, 250, 1200, 180)), # 设置id=4 的2小男孩随机游走红随机游走 + (0, self.add_walker, (48, 60, 520, 0)), # 生成他妈妈 + (0, self.add_walkers, ([[[48, 60, 520, 0], [31, 60, 600, -90], [20, 60, 680, -90], [9, 60, 760, -90]]])), + (38, self.customer_say, (7, "哎呦,今天这么多人,还有空位吗?")), # 女士问 38 + (10, self.customer_say, (7, "我带着孩子呢,想要宽敞亮堂的地方。")), # 女士问 + (8, self.customer_say, (7, "大厅的桌子好啊,快带我去呀!")), + (15, self.control_walker, (7, False, 50, -250, 480, 0)), # #290, 400 + (3, self.customer_say, (7, "我想来杯水,帮我孩子拿个酸奶吧。")), + # # ### 9号灰色男 排队排着排着,不排了 + (0, self.control_walker, (10, False, 100, 100, 760, 180)), + (0, self.control_walker, (10, True, 100, 0, 0, 180)), + (90, self.customer_say, (7, "谢谢你的水和酸奶!")), # 倒水+取放酸奶 90s + + + (10, self.control_walkers_and_say, ([[[8, False, 100, 60, 520, 180, "我昨天保温杯好像落在你们咖啡厅了,你看到了吗?"]]])), + (5, self.customer_say, (8,"你可以帮我拿来吗,我在前门的桌子前等你。")), + (1, self.control_walker,(8, False, 80, -10, 520, 90)),# 红女士在吧台前后退一步 + (1, self.control_walker, (8, False, 80, 240, 1000, -45)), # 红女士走到Table1前 + (1, self.control_walker, (9, False, 100, 60, 600, -90)), # 大胖男排队往前走一步 + (2, self.control_walker, (10, False, 100, 60, 680, -90)), # 男灰黑色排队往前走一步 + (6, self.customer_say, (8,"就是这个杯子!找到啦,好开心!")), # 红女士在Table1前 + (5, self.customer_say, (8, "不用了。")), # 红女士在Table1前 + + + (8, self.remove_walkers, ([[0, 7, 8]])), + (3, self.control_walker, (6, False, 100, 60, 520, 0)), # 10号变7号 男灰黑色排队往前,轮到他 + (2, self.customer_say, (6, "好热呀!太阳也好大!")), + (20, self.control_walkers_and_say, ([[[6, True, 100, 60, 520, 0, "谢谢,这下凉快了"]]])), + + + # # 场景8 结束了,删除所有顾客。此处增加自主探索发现空间比较暗,打开大厅灯 + (24, self.clean_walkers, ()), + (1, self.add_walker, (17, 60, 1000)),# 增加警察,提醒下班啦 + (3, self.control_walkers_and_say, ([[[0, False, 150, 60, 520, 0, "下班啦!别忘了打扫卫生。"]]])), + + ] + + def _reset(self): + self.gen_obj() + # self.add_walkers([[47, 920]]) + pass + + def _run(self, op_type=10): + # 一个行人从门口走到 吧台 + # 打招呼需要什么 + # 行人说 哪里有位置,想晒个太阳 + # 带领行人去有太阳的地方 + # 行人说 有点热 + # 好的,这就去开空调 + self.walker_followed = False + pass + + def _step(self): + + if self.scene_flag == 1: + # 如果机器人不在 吧台 + if self.walker_followed: + return + end = [self.status.location.X, self.status.location.Y] + if end[1] >= 600 or end[1] <= 450 or end[0] >= 250: + # if int(self.status.location.X)!=247 or int(self.status.location.X)!=520: + self.walker_followed = True + self.control_walkers_and_say([[0, False, 150, end[0], end[1], 90, "谢谢!"]]) + self.scene_flag += 1 + + # 获得所有顾客的名字 + # print("=================") + # for cus in self.status.walkers: + # print(cus) + # print("=================") + pass + + +if __name__ == '__main__': + import os + from robowaiter.robot.robot import Robot + + robot = Robot() + + # create task + task = SceneVLM(robot) + task.reset() + task.run() diff --git a/tasks_no_ui/OT/Open_tasks_bright_table.py b/tasks_no_ui/OT/Open_tasks_bright_table.py index 87d1f02..828f3a2 100644 --- a/tasks_no_ui/OT/Open_tasks_bright_table.py +++ b/tasks_no_ui/OT/Open_tasks_bright_table.py @@ -20,7 +20,8 @@ class SceneOT(Scene): self.event_list = [ # (5, self.set_goal("At(Robot,WaterTable)")) # (5, self.set_goal("On(Yogurt,Table4)")) - (5, self.set_goal("At(Robot,BrightTable4)")) + # (5, self.set_goal("At(Robot,BrightTable4)")), + (3, self.set_goal("On(Dessert,Bar)")) ] def _reset(self): diff --git a/tasks_no_ui/OT/Open_tasks_test.py b/tasks_no_ui/OT/Open_tasks_test.py index fe63eb1..1e5fb0b 100644 --- a/tasks_no_ui/OT/Open_tasks_test.py +++ b/tasks_no_ui/OT/Open_tasks_test.py @@ -18,6 +18,7 @@ class SceneOT(Scene): super().__init__(robot) # 在这里加入场景中发生的事件 self.signal_event_list = [ + (3, self.customer_say, ("System", "冰红茶")), # (3, self.customer_say, ("System", "有多少盒装饮料")), # (3, self.customer_say, ("System", "桌子有几张")), # (3, self.customer_say, ("System", "你们这儿有军棋吗")), @@ -43,7 +44,7 @@ class SceneOT(Scene): # (3, self.customer_say, ("System", "还有空位吗")), - (3, self.customer_say, ("System", "有空桌子吗")), + # (3, self.customer_say, ("System", "有空桌子吗")), # (3, self.customer_say, ("System", "把盒装冰红茶放到水桌")), @@ -60,7 +61,8 @@ class SceneOT(Scene): def _reset(self): self.add_walkers([[0, 880], [250, 1200]]) - self.gen_obj() + self.gen_obj_tmp() + pass