基于视觉传感器的自主扫雷机器人设计与实现

摘要:

在当今的世界安全形势下,扫雷小车的出现可以减少各国人员在扫雷过程中的人员伤亡,扫雷小车实用性能强更适合在军事化领域或者是民用领域上应用。让它具有光明的发展前景。针对这一情况,本毕业设计就对自主扫雷小车进行研究。

本设计是基于STM32处理器的自主扫雷小车控制系统,主要包含视觉识别、测距、避障、驱动还有资源配置。主控芯片采用STM32F103系列核心板。其中避障部分主要用HC-SR04超声波模块结合外部中断1。视觉识别主要采用openmv4摄像头模组以及相关算法来实现对强烈对比的"地雷"进行识别。小车驱动使用PWM技术对两组车轮转速进行控制并通过速度差实现转向。

显然,自主扫雷机器人的运用会对未来安全防范事业做出重要贡献。本课题将有助于了解扫雷机器人和智能小车的研究和应用。

关键词:STM32;超声波避障;电机控制;PWM

毕业设计说明书英文摘要

Title The Design of mine clearance robot

Abstract

In today's world security situation, many countries have begun to develop various dangerous operational robots such as anti-terrorism explosion-proof robots and rescue robots for disaster protection and rescue based on national security. Demining is also an important part of the security strategy. So the mine clearance robot appeared. Due to the fast speed and high precision of robotic minesweeping, it is most important to avoid casualties and give it a bright future.

This design is based on the STM32 processor's autonomous mine clearance robot control system, which mainly includes visual recognition, ranging, obstacle avoidance, drive and resource configuration. The main control chip uses the STM32F103 series core board. Among them, the obstacle avoidance part mainly uses the HC-SR04 ultrasonic module combined with external interruption. The visual recognition part mainly uses the Openmv4 camera module to realize the identification of "mine" by related algorithms. The trolley drive uses PWM techique to control the wheel speed and achieve steering through the speed difference.

Obviously, the use of autonomous mine clearance robot will make an important contribution to the future of safety. This topic will help to understand the research and application of mine clearance robots and intelligent cars.

Keywords :STM32;Ultrasonic obstacle avoidance;Motor control;PWM

前 言

在当今的世界安全形势下,世界上很多国家都在研制各种特种设备机器人,比如说水下机器人研制,钻地机器人研制,飞天机器人研制等等。当各个国家研制这些特种机器人的目的就是为了去减少国家内部的操作人员的伤亡。而在这些机器人中各国重点研制的是扫雷机器人。联合国儿童基金会在1996年发出一篇报告称,在球60多个国家中,大约埋藏有多达700种地雷,累计数量高达1.1亿颗,这是一个相当可怕的数字,而且这还是二十年前的统计结果。如此多的地雷不论对于国家、人民群众还是自然环境都有着难以预估的重大危害。传统的人工扫雷虽然识别率高,但不得不忽视其对扫雷人员和士兵造成人身安全伤害的风险。因此扫雷排雷成为世界各国迫在眉睫的一项挑战和任务。

由于使用机器人扫雷速度快、精度高,还有可以避免人员伤亡这一巨大优势,让它不得不受到各国和各方人士的高度关注。鉴于这一情况,对智能移动扫雷设备的研究变得越发重要。所以本课题围绕此问题展开,从机器人扫雷的背景和国内外对其研究的现状入手,再对其实现方案和相关软硬件的设计进行讨论和总结。探寻一种基于视觉传感器的扫雷机器人的设想,并制作出一个简易能够实现基本功能的移动设备,对其中一些基础技术和原理进行学习理解,初步掌握单片机、传感器的使用,

第一章 绪 论

1.1引言

当今,很多国家都早已明确表示禁止地雷的使用。但是仍有数亿枚地雷被埋在世界各地,如此数量的地雷使很多生活在周边的居民受到很大的安全影患危险,很多周边居民一不小心就会给潜藏的地雷给炸死炸伤,所以目前研制扫雷机器人已经是大势所趋了,只有将完善的扫雷机器人应用进多雷地区,才可以减少当地居民的伤亡。

根据不完全的统计,我们周边国家的一些战场弥留地区存在着上亿颗地雷,这些地雷无时无刻不影响着周围居民的生命安全。没有人能提供准确的数据,让人意想不到的是一些地雷甚至是第二次世界大战时期留下的,而关于这些地雷存在的官方证明早已无从考究。众多国家里,潜藏地雷最多的国家无非是正在发生战乱的中东,和阿富汗地区,其次就是亚洲的老挝,柬埔寨,和越南地区。而有些地区国家,因为恐怖分子和恐怖组织的活动,至今仍在投入使用这种武器。2015年,全球约有6000多人因为地雷受伤和死亡。其中平民占有很大比例,而儿童所占比例也高达30%。现有大多数的探雷和排雷技术以人工手动进行,其危险系数极高。当前在各个地区进行排雷作业的除了人工之外,就是如今老式传统的大型碾压式地雷扫除机,这些扫雷机主要是靠自身的重量将潜藏在地下的地雷引爆,但是由于行动缓慢,经常会使排雷爆破车被地雷震坏,在实际的排雷应用中损坏率很大。为了解决这一现状,也为了代替传统人工扫雷的方式。本设计就机器人扫雷的问题展开研究。

根据要求,小车为实现自如行走、跟踪、避障和自动定位等功能,属移动机器人。这类机器人是一种用有较高自主行的智能机器人,作为机器人研究的领先部分,智能机器人可以使用自身携带的传感器接受来自环境的讯息并作出反馈,亦可检测自身状态并作出调整。从而实现在复杂环境下的代替人工执行一些高难度作业,并能够不在人工干涉下自觉的避开障碍,达到自主导航和移动的目的,是一套高效高精度的机器系统。这一类机器人与传统机器人最大的不同点就在于它对移动定位的要求更高。所以不论是扫雷还是执行其他作业,所以不论是扫雷还是执行其他作业,都可以安全、自主的完成,在特殊情况下,可以采用人工远程控制,提高系统设计的可行性以及便捷性,在更大程度上发挥"人机结合"的功能。

1.2选题背景与意义

对于地雷炸弹的检测和排除,目前世界范围内还是普遍使用士兵相关专业人士进行手动排查,其潜在的危害和风险不言而喻。除此之外,近期使用的非人工扫雷方案如排雷车,滚筒车这一类的,因为技术不够先进,大多用原始的类似耕地机一样的原理,先增大接触面和压力,通过翻滚不停地捶打地表来实现对雷区的地雷诱导式引爆,不仅精度低下,而且因为需要增大接触面积和压力,使得体积质量成倍增长,进而带来的造价偏高,效率低下。其次,因为其原理导致的体型限制,让此类机械一旦遇到非正常的地表环境,比如高低不平的山坡、崎岖狭隘的小路等,就会出现很大的风险性和局限性,甚至导致车体倾斜翻车等情况,对人员造成巨大伤害。

而排雷机器人就可以取代受过专业训练的排雷兵或特种犬,消除地雷和其他烈性爆炸物,大大降低了训练排雷人员的成本,只需要学会机器的操作和使用,训练时间也会先出缩短。作为一种智能防爆安全装备,同时也是最重要的减少人员的伤亡,都是它无可取代的优势。随着机器人技术和当下最热门的AI技术的发展,用扫雷机器人代替人工实现高效、大范围的扫雷工作将是今后相关研究发展的必然趋势。在广泛使用机器人探雷排雷的情况下,工程师可以摆脱风险高、效率低、作业时间漫长的矿井探测和排雷工作。从另一个层面上讲,机器人可以显著地降低人员伤亡率,是实实在在地提升了排雷效率,而不是单纯的为人排雷。

