基于OpenMV的智能小车路径规划及定点摆放棋子的设计

2020-08-26 05:14朱伟枝杨亚萍
机电工程技术 2020年7期
关键词:舵机棋子底座

朱伟枝,杨亚萍,陈 智

(广东理工学院,广东肇庆 526100)

0 引言

智能搬运小车是一种无需人操作的搬运设备,是智慧工厂和快递行业重要的设备之一。随着经济的快速发展,传统的生产方式已经无法满足企业的需求,企业越来越重视现代化生产观念,因此智能搬运小车也随之飞快发展[1]。智能小车在仓库、码头、快递等多种行业起着关键作用,可以用于人类不宜或者无法劳动的工作环境中。运用智能小车的运送,不仅提高了运输效率,减少搬运行业的成本,而且还可以使工人免受伤害,因此对智能小车研究显得十分重要[2-3]。

本文提供了一种基于OpenMV[4]的智能小车路径规划及定点摆放棋子的可实践的合理化设计方案,通过OpenMV 视觉系统模块作为图像处理工具,以Arduino[5]控制智能小车实现循迹行驶,协同完成路径规划[6]及定点摆放棋子功能,满足卸载的搬运任务的要求。

1 智能小车总体结构设计

本文设计的智能小车总体结构主要分为3 个部分:传感器、控制中心和执行机构。传感器读取外界的信号,将周围环境的信息以数据的方式反馈给控制中心;控制中心通过处理相应的信息给执行机构发送执行的命令。其总体布置如图1所示。整个车体由底盘、主控制板、转向舵机、电动机、车轮等所组成,主控制板上安置机械臂、主控器、传感器、摄像头等来实现小车的功能[7]。

1.1 主控模块

Arduino Uno R3是一款使用AT mega328P进行研发的单片机。一边有14个数字输入/输出引脚,其中6个数字口可用作PWM 输出使用,另外还有2 路是串口链接端口;而在另一边有6 路模拟输出串口。ARDUINO UNO R3 自带电源芯片,可以直接给ARHDUINO板供电。

图1 总体布置

1.2 视觉系统

OpenMV 摄像头是一款体积小,功耗低,成本低的电路板,适用于智能小车的视觉系统,使用高级Python 语言进行开发。OpenMV的主要工作是读取周围环境的信息,并将信息传输给控制中心进行处理,相当于人的眼睛。OpenMV读取信息主要是按照以下方式进行。

(1)接通电源后,OpenMV初始化,设定目标。

(2)OpenMV开始拍摄照片,将拍摄完的照片以元组的方式把相关的参数返回给OpenMV处理器上。

(3)OpenMV处理器判断是否检测到目标,如果没有检测到目标,就发送一对数值相等、符号相反的参数到控制中心;如果检测到目标,就通过PID 算法[8]计算出小车的速度,并将速度值发送到控制中心。

1.3 机械臂设计

主控制板上安装的机械臂的设计要满足以下要求。

(1)机械臂要有适合的自由度,能灵活夹起物体。

(2)机械臂要有一定的预紧力,能在断电的时候保持把棋子夹紧,防止棋子掉落。

(3)要确定视觉系统的安装位置。安装的位置需要满足: 1 保证视觉系统要能监测到前面的路况,给控制系统反馈智能小车行驶的路况; 2 要有足够的高度,能检测到目标; 3 能够跟随机械臂的运动而运动,否则无法完成对物体的夹取。本文把视觉系统的安装位置确定在机械主臂上。

2 智能小车控制系统的设计

2.1 总体控制

智能小车通电后首先运行超声波模块,判断智能小车前面是否有障碍物,如果检测到有障碍物,则通过视觉系统判断是否已经检测到目的地,本文使用矩形的绿色本子作为目的地的标记,如果检测到目的地,那么智能小车就运行避障程序避开前面的障碍物,当智能小车行驶到距离目的地在指定阈值范围内的时候,智能小车就运行通过机械臂放置棋子的程序,完成定点摆放棋子的任务;如果超声波没有检测到障碍物,则通过视觉系统判断是否已经检测到目的地,如果检测到达目的地,智能小车就直接运行规划路径的程序,如果没有检测到目的地,智能小车就继续运行检测目的地的程序。

2.2 检测目的地

如图2 所示,当接收到检测目的地的信号时,系统首先判断机械臂底座舵机转动周期信号是否为1,本文定义的机械臂底座舵机转动周期是指机械臂底座舵机向左向右各转动45°,信号为1 时表示已经完成转动,信号为0 时则表示未完成转动。如果判断出机械臂底座舵机周期信号为1时,则意味着智能小车在当前区域未能检测到目的地,智能小车就会移动到其他位置继续检测,机械臂底座舵机转动周期信号重新置0。如果判断出机械臂底座舵机周期信号是为0时,机械臂底座舵机就会向左向右各转动45°进行检测,期间如果检测到目的地就会停止转动,接着运行追踪目的地的程序;如果完成向左向右各转动45°后仍未检测到目的地,机械臂底座舵机则停止转动,机械臂底座舵机转动周期信号置1,系统重新开始判断机械臂底座舵机的转动周期信号。

图2 目的地检测

2.3 路径规划

智能小车根据视觉系统反馈回来的信息判断是否有检测到目的地,如果检测到目的地,智能小车就对目的地直线的距离进行计算,计算出距离后,读取当前机械臂底座舵机的转动参数,并输出给转向舵机,从而控制转向舵机进行转向。智能小车往目的地方向移动并保持目的地一直处于视觉中心的位置,途中运用超声波模块进行避障。智能小车到达目的地后停止运行,并通过控制机械臂将棋子放下。

3 系统测试

3.1 设定区域形状及颜色

智能小车执行摆放棋子动作之前,首先确认定点位置的颜色和形状,本文设置的定点为绿色的矩形。首先通过Open-MV 的形状识别功能采用四元检测算法进行矩形识别,运用ImageReader 类的 image.find_rects() 函数,设置好threshold,然后通过OpenMV 的颜色识别功能设定 LAB 值为(28,57,-55,-6,-5,39)。

设定好 LAB 值和 mage.find_rects()函数后,OpenMV 只会识别绿色矩形的定点,当OpenMV 追踪不到定点区域时,OpenMV 便会发信号给主控模块,主控模块就会发出相应的指令让小车调整位置直到追踪到绿色的区域为止;当 OpenMV 追踪到定点区域就会发信号给主控模块,主控模块就会发出相应指令控制智能小车靠近定点区域,如图3所示。

图3 智能小车靠近定点区域

3.2 测试路径

在小车左前方放置一个障碍物,智能小车通过OpenMV视觉系统检测正前方是否有定点目标,如果检测到定点目标,智能小车就运行程序直接追踪目标;如果没有检测到定点目标,智能小车就通过移动位置以及控制机械臂底座舵机转动直到检测到定点目标为止。

如图4 所示,由于在智能小车左前方放置了障碍物,小车首先检测到离起始点位置距离较近的目标1,但是当靠近目标1时,识别到目标1并不是目的地,智能小车就通过运行避障程序避开障碍物,继续检测其他目标;当检测到目标2 并靠近时,识别到目标2是目的地,智能小车就通过控制机械臂将棋子放下,完成定点摆放功能。

图4 路径测试

4 结束语

本文设计的智能搬运小车,通过OpenMV 的识别与控制、Arduino的驱动控制,提供了一种可拓展可实践的结构设计方案,能够完成路径规划及定点摆放棋子的任务。小车在完成任务的前提下仍有很多的设计与拓展的空间,如车身的材料、机械臂的灵活度、小车的运动速度以及成本方面等仍有待改进。通过对智能小车的研究和实践,可以初步构建智能汽车的模型,为智慧工厂和无人驾驶技术提供更多的可能。

猜你喜欢
舵机棋子底座
大型集装箱船舱底座结构加强与改进
大型铝板拉伸机液压底座的设计计算
棋子多少颗
摆棋子
有趣的棋子
含齿隙弹载舵机的全局反步模糊自适应控制
兵马俑底座学问大(第六站)
机械字码打印底座结构优化设计及应用
基于dsPIC单片机的飞艇舵机控制实现
基于高速同步485总线通信的多通道舵机控制器设计