版本 | 日期 | 人员 | 修改记录 |
---|---|---|---|
v1.6 | 2024-09-07 | 张天晓,1518159378@qq.com | 添加机械臂方向 |
v1.5 | 2023-09-02 | 吴勇前, 1102567801@qq.com | 添加 2.2.2 slam进阶 |
v1.4 | 2024-09-01 | 关超,2533290454@qq.com | 添加工程进阶 |
v1.3 | 2024-03-22 | 段智博,995291627@qq.com | 细化ros2基础部分要求;添加推荐教程 |
v1.2 | 2023-12-01 | 李曾阳, 975813725@qq.com | 添加1.1.6 Git的常用操作;细化 2.1深度学习方向的内容 |
v1.1 | 2023-11-16 | 吴勇前, 1102567801@qq.com | 添加 2.2.1 slam基础部分 的推荐学习课程与方法,细化了里程计与定位方法 |
v1.0 | 2023-06-25 | 郑桂勇, 2712089295@qq.com | 首次提交 |
- Ubuntu 安装、系统文件结构介绍,常用操作(命令行操作需要背诵)
- C++基础与 ToolChain(CMake,gcc(认识))
- 传统 CV 基础(图像原理和 OpenCV 对应代码)
- 线性代数(推荐: 入门 进阶)与Eigen库的使用
- 自定义训练集下 YOLO 训练及调参
- 相机模型、标定、2D-3D (PNP)
- Git的常用操作
- Markdown语法基础
-
ROS2 基础
-
大恒相机使用
-
Can 通信和串口通信 (可参考assets下"通信.md")
-
基本 python 和 matlab 使用
-
常用调试工具、设备认识和使用
- 学习GDB调试(可参考asserts下"GBD调试教程.md")
-
常见报错处理认识和解决途径
-
代码性能分析
- 学习
gprof
调试(可参考asserts下"程序性能检测可视化")
- 学习
- 基本滤波器状态估计机理(KF,EKF)
- 优化基本原理及优化库的使用(G2O,Ceres)
- 常用的设计模式(策略模式、工厂模式、单例模式等)
- C++高级特性和标准模板库使用
- 原生并发编程和常用并发库(TBB,OpenMP)
- Docker 基础
- 可参考asserts下"docker.md"
-
- 感知机算法+激活函数(Sigmoid、Tanh、ReLU、Leaky ReLU、PReLU、Softmax等)
- 数据集读取
- 定义网络模型(多层感知机)
- 基本损失函数(均方误差、交叉熵误差等)
- 优化算法(梯度法)
- 模型结果评估(拟合、过拟合、欠拟合、不收敛)
- Pytorch基本使用
-
- 随机梯度下降法(SGD)
- 小批量梯度下降法
- 动量法
- Adam算法
-
- 基本架构层:卷积层、池化层、全连接层
- 经典网络模型:AlexNet、VGG、GoogLeNet、ResNet、DenseNet
- 数据增强方法:hsv通道值随机修改;翻转;背景变换;添加椒盐噪声等
-
目标检测网络
-
SSD
-
R-CNN系列
-
YOLO系列:
-
输入端:Mosaic数据增强、自适应锚框计算,正负样本分配策略以及自适应图片缩放
主干网络:Focus结构、CSP结构
Neck网络:FPN+PAN结构
输出端:分类损失函数+定位损失+回归损失(GIOU_Loss)
-
-
YOLO-pose(关键点检测):
- yolopose的BBox loss func:CIoU
- OKS--主流的关键点评估指标
- 关键点损失函数(如简单的L1 Loss等)
- 关键点置信度损失函数
-
-
YOLOv5 的主干网络更改、裁剪
- 更换主干网络的Block
- 更换Shuffle Block
- 更换Mobile Block
- 添加SE注意力机制
- ...
- 修改网络深度、宽度
- 更换主干网络的Block
-
损失函数的设计与改进
- Focal Loss、OHEM loss、IOU loss等
- 如回归损失函数:Smooth L1 Loss -> IOU Loss(2016)-> GIOU Loss(2019)-> DIOU Loss(2020)-> CIOU Loss(2020)
-
网络轻量化方法
- 量化
- 剪枝
- 蒸馏
-
后端推理(C++部署)
- TensorRT官方教程
- ONNX官方教程
- OpenVINO官方教程
- OpenCV(dnn)
-
Vision Transformer(比赛暂未使用)
- RNN->LSTM->Transformer->ViT->DETR
-
入门推荐书籍
- 《深度学习入门:基于Python的理论和实现》
- 《动手学深度学习》
- 《Pytorch实战》
-
推荐课程
- 吴恩达机器学习(课程较长,数理基础扎实,有兴趣和时间可学习,快速上手深度学习不必要看)
- 跟李沐学AI(与《动手学深度学习》配套视频)
- 斯坦福CS231n(经典深度学习入门课程)
- 台大李宏毅系列视频
- TensorFlow2.0(北京大学曹健老师,课程用的tensorflow,讲的不错,可选看)
- 顶刊顶会论文阅读,关注热点,多看代码
- 尝试使用最新的CNN+Transformer网络模型进行目标检测,比较与目前方案的优劣性
- 探讨将追踪技术引入姿态估计中,比较与目前方案的优劣性
- 探讨将语义分割引入比赛(雷达站,哨兵)等,比较与目前方案的优劣性
- 探讨将单双目深度估计引入比赛(雷达站,哨兵)等,比较与目前方案的优劣性
- 探讨将深度强化学习引入比赛(控制,决策)等,比较与目前方案的优劣性
- GPU 编程
- 更多请自由探索,发挥想象力
-
了解常用的地图格式 (推荐:高飞 移动机器人运动规划)
-
了解PCL库与pcl_ros的使用,icp算法原理(推荐:《视觉SLAM十四讲》第七讲)
-
在 Nav2 中实现仿真环境下的导航问题,并理清不同 Frame 之间的转换及作用,以及理清定位,里程计,全局地图,局部地图和全局规划,局部规划的关系(可通过tf2_tools观看Frame之间的转换帮助理解,通过rqt_graph理清导航的完整框架)
-
了解全局路径规划(A*,Dijkstra)等原理,了解局部规划算法(TEB,DWA )的原理(推荐:高飞 移动机器人运动规划)
-
补充里程计相关知识,了解定位方法的原理
-
视觉:了解特征点法,光流法的原理(推荐:《视觉slam十四讲》7、8讲)
-
激光:了解 AMCL 等定位方法的原理(推荐:《概率机器人》 蒙特卡洛定位,知乎 Churlaaaaaaa AMCL包源码分析)
-
其他:如轮式,GNSS
-
-
尝试使用 Gammping 或 cartographer 使用激光雷达在仿真和真实世界中建图
-
尝试 LIO 如 Fast-LIO 的 Demo 运行(Bag、真实设备)
-
尝试 VIO 如(ORB-SLAM、VINS-FUSION)的 Demo 运行(Bag、真实设备)
-
使用 Nav2 框架在真实世界进行 2d 下的机器人的导航规划(激光雷达使用 2d,里程计使用 LIO 或 VIO 输出或轮式里程计,预建全局地图)
-
使用 Nav2 的决策树模块,模拟赛场哨兵决策。
-
了解各种传感器(IMU(推荐:《自动驾驶与机器人中的SLAM技术》3讲),深度相机,雷达,UWB)等特性,以及其融合、标定、同步方案
-
了解进阶滤波器,如: IEKF(知乎),ESKF(推荐:《自动驾驶与机器人中的SLAM技术》3讲),IESKF
-
了解FAST LIO原理与实现: paper code ,faster lio和FAST LIO2的改进点可简单了解,同时关注更多定位算法
-
多学理论基础,关注热点,多看代码,多看论文
-
深入学习算法原理(IMU 预积分,建图算法,规划算法,感知算法等)
-
心有余力者,可多看书如《机器人的状态估计》,多看论文(Mars Lab(hku) , HKUST Aerial Robotics Group , Fast Lab (zju) , STAR Lab(sysu) )
-
理解机械臂的组成部分,包括关节、轴以及不同的模型表示(如URDF、Xacro、SDF)
-
掌握机械臂的正运动学(FK)和逆运动学(IK)算法,理解它们在机械臂控制中的作用。学习并实践关节位置控制、力控、速度控等多种控制策略,
-
学习MoveIt的主要组件,如move_group节点、理解MoveIt如何与ROS参数服务器、话题和动作进行交互。
-
学习在Gazebo,rviz等仿真环境中测试编写的路径规划程序,观察机械臂的运动轨迹和效果。根据测试结果调整规划参数和算法配置,以达到更好的规划效果
参考学习材料:
-
古月居 《ROS机械臂开发:从入门到实践》 12讲 深蓝学院学习材料: 链接:https://pan.baidu.com/s/19hQvvEMxwwuaq_3T2sictg?pwd=9v4e 提取码:9v4e
-
仔细阅读源代码,在自己的理解上升级改造,尝试实现自己的算法。