而且这种智能型的扫雷装置,往往技术含量高,所以体较之于传统排雷车大大缩小,重量也相应的变轻很多,这就十分有利于在复杂环境下的运作和使用。通过这种扫雷设备,可以协助专用的排雷车或辅助专业的团队侦察地雷扫除地雷,成本低廉的同时兼顾了很高的安全性,非常适合面积广的国际人道主义扫雷任务,将会为今后安全维和任务的扮演重要角色。它的出现也会对机器人在非正常环境和危险条件下作业等相关领域的研究工作作出贡献,成为机器人领域的重要分支,具有十分宝贵的科研价值和现实意义。

1.3研究现状

基于确保从事扫雷排雷的相关人员士兵的安全,机器人地雷排除装置正在紧张的开发中。因为使用机器人排除地雷可以避免人员的伤亡以及合理的性价比等优点,对于执行战争结束地区的排查和清理工作相当合适。

上个世纪八十年代后期,美国已经发起了关于无人扫雷也就是机器人扫雷的相关研究,并积极研发设计此类设备。以至于美国的联合机器人开发项目都包括军队特别装备的各种远程地雷检测机器人、防爆机器人、反恐机器人等等。在政府和军队的大力支持下,"Magic Claw","Pike Potter","Mine Hunter"等型号的智能机器人相继公开并投入使用,当时记录的数据表明,这些机器人确实在各个战区都发挥出了超前的水平和性能,为美国的军事行动带来了巨大帮助。美军曾在阿富汗和伊拉克使用了数十个探测、爆破、排雷的机器人,但最初的装甲师团7个爆破机器人已经消除了上千枚未爆炸的地雷。90年代后,美军的爆炸物任务组使用了18台清洁机器人,对伊拉克军队残留的爆炸装置、哑炮和地雷的清除起到了重要的作用。

在欧美地区当地的科学家们研制出了一种和传统的地雷机器人不同的机器装置,这种机器装置主要是三部分组成,第一部分是由行动部分组成,这部分可以使地雷排除小车行动自如的在复杂的雷场进行多变的行驶。第二部分是地雷检测部分,地雷检测部分通过高标准的金属探测器可以探测到地下三米左右的地方,如果发现地下有潜在的安全影患,就会激发第三部分的使用,第三部分就是地雷标志装置。只要有地雷在地下给检测到了,标志装置就会在地下地雷相对应的地上位置标志出鲜艳的黄色标志,然后小车继续向前进行地雷的扫除。整个探测过程可以做到相当高的自主性和自动化。使用摩托罗拉的中央处理模块和处理部件来完成对机器人的指令发出和执行任务。当检测到地雷时就用喷漆标记,标记完成后绕开地雷,继续执行探雷任务。

我们的邻国日本,作为一个机器人技术相当领先的国家,上世界还参与柬埔寨这个地雷"重灾区"的国际人道主义援助,基于这些原因也积累了扫雷机器人的研发经验。日本技术部门研发的一款名为"彗星2"的机器人,实现探雷作用的同时兼具排雷功能,可以说是一个技术含量相当高的多功能机器人。最大的特点就是除了识别正常的金属制地雷,它还可以探查到普通扫雷设备无法识别的高分子聚合物地雷,这得益于其安装了一种特殊的感应雷达。一些地雷数量密集的国家区域曾使用过这种机器人,取得了很好的效果,但因为其成本相当高,所以也存在维护困难,使用频率有限的问题。此外,还有很多欧洲发达国家如挪威、捷克斯洛伐克等在国际维和行动的号召下,也相继开发出一些独具特点和创新的新型排雷防爆机器人,对保障本国人民的安全和世界维和行动作出不小的贡献。

现在,中国主要有防爆机器人、链条锤扫雷艇和定向能源扫雷艇。其中,排雷机器人被广泛用于恐怖袭击对策底盘操作,链条锤排雷车已经完成,在云南的军事现场进行了实地试验,定向性地雷检测装备已经完成,并且下一个步会基于陆军实战平台把这些设备投入了实际的战斗中。

在未来,不仅仅有机器人扫雷技术,结合卫星和无人机的高空地雷探测即将出现,还将采用智能集成化扫雷排雷一步完成的技术,使用时新的AI技术和微处理器技术开发的地雷探测和地雷扫描车以及使用激光和机器人技术的遥控地雷扫描车也将有新的发展和突破。这些都将是传统的盲扫转变成精确的定位扫描,相信不久的将来会埋藏在世界各地的地雷将会得到彻底清除。

在我国的第五步兵维和团部队中的智能扫雷机器人研制过程中,我国的科研人员设计研发出了一种完全是我国自主研制的高性能智能扫雷机器人。我国研制的扫雷机器人具有超高性能的战场生存能力,还具有超牛的战场复杂环境的行动能力,我国自主研制的扫雷机器人可以爬上将近五十公分的垂直墙面,还可以通过长达三十公分的沟渠,可以在颠簸的战场环境中随意的前进。

第二章 概述

2.1 自主扫雷小车的系统概述

本设计是由基于视觉传感器的扫雷小车代替人工和其他传统扫雷方式。整套控制系统具有以下功能:自主扫雷、测距和自主避障、自主巡航、报警等功能。由以下模块组成,包括:中央处理模块、电机驱动电路模块、报警模块、超声波避障模块、视觉识别模块、电源模块。小车通过视觉传感器检测到地雷时,经过中央处理器处理,闪灯发出警报,并在原地停留2秒后,通过电机驱动模块驱动小车继续扫雷。遇到障碍物时,由超声波测距模块识别出距离,再通过驱动模块驱动小车做出避让后退等动作。以下为系统原理图

图 1

2.2 自主扫雷小车的所使用相关技术概述

本设计是关于自主扫雷小车的设计与实现。主要使用以下几种技术,传感器技术、基于python底层的openmv图像数据处理技术、数据打包传送技术、声学测距范畴超声波测距技术、自动控制技术。

2.3 系统设计要求概述

(1)视觉传感器扫雷;

(2)识别地雷闪灯报警;

(3)报警同时停留2秒,之后继续扫雷;

(4)遇前方障碍物转弯后退避让。

第三章系统设计

3.1 扫雷小车系统总体设计和框图

本扫雷机器人系统设计主要包含视觉识别、测距、避障、驱动还有资源配置。主控芯片采用stm32f103系列核心板。其中避障部分主要用HC-SR04超声波模块结合外部中断1来设计,视觉识别主要采用Openmv4摄像头模块以及算法来实现对强烈对比的"地雷"进行识别,阈值可调,颜色可调。小车驱动部分为,便于控制。而对于场地的扫描以及排雷顺序,主要遵循从进到远、从左至右、逐个排雷并结合每个地雷的权值作为排雷顺序依据。避障部分采用中断进行,有障碍则减速至停车、转向,继续排雷。

电源部分采用12V、1800mAh电池以及相应的DC-DC升降压稳压模块和DC-DC12V降压5V模块给主控供电,12V用作二轮驱动。系统总体框图如下所示

