智能车结构设计与踩雷

简介: 智能车机械结构设计与踩雷

一些想要说但不好归类的杂项

杂项

  • 我们使用的是单核板,裸机工程。
  • 双核板需要额外时钟同步,可以使用两个IO设置和读取高低电平来进行同步。另外需要自己设计串口通信协议,帧头和帧尾最好设置为功能数据内容不会出现的数据。
  • 电池使用的是2S的航模电池
  • 程序的浮点数运算好像有迷之问题。把浮点运算的结果用串口发到电脑上大概一秒或是几秒就会出现特别大或是特别小的数还有Inf和NAN,还是偶然现象。搞不好是数组越界操作/堆栈溢出程序跑飞/内存溢出访问越界/中断处理错误balabala。但是就连最基本的PID和一阶低通滤波偶尔都会随机出问题,降成int整形就不会出现这种情况。查了大概俩月也没查出问题在哪里,这种随机隐患万一赛场上发生了会很要命,所以把很多运算都降成整形了
  • 陀螺仪大概在比赛前一周不到突然抽风,稳定了好久改都没改的程序读取陀螺仪数据突然就不正常了。出现问题的当天在过了一小段时间之后又突然自己好了,再就没出现过这个问题。正式比赛前高强度跑了完整流程十几次测试稳定性也都没有问题。嗯也是很随机的小概率问题 然后赛场上就又碰到了 并且赛后重新烧程序跑了也没事... 只能说天有不测风云啊
  • math.h中的isnan()isinf()inanf()isinff())可以用来判断浮点数是否是NAN或Inf
  • 遇到单片机跑着跑着就重启,可以试下把固定用的铜柱换成尼龙柱,再换上纸垫片,说不定会有神奇的效果。
  • 不要像我们一样把变量定义拉成一个单独的.c和.h文件,还把所有头文件都放到一起,这个当时是为了解决最开始引用报错的问题,后来发现是工程设置的问题。就还蛮蠢的x
  • 九轴陀螺仪做AHRS(航姿参考系统)解算四元数,测试下来效果在智能车这个室内场景其实不如六轴。磁场传感器受地面影响很大,数据会很飘。
  • 陀螺仪安装最好要减震,不要直接热熔胶胶在底盘上,物理减震比算法处理效果要好些。
  • AHRS姿态解算算法大致分三类:Mahony互补滤波,扩展卡尔曼EKF姿态融合,梯度下降。强烈安利大家试一下梯度下降结算。运算量小并且收敛很快,调整学习率(步长)可以控制解算出的四元数抖动程度,真的很好用!

    Madgwick开源了梯度下降算法,可以下载下来自行验证下算法,并且也开源了互补滤波算法 https://x-io.co.uk/open-source-imu-and-ahrs-algorithms/

  • 比完赛后过一段时间再看自己的程序,还是有不少地方不满意的。比如四个电机结构体写成MortorTypedef_t Mortor[4]会比1-4这样写方便得多;再有就是陀螺仪的处理程序美观性真的挺一般的;还有就是变量和函数命名不是很规范等等等等。

    智能车这份程序是我从大一上实验室招新开始学单片机和C语言,一直写到暑假比赛结束,代码也是逐渐跟着学习进度叠起来的。即使是比完赛后过了不到半个学期再看自己的程序,还是能发现有不少地方蛮不满意的,那就更不用说做车的前辈和学长们了。赛后也想把程序整理下弄得工整和美观一些,不过车已经被下一届的预备役选手拆掉准备明年的比赛了,改完之后的程序也不能再上车验证一下,于是还是开源这份赛后稍加改动的程序吧!还有遗憾的地方就在明年的RoboMaster里完善好了!作用更多是抛砖引玉!

目录
相关文章
|
安全 Ubuntu 关系型数据库
Ubuntu下MySQL无法启动和访问的问题解决与修复
Ubuntu下MySQL无法启动和访问的问题解决与修复
1893 1
Ubuntu下MySQL无法启动和访问的问题解决与修复
|
JSON 缓存 Android开发
iOS高质量的动画实现解决方案——Lottie
iOS高质量的动画实现解决方案——Lottie
1405 0
|
存储 缓存 Android开发
Android系统分区与升级
Android系统分区与升级
402 4
|
API C# Windows
LabVIEW​​共享​变量生命周期
LabVIEW​​共享​变量生命周期
188 1
|
存储 缓存 算法
[译] OpenSSL 3.0.0 设计
本文翻译 OpenSSL 官网文档:https://www.openssl.org/docs/OpenSSL300Design.htmlTongsuo-8.4.0 是基于 OpenSSL-3.0.3 开发,所以本文对 Tongsuo 开发者同样适用,内容丰富,值得一读!介绍本文概述了 OpenSSL 3.0 的设计,这是在 1.1.1 版本之后的 OpenSSL 的下一个版本。假设读者熟悉名为 &
464 0
[译] OpenSSL 3.0.0 设计
|
消息中间件 存储 NoSQL
面试题解析:如何解决分布式秒杀系统中的库存超卖问题?
面试题解析:如何解决分布式秒杀系统中的库存超卖问题?
938 0
|
人工智能 运维 监控
医院后勤管理智慧化转型思考
医院后勤管理工作是医院正常运行的基础保障,是医疗服务能力的重要组成部分,也是患者满意度的重要考量指标。随着医院建设规模的不断扩大和品质的提升,医疗设备和后勤保障设施设备数量逐渐增加,并且智能化水平越来越高,给医院后勤管理带来了一定的挑战。在此背景下,构建一个集网络化、信息化、智能化为一体的智慧运维平台,对医院的安全高效运行具有重要意义。
310 1
|
存储 并行计算 算法
FlashAttention算法详解
这篇文章的目的是详细的解释Flash Attention,为什么要解释FlashAttention呢?因为FlashAttention 是一种重新排序注意力计算的算法,它无需任何近似即可加速注意力计算并减少内存占用。所以作为目前LLM的模型加速它是一个非常好的解决方案,本文介绍经典的V1版本,最新的V2做了其他优化我们这里暂时不介绍。因为V1版的FlashAttention号称可以提速5-10倍,所以我们来研究一下它到底是怎么实现的。
990 0
|
机器学习/深度学习 TensorFlow 算法框架/工具
Python 智能项目:1~5(4)
Python 智能项目:1~5(4)
213 0
|
Linux Shell 开发工具
Git 安装和配置教程:Windows - Mac - Linux 三平台详细图文教程,带你一次性搞 Git 环境
Git是一款免费、开源的分布式版本控制系统,广泛应用于软件开发领域。随着开源和云计算的发展,Git已经成为了开发者必备的工具之一。本文将为大家介绍Git在Windows、Mac和Linux三个平台上的安装和配置方法,带你一次性搞定Git环境
4293 0