如果要实现高动态的操作、导航任务,上层策略(大脑)需要有对机器人本体的感知信息输入,大脑和小脑必须是耦合的。 人形机器人需要模仿学习的根本原因在于高自由度策略探索难(探索到符合人类运动规律的运动组合难)。对于低自由度的本体(四足机器人、双足机器人等,一般自由度数<=12)来说,探索出一个较为合理且自然的动作并不困难。但是对于有上肢和下肢的高自由度人形机器人(一般自由度数>=20)来说,要仅凭普通的奖励塑造就学出合理且自然的动作非常难。引入模仿学习,将参考运动作为先验可以有效降低探索的难度。 AMP已经可以学习出有一定风格的运动,但它是否能让一个策略学习出多种风格的动作来应对更多场景呢? 我之前做深度图越障策略,给深度图加噪声都是人工辨别的噪声规则。更好的方式应该是学习出一个模型可以给深度图加噪声,模拟真实深度图。 机器人模仿的数据可以来源于人类运动捕捉、model-based方法规划、游戏里给人物设计的动作。目前来看可能游戏里给人物设计的动作比较贴合人,同时成本也比较低,能不能研究一下怎么用这个? DepthAnything返回的深度图一般是没有对齐实际物理量单位(m)的,只提供了图形边界的精确分割。 如何实现多技能的学习? SONIC是一种路径,通过定义的改变来实现通用的控制器(多技能)。基本就是LLM的范式迁移到motion tracking。只要我的参考数据能够覆盖机器人workspace的所有情况,那么这个tracker就是一个通用的tracker。 其它还有什么方式?
000_Inbox
优化warp动态物体采样 对比不同方法下采样动态物体的耗时: 每个环境的每个geom都创建一个mesh,在update_dynamic_mesh时对每个mesh都更新point和调用refit [WarpHeightQuery] Timing Statistics (after 200 queries): Total query time: 9.091 ms Update mesh: 8.739 ms (96.1%) Launch kernel: 0.084 ms (0.9%) Synchronize: 0.070 ms (0.8%) Post-process: 0.198 ms (2.2%) Throughput: 70398 rays/sec 每个环境的所有geom创建一个合并的mesh,在update_dynamic_mesh时对每个环境的合并mesh更新point和调用refit [WarpHeightQuery] Timing Statistics (after 300 queries): Total query time: 8.017 ms Update mesh: 7.648 ms (95.4%) Launch kernel: 0.120 ms (1.5%) Synchronize: 0.072 ms (0.9%) Post-process: 0.175 ms (2.2%) Throughput: 79832 rays/sec 所有环境的所有geom合并为一个mesh,在update_dynamic_mesh对合并的mesh更新point和调用refit [WarpHeightQuery] Timing Statistics (after 300 queries): Total query time: 3.949 ms Update mesh: 1.120 ms (28.4%) Launch kernel: 2.126 ms (53.8%) Synchronize: 0.532 ms (13.5%) Post-process: 0.170 ms (4.3%) Throughput: 162050 rays/sec 使用capture_launch的方法来调用kernel的计算,而不是每次都launch一个kernel [WarpHeightQuery] Timing Statistics (after 300 queries): Total query time: 1.309 ms Update mesh: 1.157 ms (88.4%) Launch kernel: 0.017 ms (1.3%) Synchronize: 0.000 ms (0.0%) Post-process: 0.133 ms (10.2%) Throughput: 489029 rays/sec 这种性能下开启train.py, 4096个环境,每个环境添加1个box,一个ite耗时40s左右。 1024个环境,每个环境添加1个box,一个ite耗时3s左右。 修改了判断dynamic_mesh的bug,将terrain的mesh从dynamic_mesh中去除 [WarpHeightQuery] Timing Statistics (after 300 queries): Total query time: 0.999 ms Update mesh: 0.831 ms (83.2%) Launch kernel: 0.017 ms (1.7%) Synchronize: 0.000 ms (0.0%) Post-process: 0.150 ms (15.0%) Throughput: 640487 rays/sec 这种性能下开启train.py, 4096个环境,每个环境添加1个box,一个ite耗时20s左右。 1024个环境,每个环境添加1个box,一个ite耗时2.3s左右。 kernel中使用的参数不能改变引用,只能改变这个参数的值。也就是可以使用self.a[:] = b[:]这种操作,但是不能使用self.a = b这种操作,因为会改变self.a的引用。 opencode中使用tecent coding plan的Kimi K2.5模型,context达到40%以上之后回复会变得特别慢 20260526(优化动态越障任务) 修复了bug后,机器人现在可以在静态地形下追踪静态目标点。但是直接转到动态地形后效果不好,考虑添加课程学习。 ...