当前位置:   article > 正文

基于stm32的色块拾取分类机械臂的设计_scratch机械臂 机械臂代码思路讲解

scratch机械臂 机械臂代码思路讲解

        本次设计的系统功能如下:使用5自由度由舵机构成的机械臂,配以openmv做颜色识别、TOF400激光测距模块测距,对放在机械臂前方的色块进行颜色分类,红色物块投放在机械臂左手边,蓝色物块投放在机械臂右手边。

演示视频如下:

基于stm32的色块识别机械臂的功能显示

目录

摘要

1.引言

1.1 单片机发展的概述

1.2 课题意义

1.3 开发工具的选择

2.设计要求

3.器件选型

3.1 单片机选型

3.2 摄像头模块选型

3.3 测距传感器

3.4 机械臂选型

4.设计思路

5.方案介绍

5.1 软件部分

5.1.1 主函数代码

5.1.2 测距代码

5.1.3  机械臂抓取部分的代码 

5.1.4 颜色识别部分的代码

5.2 硬件部分

5.2.1 STM32F103ZET6 

5.2.2 openmv摄像头

5.2.3 TOF400激光测距传感器

5.2.4 幻尔机械臂

6.测试数据

6.1 测试过程及效果

6.2 产生的误差


摘要

        机械臂是能模仿人手和臂的某些动作功能,用以按固定程序抓取、搬运物件或操作工具的自动操作装置。它可代替人的繁重劳动以实现生产的机械化和自动化,能在有害环境下操作以保护人身安全,因而广泛应用于机械制造、冶金、电子、轻工和原子能等部门。

        它是在早期出现的古代机器人基础上发展起来的,机械手研究始于20世纪中期,随着计算机和自动化技术的发展,特别是1946年第一台数字电子计算机问世以来,计算机取得了惊人的进步,向高速度、大容量、低价格的方向发展。同时,大批量生产的迫切需求推动了自动化技术的进展,又为机器人的开发奠定了基础。另一方面,核能技术的研究要求某些操作机械代替人处理放射性物质。在这一需求背景下,美国于1947年开发了遥控机械手,1948年又开发了机械式的主从机械手。

        机器视觉就是用机器代替人眼来做测量和判断。机器视觉系统是指通过机器视觉产品将被摄取目标转换成图像信号,传送给专用的图像处理系统﹐根据像素分布和亮度、颜色等信息,转变成数字化信号﹔图像系统对这些信号进行各种运算来抽取目标的特征,进而根据判别的结果来控制现场的设备动作。

        若将机器视觉与机械臂结合,则会使得机械臂的使用更为灵活,用途更加广泛。

1.引言

1.1 单片机发展的概述

        单片机诞生于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位。单片机设计生产周期缩短、成本下降、应用领域拓宽,开始向专用型单片机发展。

1.2 课题意义

        机械手是在机械化,自动化生产过程中发展起来的一种新型装置。在现代生产过程中﹐机械手被广泛的运用于自动生产线中﹐机械人的研制和生产已成为高技术邻域内﹐迅速发殿起来的一门新兴的技术﹐它更加促进了机械手的发展,使得机械手能更好地实现与机械化和自动化的有机结合。机械手虽然目前还不如人手那样灵活,但它具有能不断重复工作和劳动,不知疲劳,不怕危险﹐抓举重物的力里比人手力大的特点,因此,机械手已受到许多部门的重视﹐并越来越广泛地得到了应用。再加上近些年来人们在图像识别的领域已取得重大突破,一些人更是尝试将机器视觉运用在机械手臂上,使之成为真正智能的手臂,能够自主运行。

1.3 开发工具的选择

        Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

2.设计要求

        使用5自由度由舵机构成的机械臂,配以openmv做颜色识别、TOF400激光测距模块测距,对放在机械臂前方的色块进行颜色分类,红色物块投放在机械臂左手边,蓝色物块投放在机械臂右手边。

3.器件选型

        本系统主要由stm32学习板、openmv摄像头、激光测距传感器、机械臂、等几个部分组成,下面分别论证这几个模块的选择。

