四轴飞行器PID调试一周总结

2023-05-16

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

  Arduino  + XXD 电调 +1000KV电机、 使用PID来调节稳定性,今天上午终于调节 x,y轴稳定。 回想遇到的问题,真的是试出来的值。

    PID算法很简单,写的话不需要10分钟就能写出来,不过要想找对P,I,D三个参数的值 运气好的话自不用说,运气不好调一个月都不一定能调稳。 使用MPU6050调试,在室内是一个轴一个轴地调试,就是架在凳子上,让一个轴能够自由旋转,类似下面这样

                                  

  使用欧拉角来调节PID三个参数,一开始遇到一个这个问题,就是当我设定值为0度的时候也就是水平放置的时候表现的还算可以,一直小幅震荡,也没有太大发散的现象,可是当我设定值不是0度而是偏转一定角度的时候就表现的啥也不是。  导致这个问题的原因是: 我的油门太小了,。。 因为一开始调的时候扇叶转的很快,不敢将油门加大,只用了 1100的油门(满量程是1900,就是程序中的占空比),油门太小导致飞行器还没有摆脱重力的影响,所以根本都不可能调对。这是放不开的第一个地方。


    接下来的时候我们就将基础油门加大了,至少可以摆脱重力的影响了,然后又是几天的P、I、D参数整定。

   先调P,如果能摆到平衡位置而且还发散震荡 ,说明P调大了,缩小一些,缩小到能够小幅等幅震荡为止 , 这里给大家说个小技巧,就是先用手将轴转到大约设定的角度,看看轴是不是小幅等幅震荡,如果小幅震荡说明P调好了,反之,如果轴转的过猛,太大了,如果力度感觉不足,那就是太小了 。  这个时候我们肯定不能要求快速性和静态误差。

   静态误差的消除,调I。  P调的可以了,就缓慢增加 I ,我们的I都是0.01的增加,具体的做法是I先加一个比较大的值,这个时候四轴反应跟吃x药一样剧烈,然后再缓慢缩小,直到四轴开始平静下来,关于平静下来我也没有一个标准,当然如果你降低的过程中能够快速摆到平衡位置而且还不震荡不超调那说明你走运了。不走运的做法是,I往下降的时候能够等幅震荡,即使这个等幅震荡的幅度还是很大只要能够等幅震荡就可以了,反正只要不发散就已经可以了,等不等幅都是主观感应,也不需要太准,毕竟人又不是仪器。

    上面两个参数调好了已经很不容易了,然后开始调D (有的开源飞控都不需要D啊,但是对于我们粗略调试来说不用D上面两个值简直就是没法用)。 刚开始调D,惯例又是没放开,因为调P,调I的时候得出的经验是我能预计到正切值的范围肯定在这附近。但是D完全不是这一回事啊,我一次 +1 +5 +10 仍然有震荡,而且快速性根本不好地说,调平稳需要5~10s !!  直到我都怀疑程序写错算法不对了,然后又是查资料又是开别人的飞控。看了匿名飞控,蔡大代码的PID部分之后发现,那几行核心代码都大差不差啊,为什么就是不行呢! 直到今天早上吧,放开了又调了一次,D生生被我加到了200  -)_(-   ,稳了!  曲线大概是这个样子


  

  上升时间不超过 0.5s 而且还能稳定在设定值那里,达到了网上成熟的飞控平稳效果。 

  

    PID算法本身而言很简单,背后的理论虽然都在课堂上交给老师了,但在用起来这么爽之后反而激发了自己的求知欲望。  PID核心算法摘自维基,如下伪代码

 

previous_error = 0
integral = 0
start:
   error = setpoint - measured_value
   integral = integral + error*dt
   derivative = (error - previous_error)/dt
   output = Kp*error + Ki*integral + Kd*derivative
   previous_error = error
   wait(dt)
   goto start

  

   总结除了关键的地方就是被一些潜在的意识所束缚,调试飞行器的过程中理论分析也是必不可少。



转载于:https://my.oschina.net/000quanwei/blog/484598

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

四轴飞行器PID调试一周总结 的相关文章

  • keil5c语言定义引脚,keil编写C程序是不是不能在函数内定义变量啊,求大神

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 肯定可以的 xff1a 比如 程序动态显示字符 显示光标和光标闪烁打开效果 include 包含头文件 xff0c 义 include sbit RS 61 P2 4 定义端口 sbit RW
  • CircleProgressBar

    今天又写了一个demo xff0c 带有两个进度值的 圆环进度条 xff0c 原谅我是个小白 xff0c 只能写一写简单的自定义控件 xff0c 我会继续努力的 先看效果图 001 gif lt pre gt 64 Override pro
  • c++采集声卡输出_手机直播声卡转换器的分析与选购

    时下直播行业非常火爆 xff0c 相关周边产品五花八门 xff0c 良莠不齐 今天为大家带来的这篇长文 xff0c 旨在为选购设备苦恼的朋友提供帮助 闲话少叙 xff0c 开始正题 目前大家的使用的直播设备基本分为以下两种形式 xff1a
  • awk的使用及字符串的操作

    awk教程 awk的基本功能是对文件进行指定规则浏览和抽取信息 基本格式 xff1a 1 awk F 分隔域 39 command 39 input file s 2 写入shell脚本中 3 awk f awk script file i
  • VS2017安装后如何移动 Windows Kits文件夹

    MS的回答 LINK Try the following technique Close all programs move the Windows Kits folder to another disk for example to D
  • pytorch GPU的程序kill后未释放内存

    使用PyTorch设置多线程 xff08 threads xff09 进行数据读取 xff08 DataLoader xff09 xff0c 其实是假的多线程 xff0c 他是开了N个子进程 xff08 PID都连着 xff09 进行模拟多
  • 一个「学渣」从零Web前端自学之路

    从 13 年专科毕业开始 xff0c 一路跌跌撞撞走了很多弯路 xff0c 做过餐厅服务员 xff0c 进过工厂干过流水线 xff0c 做过客服 xff0c 干过电话销售可以说经历相当的 丰富 最后的机缘巧合下 xff0c 走上了前端开发之
  • 请求时token过期自动刷新token

    1 在开发过程中 xff0c 我们都会接触到token xff0c token的作用是什么呢 xff1f 主要的作用就是为了安全 xff0c 用户登陆时 xff0c 服务器会随机生成一个有时效性的token 用户的每一次请求都需要携带上to
  • Lua Table 长度的计算

    计算 Lua 的 Table长度 在 Lua 中 xff0c 我们可以通过这个符号 来计算字符串的长度和一个table的长度 xff0c 比如 xff1a str 61 34 I 39 am a string 34 print str 61
  • Mybatis-Plus 之BaseMapper 方法详解

    为什么80 的码农都做不了架构师 xff1f gt gt gt Mapper 继承该接口后 xff0c 无需编写 mapper xml 文件 xff0c 即可获得CRUD功能 这个 Mapper 支持 id 泛型 64 author hub
  • mac上面查看路由表

    为什么80 的码农都做不了架构师 xff1f gt gt gt 问题 本来想使用linux上面的命令route n查看mac上面的路由表的 xff0c 结果显示mac上面的route命令不是这样玩的 解决 netstat nr Mac上面需
  • el-select使用方法及遇到数据回显的坑

    2019独角兽企业重金招聘Python工程师标准 gt gt gt lt el select v model 61 34 temp lang 34 class 61 34 filter item 34 placeholder 61 34 P
  • 中国电话号码格式

    中国区号 086 北京区号010 我的电话123456 填在表格上应该如何填写呢 xff1f 手机号码应该如何填写呢 xff1f xff1f 00就不必写了 xff0c 写 43 就好了 xff0c 不同的国家国际接入的号不太一样的 xff
  • 【Quick-Cocos2d-x笔记】【一】Mac环境及相关配置

    本来是老老实实的想 xff0c 一心一意的先把C 43 43 学好 xff0c 在觉得自己C 43 43 水平还是菜鸟级的时候不要去动其他的东西 但自上次面试回来时候 xff0c 觉得这样不行啊 xff0c 虽然说现在从事的是C 43 43
  • matlab练习程序(粒子群优化PSO)

    算法没有和图像处理直接相关 xff0c 不过对于图像分类中的模式识别相关算法 xff0c 也许会用到这个优化算法 算法步骤 xff1a 1 首先确定粒子个数与迭代次数 2 对每个粒子随机初始化位置与速度 3 采用如下公式更新每个粒子的位置与
  • 您需要来自administrators的权限才能对此文件进行更改

    今天我重装了系统 xff0c 以前D盘里的一个文件夹想删除 xff0c 可以一直没法删除 xff0c 原先它提示 您需要来自 S 1 5 21 602162358 1284227242 682003330 500 的权限才能对此文件夹 xf
  • ***JAVA多线程的应用场景和应用目的举例

    多线程使用的主要目的在于 xff1a 1 吞吐量 xff1a 你做WEB xff0c 容器帮你做了多线程 xff0c 但是他只能帮你做请求层面的 简单的说 xff0c 可能就是一个请求一个线程 或多个请求一个线程 如果是单线程 xff0c
  • Kafka遇到30042ms has passed since batch creation plus linger time at org.apache.kafka.clients.producer...

    问题描述 xff1a 运行生产者线程的时候显示如下错误信息 xff1a Expiring 1 record s for XXX 0 30042 ms has passed since batch creation plus linger t
  • tcpdump -w 和 -r 的使用

    tcpdump的说明文档是这样的 xff1a w 将原始的信息包写入 形式如 tcpdump w tmp result txt 我今天试了一下 xff0c 发现其写成的文件如果用cat vim来查看的话 xff0c 都显示为乱码 经过man
  • 如何用Go访问深层嵌套的JSON数据?

    原文来自https hashnode com post how 大多数情况下 xff0c 开发人员需要使用来自其他服务的JSON数据并对其进行查询 查询JSON文档非常耗时 在过去的几天里 xff0c 我正在为Golang编写一个包 xff

随机推荐

  • Identity Card

    Identity Card Time Limit 2000 1000 MS Java Others Memory Limit 32768 32768 K Java Others Total Submission s 995 Accepted
  • 华为S5700交换机开启WEB配置

    近来很多朋友问关于S5700开启WEB不成功的问题 xff0c 现整理出具体步骤和命令 提示 xff1a 华为交换机配置时 xff0c 输入命令前几个字母 xff0c 按TAB可以自动补全命令 xff0c 比如在系统视图下输入sh按下TAB
  • 托管堆上对象的大小(Size)和Layout

    前几天 xff0c 我介绍了托管环境下struct实例的Layout和Size xff0c 其中介绍了StructLayoutAttribute特性 xff0c 其实StructLayoutAttribute特性不只可以用在struct上
  • 网上十大黑客软件大曝光

    网上十大黑客软件大曝光 Internet网上的黑客网站多如牛毛 xff0c 黑客软件也越来越多 越来越黑 笔者现将这些黑客软件分门别类地曝一曝光 xff0c 并提出相应的解决方案 xff0c 以防患于未然 一 古老的WinNuke 平台 x
  • C# DataSet和DataTable详解[转]

    1 创建DataSet对象 xff1a DataSet ds 61 new DataSet 34 DataSetName 34 2 查看调用SqlDataAdapter Fill创建的结构 da Fill ds 34 Orders 34 D
  • 【Python】爬取网站图片

    import requests import bs4 import urllib request import urllib import os hdr 61 39 User Agent 39 39 Mozilla 5 0 X11 Linu
  • 纯C++实现的HTTP请求(POST/GET)

    纯C 43 43 实现的HTTP请求 xff08 POST GET xff09 xff0c 支持windows和linux xff0c 进行简单的封装 xff0c 方便调用 实现如下 xff1a include 34 HttpConnect
  • python subprocess执行shell命令

    2019独角兽企业重金招聘Python工程师标准 gt gt gt subprocess的目的就是启动一个新的进程并且与之通信 subprocess模块中只定义了一个类 Popen 可以使用Popen来创建进程 xff0c 并与进程进行复杂
  • HDTV片源

    微软的 点击进入 苹果 quicktime下载 点击进入 国内一个网站 不过收费 电击进入 还有思路 转载于 https blog 51cto com wangjian 1420
  • Onvif鉴权实现方式

    Onvif鉴权实现方式 Digest 61 B64ENCODE SHA1 B64DECODE Nonce 43 Date 43 Password gsoap中digest生成代码 xff1a int soap wsse add Userna
  • 一文搞定Java并发编程面试考点

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 在java中守护线程和本地线程区别 xff1f java中的线程分为两种 xff1a 守护线程 xff08 Daemon xff09 和用户线程 xff08 User
  • 数据结构c语言版创建链表实验报告,C语言数据结构-创建链表的四种方法

    结点类型 xff1a typedef int datatype typedef struct NODE datatype data struct NODE next Node LinkList 1 不带头结点的头插入法创建链表 每创建一个结
  • syslog-ng

    syslog ng配置 March 13th 2012 绚丽也尘埃 Leave a comment Go to comments syslog ng的配置非常简单直观 xff0c 于是乎配置好看看怎么用它实时收集日志 有两台服务器 xff0
  • CMAKE总结(1) .lib .dll .a .so libx.dll libx.dll.a

    2019独角兽企业重金招聘Python工程师标准 gt gt gt win 对应 linux lib a dll 注 so 注 xff1a win中若使用 dll需要一个附带的引入库 lib win gcc中若使用 dll需要一个附带的因入
  • curl命令详解

    cURL 1 手册页 名称 cURL transfer a URL 摘要 cURL 选项 URL 描述 cURL 是一个向服务器或从服务器传输数据的工具 xff0c 它支持HTTP HTTPS FTP FTPS SCP SFTP TFTP
  • curl命令常见用法汇总 good

    curl是一种命令行工具 xff0c 作用是发出网络请求 xff0c 然后得到和提取数据 xff0c 显示在 34 标准输出 34 xff08 stdout xff09 上面 curl是一个强大的命令行工具 xff0c 它可以通过网络将信息
  • Linux编程之select

    select系统调用的的用途是 xff1a 在一段指定的时间内 xff0c 监听用户感兴趣的文件描述符上可读 可写和异常等事件 select 机制的优势 为什么会出现select模型 xff1f 先看一下下面的这句代码 xff1a int
  • DIGEST认证

    为了弥补BASIC认证存在的弱点 xff0c 从HTTP 1 1起就有了DIGEST认证 DIGEST认证同样使用质询 响应的方式 xff08 challenge response xff09 但不会像BASIC认证那样直接发送明文密码 所
  • Linux下搭建一个简单的UDP通信

    基础知识 UDP和TCP的区别 xff1a 1 TCP是面向连接的 xff0c 而UDP是非面向连接的 xff0c 因此TCP更可靠 2 UDP的server端的socket不需要监听 3 二者的server端都需要绑定 代码实现 xff1
  • 四轴飞行器PID调试一周总结

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Arduino 43 XXD 电调 43 1000KV电机 使用PID来调节稳定性 xff0c 今天上午终于调节 x y轴稳定 回想遇到的问题 xff0c 真的是试出来的值