Habitat-Challenge (MP3D) Object Navigation入门教程

在这里插入图片描述

任务介绍

本文介绍的是2021 年 Habitat 挑战赛中的Object Navigation任务,即Object Goal Navigation任务的MP3D数据集相关使用入门材料。
本人在学习过程中发现官方教程、现有材料都比较零散,不利于入门者学习,故此整理了本文,如有错误欢迎指出~

运行逻辑

1. 顶层调用

调用habitat的核心部分,功能包括:agent智能体创建(以TempAgent为例)、模拟环境创建(根据配置文件config)、评估[1]

import habitat
import TempAgent
config = {}

def main():
    agent = TempAgent(task_config=config)
    challenge = habitat.Challenge()
    challenge.submit(agent)

2. 智能体agent

实现算法的核心部分,通过重写habitat.Agent对算法进行实现,必须包含以下三个方法实现:

  • init:Agent初始化
  • reset:每轮episode调用的清空方法
  • act:每个step中得到observation之后给出的动作方法

示例智能体的实现TempAgent如下:

class TempAgent(habitat.Agent):
    def __init__(self, task_config: DictConfig):
        self._task_config = task_config

    def reset(self):
        pass

    def act(self, observations):
        return {
            'action': 1
        }

值得注意的是,我们替换了habitat-challenge github代码[1]的act连续动作示例为离散动作,以简单理解并与实际使用更符合

3. 动作aciton

/habitat-lab/habitat/sims/habitat_simulator/actions.py中定义了默认的动作 [2],结合agent中的act {’action’: 0/1/2/3/4/5/6}使用:

class _DefaultHabitatSimActions(Enum):
    STOP = 0
    MOVE_FORWARD = 1
    TURN_LEFT = 2
    TURN_RIGHT = 3
    LOOK_UP = 4
    LOOK_DOWN = 5
    TURN_RIGHT_2 = 6

0-5动作非常好理解,看名字就知道,动作具体的数值(例如前进步数、旋转角度等等)通过配置进行设置。

其中,6动作为旋转60°自定义动作:“self.agent_config.action_space[6] = ActionSpec(“turn_right”, ActuationSpec(amount=60.0))”

以下是相关动作的默认配置:

  • 水平旋转角度:TURN_ANGLE = 10
  • 垂直旋转角度:TILT_ANGLE = 15
  • 前进距离:FORWARD_STEP_SIZE = 0.25 (meters)

4. 配置config

在第一部分顶层调用的habitat.get_config在…/habitat-challenge/habitatlab/habitat/config/default.py中定义。该文件中定义了:

  1. get_config()方法
  2. 所有配置变量的默认值

可以通过变量的定义进行配置文件的编写,以下是配置文件yaml示例供参考[3],可以通过配置文件的结构与default.py中的变量定义找到他们的对应关系:

ENVIRONMENT:
  MAX_EPISODE_STEPS: 500
  ITERATOR_OPTIONS:
    SHUFFLE: False
SIMULATOR:
  TURN_ANGLE: 30
  TILT_ANGLE: 30
  ACTION_SPACE_CONFIG: "v1"
  AGENT_0:
    SENSORS: ['RGB_SENSOR', 'DEPTH_SENSOR']
    HEIGHT: 0.88
    RADIUS: 0.18
  HABITAT_SIM_V0:
    GPU_DEVICE_ID: 0
    ALLOW_SLIDING: False
  SEMANTIC_SENSOR:
    WIDTH: 640
    HEIGHT: 480
    HFOV: 79
    POSITION: [0, 0.88, 0]
  RGB_SENSOR:
    WIDTH: 640
    HEIGHT: 480
    HFOV: 79
    POSITION: [0, 0.88, 0]
  DEPTH_SENSOR:
    WIDTH: 640
    HEIGHT: 480
    HFOV: 79
    NORMALIZE_DEPTH: False
    MIN_DEPTH: 0.5
    MAX_DEPTH: 5.0
    POSITION: [0, 0.88, 0]
TASK:
  TYPE: ObjectNav-v1
  POSSIBLE_ACTIONS: ["STOP", "MOVE_FORWARD", "TURN_LEFT", "TURN_RIGHT", "LOOK_UP", "LOOK_DOWN", "TURN_RIGHT_2"]
  SUCCESS_DISTANCE: 0.2

  SENSORS: ['OBJECTGOAL_SENSOR', 'COMPASS_SENSOR', 'GPS_SENSOR']
  GOAL_SENSOR_UUID: objectgoal

  MEASUREMENTS: ['DISTANCE_TO_GOAL', 'SUCCESS', 'SPL', 'SOFT_SPL']

  DISTANCE_TO_GOAL:
    DISTANCE_TO: VIEW_POINTS
  SUCCESS:
    SUCCESS_DISTANCE: 0.2

DATASET:
  TYPE: ObjectNav-v1
  SPLIT: val
  DATA_PATH: /home/embodied/SG/data/MatterPort3D/objectnav/mp3d/v1/{split}/{split}.json.gz
  SCENES_DIR: /home/embodied/SG/data/MatterPort3D/

参考资料

  1. habitat-challenge GitHub源码:https://github.com/facebookresearch/habitat-challenge/tree/main
  2. habitat-challenge (2022) 环境使用学习:https://blog.csdn.net/l963852k/article/details/136489287
  3. 开源项目NIPS2024-SGNav:https://github.com/bagh2178/SG-Nav
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值