我们的目标是创建一个自主的室内机器人,它使用不同的控制策略来处理它的运动。在这个项目中,我们提出了一种解决方案,它对传感器进行建模并实施模型预测控制 (MPC)。
关于 MPC 控制的一些话: 模型预测控制 (MPC) 是一种众所周知的用于解决在线优化问题的控制策略,广泛用于自动驾驶汽车应用。MPC 的计算成本高且资源消耗大,尤其是当涉及到嵌入式计算平台的有限资源时,例如片上系统 (SoC) 和现场可编程门阵列 (FPGA) 平台。最近,机器学习(ML)在减少执行时间和资源消耗方面已成为经典控制系统的有效替代方案。模型预测控制 (MPC) 是最常用的控制策略之一,因为它能够解决在线优化问题并处理软约束和硬约束。但是,对于复杂的高非线性系统,MPC的实现是一个很大的挑战;
深度神经网络被认为是一种自我优化的方法,因为它能够根据提供的信息优化其行为,这使得 DNN 适用于复杂的动态系统。使用 Matlab Simulink 和 MPC 工具,我们发现这会让人头疼,因为我们使用的是小型 FPGA。出于这个原因,在米什科尔茨大学,我们创建了一个 DNN 工具,它从给定的输入数据创建一个基于给定数据中的 System Generator 库元素的可参数化 DNN 网络。
一个传统的 MPC 控制器如图 1 所示。MPC 控制器的预测策略是在预测范围内执行的,它代表了控制器期待未来的下一个 P 时间步长。MPC 控制器模拟几个未来场景,优化器根据成本函数选择最佳场景,成本函数代表参考目标和预测输出之间的误差。最优方案对应于最小成本函数。
该控制器计算量大,因为它解决了每个时间步的在线优化问题,这需要高计算能力和大内存。计算负载和高资源消耗使 MPC 在有限资源上的实现成为一个巨大的挑战。
设计MPC模型的第一步是确定车辆内部模型的输入输出信号,第二步是设置参数和确定约束条件。操纵变量(转向角 δ)和扰动(vx ρ)被确定为输入信号,而横向速度 vy、横向偏差 d、偏航角 θ 和偏航率 ω 被确定为输出信号(见图 2)。
模型方程如下:
约束条件如下确定:转向角在 [-1.04, 1.04] rad 范围内,偏航角速率在 [-0.26, 0.26] rad 范围内。在设计过程中保持这些参数,直到获得满意的行为。MPC 和工厂模型的总体设计如图 4 所示。
设计步骤如下:
对于深度神经网络 IP 的自动生成,创建的 DNN 工具(见附件 DNN 工具 IP 生成器)。
首先使用 DNN 工具创建 DNN。一般而言,将使用该工具的人应提供以下参数:
该工具的输入如下:
输出是在 Matlab Simulink 中生成的 DNN IP。
备注:该工具正在工作,但应考虑针对不同的 AMD Xilinx 平台进行一些优化和修饰。这是 PL(可编程逻辑)包含的神经元和 DSP 元素数量的函数。该工具已针对 KC705 板和 Kria KV260 SOM 成功测试。
首先加载DNN_Generator.m文件并根据需要进行编辑:
%Edit model_parameters_here...神经元计数 = [6 20 10 10 1]; % 7 层中每一层的神经元数量%starting model... init;
然后运行。该模型已创建并可用于自己的目的。
在 Simulink 环境下进行了仿真,取得了不错的效果。不幸的是,对于 Kria KV260 模块,系统生成器不允许我们进行硬件在环仿真。我们使用 KC705 板为生成的 DNN 制作了 HIL。使用 KV260 仿真和使用 KC705 的 HIL 获得的结果相似。
如下图(图 5)所示创建的 Vivado 项目已成功翻译并导出到 Vitis。在 Vitis 软件中,我们甚至无法运行“hello world”项目。Vitis 报告“平台无法识别。
在图中(图 5)可以观察到,我们创建了两个 IP-s,一个与 AXI 兼容,一个没有 AXI 接口。我们的经验是,没有 AXI 接口的设备在 KC705 平台上工作得更正确。
只是为了在下图中显示一个示例,我们展示了 KC705 模块的结果,因为我们无法在 KV260 上进行 HIL 和测试。
创建的 DNN_tool 可用于实现任何 DNN 网络,并且可以在 Simulink 中进行测试。模拟、HIL 和实施可以在 FGPA 中完成。
创建的工具可供任何人免费使用。
不幸的是,我们无法在 Kria 板上测试模型预测控制,但可能在不久的将来我们会在 AMD-Xilinx 工作人员的帮助下解决这个问题。
我们面临的主要问题是如何在不使用 RTL 内核向导的情况下将 DNN MPC 模型集成到 Vitis。
(对于具有高级知识的人)构建一个项目需要多长时间?
答案是:1 小时来训练和准备 DNN。5 分钟安装 DNN 工具并生成 IP。10-20 分钟通过导入 IP 并进行所有必要的设置来创建 Vivado 项目。5-30 分钟(取决于 DNN 的大小和优化策略)创建比特流。10 分钟迁移到 Vitis 并运行项目。30 - 60 分钟编写 C 程序并测试结果。
我们花了多长时间构建 DNN 工具并在不同平台上测试该工具?
答案是:5个月每天工作3-5小时左右。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !