本帖最后由 tinnu 于 2018-10-20 00:23 编辑
(一)软硬件结构
上位机:连接摄像头,进行图像识别、用户交互
下位机:指令解析,信息上报,传感器信息采集,电机脉冲控制,空间位置顺解逆解
机械结构:3轴+1轴+1夹持架。
(二)机械结构部分介绍
底部三轴采用步进电机控制,保证精度;
主要负重的主轴和副轴采用42bygh48,旋转轴采用42bygh34。
(关于这个电机的问题真的坑啊……我设计的机械臂有点太大了,不断加传动比都很容易出现力矩不够的情况,1.0版的机械臂1:3.5的传动比,一直换到42bygh48都不行,42bygh48基本是市面上常见的步进里面力矩最大的……而且这个步进电机也是贼贵,几个几个的买真的吃不消……最后不行,改版弄出了一个2.0般的机械臂,1:5的传动比)
末端旋转轴采用mg996舵机控制;
夹持架采用mg996
(三)硬件结构
一开始是用cnc shield控制板+一块自己焊的接口板(接角度传感器+限位开关):
后来自己画了一块:
黑油板是不是很酷?其实因为我犯了个很难受的错误,导致一些地线没接上,所以其实这个板子背后有好几根飞线来着……
舵机供电也是个巨坑,我设计了两个供电方案保证成功:
LM7805从12V转到5V:
还有一个就是直接usb供
(四)下位机功能 1、传感器信息采集 步进电机这种东西虽然常用于开环控制,但奈何那都是力矩经过验算的情况,我这个容易遇到力矩大的角度的机械臂不知道什么时候就失步了,所以用两个mpu6050反馈主轴和副轴的角度信息。 不过这个反馈并非数控传统意义上的闭环控制,只是运动结束之后同步一下。 此外,如果传感器损坏或者接触不良等恶劣情况下系统也会转为开环控制。 程序设计中也为adxl345提供了接口,不过因为时间关系还没来得及实现,不过相比于mpu6050,前者还是比较实惠的,虽然mpu6050可以姿态融合,但奈何对采集速度要求严格,间隔一大就读不出来,结果还是直接读角度算了。 2、信息上报: 下位机接口有两个,USART2的串口和基于USART1的esp8266无线模块,可以通过SERIAL交互、tcp socket交互 上报设计了专门的上报体系,不会影响电机控制算法。 3、电机脉冲控制: 保证电机脉冲控制的优先度最高,采用定时器生成时基、控制时基单元数量控制电机运动速度的方式。 4、指令解析: 为了保证指令的识别度我没用标准的NC指令,自己设计了一套: 指令以_&为开始,以;结束,包含直接传入xy坐标、前后左右、旋转、夹持、翻转、复位、查询:
至于识别算法可以具体参考我的工程文件里面的communicate文件
下位机程序:
GD_TARM.rar
(3.41 MB, 下载次数: 6)
(五)上位机 上位机程序基于qt和opencv,是跨平台应用,我实现了基于x86的win、linux和基于arm的linux版本。 双目摄像头目前采用的是两个廉价的UVC摄像头拼成,目标识别算法采用yolo v2 基于tcp socket的安卓的上位机:
tarm.apk
(1.55 MB, 下载次数: 0)
(六)手动控制 这个演示当时采用的是1.0般机械臂,电机是42bygh40,传动比只有1:3.5,所以很容易出现力矩不够的情况: 整体概况: 前后左右(1.0版本是很脆弱,不敢让它动作太大,不然一下子就啪的掉下来了): 触碰限位(可以看到它压了几次都没压到限位(捂脸)后面那个位置力矩是真的不够): (七)重头戏——自动识别水杯搬运 这个2.0版的力矩大些,但也是很难伺 候,拆了调好久,所以没用他来演示手动控制。 桌面放不下机械臂来演示,没办法,只能用rk3288的arm开源硬件来控制,win远程登录,rk3288的性能可以从视频中中途尴尬的静默看出来(捂脸),一开始用树莓派当上位机,结果程序一跑直接崩溃…… 至于这个画质……学校校园网刚禁止的无线网络,没wifi用,只能用手机传…… (八)ps 演示效果挺差强人意,整块捣鼓下来真的费劲(口袋也吃不消,下面那个底座打印件、电机都贼贵……那个性能拆墙任意的rk3288也不便宜……) 虽然有让朋友帮忙弄机械结构,但大部分都是我自己动手的,加上上位机、硬件、下位机,各种bug,这段时间真的折腾……
|