0、引言
很多朋友对机器人软件开发和人工智能感兴趣,不知道怎么学习,传智播客武汉校区在今年3月份开设了一期智能机器人软件开发工程师就业班, 在这里我把就业班的学习曲线给大家介绍一下!0基础小白也能学会的人工智能课www.bilibili.com
1、python基础
不管有没有编程基础的童鞋, 我都推荐大家先去学Python ,Python像一把瑞士军刀, 你可以用他干很多东西,比如自动回复邮件、自动收集信息。
Python又非常简单容易理解。 只要把解决问题得过程想明白,很容易就能转化成对应的代码。
只需要4天我们就能掌握, python基础,算数运算符,变量, 输出和输入,条件语句,循环,元组,字典等知识点,熟悉常用的控件, 文本标签,编辑框,按钮,布局,信号,槽等技术。
很多学员是零基础的 ,学习 python 第一周,可以做出来简单的学生管理系统,火车票查询系统。
2、面向对象
python是一门面向对象的语音,面向对象是重要的编程思想,接下来我们通过坦克大战这种经典的游戏来让大家掌握面向对象的思想。
看看第二周,大家的成果吧。
3、高等数学
线性代数的重要性需要特别强调。一般来说,优秀的工程师和科学家在职业生涯中一定要掌握高等数学,线性代数,梳理统计,矩阵的乘法、向量的乘法、向量的内积、变化率的求导、概率论和极限。要想掌握机器视觉和人工智能, 成为年薪30万以上的工程师, 懂高等数学和线性代数,这是必备基础。
看看第三周,大家的成果。
综合运用矩阵运算,反向传导,梯度下降,实现小车的自动驾驶, 这是深入理解人工智能课程的基石。
4、网络编程和多线程
网络技术是机器人工程师必备的技能,多线程也是能最大发挥程序效率的必备技能,掌握udp,tcp和socket这是编写通讯模块的重要基础, 后面我们编写工业3d相机和机械臂驱动,都需要基于socket进行编程。
看看第四周,大家的成果
我们从高级课程开始,采用纯ubuntu系统上课, 利用多线程和socket和qt计算,我们自己实现了局域网内的屏幕广播软件,实现了讲师屏幕共享个每个学生。上课用的屏幕共享软件,就是我们自己开发的!
5、HTML和爬虫
HTML和Javascript也是机器人工程师必备的技术,而不只是软件工程师的玩具。web技术实际上已经渗透到了编程的方方面面,另外大量网络上的数据我们需要能够抓取下来,做数据分析,为机器学习,数据挖掘打下坚实的基础。
第五周,大家的成果!
6、数据清洗和挖掘
数据库是重要的数据存储和查询工具,机器学习,人工智能都需要跟大量的数据打交道, 如何优雅的管理和处理数据是我们需要掌握的内容, 我们讲解常用的mysql数据库和嵌入式领域非常流行的sqlite数据库
第六周: 学生掌握 数据库概述 客户端使用 数据库操作 表结构的创建和修改 表数据的增删改查
where,order,group,分页,连接查询,外键,视图,事务, 索引 等数据操作技术。
到这里
你已经成长成为
一个初出茅庐的新兵
可以准备进入
智能机器人软件工程师
开发的大门了
★机器人领域四大问题感知。视觉传感器、图像传感器、激光雷达、各种传感器技术。
规划。人工智能、知识表达、路径规划、任务调度、机器学习等。
行动。运动学、动力学、开环控制,闭环控制、pid控制等。
数学基础。最优估计、微分几何、概率论等。
7、Linux
IT行业的程序员都会争论高级语言和低级语言哪个好,Linux和Windows哪个好,而对于机器人工程师来说,我们是工程师,语言和操作系统都是工具, 哪个工具最顺手,我们就要优先学习哪个工具。从现在到可预见的未来里,Linux是机器人软件工程师最好的操作系统。原因是机器人操作系统ROS是基于Ubuntu开发的,在Ubuntu上运行最稳定。虽然window10 投入巨资打算支持ros, 但是目前来讲ubuntu是我们最好的选择。
我们的课程从c++开始全面切入ubuntu操作系统实验和授课。
第七周:
学生掌握装ubuntu操作系统,掌握shell脚本编程,双系统安装方法,自主解决各种显卡,网卡驱动,Linux内核问题。
8、c++实战编程
python我们说是瑞士军刀,但是真要去造机器人,合适的工具并不是瑞士军刀,而是C/C++这样简单粗暴的锤子和螺丝刀般的工具。
工具最重要的是如何去使用, 我们用大量的案例,来教大家,带大家去使用工具。我们课程类比讲解python和c++的异同点, 短期内让大家掌握,clion开发环境,变量和常量,数组和Vectors,操作符和流程控制,字符和字符串处理 函数,Characters and Strings,Functions,指针和引用,OOP -面向对象,操作符重载,继承,封装,智能指针,异常处理,IO和流 ,boost,STL模版技术等c++核心技能。
第八,九周:
c++和python融会贯通,学生可以自己编译c++工程为库文件,用python去调用c++代码。python写业务逻辑简洁明了,c++做核心算法,整洁高效。
9、cmake和makefile实战
c语言和c++语言从诞生到现在已经有几十年了, 很多前辈程序员写出了大量经典的框架和工具集, 学习编译工具理解Github存在的意义, 让前辈的代码融入到我们的工程中。
第九周: 学生能自主编译opencv, FFmpeg, pointcloud等经典c++项目, 并引入到自己工程中。
10、机器人操作系统
ROS( Robot Operating System,机器人操作系统)诞生于2007年,并很快在机器人研究领域掀起了ROS开发与应用的热潮,目前已经成为机器人领域的网红。
谷歌、亚马逊、微软等众多知名公司已经广泛使用ROS系统,熟练掌握ROS操作系统,已经成为机器人开发的重要要求, 猎聘网上搜索ROS关键字, 大多数岗位起步月薪到达到1.5~2万元。
ROS在消费级领域应用比较多,但是在条件苛刻的工业级场景里面较少使用,CobotSys 库柏特操作系统是国内领先的工业机器人操作系统,相比ROS更适合解决工业领域的实际问题,CobotSys是有大规模工业场景落地的操作系统,通过实战学习工业场景机器人的落地。
第十周:
熟练使用pid原理, 联合使用c++和Python语言,完成扫地机器人的开发。
11、机器人学 & CobotSys仿真
多自由度的机械臂的难点在于机械臂的运动学正反解、运动学控制和动力学控制,是一个建模分析和数值算法实现的问题。六关节机械臂工作原理,机器人坐标系,坐标变换与旋转矩阵,欧拉角四元数,机器人的DH表达,机器人关节空间与笛卡尔空间转换,机器人的正解和反解,这些都是属于机器人学的最基本的问题。我们花一周的时间为大家讲解,cobotStudio是机器人仿真模拟的利器。
第十一周效果:
12、相机成像和驱动
相机是机器人的眼睛,我们要学习不同相机的成像原理,不同光源对成像的影响,结构光相机,双目相机和普通rgb相机的使用场景,相机下位机程序的编写,相机驱动的编写等内容。
第十二周效果:
相机测距仪
13、机器视觉OpenCV
视觉是人类最为重要的感觉。要赋予机器人智能,第一步就是给机器人赋予视觉,随着科学技术和计算机计算的不断发展,主要解决视觉问题的图像处理系统得到了长足的发展,涌现出许多优秀的框架,OpenCV是其中的代表。这一周课程学习图像卷积模糊、边缘梯度计算,一阶导数算子与二阶导数算子的运算,自定义滤波、高斯与椒盐噪声图像生成与图像去噪声增强,掌握直方图对比与反向投影技术,模板匹配等技术
第十三周学习效果:
自动驾驶,车道线识别。
14、3D视觉
2d的照片丢失了一个维度的数据,在某些特殊应用场景下,不能满足开发的需求,我们要引入3d的相机来进行更准确的识别,3d相机使用的技术包含,点云模型,pcl,点云数据的读取保存和可视化,点云的拼接,点云的矩阵变化,点云滤波,直通滤波,平面滤波,点云条件去除与轮廓去除,上采样和下采样,点云对齐,分割,拟合,2d与3d配置,传感器融合等。
第十四周学习效果:
15、深度学习实战
深度学习是目前很火的技术,但是大多数教程都是偏理论部分的,学完很难应用到真实的业务场景里面,我们采用目前最主流的深度学习框架(pytorch),讲解深度学习和卷积神经网络, 深度学习做重要的是组织数据集,评估模型和改善模型,这几块内容会作为我们课程的重点内容讲解。
第十五周学习效果:
生活垃圾分类,交通标志识别,人类表情感情识别等。
16、SLAM
SLAM是Simultaneous localization and mapping缩写,意为“同步定位与建图”,主要用于解决机器人在未知环境运动时的定位与地图构建问题,我们课程会讲解slam算法原理,坐标变换与实时构图的过程,最终利用生成好的地图文件,完成AGV小车或者扫地机器人的自主导航
第十五周学习效果:
17、综合项目实战-机器人写字
项目简介
人手写数字,通过机器视觉识别数字的图像,让机器人模仿写出对应的数字。
项目特色
1、准备数据集
2、深度学习训练数据集
3、机器视觉获取图像和图像处理
4、识别数字,根据轮廓生成机器人运动轨迹,控制机器人写出数字
18、综合项目实战-机器人无序分拣
项目简介
在料框中,随机放置着若干相同类型的盒子,机器人需要逐个拾取盒子,并将盒子按照指定要求,重新摆放。
项目特色
1、2D图像处理
2、机器视觉和机器人学的综合应用
3、3D点云处理
4、基于深度学习的物体分类与检测
5、运动规划
6、RCNN;Mask RCNN;多目标检测
7、视觉定位
19、综合项目实战-机器人跟随
项目简介
机器人识别跟随嫌疑人,自主导航避障,跟随嫌疑人。
项目特色
1、深度学习工具包使用
2、数据集采集
3、数据集分析
4、小车控制等。