图 2

以下介绍系统的软硬件设计和各模块的功能、算法和程序,

3.2 中央处理模块

众所周知,中央处理模块是一套系统的核心,就像大脑在人体中的地位一样。各个传感器、部件传输过来的信息都汇集到中央处理模块,并且进行筛选分析,通过算法和程序运算所得数据,再发出对应的指令和信号指挥各个部件做出正确的动作和反应。

本次设计选用的是在智能控制和设备中广为应用的STM32单片机。这是一种基于ARMV7架构的Cortex系列标准架构,是ARM大约在10年前推出问世,他的出现满足了更多市场和用户越来越多样化和复杂功能的需求,成为了当下主流的性能较高的单片机芯片。根据所面向领域的不同,这个系列可分为A、R、M三个功能不同的的系列。其中,A系列是用于开放复杂操作系统和复杂的应用;R是Real的缩写,用于实时系统;M是Micro的缩写,特别是用于微控制领域的低成本研究和开发。STM32处理器的出现为高功率、低成本的嵌入式应用比如微控制系统、工业控制系统、车身系统和无线网络等高性能的系统提供了基础,从而实现了编程的复杂性和高性能,还有系统的低功耗和低成本,在科研公司将地雷清除小车,主要并集成芯片是由半导体组成,哦,地雷七路小车最大的公司是st公司,st公司生产出一种m3颗新开发项目,主要是由m3颗新处理器设计的第1个基于v7m架构的32标准处理器,这种处理器它具有功耗消耗低,技术不低的优点。而且这款处理器,中间延时时间超级短,而且调试量超级低,十分使用超方便。多其他优势使它在许多处理器中立马显现出来,展现出强大魅力。直至现在,STM32处理器分为两大系列,分别是F101和F103。其中,F101系列为基础入门系列,CPU频率设置在36MHz;F103系列是功能性能的加强系列,CPU频率最高为72MHz,片内RAM较多,外围资源较丰富。这两种型号都在软件和PIN的封装上兼容,并拥有同样的片内flsah资源。因为种种优点,使得在这个平台进行软件更新和开发变得快捷又高效。

在下文中我们将具体介绍stm32f系列中,终端的32位LV控处理器的具体功能和具体组成部分。这种32位的芯片是这个公司的半导体出品比较留的一个项目,它的内核是由cor tex m组成。并且这种芯片的fl ash大小可以分成以下三类。第1类是小容量的芯片只有16k和32k第2类是中容量的芯片,有64k和128k第3种是大容量的芯片,有256k,384k和512k。并且这款芯片的集成定时器中有多种功能,主要是由以下CAn功能,adc功能,SPI功能,I2C功能USB功能。并且这款处理器的访问周期可以达到1.25d每秒。这款处理器还运用了单周期乘法和硬件出发,使运算效率大大提升。在这款处理器中的储存器,是由16k到512k字节的闪存程序处理器组成。并且这个公司生产的处理器,它的电源管理功能超级厉害,因为它的电源管理功能是2.0~3.6伏供电,而且他的上电和断电复位,设计的十分巧妙,可以编程电压监测器,在他的4-16MHC震荡体中内嵌了由出厂调校的8mh z rc振荡器,而且它可以产生CPU时钟p ll带校准的32khz的rc振荡器。姐,这款地雷排除智能功能小车,它所采用的低功耗主要有三种模式,第1种模式是睡眠模式,第2种模式是停机模式,听筒模式,待机模式。这款智能小车中还有后备继承供电系统,经过模数转换器,将12个12位模数转换器,转换时间多达16个,输入通道转换范围,可以上升至3.6伏,而且它还有双采用系统和保持功能温度传感器系统。科学家研制这款智能小车中的内部处理器过程中,它的处理器几乎所有的端口都可以容忍达到5v的信号。

在这款智能排除地雷小车的调试模式中,他的调试模式有串行单线条是sw d和jtag接口。他的调试模式居然可以装上多达8个定时器和三个16位定时器,每个定时器有多达4个用于传输或者捕获p wm或脉冲技术的通道和编程码的输入。在他的调试模式中,共有一个16位带死区控制和急刹车功能,用于电机控制p wm高级控制定时器和两个看门狗定时器。这两个看门狗定时器分别有两种类型,第1种类型是独立类型,第2种类型是窗口类型,而且系统定时器有24位置简述计时器,有多达9个通信接口。在这款小车的通信接口中有两个L2C接口。并且还有三个USARt接口。而且他还有两个SP l接口和can接口还有两个USB2.0全速接口。而且这款处理器使用的计算单元也是目前最先进的96位新密码为代码的crc计算单元。

3.3 摄像头模块

3.3.1简介

本设计是基于视觉传感器的扫雷机器人,作为其核心部分,视觉传感器就像小车的眼睛一样重要。经测试,使用stm32f103单片机和普通摄像头因为涉及图像处理的原因,使得帧率过低无法满足设计要求。为了使开发简单的同时保证高识别速度和准确度,我们采用了时下流行的Openmv摄像头模组。

作为一个功能丰富性能强大的摄像头模组,Openmv体积小,硬件排布紧凑,使用简单,价格低廉,它的中央处理部分用的是stm32系列单片机模块,并且可替换不同型号的摄像头。设计语言基于通用的C语言,除此之外还有Python接口,高效便捷,方便开发者编译,降低编程门槛,容易实现较为复杂的核心功能,用户利用Python语言来使用Openmv具备的各种各样丰富的功能,让他们独有的想法和创意能够自由的在自己开发的设备上实现。

Openmv拥有多种视觉识别算法,主要有以下几类,比如人脸的识别算法、色块的寻找捕捉算法、边缘检测算法、标识物的跟踪算法、手势追踪等等,不仅可以给普通开发者爱好者实现一些有趣的功能,对于要求更高的工业商业所需的专业功能,也可以满足实现,例如指定物体的标识追踪,生产线上不合格物件的检测、未经授权的物体入侵等。因为它的体积小重量轻,可以安装到无人机,小车,机器人这类DIY的娱乐产品上。可以想象一下,给你的电子狗装上人脸识别功能,让它只对你做出反应,或给你的机器人增加对身边空间的识别功能,然它不在四处碰壁吗,亦可让你的智能小车增加自主导航寻路功能,然它不用你要控便能来去自如。当然,你要是专业人员,给你的生产线加上不合格品的筛选、条码的识别功能。当用户亲身体验就会发现,只需懂得基础的程序编程,用一些简易的代码,就可以很方便容易实现各种视觉识别的功能。因为核心基于32系列单片机,所以它也提供了种类繁多的外部接口还有相当完善的系统硬件所需的资源,用以满足使用者拓展更多功能的需求,比如USB接口,就可以连接电脑并使用配套的调试软件,辅助用户完成开发、调试和更新固件等工作,TF卡槽装载TF卡,保存多个程序或者拍摄到的图片。亦可使用单片机模块控制其他的硬件如Arduino、树莓派等。同样的它也能接受其他单片机的制,这个优点使得它可以很方便的和多种不同模块组合,完成更复杂的功能。

3.3.2 Openmv机器视觉应用方法

