【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_INTERVAL
和TRAINER.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
)。 - 任务依赖:仅
PointNav
和ObjectNav
有效。
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. 注意事项与最佳实践
- 传感器一致性:
- 若
TASK.SENSORS
包含"DepthSensor"
,必须确保SIMULATOR.AGENT_0.SENSORS
也包含"DepthSensor"
,否则任务会失败。
- 若
- 内存优化:
- 增大
TRAINER.BATCH_SIZE
时,需同步调整SIMULATOR.AGENT_0.HEIGHT/WIDTH
避免 OOM。
- 增大
- 分布式训练:
- 启用
TRAINER.USE_SYNC_BATCH_NORM
时,需通过torch.distributed
启动多进程训练。
- 启用
- 调试技巧:
- 设置
VERBOSE: True
并检查SIMULATOR
初始化日志,确认场景和传感器加载正确。
- 设置
- 版本兼容性:
- 配置键可能随 Habitat-Lab 版本变化,需参考对应 Git 提交的文档(本文件对应
main
分支最新提交)。
- 配置键可能随 Habitat-Lab 版本变化,需参考对应 Git 提交的文档(本文件对应
6. 与 Habitat 生态的关联
- Habitat-Sim:
SIMULATOR
键直接调用 Habitat-Sim 的 C++ 后端。 - Habitat-Baselines:
TRAINER
键与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 :输出第一个目标物体的IDgoal_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_success | place_reward |
重排放置(RearrangePlace) | place_success | place_reward |
开/关关节物体 | art_obj_success | art_obj_reward |
重排导航(RearrangeNav) | nav_to_obj_success | nav_to_obj_reward |
PDDL复合重排 | pddl_composite_success | move_objects_reward |
关键逻辑:
success_measure
的值 ≠ 0 时判定任务成功。reward_measure
的值直接作为每步奖励。
总结说明
- 层级结构:所有配置键严格遵循
habitat.<模块>.<子模块>.<参数>
的嵌套路径(如habitat.task.measurements.success
)。 - 任务特异性:
- 导航任务(
PointNav
/ObjectNav
)使用离散动作和导航专用测量量。 - 重排任务(
Rearrange*
)使用连续动作和重排专用传感器/测量量。
- 导航任务(
- 关键机制:
- 导航成功 = 调用
stop
动作 + 距离目标 ≤success_distance
。 - 重排成功 = 由
success_measure
指定的测量量非零(如place_success=1.0
)。
- 导航成功 = 调用
- 配置方法:
- 通过
defaults
列表动态注入动作/传感器/测量量(避免硬编码)。 - 使用预定义视觉代理快速配置观测空间。
- 通过
以上内容完全覆盖原文所有技术细节,包括:
- 每个配置键的精确作用域(如“仅限重排任务”)
- 子参数的完整说明(如
success.success_distance
)- 关键逻辑的底层实现(如成功判定条件)
- 配置方法的代码示例(YAML片段)
- 易混淆概念的区分(如导航
stop
vs 重排rearrange_stop
)