3.1 单片机选型

        方案一:AT89C52单片机。AT89C52 是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash存储器,适于常规编程器。但是架构太简单,片上外设少,不适合本次使用。

        方案二:STM32单片机。STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。STM32单片机程序都是模块化的,接口相对简单些,内有A/D转换电路,可扩展性强。

        因为本次设计对处理器的运算能力要求较高,而且需要使用两个串口,所以选择运算能力强、硬件资源丰富的STM32单片机。

3.2 摄像头模块选型

        方案一:采用K210开发板作为本次设计的摄像头模块。勘智K210这款芯片由著名的矿机公司嘉楠科技基于RISC-V架构进行研发设计,可根据业务场景需求扩展基础指令,具备较强的可编程能力。同时,勘智K210具备机器听觉与机器视觉两种能力,可以灵活适配人脸识别、目标检测、语音唤醒及识别等场景,是国内ASIC领域为数不多保持一定通用性的芯片。作为嘉楠科技自主研发的边缘侧AI芯片,勘智K210兼具高能耗比和灵活性。

        方案二:采用openmv作为本次设计的摄像头模块。OpenMV是一个开源,低成本,功能强大的机器视觉模块。以STM32F767CPU为核心,集成了OV7725摄像头芯片,在小巧的硬件模块上,用C语言高效地实现了核心机器视觉算法,提供Python编程接口。使用者们(包括发明家、爱好者以及智能设备开发商)可以用python语言使用OpenMV提供的机器视觉功能,为自己的产品和发明增加有特色的竞争力。OpenMV上的机器视觉算法包括寻找色块、人脸检测、眼球跟踪、边缘检测、标志跟踪等。可以用来实现非法入侵检测、产品的残次品筛选、跟踪固定的标记物等。使用者仅需要写一些简单的Python代码,即可轻松的完成各种机器视觉相关的任务。

        通过比较,本次选择开源度较高,上手较快,资源丰富的openmv作为本次设计的摄像头模块

3.3 测距传感器

        方案一:采用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.4 机械臂选型

        方案一:采用亚克力板3自由度机械臂。3自由度机械手是一种能模仿人手和臂的某些动作功能,用以按固定程序抓取、搬运物件或操作工具的自动操作装置。特点是可以通过编程来完成各种预期的作业,构造和性能上兼有人和机械手机器各自的优点。

        方案二:采用金属框架5自由度机械臂。5自由度机械臂的结构、功能、控制方式与3自由度一致,只是增加了两个驱动舵机,多了两个自由度,使其运动更为灵活,功能也更多。

        本次选择结构上更为牢固、自由度更多、使用灵活的5自由度金属机械臂——幻尔机械臂。

4.设计思路

        首先TOF400传感器,会将测到的距离数据,通过串口发送给单片机。单片机只用在串口中断函数里面,按照一定的格式解析数据,就能得到距离信息。

        openmv是一种集成的视觉识别设备,它与单片机之间也是用串口通信。它有专门的开发软件,使用python编程,当它识别到对应的颜色以后,也会将颜色数据通过串口发送给单片机。

        机械臂的抓取原理如下:机械臂的各个关节都是由舵机组成的,控制舵机的角度,就能控制机械臂的姿态,从而驱动机械臂运动到对应的地点,抓取色块,并进行分类。所以问题的关键是如何得到机械臂的各个关节的舵机角度。机械臂的示意图如下:

         因为机械臂的手臂长度L1和L2是已知的,所以当测距传感器得到距离数据以后,就能通过余弦定理,解出各个关节的角度了。示意图及公式如下所示:

 

5.方案介绍

5.1 软件部分

5.1.1 主函数代码

        主函数里面就是一些外设的配置代码,然后就是测距,当距离范围在10-28CM时,就控制机械臂去抓取色块。

5.1.2 测距代码

        这里主要使用串口解析数据,得到距离数据。

5.1.3  机械臂抓取部分的代码 

 

 这里是根据距离、颜色等 控制关节角度。

5.1.4 颜色识别部分的代码

5.2 硬件部分

5.2.1 STM32F103ZET6 

        stm32f103zet6是一种嵌入式-微控制器的集成电路(IC),是由ST公司开发的STM32F1系列的其中一种,芯体尺寸是32位,速度是72MHz,程序存储器容量是256KB,程序存储器类型是FLASH,RAM容量是48K。主要特性如下:

  1. 内核:ARM32位的Cortex TM-M3 CPU;最高72NMHz工作顿率,在存储器的0等待周期访问时可达1.25DMips/MHz(Dhrystone2.1);单周期乘法和硬件除法存储器。
  2. 存储器:从256K至512K字节的闪存程序存储器;高达64K字节的SRAM;带4个片选的静态存储器控制器。支持CF卡、SRAM、PSRAM.NOR和INAND存储器―并行LCD接口,兼容8080/68O0模式时钟、复位和电源管理。
  3. 3个12位模数转换器,1us转换时间(多达21个输入通道)转换范围:0至3.6v;三倍采样和保持功能;温度传感器。
  4. 2通道12位D/A转换器。
  5. DMA:12通道DMA控制器,专持的外设:定时器、ADC、DAC,SDIO、I2C、SPI、USART。
  6. 多达112个快速I/O端口
  7. 多达11个定时器。
  8. 多达13个通信接口。

5.2.2 openmv摄像头

        OpenMV摄像头是一款小巧,低功耗,低成本的电路板,它帮助你很轻松的完成机器视觉(machine vision)应用。你可以通过高级语言Python脚本(准确的说是 MicroPython ),而不是C/C++。Python的高级数据结构使你很容易在机器视觉算法中处理复杂的输出。但是,你仍然可以完全控制OpenMV。你可以很容易的使用外部终端触发拍摄或者或者执行算法,也可以把算法的结果用来控制IO引脚。

OpenMV摄像头的特点:

  1. STM32H743II ARM Cortex M7 处理器,480 MHz ,1MB RAM,2 MB flash. 所有的 I/O 引脚输出 3.3V 并且 5V 耐受。这个处理器有以下的IO接口:
  1. 全速 USB (12Mbs) 接口,连接到电脑。当插入OpenMV摄像头后,你的电脑会出现一个虚拟COM端口和一个“U盘”。
  2. μSD卡槽拥有100Mbs读写,这允许你的OpenMV摄像头录制视频,和把机器视觉的素材从SD卡提取出来。
  3. 一个SPI总线高达100Mbs速度,允许你简单的把图像流数据传给LCD扩展板,WiFi扩展板,或者其他控制器。
  4. 一个 I2C总线,CAN总线, 和2两个异步串口总线 (TX/RX) ,用来链接其他控制器或者传感器。
  5. 一个12-bit ADC 和一个12-bit DAC。
  6. 2个 I/O 引脚用于舵机控制.
  7. 所有的IO口都可以用于,中断和PWM(板子上有10个I/O引脚)。
  8. 一个RGB LED(三色), 两个高亮的 850nm IR LED(红外)。
  9. 32 MB 外置的 32-bit SDRAM ,100 MHz的时钟,达到 400 MB/s 的带宽。
  10. 32 MB 外置的 quadspi flash, 100 MHz的时钟,4-bit DDR模式达到 100 MB/s 的带宽。
  1. 可拆卸的摄像头模块系统,允许OpenMV Cam H7 Plus与不同的感光元件模组连接:
  1. OpenMV4 H7 Plus默认配置的OV5640 感光元件处理2592×1944 (5MP)图像。在QVGA (320×240)及以下的分辨率时,大多数简单的算法可以运行(25~50)FPS。你的 OpenMV 摄像头有一个2.8mm焦距镜头在一个标准M12镜头底座上。如果你想使用更多的特殊的镜头,你可以很容易的安装。
  2. 对于专业的机器视觉应用,你可以购买我们的全局快门摄像头模组mt9V034。
  3. 对于红外热成像机器视觉应用,您可以购买我们的FLIR Lepton 红外热成像模组。

