跳转至

ProximitySensor

表面距离探针,底层是 genesis.sensors.SurfaceDistanceProbe

一组点状探针刚性挂在父 link 上,每帧报告到一组被跟踪目标 link 的最近表面 距离。典型用法:proximity gating、软自碰撞规避、地形/另一 link 作为目标的 time-to-contact 估计。

配置

ProximitySensorCfg 继承 SensorCfg。全部字段使用关键字参数。

字段 类型 默认 说明
name str "" 继承自 SensorCfg,场景内唯一。
entity_name str "robot" 继承自 SensorCfg,挂载探针的实体。
link_name str "" 探针所在的父 link。必填,必须在 entity.link_names 中。
probe_local_pos tuple[tuple[float, float, float], ...] ((0.0, 0.0, 0.0),) 探针在父 link 本地坐标系下的位置。
probe_radius float 10.0 每个探针的搜索半径;同时也是无目标在范围内时返回的饱和值。
track_link_names tuple[str, ...] () 非空的待测距 link 集合,对应同实体的 link_names
history_length int 0 透传给 Genesis。0 表示只读当前帧;> 0 分配 ring buffer,data.distance 多一个 history 维度。

track_link_names 必填

Genesis 拒绝构造 track_link_idx 为空的 SurfaceDistanceProbe。封装层在 最早期就抛 ValueError,提示信息一致;务必填入要测距的目标 link。

数据

ProximityData.distance 形状为 (num_envs, [history,] num_probes),单位米, 范围外的探针读数被 clip 到 cfg.probe_radius

示例

from genelab.configs import InteractiveSceneCfg
from genelab.sensor import ProximitySensorCfg

scene_cfg = InteractiveSceneCfg(
    sensors=(
        ProximitySensorCfg(
            name="foot_proximity",
            link_name="left_foot",
            probe_local_pos=((0.0, 0.0, -0.02),),
            probe_radius=0.5,
            track_link_names=("terrain",),
        ),
    ),
)

另见