摘要
根据要求设计并制作智能送药小车,在地图中实现药房与病房间的药品送取作业。小车采用四轮驱动,以 STM43F407VET6 作为主控,以 Sipeed K210 采集分析行进中的场景信息,以红外传感器感知药品装载,部通过红、绿、蓝、黄、白等色 LED 显示状态,通过 nrf24l01 无线通信实现两车之间通信。当按下开关后,小车进入等待状态,检测到号码标识和药品装载完成后,自行行进到指定病房并通过指示灯显示状态,待取下药品后自行返回。两车协作时,选择反向路径作为等待区,1 车到达指定病房后告知 2 车启动作业,2 车到达等待区后告知 1车进行卸载药品并返回,1 车返回后告知 2 车去卸载药品并返航,完成整个题目。小车行进中通过视觉进行大闭环保证车辆的直行,通过识别路标完成路径选择。
1、设计方案工作原理
1.1 预期实现目标
基本要求:分三次抽取目标,第一次为 1 或 2(近端),第二次为 3 或 4(中部),第三次为 5、6、7、8(远端)中分别抽取一个目标,可以完成识别,并自动沿红线运动到指定病房,完成药品运输。小车可以检测到是否有药,并通过搭载的 LED 灯显示状态,最远端单程运动时间不超过 20s。
发挥部分:分两次抽取目标,分别为 3 或 4(中部),以及 5、6、7、8(远端),首先启动 1 车到达指定药房,1 车向 2 车发信号启动 2 车,2 车到等待区域后告知 1 车,1 车卸载药品并返回,在返航途中告知 2 车,2 车到指定病房卸载药品。以最远端作为考量,作业时间不超过 60s。
1.2 方案比较
1.2.1 控制器方案
方案 A:基于 MEGA2560 的主控
MEGA2560 管脚丰富,利用 Arduino 的 IDE 进行编程,界面友好易上手,但主频较低,无法满足复杂的控制需求。
方案 B:基于 STM32F407 的主控
相对比 MEGA2560,STM32F407 在功能上更加丰富,可以进行复杂的控制程序设计。
1.2.2 巡线方案
方案 A:基于红外的循迹模块
该传感器的探测距离可以通过电位器调节、具有干扰小、便于装配、使用方便等特点,可以广泛应用于机器人巡线、巡线车、流水线计数及黑白线循迹等众多场合。
方案 B:基于灰度判别的循迹模块
该方案成本较低,易于制作,但其缺点在于周围环境光源会对光敏二极管的工作产生很大干扰,一旦外界光亮条件改变,很可能造成误判和漏判;
方案 C:基于视觉的循迹模块
利用图像的滤波、二值化、膨胀和腐蚀等算法对摄像头采集的图像进行预处理;然后利用边缘检测和形状识别算法获得引导线的路线信息。
1.2.3 路标识别方案
方案 A:基于 K210 的目标识别系统方案
K210 模块具有视觉和听觉处理能力,功耗低,性能高的特点,常被嵌入到门禁系统、考勤系统等。但它的内存短板,减小了系统复杂度的同时,给软件带来了优化难度。
方案 B:基于 OpenMV 的目标识别系统方案
嵌入式摄像头 OpenMV 是一种方便进行二次开发的嵌入式视觉解决系统,可以通过二次开发解决视觉方案终端部署的问题,从一定程度上解决传统目标识别系统存在的结构复杂、不易部署的问题。
1.2.4 最终方案
对比方案优劣,结合题目要求,最终设计一款四驱小车,主控芯片为STM32F407,视觉传感器采用 K210(或 OpenMV),通过压感检测药品装载与否,车载 RGB 三色 LED 灯显示车辆状态,两车之间的通信通过 nrf24l01 实现,车载 OLED 屏幕显示调试信息。车辆运动决策由视觉传感器感知周边环境后给出控制指令,车载主控根据控制指令实现对车辆的运动控制。
1.3 系统结构工作原理
系统结构如图 1 所示,小车采用四个带编码的直流减速电机构成四驱车体,以 STM32F407 作为主控,OpenMV 采集并分析小车行进过程中的场景信息,并将结果通过串口告诉主控,药品传感器感知小车是否装载药品,通过数字口告诉主控,小车搭载 nrf24l01 无线通信模块,在扩展部分实现两车通信,主控根据上述传感器得到的信息驱动小车作业。
图 1 送药小车系统构成示意图
1.4 功能指标实现方法
1.4.1 20S 内完成单程作业
考虑到旋转运动路径,结合图纸,以 400cm 作为最长行进距离,小车轮径6.5cm,轮周长 20.4cm,直流电机转速为 264rpm,即 4.4 转/秒,全工作状态下小车速度约为 89.76cm/s,完全可以满足 5s 行进 400cm 的速度要求,有充足的时间完成其他作业动作。
1.4.2 巡线功能
图 2 前置摄像头场景信息
摄像头前置安装,可以拍摄到地图上的导航线,通过设置 ROI 区域,保留底部的区域进行二值化,然后如图 2 所示三等分记为 ABC,对二值化后的每个区域内计算均值,当均值大于经验阈值时置为 1,当 ABC 为 010 时,认为没有偏差,110 时为左偏,011 为右偏,由摄像头将信息传给小车主控,小车主控做
出调整。
1.4.3 路标检索与匹配
通过前置摄像头采集指定病房号并保存,在行进过程中分析场景信息,利用图像特征匹配实现对路标的检索和路径选择,达到视觉导航的目的。
1.5 测量控制分析处理
1.5.1 作业用时测量与分析
基本物理测量通过卷尺、直尺、秒表和弹簧秤完成。
小车作业时间统计(10 次取平均)如表 1 所示。以最远端为例,车需行进385cm,左转弯(或右转弯)共 2 次,根据表 1 的时间统计,行进时间约为 s,所余时间满足药品上下作业时间,因此可以达到基本要求中所述的 20s 内完成运送和返回作业。
1.5.2 路标识别
图 3 路标采集与训练现场
题目中,利用数字 1~9 来对病房进行编号,利用黑白相间的类棋盘区域标识病房,首先利用车载摄像头拍摄场景信息,对病房号和病房标识图像进行样本采集,利用 YOLO 进行训练,最后在 K210 上进行部署,实现对路标的识别。
1.5.3 巡线与路径选择
场景中黑色框线和红色引导线并存,利用图像处理技术,将引导线作为关键区域进行提取生成二值图 ,提取底部区域作为引导的 ROI 区域,将 ROI 区域三分为 ABC,分块计算区域 A、区域 B 和区域 C 的像素均值,当均值大于经验阈值时,记为 1,因此 ABC 有三种状态 010(正常)、110/100(左偏移)、011/001(右偏移),当出现状态 000、101、111 时认为异常,通过小车自旋转实现重定位。当检测到路标时,根据路标与区域 B 横坐标的位置差,来确定车辆的路径选择是左还是右,然后给出小车的转向策略,由于 2 车作为从动车,且等待区域为病房对面的走廊,因此,2 车的转向策略是与 1 车是相反。
图 4 巡线与路径选择实景
2、核心部件电路设计
2.1 主要器件性能分析
主控板采用 STM32F407,接口丰富,体积小功耗低,根据前期分析,其所提供的接口,可以完美满足系统需求且该模块算力可以满足项目预设要求。电机驱动采用 BTN7971B 集成大电流半桥,可以满足小车的负载要求。摄像头采用OpenMV,可以进行二次开发,在摄像头端实现对图像信息的分析处理,并通过串口进行数据输出,减少主控计算量。
2.2 电路设计与测试
电路设计主要是针对主控板管脚设计底板来规范主控板与外设的接口,包括4 路电机控制与反馈端口,与摄像头的通信接口,12V to 5V 降压稳压模组,IIC外设接口,通用数字模拟 IO 口进行传感器连接。将所有外设通过定制的底板连接到主控后,进行测试,可以实现调速,摄像头检测到病房号后通过串口告知小车并在车载 OLED 屏幕显示,装载完成药品后运抵病房亮红灯等待卸药,完成卸载后返回药房亮绿灯。在发挥部分,1 车抵达病房后 2 车运动至等待区域并亮黄灯指示,1 车卸载后返回,然后 2 车去病房卸药,最后再返回。上述流程测试现场如图 5 所示。
图 5 部分功能测试现场图
3、系统软件设计分析
3.1 系统工作流程
图 6 1 车、2 车作业流程图
对比基础部分和扩展部分,将 1 车和 2 车的作业流程做出优化,1 车在检测到病房号和药品装载完成后,启动小车运动,利用视觉进行大闭环实现车沿引导线直行,当检测到病房号标签时,做出路径选择引导车辆转向,当检测到病房标识时,停车等待卸载药品,药品卸载完成后,返航。
2 车相当于 1 车,作为从动车,等待区域设定为待定病房对面,当 1 车抵达病房后给出信号,2 车运动至等待区域告知 1 车,1 车卸载药品并在返航途中告知 2 车,2 车去指定病房卸载药品并返航。工作流程如图 6 所示。
3.2 主程序模块
见“8、附件材料”。
3.3 关键模块程序
见“8、附件材料”。
4、竞赛工作环境条件
4.1 软件环境
本系统程序的编写与编译使用 MDK5 软件、PyCharm 软件、串口调试助手等软件;使用 Solidworks 进行小车底板的结构设计和车体的装配仿真;使用Altium Designer 软件设计总控制电路。
4.2 仪器设备硬件平台
测试过程中使用万用表、示波器、稳压电源等仪器设备。
4.3 机加工安装条件
基本的工具如电烙铁、胶枪、螺丝刀、剪刀、小刀、扎带、剥线钳、老虎钳、套筒等,一台威布 3D 打印机,小车底盘采用前期的机加工底板,部分非标件采用 3D 打印。
4.4 前期使用模块
四驱小车方面,采用过 STM32F107、arduino nano 作为主控芯片,实现开环运动,车轮包括麦克纳姆轮,实现小车的全向平移运动。在嵌入式方面,采用过树莓派、Jetson NANO、Jetson XAVIER 等平台实现基于视觉的自动控制研究。在摄像头方面,使用过 K210,OpenMV 和 PowerSensor,对比三者,PowerSensor的二次开发更接近于图像处理,开源性能好,处理器强大,K210 和 OpenMV 对一些函数进行了封装,对于特殊要求的二次开发难以满足。
5、作品成效总结分析
5.1 系统测试性能指标
主要对车辆的作业时长、路线选择正确性进行测评,记录如表 2 所示:
5.2 成效对比
通过测试发现,可以如期完成题目要求的动作。
5.3 创新特色总结
对于小车部分,采用的是封装设计,即在车载主控完成基于编码器的闭环的控制,并对车辆的行进、停止、90°左转、90°右转、左偏矫正、右偏矫正、180°调头等基本动作进行封装,给出控制指令,预留串口方便上位机调用。采用带处理器的摄像头,采集并分析场景信息,对引导线的分析得出车辆位姿状态,与车载主控通信实现车辆的外闭环直线行进,通过识别场景中的路标信息进行路径选择,来实现视觉导航。
6、参考资料及文献
[1] 胡仁杰等.全国大学生电子设计竞赛优秀作品设计报告选编(2017 年江苏赛区)[M].南京:东南大学出版社,2018,P194-P231
[2] 黄智伟.全国大学生电子设计竞赛系统设计[M].北京:北京航天航空大学出版社,2016,P50-P57
[3] 康华光等.电子技术基础模拟部分[M].北京:高等教育出版社,2013,P158-P213
7、根据竞赛题中设计报告内容要求补充
无
8、附件材料
8.1 相关图纸
8.1.1 小车主板电路设计图
图 8.1 主控板底板原理图
图 8.2 主控板底板 PCB 图
8.1.2 小车主板结构工程图
图 8.3 小车主板结构工程图
图 8.4 小车主体装配图
8.2 主要程序清单
8.2.1 小车主控程序
请见附件