基于Arduino的智能搬运机器人的设计与实现
2024-01-18王江龙任红卫刘敏聪吴东萍宁静渝吴欣雨
王江龙,任红卫,刘敏聪,吴东萍,宁静渝,吴欣雨
(广东石油化工学院 自动化学院,广东 茂名 525000)
搬运机器人得到了广泛的认可和应用,并成为现代工业领域的重要组成部分,就现阶段,德国KaKU公司的搬运机器人技术最为成熟[1-3]。在多种不同类型的搬运机器人生产方面,德国KuKA公司的生产水平居于世界前茅。在国内,朱颖等[4]设计了一款单目视觉智能分拣搬运机器人,通过对摄像头获取的图像进行中值滤波、去除阴影、图像分割等预处理,结合形状和颜色特征对物料进行识别。常浩等[5]设计了一款智能工业搬运机器人,主要通过机械手臂控制和车底部的平衡系统来解决日常工业中叉车运输系统速度慢且不能实现多货物的搬运问题,降低了以往搬运过程中工人意外事故发生率和物品的损坏率。郑彩丽等[6]设计的智能搬运机器人可以根据给定的任务,适应不同的地形,同时完成物料的抓取、搬运以及将其摆放在特定位置等任务。尽管智能搬运机器人领域的研究已经取得了一定的进展,但仍存在一些亟待解决的问题。首先,以摆放顺序识别目标物品的方案较少,这给自动化物品摆放和整理过程带来了一定的困难。现有研究往往集中在物品的抓取和搬运方面,对于物品的分类、识别和摆放顺序规划的研究相对不足。其次,机器人机身姿态校正功能不完善,这对机器人的稳定性和准确性造成了一定的影响。
基于此,本文设计了一种基于Arduino单片机的智能搬运机器人,并验证其在自主导航和物品运输方面的实用性和可靠性。结合视觉识别技术,使机器人能够准确识别不同的目标物品,并根据预设的摆放顺序进行合理的摆放和整理。同时,针对机器人机身姿态校正不完善的问题,改进姿态感知和控制系统,提高机器人的稳定性和精确性,以适应不同工作场景的需求。
1 控制系统硬件设计
控制系统主要由控制模块、57步进电机、电机驱动模块、OpenMV视觉传输模块、OLED显示模块、光敏巡线模块等模块组成,其总体结构见图1。
图1 机器人控制系统
1)控制模块。系统控制模块采用Arduino Mega 2560单片机最小模块,主要作用为对各模块进行通信与控制和控制机器人的运行[7]。与其他Arduino板相比,Arduino Mega 2560具有更多的输入/输出引脚、更大的存储器和更强大的处理能力,为复杂的运算程序与多模块通信提供了充足的硬件条件。
2)电机驱动模块。选用DRV8825步进电机驱动模块来控制57步进电机,同时为了能让机器人有更多运动方向,在车轮方面机器人采用了麦克朗姆轮。DRV8825是一种常用的步进电机驱动器,它是一种高性能、低成本的单片驱动器,能够驱动双极、四极和六极步进电机。麦克纳姆轮是一种机器人轮式布局结构,通常用于差动驱动的移动机器人中,可以实现全向移动,它的侧轮可以旋转从而改变机器人的方向和移动速度[8]。Arduino单片机的输出端连接DRV8825驱动板的信号端,DRV8825驱动板的输出端连接步进电机,步进电机与驱动板的供电由电源模块提供。机器人通过控制电机的旋转方向和步数来控制机器人运动状态。
3)视觉识别模块。在视觉识别方面,采用OpenMV视觉传输模块来进行二维码识别与物料摆放顺序识别,从而保证机器人能够顺利完成运输任务。在实际使用中,先对OpenMV与uart1进行初始化,在机器人开始进行相关的识别任务时,OpenMV根据事先烧录进的代码对二维码以及物料进行识别并将相关的数据通过uart1传输到Arduino中,Arduino根据这些数据对接下来的抓取任务进行顺序规划[9]。
4)陀螺仪模块。选用 HWT101陀螺仪读取机器人姿态角度。它采用MEMS技术,可以精确测量三个方向上的角速度,具有高精度、高灵敏度、低功耗等特点。Arduino通过uart3串口接受陀螺仪所读取的机器人角度数据,并根据数据来对机器人车身姿态进行纠偏。该模块适用于机器人行驶轨迹校正的功能。
5)循迹模块。选用光敏模块对场地中黑线进行识别。光敏模块是一种基于光敏元件和信号处理电路的组合装置,能够将光信号转化为电信号。具有灵敏度高、可靠性高、响应速度快、易于使用的优点,适用于机器人行驶路径的识别。在机器人的四周分别安装2个光敏模块,并将这8个光敏模块的输出端与Arduino的信号端进行连接,Arduino通过读取各方向的黑线识别情况与次数来判断此时机器人行驶的距离,从而进行接下来的行动。
6)机械臂模块。选用6个DS3120舵机与多个连接件组成六自由度机械臂,机械臂的爪子部分为自主3D打印设计,DS3120是一种数字式舵机[10]。它具有高精度、高速度、高扭矩等特点。该舵机工作电压范围为4.8~6.0 V,输出扭矩为20 kg/cm,转速为0.18 s/60°。此外,DS3120还具有防水性,适合在潮湿环境中使用。为了更方便地驱动多个舵机,采用了16路舵机控制板来控制舵机的运动,事先通过上位机将动作组录入舵机控制板,在机器人到达指定位置后,Arduino通过uart2向舵机控制板发送调取指定动作组命令,舵机控制板收到指令后根据事先设置好的参数驱动多个舵机完成指定动作,从而使机械臂能完成物料抓取与摆放。
7)人机交互模块。选用1.3寸OLED显示屏模块来显示二维码与物料的识别信息。OLED显示屏模块可以通过软串口通信与Arduino进行数据交换。在机器人的侧边通过铜柱和螺栓进行安装,以确保其稳定性和安全性。该显示屏模块可以在机器人的运行过程中实时显示关键信息。通过这些信息,使用者可以更好地监控机器人的运行状态并对此进行调试。
2 系统软件设计
用 C 语言编写代码,使用Arduino IDE编译器编程。智能搬运机器人控制系统上电后进行初始化,初始化电机、定时器、HWI101陀螺仪、OpenMV、光敏模块、串口。随后进入main 主函数,循环执行相关任务,系统软件流程见图2。
图2 系统软件流程
机器人启动后,首先使用OpenMV进行视觉识别,识别到二维码并将数据显示在显示器后,机器人前往原料区,识别到物料顺序后,将数据发送给Arduino控制器。然后根据二维码与物料顺序的数据,将物料按照顺序通过机械臂进行抓取并且放在机器人物料台上,将3种物料搬运至放置区后,按照从原料区上层搬运至物料台的顺序将已搬到物料台的物料搬运至放置区对应的颜色区域,将原料区的3种物料搬运至放置区后,机器人回到返回区。当机器人到达目标位置后,完成任务。
3 机械结构的设计与实现
物料运输机器人的机械结构如图3所示。机体主要由两块亚克力板、轴、驱动轮、步进电机、功能模块、电池等组成。4个步进电机主轴分别穿过移动平台的各侧面并与麦克朗姆轮相连接,步进电机通过连接件和螺丝与底板进行连接;电池和功能模块通过螺栓固定在移动平台的内部。两块亚克力板之间用螺丝与55 mm铜柱连接,底板放置Arduino主控板、电机驱动模块、电源模块,顶板放置机械臂、16路舵机控制板与物料台,机械臂、16路舵机控制板,上述模块通过螺栓固定在平台上,物料台通过10 mm铜柱与螺栓固定在平台上。机械臂由6个舵机、舵机连接件、云台、爪子组成,通过螺栓连接,在机械臂的中间位置放置OpenMV,通过自主3D打印设计的连接件进行固定。
图3 物料运输小车机械结构设计
4 性能测试
机器人在执行运输任务过程中,要求其必须能准确识别二维码与物料信息,以及能够精准行驶到各个区域并执行相关任务。为了更加直观地对机器人各功能进行测试与评估,制定了一系列的性能评判标准,其机器人性能评判见表1,机械臂性能评判见表2。
表1 机器人性能评判
表2 机械臂性能评判
表3 环号及环尺寸与分数对照
为了验证机器人是否能够顺利完成所有任务,我们特地搭建了一个测试场地,并对机器人进行了连续8轮的测试,记录下在这8轮内机器人任务完成情况和放置物料的情况并打分,测试结果如表4、表5、表6所示。
表4 机器人测试情况
表5 机器臂物料放置得分
表6 机器人完成任务时间情况
由表4可看出,机器人能够100%地完成所有任务,其中在识别任务中识别所需时间均低于0.5 ms,在无人干预的情况下,二维码识别的成功率为100%,物料识别的成功率为87%,二维码与物料摆放顺序的识别结果均未出错。由表5可看出,在机械臂执行物料抓放任务时,8次测试中机器人均能成功抓取全部物料,抓夹成功率为100%,而在物料放置方面,在满分240分中机械臂物料放置实际总得分为224分,准确率93.3%。
由表6可看出,机器人正常完成全部任务所需时间平均在72.3 s,在第5轮中机器人为保证行驶正常而不断校正自身姿态,从而导致最终完成时间较长,第7轮则是因环境光线导致识别耗时稍长,从而延长了最终完成时间。
综上,机器人在大部分测试中表现出色,成功完成了所有任务。在少数测试中遇到了一些技术故障、错误或困难,但通过事先准备好的校正程序,机器人成功克服问题并继续进行任务。这些测试结果为验证机器人的正常运行提供了有益的信息,同时也提供了改进和优化的方向,比如机器人在进行识别工作时容易收到光线干扰,后续会改进其识别算法,让其不容易受环境因素的干扰。
5 结语
智能搬运机器人设计具有精度高、安全性高、节约人力成本等优点,其关键技术在于循迹行驶与视觉识别方面。通过光敏模块识别黑色循迹线的技术,可在一定程度上让机器人实时确定自身的所在方位,同时通过陀螺仪实时监控自身姿态,保证其行驶过程的稳定性。而通过使用OpenMV识别技术,能让机器人自主获取物料相关信息,使得自主性大大提高,节约了人力成本。