如何系统地学习机器人

如题所述

作者:郑帆
链接:http://www.zhihu.com/question/22390802/answer/21350061
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

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

1. 基础知识入门
教材大同小异,推荐常用的两本:
克莱格:机器人学导论 (豆瓣)
蔡自新:机器人学 (豆瓣)

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

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

基础内容中,个人认为最重要的必须掌握的几个概念:
①刚体位姿的坐标描述和变换:机器人模型的基础,于机器人学的重要性犹如英文字母至于英文;
②D-H坐标变换:机械臂建模的重要方法,以简洁的数学语言描述由一连串刚体组成的机械臂;
③雅克比矩阵:机械臂运动学的核心,用于关节速度和末端速度的换算;
④拉格朗日动力学:力和速度加速度之间换算的桥梁。

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

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

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

安装这个toolbox之后,你可以在matlab上通过D-H方法建立机器人模型,并避开底层繁琐的矩阵运算,通过简单的函数进行一些运动学计算——不过逆运动学求解经常不收敛,毕竟不涉及底层嘛。更多的细节题主可以自己摸索。贴一个自己开始瞎捣腾时弄的模型图(害羞>.<):
<img src="https://pic1.zhimg.com/2dd7c44a9d18bd8601ebb3a7c6f8a2e4_b.jpg" data-rawwidth="744" data-rawheight="352" class="origin_image zh-lightbox-thumb" width="744" data-original="https://pic1.zhimg.com/2dd7c44a9d18bd8601ebb3a7c6f8a2e4_r.jpg">
硬件上,个人DIY机器人的话成本是很高的,定位为科教功能的nao机器人(此著名萌货见下图,为什么我要贴这个无关紧要的图因为它实在是太萌了),一台就卖十几万呢。
<img src="https://pic2.zhimg.com/86625bb6615cb19e7a9d9b487301ec29_b.jpg" data-rawwidth="3264" data-rawheight="2448" class="origin_image zh-lightbox-thumb" width="3264" data-original="https://pic2.zhimg.com/86625bb6615cb19e7a9d9b487301ec29_r.jpg">
但是学生党个人DIY相对简陋的机械臂也是可行的。买几个几十块钱的电机,精度虽低,能转起来就行。买几块控制板。如果你电路够牛逼,也可以自行设计电路画电路图送加工然后自行焊接,但总还是买现成的板子方便嘛。对于初级选手,控制板可以选择学生党最常用的单片机,这里我推荐自己捣腾过的开源项目arduino:Arduino - HomePage
<img src="https://pic4.zhimg.com/1acab177ab8c1b12554f37fc43e9ee8b_b.jpg" data-rawwidth="926" data-rawheight="400" class="origin_image zh-lightbox-thumb" width="926" data-original="https://pic4.zhimg.com/1acab177ab8c1b12554f37fc43e9ee8b_r.jpg">(图片来自arduino官网首页)(图片来自arduino官网首页)

arduino的好处是,编程语法简单,只要能理解基础的C语言即可,几乎零入门;编辑器自带很多sample可以参考;编程模板通用性强,很多时候编程只需要在模板上改动设计实现功能的语句即可;作为开源项目,google一下就可找到很多国外强人做的狂拽酷炫的DIY项目,比如:DIY Robotic Hand Controlled by a Glove and Arduino 很多DIY的人愿意将程序公开,可以拿来参考;还有就是,价格不贵。

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

贴一张我使用arduino板子和简单电机瞎倒腾的机械臂:
<img src="https://pic3.zhimg.com/6ebe0575e365054c2743eadaefc9837e_b.jpg" data-rawwidth="2000" data-rawheight="3552" class="origin_image zh-lightbox-thumb" width="2000" data-original="https://pic3.zhimg.com/6ebe0575e365054c2743eadaefc9837e_r.jpg">用它在纸上画线,因为精度低,所以直线抖成那副挫样(害羞&gt;.&lt;)。用它在纸上画线,因为精度低,所以直线抖成那副挫样(害羞>.<)。

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