【自动驾驶】运动规划丨代码生成丨  MATLAB Coder将M代码生成C/C++代码

背景

运动规划算法开发中,轨迹的生成多为高阶曲线,且多用到矩阵运算,以及实时计算曲线的系数,其精度不固定,用传统的Targetlink定标需要对所有符号定标,公式长了一旦出错不易查找,另外系数定标精度无法确定。目前多数开发在SoC上,也支持浮点运算。

Simulink Coder和 MATLAB Coder的区别

MATLAB Coder是把m函数转成c/cpp代码,同时也是使用Simulink Coder的一个前置条件,装Simulink Coder必须先装MATLAB Coder。

Simulink Coder跟MATLAB Coder的功能差不多,只不过Simulink Coder是把Simulink模型转成c/cpp代码。

基于这两者更上层的是Embedded Coder。 Embedded Coder 则允许更进一步的针对MATLAB Coder或者Simulink Coder 生成的代码进行优化和定制,从而生成可以应用到嵌入式产品中去的产品级代码。

自动生成代码及部署到硬件

MATLAB不仅在于提供了覆盖各个领域的工具箱,你可以快速方便地实现模型在环测试Model-in-lop(MIL),而且有各种代码生成工具,帮助实现快速控制原型Rapid Control Prototype(RCP)、软件在环测试Software-in-lop(SIL)、硬件在环测试Hardware-in-lop(HIL),还可以部署到硬件(CPU、GPU、FPGA)。

这些代码生成工具有:

  • MATLAB Coder
  • Simulink Coder
  • Embedded Coder
  • HDL Coder
  • GPU Coder

对于前三个Coder,基于模型设计(Model Based Design,MBD)会涉及。另外两个Coder,HDL Coder和GPU Coder分别用以将MATLAB/Simulink的代码、模型生成FPGA的代码(VHDL或Verilog)和CUDA代码。

自动生成代码,部署深度学习模型
MATLAB Coder和GPU Coder


HDL Coder的应用


Embedded Coder:参考链接

Simulink Coder 和 Embedded Coder的区别,为什么采用Embedded Coder,变量定标mpt package,标定量参数定标,信号关联properties,变量workspace存储.mat/.m文件

MATLAB Coder:参考链接

MATLAB Coder参考文档: