

周记 Week49
2025-06-02 ~ 2025-06-08.
现在是下一周的周二,所以说这一次周记还算比较及时,不过现在有的事情也不严格按照周来划分了,主要还是因为假如说有令人兴奋的进展,但是我又没有及时记录下来此刻的心情,那未免不是一件可惜的事情。
科研#
这一周在科研上并没有取得显著的进展,基本上仍在对已有框架进行修补和调整,顺带也尝试了一些新的方向。工作主要集中在物理仿真问题的处理上,而这些问题确实令人沮丧,甚至可以说已经困扰了我很久,严重阻碍了数据生成的进度。
我目前所用的平台是 Isaac Sim。这个平台背后的物理引擎是 NVIDIA 自家开发的 PhysX,照理说在物理仿真层面应该是稳定可靠的。然而在实践中,问题却接连不断。当前的任务是构建一个典型的 pick-and-place 数据生成流程:使用 Franka 夹取一个物体,然后将其放置到另一个物体的上方。乍看之下是个很简单的流程,但随着我们使用的物体资产种类增多,问题也随之浮现。
我们使用的资产主要来自 Objaverse,这是一个极为庞大的三维模型库,素材丰富得近乎“用之不竭”。但正因如此,资产质量参差不齐:有的模型表面极其不规则,有的面片数量极其庞大。这些特性对渲染或许是好事,但对物理仿真却是灾难性的。仿真本质上是解决冲突和碰撞的过程,面片过多或几何不规整会制造大量微小碰撞,使得物理引擎难以稳定地解算,从而引发穿模、爆力等现象。
最初我怀疑是控制方式的问题。Isaac 默认使用的 Franka 资产看起来没有任何问题,我也基本穷举并测试了所有可调的 joint 参数。在其他仿真器中,比如 Mujoco 或 Sapien,控制往往是标准的力控方式,且相关配置中会明确指定每个关节的 damping 和 stiffness。然而 Isaac 中,大多数关节甚至没有这两个值,MaxForce 的设定也异常地大。即使我尝试手动修改并保存这些参数,在仿真中的表现似乎并无改观。
从控制效果来看也能明显感受到差异:在 Mujoco 中,当机械臂触碰到一个刚体时,它会自然地停下并发生形变,反馈出合理的关节变化;而在 Isaac 中,机械臂反而倾向于尝试“穿过去”,仿佛牛顿第三定理不能重充分反馈给机械臂。这种异常表现尤其出现在夹爪抓取动作中,不仅会穿模,有时更严重的情况是 finger 和 hand 直接断开连接——这也促使我在 NVIDIA 的官方论坛发帖求助,至今仍在等待可能的反馈。
另一个问题出在碰撞建模上。比如 Mujoco 默认会将每一个 mesh 简化为 convex hull,这种方式尽管失去了对复杂结构的精细描述,但能极大提升物理稳定性。Sapien 除了支持 convex hull,还支持导入 VHACD 分解的结果作为 convex hull collision mesh。VHACD 或者 CoACD 可以将一个非凸体分解为多个凸包,并且作为碰撞体,而原来的 mesh 则仅作为视觉 mesh,从而用凸包模拟了非凸包,做到了兼顾。Isaac 支持 convex decomposition,并且提供了大量参数用于调节,然而这和 convex hull 的 vhacd 并非一种概念。事实上 sapien 里面也支持 non convex 的模式,但是在作为 dynamic 物体的时候,穿模现象甚至比 Isaac 还要研究无数倍。对于 Isaac 这边,将 Collsion 以及 Articulation Controller 的可能性进行排列组合,经过大量实验后我可以明确地说,这方面确实难以达到稳定的状态。
面对这些反复出现且短时间难以解决的问题,我开始认真考虑是否可以从根本上绕开它们。与其继续在 Isaac 上反复试错,不如直接将物理内核替换为别的仿真器,只保留渲染和结构逻辑。这一思路部分受到 RoboVerse 启发。RoboVerse 的设计就是将控制逻辑和渲染前端解耦,物理仿真可以灵活切换。我一开始尝试使用 Mujoco 作为替代内核,甚至尝试直接移植 RoboVerse 中的 Franka 控制实现。但最终还是失败了,主要是 RoboVerse 框架过于庞大,而我自己的系统也比较复杂,难以兼容。即便是裁剪后的移植,也在细节控制上存在问题,结果不稳定、调试困难。
就在我差点放弃这个方案的时候,我尝试使用 Sapien 替代作为底层仿真器。效果令人惊喜:从构建到测试,一晚上基本就完成了核心流程的替换。后续我也大概会继续完善 Sapien 后端的替代接口,部署到我的整体框架,并且看看后续是不是确实没有问题。相关的实现也很简单,或许可以单独开源一波,感觉主要还是思路。
学习与生活#
这一周学习和生活其实可以放在一起说,毕竟这一周没有考试,所以相对来说轻松了不少。但是尽管如此还是有非常多的琐事需要处理。
首先就是各种的申请,包括说要去分散实习,以及之前去米兰参加 ECCV 的报销,同时还有各种的实验课以及实验报告需要提交,只说虽然一件件都是小事,但是连在一起就让人非常的应接不暇。
之后就是和乐小姐一起的生活。感觉上一周可能也就是一起出去吃个饭,毕竟她那边还有考试,我这边也有很多事要做,然后就是又拿了一些大米给她买裙子,总的来说也是很开心的。
不过可以再延展的说一下这周发生的事情,感觉这些比较的申请之类的都是比较顺利的在进行,也希望最后可以顺利结束吧,同时之前给我非常好的朋友内推了 ailab,最后也算是推进去了,感觉到时候在上海可以一起共事一段时间,狠狠合作。
这一周大概就是这样,实际上有一些内容是下一周才发生的,但干脆就直接写进去了,而最近其实很有创作欲,因为又一次高考结束了,或许写一点新生入学如何开始内卷的教程会很有趣,而且也可以给大家一些帮助,让大家适应大学的节奏。