当前位置: 首页 > news >正文

网站服务器安全防护wordpress 游客也可以上传附件

网站服务器安全防护,wordpress 游客也可以上传附件,旧货交易网站开发的背景,注册城乡规划师是干什么的STM32F1 本教程使用零知标准板#xff08;STM32F103RBT6#xff09;通过I2C驱动ICM20948九轴传感器#xff0c;实现姿态解算#xff0c;并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化#xff0c;适合嵌入式及物联网开发者。在基础驱动上新增…STM32F1 本教程使用零知标准板STM32F103RBT6通过I2C驱动ICM20948九轴传感器实现姿态解算并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化适合嵌入式及物联网开发者。在基础驱动上新增滤波参数优化重点解决yaw值漂移问题提供完整的参数调优方案和效果对比。 目录 STM32F1 一、硬件准备 二、软件环境搭建 三、核心代码实现 四、VOFA上位机配置 五、滤波参数优化与动态效果对比 六、效果演示 七、 效果验证与结论 一、硬件准备 1.硬件清单 零知标准板主控STM32F103RBT6 ICM20948九轴传感器模块 USB转串口模块用于调试和数据传输 杜邦线若干 2.接线方式 ICM20948引脚零知开发板引脚VCC3.3VGNDGNDSDAA4SCLA5 硬件连接图 连接实物图  注意确保I2C引脚正确避免接反导致芯片损坏。 二、软件环境搭建 开发环境 零知 IDE 零知开发板支持包 所需库文件: AHRSAlgorithms.cpp姿态解算库       ICM20948.cpp传感器驱动库 库文件关键功能 AHRSAlgorithms.cpp Madgwick/Mahony滤波算法                 四元数实时输出 getQ()                 参数可调Kp、Ki、beta ICM20948.cpp I2C通信底层驱动                 自动量程配置加速度计±2/4/8/16g陀螺仪±250/500/1000/2000dps                 磁力计初始化 initAK09916()                 校准函数 calibrateICM20948() 三、核心代码实现 主程序框架  (ICM20948_VOFA.ino) /* ICM20948完整优化代码 */ #include AHRSAlgorithms.h #include ICM20948.h#define AHRS true #define SerialDebug true int myLed LED_BUILTIN; ICM20948 myIMU;void setup() {pinMode(myLed, OUTPUT);digitalWrite(myLed, HIGH);Serial.begin(115200);Wire.begin();// 初始化与自检if(myIMU.begin()) {Serial.println(ICM20948初始化成功);// 执行两级校准myIMU.calibrateICM20948(myIMU.gyroBias, myIMU.accelBias);float magBias[3], magScale[3];myIMU.magCalICM20948(magBias, magScale);// 设置优化分辨率myIMU.getAres(); myIMU.getGres();myIMU.getMres();} else {Serial.println(传感器初始化失败!);while(1);} }void loop() {// 数据读取if (myIMU.readByte(ICM20948_ADDRESS, INT_STATUS_1) 0x01) {myIMU.readAccelData(myIMU.accelCount);myIMU.readGyroData(myIMU.gyroCount);myIMU.readMagData(myIMU.magCount);// 单位转换myIMU.ax (float)myIMU.accelCount[0] * myIMU.aRes;myIMU.ay (float)myIMU.accelCount[1] * myIMU.aRes;myIMU.az (float)myIMU.accelCount[2] * myIMU.aRes;myIMU.gx (float)myIMU.gyroCount[0] * myIMU.gRes;myIMU.gy (float)myIMU.gyroCount[1] * myIMU.gRes;myIMU.gz (float)myIMU.gyroCount[2] * myIMU.gRes;myIMU.mx (float)myIMU.magCount[0] * myIMU.mRes - myIMU.magBias[0];myIMU.my (float)myIMU.magCount[1] * myIMU.mRes - myIMU.magBias[1];myIMU.mz (float)myIMU.magCount[2] * myIMU.mRes - myIMU.magBias[2];}// 更新时间基准myIMU.updateTime();// 姿态解算使用优化参数MahonyQuaternionUpdate(myIMU.ax, myIMU.ay, myIMU.az,myIMU.gx * DEG_TO_RAD, myIMU.gy * DEG_TO_RAD,myIMU.gz * DEG_TO_RAD,myIMU.my, myIMU.mx, myIMU.mz, // 轴序修正myIMU.deltat);// 转换为欧拉角const float* q getQ();myIMU.yaw atan2(2.0f*(q[1]*q[2] q[0]*q[3]), q[0]*q[0] q[1]*q[1] - q[2]*q[2] - q[3]*q[3]) * RAD_TO_DEG;myIMU.pitch -asin(2.0f*(q[1]*q[3] - q[0]*q[2])) * RAD_TO_DEG;myIMU.roll atan2(2.0f*(q[0]*q[1] q[2]*q[3]),q[0]*q[0] - q[1]*q[1] - q[2]*q[2] q[3]*q[3]) * RAD_TO_DEG;// 发送到VOFASerial.print(myIMU.yaw, 1); // yawSerial.print(,);Serial.print(myIMU.pitch, 1); // pitchSerial.print(,);Serial.println(myIMU.roll, 1);// rolldelay(10); // 100Hz输出 } 关键配置修改 在 ICM20948.cpp 中调整量程根据应用需求 // 加速度计量程 (AFS_2G/AFS_4G/AFS_8G/AFS_16G) void ICM20948::getAres() {switch (Ascale){// Possible accelerometer scales (and their register bit settings) are:// 2 Gs (00), 4 Gs (01), 8 Gs (10), and 16 Gs (11).// Heres a bit of an algorith to calculate DPS/(ADC tick) based on that// 2-bit value:case AFS_2G:aRes 2.0f / 32768.0f;break;case AFS_4G:aRes 4.0f / 32768.0f;break;case AFS_8G:aRes 8.0f / 32768.0f;break;case AFS_16G:aRes 16.0f / 32768.0f;break;} }// 陀螺仪量程 (GFS_250DPS/GFS_500DPS/GFS_1000DPS/GFS_2000DPS) void ICM20948::getGres() {switch (Gscale){// Possible gyro scales (and their register bit settings) are:// 250 DPS (00), 500 DPS (01), 1000 DPS (10), and 2000 DPS (11).// Heres a bit of an algorith to calculate DPS/(ADC tick) based on that// 2-bit value:case GFS_250DPS:gRes 250.0f / 32768.0f;break;case GFS_500DPS:gRes 500.0f / 32768.0f;break;case GFS_1000DPS:gRes 1000.0f / 32768.0f;break;case GFS_2000DPS:gRes 2000.0f / 32768.0f;break;} } 四、VOFA上位机配置 数据协议设置 选择 FireWater 协议 格式q0, q1, q2逗号分隔换行符 波特率115200 控件添加 3D立方体显示实时姿态、绑定四元数数据通道、设置模型缩放比例 波形图各轴角速度/加速度 仪表盘显示偏航角Yaw 界面效果 实时显示传感器3D姿态及运动波形 五、滤波参数优化与动态效果对比 1.传感器校准 float gyroBias[3], accelBias[3]; IMU.calibrateICM20948(gyroBias, accelBias); // 上电时执行一次 2.问题现象 使用默认参数(Kp10.0, Ki0.0)时VOFA显示yaw值持续漂移约2-5°/s动态运动时零漂明显 3.优化方案 在AHRSAlgorithms.h中调整Mahony滤波参数 // 原参数漂移明显 // #define Kp 2.0f * 5.0f // #define Ki 0.0f// 优化参数大幅改善漂移 #define Kp 3.0f // 降低比例增益减少高频噪声响应 #define Ki 0.1f // 降低积分增益抑制累积误差 效果对比 参数状态Yaw漂移率VOFA动态表现默认(Kp10f,Ki0.0f)2-5°/s静止时缓慢旋转运动后复位慢优化(Kp3.0f,Ki0.1f)0.5°/s静止稳定运动后快速收敛 4.优化后效果 参数调整原理 Kp过高对加速度计噪声敏感导致高频抖动 Ki过高积分累积误差引起零漂 黄金比例Kp/Ki ≈ 20-30 时平衡动态响应与稳定性 六、效果演示 静态测试 传感器平放时VOFA显示俯仰角/横滚角接近0° Z轴加速度≈9.8 m/s² 动态测试 旋转开发板3D模型同步跟随 快速晃动时波形图显示各轴加速度变化 ICM20948九轴传感器动态测试 输出速率调优 ICM20948原始数据输出率约100Hz(10ms/次) 当delt_t60ms时姿态解算循环(16.7Hz)与传感器更新周期不同步 导致部分数据帧被重复使用或跳过 完整工程代码 百度网盘获取完整工程文件链接如下: 零知标准板驱动ICM20948项目工程https://pan.baidu.com/s/11tr8XJvNrNernqwK1zA9Mw?pwdpbxd  七、 效果验证与结论 测试结果 指标优化前优化后静态yaw漂移2-5°/s0.5°/s动态收敛时间3s1s高温稳定性漂移增加300%漂移增加50% 结论 通过调整Kp/Ki比例可有效抑制yaw漂移磁力计轴序修正提升方位角精度VOFA可视化提供直观参数调优依据三阶段校准确保全温度范围稳定性 ✔(●◡●) 有关本篇博客的任何问题、或者任何想法和建议等欢迎您在底部评论区留言一起交流~ 零知开源是一个真正属于国人自己的开源软硬件平台在开发效率上超越了Arduino平台并且更加容易上手大大降低了开发难度。 零知开源在软件方面提供了完整的学习教程和丰富示例代码让不懂程序的工程师也能非常轻而易举的搭建电路来创作产品测试产品。快来动手试试吧 www.lingzhilab.com
http://www.zqtcl.cn/news/131587/

