毛润,张珈龙
(成都大学 电子信息与电气工程学院,四川成都,610106)
随着社会信息化技术的发展,工业、农业、科研、国防等各个领域越来越需要高性能的自动化系统。机械臂能模仿手臂的某些动作功能,用以按固定程序抓取、搬运物件或操作工具的自动操作装置[1~3]。它可代替人的繁重劳动以实现生产的机械化和自动化,能在有害环境下操作以保护人身安全,因而广泛应用于机械制造、冶金、电子、轻工和原子能等部门,智能机械臂是具有感知、思维和行动的机器人,可获取、处理和识别多种信息,自主完成较为复杂的操作任务[4~5]。
在后疫情时代,很多应用场景需要员工减少人与人之间的互动,例如机场、地铁等人流量特别大的地方,这些场所又需要员工与客人进行近距离接触,还需要员工帮助客人进行行李的搬运,这无疑会使疫情的风险更大,并且搬运行李也是有一定劳动强度,将机械臂运用于这些场所,可以一定程度上减少人与人之间的交互和节省劳动力[6~8]。
本设计采用双控制器方案,控制器2 为QT 控制器(ARM处理器),其运行服务器代码实现用户账号登录注册、机械臂控制信号接收以及打包发送功能。机械臂的硬件构造主要分为核心驱动模块和舵机模块两个部分,机械臂核心驱动模块主要由控制器1(STM32F103C8T6 单片机)来控制,控制器1 为一个机械臂控制器,舵机模块包含六个自由度,每个舵机通过相应的PWM 的占空比脉冲信号加以控制[9]。两控制器合作完成账号登录注册以及机械臂手动和自动搬运系统的设计。
QT 上位机控制界面的设计,包括账号注册登录、机械臂控制界面;QT 控制器运行多线程服务器代码,使用三个线程分别负责各个功能;机械臂控制器对机械臂控制信息进行解析处理,通过控制信息对PWM 占空比进行控制从而实现舵机转动,最终实现机械臂的手动和自动搬运系统的设计。
图1 是一个基于双控制器的民航机场行李自动搬运系统设计的硬件框架图。这里的控制器1 为STM32F103C8T6 单片机,其是作为一个机械臂控制器,而控制器2 为FS4412开发板的核心模块,其为一个QT 控制器。程序没有开始前,QT 控制器的源代码都是存放在SD 卡中,机械臂控制器的源代码存放在Flash 中,上电后,程序启动,QT 控制器运行服务器代码,用户登录客户端进入到账号登录界面,然后输入账号信息后会通过网口传输发送到QT 控制器,账号与QT控制器上的数据库进行对比,比对成功后再通过网口传输回客户端进行登录,登录成功后进入到机械臂操作,客户端发出机械臂控制信息后,控制信息会通过网口传递给QT控制器,然后封装成协议包通过串口传递给机械臂控制器进行解析,解析出机械臂控制信息后,进行舵机控制。
图1 硬件架构图
本设计使用六轴机械臂,硬件连接实物图如图2 所示。六轴机械臂主要包含六个自由度,分别由六个舵机分别来进行控制,每一个舵机关节都可以转动180°,而舵机一般是由舵盘、减速齿轮组、位置反馈电位计、直流电机、控制电路几部分组成。机械臂的六个舵机分别连接STM32 上的M4(TIM3_CH4)、M5(TIM3_CH3)、M6(TIM3_CH2)、M7(TIM3_CH1)、M8(TIM4_CH4)、M9(TIM4_CH3)时钟引脚,舵机通过输入线接收控制系统发出的PWM 波从而控制电机转动,电机带动一系列减速齿轮组,减速后传动至输出舵盘,舵机的输出轴带动位置反馈电位器,电位器将相应角度的输出电压信号与到控制电路板的PWM控制信号进行比较,然后控制电路板根据所在位置决定电机转动的方向和角度。其工作原理就是将脉冲信号转换为角位移,闭环控制电机转动。步进电机由单片机控制,控制信号为数字信号,不用经过A/D 数模转换,具有快速启/停功能,迅速地实现启动或停止,且步距角越小、延时越短,定位越准确,旋转精度越高。其工作流程为:控制信号→控制电路板→电机转动→齿轮组减速→舵盘转动→位置反馈电位计→控制电路板反馈[10]。
图2 硬件实物图
软件设计的主进程如图3 所示,首先通过QT 设计一个用户登录的界面,用户进入到账号登录界面,然后输入账号与密码,成功登录后会进入到用户操作界面,程序同时通过线程执行,互不干扰,它们的控制界面都显示在QT 界面上,用户可以通过其来进行机械臂手动和自动控制。
图3 主程序设计
用户在客户端的操作界面按下手动控制按钮后,控制六根滑杆即可控制6 个舵机的转动,最终实现手动控制,手动控制的程序框图如图4 所示。首先进行时钟初始化、机械臂初始化、串口初始化。初始化完成后,从用户界面选择控制方式,客户端将进行手动控制的信号发送给QT 控制器的服务器,QT 控制器再通过串口将控制信号发送给机械臂控制器,机械臂控制器接收到该手动控制信号,进入手动控制模式。用户控制指定舵机旋转。舵机的控制信息从用户界面传输给QT 控制器,并被打包成协议包通过串口发送给机械臂控制器,此时机械臂控制器会检测到有数据在串口通道中,产生串口中断,机械臂控制器接收该控制协议包。机械臂控制器接收到数据协议包后进行数据验证,通过协议头和协议尾来判断是否为需要的控制信息,如果不正确,重新进行接收。当确认为需要的控制信息后,按照信息中所提供的舵机号和旋转角度,进行改变相应舵机的占空比,实现指定舵机的旋转。最后通过串口中断接收用户的控制信息,实现各个舵机的旋转,最终实现机械臂的手动控制。
图4 手动控制流程图
用户按下自动控制按钮后,进入到机械臂自动控制模式,机械臂会自动完成货物搬运的操作,自动控制的程序框图如图5 所示。首先进行时钟、舵机、串口的初始化,初始化完成后进行控制方式的选择。进入自动模式后,调用运动轨迹点位,QT 控制器将点位信息逐一放入串口通道中。机械臂控制器检测到串口中有数据信息,将该数据信息取出进行解析和校验,确定为正确信息后,通过改变对应舵机进行旋转。当运动轨迹点位都传输完成后,完成自动控制。
图5 自动控制流程图
QT 控制器的程序中有着一套完整的运动轨迹代码(即从固定点位将物体搬运到另一个固定点位的集合),每一次通过串口传输一个点位信息给机械臂控制器,机械臂控制器通过串口接收到该信息后,进行解析验证,数据正确后改变舵机的占空比从而实现一个点位的运行,随后将第二个点位信息放入到串口通道中,让机械臂控制器进行读取和解析,按照控制信息再次控制对应舵机运行,如此重复,直到机械臂完成所有设置好的运动轨迹点位,机械臂就完成了一个自动搬运的过程。
由于QT 控制器没有屏幕,所以使用PC 机的超级终端来模拟QT 控制器的操作界面,作为其“显示器”方便用户进行调试和使用。进入到LINUX 操作界面后直接运行服务器代码,即可启动服务器,服务器程序运行后,打开客户端程序,在终端界面上出现了客户端的IP 和端口号意味着服务器和客户端连接成功,如图6 所示。
图6 连接界面
进入到操作界面后,会出现六根滑杆,通过滑动滑杆完成对六个舵机的旋转控制。用户需要通过六根滑杆逐一对0到5 号舵机进行控制,每一次选择滑动一根滑杆就可控制一个关节进行旋转,逐渐控制6 个关节去合作实现搬运物品的运动轨迹,最终就实现了手动搬运。在这之前首先要按下操作界面上的自动/手动转换按钮,当按钮显示为手动时,即可以进行手动测试。
如图7(a)所示,机械臂进行初始化后所有舵机都是旋转0°,此时滑动客户端界面的6根滑杆进行相应舵机的操作。首先让0 号舵机旋转至对向瓶子,并控制1 号舵机使机械臂弯向瓶子,再控制2 号和3 号舵机将机械臂前端夹子移动至瓶子上方和让5 号舵机将夹子张开,然后控制1 号舵机使前端夹子下降至能夹起瓶子处,此时机械臂已完成夹起前的工作,随后控制5 号舵机使夹子夹紧,成功夹住瓶子,此图表示瓶子已经成功被夹住。
图7 手动控制结果
如图7(b)所示,夹起瓶子后,控制1 号舵机使机械臂将瓶子抬起脱离桌面,然后控制0 号舵机将瓶子移动至目标位置上方,此图表示瓶子已被移动至目标位置上方。
如图7(c)所示,此时机械臂已经将瓶子移动到了目标位置上方,用户控制1 号舵机将瓶子放置桌面上,此时机械臂仍夹着瓶子,然后控制5 号舵机使夹子松开瓶子,再控制1 号舵机使机械臂脱离瓶子,此图表示机械臂已经完成了瓶子搬运,并且使夹子脱离了瓶子口。
自动抓取是在手动抓取的基础上,事先将实现自动搬运的运动轨迹点位代码写入程序中。在用户控制界面按下自动/手动切换按钮后,切换到自动抓取模式,自动抓取信号就会发送给QT 控制器,它再将信息发送给机械臂控制器,然后机械臂控制器控制机械臂执行事先写进程序的运动轨迹点位程序,从而实现机械臂自动抓取。
再进行使用机械臂调试器工具进行调试时,需要调试一号舵机,就需要给ID 为1 的选择框打钩,然后在后面的数据一栏填写想要舵机旋转的度数,通过发送给机械臂控制器,机械臂的1 号舵机就会旋转相应的度数。
通过对各个舵机点位调试后,成功确认了点位,并将点位写进程序进行调试。
①初始位置:0 号到5 号舵机都是旋转0°。
②就位:将机械臂旋转到准备抓取物品的位置,需要将1 号舵机旋转35°,2 号舵机旋转-34°,3 号舵机旋转39°,4 号舵机旋转60°,5 号舵机旋转-30°。
③抓取:机械臂进行抓取物品,需要将1 号舵机旋转43°,5 号舵机旋转28°。
④抬起:将物品抓起离开桌面,只需将2 号舵机旋转至25°。
⑤偏转:抬起物品后,旋转至目标位置,使0 号舵机旋转40°,1 号舵机旋转15°。
⑥放下:将物品放下,使1 号舵机旋转30°,5 号舵机旋转-30°。
将这些点位按顺序写入到源程序当中,并且在每个动作之间加入了延迟函数,这样串口接收数据时才能完整接收。自动模式下可以抓取放置在固定位置的物体,并且将其放到固定位置去,实现物品的自动搬运。因为指令传输过快会导致数据丢失,所以各个关节指令间加入一秒的延迟,所以自动模式下机械臂动作稍微有些卡顿,成功实现机械臂自动控制。
基于双控制器的六轴机械臂的设计,最终实现了机械臂手动抓取、自动抓取货物等功能,文章具体研究内容如下:
(1)用户能够进行登录注册账号的功能。用户在客户端输入账号和密码然后通过网络传输给服务器中,服务器调用数据库信息进行账号密码对比,对比正确则成功登录。
(2)用户可以通过六个滑杆来手动控制机械臂进行手动抓取物品的功能。每一个滑杆代表着六轴机械臂的0 到5号舵机,通过滑动滑杆即可控制机械臂相应舵机旋转的角度。
(3)机械臂能够自动抓取物品放到目标位置的功能,实现了自动抓取。