版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于AprilTAG的物流搬运小车整体设计目录TOC\o"1-3"\h\u3174摘要 III72251前言 165521.1研究背景及意义 1179271.1.1研究背景 17771.1.2研究意义 2136401.2国内外研究现状 346511.2.1国外研究现状 3210721.2.2国内研究现状 4144391.3本课题的关键问题及难点 5209272系统整体设计 795492.1系统整体设计方案 711682.2物流小车传感器模块选型 7284002.3主控芯片选型 855092.4小车结构设计 10138542.5系统编程软件选型 1117863系统硬件设计 12279993.1物流搬运小车电源电路设计 1272823.2物流搬运小车传感器电路设计 13248003.3物流搬运小车通信接口电路设计 14300353.4物流搬运小车功率驱动电路设计 15201443.5物流搬运小车整体电路设计 1627294系统软件设计 1866554.1物流搬运小车整体功能流程设计 1840784.1.1物流搬运小车整体功能流程 18146544.1.2物流搬运小车整体功能优缺点 18305044.2物流搬运小车传感器模块软件设计 19159504.3物流搬运小车通信接口模块软件设计 2068744.3.1通信接口模块软件方案设计 2043924.3.2通信接口模块软件设计 20257574.4物流搬运小车LCD显示模块软件设计 22308684.5物流搬运小车功率驱动模块软件设计 22157064.5.1功率驱动模块软件方案设计 22107444.5.2功率驱动模块软件设计 24154834.6物流搬运小车AprilTAG识别程序软件设计 2582634.6.1对AprilTAG识别原理 25301014.6.2物流搬运小车AprilTAG识别程序设计 26152395系统调试过程 28785.1物流搬运小车传感器模块与K210通信接口模块调试 28301035.2stm32通信接口模块、LCD显示模块、功率驱动模块调试 29298396总结与展望 3177076.1总结 3195486.2展望 3230296参考文献 34摘要本文对基于AprilTAG的物流搬运小车系统进行设计与分析,物流搬运小车的系统采用STM32F103系列的单片机来作为本系统的控制核心,以PYAI-K210开发板作为本系统的机器视觉模块进行传感器的检测及AprilTAG标记的识别,实时地通过摄像头检测将AprilTAG标记的识别结果发送给stm32单片机,并通过串口中断的方式进行PWM信号输出,来控制物流搬运小车进行搬运工作。经过实验的验证,将AprilTAG、PYAI-K210、stm32单片机相互结合是可行的,能够很好地实现小车的物流搬运工作。关键词:PYAI-K210;AprilTAG;STM32F103;物流搬运小车1前言1.1研究背景及意义1.1.1研究背景伴随着互联网时代的到来,网络购物这种行为逐渐地被人们去接收,网购开始变成一种很普遍的购物方式,随之而来的就是物流业的快速发展。这个行业具有着莫大的潜力和发展的空间,当然伴随而来的是巨大的挑战。截止到现在为止现代化的物流业发展状况已经能够成为一个国家用来判断综合国力的一个重要判定标准,物流业正在逐渐地开始受到了各个国家的关注和重视。中国的物流业开始发展的时间比较晚,但是在近几年网络购物开始普遍的推动下,中国的物流业也开始了以较快的速度开始发展,物流企业也逐渐增多。同时国内物流企业之间的竞争开始变大,行业的集中度提高,物流业在面临着国际方面严峻情境以及国内疫情影响等多种压力下,依然能够做到服务的能力提高,同时排名靠前的物流企业竞争力也依然提升。时间截止到2021年的年末,整个物流企业中的占A级企业已经达到了近8000家,其中前50强的物流企业收入的总和已经高达1.4万亿元。在物流行业高速发展的同时,客户的标准和要求也在伴随着行业的发展而逐渐提高,客户希望能够更快的在网购完之后收到网购货物,这个现象无疑成了各个物流公司之间的一个主要的竞争点。一个商品在从客户这边下单后,到商品交付到客户的手上,这中间经过的一系列物流过程中,商品的分拣配送无疑成为了一个重中之重的环节。一个物流企业其物流的分拣配送效率和物流的吞吐量可以说是评判一个物流企业是优是劣的一个很重要的判定标准。在客户向平台下单到交付这物流过程中,仓储物流成为了整个过程中最基本的环节。随着人们对物流时间要求的提高和人们日渐增长的网购消费观念,迫使着物流企业做出升级和改进,在仓储中如果还是依靠着人工的分拣和各种运输车来进行出库入库的操作,那么这个企业就已经很难达到现代社会对物流企业的标准要求了,而且这种仓储模式也伴随着仓库的人工劳动力成本高,货物的信息处理可能会出错,货物的信息处理效率低,货物分拣效率低下等诸多问题。因此研究出分拣配送效率更高的仓储模式已经是十分必要的。作为一个现代化的仓储模式,它应该不仅能够完成一个传统的仓储模式需要完成各种功能的管理,而且还需要对自身的仓储分配效率和仓储空间利用率进行提升,去降低其各个板块的成本,更大程度的去贴近现在的市场要求。去减少对人工劳动力的依靠,更应该去依靠机器去完成那些繁琐的货物分拣,用机器去实现货物的存取,货物的搬运功能,实现功能的自动化、智能化,提高货物流通的效率,然后间接去满足客户想要更快收到货物的这个需求。为此针对于现代化的仓储物流搬运小车越来越受到各个物流企业的关注,物流搬运小车一般是运用于货物在物流仓库的分拣搬运,和传统的人工分拣,传送带、叉车、升降机等搬运设备进行搬运相比,物流搬运小车集成了更高的自动化和智能化,目前已经作为智能化搬运机械的主要发展方向。本文的基于AprilTAG的物流搬运小车也将以此为研究背景进行展开。1.1.2研究意义基于AprilTAG的物流搬运小车和传统的货物搬运设备相比,更具有灵活性以及高自动化高智能化,能够通过检测AprilTAG标识进行路线选择,大大减少人工分拣、货物搬运的时间和成本,而且小车无需人员操控,让整个物流仓储迈向自动化。基于AprilTAG的物流搬运小车以微控制器为核心,通过摄像头进行识别AprilTAG进行线路选择的无人工引导自动搬运小车,可以自动地进行转弯、停止,然后装卸货物。在它工作的过程中完成了自动导向,按照指示的地址停止,运输货物的功能。基于AprilTAG的物流搬运小车具有出错率极低,工作处理效率高,小车结构紧凑体积小,可控制性强,安全性高等一系列特点。而且物流搬运小车可以归类于机器人,它能够完全的适应各种恶劣的工作环境,强于人工而且比人工效率更高,最重要的是机器人出错率远远地低于人工的出错率,甚至可以说是不会出错。据统计人工的分拣的出错率远远高于机器人,这对于物流企业和电商们都是不能够接受的。由此可见,着重发展物流搬运小车已经成为物流企业之间的关注点,各个物流企业想要在竞争中脱颖而出,就要在现有的物流小车的基础上,发现它们的不足,并针对这个不足去做出改善,做出创新。也只有这样才能够拥有真正的核心技术,打破国外的物流机器人物流小车的垄断,抢占整个物流行业的先机,提高自己的竞争力。目前在一些物流龙头企业中,已经开始应用一些无人驾驶的物流搬运小车,去完成货物的智能分拣和配送,它既提高了整个物流仓库的出货发货的效率,也提高了同行业内的竞争力,降低了人工成本。因此对于发展基于AprilTAG的物流搬运小车的研究具有非常重要的实际意义。1.2国内外研究现状1.2.1国外研究现状世界上第一台能够进行自动引导的搬运小车是由美国的Barrett公司研发而出,它的出现显著提升了货物搬运的效率,也奠定了货物搬运的自动化趋势。在前几年,随着网络购物的普及,作为发达国家的美国第一次将自动搬运小车放入到仓储物流这个领域内,物流搬运小车的进入为物流企业的货物配送效率获得了极大的提升,同时也提高了订单的数量。而在当下,仓库内的自动引导搬运小车的发展,就如同雨后春笋一般。但是要说发展的最快的,那就要说早在2012年就开始布置自己的自动化物流系统的亚马逊公司了。在亚马逊的各个仓库里,最重要的工作无疑就是分拣货物。就是将已经包装完毕的货物根据它们收货地址的不同,放入开往不同地方的货车中。而这些物流搬运小车,所能起到的作用就是这个。工人要做的工作就是站在原地,将这些已经包装完毕的货物放在这些物流小车的上面,工作也就做完了。亚马逊公司不仅为这些物流小车配置了云端路线管控系统,而且为它们配置了专属的盲道。在云端路线管控系统中,小车们会被调度,在安排它们每次任务的路线的同时,还会对它们的路线,小车自身的状态进行实时的监控,当发生意外可以做出应急预案,来确保整个系统可以流畅地进行。图1.1亚马逊盲道机器小车如上图,在配置盲道中,亚马逊在其仓库的地板上贴了许多的AprilTAG,这些AprilTAG就是物流小车的盲道,每当有一个小车到达了贴有AprilTAG的位置,就会在它车底下面的摄像头进行扫描,这个AprilTAG会告诉这个物流小车接下来是往前走还是左右转向,然后小车会继续按照指示命令前进,直到扫描到AprilTAG告诉它已经到达终点为止。亚马逊公司表示,要想在电子商务这个领域内有所成就,就必须要有高效率的仓库。接近于永不停止地在仓库内取下分拣各种货物,把它们封装起来,然后配送给每一个客户,亚马逊是第一个挑战这个思想的公司,当然很明显它成功了。伴随着现在电子商务做的越来越大,越来越多的企业开始注重到物流这个行业,现在几乎整个物流行业的各个环节都开始变得自动化起来。尽管越来越多的仓库分拣货物依赖于机器设备,不过亚马逊表示他们引入机器人引入物流搬运小车初衷并不是为了取代工人。相反,随着仓库内机器设备的普及,会有更多新的岗位被创造,仓库的自动化不仅没有替代掉那些工人,相反的还帮助了一些工人获得了更高的工资。亚马逊公司在今年将两款新的机器人Ernie和Bert加入仓库的使用,其中Bert是一款自主移动的机器小车,通过亚马逊公司的感知导航技术,使小车可以在仓库内自主移动并且可以进行货物的搬运,而且在下图中可以看到Bert也会通过识别AprilTAG来进行定位和路线分析让Bert在仓库中的自由移动,这意味着仓库内的工人不会受到任何空间上的限制,让在仓库内任何位置的Bert前来搬运货物。目前它还只能搬运一些比较轻的货物,亚马逊将会在未来让它支持更重的货物搬运。图1.2亚马逊Bert机器小车1.2.2国内研究现状中国自从进入机器时代以来,机器已经逐渐开始替代人工的那些繁琐、重体力劳动的工作,这已经成为了一种趋势。特别是伴随着5G时代的到来,物联网技术的发展和人力成本的提高,越来越多的物流仓储企业向自动化智能化靠拢发展。目前国内有许多电商和物流公司配置了自动化的仓库,来应对国内日益剧增的物流压力。比如京东物流在位于北京的智慧物流仓库,地狼仓。就是通过物流搬运小车、机器人自动化的改造,将物流效率整整提升了八倍。在消费者商品结算的那一刻开始算起,货物就非常快速地进行完了拣货、封装、分拣和装车这四个环节,令人惊讶的是整个过程计时不到一个小时。在下图中可以看出,京东物流搬运小车也是通过识别AprilTAG来进行线路规划,最终完成货物的分拣工作。图1.3京东物流搬运小车又如申通在天津转运中心,在申通的仓库内采用了AGVS物流仓储系统,每天都会有大约300台物流搬运小车在同时运行工作。在同等工作量下,申通物流将人力进行了大幅度缩减,原来没有智能搬运设备的人工团队由150人缩减到搭配物流搬运小车的仅有30人,大大减少了人工的成本资源。我们国家虽然对智能物流行业内的物流搬运小车工业需求较大,但是在实际的仓储工业中对小车的性能要求并不是很高,仍有许多仓库自动化程度不是很高,部分物流企业对仓库自动化智能化的转变有些消极,在我国内的物流搬运小车应用方面依然不是很广泛,这种状况需要科研人员和国家共同努力,去研发出具有更好的性能、更高的性价比的物流搬运小车,以此来适应现代化的工业发展趋势。1.3本课题的关键问题及难点(1)针对物流搬运小车设计其电源电路、传感器电路、通信接口电路、功率驱动电路、和相应的保护功能电路,并设计物流搬运小车的PCB图。(2)PYAI-K210开发板对AprilTAG进行扫描识别,并通过串口发送出识别的结果。(3)PYAI-K210开发板和stm32最小系统板之间进行串口通信,stm32最小系统板能够接受到识别AprilTAG的结果并能够通过LCD屏显示出来(4)stm32最小系统板根据接收到的AprilTAG的结果,发出不同的PWM信号,从而来控制小车的电机,进而控制小车的前进、停止、左转、右转。2系统整体设计2.1系统整体设计方案本系统采用了STM32F103C8T6作为物流搬运小车系统的主控芯片,然后为该系统搭配电源模块、功率驱动模块、LCD显示模块、传感器模块与通信接口模块控制物流搬运小车移动,如图2.1所示。本次系统共用到了PYAI-K210开发板和stm32最小系统板及其开发板。其中传感器模块负责去检测识别AprilTAG,通信接口模块负责将识别结果通过串口发送给stm32最小系统板。电源模块负责去为PYAI-K210开发板和stm32最小系统板及其开发板供电。LCD显示模块负责去显示传感器模块所识别的结果。功率驱动模块负责接收stm32最小系统板所发出的PWM信号,通过驱动芯片控制电机运作。图2.1基于AprilTAG物流搬运小车的系统框图2.2物流小车传感器模块选型物流小车传感器模块主要的任务是检测与识别AprilTAG,在本系统中对于传感器模块的选型有两种选择:星瞳科技的Openmv和01studio的PYAI-K210。Openmv可以看作是一个能够进行编程的摄像头,并且在这个摄像头内部配置了一些图像处理算法,上手简单易学。其摄像头小巧、功耗低、成本低,Openmv的I/O引脚输出电压都是3.3V,而且能够耐受5V的电压。其摄像头模块可以拆卸下来,并且能够允许很多不同的感光元件来进行连接。它除了可以进行AprilTAG检测识别之外,还可以进行人脸检测,颜色追踪,二维码条形码的识别。PYAI-K210则是由01studio所研发,基于嘉南科技设计的芯片K210,它内部采用了RISC-V处理器的架构,及机器视觉、机器听觉于一体,可以广泛地应用于许多场景中,拥有自主的IP内核,其可编程能力强,PYAI-K210拥有双核64位的处理器,内部配置了许多硬件加速的单元如KPU、FPU等,并且其KPU可以运行现有的各种AI算法模型和自己训练的各种算法模型,而且支持各种机器视觉的功能。虽然Openmv的图像比PYAI-K210清楚,且支持的视频格式多于PYAI-K210,可以说如果是单纯的摄像,Openmv那一定是个非常不错的选择。但是本次选择PYAI-K210的主要原因是其算力强,甚至高于了树莓派和JetsonNano,而且其价格更加实惠,性价比更高。虽然两者都没有GPU的单元,但是PYAI-K210有一块KPU来为神经网络单元加速,在低功耗的情况下其内部的KPU也能够完成卷积神经网络的计算,并且能够时时刻刻地去获得被检测目标的大小、坐标等等的各种信息。总的来说如果把Openmv比作是轿车的话,那么PYAI-K210可以说是跑车了,其集高性能和高性价比于一体,所以本次系统的传感器模块选择PYAI-K210开发板。2.3主控芯片选型本系统选择了STM32F103C8T6作为主控芯片,其最小系统板如图2.2所示,该最小系统板负责接收串口发来的数据,进行处理,然后生成PWM信号。对于本系统有三种主控芯片选型方案:AT89C51、ATmega16、STM32F103C8T6。图2.2STM32最小系统板作为应用非常广泛的一个8位单片机AT89C51,它拥有近乎非常完善的总线专用寄存器,面向控制的指令系统。单片机内部拥有一个可擦可编程只读存储器和EEPROM技术相互结合产生的闪烁存储器,既拥有前者那样可编程的强大控制力,又拥有后者那样电可擦除的高操作性能,与此同时还能够快速的访问。因为这些特点使得这个单片机拥有了非常高的可靠性、实用性,并且让它在同类的芯片中因价格和性能脱颖而出。该单片机和51单片机的信息指令系统能够相互兼容,并且内部的EEPROM允许能够反复不断地进行在线编辑通过它的程序数据存储器。AT89C51芯片其自身的优越性更加展现在对于一般EEPROM的字节写入时间与字节擦除时间都是10毫秒,就实时系统而言,这是不可能在短时间内完成的任务而本芯片的EEPROM却可以很短的时间完成,并且其抗干扰能力强,能够容易地进行过静放电、群脉冲等测试。但是它的AD、EEPROM等功能需要依靠外设扩展来实现,这样既增加了硬件的负担力也加大了软件的负担力。虽说其I/O引脚使用起来相对简单方便,但是它最大的软肋高电平时无输出能力也成为一个很大的缺陷。AT89C51单片机自身运行速度并不快,特别是在数据指针方面,如果能够得到改进增强,也许能够给编程带来方便。其单片机保护能力很差容易烧毁芯片。作为高性能、高速度、低功耗的8位单片机ATmega16,它省去了关于累加器A的结构,而通过其R16-31寄存器来代替了累加器A的功能。在ATmega16中,并没有上者所说的51单片机运行速度过慢的双数据指针,ATmega16是通过16位寄存器来实现了数据指针的一系列相关功能,并且内部配置了三个16位寄存器来代替,相当于拥有了三组数据指针。在实现这些功能的同时还能够做后增量或者先减量操作,而在上者51单片机中,所有的逻辑运算都需要放在累加器A中来进行处理运算,而ATmega16却可以在随意两个寄存器之间任意进行,完全节省掉了在累加器A中的反复折腾,凭借这些就可以在上者AT89C51单片机中领先而出。ATmega16单片机拥有着大部分为单周期以字为单位的指令,它可以在执行本指令的功能的同时去完成即将到来的指令的读取动作。但是在ATmega16单片机的32个通用寄存器中,拥有了16个不能够直接进行立即数操作的通用寄存器,因此它的通用性上就不如所有寄存器都可以直接和立即数进行操作的51单片那样,所以其通用性比较差。其优点使得ATmega16在市场上一直在进行增长,但占有率还是不如51单片机。综合前两者考虑,本系统选择了第三个选择stm32系列的单片机,stm32系列单片机作为着性价比超级高的单片机占有着市场,凭借着强大的功能和性价比,让大多数系列的单片机都不能够达到。本系统选择了stm32系列中的增强型芯片STM32F103C8T6,从其核心单片机结构来看,它拥有着可以达到512KB的内设RAM和32字节的存储器,兼具着嵌入式Flash和64K的SRAM,能够及其方便地在系统中存储各种程序数据。凭借着芯片中自带的A/D转换功能,采用RS485通信方式与各个模块连接通信,直接输入采集各种的模拟量和开关量。在片内外设方面,stm32的外设丰富且功能强大,相比而言AT89C51单片机却只有两个定时器和两个外部中断,但是stm32有很多定时器,且每个定时器的功能都是十分的强大,比如自带PWM模式、输入捕获、编码器模式等等的功能,通过内部定时器甚至可以配置多到16个外部中断,另外它还支持IIC、DMA、以太网等外设,而对于51系列单片机来讲对于这些外设功能的实现只能通过CPU指令控制引脚的高低电平变化来进行模拟,多任务模式非常的占用CPU内部资源,并不适合去完成多任务高实时性的控制工作。无论是从处理速度还是外围设备或者是价格上,stm32系列的单片机都具有着很大的优势,并且其抗干扰能力不会比前两者差,综合起来说,就是速度快,外设强大,价格实惠。要说缺点的话,可能就是它暂时还没有内部集成EEPROM,但可以使用其嵌入式Flash的IAP功能去代替EEPROM的功能,并且可靠性高。2.4小车结构设计小车的车体结构设计是选择了一种差速驱动的结构模式,利用两个相互独立的电机来对小车的启动停止和方向进行控制。在小车的前方位置设置了一个万向轮来使小车保持平衡并能够自由的转向,从这样的结构来看,本次物流搬运小车结构设计简单,控制起来相对方便,只需要控制两个轮子的转动速度就可以控制小车进行左右转向。车体结构如下图2.3。图2.3小车的车体结构设计图2.5系统编程软件选型小车的传感器模块负责调用摄像头进行AprilTAG的扫描识别,PYAI-K210开发板的通信接口模块负责将识别的结果通过串口传送给stm32最小系统板,其中这两个模块的编程我选择了MaixPy,它能够将Micropython下载到K210开发板上,MaixPy不但能够支持单片机的常规操作,而且软件集成了硬件加速的AI机器视觉算法以及麦克风阵列等一系列相关的算法。小车剩余模块的编写全是用了Keil4软件进行编写,作为在单片机的应用开发领域的编程软件中非常优秀的存在,它能够将通过C语言编写的程序代码通过编译器转化为机器码,生成hex文件通过烧录写入单片机中。不管是别的MCS-51架构的单片机,还是ARM体系它都能够进行编辑编译和仿真。3系统硬件设计3.1物流搬运小车电源电路设计任何的电子系统都需要供电,就像我们人都需要吃饭一样,这是必须的,在本次物流搬运小车的电源模块的设计中,我采用了5V直流供电,将电源接入到了各个芯片的对应引脚。本次物流搬运小车的电源模块如下图3.1所示。图3.1物流搬运小车电源模块电路图本小车电源模块的电源供电口采用USB接口,可以看到原理图中USB1的第一个引脚就是5V的电源脚,所以本小车采用USB线供电。当电源开关打开后,如果电源的指示灯DP1会亮起来,那么就表示该物流搬运小车的电源模块电路正常。其中本物流搬运小车通过5V直流电供电,但是本次物流搬运小车设计中选用stm32最小系统板,该最小系统板的最高电压为3.3V,这里就用到了最小系统板中的稳压芯片AMSS1117系列3.3V,如图2.4所示。将5V的直流电源转为3.3V的直流电源,在这里也作为了对小车主控芯片的保护电路。图3.2stm32最小系统板稳压模块电路图3.2物流搬运小车传感器电路设计在各种各样的信息资源中,图像可以说是非常直观,并且可以说是信息含量非常丰富,而图像作为机器视觉的核心部分被广泛地应用在了各个领域内,如安防、探测等。而在本次物流搬运小车设计中,将选用OV2640摄像头模块作为小车的传感器模块去扫描识别AprilTAG。按照图像传感器的材料可以把摄像头分为两类:CCD和CMOS。在目前CCD类型的摄像头被广泛地应用在数码相机上,它采用了非常特殊的一种半导体材料,并且通过按照矩阵排列的大量且相互独立的光敏元件组合而成。这类摄像头所拍摄的图像大多是对比度高且动态性好,但是其供电的电压高,一般都是需要工作电压在12V。在我们小车的运行中,电机在停止和启动时能够产生很大的冲击电流,如果采用这种类型摄像头可能会对12V的升压模块造成损伤。而且该类型的摄像头耗电会比较严重,可能会导致我们小车所扫描的AprilTAG图像不稳定。CMOS类型的摄像头采用的也是一种能够感受光线变化的半导体,该类型摄像头的成像主要是通过CMOS的带正负电的晶体来实现。该类型的摄像头结构相对简单体积小,图像的稳定性很高,只要用一个单电源3V或者5V供电即可,其耗电比CCD类型低,但是CMOS类型的摄像头的动态性能却不如CCD类型摄像头。在物流搬运小车的运行中,摄像头所拍摄的图像可能会因小车的运动变得模糊,为了保证我们物流搬运小车的稳定性,我选择了稳定性较好的CMOS类型的摄像头模块OV2640。作为本次物流搬运小车传感器模块的OV2640摄像头模块,它是一颗UXGA的图像传感器,最高帧可以达到15帧每秒。该摄像头模块支持许多自动控制的功能,并且支持图像压缩,前段采用了采光窗口,是一个高灵敏度、低电压的摄像头模块,非常适合嵌入式应用与开发,其原理图如下图3.3所示。图3.3物流搬运小车传感器模块电路图本次物流搬运小车传感器模块的PCB图如下图3.4所示。图3.4物流搬运小车传感器模块PCB图3.3物流搬运小车通信接口电路设计本次物流搬运小车的通信接口的实现采用串口通信的方式来实现。串口是一个很常用的通信接口,有许多的产品和模块都使用了串口通信来进行收取和发送指令、传输数据,这样做的目的是为了让用户不需要去了解底层的实现原来,就可以很轻松的去使用串口通信的功能。本次设计是让PYAI-K210开发板和stm32最小系统板进行串口通信,其中PYAI-K210开发板的串口我选择了IO6,I07串口引脚,其串口引脚如下图3.5所示。图3.5PYAI-K210开发板串口引脚图本次设计通过串口来实现PYAI-K210开发板和stm32实现通信,其电路接线图如下图3.6所示。图3.6物流搬运小车串口通信接线图3.4物流搬运小车功率驱动电路设计在本次物流搬运小车的功率驱动电路中如果直接采用芯片GPIO的管脚去控制物流搬运小车的电机,可能会导致我们物流搬运小车驱动不起来甚至可能会导致芯片烧毁。为此本次设计选择搭建一个外部的驱动电路来驱动物流搬运小车的电机,驱动芯片选择TC1508S,TC1508S驱动芯片拥有一个双通道的直流马达驱动器,既可以驱动直流电机,也可以用来驱动步进电机。该驱动芯片拥有宽电压的工作范围,能够驱动前进、刹车等功能,拥有着很低的工作电流与待机电流。本次物流搬运小车的功率驱动电路如下图3.4所示。图3.7物流搬运小车功率驱动电路图由上图可以看出,该芯片的输入信号是从INA、INB获得,然后芯片的输出信号通过J81这个端子引出。输入信号的获取则是从stm32的P1.6和P2.0管脚获得。信号的输出则是输出给了物流搬运小车的电机,本次设计中物流搬运小车的电机我选用了直流电机,它是一种旋转电机,能够将直流电能转化为机械能。直流电机其内部的结构是由定子和转子组成。其中定子在物流搬运小车直流电机工作的时候是静止的,它的功能是负责产生一个磁场。而转子在物流搬运小车工作时负责产生电磁转矩和感应电动势。3.5物流搬运小车整体电路设计本次物流搬运小车整体电路图如下图3.8所示。图3.8物流搬运小车整体电路图如上图物流搬运小车的基本工作原理为:首先物流搬运小车通过USB1接口获得5V的电源供电,当DP1亮起说明我们的物流搬运小车获得了供电,然后STM32F103C8T6芯片通过它的VCC管脚获电,通过芯片的P3.0和P3.1管脚的RXD和TXD接收到来自PYAI-K210开发板摄像头模块传来的AprilTAG识别结果,然后通过芯片的P0.0、P0.1、P2.7、P2.6、P2.5管脚接连LCD9648显示屏,显示传来的AprilTAG识别结果。芯片根据AprilTAG识别结果不同,来生成不同的PWM信号,通过P1.6和P2.0管脚发送给了驱动芯片,驱动芯片在输出给电机。物流搬运小车的PCB图如下图3.9所示。图3.9物流搬运小车PCB图4系统软件设计4.1物流搬运小车整体功能流程设计4.1.1物流搬运小车整体功能流程本次物流搬运小车其整体功能流程图如下图4.1所示。图4.1物流搬运小车整体功能流程图本物流搬运小车在上电初始化后,调用摄像头模块对AprilTAG进行检测,如果没有检测到AprilTAG,摄像头会继续检测,如果检测到了会对AprilTAG进行识别并将识别的结果发送至串行终端,并且会通过串口通信的方式发送给我们的物流搬运小车的主控芯片,让主控芯片做出对应的处理,在对获得的识别结果进行LCD屏幕显示的同时,主控芯片发送PWM信号通过驱动芯片到达电机,从而小车做出对应的动作。4.1.2物流搬运小车整体功能优缺点本次物流搬运小车的设计,是基于AprilTAG识别的,属于机器视觉,比那些基于磁导航的物流搬运小车定位更为精确,这样的导航方式使得本次设计的物流搬运小车具有结构小巧灵活,对物流搬运小车铺设路径以及改变物流搬运小车的路径比较方便等特点,而且在物流搬运小车运行过程中,对声光没有干扰,不会影响到别的依靠声光而工作的仓库机器人。本次基于AprilTAG的物流搬运小车,对于其路径的问题可能需要定期的维护,防止AprilTAG被磨坏,而且可能会对仓库的场地平整程度有很高的要求,如果场地不平整,AprilTAG可能不会被容易地检测出来,从而导致小车的路径出错。4.2物流搬运小车传感器模块软件设计本物流搬运小车的传感器模块的软件设计主要是打开调试摄像头,其流程图如下图4.2所示。图4.2物流搬运小车传感器模块软件设计流程图通过import导入摄像头对象sensor,通过调用摄像头对象sensor的reset方法将摄像头进行初始化配置,通过调用set_pixformat方法对摄像头进行设置像素格式,在设置像素格式这个方法内,可以设置成GRAYSCAL灰度图像和RGB565彩色图像,彩色图像的处理速度要比灰色图像慢。然后通过调用set_framesize方法设置每帧的大小,在本程序中设置为QQVGA模式即160*120图像尺寸。再之后是设置skip_frames方法让摄像头在等待时间后变得稳定。用相机拍摄一张照片的方法是snapshot,通过它返回image对象,然后可让LCD屏显示。4.3物流搬运小车通信接口模块软件设计4.3.1通信接口模块软件方案设计在stm32最小系统板这部分,单片机接收数据的方式有中断和查询两种方式,所谓的查询方式就是在物流搬运小车的程序主循环当中,不断地去循环检查标志位、去接收数据,如果标志位检测为1就说明我们接收到了串口数据,然后再去对串口接收的数据进行处理,这样做的好处是在编程上比较简单,并且物流搬运小车主程序不会被中断,当我们需要接收串口数据的时候再去接收查询,不需要接收数据的时候甚至可以不去管它,但是查询方式有一个很致命的缺点,就是失去了实时性。因为在我们的编程当中,查询程序只能作为整个主程序其中的一小部分,我们还会有其他的程序功能需要处理实现,假设我们在做一个项目的时候,串口接收到的数据必须要求马上去处理,这种时候如果是等待主函数查询到串口的标志位,那么时间上可能已经过去了很久,而本次物流搬运小车系统中,必须解决对实时性及时处理的要求,所以在stm32最小系统板的通信接口模块软件设计中我选用了串口中断的方式去接收PYAI-K210开发板发来的数据。4.3.2通信接口模块软件设计物流搬运小车的通信接口模块分为PYAI-K210开发板和stm32最小系统板,其中PYAI-K210开发板通信接口模块的软件流程图如下图4.3所示。图4.3PYAI-K210开发板通信接口模块软件设计流程图在PYAI-K210开发板的通信接口模块软件设计中,首先通过import导入串口模块,然后配置串口的引脚IO6和IO7,之后调用machine.UART方法创建了UART对象,配置了其串口编号、波特率、数据位、校验位、停止位、串口接收超时的时间和串口接收缓冲的大小。然后调用UART.read方法可以读取串口中缓冲的数据,调用UART.write可以通过串口发送数据。stm32最小系统板的通信接口模块的软件流程图如下图4.4所示。图4.4stm32最小系统板通信接口模块软件设计流程图在stm32最小系统板的通信接口模块软件设计中首先进行了其端口、系统时钟的初始化,之后配置了中断模式,最后对其串口进行了配置和初始化,设置了其波特率,数据格式的字长,配置其停止位、校验位,然后对其初始化,选用ENABLE开启串口中断。在main函数里调用了这四个初始化配置,当检测到指定的USART发来数据时,程序就会发生串口中断,去执行串口中断的服务程序,检测标志位并去接收PYAI-K210开发板发来的数据。使用这种方式进行处理,每次串口在收到数据之后,都会自动地中断主函数中的程序,直接跳转到中断服务的程序,执行接收后,再跳回到主函数内容中。这种使用中断的方式,能够保证串口在收到数据的一瞬间,马上跳转到中断服务程序,来做及时的处理,不会有任何时间上的耽搁,对我们本次物流搬运小车的系统来说,是非常合适的。而在物流搬运小车系统的中断服务函数当中,加入了一条判断语句,if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET),在这条判断语句中加入了一个函数USART_GetITStatus,它的功能是检查指定的USART中断是否发生,在这里函数里我们处理的是USART_IT_RXNE接收中断,因为有很多种方式都能够发生中断进入中断服务函数,比如发送中断、溢出错误中断等等,所以必须确保我们处理到的中断是接收中断才可以。所以在中断服务函数中,只有我们的串口接收到数据,才会进入到中断服务函数。如果我们需要接收多个数据,可以创建一个数组用来接收多个数据信息。4.4物流搬运小车LCD显示模块软件设计本次物流搬运小车的LCD显示模块选用了LCD9648液晶屏,其软件设计流程图如下图4.5所示。图4.5物流搬运小车LCD显示模块软件设计流程图在程序的开始时导入了LCD9648模块即LCD9648.h文件,在LCD9648.h文件中我们共用到了三个被定义好的函数,初始化函数、界面清空函数、显示数字函数。在本次物流搬运小车的设计中,我根据小车获取到的AprilTAG结果不同,总共设置了5个档位,其中在0号档位的时候是小车的初始档位,在该档位下表示小车已经启动,准备工作。在1号档位的时候表示是刹车挡位,当小车在工作的时候扫描获得了1号档位就要进行刹车停止,等待工人们给小车装货或者卸货。在2号档位的时候表示是小车的直线运行挡位,小车会沿着直线一直行走直到扫描获得别的档位。在3号档位的时候是小车的左转档位,当小车扫描到3号档位的信息时候,会进行左转向,如果小车在直线行驶而显示3号档位则表示小车刚经过左转而运行过来,也便于工人们判断小车来时的方向。同理在4号档位的时候是右转档位,小车在扫描到信息后会进行右转向。而程序中LCD主要的功能就是去显示小车的这五个档位。4.5物流搬运小车功率驱动模块软件设计4.5.1功率驱动模块软件方案设计本次物流搬运小车通过驱动芯片去控制小车的电机运作,在控制方法上有两种选择,首先第一种控制方法是在程序中调用延时函数来控制物流搬运小车的电机运作,程序调用延时函数产生一段时间高电平,再调用延时函数产生一段时间互补的低电平,即通过在一段时间内延时高低电平时间来模拟PWM输出。因为调用延时函数所采用的是stm32单片机内部自带的滴答定时器,所以精度方面会很高,能够达到控制物流搬运小车电机的精度要求。但是如果本次物流搬运小车的系统选择调用延时函数来控制小车的电机工作,会导致STM32F103C8T6该芯片的工作效率低,因为在主循环中调用延时函数是需要占用芯片的工作时间,我们利用stm32最小系统板控制物流搬运小车电机的时候,就不能实时性很高地去处理其他工作。所以在本次物流搬运小车的系统中我并没有选择延时函数来控制电机,而是采用了第二种控制方法,选用stm32单片机内部配置的专用PWM脉宽调制器,通过PWM脉宽调制器来产生能够控制物流搬运小车电机工作的高低电平。本系统中选用PWM来控制电机,物流搬运小车的芯片就不需要参与物流搬运小车电机的控制工作,物流搬运小车的芯片可以去控制其他的任务,在很大的程度上提高了本次物流搬运小车的系统内部工作效率。PWM即脉冲宽度调制,它可以简单的称作为脉宽调制,也就是我们常说的占空比。它是利用单片机的数字输出部分也就是高低电平的输出,来对模拟电路来进行有效控制的一种很有效的方式,这也是PWM最为核心的应用,其应用广泛,在测量、通信和功率控制等领域应用颇多。在本次物流搬运小车的系统中利用PWM信号来控制小车电机进行运作,实际上就是利用高低电平所占用的时间长度来决定物流搬运小车电机转动速度的快慢,其本质上是一种模拟控制。PWM的特性是每个PWM的周期它的长度固定不变的,PWM多个周期不断地输出就产生了PWM的频率。也就是说,在脉宽调制中其频率是固定不变的,唯一变化的是PWM信号中高电平和低电平时间长短的关系。高电平的长度短一点其对应的低电平就要长一点,所以PWM所需要调制的最本质最核心的东西就是高低电平比例的变化,通过不同的高低电平比例,来达到不同的控制效果,这也就是PWM脉宽调制的最基本原理。在单片机的内部,本身是没有时间这个概念的,其内部时间的产生本质是通过计数来实现的,定时器实际上就是以一个时钟周期为单位,以单片机其主频晶振的频率为基准。每过一个时钟周期单片机就会计一位,计数器可以从0开始累加,也可以从设定的值开始递减,每隔一个机械周期即一个主晶振频率的周期,计数器就会加一或者减一,当加到或者减到头的时候,产生溢出信号,将计数器清零重新开始。在stm32中脉宽调制就是由定时器产生,其包括了一个高级定时器TIM1,外加三个普通的定时器TIM2、3、4。其中TIM2、3、4它们三个定时器是通用的标准定时器,其三个可以同步运行,且它们三个每个都拥有一个16位的预分频器和16位的自动加载递加或者递减的计数器,拥有四个相互独立的可以用于PWM输出的通道,也就是说这三个通用的标准定时器可以实现这四个功能其中就有我们需要的PWM。在本次物流搬运小车的系统中,我选用了TIM3、4两个定时器来控制小车的两个电机。4.5.2功率驱动模块软件设计本次物流搬运小车功率驱动模块的软件设计流程图如下图4.6所示。如图在物流搬运小车功率驱动模块的软件设计程序中,在程序开始的时候导入了PWM.h文件,这是使用PWM功能来控制电机的相关驱动。在主程序里面调用了TIM3_CH1_PWM_Init与TIM4_CH2_PWM_Init这两个函数,这两个函数就是定时器的初始化函数,它们负责初始化定时器三的通道1和定时器四的通道2。这两个函数有两个参数,其第一个参数是定时器的溢出值ARR,当定时器计数到与ARR相等的数值时,定时器会产生溢出的信号,并清零。其第二个参数是分频系数,它的功能是对定时器的时钟来源进行分频,如定时器所使用的定时器使用的时钟是72MHz,则可通过第二个参数对时钟频率进行分频,分频之后所输入的时钟频率变小,定时器的计数时间会变长,相当于计时时间变慢,这样能够达到更长时间的计时效果,通过加大分频系数,可以达到更长时间的定时效果。然后调用TIM_SetCompare这个函数对定时器的CCR值进行设置,CCR即PWM占空比,其共有两个参数,第一个参数是定时器的名字,选择需要设置的定时器。其二个参数是CCR值,也就是对其高低电平比例进行设置,在本代码中ARR值为499,当我们CCR值设置为499时,全为低电平,小车停止。在小车运动过程中为了防止其速度过快而带来的各种安全隐患,所以设置了其运动时CCR值为300。在主程序中对两个定时器3、4进行初始化,设置了其CCR初始值为499也就是小车处于第0号档位,停止等待的阶段。之后如果接收到了来自PYAI-K210开发板传来的数据,那么就会进入串口中断函数,当接收到2号档位的信息时,定时器3、4的CCR值全部设置为300,让它不至于过快的进行直线行驶。当接收到1号档位的信息时,两个定时器的CC值变为499,进行刹车操作,等待工人对物流搬运小车进行装卸货物。当接收到3号4号档位的信息时,就会让其中一个定时器的CCR值为300,另一个CCR值为499,并且延时一小段时间,这段时间就是小车进行转向的时间,过了这段时间之后再次让两个定时器CCR值变为300,让小车再转向后继续前进。图4.6物流搬运小车功率驱动模块软件设计流程图4.6物流搬运小车AprilTAG识别程序软件设计4.6.1对AprilTAG识别原理AprilTAG是一种基准标志,它与二维码非常的相似,但是与二维码的复杂程度比起来还是简单了不少,并且能够满足实时性的要求,AprilTAG标记在机器视觉这个领域内要比二维码更有用处,因为可以通过AprilTAG计算出位置、方向等许多信息来完成各种任务。通过识别AprilTAG可以获得大致两种信息:其id信息与其3d位置,而在本次物流搬运小车的设计中,我们选择将AprilTAG贴在地面上,以便小车上镜头朝下的摄像头可以检测识别的瞬间进行线路的调整,所以在本次AprilTAG的识别程序中,我只针对了AprilTAG的id进行了识别,这样既可以模拟物流小车在仓库情境下的工作情况,也会让小车在针对AprilTAG识别结果做出反应的代码中变得不那么复杂。AprilTAG有许多的种类,在本次设计中选用MaixPy自带的AprilTAG生成器所推荐的TAG36H11这个种类。AprilTAG的识别过程流程图如下图4.7所示。图4.7AprilTAG识别过程流程图AprilTAG的识别过程大致可以分为三个步骤。第一个步骤是寻找一个图像,并检测出这个图像的边缘。而第二步则就是根据检测出来的这个图像的边缘进行算法筛选,在这个过程中会运用一种叫边缘结构分析的算法,用该算法首先会对获得的边缘进行剔除,剔除的主要是那些不是直线边缘的图像,然后在直线的边缘进行与其相接的边缘检测,直到最后能够获得一个四边形的形状。最后一步则是解码的过程,通过解码对检测到的四边形内的白色方块进行分类,通过算法将其分为正例色块与负例色块,将这两个色块设定为1和0,就得到了AprilTAG的编码,通过这个编码与AprilTAG编码库内的编码进行快速匹配,如果正确则会输出其各种信息,错误的话则就返回第一步继续寻找图像进行检测。4.6.2物流搬运小车AprilTAG识别程序设计物流搬运小车AprilTAG识别程序软件设计流程图如下图4.8所示。图4.8AprilTAG识别软件设计流程图如上图在AprilTAG识别程序中,导入了之前的摄像头和串口模块,并对摄像头和串口进行了初始化和配置,我们从摄像头所拍摄的图像中调用sensor.snapshot这个方法来获得一个image对象,调用find_apriltags这个方法,考虑到性能的问题,这里将摄像头帧的大小调整为160,120,同样的识别AprilTAG的区域就变成了0,0,160,120,而这个方法的功能就是查找该区域内的所有AprilTAG并返回一个image.apriltags对象列表,之后程序使用一个for循环,去遍历这个列表,获得里面AprilTAG的id值,并根据其id值的不同输出不同的数。在这里我一共生成了10张AprilTAG,对应的id值就是从0到9,如果识别到0,那么就通过串口发送字符串0,同理识别1就是发送1,当是偶数且不是0时发送2,当是奇数且不是1时发送3。在小车的档位程序中,我设置其档位是这里所发送的数再加1,比如识别到了0,那么就是小车的1号档位,也就是小车刹车停车的档位。5系统调试过程5.1物流搬运小车传感器模块与K210通信接口模块调试本设计系统中物流搬运小车传感器与K210通信接口模块调试整合了传感器模块摄像头的代码与通信接口模块的代码和AprilTAG识别部分的代码,在调试中需要识别AprilTAG并在输出串行终端,并在串口调试工具中能够接受成功,说明在PYAI-K210这个开发板上物流搬运小车的所需要的所有模块以成功实现。当用id号为0和3的AprilTAG让PYAI-K210开发板去检测时其结果如图5.2所示。图5.1AprilTAG的id为0和3时测试图在通讯接口模块的测试中,我先用PYAI-K210开发板与电脑上位机进行串口通信进行测试,我选用了STC-ISP软件中的串口助手来作为测试工具,并用USB转TTL工具连接PYAI-K210开发板进行模拟测试,其接线图如下图5.3所示。图5.2USB转TTL接线图打开串口助手,选择串口号,并设置其波特率9600,进行PYAI-K210开发板发送数据,电脑串口助手接收区测试结果如下图5.4所示。图5.3PYAI-K210开发板通信接口模块测试图由以上测试结果得知,PYAI-K210摄像头模块、通信接口模块、AprilTAG识别程序的功能及三个模块的整合调试成功。5.2stm32通信接口模块、LCD显示模块、功率驱动模块调试由于stm32最小系统板可以通过USB线进行串口数据的传输,此模块的通信接口模块的调试就基于USB线进行,其开发板原理图如图5.4所示。图5.4st
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 气候型公共卫生风险评估框架构建
- TVOC 检测技师考试试卷及答案
- 4.1.1 人类的起源和发展课件(共27张)2021-2022学年人教版生物七年级下册
- 冠状动脉钙化病变诊治中国专家共识(2025版)权威解读
- 第三章 第1讲 牛顿运动定律(教师版)
- 第二章 第7讲 专题强化:平衡中的临界、极值问题(教师版)
- T∕AOPA 0103-2026 架空输电线路多旋翼无人机档中巡视技术导则
- 康复医学平衡功能的统计生物力学与结果跌倒预防
- 湖南省长沙市岳麓区湖南师范大学附中2026年高三二模考前化学试题综合练习一含附加题含解析
- 神经导管周围的再生微生态调控
- 河南资本集团笔试题库
- 2026年ESG(可持续发展)考试题及答案
- 2026广东广州市越秀区人民街道办事处招聘社区退管专职人员2人笔试参考题库及答案详解
- 13.1 在劳动中创造人生价值 课件(内嵌视频)2025-2026学年统编版道德与法治七年级上册
- 2026年科技馆展品维护工程师面试技术问答
- 2026年新版事故应急处置卡模板(新版27类事故分类依据YJT 32-2025要求编制)
- 身骑白马 SSA 三声部合唱谱
- 2026广东中考历史押题必刷卷含答案
- 2026年高级社会工作师押题宝典题库及1套完整答案详解
- 2026年辅警转正考试时事政治试题及答案
- 银川市、石嘴山市、吴忠市三市2026年高三年级学科教学质量检测语文
评论
0/150
提交评论