06 | ASW 开发系列 6- 标定表与 Lookup table

本贴最后更新于 294 天前,其中的信息可能已经时移世改

不管汽车的动力系统,底盘系统还是车身系统,在控制层面,有些零部件的特性按照理论方法(比如数学模型)来实现将会十分复杂,也会导致计算更加复杂且占用 ECU 大量的资源。因此,工程应用上基本采用标定表的方式去简化计算,并建立关键因素间的关系。比如离合器特性,采用标定表来表示离合器扭矩与滑摩转速差,油压的关系,见下图。

图片

另外,工程上也会通过标定开关去控制是否激活某些功能,实现不同车辆配置的差异。本文主要介绍实现标定表的 Simulink 模块 Lookup table。

1. Lookup table

量产模型中,标定表最常使用的是是一维和二维的 Lookup table,如下所示:

图片

以 TCU 模型开发为例,标定表主要应用在换挡表,离合器特性和 PI 参数设置等方面。假设 PI 控制中的 P 项参数会受温度影响,但没有准确的数学关系,从而采用标定方式来获取 P 项参数。

这时需要先对 Lookup table 进行设置,如下所示:

图片

对于表和断点设置,方法与前面文章定义数据字典方法一样,这里定义了横轴变量为 TempValu_cx,纵轴为 PItemFctr_cy,如下图,当该表的输入为 0,则输出为 0.3。

图片

对于算法设置,主要介绍插值方法,插值方法有很多种,比如线性插值,多项式插值和样条曲线插值等,通常选择线性插值(Interpolation)方法。

2 线性插值方法

下面将介绍线性插值原理,以便于了解如何得到了标定表的输出结果。

线性插值在数学原理上其实就是一次函数 z=kx+b 的运算,当 k 和 b 确定时,输入 x,就能得到相应的 z,具体原理示意如下:

图片

图片

通过上图可理解:所谓的标定,就类似于根据实际情况不断地调整 k 和 b 的数值,最终找到最优的 k 和 b, 从而对于任意数值的 x,都能得到满意的 z。

继续深挖线性插值方法,来看标定表的坐标轴的一些设定方法。了解了线性插值原理后,假如我们采用 1-D Lookup table 为标定表,即标定表包含横轴 x 和纵轴 z。

关于横轴 x,假定横轴 x 范围设置为[0,150],设置 3 个标定点:[10 60 110],此时如果表的输入 0 或 120 时,该怎么处理?

目前了解到有两种处理方法,一种是使用外插值(),如下左图;另一种使用尾值(use end value),如下右图。

图片

另外,当前横轴标定点设置是等间距的,是否可以不这么设置?

答案是可以,但必须数据得递增才行,总的来说横轴的数据点间隔设置有两种形式,一种数据点间距相等,另一种数据点间距不相等,两者主要在消耗存储空间和算法效率方向有差异。

图片

关于纵轴,首先纵轴必须设置与横轴数量相同的标定点,即横纵轴的标定点数量要相同。接着横轴例子,假定纵轴范围设置为[0,1000],设置纵轴 3 个点[100 900 500],注意这 3 点并不需要横轴那样必须严格递增。

这样确定了横轴和纵轴的标定点,就确定了插值关系。通常只需要根据输入和插值关系就可以得到标定表的输出,但是也有一些意外情况,比如当横轴输入 120,而插值结果为 1050,超过纵轴范围,此时只能取纵轴的最大值 1000,如下图所示:

图片

3 小结

以上就是对标定表使用 Lookup table 的介绍,初步介绍了解需要对 Lookup table 做哪些设置,以及 Lookup table 实现线性插值的基本原理和方法。若想对 Lookup table 做更深入了解,比如在代码层面如何实现的,可参考本人知乎文章:ECU 开发基础系列--标定表插值方法 4

另外,若想对汽车软件的标定了解更多,可参考:

  • 标定概述
  • 如何使用 CANape 实现 XCP/CCP“Measurement 测量”和“Calibration 标定”变量
  • 汽车标定工程师是如何参与整车开发的?

  • 设计
    112 引用 • 797 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    163 引用 • 473 回帖
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖 • 4 关注
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    41 引用 • 130 回帖 • 274 关注
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 4 关注
  • 导航

    各种网址链接、内容导航。

    37 引用 • 168 回帖 • 1 关注
  • BND

    BND(Baidu Netdisk Downloader)是一款图形界面的百度网盘不限速下载器,支持 Windows、Linux 和 Mac,详细介绍请看这里

    107 引用 • 1281 回帖 • 31 关注
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖 • 26 关注
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    5 引用 • 13 回帖
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 83 关注
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    230 引用 • 1454 回帖
  • OnlyOffice
    4 引用 • 15 关注
  • SQLServer

    SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。

    19 引用 • 31 回帖
  • 安装

    你若安好,便是晴天。

    131 引用 • 1184 回帖 • 2 关注
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 456 关注
  • abitmean

    有点意思就行了

    32 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    83 引用 • 165 回帖 • 3 关注
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 333 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖 • 1 关注
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    106 引用 • 152 回帖 • 1 关注
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    334 引用 • 323 回帖 • 12 关注
  • IBM

    IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。

    17 引用 • 53 回帖 • 125 关注
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖 • 1 关注
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    6 引用 • 15 回帖 • 169 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 193 关注
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    58 引用 • 22 回帖 • 10 关注
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    62 引用 • 289 回帖
  • Love2D

    Love2D 是一个开源的, 跨平台的 2D 游戏引擎。使用纯 Lua 脚本来进行游戏开发。目前支持的平台有 Windows, Mac OS X, Linux, Android 和 iOS。

    14 引用 • 53 回帖 • 526 关注