|
楼主
查看: 7944回复: 4
发表于 2019-8-12 13:54:27
只看该作者
作者:陈银通 陈苏阳 金丽华
摘要
系统采用STM32(STM32F10O3RCT6)作为停车场控制系统和小车控制系统的核心,控制装登通过按钮选择小车停车位并通过无线模块发送给小车,实现小车自动驶人停举位。格制装置通出摄像实格测小车位置及角度并发送给小车。小车通过控制装置的反馈来调整自己的位置,并运用PO运算检制小车速度,同时利用麦克纳姆轮的水平位移,让小车更精准、快速到达停车位。系统还另有声光提示电路、电机驱动电路、电源电路等组成电路。
一、方案比较与选择
1.主控制器的选择与论证
方案一:使用51系列单片机。STC51系列单片机具有价格低廉、使用简单、中文资料较多等特点,但其运算速度相对较低,片内外设不够丰富。
方案二:使用STM32处理器。基于ARM Cortex-M3内核的STM32F103RCT6嵌入式处理器内部资源丰富、功耗低、时钟频率高、拥有51个GPIO口,3个通用功能的16位定时器可实现硬件PWM信号产生,具有比51系列单片机更大的RAM和ROM,并且主频更高,外设VO口配置更灵活。由于系统需要PWM调速来控制4个驱动电机,需要大量字符串操作以及液晶屏显示,并需要对小车位置进行快速、实时调整,经综合比较,采用方案二。
2.小车位置检测装置的选择与论证
方案一:选用超声波定位装置。在小车上设置一个固定频率的超声波源,并在场地四角分别设置4个超声波接收装置,超声波发射与接收装置之间通过无线通信,小车需要定位时通过比较4个超声波接收装置收到超声波脉冲的时间差来计算小车位置,这种方法不受环境光线影响,但容易受到外界震动以及噪声影响,制作调试复杂。
方案二:选用摄像头定位装置。在场地上方设置支架,使用摄像头以俯视的角度拍下场地图像,同时在小车车顶设置特殊图案,通过色块定位或其他图像识别方法来确定小车位置。这种方案根据具体实行细节与方法不同又有较大差异,使用单片机做图像处理,由于单片机性能有限,无法实现复杂算法,并且工作量大,图像处理分辨率以及帧率都较低。使用OpenMV图像处理模块时,由于OpenMV是一个开源、低成本、功能强大的机器视觉模块,可以在单片机中运行,提供Python编程接口,常用算法有相关库提供支持,底层功能无须自己实现,适合快速开发。经综合考虑,最终采用方案二中的OpenMV模块。
3.通信方式的选择与论证
方案一:采用蓝牙通信。使用基于蓝牙通信协议的蓝牙串口模块,该方案相对成熟,且对蓝牙协议本身做了透明化,方便单片机调用,但在实际使用中蓝牙通信易受干扰,且需要一段相对较长的连接配对时间。
方案二:采用红外通信。因小车与控制器主要以单向通信为主,可以使用红外通信的方法,该方法不易受到周边电磁射频环境的干扰。但做双向通信时较为复杂。
方案三:其他无线通信模块。使用NRF24L01模块、C1101模块等通信模块,其方案相对成熟,且大部分模块连接迅速、稳定性好。经综合考虑,最终采用方案三。
4.电机驱动的选择与论证
方案一。猜中L298模块驱动。使用L298模块驱动的好处是,只要在输入端加简单的控制信号,
就能实现电机的调速,但工作电流大,模块将产生很大的损耗,需大散热片进行散热。
方案二:采用TB6612FNG模块驱动。TB6612FNG是基于MOSFET的H桥集成电路,效率远高于晶体管H桥驱动器。与L298模块相比较,它无须外加散热片,外围电路简单,只需外接电源滤波电容就可以直接驱动电机,利于减小系统尺寸。
经综合比较,选择方案二。
二、系统硬件设计与实现
1.方案描述及泊车原理分析
本系统以STM32微控制器为核心,通过摄像头检测小车位置和小车Z轴旋转角度,并将数据发送给STM32控制装置。STM32控制装置通过无线模块发送给STM32执行装置,STM32通过矢量合成算法来处理并计算得出小车各个轮胎所需求的转速,再由PID算法控制PWM的占空比,从而调整转速,实现小车的转向和前进。按键可进行停车位的选择,液晶显示屏可观察停车时间和停车费用。
2.电动小车设计
为了使小车转弯更加灵活,使用四轮四驱的总体方案,初期使用普通橡胶轮胎,经过测试,在1、2、3、4号停车位表现良好,但在5、6号停车位表现欠佳,主要表现在进人车位以及退出车位的运动窗口过小,导致失败概率过大,并在停车位内无法进行良好的姿态调整。
经过与组员讨论,为了解决转向不足以及姿态调整问题,并尽可能地达到快速进入退出停车位。
最终决定采用麦克纳姆轮作为车轮,并使用对应的麦克纳姆轮控制算法对小车进行运动控制,使小车具有任意角度运动能力以及原地旋转能力。
由于用于小车定位的OpenMV模块的处理能力有限,只能处理160×120分辨率的图像,而小车定位需要对AprilTag图像进行识别,所以为了提高识别准确率,降低丢失目标概率,有两种改善方案。
方案一:加大AprilTag图像面积,使其在摄像头画面中的面积增加。
方案二:升高AprilTag高度,将其设置在距离摄像头更近的位置。
如果使用方案一,会导致车身面积大幅增加,从而直接影响运动难度,并增加碰撞的可能。由于题目对小车最高高度的限制为不超过20cm,而原小车本身高度不到10cm。这给方案二创造了条件,最终使用了方案二,通过在小车底盘上加装铜柱,铜柱上固定泡沫板的方式加高AprilTag图像高度。
3.计时、计费功能的实现
计时、计费功能的核心为对电动小车通过计费线时刻的识别。由此使用现有的八路激光循迹模块,安装至计费线所对应的隔板上,并调整其灵敏度,使其在小车经过时输出信号至单片机,单片机中使用该信号作为定时器的触发计时信号,并在小车第二次经过计费线,单片机第二次收到信号时停止计时,由此可得出两次信号的间隔时间,并通过相关公式达成计费功能。
单片机得出时间及费用后,根据题目要求在显示屏中显示,并同时将时间与金额通过串口传人语音生成模块,生成语音提示。
4.碰撞检测功能的实现
由于本参赛组小车的长、宽最大尺寸均为小车车顶粘贴AprilTag图像的固定板尺寸,所以,碰撞检测功能本质是对AprilTag图像固定板与隔板之间的接触检测。由此本参赛组经讨论得出以下两套方案。
方案一:使用超声波等测距手段进行判断。
方案二:使用铜胶带等材料使隔板具有导电特性的手段进行判断。
由于隔板安装并非理想状态,且小车运动轨迹也并非理想状态,所以如要使用测距手段对碰撞进行检测,将需要进行大量的测试以收集数据。
而方案二则是让隔板以及小车共同形成一个类似按钮的效果,小车周圈贴有两圈不同高度的铜胶带,正常情况下两圈铜胶带并不接触。但如果在隔板上对应高度也贴上无间隔的铜胶带,当车撞击或刮碰隔板时,便会使小车上两圈贴好的铜胶带导通,可根据这一特性设置相关触发处理电路并通过单片机进行碰撞次数计数。
三、系统与程序设计
系统总体组成框图如图1所示。
由于使用了两块STM32以及两块51单片机,故在程序编写上采用了多人分工同时进行。由一人负责两块STM32的程序编写,程序功能范围主要在小车运动控制、摄像头数据转发等方面,另一人负责51单片机编程,可实现题目中基本要求(1)的内容,并将车位数据发送给控制装置中的STM32,从而大大减少编程时间,增加人员利用率,提高总体效率。
本系统的控制**为小车,小车的程序流程框图如图2所示。
小车的控制由OPenMV模块拍摄的图像作为反馈,达到了对小车进行位置控制以及小车Z轴旋转角度控制。并通过控制小车运动逐一到达程序所设定的路径点,来分步完成停车位的停人以及驶出操作。
四、测试方案与测试结果
在小车电池满电以及场地表面洁净无灰尘、环境灯光良好的状态下进行测试,使用正常操作流程进行操作,测试结果见表1。
车位 | 停入结果 | 驶出结果 | 平均时间 /s | 1 | 80%成功率 | 80%成功率 | 24 | 2 | 90%成功率 | 90%成功率 | 23 | 3 | 90%成功率 | 90%成功率 | 21 | 4 | 70%成功率 | 70%成功率 | 20 | 5 | 100%成功率 | 100%成功率 | 23 | 6 | 100%成功率 | 100%成功率 | 21
|
从测试结果可以看出,在摄像头边缘(场地边缘)的车位成功率偏低。测试后进一步通过观察摄像头图像以及小车坐标,发现场地边缘由于镜头畸变会导致小车坐标非线性,且Z轴旋转角度有偏差,在OpenMV中使用桶形变换后偏差有所改善,但仍然存在。
电动小车采用了麦克纳姆轮,控制装置采用了测距与图像识别相结合的自动纠偏方法,准确而又快速地实现了自动泊车的功能。
|
|