面向低成本线跟随机器人的PID控制器优化——文末源码

目录

介绍

测试

电子元器件

系统特征

控制器设计

位置误差的计算

比例控制

积分控制

微分控制

改进的PID控制器

测试轨迹

源码链接


本文对经典PID控制器的改进和开环控制机制的发展进行了讨论,以提高差动轮式机器人的稳定性和鲁棒性。为了部署该算法,使用低成本、现成的组件,包括微控制器、反射率传感器和电机驱动器,构建了一个测试平台。本文描述了用于辨识系统特性以及优化控制器的启发式方法。对PID控制器进行了详细的分析,并在稳定性的背景下对各项的作用进行了说明。最后,讨论了控制器和机器人开发过程中遇到的挑战。代码在文末。

介绍

导航是机器人应用中必不可少的一部分。要完成特定的任务,机器人遵循特定的路径是至关重要的。在高级应用中,机器人配备了先进的传感器,如深度相机、雷达和激光雷达,以增强感知能力。这些传感器的可用性使开发更复杂和高保真度的定位和地图算法成为可能。然而,这些传感器价格昂贵。某些需要在相对固定的环境中进行重复运动的任务,可以通过具有成本效益的应用来完成。例如,只有一个反射传感器阵列的直线跟踪机器人,可以用来承载工厂中从一点到另一点的特定负载。然而,增加积分增益会引起超调。由此产生的超调会导致系统表现出不稳定的行为。微分控制器的主要作用是减小超调量和加快瞬态响应速度。它可以被认为是一种检测系统中未来错误的机制。由于积分控制以超调量为代价来最小化稳态误差,因此可以使用导数控制来最小化超调量,以增加系统的鲁棒性。然而,微分控制器由于微分放大了高频信号,在噪声存在的情况下可能导致系统不稳定。本研究采用PID控制器,开发了一种高速、高保真的线跟踪控制器。

测试

图1显示了在整个研究中使用的两个巡线机器人作为测试平台。采用了两台低成本的6V直流减速电机。电机转速为250转/分,直流输入电压为6 ~ 7 V。由于他们有一个变速箱,他们产生足够的扭矩以获得更快的响应。这些电机的优点之一是成本低,并且可以应用较高的输入电压,以达到较高的RPM值,从而缩短运行时间。直流电机通过使用两个塑料件和两个螺钉固定在机架上。在循迹机器人中,车轮在机器人对路径的搬运中起着重要的作用。为了防止机器人打滑,特别是在急转弯时,需要较高的路面保持性。选择了车轮,以尽量减少打滑和增加机器人的能力。由于最重的部件是电池,所以要进行操作。随着质心越靠近机器人前部,滑移量越大。另一方面,随着质心向后方靠拢,则前方急转直下。因此,质心相对于机架中心已经居中。此外,地面与底盘之间的距离一直保持较短,这也是影响稳定性的另一个方面,尤其是在急转弯时。这样,QTR - 8反射率传感器也变得更容易放置在离地面更近的地方。

图1 巡线机器人的顶视图、侧视图和后视图。

电子元器件

1 )电机驱动:采用具有L298N双全桥驱动器的电机驱动模块来驱动两台直流电机。该电机驱动模块采用13 V直流电压供电。它还具有5 V直流稳压器,用于给STM32供电。该电机有4个输入引脚,通过输入PWM信号来控制电机的旋转方向和转速。输出引脚为直流电机专用,可为每台电机提供最大2 A的电流。电机驱动模块已经安装在机器人前方。

2 )微控制器:为了读取传感器值并驱动直流电机,需要一个微控制器。本研究采用STM32F103C8单片机。系统时钟设置为72 MHz。APB2定时器时钟工作在72 MHz。预分频器为79,计数器周期为999,产生900 Hz的PWM信号。占空比由PID控制器进行自适应调节。微控制器的4个引脚已用于PWM生成。

3 )电池:6节MH Ni充电电池与4节AA碱性电池串联为机器人供电。这样共得到13 V直流输入电压。电池正极端与电机驱动器的12V输入引脚相连。观察到从电机驱动器内部调节器获得5 V输出电压至少需要7 V的输入电压,这样STM32和QTR - 8反射率传感器都能高效工作。系统绘制的电流总值约为1安培。其中很大一部分电流由直流电机消耗。

图2 巡线机器人的电路原理图。