5.2.3 TOF400激光测距传感器

        TOF400F测距传感器是基于ST的VL53L1X设计制造的可提供了精确和可重复的远距离测量功能的一款激光测距模块。得益于其内部集成的领先的SPAD阵列(单光子雪崩二极管)、物理红外滤光片和光学器件,使用了ST最新一代的直接ToF技术,可实现更高测距距离、更准确的测量结果及更高的环境光抗干

        扰性。TOF400F同时支持串口模式,串口模拟 Modbus 模式, 以及 IIC 模式,很好适应各种不同的应用场景。配套上位机,方便调试。TOF400F测距范围最高可达4m,并可根据需求选择高精度或者远距测试模式,使其具备更高的灵活性。64位光刻ROM,内置产品序列号,方便多机挂接。多样封装形式,适应不同硬件系统。

      

         

 

特性:

  1. 940nm激光符合IEC 60825-1:2014第3版规定的1类操作条件
  2. 传感器尺寸(20×16.8×6.0mm)
  3. 最大测量距离室内可达4米精度在5%以内·测量的范围与目标物体的反射率无关﹒可工作在高红外光的环境下
  4. 高光学串扰补偿
  5. 测量时间小于30ms·无铅
  6. 不需要额外的光学器件﹒单电源供电
  7. 标准的TTL电平串口I2C·高光学串扰补偿             

管脚描述:

 

工作模式:

 

数据格式:

测距条件:

· 白卡 White 88% 灰卡 Gray 17%

· 在140mm的地方进行一次偏移校准(使用白卡,黑暗条件)

· 室内: 无红外线 Indoor : no infrared

· 室外: 背光,阳光明媚白天情况下模块背对窗户50 kcps/SPAD

面光,阳光明媚白天情况下模块正对窗户,在传感器正面有直接光照,200 kcps/SPAD

5.2.4 幻尔机械臂

 

        LeArm是深圳幻尔科技Hiwonder旗下的一块产品,它是基于Scratch的6自由度可编程机械臂,采用图形化编程,配备十余种电子模块,兼容Arduino编程,支持二次开发。它拥有大扭力金属舵机,可以实现夹取、分拣等功能,支持3种编程方式和5种控制方式。

        LeArm 智能机械臂可以采用高端逆运动学算法,可以准确计算出每个舵机需要转动的角度,令每个动作的准确率提升2倍。

        采用LDX-335MG舵机,具有防烧防堵转功能,当发生堵转时,舵机会自动计时,当发现堵转时间超过4分钟,舵机就会自动停止工作。这样能大大提高舵机使用寿命,适合用在机械臂的爪子上。

 

 

 

6.测试数据

6.1 测试过程及效果

        将TOF400模块安装在机械臂前部、openmv摄像头用铁架台夹持住固定在色块上方、机械臂的各个舵机接线插在一块专用的转接板上,并与STM32主控板共地。TOF400接在主控板的串口2上,openmv接在主控板的串口1上,机械臂的5个舵机分别接在主控板的PB5、PB6、PB7、PB8、PB3上。插上主控电源与机械臂电源,openmv摄像头蓝灯闪烁代表其工作正常。按下按键将机械臂复位至初始状态。在机械臂前方放置一红色物块,激光测距模块测得其与机械臂之间的距离为21.36cm,随后机械臂运动至色块上方,将其夹住,成功扔至机械臂左边。(事先认为左边为红色物体堆放区,右边为蓝色物体堆放区)。第二次扔一蓝色物块至机械臂前方,测得其与机械臂之间距离为18.55cm,机械臂依然成功将其抓取并分类至右边。

6.2 产生的误差

         本次设计的误差主要在距离的测量上,后在算法上进行调整可以进一步减小误差。此外,摄像头在进行颜色识别时也会存在误差,这将导致颜色识别不准确,这主要与测试现场的光线有关。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/405210
推荐阅读
相关标签
  

闽ICP备14008679号