主题
人形机器人运动控制学习路线
很多人埋头苦学三个月理论,到头来依旧对人形机器人运动控制一头雾水,而此时行业里新的问题与研究方向又已层出不穷。这篇内容核心知识仍遵循自下而上的逻辑展开。不过站在开发者视角,正如我当初入门人形机器人也是从真实项目切入一样,比起啃透繁杂理论,更关键的是找到可落地的起步路径,在实践中完成学习与迭代。因此,我将从两大主流技术路径出发,分别梳理出基于模型(Model-based)与基于学习(Learning-based) 的清晰学习路线。
文章来源于roboparty
传统运动控制学习路线
要学会传统运动控制方法,其实就是学会人形机器人的模型和求解。但传统控制算法由于开源少,理论门槛较高,确实需要花一定的时间在理论知识的学习上,笔者这里根据自己的经验,尽量让读者能够快速上手而不是深入了解。
- 入门机器人学,推荐阅读中文教材《机器人建模和控制》,英文教材ETH的《Robot Dynamics Lecture Notes》。同时具备一定的代码阅读能力,包括C++和python的代码,建立使用Linux系统。多看知乎,博客等相关内容,不要钻牛角尖,了解大概即可。需要熟悉正逆运动学、正逆动力学、浮动基动力学模型。
- 入门人形机器人建模,推荐先看一遍本文的传统运动控制方法,对传统控制部分有一个概念,知道Know-How。了解浮动基动力学模型是怎么回事。
- 安装动力学库Pinocchio,结合GPT,去宇树github找一个机器人的URDF模型文件,根据Pinocchio中的例子或者GPT学会以下事情:
- 导入人形机器人的URDF模型,看看里面包含哪些
- 了解人形机器人的正逆运动学,并通过Pinocchio+GPT做一些例子
- 了解人形机器人浮动基动力学模型,看导入模型后的哪些变量是动力学模型里的,做几个正逆动力学的例子
- 学会使用一个仿真环境,推荐Mujoco,学会将URDF导入mujoco,并结合Pinocchio在仿真环境中进行运动学,动力学分析
- 入门优化控制,推荐看CMU课程《optimal control》,课程里面包含很多,所以这阶段重点了解:
- 优化问题的构成,求解流程(最上层是什么,最底层是什么)
- 最简单的优化问题是什么,LQR,QP这两个有什么不同,了解MPC,知道MPC的特点和区别
- 了解现有的优化求解器都有哪些,比如OSQP、qpOASES等有什么区别
- 自己动手用python/C++写一个QP优化问题,并至少用两个不同的求解器求解,并看看python/C++的求解区别
- 建模一个人形机器人的全身动力学,求解一个WBC问题(参考本文),整个问题考虑为QP问题,人为给定一个插值的期望轨迹,让人形机器人在mujoco环境中实现原地双脚站立,原地踏步,蹲起
- 参考开源代码Qiayuan Liao的legged_control或者ETH的OCS2,跑通他其中四足机器人的一些例子。
- 熟悉MPC,熟悉WBC,看懂上面四足机器人的代码
- 进阶系统学习优化控制理论,推荐MIT课程《Underactuated Robotics》,ETH《Optimal and Learning Control for Autonomous Robots》。为了系统了解人形机器人建模和优化求解方法,推荐阅读综述Wensing P M, Posa M, Hu Y, et al. Optimization-based control for dynamic legged robots[J]. IEEE Transactions on Robotics, 2023, 40: 43-63. 重新回来看本文,也许会有不一样的收获。
强化学习运动控制学习路线
强化学习运动控制的上手路线就比传统容易很多,开源文档,代码框架,论文都比较容易看懂实现过程,但笔者还是建议对优化控制最好有一定的了解,可以看看本文的最优化控制问题理论基础和深度强化学习运动控制方法章节。
- 了解强化学习和深度学习,这部分网上有太多好的参考文章都可以参考,教程也很多,理论细节可跳过
- 了解腿足强化学习训练到部署的整个过程,推荐云深处科技这个小视频入门课程。这个过程目的是看了能对腿足最终你能实现什么,以及大概的整个工程过程是什么有个帮助。
- 可以选择阅读本文强化学习相关部分有个大概了解,知道现在主流的方法和框架大概有哪些。
- 找一下腿足机器人强化学习的大量网上的文档和视频,学一学Isaaclab的安装和使用,这个东西是你的仿真训练环境,这过程的目的是要知道腿足强化学习在做一个什么事情。
- 然后去找一个开源项目跑一跑,推荐的项目有且不包括RoboParty(最完整的,软硬件都有)、Ziqi Fan、Unitree、Zitong Bai、Qiayuan Liao。这个过程目的是知道怎么训练,调试,哪些参数可以调,那些地方可以改。
- 如果想做人形或者特定腿足的项目(比如人形模仿学习或者四足复杂地形行走),这个时候可以去找一些特定方向的开源的项目去跑了。同步进行包括但不限于阅读论文,与不同你感兴趣的方向的人交流,网上搜集等方法。也可以参考5中提到的开源仓库,还可以参考sebastianstarke/AI4Animation: Bringing Characters to Life with Computer Brains in Unity。