4 )传感器:QTR - 8传感器用于机器人跟随直线。该模块上有8个反射率传感器。这些传感器由红外光发射器、在红外光照射下开关的MOSFET和电容器组成。MOSFET控制电容器的接地。与传感器相对应的8个引脚与STM32的GPIO引脚相连,如图2所示,用于写入和读出操作。在进行读数操作之前,需要对电容器进行充电。为此,在输出模式下将逻辑1写入GPIO端口。如果MOSFET暴露在红外光下,电容与地相连,因此它们被放电。因此,在几毫秒后,GPIO引脚被切换到输入模式。对于特定的传感器,如果读数为逻辑0,则意味着存在反射

图3 系统辨识中使用的单位反馈系统框图。

电容放电所花费的时间,从而降低了传感器的采样率。

系统特征

采用启发式方法来辨识系统特性,而不是使用微分驱动运动学。在实现PID控制器之前,图3所示的统一反馈系统在机器人上进行了实验。在直线为直线的路径中,从非零误差开始,机器人以等量左右摆动。这意味着对于一条直线轨迹,存在零稳态跟踪误差。因此,可以断定该系统在原点至少有一个极点。然后,机器人以非零的位置误差开始放置在轨迹的弯曲区域。观察到系统更多地向曲率的反面振荡。这意味着遵循c存在稳态误差

控制器设计

控制器算法的总体结构如图4所示。首先,从传感器获得读数。基于此读数,得到一个位置信息,使得控制器知道线在哪里。然后,计算误差并反馈给PID控制器,PID控制器控制用于更新电机转速的误差项。然而,在输入新的PWM值之前,开环控制检查传感器是否错过线路。需要开环控制来处理测试轨迹中的拐角。这也提高了弯曲路径下的系统性能。

图4 线跟踪控制器的流程图。

位置误差的计算

根据传感器数据计算误差。每个传感器的读数对应一个位置信息。该位置信息由( 1 )式计算得到。参考位置值为4500表示传感器的中间位置。误差按( 2 )式计算。

若误差值为负,则表明机器人向右滑动。若误差值为正,则机器人向左偏离直线。PID控制器对电机转速进行控制。若计算误差为负,则减小左侧电机的转速,增大右侧电机的转速,使机器人向左侧运动,消除误差。若误差值为正,则左边电机转速升高,右边电机转速降低。然后机器人向右侧移动,消除误差。

比例控制

式( 3 )为比例控制的数学表达式。可以看出,当仅采用P控制时,机器人对直线跟踪过程中出现的误差响应更快。但当kP增益超过一定值时,振荡被发现相当高。当kP增益减小时,振荡减小,但机器人对误差的响应变慢。为此,在系统中加入了导数控制。

积分控制

当单独使用比例控制时,已经观察到稳态误差的发生。积分控制的数学表达式由( 4 )给出。积分项表示过去误差的总和。因此,结合kI积分增益,积分反馈通过在原点引入一个极点来最小化稳态跟踪误差。

在系统辨识阶段,不采用PID控制器的单位反馈实现表明该系统在原点至少存在一个极点。然而,系统不能够无稳态误差地跟踪弯曲路径。为了最小化弯曲路径下的稳态跟踪误差,在控制器中加入了积分项。然而,由于路径的形状并不总是直的,因此从一开始就对所有过去的错误进行加总是无效的。为了提高积分控制对路径曲率变化的响应,仅考虑过去5次误差。因此,对经典积分控制进行了修正,如式( 5 )所示。

微分控制

式( 6 )为经典微分控制的数学表达式。加入了微分控制来消除比例项和积分项引起的振荡和超调。

D控制防止了系统的超调,改善了系统的瞬态响应。但需要注意的是,D控制对噪声敏感[ 5 ]。D控制对噪声敏感的原因是它像一个高通滤波器放大了误差的瞬时变化。在机器人的研制过程中,噪声的影响还没有见到很多。因此,经典导数被修改为( 7 )式,因此计算是通过找到当前和以前的误差之间的差异来完成的。

改进的PID控制器

式( 8 )表达了经典PID控制。经过上述修改,PID控制器的整体数学表达式如式( 9 )所示。在该控制器中,比例项用于最小化位置误差,积分项用于最小化弯曲路径中的稳态误差,导数项用于最小化振荡行为和超调。

测试轨迹

