文章目录
1 为什么要做这个项目?
自动驾驶是当前研究的热门领域,是最先进的机器学习/深度学习技术的集大成者。作为一名人工智能工作者或爱好者,如果能打造一辆属于自己的智能驾驶小车,把学习到的知识应用在其上面,赋予它生命力和存在的意义,这种成就感将是巨大的。
2 mycar项目
mycar项目是一个小尺寸的移动平台,底盘采用遥控车(RC Car)平台,1:10或者1:16比例遥控车),主要在室内移动和完成任务。它将搭载一个SBC(Single Board Computer,树莓派或者jetson nano)、摄像头(或者双目摄像头/深度摄像头,如果成本允许)、雷达(声波/激光)、IMU(Inertial Measurement Unit, 惯性测量单元)等传感器。
物料成本在1000 ~ 2000元之间。
2.1 可以做什么
通过mycar小车和程序,可以完成以下任务:
- 巡线前进
- 物体识别与自动跟随
- 车道识别与自动驾驶
- 定位与地图构建(SLAM, Simultaneous Localization and Mapping)
- 超车切换车道
- 交通信号识别与反应
- 其他你能想到的…
2.2 项目所需知识
项目主要是学习和研究目的,本人是一名软件工程师,也是自动驾驶技术的学习者,主要关注自动驾驶的程序和算法,硬件力求简单和易操作。入门所需的知识不会太多,毕竟不可能一口吃成胖子。如果你具备以下条件,那就跟我一起上车吧:
- 基本的Python编程知识
- 了解linux系统命令
- 初步掌握一些机器学习/深度学习方法
- 喜欢动手,热爱探索
3 自动驾驶介绍
自动驾驶离我们并不遥远,Waymo自动驾驶车已经在公共道路上行驶了2千万英里的里程,特斯拉更是积累了20亿英里的自动驾驶里程;在国内的长沙和广州,自动驾驶出租车也已经开始运行。
3.1 自动驾驶出租车
笔者多次乘坐WeRide RoboTaxi,虽然车上还有安全员,但确实感受到自动驾驶系统能安全完成绝大部分任务,有需要我可以另写一篇体验文章。
3.2 自动驾驶的职能模块
下面借用Apollo和Coursera的上的截图理解一下自动驾驶的职能模块。
- 自动驾驶汽车上的传感器:
- Coursera Self-Driving Cars分拆:
- 百度Apollo自动驾驶介绍:
可以看到自动驾驶系统的职能模块大概可以划分为:
- 高精度地图(High Definition Maps)
- 定位(Localization)和感知(Perception)
- 控制(Control)
- 路径规划(Planning)
在每个模块里又可以细分出很多单元。最后全部集成起来让整个系统能够协调工作。
不要被以上的专业术语吓到,在后面的系列文章里笔者希望和大家一起循序渐进,逐步学习和理解它们是如何工作的。
4 学习资源
互联网上有许多可供学习的资源,这里收集了一些国外大学和机构的学习资源,供有条件的读者进行选择学习。
- aUToronto - 多伦多大学自动驾驶团队项目 https://www.autodrive.utoronto.ca/
- MIT RACECAR - MIT的RACECAR(Rapid Autonomous Complex-Environment Competing Ackermann-steering Robot)平台,https://racecar.mit.edu/
- Center for Automotive Research at Stanford, 斯坦福大学自动驾驶研究中心。 https://cars.stanford.edu/
- UM Ford Center For Autonomous Vehicles(FCAV), 密歇根大学福特自动驾驶中心。https://fcav.engin.umich.edu/
- Coursera - Self-Driving Cars Specialization, 跟多伦多大学合作。https://www.coursera.org/specializations/self-driving-cars
- Udacity - Self-Driving Car Engineer Nanodegree。https://www.udacity.com/course/self-driving-car-engineer-nanodegree–nd013
- 其他好的资源欢迎读者朋友补充。
5 开源项目
开源届已经有不少自动驾驶小车项目,这里只列出几个当前还比较活跃的自动驾驶小车项目。
5.1 Nvidia JetBot
SBC: Jetson Nano
https://github.com/NVIDIA-AI-IOT/jetbot
5.2 Nvidia JetRacer
SBC:Jetson Nano
https://github.com/NVIDIA-AI-IOT/jetracer
5.3 MIT RACECAR
SBC: Jetson TX2
https://github.com/mit-racecar
5.4 Donkey Car
SBC: 树莓派/Jetson Nano
https://www.donkeycar.com/ https://github.com/autorope/donkeycar/
5.5 mycar - 本项目 - Coming soon…
以上项目的硬件虽各有差异但相差不大,但在程序上可能差异比较大。本项目的重点是软件与算法,小车的硬件会参照Donkey Car去搭建,但软件源码会重头梳理与编写,方便大家学习。
大家可以跟着我一起搭建小车,也可以选择按上面的项目去搭建小车,甚至在某宝上有现成的小车可以直接购买,只要搜索"Donkey Car"或者"JetRacer"就可以了。
6 万事开头难
所幸终于开了个头,可能中间会遇到很多困难,但新事物总是吸引着我们前去探索和想象。我也不知道这个项目最终能做成什么样,希望在这个项目的过程中,读者朋友和我都能感受到学习与创造的快乐!
预告:下一编介绍小车硬件的搭建过程,敬请期待。