VisualNavigation--3D 环境 ai2thor 安装和介绍

AI2-THOR (The House Of inteRactions) 是一种用于AI智能体的逼真的可交互框架。AI2-THOR由室内场景组成,其中AI智能体可以在场景中导航并与物体交互以执行任务。 AI2-THOR的目的是促进视觉智能模型的开发,并推动该领域的研究。

详细信息可以浏览AI2-THOR GitHubAI2-THOR视频介绍。

1. 安装

AI2-THOR对系统的配置要求如下:

  • OS: Mac OS X 10.9+, Ubuntu 14.04+
  • Graphics Card: DX9 (shader model
    3.0) or DX11 with feature level 9.3 capabilities
  • CPU: SSE2 instruction set support
  • Python 2.7 or Python 3.5+
  • Linux users: X server with GLX module enabled

你可以使用pip安装AI2-THOR的最新版本,本博客撰写时当前的最新版本为2.3.4。 创建一个Python 2或者Python 3虚拟环境,并运行:

$ pip install ai2thor

AI2-THOR发展到现在具有多个版本,每个版本差异明显。你可以参见AI2-THOR历史版本对其他版本进行安装。

在运行以下代码之前,请确保具有OpenGL的X服务器正在运行,并且已为图形卡安装了OpenGL扩展。

import ai2thor.controller

controller = ai2thor.controller.Controller()

首次初始化Controller时,包含3D场景的游戏环境将下载到$ HOME/.ai2thor。 二进制文件的大小约为500MB。

2. 简介

AI2-THOR现在分为 iTHORRoboTHOR

iTHOR 的特性如下:

  • 120个房间。房间类型包括厨房,卧室,浴室和客厅,每种房间类型包括30个不同的房间。
  • 2000种可用于AI智能体与之交互的不同物体
  • 基于Unity 3D,可对物体和场景进行物理模拟
  • 包括具有视觉状态可更改的物体,包括打开/关闭(open/close),打开/关闭(on/off),热/冷 (hot/cold)
  • 支持多种智能体类型,例如人形机器人和无人机
  • 在单个场景中支持多个智能体

RoboTHOR 的特性如下:

  • 75套带有600多个物体的公寓,供AI智能体在其中导航
  • 14套公寓的物理和模拟对口
  • 将Locobot机器人与Kinect相机配合使用
  • 从资产库中以模块化方式构建公寓
  • 实体公寓可轻松重新配置
  • 所有人均可访问的仿真和真实环境
iTHOR RoboTHOR
概念
场景
物体
动作
元数据

3. iTHOR

iTHOR是AI2-THOR框架内的环境,其中包括一组交互式对象和场景,并提供了精确的世界物理建模。

iTHOR建立在Unity物理引擎之上,并为物体和场景的物理属性建模:质量,摩擦,弹跳等。

iTHOR提供了物体操作:拾取物体,放置物体,推动物体等。

iTHOR可以更改物体的状态,例如打开/关闭微波炉,烹饪食物,打开/关闭灯。

iTHOR支持使用不同类型的多个智能体执行任务。

3.1 概念

AI2-THOR中的常见的概念及其描述如下:

概念 描述
Agent 智能体是一个实体,可以在场景中导航并与物体进行交互。
Scene AI2-THOR中的场景表示智能体可以导航并与其交互的虚拟房间。 有4个场景类别,每个类别中有30个独特的场景:厨房,客厅,卧室,浴室。
Action 动作是智能体在场景中执行的离散命令(例如MoveAhead,RotateRight,PickupObject)
Sim Object sim物体是智能体可以与之交互的物体。 根据物体类型定义的不同,物体具有很广泛地交互类型。
Object Visibility 满足以下三个条件的物体将被视为“可见”:该物体必须在相机的视野内,并且必须在距智能体中心的距离阈值之内(默认值:1.5米),并且相机发出的光线必须先击中物体,而不能先击中其他障碍物。 请注意,在图像中渲染的物体并不总是对智能体可见。 例如,在图像中可以看到超出1.5米阈值的物体,但该对象将被报告为对物体不可见。
Object Interactability 如果一个物体被标记为可见并且不受任何其他物体的阻碍,则该物体被称为是可交互的。 大多数物体都是可交互的,只要它们也是可见的,但是某些物体具有透明性,这会导致通过它们将物体报告为可见的。 一个示例是玻璃淋浴门,其后有海绵物体。 玻璃门将被标记为“可见且可交互”,但海绵仅是可见的。 尝试与海绵互动将引发错误,因为只能通过玻璃门才能看到它。
Receptacle 一种可以包含另一个物体的物体。 容器的一些示例包括:桌面,杯子,沙发,床,桌子,碗等。某些容器不能在场景中移动,而且大多是大型物体,移动起来没有意义(厨房台面、水槽等)。 某些容器也可以打开和关闭(微波炉,橱柜,抽屉等),而一些其他容器也可以由智能体拿起并移动(盘子,碗,盒子等)。
3.2 场景

iTHOR环境中共有120个场景,涵盖四种不同的房间类别:厨房,客厅,卧室和浴室。 每个房间都有一组可以在其中找到的物体。 注意,某些物体类型可以在给定类别的所有场景中找到,而某些物体类型有时仅在特定类别的场景中可以找到。

在场景初始化期间,可以将物体放置在不同的容器上,因此我们可以为单个场景获得许多不同的配置。 因此,配置数量远大于120。

