搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
代码探险家
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
springboot整合ueditor,图片上传及视频上传(后端)_ueditor怎么开启上传视频功能
2
Elcker-npm,yarn,pnpm的本地配置_pnpm 设置本地仓库
3
Kindling协议开发流程 - Dubbo2 协议开发流程_kindling结构
4
pandas 读取excel文件_pandas读取excel
5
Qt 之数据库QSqlite应用_qsqlquery 排序
6
ROS | Ubuntu18手动安装ROS-Melodic_ubuntu18 ros melodic 安装
7
关于实现控件突出父布局_android 组件中某个组件突出
8
Java-JVM-安全点SafePoint_java中什么是安全点
9
推荐使用:workers - 极简部署的Cloudflare Workers HTTP服务器框架
10
java调用海康威视SDK实现车牌识别_海康威视车牌识别sdk
当前位置:
article
> 正文
平衡小车_平衡小车 轨迹运动
作者:代码探险家 | 2024-08-10 03:19:52
赞
踩
平衡小车 轨迹运动
前几天一直在整平衡小车,想用这个理解一下pid,并调一调带编码盘的电机。
首先谈谈我对pid算法的理解,刚开始以为平衡小车是采取的串级pid来是小车平衡,就是通过角度算出此时的pwm,在通过这个pwm去当作速度环的入口参数,通过编码盘来获取小车的速度控制小车由角度环指定速度下行驶。但通过实践并不是这样,速度环和角度环应该是两个独立的系统,角度环用来让小车快速的恢复到平衡状态,如果初始化陀螺仪时陀螺仪的角度正好重力重合,那么你的小车就会平衡,否则就会向一个方向加速,只至倒下,加上速度环就会解决这一问题,速度环是为了消除小车的位移,让小车能够在一定的位移范围内调整角度,如果下车像一个方向一直加速,那么速度环累计的位移就会越来越大最后达到一定程度,导致小车减速甚至反向到达以前的位置。
再谈谈角度环的pid公式的理解,角度环的公式是:车轮加速度=小车倾斜角度×kp+小车角速度×kd 。我对他的理解就是 小车倾斜角度×kp 是为了让小车能基本的立起来,而
小车角速度×kd 则是让小车能在突然改变角度的时候能够做出快速的反应增强其稳定性。那么角度环为什么没有积分项呢,我将在最后的总结里讲到。
我们再看看速度环的公式:pwm的修正量(我自己给取得,不用在意叫什么名字)=小车速度×kp+小车位移×ki (我不懂为什么没有微分项)。我对这个公式的理解则是 小车速度×kp 是让小车不会一直加速,要知道速度一快,这个公式计算出来的值就越大,最后用角度环计算出来的值加上这个值就会越大了,就可以将车身摆正了。那么基本上就可以解决角度环一直加速的问题,但是如果小车以一个比较慢的速度一直向一个方向移动(这种情况是有可能出现的)我们是不允许这种情况发生的,所以现在就必须要有积分项小车位移×ki (有大神说ki=kp÷200,我试了,的确很好使) 的作用了这个加上以后就可以消除小车有大的位移这个问题,让小车可以在一个区域内调整姿态。
那么让小车立起来了如何改变方向和速度了。改变速度有两种方式,一是可以通过改变给速度环的的输入部分先给一个偏差,这样速度就会稳定在你给的那个偏差里,还有一种就是你可以给积分项给一个偏差,这样你不动的时候就已经有了积分作用,小车就会向一边偏然后慢慢加速直至小车车轮产生的积分作用能够抵消小车刚开始已有的积分作用,然后小车达到平衡状态,匀速运动(我用的是第二种所以比较清楚)在积分项里还有一个积分限伏,这个是非常重要的如果你不加的话小车可能会因为打滑,而向一边一直加上速,或者你将小车提起来时就会发现,小车会向一边一直加速然后就停不下来了,这是因为速度环是一个正反馈调节的过程,(这点是非常重要的,我刚开始以为是一个负反馈调节的过程结果小车车轮就一动不动,因为它会产生和你运动方向相反的pwm波),你如果明确这个你就会知道积分限伏的重要性,积分限幅就规定了你最大可以倾斜的角度和你的最大速度,所以收这个范围是越大越好,但也不能超过小车的极限,你可以将小车拿起在放下,一直增加这个范围,直到小车会无法调整到平衡状态为止。网上有人说小车重心越高越好,说什么重心高转动惯量越大也好控制,我认为这是错的,重心越高,你的电机能够产生的扭矩就得越大,才能抵消重力的作用,而且我个人认为,重心越低,能够偏转的角度就越大,你小车的最大速度就越大,这是你提高小车速度的最好方法。
小车转弯这个问题其实非常简单,就两行代码的事,你给在前面工作都做完的条件下,让左轮的pwm加上一个值,右轮减去一个值就行了。但要注意的是,你必须使用两个编码盘(前面所有功能只要一个就够)比如说原地打转的时候位移应该是零的但是由于只有一个编码盘,就只计算了一个轮胎的位移导致积分项越加越大。
最后谈谈我对pid的理解:
pid其实就是两种
增量式:pwm =Kp[e(k)-e(k-1)] Ki*e(k) Kd[e(k)-2e(k-1) e(k-2)]
位置式:pwm =Kp*e(k) Ki*∑e(k) Kd[e(k)-e(k-1)]
其他形式的pid只是为了解决积分饱和和让算法更加优化的问题
对于这两种pid的选择网上说增量式pid的执行器件一定要自带积分效果,以下是我在网上找到的两种pid之间的区别。
(1)位置式PID控制的输出与整个过去的状态有关,用到了误差的累加值;而增量式PID的输出只与当前拍和前两拍的误差有关,因此位置式PID控制的累积误差相对更大;
(2 )增量式PID控制输出的是控制量增量,并无积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机等,而位置式PID适用于执行机构不带积分部件的对象,如电液伺服阀。
(3 )由于增量式PID输出的是控制量增量,如果计算机出现故障,误动作影响较小,而执行机构本身有记忆功能,可仍保持原位,不会严重影响系统的工作,而位置式的输出直接对应对象的输出,因此对系统影响较大。
我对位置式pid的理解就是 你要用于改变你需要控制状态的一个值=比例项+积分项+微分项,这三者之间的取舍需要根据实际用途去舍取,积分项是要控制变量偏差的积分比如速度环里面的积分,速度环是为了消除小车一直加速的问题,那么你要控制的就是速度,而速度的积分正是位移,微分项则是你要控制的偏差的微分,角度环控制的是角度,那么其微分则是角速度,这样我们便可以理解为什么角度环没有积分项(角度积分的不出实际的物理意义,而速度微分是加速度,这是我不理解的,加速度不就正是我们要控制的量吗?我们可以将陀螺仪X轴的加速度取出来(其实最好重新安装一个加速度计,尽量低一点)加速度为零,小车就可以静止,或者匀速运动,我觉得加上微分后小车能够更快的加速,和更稳定平衡,我不理解为什么网上众多的代码中都是pi算法)至于参数,你觉得应该调成多大就多大吧
我对增量式pid不是很清楚,增量式pid必须在执行器件自带积分作用的器件,比如步进电机,我还没用增量式pid调过东西,调了在说吧,要是谁有这个方面的资料希望大家能够分享出来啊 o( ̄▽ ̄///)
PID部分只是我个人的看法,有什么问题,大佬们指正哦(⊙o⊙)
我的主页有程序和资料大家可以载了看看哦
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/代码探险家/article/detail/956578
推荐阅读
article
人工智能
python
框架
_一个使用
Python
的
人工智能
聊天
机器人
框架
...
一个
Python
的 AI Chatbot
框架
建立一个聊天室可以听起来很棒,但它是完全可行的。 IKY是一个内置于Pyt...
赞
踩
article
谷歌
的
人工智能
三大布局_
谷歌
人工智能
技术
有
哪些...
谷歌
(Google),总部位于美国加州芒廷维尤的跨国科技公司。
谷歌
的业务范围涵盖互联网广告、互联网搜索、云计算等领域。谷...
赞
踩
article
Eureka
服务
注册
与
服务
发现
实现步骤详解_
eureka
如何
实现
注册
和
发现
...
本文详细介绍了
如何
搭建
Eureka
服务
端,包括添加依赖、配置及启动管理页面。接着,展示了
Eureka
客户端
如何
注册
到
服务
...
赞
踩
article
Java
并发基础(7):锁对象
Lock
、ReadWrite
Lock
_read
lock
().
lock
(...
1、
Lock
Lock
是java.util.concurrent.
lock
s包下的接口,
Lock
实现提供了比使用syn...
赞
踩
article
windows
wsl2
do
c
ker
-
desktop
迁移C盘数据_
do
c
ker
desktop
...
本文档介绍了如何解决C盘空间不足的问题,重点在于分析发现Do
c
ker数据文件
占用
过多,进而详细阐述了如何停止Do
c
ker...
赞
踩
article
Android 8.0
蓝牙
唤醒
Ble 锁屏 保活
后台
持续
扫描
进程拉活 自动
唤醒
_andro...
主要是api的说明,嫌啰嗦的可以直接看demo,demo中有个检测锁屏时间重复开启
扫描
的代码,主要是如果APP没有获得电...
赞
踩
article
人工
智能
知识点
全景图
:
迈向
“
智能
”时代
蓝皮书
(附下载)_
人工
智能
知识点
全景图
:
迈向
智能
+时代
蓝皮书
...
《
人工
智能
知识点
全景图
:
迈向
智能
+时代
蓝皮书
》由中国
人工
智能
学会教育工作委员会主任委员吴飞教授解读,探讨了
人工
智能
历史发...
赞
踩
article
Comfyui
更换
电商
产品背景图:
工作
流
就是
生产力
!_
comfyui
电商
工作
流
...
在当今这个快节奏的
电商
时代,视觉吸引力对于在线销售至关重要。
Comfyui
工作
流
,作为一款先进的图像生成工具,它提供了一...
赞
踩
article
第二章
Eureka
服务
注册与
发现
_
python
eureka
服务
发现
yaml
文件...
本文介绍了
Eureka
服务
注册与
发现
的核心概念,包括
服务
治理、CS架构、
Eureka
Server与Client的角色,以...
赞
踩
article
docker
拉取镜像出现报错:
Using
default
tag:
latest
Trying
to...
本文主要介绍的是在
docker
拉取镜像时出现的报错,一般都是由于拉取的仓库是国外仓库,拉取太慢而报错的。_using d...
赞
踩
article
AI
人工智能
在2020年
的
7个发展趋势_
aiscratch
手机自动化功能
的
市场趋势
...
随着对其他
AI
应用程序需求
的
增长,企业将需要投资有助于其加快数据科学流程
的
技术。然而:实施和优化机器学习模型只是数据科学...
赞
踩
article
申请
CloudFlare
免费
DNS
服务_
cloudflare
免费
域名
...
注册地址:https://dash.
cloudflare
.com/sign-up添加网站
域名
:选择Free款服务:可以看...
赞
踩
article
Zookeeper
-
Zookeeper
leader
选举...
在上一篇文章中我们大致浏览了zookeeper的启动过程,并且提到在
Zookeeper
的启动过程中
leader
选举是非常...
赞
踩
article
Android
子线程
使用
ble
,
Android
Bluetooth
使用
总结...
本文详细介绍了经典蓝牙和BLE低功耗蓝牙的
使用
流程,包括如何获取蓝牙适配器、开启蓝牙、扫描蓝牙设备以及连接和通信的方法。...
赞
踩
article
两个
数据库
比较
对比
视图
存储
过程
及表结构差异
_
存储
过程
修改前后如何
对比
...
https://blog.csdn.net/shiershilian/article/details/72236407?...
赞
踩
article
SD
-
AI
大模型
的
安装
...
找到解压之后
的
压缩包内
的
启动器,双击打开,然后一键启动即可,启动可能需要一点时间,启动成功之后,会自动在默认浏览器打开网...
赞
踩
article
统信
UOS_麒麟
KYLINOS
上创建
GPT
分区
_
统信
服务器给磁盘新增一个
分区
怎么
操作
...
hello,大家好啊!今天我要给大家带来的是在
统信
UOS及麒麟
KYLINOS
操作
系统上创建
GPT
(GUID Partit...
赞
踩
article
python
字典
dict
详解_
python
dict
添加...
别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。我先来介绍一下这些东西怎么用,文末抱走...
赞
踩
article
oracle
之 手动
建库
...
1、-- 查看服务器 ORA 环境变量情况[
oracle
@orastb ~]$ env|grep ORAORACLE_B...
赞
踩
article
python
表白
代码
-
python
炫酷
烟花
表白源
代码
...
天天敲
代码
的朋友,有没有想过
代码
也可以变得很酷炫又浪漫?今天就教大家用Python模拟出绽放的
烟花
,工作之余也可以随时让...
赞
踩
相关标签
人工智能python框架
人工智能
数据挖掘
eureka
服务发现
java
windows
docker
wsl
蓝牙
锁屏蓝牙扫描
蓝牙扫描
后台唤醒
蓝牙唤醒
大数据
机器学习
stable diffusion
计算机视觉
AIGC
课程设计
云原生
容器
运维
搭建网站
域名