Gangao commited on
Commit
2235b08
·
verified ·
1 Parent(s): 22324c9

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +80 -0
app.py ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from ai2thor.controller import Controller
3
+
4
+ from ai2thor.platform import CloudRendering
5
+ # 初始化全局模拟器对象,启用 headless 模式
6
+ controller = Controller(platform=CloudRendering)
7
+
8
+ # 用于记录所有动作的列表
9
+ action_history = []
10
+
11
+ def initialize_simulation():
12
+ """
13
+ 初始化 ai2thor 模拟器,并返回初始场景的截图。
14
+ """
15
+ controller.reset('FloorPlan28') # 指定场景
16
+ event = controller.step(action='Pass') # 不执行任何动作,只获取初始图像
17
+ image = event.frame
18
+ action_history.clear() # 清空历史记录
19
+ action_history.append((image, "初始化"))
20
+ return image, "初始化", action_history
21
+
22
+ def move_forward():
23
+ """
24
+ 在 ai2thor 模拟器中执行"向前移动"操作,并返回当前环境的截图。
25
+ """
26
+ action = "向前移动"
27
+ event = controller.step(action='MoveAhead')
28
+ image = event.frame
29
+ action_history.append((image, action))
30
+ return image, action, action_history
31
+
32
+ def move_backward():
33
+ """
34
+ 在 ai2thor 模拟器中执行"向后移动"操作,并返回当前环境的截图。
35
+ """
36
+ action = "向后移动"
37
+ event = controller.step(action='MoveBack')
38
+ image = event.frame
39
+ action_history.append((image, action))
40
+ return image, action, action_history
41
+
42
+ def move_left():
43
+ """
44
+ 在 ai2thor 模拟器中执行"向左旋转"操作,并返回当前环境的截图。
45
+ """
46
+ action = "向左旋转"
47
+ event = controller.step(action='RotateLeft')
48
+ image = event.frame
49
+ action_history.append((image, action))
50
+ return image, action, action_history
51
+
52
+ def move_right():
53
+ """
54
+ 在 ai2thor 模拟器中执行"向右旋转"操作,并返回当前环境的截图。
55
+ """
56
+ action = "向右旋转"
57
+ event = controller.step(action='RotateRight')
58
+ image = event.frame
59
+ action_history.append((image, action))
60
+ return image, action, action_history
61
+
62
+ # 使用 Gradio 构建交互界面
63
+ with gr.Blocks() as iface:
64
+ gr.Markdown("## 具身模型演示")
65
+ init_button = gr.Button("初始化")
66
+ forward_button = gr.Button("向前移动")
67
+ backward_button = gr.Button("向后移动")
68
+ left_button = gr.Button("向左旋转")
69
+ right_button = gr.Button("向右旋转")
70
+ image_output = gr.Image()
71
+ current_action_output = gr.Textbox(label="当前动作")
72
+ action_history_output = gr.Gallery(label="动作历史")
73
+
74
+ init_button.click(fn=initialize_simulation, outputs=[image_output, current_action_output, action_history_output])
75
+ forward_button.click(fn=move_forward, outputs=[image_output, current_action_output, action_history_output])
76
+ backward_button.click(fn=move_backward, outputs=[image_output, current_action_output, action_history_output])
77
+ left_button.click(fn=move_left, outputs=[image_output, current_action_output, action_history_output])
78
+ right_button.click(fn=move_right, outputs=[image_output, current_action_output, action_history_output])
79
+
80
+ iface.launch()