Dell ADAS 公开课

小车向前冲

 

任务

  • 先遥控小车在赛道上行驶,采集数据,完成AI学习进而实现自动驾驶

 

小车部件组成

总结构

 

步进电机

  • 步进电机:脉冲控制、精细、不需要刹车

 

麦克纳姆轮

 

主控模组

  • Nvidia Jetson Nano

 

TOF

  • 测距2m

 

安装

  • 驱动板电机安装不需要区分,因为有跳线自动识别

 

自动驾驶训练

数据传递

 

摄像头

  • 分辨率最高1920*1080,帧率30FPS,25度倾角对地面

 

小车控制

  • 分手动驾驶和自动驾驶两个模式
  • 手动驾驶时需要连接手柄,且当速度不为0时会以每秒20帧的速度记录摄像头数据和手柄的records数据
  • 自动驾驶时不需要连接手柄,也不会记录数据

 

收集数据

  • 收集方法:手柄遥控小车走"正确"的路线和"正确"的行为
  • 演示有如下几个场景
    1. 轨道内无障碍物前进
    2. 躲避障碍物前进(直角、拐弯处)
    3. 遇到正面障碍物则停止

 

清洗数据

  • 数据上传到GPU服务器
    1
    2
    tar cvf tub.tar tub/                               # pack
    scp tub.tar it_stu199@192.168.40.2:~/mycar/ # upload
  • 登录GPU服务器,查看数据
    1
    2
    3
    ssh -X it_stu199@202.121.181.113                   # login
    cd mycar && tar xvf tub.tar # unpack
    eog tub/ # view data
  • 清洗数据:清洗掉错误的操控驾驶行为,手动剔除

 

训练模型

  • 准备训练环境
1
2
3
4
cp ~/../it_stu199/train_pkg.tar ~/                 # copy
tar xvf train_pkg.tar # unpack
cd train_pkg
mv ~/tub ./ # move dataset
  • 根据需要修改训练作业run.sh
  • 提交作业,进行模型训练
1
2
sbatch run.sh                                      # submit job
watch -n 1 "sq | grep &USER # check job
  • 等待训练结束,检查是否正常结束 cat log/<最新的log文件> # check train log

  • 说明

    1
    2
    3
    4
    5
    6
    run.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
2
3
4
ssh mousika@172.18.24.103
cd ~/mycar
vi dellcar/parts/drive.py
sudo python3 dellcar/parts/drive.py

  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文件)
  • 将训练清洗过的数据放入服务器训练,得到自动驾驶模型

自动驾驶模型测试

  • 将训练得到的自动驾驶模型用于小车测试