Axi's Blog

Back

周记 Week50Blur image

总的来说这一周的周记又是严重迟到,虽然事情并不是很多,但是不知不觉间时间还是从指尖流逝了。

科研#

这一周我基本上做的事情就是在上周的基础上进行开发。上回书说到我使用 Sapien 替代了 Isaac 作为仿真的内核,这个环节实际上就是发生上一周的周一深夜,在完成了之后,接下来的几天,我在 Pick and Place 的单一场景,以及 Objaverse 规模的 Scaling 上面进行了大量的测试,测试结果都表明 Sapien 表现出了相较于 Isaac 良好的物理表现。

基本上我们可以这样分析,导致物理问题的原因其实有三种不同的可能,仿真器本身的问题、机器人设置的问题以及物体的问题,而实际上因为在抓取一些物体的时候,物理问题的出现概率远大于其他的物体,因此我严重怀疑是因为 Isaac 的 Convex Decomposition 导致的仿真不稳定,从而产生了 Collision 的穿模现象,产生的排斥力破坏了 Articulation Root 带来的约束。上周其实也提到过这个事情,并且提出过,实际上只需要将一个 Object USD 分为 Collision Mesh 以及 Visual Mesh,并且将 Collsion mesh 作为使用 VHACD 分解的 Mesh,对于每一个 part 只设置 collision,并且关闭 Visual;而对于 Visual Mesh 不设置 Collsion,但是开启 Visual,从而分别管理 Visual 以及 Collsion 的方案。这个方案其实不难实现,使用 MeshProcess 对于 Objaverse 的原始 GLB 文件使用整合以及 COACD 分解得到 Collsion 之后,用 Isaac Sim 的 asset_converter 进行转换,之后用我自己写的脚本进行了整合,但是并没有给物理带来明显的好处。当然,事实上这套方案是有价值的,假如说你的 Robot 没有明显的物理问题,那么这套方案可以简化你的物理判断,并且保持视觉的丰富,后面会写个博客来开源(画饼+1)。

原生方案的解决都宣布失败之后,我就正式开始投身于 Sapien 方案的支持,短短两天我将 Sapien 方案在 Objaverse level 的 grasp detection 上面进行了部署,进行了大量的测试,并且在其之后将 Sapien 的内容插入到了我全部的代码中,使得数据生成以及测试都支持了 Sapien 作为物理内核。由于一个在脑中设想了很久的设计,因此其实一共的代码并没有多少,也不需要对于原来的代码进行大量篇幅的修改,全自动注册物体到 Sapien,并且只需要将 world.step() 改成我自己的函数,一共也没有几行的修改,就成功完全了一切我们需要的内容。说起来这个应该也可以写博客。测试后可以完全之前的一切需求,看上去蒸蒸日上。经过测试之后,性能也没有损耗,甚至还有提升。这是因为我们在 Scaling Object Level 的物体的时候,往往是会选择 preload 大量的物体,而在这个过程中,因为涉及添加物体并且 cook collider,而 cook 这一过程不但需要大量的时间,还可能导致程序直接报错退出,如今因为物理已经被 sapien 接管,而且 VHACD 分解都是已经事先分解好了,因此就没有了相似的烦恼。

在完成了基础的部署之后,另一个问题就出现在了眼前,也就是引入 Robotiq hand。了解 Sapien 以及 ROS 的读者应该都知道,二者对于机器人的共同描述是使用 .urdf 文件,而这一文件的问题就在于其并不支持一个 link 存在两个 parent joint,也就是不能实现 Robotiq hand 的闭环结构。这在仿真中可以说是致命伤,在寻找了大量的框架,比如说 RoboVerse 以及 RoboTwin 之后,发现他们并没有给出类似的解决方案,最后还是在 ManiSkill3 中找到了解决方案,也就是手动添加一个 Drive(可以理解为一个在两个点直接加上一个弹簧一样的东西,因此设置弹簧无限小且力无限大就等价于一个 Joint 了)。不过尽管 ManiSkill3 提供了 Robotiq hand 的资产,但是和我们的 Robotiq hand 的 Joint name 并不是对齐的,因为避免闭环需要缺失一个 Joint,而我们的 USD 文件和他们的文件缺失的不是同一个,因此最后我花费了大量的时间研究如何标定这样一个参数,这又值得一个博客了。

学习与生活#

因为下周一又要考试,所以说还是稍微进行了一些复习的,简简单单看了一遍老师给的复习提纲,就期待考试顺利了。现在对于我来说,大概率考试是可以过就好,其他的事情其实并不是那么的核心,因此混一混就好,希望上九十。至于和乐小姐的生活,因为乐小姐医学生的身份,大量的需要疯狂背诵的考试也是少不了的,我不忍心打扰,也希望她别挂科,于是这周依然只是在一起吃吃饭,散散步,然后简单贴贴一下,朴实无华。

总的来说,这一周还是取得了巨大的突破的,可以说我现在对于 Simulation 的理解已经相较于之前提升了很多,同时对于代码来说,项目也向前完成了一个重大的迭代,可以说进步斐然,并且有望一举完全解决物理问题。下一周将会是畅快的解决 Issues 以及向前开发,只能说之前讨厌解决 Issues,觉得没干正事,但是如今在做正事了,确是我完全没有了解的领域,只能反复踩坑,没有正反馈。且看我快刀斩乱麻~

周记 Week50
https://axi404.top/blog/week-50
Author 阿汐
Published at June 21, 2025
Comment seems to stuck. Try to refresh?✨