视触觉传感器#

Isaac Lab 中的视触觉传感器通过与 TacSL(触觉传感器学习)[Akinola2025]_ 集成,提供逼真的触觉反馈。它旨在模拟高保真触觉交互,生成视觉和力反馈数据,模拟真实世界的触觉传感器(如 GelSight 设备)。该传感器可以提供触觉 RGB 图像、力场分布以及其他中间触觉测量数据,这些对于需要精细触觉反馈的机器人操作任务至关重要。

带有 RGB 可视化和力场的触觉传感器

配置#

触觉传感器需要特定的配置参数来定义其行为和数据采集属性。传感器可以配置各种参数,包括传感器分辨率、力敏感度和输出数据类型。

from isaaclab.sensors.tacsl_sensor import VisuoTactileSensorCfg
from isaaclab.sensors import TiledCameraCfg
from isaaclab_assets.sensors import GELSIGHT_R15_CFG
import isaaclab.sim as sim_utils

# Tactile sensor configuration
tactile_sensor = VisuoTactileSensorCfg(
    prim_path="{ENV_REGEX_NS}/Robot/elastomer/tactile_sensor",
    ## Sensor configuration
    render_cfg=GELSIGHT_R15_CFG,
    enable_camera_tactile=True,
    enable_force_field=True,
    ## Elastomer configuration
    tactile_array_size=(20, 25),
    tactile_margin=0.003,
    ## Contact object configuration
    contact_object_prim_path_expr="{ENV_REGEX_NS}/contact_object",
    ## Force field physics parameters
    normal_contact_stiffness=1.0,
    friction_coefficient=2.0,
    tangential_stiffness=0.1,
    ## Camera configuration
    camera_cfg=TiledCameraCfg(
        prim_path="{ENV_REGEX_NS}/Robot/elastomer_tip/cam",
        update_period=1 / 60,  # 60 Hz
        height=320,
        width=240,
        data_types=["distance_to_image_plane"],
        spawn=None,  # camera already spawned in USD file
    ),
)

配置支持自定义以下内容:

  • 渲染配置: 使用预定义配置(例如来自 isaaclab_assets.sensorsGELSIGHT_R15_CFGGELSIGHT_MINI_CFG )指定 GelSight 传感器渲染参数

  • 触觉模态:
    • enable_camera_tactile - 通过相机传感器启用触觉 RGB 成像

    • enable_force_field - 启用力场计算和可视化

  • 力场网格: 设置触觉网格尺寸( tactile_array_size )和边距,这直接影响计算力场的空间分辨率

  • 接触对象配置: 使用 prim 路径表达式定义交互对象的属性,以定位具有 SDF 碰撞网格的对象

  • 物理参数: 控制传感器的力场计算:
    • normal_contact_stiffness, friction_coefficient, tangential_stiffness - 法向刚度、摩擦系数和切向刚度

  • 相机设置: 配置分辨率、更新速率和数据类型,目前仅支持 distance_to_image_planedepth 的别名)。

    spawn 默认设置为 None ,这意味着相机已在 USD 文件中生成。如果您想自己生成相机并设置焦距等,可以将 spawn 配置设置为有效的生成配置。

配置要求#

重要

传感器正常运行必须满足以下要求:

相机触觉成像

如果 enable_camera_tactile=True ,必须提供有效的 camera_cfg (TiledCameraCfg)及适当的相机参数。

力场计算

如果 enable_force_field=True ,需要以下参数:

  • contact_object_prim_path_expr - 用于定位具有 SDF 碰撞网格的接触对象的 Prim 路径表达式

SDF 计算

当启用力场计算时,使用符号距离场(SDF)查询计算基于惩罚的法向力和剪切力。要实现 GPU 加速:

  • 交互对象应具有 SDF 碰撞网格

  • 必须在初始化期间定义 SDFView,因此应在仿真之前指定交互对象。

弹性体配置