图7展示了由90 °和45 °转弯的直线、曲率和转角组成的测试轨迹。履带由浅色木板制成。为了使反射率传感器高效工作,使用了黑色的电工胶带来创建路径。在未实施开环控制前,电池电压为10.2 V时,机器人无法处理45 °转弯。在实现了所有传感器都不在直线上,只考虑最左和最右传感器的开环控制后,机器人在9.2秒内完成了轨迹跟踪。以进一步缩短完成时间,电池电压提升至13 V。然而,机器人开始出现急转弯跟线失败。为了处理弯道中的急转弯和提高系统性能,对开环控制进行了改进。最终,在电池电压为13 V,PWM占空比为92 %的条件下,机器人在7.8 s内成功完成了循迹。

图7 测试轨迹

源码链接

https://download.csdn.net/download/m0_61712829/89004452?spm=1001.2014.3001.5501


参考文献:

[1] V. Balaji, M. Balaji, M. Chandrasekaran, M. K. Khan, and I. Elamvazuthi, “Optimization of PID Control for High Speed Line Tracking Robots,” in Procedia Computer Science, 2015.

[2] A. Latif, H. A. Widodo, R. Rahim, and K. Kunal, “Implementation of Line Follower Robot based Microcontroller ATMega32A,” Journal of Robotics and Control (JRC), 2020.

[3] K. M. Hasan, Abdullah-Al-Nahid, and A. Al Mamun, “Implementation of autonomous line follower robot,” in 2012 International Conference on Informatics, Electronics and Vision, ICIEV 2012, 2012.

[4] M. Pakdaman, M. M. Sanaatiyan, and M. R. Ghahroudi, “A line follower robot from design to implementation: Technical issues and problems,” in 2010 The 2nd International Conference on Computer and Automation Engineering, ICCAE 2010, 2010.

[5] G. Franklin, J. D. Powell, and A. Emami-Naeini, “Feedback control of dynamic systems, 3e,” in American Society of Mechanical Engineers, Dynamic Systems and Control Division (Publication) DSC, 1994.

[6] Samet Oguten,Bilal Kabas.PID Controller Optimization for Low-cost Line Follower Robots[Z].arxiv,2021.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/474639.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

5G里面NR,gNB,en-gNB,ng-eNB是什么意思

不得不提一个国际组织,叫国际电信联盟(ITU, International Telecommunication Union),简称国际电联。我们先看看国际电联的自我介绍: 国际电信联盟 『国际电联 (国际电信联盟) 是主管信息通信技术事务(ICT)的联合国机…

26-分支和循环语句_循环练习(上)

