机器人(操作方向)入门路线及参考资料
- 前言
- 1 数理基础和编程
- 2 机器人学理论
- 3 计算机视觉
- 4 机器人实操
- 5 专攻方向
- 总结
- Reference:
前言
随着机器人和具身智能时代的到来,机器人越来越受到大家的重视,本文就介绍了机器人(机器人操作方向)的入门路线及重要参考资料,包括数理和编程基础,机器人操作,计算机视觉,机器人实操以及具体的方向突破。
1 数理基础和编程
首先需要具备的就是一定的数理基础和计算机编程能力,这两项也是工科生最先接触的知识。
数理基础包括高数,线代,概率论等。可能很多学生包括博主在内在学习这些数学课程时,并不知道这些数学知识到底和专业之间是什么关系。为了引起大家对数理基础的重视,这里简单举例说明数理知识的重要性。比如力学分析(理力,材力,流力)会用到高数,控制理论会用到高数和线代,计算机视觉会涉及矩阵和概率论,而机器人学则会涉及到以上所有技术。
在学习以上数学知识的同时,可以练习数理推导软件如Matlab,Mathematica等辅助计算,这些软件也可用于机器人的计算和仿真。
计算机编程的底层逻辑想通,按照大学培养方案,最先接触的语言是C语言,重点培养编程的逻辑和程序设计方法。在机器人工程中,用到较多的语言是C++和Python两种语言,一种语言学会之后,再学其他语言速度就会很快。
2 机器人学理论
对于机器人理论部分,首先需要具备机器人学的基础知识,如位姿表示与变换,欧拉角和RPY角,机器人的正逆运动学等。可参考的书籍为熊有伦的《机器人技术基础》。
掌握这些基本概念之后,可以针对专题进行深入研读,如规划or控制,操作or移动,工业机器人or服务机器人,不同专题涉及到的技术侧重点不同。
本文主要针对机器人操作方向,所以重点介绍一下机器人操作方向。该方向主要是研究机器人基于视觉或触觉利用末端执行器(刚性或柔性,仿人手或二指夹爪)与被操作对象进行交互(如抓取,放置,推,重定向等)的科学。
人手操作(拾起)盘子的案例 [1]。
从力学角度分类可分为运动学操作,静态操作,准静态操作和动态操作,具体概念可以参考卡内基梅隆大学Mason的原著中译本书籍《机器人操作中的力学原理》。从被操作对象角度可分为刚性物体操作和柔性物体的操作,由于刚性物体操作的力锁合和形锁合假设不再适用于柔性物体的操作,所以柔性物体的操作也是当下的研究热点。
此处,也给出MIT的机器人操作课程的官方链接:Robotic Manipulation - Perception, Planning, and Control,供需要的小伙伴自学。
3 计算机视觉
计算机视觉于机器人而言就是机器人的眼睛,可用于机器人的抓取与操作,导航,人机交互等任务中。在机器人操作方面,计算机视觉主要用来识别物体的位姿和状态估计,抓取点检测等。
经典的计算机视觉任务包括图像预处理,图像的分割,图像的特征表述等。这些基本的概念需要了解,可以参考张岩等翻译的中译本书籍《计算机视觉基础》。然后在OpenCV上进行实践,OpenCV提供了丰富的C++和Python语言的API接口,可以直接调用,相关的书籍《学习OpenCV3》和其官方教程https://docs.opencv.org/4.x/d9/df8/tutorial_root.html。
接下来就是学习基于深度学习的计算机视觉,常用的套路如下 [2]:
1 学习吴恩达的《机器学习》和《深度学习》课程,了解一些机器学习的知识。
2 了解一些经典的CV模型,如Alexnet、R-CNN系列、YOLO等。
3 在github上找一些tensorflow、pytorch实现上述模型的开源代码。
4 下载VOC、ImageNet、COCO、kaggle等数据集。
5 按照开源代码中的Readme准备数据集,跑一下结果。
传统视觉和基于深度学习的视觉各有优缺点 [3, 4],在实际项目中,大多数情况下需要结合使用。
4 机器人实操
在了解以上基本概念之后,就可以上手真实机器人实践了,这里以基于ROS的机器人抓取系统为例,阐述需要掌握知识和要解决的问题。
首先,ROS(机器人操作系统)的一些基本概念要清楚,如节点,话题,功能包等基本概念,以及如何创建发布者和订阅者以及定义要发布的消息等,这些是机器人操作系统的基本通信的机制。
其次,学会使用ROS中的常用组件,如launch,rqt,rviz,rosbag等常用组件,这些组件是机器人调试时非常方便的工具。
最后,就是针对机器人类型进行建模和仿真,对于机械臂来说,ROS中已经集成了用于机械臂操作的开发平台——MoveIt,我们可以直接使用MoveIt来控制我们的机械臂。
ROS的参考资料可以参考古月居(胡春旭)的视频课程ROS入门21讲和书籍《ROS机器人开发实践》。
在掌握了ROS之后,就是在此基础上进行开发了,包括手眼标定,夹爪通信,机械臂规划等。下图所示为京东2017 JRC X机器人挑战赛上其中一个参赛队伍的机器人系统 [5],一个基于ROS开发的机器人移动操作系统。
5 专攻方向
当具备基础知识和实操能力之后,就需要根据具体的专攻方向学习最新的论文,开展工程或者研究工作。如3D感知与操作,类人操作,移动操作,人机交互,柔性物体的操作等。
一般情况下,较新的方向是没有书籍的,可以先从综述开始,然后是方向密切相关文献的精读。关注专攻方向最新动态,如顶会的Workshop等,还有跟踪领域内的牛人的发文。
2024年是具身智能到来的时代,当然,具身智能也可以和机器人操作相结合,即将大模型或者Learning应用于机器人操作任务中去,具身智能的入门路线参考具身智能入门学习技术路线。
最后推荐一下机器人操作方向上的媒体号:
关于机器人操作方向,推荐公众号:机器人操作前沿动态,每周更新全球最新学术进展。
关于柔性物体的操作,推荐博客:机器人的柔性物体操作综述汇总(持续更新),汇总了近几年的柔物操作的综述文章。
总结
以上就是今天要讲的内容,本文介绍了机器人操作方向的入门路线,从数理基础和编程,到机器人学理论和计算机视觉,再到机器人的实操和方向突破,阐述了机器人操作方向所需要的知识体系并给出重要参考资料。当然,入门时,不一定要按照顺序学习,边学边应用效果更佳。
Reference:
[1] MIT机器人操作课程:Robotic Manipulation - Perception, Planning, and Control
[2] 知乎文章:计算机视觉学习路线
[3] CSDN博客:论文笔记:传统CV和深度学习方法的比较
[4] O’Mahony N, Campbell S, Carvalho A, et al. Deep learning vs. traditional computer vision[C]//Advances in Computer Vision: Proceedings of the 2019 Computer Vision Conference (CVC), Volume 1 1. Springer International Publishing, 2020: 128-144.
[5] CSDN博客:ROS下实现机器人序列任务的执行控制