传感器的 prim_path 必须配置为 USD 层次结构中弹性体 prim 的子级。力场计算的查询点是从弹性体网格表面计算的,该网格在弹性体的 prim 路径下搜索。

物理材质

传感器使用物理材质来配置弹性体的柔顺接触属性。默认情况下,物理材质属性已在 USD 资产中预配置。但是,您可以在生成机器人时通过在 UsdFileWithCompliantContactCfg 中指定以下参数来覆盖这些属性:

  • compliant_contact_stiffness - 弹性体表面的接触刚度

  • compliant_contact_damping - 弹性体表面的接触阻尼

  • physics_material_prim_path - 应用物理材质的 Prim 路径(通常为 "elastomer"

如果任何参数设置为 None ,将保留 USD 资产中的相应属性。

使用示例#

要在仿真环境中使用触觉传感器,请运行演示:

cd scripts/demos/sensors
python tacsl_sensor.py --use_tactile_rgb --use_tactile_ff --tactile_compliance_stiffness 100.0 --tactile_compliant_damping 1.0 --contact_object_type nut --num_envs 16 --save_viz --enable_cameras

可用的命令行选项包括:

  • --use_tactile_rgb: 启用基于相机的触觉感知

  • --use_tactile_ff: 启用力场触觉感知

  • --contact_object_type: 指定接触对象的类型(螺母、立方体等)

  • --num_envs: 并行环境数量

  • --save_viz: 保存可视化输出以供分析

  • --tactile_compliance_stiffness: 覆盖柔顺接触刚度(默认: 使用 USD 资产值)

  • --tactile_compliant_damping: 覆盖柔顺接触阻尼(默认: 使用 USD 资产值)

  • --normal_contact_stiffness: 力场计算的法向接触刚度

  • --tangential_stiffness: 剪切力的切向刚度

  • --friction_coefficient: 剪切力的摩擦系数

  • --debug_sdf_closest_pts: 可视化最近的 SDF 点以进行调试

  • --debug_tactile_sensor_pts: 可视化触觉传感器点以进行调试

  • --trimesh_vis_tactile_points: 启用基于 trimesh 的触觉点可视化

要获取完整的可用选项列表:

python tacsl_sensor.py -h

备注

演示示例基于 Gelsight R1.5,这是一款已停产的原型传感器。相同的程序可以适配其他视触觉传感器。

TacSL 触觉传感器演示,展示 RGB 触觉图像和力场可视化

触觉传感器支持多种数据模态,提供关于接触交互的全面信息:

输出触觉数据#

RGB 触觉图像

当物体与传感器表面接触时实时生成触觉 RGB 图像。这些图像显示变形模式和接触几何形状,类似于凝胶基触觉传感器 [Si2022]

力场

传感器表面详细的接触力场和压力分布,包括法向和剪切分量。

带有 RGB 可视化的触觉输出
带有力场可视化的触觉输出

与学习框架集成#

触觉传感器设计为与强化学习和模仿学习框架无缝集成。结构化的张量输出可以直接用作学习算法中的观测值:

def get_tactile_observations(self):
    """Extract tactile observations for learning."""
    tactile_data = self.scene["tactile_sensor"].data

    # tactile RGB image
    tactile_rgb = tactile_data.tactile_rgb_image

    # tactile depth image
    tactile_depth = tactile_data.tactile_depth_image

    # force field
    tactile_normal_force = tactile_data.tactile_normal_force
    tactile_shear_force = tactile_data.tactile_shear_force

    return [tactile_rgb, tactile_depth, tactile_normal_force, tactile_shear_force]

参考文献#

[Akinola2025]

Akinola, I., Xu, J., Carius, J., Fox, D., & Narang, Y. (2025). TacSL: A library for visuotactile sensor simulation and learning. IEEE Transactions on Robotics.

[Si2022]

Si, Z., & Yuan, W. (2022). Taxim: An example-based simulation model for GelSight tactile sensors. IEEE Robotics and Automation Letters, 7(2), 2361-2368.