写代码的思路: 办法(编程思维)写代码(按照语法形式写) 编程思维:需要慢慢训练 1、计算n的阶乘 代码1: int main(){int i 1;int n 0;scanf("%d", &n);int ret 1;do{retret…

MyBatis核心配置文件:解锁数据之美的密码

MyBatis,这位编程的诗人,通过其独特的核心配置文件,为我们描绘出一幅数据之美的画卷。本篇博客将带你深入探讨MyBatis核心配置文件的奥秘,让你能够更好地理解和运用这个优雅的数据持久化框架。 最近想搞私域,欢迎各位…

Windows创建Linux虚拟环境-WSL

使用工具WSL 官方安装使用文档 安装 WSL | Microsoft Learn 开始通过 WSL 使用 VS Code | Microsoft Learn 具体过程 1. cmd以“管理员身份运行”,执行以下指令,安装完成后,电脑重启,安装完成生效。 wsl --install 2. 查看…

离散化算法

简介 预先空间中的有效个体映射到有限空间中去,以此提高算法的时空效率 离散化是一种将数组的值域压缩,从而更加关注元素的大小关系的算法 一些依靠下标实现的算法和数据结构无法实现时,我们就需要离散化 例如原数组的范围是{1&#xff0…

unity学习(66)——控制器Joystick Pack优化

Joystick Pack这种重力带惯性不利于正常开发。决定进行优化。有一种万事俱备只欠东风的感觉。 源代码如下: 1.在脚本中找到轮盘所输出的方向值 2.把方向的改变值加到鸣人模型身上。 2.1控制器脚本中添加model变量 2.2在unity中赋值 2.3代码中修改位置 using Syst…

windows docker

写在前面的废话 最近在学习riscv的软件相关内容,倒是有别人的sg2042机器可以通过ssh使用,但是用起来太不方便了,经常断掉,所以想着在自己的机器上跑一跑riscv的操作系统。最常见的有两种方法吧,第一个就是qemu&#xf…

深入解析stressapptest源码的OsLayer:操作系统相关的抽象接口详解

深入解析stressapptest的OsLayer:操作系统相关的抽象接口详解 一、类概述二、类属性三、主要方法四、功能架构4.1、Initialize()接口4.2、VirtualToPhysical()函数4.3、FlushPageCache(void)函数4.4、FastFlush()函数4.5、FindDimm(uint64, char *, int)函数4.6、Fi…

k8s为什么删除了pod但是还是没删除掉的问题,deployment在影响

deployment 影响pod删除 一、问题所在二、解决问题 一、问题所在 执行:kubectl get pods --all-namespaces,获取dashboard相关的pod kubectl get pods --all-namespaces | grep dashboardkubectl delete pod dashboard-metrics-scraper-546d6779cb-4x6…

AI换脸软件facefusion2.4.1汉化版整合包分享及使用教程

FaceFusion2.4.1版本软件功能:图片换脸,视频换脸,此版本侧脸效果大幅度优化提高无需配置任何环境,解压即用,本地版本,无需联网也可使用,一次下载,永久免费使用效果演示:https://www.…

Python数学建模-2.9Matplotlib库

Matplotlib库是Python中一个非常流行的绘图库,它提供了大量的绘图工具,可以生成各种类型的静态、动态、交互式的图表。Matplotlib的设计初衷是为了与NumPy配合使用,从而提供一个强大的数学绘图工具。 1.Matplotlib的主要特点 丰富的图表类型…

AI程序员已诞生,如何保住自己饭碗?

一、背景 全球首位AI程序员Devin的诞生无疑引发了业界对职业前景和人工智能影响的热烈讨论。AI程序员的出现确实预示着人工智能技术在编程领域的重大突破,它们能够进行自主学习、修复bug、掌握全栈技能,并且在特定场景下展现出了替代部分人类程序员工作…

Redis 更新开源许可证 - 不再支持云供应商提供商业化的 Redis

原文:Rowan Trollope - 2024.03.20 未来的 Redis 版本将继续在 RSALv2 和 SSPLv1 双许可证下提供源代码的免费和宽松使用;这些版本将整合先前仅在 Redis Stack 中可用的高级数据类型和处理引擎。 从今天开始,所有未来的 Redis 版本都将以开…

JetPack之LiveData

目录 一、LiveData简介1.1 LiveData是什么? 二、LiveData使用2.1 LiveData基础使用2.2 LiveData搭配Service模拟后台消息2.3 LiveData在组件中的数据传递 三、LiveData应用场景 一、LiveData简介 1.1 LiveData是什么? LiveData是一种可观察的数据存储器…

这里是一本关于 DevOps 企业级 CI/CD 实战的书籍...

文章目录 📋 前言🎯 什么是 DevOps🎯 什么是 CI/CD🎯什么是 Jenkins🧩 Jenkins 简单案例 🎯 DevOps 企业级实战书籍推荐🔥 参与方式 📋 前言 企业级 CI/CD 实战是一个涉及到软件开发…

语音神经科学—05. Human cortical encoding of pitch in tonal and non-tonal languages

Human cortical encoding of pitch in tonal and non-tonal languages(在音调语音和非音调语言中人类大脑皮层的音高编码) 专业术语 tonal language 音调语言 pitch 音高 lexical tone 词汇音调 anatomical properties 解刨学特性 temporal lobe 颞叶 s…

开源Thinkphp核心在线网页音乐播放php源码,附带系统搭建教程

安装教程 环境要求:apachePHP7.0Thinkphp伪静态 安装教程:修改Application目录下的database.php信息 导入根目录下的install.sql到数据库 修改Static目录下的player目录下的player.js文件的第140行的“域名”为你的域名 修改Static目录下的player2目录下…

四川易点慧电子商务抖音小店:安全可靠,购物新选择

在数字化浪潮席卷全球的今天,电子商务已成为人们日常生活中不可或缺的一部分。四川易点慧电子商务抖音小店,作为新兴的电商力量,以其安全可靠的特点,赢得了广大消费者的信赖和喜爱。 一、品牌信誉,品质保障 四川易点慧…

【MySQL】数据库的基础概念

👦个人主页:Weraphael ✍🏻作者简介:目前学习计网、mysql和算法 ✈️专栏:MySQL学习 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论&#x1f4ac…

Jackson 2.x 系列【4】对象映射器 ObjectMapper

有道无术,术尚可求,有术无道,止于术。 本系列Jackson 版本 2.17.0 源码地址:https://gitee.com/pearl-organization/study-jackson-demo 文章目录 1. 概述2. 案例演示2.1 创建对象2.2 写入2.3 读取 3. 泛型擦除 1. 概述 在前两篇…