相关文章:

  • 百度网站建设工资给城市建设提议献策的网站
  • 如何进入网站管理页面维护网站需要多少钱
  • 深圳住房和城乡建设局网站阿里云学生免费服务器
  • 如何做的网站手机可以用吗绵阳优化网站排名
  • 营销网站建设大全wordpress wp_register
  • 公司做年审在哪个网站网络seo专员招聘
  • 宿州网站建设费用网站快速建设入门教程
  • 怎么自己做网站加盟网站建设意义模板
  • 网站开发怎样实现上传视频教程内容导购网站模板
  • 济南做网站建设的公司广告公司资质
  • 域名分类网站微擎 wordpress
  • 公司产品营销策划安徽seo
  • 网站 平均加载时间百度搜索竞价推广
  • 赛车网站开发淄博网站建设及托管
  • 过时的网站湖州公司网站建设
  • 环球设计网站网站建设的面试要求
  • 百度公司网站排名怎么做潮阳网站开发
  • 杨和网站建设国内外建筑设计网站
  • 北京知名网站建设公司wordpress4.0.x 下载
  • 锡盟网站建设做网站视频存储
  • 深圳博纳网站建设高端品牌护肤品排行榜
  • 百度爱采购优化排名软件宁波seo搜索平台推广专业
  • 门户网站的建设公司台山网站定制
  • 建设公司网站需要什么群辉nas怎么做网站
  • 广西自治区集约化网站建设要求坂田网站的建设
  • 网站后台不能编辑企业如何申请网站
  • 网站建设网站设计多少钱网站系统开发方式
  • 站长收录wordpress配置好后别人无法访问
  • 我国档案网站建设吉林网站建设制作
  • 手机网站底部导航网站视频链接怎么做