对于机器的视觉来说就是,人眼可以看东西,而且我们现在是用机器人来代替人眼去看东西,机器人虽然不能直观的看东西,但是机器人可以代替人眼来进行测量和判断物体的距离和大小。所以传说中的机器人看东西,也就是机器人视觉系统,通过机器视觉产品,将摄取目标转换成图像信号传送给专用的处理器系统,是被摄取的目标形态信息,根据像素分布亮度颜色的大小特征转变为数字信号,在电脑上经过集成系统的分析,然后图像对这些信号进行各种运算来抽象的模型的特征进行判定,然后通过现场的操作人员,来控制现场的小车设备动作进行扫雷排除。

由于目前的机器人视觉系统发展已经十分完善了,所以机器人系统可以在短时间内获取大量的信息,然后再集成芯片的处理下,可以使信息的加工控制系统更加完善,因此在现代化的生产过程中,人们教机器人的视觉系统广泛的应用于工程皆是成品检测质量控制以及检查管理等等领域。总的来说,机器人的视觉系统特点就是生产性的柔性和自动化程度非常高。所以在一些不适合人类工作的危险环境工作环境下,或者人类视觉难以满足的要求,而机器人视觉可以代替人工视觉进行对生产环境的监测和检验。由于工厂化的生产是大批量的工厂化生产,所以人工去检查产品合格率,效率又低又不准,那么我们用机器人是要去检查,成品的合格率就可以大大提高产品的生产效率和质量。可以使工厂的自动化生产更加完善。而且机器人更容易实现机器和物品的信息集成功能,是实现计算机集成制造业的基本技术之一,所以这种技术我国早就掌握了,那么我国在工厂自动化生产中就会运用机器人来检测物品的成功率标准。

目前机器人的视觉产品制作中的工程制作,主要由7个部分组成。接下来我们来简述这7个过程的具体内容。第1个部分就是工业相机和工业镜头的组成,这部分相当于人的眼睛去看东西,属于成像器件主要是视觉系统有一套或多套这样的成像系统相互组成,用多录像机去分辨物体大小和形状,同时控制获取多个相机的通道数据,根据应用相机来获取所需要的单色视频进行复合信号的转换最后进行非标准的逐行扫描信号。线扫描性号和高分辨析信号,等等信号统一归总。第2个部分就是光源,因为你要看东西必须要有光有光才能看到东西,所以光源是作为机器人视觉系统,一个辅助成像器线,而成像的质量好坏,往往就是光源起到重要的作用,各种形状的LED灯,屏光灯,光圈卤素灯都很容易得到,所以光源在机器人视觉系统上的应用是必不可少的。第3个部分就是传感器部分,传感器部分可以说是,机器人视觉控制系统里面比较重要的部分之一,通常是由光电开关接近开关的形式组成,用于判断被测对象的位置和状态,东西在哪儿,就需要传感器去判断东西的状态怎么样,也需要传感器判断,所以传感器是告知图像如何采集的正确途径之一。第4个部分就是图像采集部分,图像采集部分通常以插卡式的形式装,在c盘中,图像采集卡主要工作是把相机输出的信号传输到电脑主机,然后他们将来自相机模拟信号和数字信号转成一定数据的图像模式。将这些图像模式通过数据线与数字电信号的形式显示在显示器上。而图像采集器,还可以控制相机的一些参数,比如说触发信号,曝光时间,快门速度,都可以控制。并且图像采集器卡通常有不同的硬件结构,以针对不同类型的相机同时有不同的总线形式。第5个部分就是PC平台,什么是PC平台,PC平台就是一个电脑的,PC是视觉系统的核心。电脑所有的图像都需要在这里完成图技术上的处理和绝大部分控制逻辑。为了检测这种类型的应用,通常都是使用频率较高的CPU处理器这样处理器功能越强大,那么处理的时间就会越少,同时就会大大增加电脑的处理功能效率。并且通常为了减少现场工作环境的震动灰尘温度以及外在干扰因素,我们通常会选择工业级的电脑。第6个部分就是事件处理软件,视觉处理软件就相当于是人的大脑后神经反应,这个部分主要是用来完成数字图像的数据处理,然后通过一定运算得出结果是输出结果,通过信号和坐标位置字符串等等形式传送到具体视觉软件显示器中。机器人常用的世界软件处理器是c-c++图像库。图形式编程环境,可以是专用功能的,LCD检测,vga检测模板对准等等。也可以是通用目的的定位,测量条码单点检测等等。第7个部分就是视觉处理器的控制单元,控制单元包括运动控制和电平转化单元控制,一旦视觉软件完成了图像分析,那么就需要和外部单元进行通信并产生对其生产能力的控制,简单的控制可以利用部分图像卡自带的开关进行控制,但是相对复杂的控制就需要控制单元来运行和控制。

接下来我们来分析一个完整的视觉系统主要的工作过程。视觉系统工作过程中,第1个过程就是通过弓箭定位检测器来探测物体运到了哪儿,然后通过摄像系统将物体纳入视野中心,然后采集图像,使部分图像发送触发脉冲。第2个过程,通过图像采集部分事先设置好的程序和定位功能,分别向摄像机和照明系统发起信号,使摄像机开机使照明系统开灯。第3个过程,就是相机停止扫描过程过后,就需要新的开始扫描,所以摄像头必须要不停的进行摆动,来瞄准物体的移动方向,在启动脉冲到来之前一直处于等待状态。但是在这个过程中,我们需要摄像头开始新的反弹过后,提前需要打开曝光机构,因为曝光机构可以通过我们的计算机编码处理系统,可以事先编程。使灯光系统永远在相机开机之前打开。在打开灯光照明过后,就会启动脉冲,使灯光的开启时间和摄像机的曝光时间相匹配。这个过程就是相机曝光之后,那么就需要开始对图像进行接收和模拟信号的输出。图像的采集部分接收的模拟信号就会直接吸收到摄像机中,使摄像机将图像生成数字化的视频数据,然后将数字化的视频数据存放在处理器或计算机内存中。然后大型的工业电脑中的处理器就会对图像进行处理分析识别,然后或许所需要的结果和测量数据。之后电脑的分析系统就会对这些数据进行分析,然后对流水线上的产品进行控制,定位和纠正,来增加大型生产链上的产品质量和生产效率。

3.3.3 Openmv4的运算及处理能力

open mv4采用的是当今现在最高性能的微控制系统,这种微控制器是stm32h7,stm32h7高性能微控能处理器运行在400MHZ左右。据有关科学统计,他的内核跑分是两千二十分,这款高性能微控制器的跑分效果可以和当今市面上的主流软件相匹配。功能强大的mcu和OPenv4相组合,产生出的性能强悍可以轻松地在OpenMV4平台上几秒内直接运行颜色跟踪、人脸识别与检测等机器视觉算法。还带了基于caffe深度学习框架的cnn神经网络框架,可在openmv运行CIFAR10、CIFAR10 Fast MNIST 、Smile Detection等模型。支持可拆卸式的摄像头模块,包括0V7725、0V2640、MT9V034、OV9650等摄像头。

OpenMV4的主芯片采用stm32H743vit6。主频400M,内存2M,处理速度远超OpenMV3。OV2640,灰度MT9V034和彩色MT9V034。可拆卸的方式让大家可以随意更换自己想用的镜头型号。可以最大限度的进行各类图像采集。另外再通过镜头的更换。

Openmv的底层python已经封装好一系列的封装库:

API:find_blobs

thresholds是颜色的阈值。通过这个法子可以判断很多种颜色,并且,通过这个参数作为一个列表,这个列表中将所有的颜色都能靠过来,那么这个色块对象,bao b就可以调动seo de方法来判断颜色是什么色块。roi是"感兴趣区"。

x_stride 就是查找的色块的x方向上最小宽度的像素,默认为2。

y_stride 就是查找的色块的y方向上最小宽度的像素,默认为1。

area_threshold 面积阈值,如果一旦有小于这个色块的面积,那么电脑中就会自觉将这个面积过滤掉。

pixels_threshold 像素个数阈值,如果有小于这个值的出现,那么电脑也会将这个值,自然的排除,不会使它出现在电脑处理器中。

merge 合并,如果设置为True,那么就将所有的纸全部合并在一起,进行综合运算处理。blob为一个。 注意:这会合并所有的blob,无论是什么颜色的。如果你想混淆多种颜色的blob,只需要分别调用不同颜色阈值的find_blobs。

blobs = img.find_blobs([red])find_blobs对象返回的是多个blob的列表。

而一个blobs列表里包含很多blob对象,blobs对象就是色块,每个blobs对象包含一个色块的信息。

blob有多个方法:

blob.rect() 返回这个色块的外框------矩形元组(x, y, w, h),可以直接在image.draw_rectangle中使用。

blob.x() 返回色块的外框的x坐标(int),也可以通过blob[0]来获取。

blob.y() 返回色块的外框的y坐标(int),也可以通过blob[1]来获取。

blob.w() 返回色块的外框的宽度w(int),也可以通过blob[2]来获取。

blob.h() 返回色块的外框的高度h(int),也可以通过blob[3]来获取。

blob.pixels() 返回色块的像素数量(int),也可以通过blob[4]来获取。

blob.cx() 返回色块的外框的中心x坐标(int),也可以通过blob[5]来获取。

blob.cy() 返回色块的外框的中心y坐标(int),也可以通过blob[6]来获取。

blob.rotation() 返回色块的旋转角度(单位为弧度)(float)。如果色块类似一个铅笔,那么这个值为0~180°。如果色块是一个圆,那么这个值是无用的。如果色块完全没有对称性,那么你会得到0~360°,也可以通过blob[7]来获取。

blob.code() 返回一个16bit数字,每一个bit会对应每一个阈值。

当我们调用的find blobs,来做色块追踪处理器时,主要采用的原理就是因为这款色块追踪处理器,它拥有全幅图像扫描的功能,当然,他这种功能有优点也有缺点。第一,他的优点有很多,比如说运算速度超快。他可以教所有的色块一起扫描进来,而且还是全图扫描。但是这种色块追踪处理器的缺点,是,色块数量很多时候,就会干扰系统的判断,导致最终失败,而且有些部分不需要扫描,这款处理器会将其扫描进去。

此处用绿色目标物作为样本数据得到以下的现象图片:

图1-1

处理速度:

图1-2

3.4数据打包传送技术

JSON(JavaScript Object Notation, JS 对象简谱)

数据打包传送技术,是一种比较属于轻量级的数据交换格式。而且这种交换格式比传统的xm1更加轻巧,所以可以到达节约传输数据所被占用的宽度和时间,大大提高传输数据的时间效率。并且数据打包传送技术通过简洁和清晰的层次结构,Json成为理想的数据交换语言,通过这种交换语言,可以让人们更加容易的阅读和编写这种程序。使网络传输这种数据的时间大大缩短,增加了网络的传输效率,也增加了机器的工作效率。只需要记得,一种文本字符串是由JSON组成,而且这种文本字符串,应该被储存在某一种属性中,这种属性就是responsetext属性,并且,我们在毒区这种数据过程中,还可以使用一些函数来解析json,当然,这种函数是特殊的函数,分别是javascript的eval函数,还有一种计算机中特定的语言函数。

JSON注意事项:

(1)名称必须用双引号(即:"")来包括

(2)值可以是双引号包括的字符串、数字、true、false、null、JavaScript数组,或子对象。

接下来我们来简要说一说,java中的常用编写方法以及编写方法的意思。

json.dumps():将 Python 对象编码成 JSON 字符串

json.loads():将已编码的 JSON 字符串解码为 Python 对象

json.dump():将Python内置类型序列化为json对象后写入文件

json.load():读取文件中json形式的字符串元素转化为Python类型

在底层中具体采用Python后、stm32 H7为处理器的摄像头模组,则需要涉及到摄像头模组与主控stm32f103的数据传送问题。传送数据的方法为用stm32 H7的串口3(UART3)与stm32f103主控的串口2(USART2)直接进行双线异步数据传送,传送的数值有两个:一个是特征点的数量,另一个是总体巡线特征值的偏左或偏右量。由于串口直接传送数据的方法通信容易产生数据遗漏、丢数据、其他信号线的影响,则采用json数据打包的方法,接收端进行数据校验解析的方式,如下图:

图1-3

3.5 超声波避障模块

超声波避障模块相当于小车另一个眼睛。它将所收集到的外界环境的信息发送到单片机也就是中央处理器,经由其计算得出数据,并发出指令实现躲避障碍物的功能。其整套过程就和我们人在行走时,眼睛看到前方物体挡住,从而通过大脑判断如何绕开物体,选择正确路径是一样的道理。当前市面上有很多可以基于不同原理实现避障测距功能的模块,例如比较常用的红外线检测、光学检测还有就是本次实验使用的超声波检测。大量研究表明,超声波传输中能量亏损小、下降速度慢,方向性比较确定,在介质中传播的距离长,所以超声波在测距方面得到了大量使用,很多仪器设备都通过它来检测距离。并且超声波的使用快速便捷,数据运算也得到简化,于此同时还能满足精度要求较高的工业生产和实时性的需求,因而很多开发者和研究人员使用它来进行移动智能设备的设计和开发。本次设计选用了型号为HC-SR04的超声波模块,它价格低廉,形状小巧便于安装,成为扫雷小车的不二选择。

当今市面上的所有超声波传感器,所利用的原理都是多普勒原理。东圃的原理主要是说,通过京正体向外发射超过人体能感知的超频高超声波,然后这种超声波通过控制模块检测反射回来,检测其反射回来的频率。这种超声波的波频一般是在25~40khz波。在超声波传感器的运作工作过程中,叫超声波发射出去,在超声波发射的区域只要有物体进行不断的运动,那么超声波就会在上面反射出一段频率。这段带有波动的频率就称为多普勒效应。我们可以通过反射回的频率来判断物体在指定区域内运动的位置和移动的速度方向。通过这些判断分析,可以来控制开关。

接口:VCC 接 5V电源, GND 为地线,TRIG 触发控制信号输入, ECHO 回响信号输出,TRIG与ECHO接STM32的任意GPIO口。

本设计的实现主要基于HC-SR04超声波测距模块的使用,通过stm32f103外部中断系统和定时器系统,实时扫描机器人前方是否有障碍物,判断距离阈值可用软件设置调整。

stm32f103主控外部中断机制中,初始化应用方法分析及判断。

①中断机制:STM32 的每一个GPIO都能配置成一个外部中断触发源,这点也是 STM32 的强大之处。STM32 通过根据引脚的序号不同将众多中断触发源分成不同的组,将下面7个中断装置:PA0,PB0,PC0,PD0,PE0,PF0,PG0为第一组,只要我们将这些终端装置按照这个顺序,依次匹配分类归于一种,然后将所有的类别划分为同一性质的装置,那么我们就可以得到16 组,在这种中断装置机制原理控制中,规定每一组只有一个终端装置可以控制开关的闭合,就是说,只有一个装置在一组中,可以去控制外部闭合系统。那么,最多工作的也就是16个外部中断。STM32F103 的中断控制器支持 19 个外部中断/事件请求。每个中断设有状态位,在这些组类别的终端装置中,每一个装置中的组别都可以去判断外部装置是否有中断的情况发生。STM32F103 的19 个外部中断为以下4种情况。

第1种情况在线16,都可以通过到 PVD 输出。

第2种情况在线17:都可以通过到 RTC 闹钟事件。

第3种情况在线18:都可以通过到 USB 唤醒事件。

第4种情况在线0~15:合理的匹配外部 IO 口的输入中断。

图2-1

②中断配置过程:

1、配置触发源GPIO口:

由于在GPIO可以作为传统的触发源,来使用。我们只需要将GPIO口配置成输入模式,在触发模式中,主要有以下几种。

第1种是.GPIO_Mode_AIN ,主要是利用模拟输入(ADC模拟输入,或者低功耗下省电),就可以完成配置口的输入。

第2种是.GPIO_Mode_IN_FLOATING ,可以通过浮空输入,就可以达到目的。

第3种是.GPIO_Mode_IPD ,可以通过带下拉输入,就可以达到目的。

第4种是,GPIO_Mode_IPU ,可以通过带上拉输入 ,就可以达到目的。

使能AFIO复用时钟功能:

将GPIO口与中断线映射起来:

中断线上进行中断初始化:

6、外部中断服务函数的编写:

外部中断函数分别为:

EXPORT EXTI0_IRQHandler

EXPORT EXTI1_IRQHandler

EXPORT EXTI2_IRQHandler

EXPORT EXTI3_IRQHandler

EXPORT EXTI4_IRQHandler

EXPORT EXTI9_5_IRQHandler

EXPORT EXTI15_10_IRQHandler

中断线 0-4 每个中断线对应一个中断函数,中断线 5-9 共用中断函数 EXTI9_5_IRQHandler,中断线 10-15 共用中断函数 EXTI15_10_IRQHandler。

HC-SR04测距模块基本参数:

1.工作电压:4.5V--5.5V,5.5V为上限,不得超出;

2.工作电流:最小1mA,最大20mA;

3.工作频率:40Khz;

4.可识别的工作距离:4mm--4m(备注,识别最近距离为4毫米,最远为4米,数据为持续输出,不需要预先设置);

5.可测量的温度大小:0度--100度,精度为1度;

6.可测量的光照的程度 :可以明显的判断出黑色白色或者是光亮暗淡之间的效果。

7.数据输出方式:主要有两种,第1种是icc。第2种是uart或者57600bps

HC-SR04测距模块时序:

HC-SR04超声波模块,测距原理为利用正常条件下声学中音速为340m/s,模块trig端接受高电平时则连续发送8个高电平脉冲,同时echo端输出高电平,接收到回传信号时则改输出低电平,利用主控TIM2定时器和EXIT4中断源(优先级组设置为2)来记录高电平时间,即可由:

La=340*TIME(S)(米)

计算出La及障碍物距离。

3.2.4PID自动控制技术

在这种自动控制化技术过程中,我们在控制的过程中可以按照偏差比例的不同来进行控制,Pld控制器。在控制系统中主要是,以下三个部分来进行控制,第1个部分是比例部分,第2部分积分部分,第3部分是微分部分,通过这三个部分协调解决就可以使自动控制器的自动控制技术更加完善。目前市面上的自动控制器的自动控制技术决定简单而且易于实现,它的适用性十分广泛,可以运用在各个领域,而且这种自动控制器的自动控制器控制参数数据相互独立,又有一一对应的特点。我们可以通过调节这种比例积分和微分之间的规律,然后进行连续要对产品的连续动态系统品质校正进行方法的解决和判断,而且这种自动控制技术它的参数整定方法结构简单又轻便。在传统的应用过程中控制点,包括三种比较简单的,比例积分微分控制算法。导致三种控制算法,第1种控制算法是增量式算法,第2种控制算法是位置是算法,第3种控制算法是微分先行算法。虽然这三种比例积分微分算法控制系统简单,但是它们的特点基本可以满足一般控制系统所需要的大多数需求。

离散化公式:

△u(k)= u(k)- u(k-1)

△u(k)=Kp[e(k)-e(k-1)]+Kie(k)+Kd[e(k)-2e(k-1)+e(k-2)]

进一步可以改写成

△u(k)=Ae(k)-Be(k-1)+Ce(k-2)

对于增量,是算法中可以选择的功能有很多种,第1种我们可以选择。滤波选择,对于滤波选择来说,滤波选择就是,对输入加一个前置的滤波器,使输入的控制算法给定值,不会发生突然的变化,而是有一定惯性的延缓,然后再慢慢的进行变化,不会突然的进行变化。第2种就是系统中的动态过程中逐渐加速,在增量式的算法过程中,比例相与基分项的符号具有以下关系,那么,我们来简单的说说一下这些关系,如果被控量的系统继续偏离给定值,那么这个符号就会一模一样,如果当被控量和改进之方向不一样知识,那么这两个符号就发生相反变化。同时,又由于这一特性,所以当被控量接近给定值时,那么相反毕业的作用就会阻碍积分的作用,从而避免了积分超调以及带来的机器震荡,所以这明显是有利于我们对这种机器的控制,但是如果被控量远未达到给定接近知识,那么当你接近时发生变化过程中,那么就会由于积分获得比例之间发生的微妙变化或者是反向移动将会导致被降低进行缓慢减慢,那么这就会对我们进行,数据分析操作的效率大大减少。所以为了避免这种情况的发生,我们需要增加一个动态,加速的过程,首先我们需要设定一个偏差范围,当这种偏差范围,使被控量接近给定值时,就按照正常规律进行调节,但是如果这种比例作用为正为负,都发生大量的偏差过程中。那么我们就需要利用这种方法使其符号和偏差量的积分项相一致,然后按照正常的规律进行调节,不管其比例作用为正为负,都要利用这种算法对其数据变化的动态进行有效的控制和运用。第3种就是我们在pid增量算法的饱和作用中,进行对其保护作用的抑制。由于在prd增量算法过程中,执行原件本身就是机器和物理积分储存单元,所以如果给定值发生突然变化,过程中那么部分的算法比例就会发生突然变化使比例部分和微分部分计算出来的控制量但大于正常值,那么就会使机器上的执行元件所承受的限额远远达到它的负载量,那么执行文件上的控制增量将会受到现实的控制,抑制企业进行继续计算,那么多余的计算部分就会丢失,使系统的动态过程变长,这样就会导致我们系统的工作效率大大减缓。因此我们需要制定一个完善的计划,使这种现象避免发生和改善这种现象的发生。目前广泛应用纠正这种缺陷的方法就是使用累计补偿法,累计补偿款的意思就是只要系统的运算过程中超出执行机构的执行能力过程中那么就需要将超过的那部分进行累积积累起来。暂缓进行执行能力的运算,然后,在系统不繁忙的工作过程中,再进行补充执行运算。

PID位置算法

离散公式:

u(k)=Kpe(k) +Ki

