Dell ADAS 公开课
任务
- 先遥控小车在赛道上行驶,采集数据,完成AI学习进而实现自动驾驶
小车部件组成
总结构
步进电机
- 步进电机:脉冲控制、精细、不需要刹车
麦克纳姆轮
- 全向移动
- 安装时四个轮斜轴向小车中心
- 麦克纳姆轮速度计算
主控模组
- Nvidia Jetson Nano
TOF
- 测距2m
安装
- 驱动板电机安装不需要区分,因为有跳线自动识别
自动驾驶训练
数据传递
摄像头
- 分辨率最高1920*1080,帧率30FPS,25度倾角对地面
小车控制
- 分手动驾驶和自动驾驶两个模式
- 手动驾驶时需要连接手柄,且当速度不为0时会以每秒20帧的速度记录摄像头数据和手柄的records数据
- 自动驾驶时不需要连接手柄,也不会记录数据
收集数据
- 收集方法:手柄遥控小车走"正确"的路线和"正确"的行为
- 演示有如下几个场景
- 轨道内无障碍物前进
- 躲避障碍物前进(直角、拐弯处)
- 遇到正面障碍物则停止
清洗数据
- 数据上传到GPU服务器
1
2tar cvf tub.tar tub/ # pack
scp tub.tar it_stu199@192.168.40.2:~/mycar/ # upload - 登录GPU服务器,查看数据
1
2
3ssh -X it_stu199@202.121.181.113 # login
cd mycar && tar xvf tub.tar # unpack
eog tub/ # view data - 清洗数据:清洗掉错误的操控驾驶行为,手动剔除
训练模型
- 准备训练环境
1 | cp ~/../it_stu199/train_pkg.tar ~/ # copy |
- 根据需要修改训练作业run.sh
- 提交作业,进行模型训练
1 | sbatch run.sh # submit job |
等待训练结束,检查是否正常结束 cat log/<最新的log文件> # check train log
说明
1
2
3
4
5
6run.sh # gpu slurm 集群调度要求的作业脚本
train.py # 训练程序入口
config.py # 训练程序常量
dellcar # 训练程序子模块
models # 训练出的模型保存目录
log # 训练过程日志
小车自动驾驶
- 将训练好的模型拷贝到小车的 ~/mycar/models 目录内
1 | scp ~/mycar/models/<模型名> mousika@172.18.24.103:~/mycar/models/ |
- 使用自动驾驶模型
a.命令行方式
1 | ssh mousika@172.18.24.103 |
b.Web 方式
浏览器访问小车ip--->connection/configuration
Auto driving-->选择<模型名>-->点击start driving
- 小车会启动程序并开始自动行驶
其他
- 采集图像与对应标签关系:某时刻下采集的图像生成的标签一一对应(标签主要是转弯信号、前进/后退/停止信号等遥控器行为)
- 遥控器操控舵量和标签关系:分段常数,如大于0.3取1,小于取0
- 行驶速度和操控量关系:在算法中简化处理
- 相关文件提取码: gmya
- 调试辅助软件:PuTTY或者MobaXterm
网络
neural network architecture for ADAS
超参数:一开始就要给定
参数:可以后面算出来
W特别大,激活函数在哪一点(梯度在接近于0的位置)
top5:即对一个图片,如果概率前五中包含正确答案,即认为正确。
top1:即对一个图片,如果概率最大的是正确答案,才认为正确模型蒸馏
训练
- 手动正确驾驶(寻线行驶、正确转弯、避障等),采集训练数据,如果有错误的驾驶行为,需要删除对应的错误数据(图片和.json文件)
- 将训练清洗过的数据放入服务器训练,得到自动驾驶模型
自动驾驶模型测试
- 将训练得到的自动驾驶模型用于小车测试