场景类别 描述
厨房 30 scenes, FloorPlan1 - FloorPlan30
客厅 30 scenes, FloorPlan201 - FloorPlan230
卧室 30 scenes, FloorPlan301 - FloorPlan330
浴室 30 scenes, FloorPlan401 - FloorPlan430
3.3 物体

在iTHOR中,与物体的交互取决于物体的物理属性。

3.3.1 物体类型

AI2-THOR中有115种物体类型。 每种物体类型都具有与之相关的可操作属性、材质属性和物体位置(在场景类别内)。 此外,某些物体与其他物体或环境的某些部分具有上下文交互作用,这可能导致物体状态动态变化。

物体类型表格如下:

# 物体类型 中文名称
1 AlarmClock
2 Apple
3 AppleSliced
4 ArmChair
5 BaseballBat
6 BasketBall
7 Bathtub
8 BathtubBasin
9 Bed
10 Blinds
11 Book
12 Boots
13 Bottle
14 Bowl
15 Box
16 Bread
17 BreadSliced
18 ButterKnife
19 Cabinet
20 Candle
21 Cart
22 CD
23 CellPhone
24 Chair
25 Cloth
26 CoffeeMachine
27 CoffeeTable
28 CounterTop
29 CreditCard
30 Cup
31 Curtains
32 Desk
33 DeskLamp
34 DiningTable
35 DishSponge
36 Drawer
37 Dresser
38 Egg
39 EggCracked
40 Faucet
41 FloorLamp
42 Footstool
43 Fork
44 Fridge
45 GarbageCan
46 HandTowel
47 HandTowelHolder
48 HousePlant
49 Kettle
50 KeyChain
51 Knife
52 Ladle
53 Laptop
54 LaundryHamper
55 LaundryHamperLid
56 Lettuce
57 LettuceSliced
58 LightSwitch
59 Microwave
60 Mirror
61 Mug
62 Newspaper
63 Ottoman
64 Painting
65 Pan
66 PaperTowel
67 Pen
68 Pencil
69 PepperShaker
70 Pillow
71 Plate
72 Plunger
73 Poster
74 Pot
75 Potato
76 PotatoSliced
77 RemoteControl
78 Safe
79 SaltShaker
80 ScrubBrush
81 Shelf
82 ShowerCurtain
83 ShowerDoor
84 ShowerGlass
85 ShowerHead
86 SideTable
87 Sink
88 SinkBasin
89 SoapBar
90 SoapBottle
91 Sofa
92 Spatula
93 Spoon
94 SprayBottle
95 Statue
96 StoveBurner
97 StoveKnob
98 TeddyBear
99 Television
100 TennisRacket
101 TissueBox
102 Toaster
103 Toilet
104 ToiletPaper
105 ToiletPaperHanger
106 Tomato
107 TomatoSliced
108 Towel
109 TowelHolder
110 TVStand
111 Vase
112 Watch
113 WateringCan
114 Window
115 WineBottle
3.3.2 可操作属性

该框架中的物体可以具有许多与物体类型关联的可操作属性。 可操作属性是具有与之关联的操作的特定属性。 例如,一个Openable物体意味着可以使用OpenObject和CloseObject操作与该对象进行交互。 以下是所有可操作属性及其详细说明的列表。

3.3.2.1 Openable

可以使用OpenObject和CloseObject操作打开或关闭这些物体。 可打开的容器允许将物体放置在其中。

3.3.2.2 Pickupable

智能体可以使用PickupObject和PutObject操作将这些对象拾取或放到Receptacles物体中。 也可以使用DropHandObject放置拾取的物体,该物体无需使用目标容器即可从Agent的手中移走该物体。 Throw是放下物体的扩展,其中添加了附加的力以使物体围绕场景投掷。 也可以使用Push和Pull动作将可拾取的物体推到周围。 一些Receptacles物体也可以拾取。 放置在可拾取容器中的所有物体都可以立即移动,因此可以执行复杂的序列,例如(将苹果放在板上->移动苹果和板到水槽)。

3.3.2.3 On/Off

使用ToggleObjectOn和ToggleObjectOff操作与这些物体进行交互。 当打开或关闭所有打开/关闭物体时都会发生可见状态更改(即,笔记本电脑的屏幕将打开并显示图像,关闭时将显示空白)。

3.3.2.4 Receptacle

这些物体被分类为Receptacles,这意味着如果其他物体在物理上可以适合容器,则可以将其他物体放置在它们之上或之中。 某些容器是受限制的特定物体(例如,ToiletPaper是唯一可以放在ToiletPaperHanger上的类型)。 请注意,任何也可以拾取的容器都可以与它们活动包含的任何Sim物体一起在场景中移动(即:拾取装有苹果的板,以同时在场景中移动板和苹果)。

3.3.2.5 Fillable

使用FillObjectWithLiquid操作可以将各种液体填充到这些物体中。 可填充物体可以用水、咖啡或酒填充。 如果某个物体填充有一种液体类型,并且从全局向上轴旋转了90度以上,则该物体将自动清空自身,因为液体已经“溢出”。 另外,一些填充交互是上下文相关的。 例如,将空杯子放在打开的咖啡壶物体中将自动在杯子中装满咖啡。 同样,将空杯子移到正在运行的水龙头下会自动将杯子装满水。

  • 10
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值