当前位置: 首页 > news >正文

AI2-THOR环境下实现机器人导航、物体定位与抓取

1. 依赖安装

pip install ai2thor
pip install numpy pillow opencv-python

在这里插入图片描述

2. 验证安装

# 运行测试脚本验证安装 test_thor.py
from ai2thor.controller import Controller
controller = Controller(scene="FloorPlan1")
controller.step(action="MoveAhead")
print("Success!")
## 

3.手动键盘控制

# 创建文件 manual_control.py
from ai2thor.controller import Controller
import keyboard

controller = Controller(
    scene="FloorPlan1", 
    gridSize=0.25,  # 移动步长0.25米
    rotateStepDegrees=45  # 旋转步长45度
)

print("WASD控制移动,QE旋转,F抓取,ESC退出")

while True:
    event = controller.step(action="Pass")  # 保持场景更新
    if keyboard.is_pressed('esc'):
        break
    elif keyboard.is_pressed('w'):
        event = controller.step(action="MoveAhead")
    elif keyboard.is_pressed('s'):
        event = controller.step(action="MoveBack")
    elif keyboard.is_pressed('a'):
        event = controller.step(action="MoveLeft")
    elif keyboard.is_pressed('d'):
        event = controller.step(action="MoveRight")
    elif keyboard.is_pressed('q'):
        event = controller.step(action="RotateLeft")
    elif keyboard.is_pressed('e'):
        event = controller.step(action="RotateRight")
    elif keyboard.is_pressed('f'):
        # 抓取最近的可交互物体
        objects = [obj for obj in event.metadata["objects"] if obj["visible"]]
        if objects:
            event = controller.step(
                action="PickupObject",
                objectId=objects[0]["objectId"],
                forceAction=True
            )

controller.stop()

4. 定位目标物体(以微波炉为例)

# 创建文件 auto_grab.py
from ai2thor.controller import Controller

controller = Controller(
    scene="FloorPlan1",
    visibilityDistance=1.5,  # 可见距离1.5米
    renderInstanceSegmentation=True  # 启用实例分割
)

# 查找所有微波炉
microwaves = [obj for obj in controller.last_event.metadata["objects"]
              if obj["objectType"] == "Microwave"]

if microwaves:
    target_id = microwaves[0]["objectId"]
    # 导航到目标附近
    controller.step(
        action="MoveToObject",
        objectId=target_id,
        moveMagnitude=0.5
    )
    # 抓取动作
    event = controller.step(
        action="PickupObject",
        objectId=target_id
    )
    if event.metadata["lastActionSuccess"]:
        print("抓取成功!")
    else:
        print("抓取失败:", event.metadata["errorMessage"])
else:
    print("场景中没有微波炉")

controller.stop()

5. 多房间导航

# 切换到多楼层场景(如FloorPlan201为厨房+客厅)
controller.reset(scene="FloorPlan201")

# 获取场景拓扑图
event = controller.step(action="GetReachablePositions")
reachable_positions = event.metadata["actionReturn"]

# 随机导航到可达点
import random
target_pos = random.choice(reachable_positions)
controller.step(
    action="MoveTo",
    position=target_pos,
    forceAction=True
)

6. 视觉辅助抓取

# 使用实例分割定位物体
event = controller.step(action="Pass")
for obj in event.instance_segmentation_frame:
    if obj["objectType"] == "Mug":
        # 计算物体中心坐标
        center_x = obj["axisAlignedBoundingBox"]["center"]["x"]
        center_z = obj["axisAlignedBoundingBox"]["center"]["z"]
        controller.step(
            action="MoveTo",
            position=dict(x=center_x, y=0, z=center_z),
            forceAction=True
        )
        controller.step(action="PickupObject", objectId=obj["objectId"])
        break

7. 语音控制

import speech_recognition as sr
r = sr.Recognizer()
with sr.Microphone() as source:
    print("请说指令:")
    audio = r.listen(source)
    command = r.recognize_google(audio, language='zh-CN')

相关文章:

  • C++经典框架案例(六)
  • CentOS停服后的替代选择:openEuler、Rocky Linux及其他系统的未来展望
  • 《离线唤醒+离线Vosk识别+DeepSeek+离线合成,你的第二大脑》
  • RFID涉密载体柜:智能安全,全程守护,提供智能化的安全管控
  • QEMU源码全解析 —— 内存虚拟化(18)
  • DeepSeek绘制UML设计图
  • HTTP实验(ENSP模拟器实现)
  • 【Python量化金融实战】-第1章:Python量化金融概述:1.2 Python在量化金融中的优势与生态
  • 愿在线段树中搁浅
  • ARM指令集
  • Python 元组全解析:与其他数据类型的对比与应用题】
  • 医疗AI领域中GPU集群训练的关键技术与实践经验探究(下)
  • 更改conda 环境默认安装位置
  • 机器学习数学基础:31.Z检验
  • [python脚本]论文1.(一)CPU/内存数据分析和分组
  • 【AI】DeepSeek 概念/影响/使用/部署
  • Python 高级特性-迭代器
  • 【练习】【子集NO.1】力扣78. 子集
  • 【Research Proposal】基于提示词方法的智能体工具调用研究——难点
  • 解决 Nginx 代理后 HTTP 头部丢失的问题:以 access_token 为例
  • 株洲公司做网站/微信seo是什么意思
  • 网站建设宣传/百度问答首页
  • 安徽建工网/佛山网站优化服务
  • 求南浦做电商网站/软文广告平台
  • 做网站流程 优帮云/产品推广介绍
  • 郑州做网站公司排/宁波网站推广