当前位置: 华文问答 > 科学

如何系统地学习机器人?

2013-12-28科学

作为在校工科生,只回答问题中关于如何自学机器人方面的问题。

1. 基础知识入门

教材大同小异,推荐常用的两本:

克莱格:

机器人学导论 (豆瓣)

蔡自新:

机器人学 (豆瓣)

配合教材可以看斯坦福大学的公开课:

斯坦福大学公开课:机器人学

以上内容,帮助在脑海中建立机器人学的大概图景和基本概念。当然,不必尽看,实际上认真钻研一套足矣。通常机器人学基础讨论都基于机械臂,需要弄懂的几个问题:机械臂的空间描述和坐标变换;机械臂运动学;机械臂逆运动学;机械臂动力学;轨迹规划;机械臂的控制;其他如机械设计、传感器、图像处理etc。

基础内容中,个人认为最重要的必须掌握的几个概念:

刚体位姿的坐标描述和变换 :机器人模型的基础,于机器人学的重要性犹如英文字母至于英文;

D-H坐标变换 :机械臂建模的重要方法,以简洁的数学语言描述由一连串刚体组成的机械臂;

雅克比矩阵 :机械臂运动学的核心,用于关节速度和末端速度的换算;

拉格朗日动力学 :力和速度加速度之间换算的桥梁。

最重要的工具:数学,尤其是 线性代数

2. 基础动手入门

工科不动手,学过也没有。如果你觉得上述基础内容很枯燥(实际上确实很枯燥),不放自己动手增加趣味性。

软件上,可以使用万能的matlab。实际上,克莱格的【机器人学导论】里就有大量matlab习题,可以参考。当然这里不得不提Perter Corke编写的 robotics toolbox for matlab :

http:// petercorke.com/Robotics _Toolbox.html

安装这个toolbox之后,你可以在matlab上通过D-H方法建立机器人模型,并避开底层繁琐的矩阵运算,通过简单的函数进行一些运动学计算——不过逆运动学求解经常不收敛,毕竟不涉及底层嘛。更多的细节题主可以自己摸索。贴一个自己开始瞎捣腾时弄的模型图(害羞>.<):

硬件上,个人DIY机器人的话成本是很高的,定位为科教功能的nao机器人(此著名萌货见下图,为什么我要贴这个无关紧要的图因为它实在是太萌了),一台就卖十几万呢。

但是学生党个人DIY相对简陋的机械臂也是可行的。买几个几十块钱的电机,精度虽低,能转起来就行。买几块控制板。如果你电路够牛逼,也可以自行设计电路画电路图送加工然后自行焊接,但总还是买现成的板子方便嘛。对于初级选手,控制板可以选择学生党最常用的单片机,这里我推荐自己捣腾过的开源项目 arduino

Arduino - HomePage

(图片来自arduino官网首页)

arduino的好处是,编程语法简单,只要能理解基础的C语言即可,几乎零入门;编辑器自带很多sample可以参考;编程模板通用性强,很多时候编程只需要在模板上改动设计实现功能的语句即可;作为开源项目,google一下就可找到很多国外强人做的狂拽酷炫的DIY项目,比如:

DIY Robotic Hand Controlled by a Glove and Arduino

很多DIY的人愿意将程序公开,可以拿来参考;还有就是,价格不贵。

不管买电机还是控制板,可以求助万能的淘宝。一个简单的机械臂搭起来,几百块钱够了。

贴一张我使用arduino板子和简单电机瞎倒腾的机械臂:

用它在纸上画线,因为精度低,所以直线抖成那副挫样(害羞>.<)。

3. 进阶

进阶就没法在知乎里讲了。首先方向太多,在学习完基础知识以后,你要做什么(工业机械手臂,运动型仿人机器人,etc),你要做哪一块(机械设计,电路,图像处理,控制算法,步态规划etc)。再者,成本太高,你懂的。最后,进阶的机器人DIY没有必要,财力成本高是一回事,更甚的是时间精力成本高。如果不以机器人为专业,那么到1、2阶段,自己玩玩即可。如果有志于从事机器人相关研究或工作,那么在大学里参与相关研究项目即可。