庄浩 范志超
摘要:自动跟随购物系统是一款基于光学视觉跟踪模块以及模块化自动跟随底盘的购物系统。其可以自动完成对标定购物者的光学捕获与跟踪。使购物者可以将购物者的精力全部放在购物上。
关键词:光学AprilTag跟踪;可扩展底盘;增量PID控制算法
中图分类号:TP311.52 文献标识码:A 文章编号:1007-9416(2018)05-0151-01
1 引言
机器视觉是从光学领域获取相应信息的机器系统。目前机器视觉的实现多依赖于X86以及ARM cortex-a系列的高端处理器以及相应的高端软件开发。其整个系统的实现对于体积以及相应的低成本系统的开发与调试均有相当不小的挑战。自动跟随购物车的光学跟踪系统是一种低成本,袖珍的的机器视觉跟踪系统。在这里,我们采用了国外最新的袖珍光学视觉模块openmv3。通过Openmv模块以及其内置的相应机器视觉算法,我们可以捕获到购物者的空间方位以及相应姿态,并通过UART(异步串口)向自动跟随底盘发出相应的控制指令,从而达到跟随购物者的目的。
2 Openmv的相应构建
openmv是一款通过python语言控制的机器视觉系统。Openmv由高性能处理器STM32F765与豪威公司的OV7725构成。由于目前对人体的面部识别算法以及相应的人体特征提取算法均需要对相应数据模型进行大数据训练。而此要求对于在商场的自动购物场合均显得特别不合时宜。故我们在这里采用SLAM中应用广泛的Apriltag二维码视觉跟踪系统。
AprilTag是一款具有相应的多个码型家族,允许用户自定义生成的一种特殊二维码系统。Openmv模块通过识别其所拍摄的图像数据,可以迅速的判断出图像中是否具有相应的Apriltag对象。并且openmv模块可以使用相应的类方法获取空间中所有Apriltag对象的空间数据。我们这里通过openmv中内置的Apriltag类方法获取了openmv所拍摄的每一帧图像中的Apriltag中的类参数。通过区分不同Apriltag码的码家族family,码id,码空间距离与姿态situation,碼光流移动flow。我们可以比对出购物车底盘所要跟随的Apriltag对象。并且通过openmv中的UART类方法,将相应的控制数据发送给相应的控制底盘。
3 控制底盘的构建
控制底盘是一款基于单片机与传统PID控制算法的控制系统。控制底盘由减速电机、电机驱动、单片机、扩展WiFi模块以及电源模块所组成。其中单片机采用瑞萨公司的16位单片机R5F100LG,通信模块采用的是esp8266模块,电机驱动采用的是7A 160W的桥式CMOS管驱动模块,而电机则采用的是正科公司生产的555大扭矩减速电机。
单片机是整个控制底盘的核心,单片机的处理与开发效率直接决定着整个系统的好坏。在这里,我们采用的是瑞萨公司16位的R5F100LG单片机。我们的开发方法采用的是瑞萨公司的CubeSuite+软件。通过瑞萨公司相应的代码生成工具,我们直接生成了相应单片机外设的相关驱动的库函数。通过代码生成器以及库函数的相应开发,我们直接通过相应的外部中断以及UART接收函数得以获取openmv所发送的控制数据帧。从相应的控制数据帧中,单片机对于其中的特定对象的光流偏移数据进行PID运算,最终获取了要赋予单片机PWM控制寄存器的相应数据。
4 软件调试
由于openmv与控制底盘可以划分成相应的两个系统。所以面对两个系统我们需要分别去单独调试,特别是两个系统的通信与控制部分。
在openmv与单片机的通信系统调试中,由于openmv输出的数据类型为整型数据类型,而目前现有的串行通信都是基于八位字节的串行数据传输。所以我们需要写自己的控制协议。在这里我们将原来的基于16位整型数据的传输改为了相应的逐位八位字符型数据的传输。通过python中的相应str()字符串转换函数,我们得以先将整型数据转换为八位数据然后再通过相应的UART发送给相应的单片机。然后在单片机端,再通过相应的C语言判别以及位运算将字符串型数据恢复成相应的数个整型数据。
而在控制底盘的相应PID调试中,我们从通过相应机器视觉数据中提取出相应的距离数据与相应的对象偏移光流数据。然后对其进行相应的加权PID远算,最终PID函数会返回一个处于0-32000之间的整型自然数。返回出的相应自然数,则是相应要赋给单片机PWM生成器的计数判别值。
5 硬件调试
整个小车的硬件结构是围绕小车的主要功能去实现的。在硬件调试中,购物小车的硬件主要集中在电动机的控制与驱动上。由于购物小车的购物载重性。所以相应的四个电动机的驱动电流是一笔不小的功率开销,而由此引发的电动机与驱动H桥的高次谐波干扰更是对单片机以及相应的视觉模块产生了不小的影响。
在驱动调试中,我们设计了数字电路供电与驱动供电分开的设计。采用电容低通滤波电路与低压差线性稳压器相结合的方法去解决相应的数字电路供电受干扰的问题。而在进一步的实际测试中,发现电动机工作时电池电压波动影响AD采样的问题。相应的,我们采用在电机端并联电容滤波,以及相应的设计低通AD采样电路的方法去解决相应的采样不精确,易触发等问题。
6 结语
openmv作为一款微型机器视觉模块,其效果是明显的。其与python语言的结合使得在体积与功耗要求较高的机器视觉应用场合,开发者可以得以更好的开发。相应的利用市场上最新推出的机器视觉模块以及传统的诸如PID控制算法,在微型机电一体化的设计上,我们便可以完成更多的基于视觉的产品设计,其相应的扩展了机电一体化设计的设计视野。
参考文献
[1]阮秉涛.电子设计实践指南[M].高等教育出版社,2013.
[2]黄志伟.全国大学生电子竞赛系统设计[M].北京:北京航空航天大学出版社,2013.
[3]童诗白,华成英.模拟电子技术基础[M].四版.北京:高等教育出版社,2006.
[4]阎石.数字电子技术基础[M].五版.北京:高等教育出版社,2006.
[5]胡寿松.自动控制原理[M].五版.北京:科学出版社,2007.
[6]Eric Matthes Python编程从入门到实践[M].北京:人民邮电出版社,2016.
[7]Stephen Prata C Primer Plus中文版[M].五版.北京:人民邮电出版社,2005.
[8]MicroPython与Openmv中文文档.广州星瞳科技有限公司.2018.
[9]RL78/G13开发套件快速入门教程.瑞萨电子中国有限公司.2015.