开源Tacchi 视触觉传感器仿真器,为机器人与物体接触仿真提供高质量的Sim2Real性能!

文摘   科技   2024-11-21 00:00   北京  

Tacchi是一个基于Taichi编程语言开发的低计算成本弹性体形变仿真器,由方斌教授团队开发并已开源,为机器人与物体接触仿真提供高质量的Sim2Real性能!该仿真器以较低的计算资源消耗来模拟弹性体的物理形变,并生成与真实触觉图像相似的仿真图像。Tacchi通过粒子系统实现表面形变模拟,能够生成带有表面纹理的触觉图像。

1、功能特点

低计算成本:相较于传统的有限元方法(FEM),Tacchi使用了材料点法(MPM),使计算量显著降低。

高质量的触觉图像生成:通过粒子表面形变和光照模型,生成带有表面纹理的触觉图像,提高了Sim2Real精度。

与机器人仿真器的集成:支持与Gazebo和MuJoCo等机器人仿真器连接,使得触觉传感器可以与机器人系统的其他组件协调工作。

2、安装步骤

安装Taichi:确保安装了Taichi编程环境,运行以下命令完成安装:

pip install taichi

下载Tacchi代码:从GitHub仓库下载Tacchi项目:

https://github.com/zixichen007115/Tacchi.git

检查GPU支持:建议使用支持CUDA的GPU来加速仿真。

3、核心概念

Tacchi的仿真基于材料点方法(MPM),以粒子系统模拟弹性体的形变。Tacchi使用以下几个模块:

弹性体仿真:通过粒子表示弹性体,将粒子状态(位置、速度等)传递到网格节点以模拟物理交互。

触觉图像生成:基于生成的深度图,通过光照渲染生成带有真实感的触觉图像。

机器人仿真器集成:支持通过Gazebo或MuJoCo连接,仿真器控制对象的运动,Tacchi获取对象位置和速度生成触觉反馈。

4、使用步骤

1)初始化设置

粒子和网格初始化:将弹性体和接触对象(如压头)初始化为粒子系统,每个粒子表示弹性体的一部分。根据实际需求调整粒子密度和网格密度,保证仿真精度。

材料属性配置:设置弹性体的材料属性,例如弹性模量(如1.45×10^5)和泊松比(如0.45),以匹配实际材料特性。      

网格设置:Tacchi通过网格节点与粒子系统的交互实现仿真,因此选择合适的网格密度非常重要。通常应保证网格间距大于粒子间距,以避免粒子超出网格。

2)弹性体形变模拟

Tacchi使用材料点法(MPM)来模拟弹性体的接触形变过程:

粒子到网格传递:粒子的位置、速度和质量信息传递给附近的网格节点,形成网格节点的质量和动量。

网格节点的物理计算:Tacchi使用物理方程计算弹性体形变,并将作用力分配到每个粒子上。

网格到粒子传递:根据计算出的网格状态,粒子更新其运动状态,包括速度和位置。

粒子运动更新:Tacchi每个时间步更新粒子的位置,用于生成新的表面形变信息。

3)触觉图像生成

Tacchi提供了基于表面形变生成触觉图像的功能:

深度图生成:使用2D插值方法,将离散粒子的表面形变信息转化为连续的深度图。

图像裁剪:根据光学传感器(如Gelsight)的视场限制对深度图进行裁剪,使其与实际传感器图像尺寸匹配。

光照渲染:采用Phong光照模型对深度图进行渲染,生成最终的触觉图像,图像中包含表面缺陷和细节纹理。

4)与机器人仿真器集成

Tacchi支持与Gazebo和MuJoCo等机器人仿真器进行集成,使得触觉传感器仿真可以与机器人运动同步进行。

加载模型:在仿真器中加载对象和传感器模型,使其可以与环境交互。

实时数据交换:从仿真器中获取传感器和对象的位置、速度信息,并将其传递给Tacchi,生成相应的触觉反馈。

设置终止条件:可在仿真器中设定条件(如对象达到指定深度),满足条件后自动结束仿真。

5、运行指南

1)STL/PLY/PCD格式转换(0_stl2npy)

