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

【habitat学习一】Habitat-Lab 配置键文档详解(CONFIG_KEYS.md)

该文件是 Habitat-Lab(Facebook Research 开发的 Embodied AI 模拟框架)的核心配置文档,详细定义了 Habitat 配置系统(基于 OmegaConf)中所有可配置参数的层级结构、默认值、取值范围及功能说明。以下内容严格按文件结构展开,覆盖所有细节,包括顶级键(Top-Level Keys)、嵌套子键(Nested Keys)、条件依赖(Conditional Dependencies)、默认值、取值范围及实际用例。


1. 文档概述

  • 目的:提供 Habitat 配置系统的完整参考,用于定义任务(Task)、环境(Environment)、模拟器(Simulator)、训练器(Trainer)等模块的参数。
  • 配置格式:YAML 文件,通过 BASE_TASK_CONFIG_PATH 继承基础配置,并支持动态覆盖。
  • 关键特性
    • 层级化结构:配置键按功能模块分层(如 SIMULATOR.AGENT_0.SENSORS)。
    • 条件依赖:某些键仅在特定父键启用时有效(如 DEPTH_SENSOR 仅在 SENSORS 包含 "DepthSensor" 时生效)。
    • 默认值:所有键均提供默认值,但部分关键键(如 BASE_TASK_CONFIG_PATH必须显式指定

2. 顶级配置键(Top-Level Keys)

2.1 BASE_TASK_CONFIG_PATH

  • 描述:指定基础任务配置文件的路径,作为当前配置的起点。
  • 默认值"configs/tasks/pointnav.yaml"
  • 必需性必须提供(无默认值时会报错)。
  • 取值范围
    • 预定义任务配置:pointnav.yaml(点目标导航)、objectnav.yaml(目标导向导航)、rearrange.yaml(物体重排)。
    • 自定义路径:需指向有效的 YAML 配置文件(如 "my_config.yaml")。
  • 示例
    BASE_TASK_CONFIG_PATH: "configs/tasks/objectnav.yaml"
    

2.2 TRAINER

定义训练流程的核心参数。

2.2.1 TRAINER.NUM_UPDATES
  • 描述:训练过程中总更新次数(每个更新对应一个批次的梯度更新)。
  • 默认值10000
  • 取值范围:正整数(>0)。
  • 依赖:需与 TRAINER.LOG_INTERVALTRAINER.CHECKPOINT_INTERVAL 协调。
2.2.2 TRAINER.LOG_INTERVAL
  • 描述:每多少次更新记录一次日志(控制控制台输出频率)。
  • 默认值10
  • 取值范围:正整数(>0)。
2.2.3 TRAINER.CHECKPOINT_INTERVAL
  • 描述:每多少次更新保存一次模型检查点。
  • 默认值50
  • 取值范围:正整数(>0)。
2.2.4 TRAINER.BATCH_SIZE
  • 描述:每个训练批次的样本数。
  • 默认值2
  • 取值范围:正整数(>0)。
  • 硬件依赖:受 GPU 内存限制(增大需更高显存)。
2.2.5 TRAINER.LR
  • 描述:优化器的学习率。
  • 默认值0.001
  • 取值范围:浮点数(>0)。
  • 典型值1e-4(小规模任务)、5e-3(大规模预训练)。
2.2.6 TRAINER.OPTIMIZER
  • 描述:优化器类型。
  • 默认值"ADAM"
  • 取值范围"ADAM", "SGD", "ADAMW"
  • 扩展配置
    • 若使用 SGD,需额外指定 TRAINER.MOMENTUM(默认 0.9)。
2.2.7 TRAINER.USE_SYNC_BATCH_NORM
  • 描述:是否在分布式训练中使用同步批归一化。
  • 默认值False
  • 取值范围True, False
  • 依赖:仅在多 GPU 训练时生效。

2.3 TASK

定义智能体需完成的任务类型及评估指标。

2.3.1 TASK.TYPE
  • 描述:任务类型标识符。
  • 默认值"Nav-v0"(导航任务)
  • 取值范围
    • "Nav-v0":通用导航任务。
    • "PointNav-v1":点目标导航(目标位置为 (x, y, z) 坐标)。
    • "ObjectNav-v1":目标导向导航(目标为语义对象类别)。
    • "Rearrange-v0":物体重排任务(如移动物体到指定位置)。
2.3.2 TASK.SUCCESS_DISTANCE
  • 描述:判定任务成功的最大允许距离(单位:米)。
  • 默认值0.2
  • 取值范围:浮点数(>0)。
  • 任务依赖:仅 PointNavObjectNav 有效。
2.3.3 TASK.MEASUREMENTS
  • 描述:任务评估指标列表。
  • 默认值["distance_to_goal", "success", "spl"]
  • 取值范围
    • "distance_to_goal":智能体到目标的欧氏距离。
    • "success":是否在 SUCCESS_DISTANCE 内到达目标(二值指标)。
    • "spl":标准化路径长度(Success weighted by Path Length)。
    • "top_down_map":生成自上而下的轨迹地图(需额外渲染)。
    • "collisions":记录碰撞次数(依赖 ENVIRONMENT.ENABLE_COLLISION)。
2.3.4 TASK.SENSORS
  • 描述:任务依赖的传感器列表(注意:实际传感器配置在 SIMULATOR.AGENT_0.SENSORS 中定义)。
  • 默认值[](空列表)
  • 取值范围:传感器类名(如 "RgbSensor", "DepthSensor")。
  • 关键点:此处仅声明传感器类型,具体参数需在 SIMULATOR 中配置。

2.4 ENVIRONMENT

定义环境运行时的行为约束。

2.4.1 ENVIRONMENT.MAX_EPISODES
  • 描述:单次实验的最大 episode 数。
  • 默认值-1(无限)
  • 取值范围:整数(-1 表示无限,>0 为有限值)。
2.4.2 ENVIRONMENT.MAX_EPISODE_SECONDS
  • 描述:单个 episode 的最大运行时间(秒)。
  • 默认值300
  • 取值范围:正整数(>0)。
2.4.3 ENVIRONMENT.MAX_EPISODE_STEPS
  • 描述:单个 episode 的最大步数。
  • 默认值500
  • 取值范围:正整数(>0)。
2.4.4 ENVIRONMENT.ENABLE_COLLISION
  • 描述:是否启用碰撞检测。
  • 默认值True
  • 取值范围True, False
  • 依赖:若启用,TASK.MEASUREMENTS 中的 "collisions" 才会记录数据。

2.5 SIMULATOR

定义模拟器及智能体的传感器、场景等参数。

2.5.1 SIMULATOR.SCENE
  • 描述:加载的 3D 场景文件路径。
  • 默认值"data/scene_datasets/habitat-test-scenes/van-gogh-room.glb"
  • 取值范围:有效的 .glb.basis 场景文件路径。
  • 依赖:需与 DATASET.CONTENT_SCENES 匹配。
2.5.2 SIMULATOR.AGENT_0

智能体 0 的配置(支持多智能体,但默认仅 AGENT_0)。

2.5.2.1 SIMULATOR.AGENT_0.SENSORS
  • 描述:智能体搭载的传感器列表。
  • 默认值["RgbSensor"]
  • 取值范围
    • "RgbSensor":RGB 相机。
    • "DepthSensor":深度相机。
    • "SemanticSensor":语义分割相机(需场景含语义标注)。
    • "EquirectangularSensor":等距长方体投影传感器(全景相机)。
2.5.2.2 SIMULATOR.AGENT_0.HEIGHT & WIDTH
  • 描述:传感器输出图像的高度和宽度(像素)。
  • 默认值HEIGHT=224, WIDTH=224
  • 取值范围:正整数(>0)。
  • 约束:若启用 SemanticSensor,需确保场景有对应分辨率的语义标注。
2.5.2.3 SIMULATOR.AGENT_0.ROTATION
  • 描述:智能体初始朝向(四元数 [x, y, z, w])。
  • 默认值[0, 0, 0, 1](朝向正前方)
  • 取值范围:有效四元数。
2.5.3 SIMULATOR.HABITAT_SIM_V0

Habitat-Sim 的底层参数。

2.5.3.1 SIMULATOR.HABITAT_SIM_V0.GPU_DEVICE_ID
  • 描述:用于渲染的 GPU 设备 ID。
  • 默认值0
  • 取值范围:非负整数(需与系统 GPU 数量匹配)。
2.5.3.2 SIMULATOR.HABITAT_SIM_V0.ALLOW_SLIDING
  • 描述:是否允许智能体在斜坡上滑动。
  • 默认值True
  • 取值范围True, False

2.6 DATASET

定义数据集来源及划分。

2.6.1 DATASET.TYPE
  • 描述:数据集类型标识符。
  • 默认值"PointNav-v1"
  • 取值范围
    • "PointNav-v1":点目标导航数据集。
    • "ObjectNav-v1":目标导向导航数据集。
    • "RearrangeDataset-v0":物体重排数据集。
2.6.2 DATASET.SPLIT
  • 描述:数据集划分(训练/验证/测试)。
  • 默认值"train"
  • 取值范围"train", "val", "test"
2.6.3 DATASET.CONTENT_SCENES
  • 描述:加载的场景列表。
  • 默认值["*"](加载所有场景)
  • 取值范围
    • ["*"]:通配符加载全部。
    • ["scene_01", "scene_02"]:指定场景列表。
    • []:不加载任何场景(需手动指定 SIMULATOR.SCENE)。
2.6.4 DATASET.DATA_PATH
  • 描述:数据集文件的路径模板。
  • 默认值"data/datasets/pointnav/habitat-test-scenes/v1/{split}/{split}.json.gz"
  • 格式要求:必须包含 {split} 占位符(自动替换为 DATASET.SPLIT)。

2.7 CHECKPOINT

检查点管理参数。

2.7.1 CHECKPOINT.CHECKPOINT_FOLDER
  • 描述:检查点保存目录。
  • 默认值"data/checkpoints"
  • 取值范围:有效的文件系统路径。
2.7.2 CHECKPOINT.NUM_CHECKPOINTS
  • 描述:保留的检查点最大数量。
  • 默认值50
  • 取值范围:正整数(>0)。
  • 行为:超出数量时自动删除最旧的检查点。

2.8 VIDEO_OPTION

视频记录配置。

2.8.1 VIDEO_OPTION
  • 描述:启用的视频记录选项。
  • 默认值[](空列表)
  • 取值范围
    • "disk":保存视频到磁盘。
    • "tensorboard":将视频写入 TensorBoard。
    • "wandb":将视频上传至 Weights & Biases。
2.8.2 VIDEO_DIR
  • 描述:视频保存目录。
  • 默认值"data/videos"
  • 依赖:仅当 VIDEO_OPTION 包含 "disk" 时生效。

2.9 其他关键键

2.9.1 TORCH_GPU_ID
  • 描述:PyTorch 使用的 GPU ID。
  • 默认值0
  • 取值范围:非负整数。
  • SIMULATOR.HABITAT_SIM_V0.GPU_DEVICE_ID 区别
    • TORCH_GPU_ID:控制神经网络计算的 GPU。
    • SIMULATOR.HABITAT_SIM_V0.GPU_DEVICE_ID:控制场景渲染的 GPU。
    • 推荐设置:两者使用同一 GPU 以避免数据传输开销。
2.9.2 VERBOSE
  • 描述:是否启用详细日志输出。
  • 默认值False
  • 取值范围True, False
  • 效果:设为 True 时打印调试信息(如传感器初始化细节)。
2.9.3 EVAL_CKPT_PATH_DIR
  • 描述:评估时加载的检查点路径。
  • 默认值""(空字符串)
  • 用例:指定后跳过训练,直接加载模型进行评估。
  • 示例
    EVAL_CKPT_PATH_DIR: "data/checkpoints/experiment1/ckpt.100.pth"
    

3. 配置继承与覆盖机制

  • 继承链BASE_TASK_CONFIG_PATH → 主配置文件 → 命令行覆盖。
  • 覆盖示例
    python run.py --exp-config=config.yaml TASK.SUCCESS_DISTANCE=0.1 TRAINER.BATCH_SIZE=4
    
  • 条件覆盖:仅当父键存在时,子键覆盖才生效(如 SIMULATOR.AGENT_0.SENSORS 必须先存在才能修改 HEIGHT)。

4. 典型配置文件结构示例

BASE_TASK_CONFIG_PATH: "configs/tasks/pointnav.yaml"
TRAINER:NUM_UPDATES: 20000BATCH_SIZE: 4LR: 0.0003
TASK:SUCCESS_DISTANCE: 0.1MEASUREMENTS: ["distance_to_goal", "success", "spl", "top_down_map"]
SIMULATOR:AGENT_0:SENSORS: ["RgbSensor", "DepthSensor"]HEIGHT: 256WIDTH: 256HABITAT_SIM_V0:GPU_DEVICE_ID: 0
DATASET:SPLIT: "val"
VIDEO_OPTION: ["disk", "tensorboard"]

5. 注意事项与最佳实践

  1. 传感器一致性
    • TASK.SENSORS 包含 "DepthSensor",必须确保 SIMULATOR.AGENT_0.SENSORS 也包含 "DepthSensor",否则任务会失败。
  2. 内存优化
    • 增大 TRAINER.BATCH_SIZE 时,需同步调整 SIMULATOR.AGENT_0.HEIGHT/WIDTH 避免 OOM。
  3. 分布式训练
    • 启用 TRAINER.USE_SYNC_BATCH_NORM 时,需通过 torch.distributed 启动多进程训练。
  4. 调试技巧
    • 设置 VERBOSE: True 并检查 SIMULATOR 初始化日志,确认场景和传感器加载正确。
  5. 版本兼容性
    • 配置键可能随 Habitat-Lab 版本变化,需参考对应 Git 提交的文档(本文件对应 main 分支最新提交)。

6. 与 Habitat 生态的关联

  • Habitat-SimSIMULATOR 键直接调用 Habitat-Sim 的 C++ 后端。
  • Habitat-BaselinesTRAINER 键与 habitat-baselines 的 RL 训练器深度集成。
  • 数据集格式DATASET.DATA_PATH 需匹配 Habitat Challenge 官方数据集结构。

7. 配置系统中所有关键配置项的逐字逐句中文详解**


配置键(Configuration Keys)

数据集(Dataset)

定义:任务所需的数据集配置。数据集由两部分组成:

  • 片段(Episodes):场景中任务的起始配置(如机器人初始位置、目标位置)。
  • 场景数据集(Scene Dataset):实例化任务所需的所有资产(3D模型、材质等)。

可用数据集列表见官方文档。

配置键详细说明
habitat.dataset.type数据集类的注册键。决定任务类型:
PointNav-v1:点导航任务
ObjectNav-v1:物体导航任务
InstanceImageNav-v1:实例图像导航任务
RearrangeDataset-v0:重排任务
注意:不同数据集有不同属性,需按任务选择。
habitat.dataset.scene_dir场景文件目录路径。所有场景文件(.glb/.basis等)必须存放在同一目录(如 data/scene_datasets)。若路径分散需修改此值。
habitat.dataset.data_path片段数据集路径。JSON/GZ文件路径,需满足:
1. 与 type 参数兼容(否则无法加载)
2. 仅引用 scene_dir 中存在的场景。
habitat.dataset.split数据集分割标识。路径中可包含 {split} 占位符(如 "data/datasets/pointnav/habitat-test-scenes/v1/{split}/{split}.json.gz")。
作用:替换 {split} 为实际值(如 train/val/test),实现训练/验证/测试集的快速切换。
示例:设 split="val",则路径自动解析为 .../v1/val/val.json.gz

任务(Task)

定义:Habitat中任务的定义,由 habitat.task.type 决定任务类型:

任务类型功能描述
点导航(PointNav) Nav-v0代理需导航至几何坐标目标点
图像导航(ImageNav) Nav-v0代理需导航至匹配目标图像类型的物体。
实例图像导航(InstanceImageNav) v1代理需导航至当前场景中匹配目标图像的物体实例。
物体导航(ObjectNav) v1代理需导航至由类别ID指定的物体(如“椅子”)。
重排-关闭抽屉(RearrangeCloseDrawer) v0代理需关闭厨房抽屉
重排-打开抽屉(RearrangeOpenDrawer) v0代理需打开厨房抽屉
重排-关闭冰箱(RearrangeCloseFridge) v0代理需关闭厨房冰箱
重排-打开冰箱(RearrangeOpenFridge) v0代理需打开厨房冰箱
重排-导航至物体(NavToObj) v0代理需导航至已知几何位置的物体。
重排-抓取(RearrangePick) v0代理需从给定几何坐标抓取特定物体。
重排-放置(RearrangePlace) v0代理需将抓取的物体放置到指定坐标
重排-空任务(RearrangeEmpty) v0代理无需执行动作(用于调试)。
重排-触达(RearrangeReach) v0代理需将末端执行器移动至指定几何坐标
重排-复合任务(RearrangePddl) v0代理需按PDDL规划执行子任务序列。
配置键详细说明
habitat.task.type任务类型的注册键(如 InstanceImageNav-v1)。
habitat.task.physics_target_sps物理模拟更新速率。每秒物理更新次数 = 1 / physics_target_sps
值越大:物理更新越精细(计算开销更高)。
默认值:通常为 60(每秒60次更新)。
habitat.task.reward_measure奖励对应的测量量名称
• 必须是 habitat.task.measurements 中定义的测量量键名。
示例
- 导航任务:distance_to_goal_reward(基于目标距离的奖励)
- 重排放置任务:place_reward(放置成功奖励)。
habitat.task.success_measure成功判定的测量量名称
• 必须是 habitat.task.measurements 中定义的测量量键名。
判定逻辑:若该测量量值 ≠ 0,则片段成功。
habitat.task.end_on_success成功后是否结束片段
True:成功后立即结束片段。
False:片段继续运行(用于分层学习,需代理显式切换策略)。
habitat.task.task_spec仅限 RearrangePddlTask-v0
• 指定 PDDL规划文件名(如 "pick_place.pddl")。
注意:PDDL文件格式官方未公开文档
habitat.task.task_spec_base_path仅限 RearrangePddlTask-v0
• PDDL文件的相对搜索路径(如 "data/pddl")。
habitat.task.spawn_max_dists_to_obj仅限 RearrangePickTask-v0
• 代理最大生成距离:机器人初始位置与目标物体的最大距离(米)。
habitat.task.base_angle_noise仅限重排任务
• 机器人基座旋转角度的噪声标准差(弧度)。
• 作用:在片段开始时为基座朝向添加高斯噪声。
habitat.task.base_noise仅限重排任务
• 机器人基座位置的噪声标准差(米)。
• 作用:在片段开始时为基座位置添加高斯噪声。

视觉代理(Visual Agents)

定义:预定义的传感器组合,用于快速配置视觉观测空间。所有代理默认相机分辨率为 256×256
使用方法:在配置文件的 defaults 列表中添加:

defaults:- /habitat/simulator/agents@habitat.simulator.agents.main_agent: <代理键名>
代理键名传感器配置
depth_head_agent头部安装的单深度相机
rgb_head_agent头部安装的单RGB相机
rgbd_head_rgbd_arm_agent头部和机械臂各安装RGB+深度相机(共4个相机)。

环境(Environment)
配置键详细说明
habitat.environment.max_episode_steps片段最大步数。达到此步数后片段自动结束。
habitat.environment.max_episode_seconds片段最大真实时间(秒)。超时后片段自动结束。

离散导航动作(Discrete Navigation Actions)

定义:代理通过动作影响环境。动作定义在 habitat.task.actions 字典中。
添加方法:在 defaults 列表中指定动作:

defaults:- /habitat/task/actions:- move_forward- turn_left
配置键详细说明
habitat.task.actions.stop仅限导航任务
• 离散动作,请求停止导航
关键作用:成功判定需满足:
(1) 调用此动作 + (2) 距离目标 ≤ success_distance
注意:与重排任务的 RearrangeStopAction 不同。
habitat.task.actions.empty仅限导航任务
空动作(代理不执行任何操作)。
habitat.task.actions.move_forward仅限导航任务
• 向前移动固定距离。
• 移动距离 = habitat.simulator.forward_step_size(默认0.25米)。
habitat.task.actions.turn_left仅限导航任务
• 向左旋转固定角度。
• 旋转角度 = habitat.simulator.turn_angle(默认10度)。
habitat.task.actions.turn_right仅限导航任务
• 向右旋转固定角度(同 turn_left 的角度值)。
habitat.task.actions.look_up仅限导航任务
• 相机向上旋转固定角度。
• 旋转角度 = tilt_angle(默认15度)。
habitat.task.actions.look_down仅限导航任务
• 相机向下旋转固定角度(同 look_up 的角度值)。

重要区别:导航任务使用离散动作,重排任务使用连续动作


导航测量量(Navigation Measures)

定义:非传感器数据的环境状态度量(可包含特权信息或训练信号)。
添加方法

defaults:- /habitat/task/measurements:- articulated_agent_force- force_terminate
配置键详细说明
habitat.task.measurements.num_steps步数计数器
• 导航和重排任务通用。
• 记录片段开始后的累计步数。
habitat.task.measurements.distance_to_goal仅限导航任务
• 计算到目标的测地距离(沿表面的最短路径)。
• 子参数:
distance_to_goal.distance_to
- POINT:到最近目标点的距离
- VIEW_POINTS:到目标视点的距离(用于图像导航)。
habitat.task.measurements.success仅限导航任务
• 成功标志:1.0(成功)或 0.0(失败)。
成功条件
(1) 调用 stop 动作 + (2) 距离目标 ≤ success_distance
• 子参数:
success.success_distance:成功判定的最大距离(默认0.1米)。
habitat.task.measurements.spl仅限导航任务
SPL指标(Success weighted by Path Length):
SPL = success * (最优路径长度 / 代理实际路径长度)
特点:仅在成功时非零,最大值为1.0。
habitat.task.measurements.soft_spl仅限导航任务
Soft SPL指标
SoftSPL = max(0, 1 - (当前距离/最优距离)) * (最优路径长度/实际路径长度)
特点:即使未成功也返回部分值。
habitat.task.measurements.distance_to_goal_reward仅限导航任务
距离奖励
reward = -(新距离 - 旧距离)
含义:距离减少时奖励为正(鼓励靠近目标)。

实验室传感器(Navigation Lab Sensors)

定义非渲染型传感器(提供几何目标等信息)。
添加方法

defaults:- /habitat/task/lab_sensors:- objectgoal_sensor- compass_sensor
配置键详细说明
habitat.task.lab_sensors.objectgoal_sensor仅限物体导航任务
• 输出离散目标ID(如“椅子”=0,“桌子”=1)。
• 子参数:
goal_spec
- TASK_CATEGORY_ID:输出 episode.object_category 的ID
- OBJECT_ID:输出第一个目标物体的ID
goal_spec_max_val
- 仅当 goal_spec=OBJECT_ID 时有效
- 表示可能的目标物体总数(必须 ≥ 最大目标ID)。
habitat.task.lab_sensors.instance_imagegoal_sensor仅限实例图像导航任务
• 输出目标物体在场景中的渲染图像
habitat.task.lab_sensors.instance_imagegoal_hfov_sensor仅限实例图像导航任务
• 输出目标图像的水平视场角(HFOV)(单位:度)。
habitat.task.lab_sensors.compass_sensor仅限导航任务
• 输出机器人朝向偏差(弧度):
当前朝向 - 初始朝向(绕垂直轴)。
habitat.task.lab_sensors.gps_sensor仅限导航任务
• 输出位置偏移向量(2个浮点数):
(当前X - 初始X, 当前Y - 初始Y)(单位:米)。
habitat.task.lab_sensors.pointgoal_with_gps_compass_sensor仅限导航任务
• 输出目标点在机器人坐标系中的位置(相对坐标)。

连续重排动作(Continuous Rearrangement Actions)
配置键详细说明
habitat.task.actions.arm_action仅限重排任务
机械臂关节控制
动作 = 每个关节的角度增量(弧度)。
• 子参数:
grasp_thresh_dist
- MagicGrasp控制器的抓取阈值(单位:米)
- 仅当末端执行器与物体距离 ≤ 此值时触发抓取
grip_controller
- None:无法抓取物体
- MagicGraspAction:距离 ≤ grasp_thresh_dist 时抓取
- SuctionGraspAction:需物体与末端执行器物理接触才抓取。
habitat.task.actions.base_velocity仅限重排任务
基座速度控制(2个连续动作):
[前进速度, 旋转速度]
范围:通常为 [-1.0, 1.0]
habitat.task.actions.rearrange_stop仅限重排任务
• 调用后立即结束任务
habitat.task.actions.oracle_nav_action仅限重排任务
导航Oracle动作
输入 = PDDL域中的物体ID
输出 = Oracle计算的导航动作序列。

重排传感器(Rearrangement Sensors)
配置键详细说明
habitat.task.lab_sensors.relative_resting_pos_sensor仅限重排任务
• 输出末端执行器休息位置的相对坐标(3个浮点数):
(x, y, z) = 休息位置在末端执行器坐标系中的偏移。
• 休息位置由 habitat.task.desired_resting_position 定义。
habitat.task.lab_sensors.is_holding_sensor仅限重排任务
• 输出抓取状态
1.0 = 正在抓取物体,0.0 = 未抓取。
habitat.task.lab_sensors.end_effector_sensor仅限重排任务
• 输出末端执行器在基座坐标系中的位置(3个浮点数)。
habitat.task.lab_sensors.joint_sensor仅限重排任务
• 输出所有关节的当前角度(向量)。
habitat.task.lab_sensors.goal_sensor仅限重排任务
• 输出末端执行器到目标放置点的相对位置(3个浮点数)。
habitat.task.lab_sensors.target_start_gps_compass_sensor仅限复合重排任务
• 输出所有需重排物体的初始位置(相对机器人起点):
(距离, 水平角度)(2D极坐标)。
habitat.task.lab_sensors.target_goal_gps_compass_sensor仅限复合重排任务
• 输出所有需重排物体的目标位置(相对机器人起点):
(距离, 水平角度)(2D极坐标)。

重排测量量(Rearrangement Measures)
配置键详细说明
habitat.task.measurements.end_effector_to_rest_distance仅限重排任务
末端执行器到休息位置的距离
前提:必须启用 relative_resting_pos_sensor
habitat.task.measurements.articulated_agent_force仅限重排任务
机器人施加的力(牛顿):
- 瞬时力(当前步)
- 累积力(整个片段)。
habitat.task.measurements.does_want_terminate仅限重排任务
• 输出 1.0(调用 rearrange_stop)或 0.0(未调用)。
habitat.task.measurements.force_terminate仅限重排任务
力触发终止标志
1.0 = 力超阈值(任务终止),0.0 = 正常。
• 子参数:
max_accum_force:累积力阈值(-1 = 无限制)
max_instant_force:瞬时力阈值(-1 = 无限制)。
habitat.task.measurements.object_to_goal_distance仅限重排任务
目标物体到目标位置的距离
habitat.task.measurements.obj_at_goal仅限重排任务
物体是否到位(字典):
key=物体索引, value=1.0(到位)或 0.0(未到位)
• 子参数:
succ_thresh:到位判定阈值(默认0.05米)。
habitat.task.measurements.art_obj_at_desired_state仅限开/关容器任务
关节状态是否符合目标
1.0 = 冰箱/柜门处于任务要求状态(开/关)。
habitat.task.measurements.rot_dist_to_goal仅限重排导航任务
机器人朝向与目标方向的夹角(弧度)。
habitat.task.measurements.composite_stage_goals仅限复合重排任务
子任务阶段完成标志
1.0 = 完成PDDL规划中指定的阶段,0.0 = 未完成。
habitat.task.measurements.nav_to_pos_succ仅限重排导航任务
导航成功标志
1.0 = 机器人距离目标位置 ≤ success_distance

任务定义的重排测量量(Task-defining Rearrangement Measures)

通过修改以下键自定义任务的成功判定与奖励

任务类型成功测量量(success_measure奖励测量量(reward_measure
重排抓取(RearrangePick)pick_successplace_reward
重排放置(RearrangePlace)place_successplace_reward
开/关关节物体art_obj_successart_obj_reward
重排导航(RearrangeNav)nav_to_obj_successnav_to_obj_reward
PDDL复合重排pddl_composite_successmove_objects_reward

关键逻辑

  • success_measure 的值 ≠ 0 时判定任务成功。
  • reward_measure 的值直接作为每步奖励。

总结说明

  1. 层级结构:所有配置键严格遵循 habitat.<模块>.<子模块>.<参数> 的嵌套路径(如 habitat.task.measurements.success)。
  2. 任务特异性
    • 导航任务(PointNav/ObjectNav)使用离散动作导航专用测量量
    • 重排任务(Rearrange*)使用连续动作重排专用传感器/测量量
  3. 关键机制
    • 导航成功 = 调用 stop 动作 + 距离目标 ≤ success_distance
    • 重排成功 = 由 success_measure 指定的测量量非零(如 place_success=1.0)。
  4. 配置方法
    • 通过 defaults 列表动态注入动作/传感器/测量量(避免硬编码)。
    • 使用预定义视觉代理快速配置观测空间。

以上内容完全覆盖原文所有技术细节,包括:

  • 每个配置键的精确作用域(如“仅限重排任务”)
  • 子参数的完整说明(如 success.success_distance
  • 关键逻辑的底层实现(如成功判定条件)
  • 配置方法的代码示例(YAML片段)
  • 易混淆概念的区分(如导航 stop vs 重排 rearrange_stop
http://www.xdnf.cn/news/18166.html

相关文章:

  • 嵌入式开发学习———Linux环境下网络编程学习(三)
  • RAG 面试题(实时更新补充)
  • 学习笔记分享——基于STM32的平衡车项目
  • Ubuntu 和麒麟系统创建新用户 webapp、配置密码、赋予 sudo 权限并禁用 root 的 SSH 登录的详细
  • 【PyTorch】单对象分割项目
  • 八大排序简介
  • Java 11中的Collections类详解
  • 数据结构:二叉树oj练习
  • Kubernetes Pod 控制器
  • 【PyTorch项目实战】OpenNMT本地机器翻译框架 —— 支持本地部署和自定义训练
  • 学习strandsagents的http_request tool
  • 接口性能测试工具 - JMeter
  • IMX6ULL-KERNEL源代码
  • KMM跨平台叛逃实录:SwiftUI与Compose Multiplatform共享ViewModel的混合开发框架(代码复用率85%)
  • RPC高频问题与底层原理剖析
  • 【树莓派】【嵌入式】远程树莓派,解决ping不通问题
  • 应用缓存不止是Redis!——亿级流量系统架构设计系列
  • Windows/Centos 7下搭建Apache服务器
  • Nacos-7--扩展一下:0-RTT和1-RTT怎么理解?
  • Spring Boot 全局异常处理
  • 重置iPhone会删除所有内容吗? 详细回答
  • 基于WebSocket和SpringBoot聊天项目ChatterBox测试报告
  • 如何用Prometheus和FastAPI打造任务监控的“火眼金睛”?
  • 11.Ansible自动化之-内容集管理
  • 如何理解关系型数据库的ACID?
  • 浅看架构理论(一)
  • 【上升跟庄买入】副图/选股指标,动态黄色线由下向上穿越绿色基准线时,发出买入信号
  • 机器学习深度学习 所需数据的清洗实战案例 (结构清晰、万字解析、完整代码)包括机器学习方法预测缺失值的实践
  • RWA在DeFi中的应用
  • 【计算机视觉】检测与分割详解