论文部分内容阅读
摘 要:智能物流机器人是当前机器人行业发展的一个分支,由机械、电子、控制等学科交叉而成,其中包括机械结构的设计、电路的设计、控制程序的编写和调试等,这些因素影响着机器人的移动速度、定位的准确性以及预期目标达成的能力等。对于初学者或有一定基础的爱好者如何快速入门,以及对于工程训练综合能力竞赛的相关策略,本文将做具体论述。
关键词:Arduino;智能物流;机器人;竞赛
Arduino是一款易于上手、功能齐全、[1]操作简单的开源性电子设计平台,其包含硬件(各种型号的Arduino开发板)和软件(Arduino的开发环境)。目前,很多电子爱好者都以Arduino为核心,电机、传感器等各种硬件为载体做出各种电子设计,市面上也有很多的以Arduino为核心的DIY电子设计。智能物流机器人的设计采用Arduino为控制核心,可以降低编程方面的难度,而且其丰富的功能又能满足机器人的需要。目前,“中国大学生工程训练综合能力竞赛”,浙江省、四川省、黑龙江省等一些省级教育厅主办的机器人竞赛或工程训练竞赛,都设有智能物流机器人这一竞赛项目,对于此类竞赛的应对方法,以及利用Arduino如何进行具体的设计,本文将从以下三方面论述。
一、智能物流机器人的设计
智能物流机器人的功能在于可以通过从二维码读取区的二维码,得到夹取物块的信息和物块的放置位置,夹取物块并将指定的物块送到目标区域。机器人的设计主要分为底盘设计、机械手设计、电路设计以及控制程序设计。机器人的驱动方面多为直流电机和舵机,直流电机控制容易,舵机较大的扭力可以使机械手抓取物块,直流电机的种类和舵机的型号视实际需求而定。
底盘结构上通常为刚性结构,底盘形状根据轮子的数量和轮子的种类而定,通常有四轮底盘和三轮底盘,轮子通常有普通橡胶轮、全向轮、麦克纳姆轮等。四轮底盘的形状通常为长条形或者正四边形,[2]采用普通橡胶轮时,轮以常规四驱车轮子分布方式安装,采用全向轮或者麦克纳姆轮时,轮通常以向底盘中心的十字线倾斜45°分布,且四个轮均以这两条字线相互对称。三轮底盘通常为圆形,三个轮三等分横向分布在底盘边缘,轮通常采用全向轮或麦克纳姆轮。当四轮底盘采用普通橡胶轮时,转弯前往取料区或放置区时,容易在循迹路线上出现偏差,会使机器人无法自我调整并偏离路线,而采用全向轮或者麦克纳姆轮时,可以直接使机器人的侧向成为机器人的正向,原机器人的正向转为机器人的侧向,成功避免了普通橡胶轮机器人转弯时容易产生偏差的问题。三轮底盘也避免了转弯时的偏差问题,这种底盘转弯时只需要原地转动90°,即视为完成转弯变向,且三轮底盘前进时只需要控制两个电机的转动,更便于对机器人各种情况的编程。
机械手的设计方面,因使用舵机去驱动机械手,建议设计机械手时的舵机使用数目越少越好。舵机本身具有一定的误差,如果使用n个舵机,那么实际的误差便是一个舵机的误差的n次方,舵机的数目越少,实际具有的误差便越少,则降低了机械手抓取时产生意外的可能性。机械手抓取的部位,可以加海绵或者橡胶等物体,增加抓取部位的摩擦力。
在电路设计方面,则要多考虑电压和供电方面的问题。机器人里主要用到直流电机、舵机、摄像头模块、显示屏、控制板、稳压模块和传感器等电路元件,再考虑到电路元件的自重和机器人机身重量,机器人运行电量消耗较大。所以尽量避免单电源供电,可以考虑准备两个电源,一个电源给机器人底盘的各个电路元件供电,另一个直接给机械手上的舵机供电。因底盘有几乎全部的电路元件,给机器人底盘供电的电源,其电压和电量要偏高些,给机械手供电的电源的电压和电量可以适当低一些。为了便于检查故障的电路元件的连线,可以制作一PCB板,将电路元件和电源的布线集合在PCB板上,当电路出现故障时,能快速检查线路方面的问题,而且也使机器人的电路元件连接更加方便。Arduino控制板的拓展板也可以作为替换PCB板的一个选择,但相比之下PCB板更加个性化。
控制程序设计方面,Arduino的开发支持C/C++编程语言,因此用户可以通过C/C++语言来实现对机器人上的输入模块(传感器、摄像头)的信号的处理和输出模块(电机、显示屏、舵机)的控制,以此来达到预期的目标。目前智能物流机器人竞赛中,参赛队伍通常要根据赛道的实际情况设计出相应的程序,机器人在二维码读取区域附近读取二维码上的信息,并根据二维码上的信息,二维码上有要抓取的物块的颜色和放置的区域的信息,移动到物块提取的区域,抓取指定的物块,并携带物块运送到指定的放置位置,同时机器人上的显示屏要显示要抓取的目标和放置的路径的信息。根据比赛要求的不同,程序视要求做出相应的改变。机械手上的舵机也可以接在16路舵机控制板上与Arduino控制板串口通信,初学者可以通过这种办法用16路舵机控制板的上位机直观的控制舵机转动的角度,来设计机械手的抓取程序。在二维码信息读取的方面,初学者也可以使用专门的二维码读取模块,读取的程序会比摄像头的读取程序简单。但需要注意的是,有的二维码模块读取后的数字信息直接赋予执行命令的程序,可能会出现抓取指定物块的程序无法执行的情况,这时需预先设定一个变量,用这个变量来代替读取完二维码后返回的数值,这样抓取的程序便可以执行。例如,用“1”、“2”和“3”这三个数字生成二维码,部分二维码模块读取后返回的数值分别是“49”、“50”和“51”,那么定义三个变量int x,y,z,对应三个数值,当有数值返回时,便将“1”这数值赋予相应的变量,下为一段示例:if(Serial.available()>0){delay(1);ch=Serial.read();if(ch==49){x=1;}if(ch==50){y=1;}if(ch==51){z=1;}}。
当机器人制作完成后不断调试的过程,对电路元件的消耗也是较大的。应该备用一些零件和电路元件,当出现问题时,及时将损坏部分更换,继续调试。如果机械手采用的是舵机控制板和Arduino控制板串口通信,要注意给舵机控制板供电的电压,舵机控制板相较于Arduino控制板更容易被电流烧毁。普通的直流电机相较于直流减速电机或者步进电机更容易被损坏,应当多备用一些。减速电机或者步进电机的金属轴不能直接用手去触碰,手上的汗液容易对转轴位置造成腐蚀,影响电机的性能。电机的驱动模块,如L298n电机驱动模块,也比较容易损坏。除此之外,机器人各个接线部分要经常检查,机器人运行时很容易造成接线处松动,致使部分電路元件短暂失效。 二、智能物流机器人的调试
智能物流机器人的设计制作的完成,对一个完整的可以按照要求准确执行命令的机器人来说,只算完成了最基础的部分。而后期的改良和调试,是更为主要的一部分。在竞赛赛道上调试时,经常会遇到很多种问题,例如采用循迹移动的机器人在直角时会偏离循迹路线、摄像头或者二维码模块无法有效启动去识别二维码、机械手夹取物块时突然松动等问题。对于这一类问题,通常要选择排除法解决,从电路方面开始排查,很多时机器人出现故障都是因为线路松动或者电路元件损坏引发的,随后再检查机械结构和装配方面,检查机械结构是否损坏失效,最后是检查程序问题,可能是程序中某一数值或循环逻辑出现了偏差。例如,采用循迹方式移动的机器人,在直角转弯处第一次调试发现可以顺利完成转弯,而第二次却偏离了循迹线。对于这种情况,可以先从电路方面开始检查,确认接线无误后,检查电机情况,观察正常通电的情况下左右两个电机的转速是否一致,如果电机本身没有问题,在拧通过电机的长螺丝时不要拧过紧,螺丝拧过紧也会挤压电机内部的齿轮,使转弯出现一定程度的偏差。如果此时问题依然存在,因机械结构问题常出现在机械手上,可先不考虑机械结构的问题,直接在程序中检查问题,如在转弯程序、循迹程序和延时设定等方面检查。
因智能物流机器人的调试需要花大量的时间,所以调试时一定要有耐心。在不断的调试过程中发现问题、解决问题并积累经验,以便于之后做类似的机器人时知道如何处理相似的情况。智能物流机器人主要执行的功能就是移动、抓放、和视觉。多数竞赛场地是网格状场地,那么在机器人的移动方式方面,就要多加考虑,可以采用在网格状场地循迹移动到目标位置,那么在调试的过程中,如何优化循迹程序,是一个重要的问题,这需要在不断的循迹测试的过程中对部分数据微调,使机器人可以顺利循迹。不仅如此,考虑到场地会反光,如何能让循迹的传感器准确分辨循迹线也是一个重要的问题,这时需要在场地上对所有循迹的传感器的灵敏度进行调整,使用于循迹的传感器都可以准确分辨循迹线,减少光线对传感器的影响,传感器在调试到最佳后尽量不要再加以改动,微小的改动都有可能使传感器灵敏度受影响。移动方式方面,除了循迹移动,也可以选择定位移动,即通过计算机器人出发点到目标区域之间的距离以及轮子转一圈所前进的距离,以此确定轮子需要转动多少圈可以移动到目标区域,在调试这种移动方式的机器人时,要准确计算距离的大小,不仅如此,两种移动方式都需要考虑机器人在目标区域停止时会不会打滑这种情况,视情况用一些材料增加轮子的摩擦力。在抓放物块的调试时,要时刻根据机械手的情况去修改,舵机的转动角度要准确测量再写入程序里,不能让机械手动作执行过快,尽量将速度减慢,避免物块在运输的过程中脱落以及在放置时不稳而倒下。在调试视觉时,要注意攝像头的识别距离,进行识别时,将机器人在自己调试的最适距离范围内。
三、智能物流机器人的竞赛
完成智能物流机器人的设计制作和调试之后,最后的面对的就是相关竞赛的发挥和策略。首先要找好队员,队员之间要相互协调,通常竞赛为三人一组,一个人做机器人的结构、一个人编写机器人的程序、最后一人最好两者都懂一些来做机器人的相关调试。机器人的机身多为有机玻璃板用激光切割机切割而成,控制板多数竞赛没有要求,可自由选择。因Arduino有中文社区,相关资料更为丰富,其自身控制板操作简单、种类多和功能足,所以Arduino控制板是一个很好的选择,其中Arduino Mega2560控制板效果更好。有些竞赛要求机械手与物块接触的全部零件需要用3D打印机打印出来,应对策略可以调整机械手的抓取位置,在保证抓取效果不影响的情况下,减少与物块接触的部分,这样会用最少的时间打印完零件,会有更多的时间进行现场调试。
竞赛前,观察赛道和各区域分布是否按照竞赛规则上的图纸布置,现场光线的情况,如有问题,及时向场地维护人员提出申请。正式比赛前调试时,要充分利用好每一分钟,大多数情况下赛前调试的时间很短,此时尽量不要再修改机器人的程序了,需要的是依靠参赛选手备赛过程中调试时的大量经验积累来应对赛前调试的突发情况。最后,良好的心理素质关系到竞赛时水平的发挥,不要过于紧张,调整好状态,稳定发挥出备赛时的水平。
四、结语
智能物流机器人的设计并不是很困难,但是要将其制作出来,应用在比赛中,取得优异的成绩,也绝非易事。竞赛时,考验的是队伍成员之间的相互配合,共同将机器人完成,而不是全由一个人负责。遇到特殊情况时,要保持冷静,多方面考虑。
参考文献:
[1]梅蓉.浅析Arduino单片机智能小车设计[J].企业科技与发展,2019(02):123-124.
[2]吴波涛,孔金平,王湘.基于Arduino和树莓派的智能小车的设计与实现[J].电子设计工程,2017,25(15):58-61.
作者简介:贺一烜,就读于西南石油大学本科二年级学生,常参与机器人类相关竞赛,单位是:西南石油大学机电工程学院。
关键词:Arduino;智能物流;机器人;竞赛
Arduino是一款易于上手、功能齐全、[1]操作简单的开源性电子设计平台,其包含硬件(各种型号的Arduino开发板)和软件(Arduino的开发环境)。目前,很多电子爱好者都以Arduino为核心,电机、传感器等各种硬件为载体做出各种电子设计,市面上也有很多的以Arduino为核心的DIY电子设计。智能物流机器人的设计采用Arduino为控制核心,可以降低编程方面的难度,而且其丰富的功能又能满足机器人的需要。目前,“中国大学生工程训练综合能力竞赛”,浙江省、四川省、黑龙江省等一些省级教育厅主办的机器人竞赛或工程训练竞赛,都设有智能物流机器人这一竞赛项目,对于此类竞赛的应对方法,以及利用Arduino如何进行具体的设计,本文将从以下三方面论述。
一、智能物流机器人的设计
智能物流机器人的功能在于可以通过从二维码读取区的二维码,得到夹取物块的信息和物块的放置位置,夹取物块并将指定的物块送到目标区域。机器人的设计主要分为底盘设计、机械手设计、电路设计以及控制程序设计。机器人的驱动方面多为直流电机和舵机,直流电机控制容易,舵机较大的扭力可以使机械手抓取物块,直流电机的种类和舵机的型号视实际需求而定。
底盘结构上通常为刚性结构,底盘形状根据轮子的数量和轮子的种类而定,通常有四轮底盘和三轮底盘,轮子通常有普通橡胶轮、全向轮、麦克纳姆轮等。四轮底盘的形状通常为长条形或者正四边形,[2]采用普通橡胶轮时,轮以常规四驱车轮子分布方式安装,采用全向轮或者麦克纳姆轮时,轮通常以向底盘中心的十字线倾斜45°分布,且四个轮均以这两条字线相互对称。三轮底盘通常为圆形,三个轮三等分横向分布在底盘边缘,轮通常采用全向轮或麦克纳姆轮。当四轮底盘采用普通橡胶轮时,转弯前往取料区或放置区时,容易在循迹路线上出现偏差,会使机器人无法自我调整并偏离路线,而采用全向轮或者麦克纳姆轮时,可以直接使机器人的侧向成为机器人的正向,原机器人的正向转为机器人的侧向,成功避免了普通橡胶轮机器人转弯时容易产生偏差的问题。三轮底盘也避免了转弯时的偏差问题,这种底盘转弯时只需要原地转动90°,即视为完成转弯变向,且三轮底盘前进时只需要控制两个电机的转动,更便于对机器人各种情况的编程。
机械手的设计方面,因使用舵机去驱动机械手,建议设计机械手时的舵机使用数目越少越好。舵机本身具有一定的误差,如果使用n个舵机,那么实际的误差便是一个舵机的误差的n次方,舵机的数目越少,实际具有的误差便越少,则降低了机械手抓取时产生意外的可能性。机械手抓取的部位,可以加海绵或者橡胶等物体,增加抓取部位的摩擦力。
在电路设计方面,则要多考虑电压和供电方面的问题。机器人里主要用到直流电机、舵机、摄像头模块、显示屏、控制板、稳压模块和传感器等电路元件,再考虑到电路元件的自重和机器人机身重量,机器人运行电量消耗较大。所以尽量避免单电源供电,可以考虑准备两个电源,一个电源给机器人底盘的各个电路元件供电,另一个直接给机械手上的舵机供电。因底盘有几乎全部的电路元件,给机器人底盘供电的电源,其电压和电量要偏高些,给机械手供电的电源的电压和电量可以适当低一些。为了便于检查故障的电路元件的连线,可以制作一PCB板,将电路元件和电源的布线集合在PCB板上,当电路出现故障时,能快速检查线路方面的问题,而且也使机器人的电路元件连接更加方便。Arduino控制板的拓展板也可以作为替换PCB板的一个选择,但相比之下PCB板更加个性化。
控制程序设计方面,Arduino的开发支持C/C++编程语言,因此用户可以通过C/C++语言来实现对机器人上的输入模块(传感器、摄像头)的信号的处理和输出模块(电机、显示屏、舵机)的控制,以此来达到预期的目标。目前智能物流机器人竞赛中,参赛队伍通常要根据赛道的实际情况设计出相应的程序,机器人在二维码读取区域附近读取二维码上的信息,并根据二维码上的信息,二维码上有要抓取的物块的颜色和放置的区域的信息,移动到物块提取的区域,抓取指定的物块,并携带物块运送到指定的放置位置,同时机器人上的显示屏要显示要抓取的目标和放置的路径的信息。根据比赛要求的不同,程序视要求做出相应的改变。机械手上的舵机也可以接在16路舵机控制板上与Arduino控制板串口通信,初学者可以通过这种办法用16路舵机控制板的上位机直观的控制舵机转动的角度,来设计机械手的抓取程序。在二维码信息读取的方面,初学者也可以使用专门的二维码读取模块,读取的程序会比摄像头的读取程序简单。但需要注意的是,有的二维码模块读取后的数字信息直接赋予执行命令的程序,可能会出现抓取指定物块的程序无法执行的情况,这时需预先设定一个变量,用这个变量来代替读取完二维码后返回的数值,这样抓取的程序便可以执行。例如,用“1”、“2”和“3”这三个数字生成二维码,部分二维码模块读取后返回的数值分别是“49”、“50”和“51”,那么定义三个变量int x,y,z,对应三个数值,当有数值返回时,便将“1”这数值赋予相应的变量,下为一段示例:if(Serial.available()>0){delay(1);ch=Serial.read();if(ch==49){x=1;}if(ch==50){y=1;}if(ch==51){z=1;}}。
当机器人制作完成后不断调试的过程,对电路元件的消耗也是较大的。应该备用一些零件和电路元件,当出现问题时,及时将损坏部分更换,继续调试。如果机械手采用的是舵机控制板和Arduino控制板串口通信,要注意给舵机控制板供电的电压,舵机控制板相较于Arduino控制板更容易被电流烧毁。普通的直流电机相较于直流减速电机或者步进电机更容易被损坏,应当多备用一些。减速电机或者步进电机的金属轴不能直接用手去触碰,手上的汗液容易对转轴位置造成腐蚀,影响电机的性能。电机的驱动模块,如L298n电机驱动模块,也比较容易损坏。除此之外,机器人各个接线部分要经常检查,机器人运行时很容易造成接线处松动,致使部分電路元件短暂失效。 二、智能物流机器人的调试
智能物流机器人的设计制作的完成,对一个完整的可以按照要求准确执行命令的机器人来说,只算完成了最基础的部分。而后期的改良和调试,是更为主要的一部分。在竞赛赛道上调试时,经常会遇到很多种问题,例如采用循迹移动的机器人在直角时会偏离循迹路线、摄像头或者二维码模块无法有效启动去识别二维码、机械手夹取物块时突然松动等问题。对于这一类问题,通常要选择排除法解决,从电路方面开始排查,很多时机器人出现故障都是因为线路松动或者电路元件损坏引发的,随后再检查机械结构和装配方面,检查机械结构是否损坏失效,最后是检查程序问题,可能是程序中某一数值或循环逻辑出现了偏差。例如,采用循迹方式移动的机器人,在直角转弯处第一次调试发现可以顺利完成转弯,而第二次却偏离了循迹线。对于这种情况,可以先从电路方面开始检查,确认接线无误后,检查电机情况,观察正常通电的情况下左右两个电机的转速是否一致,如果电机本身没有问题,在拧通过电机的长螺丝时不要拧过紧,螺丝拧过紧也会挤压电机内部的齿轮,使转弯出现一定程度的偏差。如果此时问题依然存在,因机械结构问题常出现在机械手上,可先不考虑机械结构的问题,直接在程序中检查问题,如在转弯程序、循迹程序和延时设定等方面检查。
因智能物流机器人的调试需要花大量的时间,所以调试时一定要有耐心。在不断的调试过程中发现问题、解决问题并积累经验,以便于之后做类似的机器人时知道如何处理相似的情况。智能物流机器人主要执行的功能就是移动、抓放、和视觉。多数竞赛场地是网格状场地,那么在机器人的移动方式方面,就要多加考虑,可以采用在网格状场地循迹移动到目标位置,那么在调试的过程中,如何优化循迹程序,是一个重要的问题,这需要在不断的循迹测试的过程中对部分数据微调,使机器人可以顺利循迹。不仅如此,考虑到场地会反光,如何能让循迹的传感器准确分辨循迹线也是一个重要的问题,这时需要在场地上对所有循迹的传感器的灵敏度进行调整,使用于循迹的传感器都可以准确分辨循迹线,减少光线对传感器的影响,传感器在调试到最佳后尽量不要再加以改动,微小的改动都有可能使传感器灵敏度受影响。移动方式方面,除了循迹移动,也可以选择定位移动,即通过计算机器人出发点到目标区域之间的距离以及轮子转一圈所前进的距离,以此确定轮子需要转动多少圈可以移动到目标区域,在调试这种移动方式的机器人时,要准确计算距离的大小,不仅如此,两种移动方式都需要考虑机器人在目标区域停止时会不会打滑这种情况,视情况用一些材料增加轮子的摩擦力。在抓放物块的调试时,要时刻根据机械手的情况去修改,舵机的转动角度要准确测量再写入程序里,不能让机械手动作执行过快,尽量将速度减慢,避免物块在运输的过程中脱落以及在放置时不稳而倒下。在调试视觉时,要注意攝像头的识别距离,进行识别时,将机器人在自己调试的最适距离范围内。
三、智能物流机器人的竞赛
完成智能物流机器人的设计制作和调试之后,最后的面对的就是相关竞赛的发挥和策略。首先要找好队员,队员之间要相互协调,通常竞赛为三人一组,一个人做机器人的结构、一个人编写机器人的程序、最后一人最好两者都懂一些来做机器人的相关调试。机器人的机身多为有机玻璃板用激光切割机切割而成,控制板多数竞赛没有要求,可自由选择。因Arduino有中文社区,相关资料更为丰富,其自身控制板操作简单、种类多和功能足,所以Arduino控制板是一个很好的选择,其中Arduino Mega2560控制板效果更好。有些竞赛要求机械手与物块接触的全部零件需要用3D打印机打印出来,应对策略可以调整机械手的抓取位置,在保证抓取效果不影响的情况下,减少与物块接触的部分,这样会用最少的时间打印完零件,会有更多的时间进行现场调试。
竞赛前,观察赛道和各区域分布是否按照竞赛规则上的图纸布置,现场光线的情况,如有问题,及时向场地维护人员提出申请。正式比赛前调试时,要充分利用好每一分钟,大多数情况下赛前调试的时间很短,此时尽量不要再修改机器人的程序了,需要的是依靠参赛选手备赛过程中调试时的大量经验积累来应对赛前调试的突发情况。最后,良好的心理素质关系到竞赛时水平的发挥,不要过于紧张,调整好状态,稳定发挥出备赛时的水平。
四、结语
智能物流机器人的设计并不是很困难,但是要将其制作出来,应用在比赛中,取得优异的成绩,也绝非易事。竞赛时,考验的是队伍成员之间的相互配合,共同将机器人完成,而不是全由一个人负责。遇到特殊情况时,要保持冷静,多方面考虑。
参考文献:
[1]梅蓉.浅析Arduino单片机智能小车设计[J].企业科技与发展,2019(02):123-124.
[2]吴波涛,孔金平,王湘.基于Arduino和树莓派的智能小车的设计与实现[J].电子设计工程,2017,25(15):58-61.
作者简介:贺一烜,就读于西南石油大学本科二年级学生,常参与机器人类相关竞赛,单位是:西南石油大学机电工程学院。