使用MPU6050计算方向盘角度
我给你们作了榜样、叫你们照着我向你们所作的去作。
——【约翰福音13:15】
1.前言
前段时间接到一个项目需求:使用现有的陀螺仪MPU6050实现计算当前车辆的方向盘角度。
2.需求分析
MPU6050可获取三轴角速度和三轴加速度,并通过算法可以获得横滚角、俯仰角、航向角。
方向盘角度旋转会同步引起车轮的角度变化,方向盘旋转角度与车轮角度是一个已知量,可从实际车辆设计中获得,本次需求的车辆中方向盘旋转角度与前车轮的角度关系为:
左转时,方向盘角度范围 0~610°,车轮角度0~28°;
右转时,方向盘角度范围0~720°,车轮角度0~37°。
车辆在行驶时,若方向盘有角度,则一定在某个圆上绕圈,通过查找资料发现,其实每一个轮胎都在各自的圆上绕圈,并且最关键的是 这些圆的圆心在同一个点上,如下图(网上找的):

按照上图,我们尝试分析,车辆在行驶过程中左转的转弯角度;左前轮和左后轮并圆心组成一个直角三角形,并且很容易看出,转弯角度(左前轮与前进方向的夹角)就是圆心角。
3.相关公式
根据上面的分析,我们可以从角度这个关键点去列出所有相关公式:
- A = 610°/28° //!<方向盘角度与车轮角度的关系,左转比例因子A
- S = V * t //!<圆弧长S = 车速V * 时间t
- L = 2π * r //!<圆周长L = 2π * 半径r
- D = |d| //!<角速度D = 角速度初始值d的绝对值
- α = D * t //!<转弯角度α = 角速度D *时间t
- α/360° = S/L //!<转弯角度α / 圆周角度360° = 圆弧长S / 圆周长L
- B/r = sinθ //!<轴距B / 半径r = sin(车轮角度θ)
- P = A *θ //!<方向盘旋转角度P = 比例因子A * 车轮角度θ
所以 左转时,P = A * arcsin(2π*|d|*B/(V*360°))
同样右转时也可以列出公式,所以要求方向盘角度需要的输入参数为:
比例因子A、角速度D、轴距B、车速V
其中比例因子A为实际车辆的固定值,角速度D可以从MPU6050中获取,轴距B就是车前轮圆心和车后轮圆心的距离,也为实际车辆的固定值,车速V可以实时从整车CAN中获取。
最后使用算法实现以上公式,便可求出当前方向盘角度。
4.结论
将以上算法应用到实际车辆后,实际测试结果均可基本满足测量需求。不过也存在一个缺点,就是当车速为零时,无法计算当前方向盘角度。另外现在新生产的车辆一般都会安装带有角度测量的方向盘,所以以上解决方案可用在后装车辆上。
本篇博文仅作记录。
相关文章:
使用MPU6050计算方向盘角度
我给你们作了榜样、叫你们照着我向你们所作的去作。 ——【约翰福音13:15】 1.前言 前段时间接到一个项目需求:使用现有的陀螺仪MPU6050实现计算当前车辆的方向盘角度。 2.需求分析 MPU6050可获取三轴角速度和三轴加速度,并通过算法可以获得横滚角、…...
区块链实验室(13) - 在PBFT中节点的度与其流量的特征
前面若干实验说明了PBFT的耗时、流量与度的特征,见 区块链实验室(10) - 实例说明PBFT的共识过程, 区块链实验室(11) - PBFT耗时与流量特征, 区块链实验室(12) - 网络拓扑对PBFT共识流量的影响 同样的实验方案,在100个节点构成的无标度网络中完成100次交…...
C++——文件操作
一、文本文件 C中输入输出是通过流对象进行操作,对于文件来说写文件就是将内容从程序输出到文件,需要用到写文件流ofstream;而读文件就是将内容从文件输入到程序,需要用到读文件流ifstream;这两个文件流类都包含在头文…...
channel通道笔记
channel通道笔记 介绍 语法 1.一般使用make创建channel(常用) c : make(chan datatype),datatype是数据类型 2.直接显示声明,创建的值为空,一般没有太大意义 var c chan datatype 三种定义写法: 既可以收数据又可以发数据:chan datatype只可以收数据:chan <- datatype只可…...
无涯教程-Lua - 面向对象
面向对象编程(OOP)是现代编程时代中使用最广泛的编程技术之一。 OOP的特征 类(Class) - 类是用于创建对象的可扩展模板。 对象(Objects) - 它是类的实例,并为其分配了单独的内存空间。 继承(Inheritance) - 这是一个概…...
Java中的IOUtils是什么?
Java中的IOUtils是一个工具类,用于简化文件和流的操作。它提供了一些常用的方法,如复制文件、读取文件、写入文件等。 下面是一个简单的示例,演示如何使用IOUtils来复制文件: import org.apache.commons.io.FileUtils; import j…...
电源板(220V转3.3V)调试问题总
目录 现象: 问题可能的影响: 排查过程: 1.测试EC3,C2都在6V左右, 2.怀疑变压器的问题。 2.怀疑原边反馈控制芯片的问题。 3.怀疑后级电路的问题。 现象: 电源板输出3.28V输出正常。 但是测试前级电压…...
【webpack】一些零碎的知识点记录:eslint配置、source-map配置、devServer配置
文章目录 前言eslint安装配置设置规则 devtool设置js.map文件使用模式解释文件说明建议方案 devServer安装配置 前言 有些知识点不知道咋归类,就先暂时放在同一个文章里了。这里只记录配置方式,配置的东西是什么就不过多解释了,因为一般需要…...
VUE之JWT前后端分离认证,学生管理系统
参考资料: SpringBoot搭建教程 SpringCloud搭建教程 JWT视频教程 JWT官网 Vue视频教程 JWT视频参考资料、VUE视频资料,及前后端demo 特别有参考价值的JWT博客1 特别有参考价值的JWT博客2 cookie、localstorage和sessionStorage的区别1 cookie、localstorage和sessi…...
Go学习第五天
Golang中面向对象类的表示与封装 package mainimport "fmt"// 如果类名首字母大写,表示其他包也能够访问 type Hero struct {// 如果类的属性首字母大写,表示该属性是对外能够访问的,否则的话只能够类的内部访问Name stringAd …...
在vue项目中封装WebSockets请求
在Vue项目中封装WebSocket请求包括以下步骤: 1. 安装WebSocket库:首先,导入WebSocket库,例如vue-native-websocket或socket.io-client。根据项目需求选择适当的库,并根据官方文档进行安装和配置。 2. 创建WebSocket服务…...
Linux进程(二)
文章目录 进程(二)Linux的进程状态R (running)运行态S (sleeping)阻塞状态D (disk sleep)深度睡眠T(stopped)状态X(dead)状态Z&#x…...
使用pg_prewarm缓存PostgreSQL数据库表
pg_prewarm pg_prewarm 直接利用系统缓存的代码,对操作系统发出异步prefetch请求,在应用中,尤其在OLAP的情况下,对于大表的分析等等是非常耗费查询的时间的,而即使我们使用select table的方式,这张表也并不可能将所有…...
LeetCode 28题:找出字符串中第一个匹配项的下标
题目 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 示例 1: 输入:haystac…...
flink+kafka+doris+springboot集成例子
目录 一、例子说明 1.1、概述 1.1、所需环境 1.2、执行流程 二、部署环境 2.1、中间件部署 2.1.1部署kakfa 2.1.1.1 上传解压kafka安装包 2.1.1.2 修改zookeeper.properties 2.1.1.3 修改server.properties 2.1.1.3 启动kafka 2.1.2、部署flink 2.1.2.1 上传解压f…...
ARM裸机-14(S5PV210的时钟系统)
1、时钟系统 1.1、什么是时钟 时钟是同步工作系统的同步节拍 1.2、SoC为什么需要时钟 Soc内部有很多器件,例如CPU、串口、DRAM控制制器、GPIO等内部外设,这些东西要彼此协同工作,需要一个同步的时钟系统来指挥。这个就是我们SoC的时钟系统。…...
Milvus Cloud凭借AI原生,可视化优势荣登全球向量数据库性能排行榜VectorDBBench.com 榜首
在当今的大数据时代,随着人工智能技术的快速发展,向量数据库作为处理大规模数据的关键工具,其性能和效率越来越受到关注。最近,全球向量数据库性能排行榜 VectorDBBench.com 公布了一份最新的评估报告,引人瞩目的是,成立不到一年的新兴公司 Milvus Cloud 凭借其 AI 原生和…...
测试岗?从功能测试进阶自动化测试开发,测试之路不迷茫...
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 测试新人在想什么…...
算法与数据结构(五)--树【1】树与二叉树是什么
一.树的定义 树是一个具有层次结构的集合,是由一个有限集和集合上定义的一种层次结构关系构成的。不同于线性表,树并不是线性的,而是有分支的。 树(Tree)是n(n>0)个结点的有限集。 若n0&…...
打开的idea项目maven不生效
方法一:CtrlshiftA(或者help---->find action), 输入maven, 点击add maven projects,选择本项目中的pom.xml配置文件,等待加载........ 方法二:view->tools windows->mave…...
Python从入门到精通(第18章):魔术方法与数据模型
开头导语 这是本系列第18章。魔术方法(Magic Methods,也称特殊方法或 dunder methods)是 Python 类的灵魂——你用过的 len(my_list)、my_list[0]、for x in obj、print(obj),背后都是魔术方法在驱动。理解魔术方法,你就能理解 Python 的数据模型(Data Model),写出符合…...
bge-large-zh-v1.5在RAG中的应用:sglang快速部署,提升问答准确率
bge-large-zh-v1.5在RAG中的应用:sglang快速部署,提升问答准确率 1. bge-large-zh-v1.5模型概述 bge-large-zh-v1.5是一款专为中文优化的嵌入模型,在检索增强生成(RAG)系统中发挥着关键作用。该模型通过深度学习技术…...
Lenovo Legion Toolkit终极指南:从零开始掌握拯救者笔记本性能调校
Lenovo Legion Toolkit终极指南:从零开始掌握拯救者笔记本性能调校 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit …...
GLM-OCR惊艳效果:竖排+横排混排古籍OCR→自动方向判断+阅读顺序重建
GLM-OCR惊艳效果:竖排横排混排古籍OCR→自动方向判断阅读顺序重建 1. 项目概述与核心能力 GLM-OCR是一个专门为复杂文档理解设计的高性能多模态OCR模型,基于先进的GLM-V编码器-解码器架构构建。这个模型在处理古籍文档时表现出色,特别是能够…...
通义千问1.5-1.8B-Chat-GPTQ-Int4 WebUI 集成Dify实战:构建可视化AI应用工作流
通义千问1.5-1.8B-Chat-GPTQ-Int4 WebUI 集成Dify实战:构建可视化AI应用工作流 你是不是也遇到过这样的场景:手头有一个不错的AI模型,比如部署好的通义千问,想把它变成一个能解决实际业务问题的应用,比如一个智能客服…...
OpenClaw调试技巧:Qwen3-4B任务失败时的5种排查方法
OpenClaw调试技巧:Qwen3-4B任务失败时的5种排查方法 1. 为什么需要关注OpenClaw与Qwen3-4B的调试 上周我尝试用OpenClaw自动化处理一批技术文档,结果任务执行到一半就卡住了。屏幕上那个转圈的小图标仿佛在嘲笑我的天真——原来给AI助手下个指令就能坐…...
Silvaco TCAD实战:从零搭建nmos器件全流程(附Athena操作截图)
Silvaco TCAD实战:从零搭建NMOS器件全流程解析 在半导体工艺仿真领域,掌握TCAD工具就像获得了一把打开微观世界的钥匙。作为行业标准的Silvaco TCAD套件,其Athena模块专门针对工艺仿真而设计,能够精确模拟从硅片清洗到最终器件成型…...
基于SpringBoot + Vue的知识产权管理系统(角色:用户、知识产权人、管理员)
文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言 💛博主介绍&#…...
PHP如何优化冗余代码
在编程中,代码的冗余是一个常见的问题,不仅增加了代码的复杂性,还降低了可读性和可维护性。对于PHP这样的语言来说,减少代码冗余同样重要,尤其是当项目规模变得越来越大时。本文将探讨如何有效地减少PHP代码的冗余&…...
基于OpenCV与霍夫变换的五子棋棋盘状态智能识别
1. 从图像到数字棋盘:五子棋识别的技术脉络 第一次尝试用摄像头识别五子棋棋盘时,我盯着屏幕上歪歪扭扭的检测结果哭笑不得。棋盘边缘像被狗啃过,棋子位置飘忽不定,白棋黑棋傻傻分不清楚——这大概是每个计算机视觉初学者都会经历…...
