之前已经介绍过《FPGA在汽车电子中应用-ADAS》,但是很多人留言说是没有相关例程,应用不够直观,所以,今天他来了-使用FPGA制作一个便携式 ADAS 系统(源码开源)。
ADAS 到底是什么?
ADAS 是车辆中的电子系统,使用先进技术来协助驾驶员。它们提供重要信息,自动执行困难任务并提高整体安全性。功能包括:
车道偏离警告 (Lane Departure Warning,LDW):当车辆开始偏离车道时,系统会向驾驶员发出警报。显然,我们都需要一位数字伴侣陪伴在身边。 自适应巡航控制 (Adaptive Cruise Control ,ACC):自动调整车速,与前车保持安全距离。 防撞系统(Collision Avoidance Systems):警告驾驶员可能发生的碰撞,甚至可以自动刹车。 盲点检测(Blind Spot Detection):通知驾驶员可能看不到的盲点中的车辆。换句话说,它可以防止因空间意识差而导致驾驶失误。
有了这些功能,计划创建一个可以让每个人的驾驶都更安全的系统。
软件
1、Vivado 设计套件
DPU IP
这里真正的主角是DPU(深度处理单元)IP 。这项神奇的技术直接在 FPGA 上运行 AI 模型,使一切变得更快、更高效。可以将其视为系统实时处理数据所需的肾上腺素。
在 DPU 中运行模型:
在 FPGA 的可编程逻辑 (PL) 中的 DPU 上运行 AI 模型。这是 ADAS 系统的核心,处理所有密集的 AI 计算,例如车道检测和物体识别。
面临的挑战:
安装难题:Vivado在发行版系统(例如Ubuntu 或者 Centos)里安装会相对简单,但是也很容易出现问题。
解决方案:在 Linux 中先安装libcurse Vivado 是解决问题的灵丹妙药。
2、CARLA 模拟器
CARLA 是一款开源自动驾驶模拟器,旨在支持 ADAS 和自动驾驶系统的开发、训练和验证。换句话说,这是一款为想要假装自己在工作的成年人准备的电子游戏。
为什么要使用 CARLA?
模拟真实驾驶场景对于测试和改进 ADAS 应用至关重要。CARLA 为实验提供了安全且可控的环境,而没有实际道路测试的风险。
面临的挑战:
XServer 错误:如何修复?
export VK_ICD_FILENAMES="/usr/share/vulkan/icd.d/nvidia_icd.json"
如果电脑配置比较低,需要执行下面语句:
./CarlaUE4.sh -quality-level=Low
3. Vitis AI
Vitis AI 是 Xilinx 推出的一款开发平台,用于在 AMD 和 Xilinx 硬件上进行 AI 推理,可以在 FPGA 和 ACAP 上部署 AI 模型。
为什么要使用 Vitis AI?
Vitis AI 对于开发和优化 ADAS 系统的 AI 模型至关重要。它提供了量化和编译模型的工具,以便在 DPU 上高效运行。
面临的挑战:
模型优化:要使 AI 模型在 DPU 上高效运行,需要了解量化和编译技术。这就像将方形钉子装入圆孔中,只不过钉子是神经网络。
工具链复杂性:使用 Vitis AI 工具链是另一个陡峭的学习曲线。这就像解决魔方一样,只不过每次眨眼时它都会改变颜色。
4.PetaLinux
PetaLinux 是 Xilinx 硬件平台的嵌入式 Linux 发行版。它允许开发自定义应用程序并直接在 FPGA 上运行它们。
为何使用 PetaLinux?
PetaLinux 为在 KR260 上运行应用程序提供了一个强大而灵活的环境。它是将所有东西粘合在一起的粘合剂,确保软件和硬件和谐地工作。就像花生酱和果冻一样,只是有更多的命令行界面。
使用和配置PetaLinux可以自行查找资料,按照官方资料很容易构建PetaLinux系统。
构建ADAS系统简易过程
步骤 1:从 CARLA 收集数据
用它来收集数据以训练和测试 ADAS 模型。
面临的挑战:
数据管理:收集和整理数据是一个耗时的过程。必须确保数据干净且标签正确。
第 2 步:车道和物体检测
面临的挑战:
AI 模型训练:训练 AI 模型以准确检测车道和物体需要尝试不同的架构和技术。
性能调优:优化模型以使其在 DPU 上高效运行涉及量化和微调。
步骤 3:在 FPGA 上启动 PetaLinux
第四步:系统联调
集成所有组件并确保它们有效通信就像是编排一曲复杂的交响乐。确保传感器、FPGA、AI 模型和 CARLA 模拟器无缝协作。
面临的挑战:
通信协议:了解并实施组件之间的正确通信协议至关重要。这涉及学习 I2C、SPI 和以太网等接口。
同步:确保系统同步并协调运行是一项挑战。它需要精确的时间和协调。
下一步计划
自动驾驶:实现自主导航、决策和控制算法。这需要集成更多传感器并优化 AI 模型。
提高性能:增强系统的性能和可扩展性,可能升级硬件并优化软件组件。
在真实场景中测试:在真实场景中进行更广泛的测试,确保稳健性和可靠性。下一轮测试中,我可能需要更多的虚拟消防栓。
参考链接
https://www.spinny.com/blog/index.php/adas-full-form/
https://www.researchgate.net/figure/Flowchart-of-the-lane-detection-algorithm_fig1_331958729
https://neptune.ai/blog/object-detection-algorithms-and-libraries
https://www.mdpi.com/2078-2489/13/6/279
代码链接
https://github.com/Turoad/lanedet
视频演示
视频已加速~
总结
这是一个偏AI应用的开源项目,适合想用FPGA进行AI研究人群研究。
END
往期精选
FPGA技术江湖广发江湖帖
无广告纯净模式,给技术交流一片净土,从初学小白到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有,QQ微信双选,FPGA技术江湖打造最纯净最专业的技术交流学习平台。
FPGA技术江湖微信交流群
加群主微信,备注姓名+公司/学校+岗位/专业进群
FPGA技术江湖QQ交流群
备注姓名+公司/学校+岗位/专业进群