+Kd*[e(k)-e(k-1)]

利用位置式算法,我们可以选择的功能算式方法有两种。

第1种是利用滤波:同上为一阶惯性滤波。第2种是利用,饱和作用抑制。

接下来我们来简单的说说这两种方法,第1种方法就是遇限消弱积分法。对于这种方法来说,只要控制变量进入保护区,那么只需要机型的销售及分享运算进行停止或者增大及粉象的运算,就可以使这种计分方法进行回归到正常尺度的运算。简单来说,在计算程序运输过程中,如果数据已经超出了程序判断限制范围,那么就需要将偏差的符号进行程序的表明,就可以使系统判断是否在超调区域,有程序符号的出现,那么就可以按照这种分析,将相应的偏差,记录入积分项。第2种方法就是积分分离法,积分分离法主要应用在在基本的pid控制中具有较大的浮动劳动和大幅度的改变定值时,这种方法,就会有较大的偏差,使系统具有惯性和待候性,来减缓系统对积分项目的运算能力执行。当运算系统出现较大的超调量和长时间的波动,特别是温度成分的变化,缓慢过程发生后,这一现象就会在积分分离法中,发生的更加严重。但是只要我们采用积分分析法中的避免措施,就可以将偏差量较大的过程中取消它的积分运算作用,那么在偏差较小的时候,再将积分运算作用投入进去就可以解决这种较大的扰动和大幅度的改变定值问题发生。另外通过积分分离的数值确定,这可以使具体对象和具体要求明确化。比如说,当数值的要求太大,达不到积分分离的目的从我们就可以使被控量无法跳出积分分离区域。或者数值太小是也可以使被空调无法跳出积分分离区,只需要进行pd控制就可以使较大幅度的角度和大幅度的改变定制情况有所减缓或不再发生。

离散化公式:

当|e(t)|>β时

q0 = Kp(1+Td/T)

q1 = -Kp(1+2Td/T)

q2 = Kp Td /T

u(t) = u(t-1) + Δu(t)

主要有以下7种符号含义。

第1种符号含义是u(t);;;;; 主要是讲控制器的输出值。

第2种符号含义是e(t);;;;; 主要是讲控制器输入与设定值之间的误差。

第3种符号含义是Kp;;;;;;; 主要是讲函数比例系数。

第4种符号含义是Ti;;;;;;; 主要是讲函数积分时间常数。

第5种符号含义是Td;;;;;;; 主要是讲微分时间常数。(有的地方用"Kd"表示)

第6种符号含义是T;;;;;;;; 主要是讲函数如何调节周期。

第7种符号含义是β;;;;;;; 主要是讲函数积分分离阈值

为了防止这种问题的出现,我们研究出来一种方法叫做有效偏差法。有效偏方法是根据p ID位置来算出控制量超出限额范围内,控制量实际只取边值进行最大和最小边值计算。而且这种方法将对应的控制能量的偏差值作为有效偏差值记录积分累积,而不是进入实际的偏差,进入积分累积,所以按照这种方法计算出来的控制量是没有执行过程中具体应用。可以有效的避免偏差量过大或者过小的情况发生。

当我们这个小车的控制系统中的给定值发生大幅度变化时,那么部分的作用就会使输出值也进行大幅度变化,这样就会不利于我们在日常生产中的操作,会降低我们日常生产中的生产效率。因此我们在为粉象的计算过程中不需要考虑给定制,只要对被空调进行严格的控制。所以我们需要采用微分先行的pid计算方法,这种方法又叫做测量值微分pid算法。

这种积分运算方法的公式如下:

离散化公式:

参数说明同上

可以用来对于纯滞后对象的补偿

只要控制点采用了Smith预测器,那么这种预测器就可以对控制对象与补偿环节一起控制使它们组成一个被控环节,然后在程序计算中变成一个简单的惯性环节计算。

再对PID参数进行重新整顿的过程中,我们可以发生,主要对pid参数的影响有三种情况。

第1种情况就是比例系数Kp对系统性能产生了影响。由于系统比例系数加大,就会导致这种系统的动作灵敏,速度加快,稳态误差减小。但是如果发生Kp偏大,振荡次数加多,调节时间加长。那么Kp太大时,系统会趋于不稳定。可是由于Kp太小,又会使系统的动作缓慢。所以我们将Kp可以选负数,当我们将kp值选择负数时就可以,主要有以下三个部分来决定,第1个部分是执行机构,第2个部分是传感器部分,第3部分是控制对象部分,由这三个部分的综合特性来进行一起决定。但是如果Kc的符号选择不当对象状态(pv值)就会离控制目标的状态(sv值)越来越远,所以我们为了避免这种情况的发生,只要一出现这种情况,kp值就一定要取和他们相反的。第2种情况就是积分控制Ti对系统性能的影响,积分作用使系统的稳定性下降,Ti小(积分作用强)这会使整个积分系统极不稳定。所以我们就要在这个时候消除稳态误差,就可以提高整个系统的控制精度,可以使整个系统的工作效率大大增加。第3这种情况是微分控制Td对系统性能的影响,当我们利用微分作用可以改善动态特性,只要发生Td偏大时,超调量较大,调节时间较短。Td偏小时,超调量也较大,调节时间也较长。综合以上两种情况的发生,所以我们只有在td. 情况不大不小时,才可以使超常量变得较小,调节整个控制系统的调节时间,增加控制系统的运行效率。

小车设计采用两轮驱动方式,由于stm32f103的DSP功能强大、可以进行高精度浮点运算,故采用PID(比例-积分-微分)算法控制小车,该算法涉及到三个参数,即Kp、Ki、Kd,其中Kp为比例控制参数、Ki为积分控制参数、Kd为微分控制参数。Kp对系统的快速性有关键性作用,Ki对系统的稳定性有关键性作用,Kd对系统的准确性性有关键性作用。

通过调节Kp、Ki、Kd综合提高系统的快速性、稳定性、准确性,在小车控制中主要为了减少转弯角度的超调、欠调,从而使小车在转弯时角度控制可以更快速、稳定、准确。

受主控芯片性能的影响,在处理PID三个参数时采用以下方法:

比例控制:直接用当前差分值乘以比例系数,即Kp * Error;

积分控制:所有角度偏差值之和乘以积分系数,即Ki * SumError;

微分控制:前两次角度偏差值之差乘以微分系数,即Kd * dError,其中dError = LastError - PrevError(LastError为最近一次差分值,PrevError为最近第二次差分值);

输出量计算公式:

Out = Kp * Error + Ki * SumError + Kd * dError

①参数调整过程:

比例系数Kp调整 Ki=0,Kd=0

尝试值 现象 处理方法

6.0 小车剧烈震荡 该值减4

2.0 小车较大震荡 该值减1.5

0.5 小车转弯不灵 该值加0.5

1.0 小车略微震荡 采用当前值

表4-1

微分系数Kd调整 Kp=1,Ki=0

尝试值 现象 处理方法

1.0 小车剧烈震荡 该值减0.9

0.1 小车预测很不灵 该值加0.2

0.3 小车预测较不灵 该值加0.1

0.4 小车预测灵敏 采用当前值

表4-2

积分系数Ki调整 Kp=1,Kd=0.4

尝试值 现象 处理方法

0.05 小车不平稳 该值加1

1.05 小车过于平稳 该值减0.55

