#! https://zhuanlan.zhihu.com/p/414973930
这是来自布里斯托大学,机器人专业授课型硕士课程的开源笔记,笔记内容包括但不限于布里斯托大学的课程,其中也有斯坦福和 MIT 公开课的笔记。此专栏从2021年9月开始更新,维持更新时间预计为1年。希望可以和大家共同学习和讨论机器人相关的知识和内容。随着对在线笔记的编辑,知乎 vscode 插件的逐渐熟悉,该专栏中的笔记质量在逐渐提升。文章的格式也从 Markdown 转移到了更加方便 添加代码并运行的 jupyter notebook。
笔记以及一些代码已有 github 托管,可以由此链接访问
截至 22 年 6 月份,本专栏停止更新。对于课程的一些感悟:课程全部结束后,我感觉自己这一年来走了很多的弯路,学校教的很多课程已经完全跟现代社会脱节了,认真上课听讲的同学反而成了冤大头。下面我具体的列举一些我认为完全没用的课程,第一名 MV,该课程的设立实在太落后了,在深度学习时代花大量的时间教我们传统的 CV 方法,深度学习反而只有几节课的内容,本末倒置。第二名 Bio-AI,一时脑抽选了这个课,实在太水了,可以说是毫无用处。第三名 AI,本门课的重点是在教 ML,最后几节课又讲了讲 DL,RL 但都非常的短暂。然后是我认为比较好的几门课,第一是 RRTM,教会了我怎么科学的思考问题,怎么找论文,读论文,做研究,课程的两个老师都是布里斯托的大牛,真的让人受益匪浅。第二名 RS,Paul 老师认真负责,且课程设计重实践,真的可以让小白入门机器人系统设计,是非常棒的一门课。最后我想提出一些建议。第一学期的时候尽量先跟着网课把 DL 学了,然后第二学期再跟着网课学习 CV,太水的课就不去听了,真的很浪费时间。有空的时候多读一些论文,了解领域的最新进展。
虽然该专栏停止更新了,但学习和笔记并不会停止更新,由于我主要的研究方向是自动驾驶,所以在知乎上又开设了一些与自动驾驶技术相关的专栏:
- Lec1. Introduction to robotic systems
- Lec2. Line following
- Lec3. Finite State Machine
- Lec4. Obstacle Avoidance
- Lec5. Odometry 里程计
这个项目做的很捞,凑活着看看吧。。。
第二部分的项目仓库: Robot Navigation
这部分的内容很少的原因是
- 大多是 saminar (研讨会),基本都是老师讲自己的研究领域,然后我们来写一些总结作为 report。 由于比较怕老师在查重的时候查到我写的开源笔记,所以暂时不更新这部分的内容。
- 另外一部分关于培养技能的课程过于简单,比如 presentation, latex, git 这些都是我早已掌握并且经常使用的技能,就不做记载了。
该部分的课程结合了多个大学的课程,包括本校,以及台大的机器人学(一),英属哥伦比亚大学的ENGR486,国立交通大学的机器人学理论。还有苏黎世联邦理工大学的讲义。此课程需要有一定的力学基础,有机械背景的学生学起来会相对轻松。
- Lec1. Intro to the concept of kinematics
- Lec2. Homogeneous Transformations -1
- Lec2. Homogeneous Transformations - 2
- Lec3. Forward Kinematics
- Lec4. Inverse Kinematics in Matlab
- Lec5. 速度运动学(Velocity Kinematics)
- Lec6. 轨迹规划 (Trajectory Plan)
- 机器人动力学(Dynamics) -1
- 机器人动力学 (Dynamics) -2
老实说布大的计算机视觉课程
是不错的(只有第一节课还不错,随后教学质量就不行了),但在我查找资料的过程中发现了一个更好的课程,斯坦福大学开设的卷积神经网络的物体识别课程,所以以后的课程我和结合布大和斯坦福的内容做笔记和总结。下面列出关于斯坦福大学的课程的资料链接:
- B站上的视频【熟肉】
- 课程官方网站 【这里我们可以获取课程的 ppt 作业 colab文档】
- 课程的官方 github
- 其他中国同学开源的作业代码
- 知乎上的中文笔记
- Week1. An intro to Machine vision
- Week1. Machine Vision Tutorial from Stanford
- Opencv-python-tutorial -- 1
- Opencv-python-tutorial -- 2
- Opencv-python-tutorial -- 3
- Lec2. Image Classification
在学习了一段时间后,发现 UWE 的 MV 与 cs231n 的内容并不一致,为了通过考试,只能换一个与学校内容相同的课程 cs131。可惜的是本课程并没有视频资料,但他们公开了课程笔记:
- 计算机视觉基础 (Basic Knowlege of Machine Vision) -- 1
- 计算机视觉基础 (Basic Knowlege of Machine Vision) -- 2
- CV3. 边缘检测 (Edge Detection)
- CV4. 特征提取 (Features) -- 1
- CV5. 特征提取 (Features) -- 2
对于 MV coursework 的一些建议:
- CV Boackbone 的发展历史 AlexNet -> VGG -> ResNet / EfficientNet -> ViT / Swin Transformer 这些模型所对应的论文都很值得阅读。
- 一个好用的 CV 框架:OpenMMLab
人机交互部分与技术关系不是很大,反而是更偏向于社科。
- HRI1. 人机交互简介 (Human-Robot-Interaction Intro)
- HRI2. 人机交互的研究方法
- HRI3. 机器人设计
- HRI4. 语言交互(Verbal Interaction)
- HRI5. 空间交互(Spatial Interaction)
该门课程的内容分为 Machine Learning 部分和 Deep Learning 部分。教学的方向以数据科学为主。 由于此部分的内容与 Stanford cs229 部分有些重复,因此重复部分会被一笔带过。
Pytorch 深度学习(布大教的是 TensorFlow):
- Pytorch 1. 介绍(Intro)
- Pytorch 2. 数据集(Dataset)
- Pytorch 3. 创建一个神经网络
- Pytorch 4. 训练神经网络 (Training our Neural Network)
- Pytorch 5. 卷积神经网络(Convolutional Neural Networks)
- Pytorch 6. 使用GPU训练 (Training with GPU)
数据科学:
- DS 1. Pandas 数据分析
- DS2. Kaggle 入门 (Titanic Project Example)
- DS3. Kaggle 入门 (House Prices - Advanced Regression Techniques)
算法讲解:
由于这门课程为 100% 的项目考核,出于时间问题,该部分的笔记可能不全。
- BIONIC.1 神经系统(Neurla System)
- BIONIC.2 人工进化(Artificial evolution) -- 1
- BIONIC.2 人工进化(Artificial evolution) -- 2
此部分的笔记结合本校的课程以及Matlab 课程 和 B站 DR_CAN 的视频
控制论是一个强实践的课程,本门课程的理论知识并不多,但可以应用的例子非常多,因此多做题对本课程的提升会很有帮助。
- ACnD 1. 状态空间模型 (State Space Model)
- ACnD 1. 状态空间 -- 练习
- ACnD 2. 稳定性 (Stability)
- ACnD 3. 可控性与可观测性 (Controllablity and Obeservablity)
- ACnD 4. 设计控制器 (Contorller Design)
- ACnD 5. 状态观测器 (State Observer)
该部分的内容基于 Stanford cs229。 此部分的授课方式主要是数学推导,较为硬核。更加浅显一点的课程是 cs22 Introduction to Artificial Intelligence。
- 机器学习资料整理(Machine Learning Resources)
- ML1. 线性回归(Linear Regression) -1
- ML1. 线性回归(Linear Regression) -2
- ML2. 分类器类与逻辑回归(Logistic Regression)
- ML3. 广义线性模型(Generalized Linear Models)
- ML4. 生成学习算法(Generative Learning algorithms)
- ML5. 支持向量机 (Support Vector Machine)
此部分的内容是为了毕业论文打基础,并非布大课程。由于前段时间为了赶 Proposal 一口气把 UCL 的 DRL 课全看完了,但没有怎么做笔记,所以先挖个坑,等有空了再慢慢把笔记都补起来。
- DRL0. 深度强化学习资料汇总
- DRL1. 马尔可夫决策过程 (Markov Decision Processes, MDP)
- DRL2. 动态编程 (Dynamic Programming)
- DRL3. 探索与尽用 (exploration and exploitation)
使用 OpenAI 的 baselines 和 Gym 进行的代码练习, Play With Gym