此模块提供了将几何文件转换为Numpy格式的工具,便于加载并用于仿真:

STL转PLY:stl2ply.py

PLY转PCD:ply2pcd.py

PCD转Numpy:pcd2npy.py

注意:obj_1、obj_10和obj_100子目录包含预先转换的.npy文件,表示不同粒子密度下的几何对象模型。

2)Gazebo和MuJoCo连接仿真(1_connection_simulation)

该模块包含Gazebo和MuJoCo两种环境下的机器人仿真配置,具体包括触觉传感器和物体的模型、控制脚本和数据采集工具。

Gazebo 连接仿真:

可以通过修改fdm_printer_description和gelsight_description 文件夹下的模型文件定义机器人或传感器的外观和控制参数。

MuJoCo连接仿真:

进入1_connection_simulation/MuJoCo目录,运行press.py文件启动触觉仿真。

xmls文件夹中包含MuJoCo的模型配置XML文件,通过修改XML文件可配置不同形状的接触物体。

3)触觉图像生成(2_Tacchi_image_generation)

该模块包含生成触觉图像的代码,基于弹性体表面形变模拟生成深度图和触觉图像。

·深度图生成:运行depth_generation.py生成深度图。

·触觉图像生成:运行particle_to_depth.py,并使用gel_press.py生成相应的触觉图像数据。

4)对齐和对比实验(3_align_and_comparison)

此模块用于对齐仿真生成的触觉图像,以便与真实触觉图像进行对比。主要包括两个对齐方式:全局对齐和逐对象对齐,此步骤可以帮助提高 Sim2Real 任务中图像的匹配度。

·全局对齐:align_globally.py

·逐对象对齐:align_per_object.py

5)AA21 数据生成(4_AA21)

此模块包含生成AA21数据集的代码,用于为Sim2Real任务提供训练数据。运行后会在指定输出路径生成图像数据。可以通过修改代码中的路径参数更改存储位置。

6)Sim2Real 实验与训练(5_Sim2Real)

该模块包含Sim2Real数据训练代码,利用ResNet-18模型进行图像识别训练,提高仿真图像的真实感和分类效果。

·main.py:执行Sim2Real任务的主程序,使用ResNet-18进行分类训练。

·solver.py:定义训练过程的超参数优化和求解方案。

训练数据和模型参数可在main.py中配置。训练完成后,可以在指定目录查看生成的模型和日志文件。

6、参数设置

根据仿真需求,可以对Tacchi的参数进行优化设置:

  • 粒子密度:适当的粒子密度可以提升表面模拟精度,但过高的粒子密度会增加计算量。

  • 网格密度:网格密度决定了模拟的精确程度,应适当权衡仿真质量和速度。

  • 表面粗糙度模拟:通过减少粒子数量或调整粒子分布密度来模拟对象的表面纹理,从而提升Sim2Real性能。


7、应用示例

Tacchi 可应用于多种机器人仿真任务,包括:

a.机器人抓取仿真:Tacchi能生成带有缺陷的触觉图像,使机器人抓取任务中的物体识别更加接近真实情况。

b.传感器标记跟踪:可以模拟光学传感器内的标记,通过粒子来表示标记位置并跟踪其运动。

c. 滑动和旋转摩擦:未来可以拓展Tacchi以支持表面摩擦移动,以模拟在滑动和旋转接触下的真实摩擦效果。

8、性能评估

与FEM相比,Tacchi 在低计算资源情况下即可生成高质量触觉图像。Tacchi仅需1GB的GPU内存即可运行,而FEM通常需要高性能集群。实验结果表明Tacchi能在Sim2Real任务中取得更高精度的触觉图像生成效果,并在图像质量(SSIM、PSNR和MAE)上具有显著优势。

CAAI认知系统与信息处理专委会
CAAI认知系统与信息处理专委会成立于2014年,胡德文教授担任专委会主任,孙富春教授担任荣誉主任,方斌教授担任秘书长。专委会不断吸纳业界人才,会员1000余名。创建了“认知系统与信息处理国际会议”、“机器人智能论坛”等品牌活动。
 最新文章