赞
踩
本次设计的系统功能如下:使用5自由度由舵机构成的机械臂,配以openmv做颜色识别、TOF400激光测距模块测距,对放在机械臂前方的色块进行颜色分类,红色物块投放在机械臂左手边,蓝色物块投放在机械臂右手边。
演示视频如下:
基于stm32的色块识别机械臂的功能显示
目录
机械臂是能模仿人手和臂的某些动作功能,用以按固定程序抓取、搬运物件或操作工具的自动操作装置。它可代替人的繁重劳动以实现生产的机械化和自动化,能在有害环境下操作以保护人身安全,因而广泛应用于机械制造、冶金、电子、轻工和原子能等部门。
它是在早期出现的古代机器人基础上发展起来的,机械手研究始于20世纪中期,随着计算机和自动化技术的发展,特别是1946年第一台数字电子计算机问世以来,计算机取得了惊人的进步,向高速度、大容量、低价格的方向发展。同时,大批量生产的迫切需求推动了自动化技术的进展,又为机器人的开发奠定了基础。另一方面,核能技术的研究要求某些操作机械代替人处理放射性物质。在这一需求背景下,美国于1947年开发了遥控机械手,1948年又开发了机械式的主从机械手。
机器视觉就是用机器代替人眼来做测量和判断。机器视觉系统是指通过机器视觉产品将被摄取目标转换成图像信号,传送给专用的图像处理系统﹐根据像素分布和亮度、颜色等信息,转变成数字化信号﹔图像系统对这些信号进行各种运算来抽取目标的特征,进而根据判别的结果来控制现场的设备动作。
若将机器视觉与机械臂结合,则会使得机械臂的使用更为灵活,用途更加广泛。
单片机诞生于20世纪70年代,1974年Fairchild(仙童)公司研制出第一台卫星计算机F8。.此时集成电路属于中规模发展时期,各种新材料新工艺尚未成熟,单片机仍处于发展的初级阶段,元件集成规模还比较小,功能比较简单,一般均把CPU、RAM,有的还包括一些简单的I/O口集成到芯片上,像Fairchild公司就属于这一类型,它还需配上外围的其他处理电路方才构成完整的计算系统。
1976年Intel公司推出了MCS-48单片机,这个时期的单片机才是真正的8位单片微型计算机。它以体积小,功能全,价格低赢得了广泛应用。这一阶段,单片机被正式命名为Single Chip Microcomputer,即单片微型计算机。总的来说,这一时期的单片机性能较弱属于低、中档产品。
1982年以后,16位单片机问世,例如Intel公司的MCS-96系列。16为单片机比起8位机,数据宽度增加了一倍,实时处理能力更强,主频更高,RAM增加到232字节,RAM则达到了8KB,并且有8个中断源,同时配置了多路的A/D转换通道,高速的I/O处理单元,适用于更复杂的测控系统。
1990年后是微控制器的全面发展阶段。随着单片机在各个领域全面深入地发展和应用,出现了高速、大寻址范围、强运算能力的8位/16位/32位通用型单片机,以及小型廉价的专用型单片机。
现在,单片机发展迅速,按操作处理的基本数据位数来看已经有4位、8位、16位、32位、甚至64位。单片机设计生产周期缩短、成本下降、应用领域拓宽,开始向专用型单片机发展。
机械手是在机械化,自动化生产过程中发展起来的一种新型装置。在现代生产过程中﹐机械手被广泛的运用于自动生产线中﹐机械人的研制和生产已成为高技术邻域内﹐迅速发殿起来的一门新兴的技术﹐它更加促进了机械手的发展,使得机械手能更好地实现与机械化和自动化的有机结合。机械手虽然目前还不如人手那样灵活,但它具有能不断重复工作和劳动,不知疲劳,不怕危险﹐抓举重物的力里比人手力大的特点,因此,机械手已受到许多部门的重视﹐并越来越广泛地得到了应用。再加上近些年来人们在图像识别的领域已取得重大突破,一些人更是尝试将机器视觉运用在机械手臂上,使之成为真正智能的手臂,能够自主运行。
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
使用5自由度由舵机构成的机械臂,配以openmv做颜色识别、TOF400激光测距模块测距,对放在机械臂前方的色块进行颜色分类,红色物块投放在机械臂左手边,蓝色物块投放在机械臂右手边。
本系统主要由stm32学习板、openmv摄像头、激光测距传感器、机械臂、等几个部分组成,下面分别论证这几个模块的选择。
方案一:AT89C52单片机。AT89C52 是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash存储器,适于常规编程器。但是架构太简单,片上外设少,不适合本次使用。
方案二:STM32单片机。STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。STM32单片机程序都是模块化的,接口相对简单些,内有A/D转换电路,可扩展性强。
因为本次设计对处理器的运算能力要求较高,而且需要使用两个串口,所以选择运算能力强、硬件资源丰富的STM32单片机。
方案一:采用K210开发板作为本次设计的摄像头模块。勘智K210这款芯片由著名的矿机公司嘉楠科技基于RISC-V架构进行研发设计,可根据业务场景需求扩展基础指令,具备较强的可编程能力。同时,勘智K210具备机器听觉与机器视觉两种能力,可以灵活适配人脸识别、目标检测、语音唤醒及识别等场景,是国内ASIC领域为数不多保持一定通用性的芯片。作为嘉楠科技自主研发的边缘侧AI芯片,勘智K210兼具高能耗比和灵活性。
方案二:采用openmv作为本次设计的摄像头模块。OpenMV是一个开源,低成本,功能强大的机器视觉模块。以STM32F767CPU为核心,集成了OV7725摄像头芯片,在小巧的硬件模块上,用C语言高效地实现了核心机器视觉算法,提供Python编程接口。使用者们(包括发明家、爱好者以及智能设备开发商)可以用python语言使用OpenMV提供的机器视觉功能,为自己的产品和发明增加有特色的竞争力。OpenMV上的机器视觉算法包括寻找色块、人脸检测、眼球跟踪、边缘检测、标志跟踪等。可以用来实现非法入侵检测、产品的残次品筛选、跟踪固定的标记物等。使用者仅需要写一些简单的Python代码,即可轻松的完成各种机器视觉相关的任务。
通过比较,本次选择开源度较高,上手较快,资源丰富的openmv作为本次设计的摄像头模块
方案一:采用HY-SRF05超声波测距模块进行距离测量。HY-SRFO5超声波测距模块可提供2cm-450cm 的非接触式距离感测功能,测距精度可高达3mm﹔模块包括超声波接收器﹑发射器与控制电路。采用IO 口TRIG触发则距,给至少10us的高电平信号;模块自动发送8个40khz的方波,自动检则是否有信号返回有信号返回,通过IO口ECHO 输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。则试距离=(高电平时间*声速(340M'S ) ) /2.
方案二:使用TOF400激光测距传感器。TOF400F测距传感器是基于ST的VL53L1X设计制造的可提供了精确和可重复的远距离测量功能的一款激光测距模块。得益于其内部集成的领先的SPAD阵列(单光子雪崩二极管)、物理红外滤光片和光学器件,使用了ST最新一代的直接ToF技术,可实现更高测距距离、更准确的测量结果及更高的环境光抗干扰性。TOF400F同时支持串口模式,串口模拟 Modbus 模式, 以及 IIC 模式,很好适应各种不同的应用场景。
配套上位机,方便调试。TOF400F测距范围最高可达4m,并可根据需求选择高精度或者远距测试模式,使其具备更高的灵活性。
通过比较,本次选择TOF400激光测距传感器。
方案一:采用亚克力板3自由度机械臂。3自由度机械手是一种能模仿人手和臂的某些动作功能,用以按固定程序抓取、搬运物件或操作工具的自动操作装置。特点是可以通过编程来完成各种预期的作业,构造和性能上兼有人和机械手机器各自的优点。
方案二:采用金属框架5自由度机械臂。5自由度机械臂的结构、功能、控制方式与3自由度一致,只是增加了两个驱动舵机,多了两个自由度,使其运动更为灵活,功能也更多。
本次选择结构上更为牢固、自由度更多、使用灵活的5自由度金属机械臂——幻尔机械臂。
首先TOF400传感器,会将测到的距离数据,通过串口发送给单片机。单片机只用在串口中断函数里面,按照一定的格式解析数据,就能得到距离信息。
openmv是一种集成的视觉识别设备,它与单片机之间也是用串口通信。它有专门的开发软件,使用python编程,当它识别到对应的颜色以后,也会将颜色数据通过串口发送给单片机。
机械臂的抓取原理如下:机械臂的各个关节都是由舵机组成的,控制舵机的角度,就能控制机械臂的姿态,从而驱动机械臂运动到对应的地点,抓取色块,并进行分类。所以问题的关键是如何得到机械臂的各个关节的舵机角度。机械臂的示意图如下:
因为机械臂的手臂长度L1和L2是已知的,所以当测距传感器得到距离数据以后,就能通过余弦定理,解出各个关节的角度了。示意图及公式如下所示:
主函数里面就是一些外设的配置代码,然后就是测距,当距离范围在10-28CM时,就控制机械臂去抓取色块。
这里主要使用串口解析数据,得到距离数据。
这里是根据距离、颜色等 控制关节角度。
stm32f103zet6是一种嵌入式-微控制器的集成电路(IC),是由ST公司开发的STM32F1系列的其中一种,芯体尺寸是32位,速度是72MHz,程序存储器容量是256KB,程序存储器类型是FLASH,RAM容量是48K。主要特性如下:
OpenMV摄像头是一款小巧,低功耗,低成本的电路板,它帮助你很轻松的完成机器视觉(machine vision)应用。你可以通过高级语言Python脚本(准确的说是 MicroPython ),而不是C/C++。Python的高级数据结构使你很容易在机器视觉算法中处理复杂的输出。但是,你仍然可以完全控制OpenMV。你可以很容易的使用外部终端触发拍摄或者或者执行算法,也可以把算法的结果用来控制IO引脚。
OpenMV摄像头的特点:
TOF400F测距传感器是基于ST的VL53L1X设计制造的可提供了精确和可重复的远距离测量功能的一款激光测距模块。得益于其内部集成的领先的SPAD阵列(单光子雪崩二极管)、物理红外滤光片和光学器件,使用了ST最新一代的直接ToF技术,可实现更高测距距离、更准确的测量结果及更高的环境光抗干
扰性。TOF400F同时支持串口模式,串口模拟 Modbus 模式, 以及 IIC 模式,很好适应各种不同的应用场景。配套上位机,方便调试。TOF400F测距范围最高可达4m,并可根据需求选择高精度或者远距测试模式,使其具备更高的灵活性。64位光刻ROM,内置产品序列号,方便多机挂接。多样封装形式,适应不同硬件系统。
特性:
管脚描述:
工作模式:
数据格式:
测距条件:
· 白卡 White 88% 灰卡 Gray 17%
· 在140mm的地方进行一次偏移校准(使用白卡,黑暗条件)
· 室内: 无红外线 Indoor : no infrared
· 室外: 背光,阳光明媚白天情况下模块背对窗户50 kcps/SPAD
面光,阳光明媚白天情况下模块正对窗户,在传感器正面有直接光照,200 kcps/SPAD
LeArm是深圳幻尔科技Hiwonder旗下的一块产品,它是基于Scratch的6自由度可编程机械臂,采用图形化编程,配备十余种电子模块,兼容Arduino编程,支持二次开发。它拥有大扭力金属舵机,可以实现夹取、分拣等功能,支持3种编程方式和5种控制方式。
LeArm 智能机械臂可以采用高端逆运动学算法,可以准确计算出每个舵机需要转动的角度,令每个动作的准确率提升2倍。
采用LDX-335MG舵机,具有防烧防堵转功能,当发生堵转时,舵机会自动计时,当发现堵转时间超过4分钟,舵机就会自动停止工作。这样能大大提高舵机使用寿命,适合用在机械臂的爪子上。
将TOF400模块安装在机械臂前部、openmv摄像头用铁架台夹持住固定在色块上方、机械臂的各个舵机接线插在一块专用的转接板上,并与STM32主控板共地。TOF400接在主控板的串口2上,openmv接在主控板的串口1上,机械臂的5个舵机分别接在主控板的PB5、PB6、PB7、PB8、PB3上。插上主控电源与机械臂电源,openmv摄像头蓝灯闪烁代表其工作正常。按下按键将机械臂复位至初始状态。在机械臂前方放置一红色物块,激光测距模块测得其与机械臂之间的距离为21.36cm,随后机械臂运动至色块上方,将其夹住,成功扔至机械臂左边。(事先认为左边为红色物体堆放区,右边为蓝色物体堆放区)。第二次扔一蓝色物块至机械臂前方,测得其与机械臂之间距离为18.55cm,机械臂依然成功将其抓取并分类至右边。
本次设计的误差主要在距离的测量上,后在算法上进行调整可以进一步减小误差。此外,摄像头在进行颜色识别时也会存在误差,这将导致颜色识别不准确,这主要与测试现场的光线有关。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。