0.5 小车过于平稳 该值减0.4

0.1 小车平稳 采用当前值

表4-3

由上面参数调整过程,确定了PID算法三个参数值分别为:Kp=1,Ki =0.1,Kd=0.4,使得小车前行稳定、准确、迅速。

3.PWM功率调制技术

1、PWM输出原理

如果发生定时器在工作过程中,专门选择大数据进行计算PWM模式,我们就需要将当前的计算值设定为CNT,CCRx为捕获/比较寄存器CCRx的值(预装载值)。当 CNT<CCRx 时,GPIO口 输出低电平0,相反我们可以得到,当 CNT>=CCRx 时,GPIO口 输出低电平0。当CNT达到 ARzR,要是达到这个数据的自动重装载,那么我们就需要整个数据重新归你,再重新往上进行计算,重新往上计算过后,依次不断循环。改变 CCRx 的值,就可以改变 PWM 输出的占空比,改变 ARR 的值,就可以改变 PWM 输出的频率。

2、PWM定时器

STM32 的定时器主要有三种类型,第1种类型是TIM6 。第2种类型是TIM7。之前所说的两种类型定时器都可以用来产生 PWM 输出。第3种类型是高级定时器 TIM1 和 TIM8 。第3种高级类型可以同时产生多达 7 路的 PWM 输出,不仅仅如此,而且还可以通过通用定时器能同时产生4路的 PWM 输出。但是通常生产过程中用TIM2定时器的CH1和CH2产生两路PWM输出,就可以满足我们的日常所需。

当pwm定时器中的通用定时器 TIM2 产生两路 PWM 输出,他们就需要配备两种重载寄存器。第1种重点计算器是自动重载寄存器TIM2_ARR。第2种重载寄存器是预分频器TIM2_PSC。在这控制寄存器TIM2_CR1、 捕获/比较模式寄存器TIM2_CCMR1、捕获/比较使能寄存器TIM2_CCER、捕获/比较寄存器TIM2_CCR1和TIM2_CCR2 ,如果使用的是高级定时器TIM1和TIM8,还需配置刹车和死区寄存器TIMx_BDTR。

3、寄存器配置步骤

(1)开启 TIM2 时钟。

如果我们需要使用TIM2, TIM2 的时钟必须先行开启。所以在我们设置APB1外设时钟使能寄存器RCC_APB1ENR就要将他们两个数据一一进行对立,添加相应对应的部分统计。

(2)通道CH1和CH2对应的GPIO 口时钟使能。

TIM2定时器CH1和CH2对应的GPIO口为 PA0和PA1,通过设置RCC_APB2ENR时钟使能GPIO口。

(3)PA0 端口配置和PA1端口配置

这两种端口配置方法一般是采用复式推挽输出模式进行配置。

(4)TIM2_ARR配置和TIM2_PSC配置

通常来说ARR为定时器计数的上限,是16位的寄存器,在ARR为定时器的上限和下限范围为1~65535。PSC为定时器的分频系数,通过这个值可以计算出PWM的频率。根据电机最适合的频率进行分配。

并将其进行预装载使能,TIM2->CCMR1 相关位控制CCRX的预装载使能,TIM2->CR1的APER位控制ARR自动重装载使能

(5) 设置 TIM2_CH1和TIM2_CH2的 PWM 模式及通道方向

要使电机越转越快,可以配置 TIM1_CCMR1 的相关位来控制将其设置PWM 模式1。另外,要配置 CH1和CH2 为输出,所以要设置TIM1_CCMR1 的CC1S[1:0]和 CC2S[1:0]为 00(寄存器默认就是 0,所以这里可以省略)。

(6) 使能 CH1 和 CH2 输出和使能 TIM1 。

在进行配比,开启输出使能过程中,当我们开启 TIM2 的 CH1和CH2 的输出以及 TIM1 的时钟。那么ch1就会通过 TIM2_CCER 寄存器来设置,由于这个输出使能是单个通道的开关,那么ch2就会通过 TIM2_CR1 寄存器来设置,是所以需要找到寄存器的设置,关键就是整个 TIM2 的总开关。只有设置了这两个寄存器,这样我们才可能在 TIM1 的 CH1和CH2 上看到 PWM 波输出。这样就可以增加机器的运行效率。

(7) 设置 MOE 输出,使能 PWM 输出

普通定时器在完成以上设置了之后,就可以输出 PWM 了,但是高级定时器,我们还需要使能刹车和死区寄存器(TIM1_BDTR)的 MOE 位,以使能整个 OCx(即 PWM)输出。

参考文献

[1] 姚伟. 自主吸尘机器人的"基于行为"设计[D]. 辽宁工程技术大学 2008

[2] 张文辉,齐乃明,尹洪亮. 自适应神经变结构的机器人轨迹跟踪控制[J]. 控制与决策. 2011(04)

[3] 鲍敦桥. 仿真类人机器人设计及高层决策方法的研究[D]. 合肥工业大学 2009

[4] 余婷. 多机器人队列曲线运动研究[D]. 上海交通大学 2009

[5] 韩雪峰. 导盲机器人[D]. 哈尔滨工程大学 2009

[6] 马斌奇. 多机器人协作与控制策略研究[D]. 西安电子科技大学 2009

[7] 张文辉,齐乃明,尹洪亮. 不确定机器人的神经网络轨迹控制[J]. 自动化与仪表. 2010(05)

[8] 胡守仁主编,沈清等编着.神经网络应用技术[M]. 国防科技大学出版社, 1993

[9] 蒋莹. 多机器人协同探测的任务分配和避碰方法研究[D]. 中南大学 2008

[10] 杨柳. 未知环境下的多机器人协调合作的研究[D]. 华北电力大学(北京) 2009

[11] 鲍敦桥. 仿真类人机器人设计及高层决策方法的研究[D]. 合肥工业大学 2009

[12] 韩雪峰. 导盲机器人[D]. 哈尔滨工程大学 2009

[13] 余婷. 多机器人队列曲线运动研究[D]. 上海交通大学 2009

[14] 王洪瑞,冯玉东,刘秀玲,冯展芳. 基于反演设计的机器人自适应动态滑模控制[J]. 计算机工程与应用. 2010(08)

[15] 马斌奇. 多机器人协作与控制策略研究[D]. 西安电子科技大学 2009

相关推荐
唐叔在学习5 分钟前
【唐叔学算法】第19天:交换排序-冒泡排序与快速排序的深度解析及Java实现
java·算法·排序算法
music0ant9 分钟前
Idea 配置环境 更改Maven设置
java·maven·intellij-idea
记得开心一点嘛24 分钟前
Nginx与Tomcat之间的关系
java·nginx·tomcat
界面开发小八哥36 分钟前
「Java EE开发指南」如何用MyEclipse构建一个Web项目?(一)
java·前端·ide·java-ee·myeclipse
王伯爵39 分钟前
<packaging>jar</packaging>和<packaging>pom</packaging>的区别
java·pycharm·jar
Q_19284999061 小时前
基于Spring Boot的个人健康管理系统
java·spring boot·后端
m0_748245172 小时前
Web第一次作业
java
小码的头发丝、2 小时前
Java进阶学习笔记|面向对象
java·笔记·学习
m0_548514772 小时前
前端Pako.js 压缩解压库 与 Java 的 zlib 压缩与解压 的互通实现
java·前端·javascript