查看: 2208|回复: 1
打印 上一主题 下一主题

白块机械臂 用机械臂来踩白块

[复制链接]
跳转到指定楼层
沙发
发表于 2017-9-23 08:31:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 cirno 于 2017-9-23 12:14 编辑

                           
白块机器人

  
2017年9月8日
摘  要
--------------------------------------------------------------------------------------

舵机是一种位置(角度)伺服的驱动器,属于伺服电机的一种,广泛应用于模型,玩具中。在机器人,机械臂中,舵机控制着各个部分的运动,控制舵机是在机器人控制中重要的,不可缺少的基础部分。
本设计使用线性CCD实现了简单的图像识别功能,设计了基于两个舵机的机械笔结构,在此基础上控制舵机以触碰屏幕上某点,实现了对“别踩白块”游戏的自动操作。

关键字:舵机、机械臂、线性CCD、踩白块。


一、系统硬件介绍
--------------------------------------------------------------------------------------
1.机械部分

舵机是一种位置(角度)伺服的驱动器,主要由外壳、电路板、无核心马达、齿轮与位置检测器所构成。其工作原理是由接收机发出讯号给舵机,经电路板上的 IC驱动无核心马达转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回讯号,判断是否已经到达定位。位置检测器其实就是可变电阻,当舵机转动时电阻值也会随之改变,检测电阻值便可知转动的角度。对于本系统而言,两个舵机已足够满足旋转加触碰的需求。
触屏笔在手握操作时可以正常使用,但是实际测试时发现未与人体接触的触屏笔灵敏度非常低。因此,在触屏笔的末端贴上锡纸,并用杜邦线连接锡纸与人体。就可以较好地解决了触控的问题。机械结构如图1-1。



图1-1  机械结构示意图


2.检测装置的选择与论证
对与别踩白块游戏中下落黑块的检测,有了三种方案。

方案一:红外对管。红外对管广泛使用于黑线的检测,其检测灵敏,处理简单,但此方案在进行前期测试时发现无法正常使用。猜想是因为测试所用的手机屏幕为TFT屏幕,TFT屏幕在显示黑色像素时依然会发光,而另一种AMOLED屏幕则在显示黑色像素时几乎不发光,但由于条件限制,未能使用AMOLED屏幕进行测试。   

方案二: 光敏电阻。使用光敏电阻配合运放对黑块下落的四个轨道进行检测,其反应灵敏,处理简单,且实际测试可行。但使用光敏电阻与红外对管均有两个致命缺点:不美观、影响触碰。原理图如图1-2所示。

图1-2 光敏电阻检测原理图


方案三:线性CCD。使用线性CCD进行检测,线性CCD非常适合黑线检测,在智能车中广泛使用。在本设计中使用可以使其更美观,且不影响触屏笔的操作,缺点是数据量较上述两种方案大,处理耗时较长。
综上所述,我们决定采用线性CCD来检测下落的黑块。


3.其他部件
为实现手机的操控,对系统添加了ESP8266模块来实现TCP通信。
本系统外接5V直流电源,STM32和WIFI模块ESP8266的工作电压均为3.3V,因此使用AMS1117-3.3芯片满足电源要求。电路如图1-3。



         图1-3 电源模块原理图



本系统所使用的手机为红米Note 4X 标准版。组装完成后的系统见图1-4。



图1-4 组装完成后的系统


二、系统软件设计
--------------------------------------------------------------------------------------
1.线性CCD的使用

本设计采用蓝宙TSL1401线性CCD,其时序图较简单,如图2-1:

         图2-1 TSL1401 线性传感器时序图


TSL1401返回的128个像素值为电压值,因此需要使用STM32的ADC功能。为了区分黑块和白块,首先划分出4个下落区域,程序中对这四个下落区域的灰度值求平均值,比较出最黑的一个区域,即黑块。

2.舵机的使用
两个舵机使用STM32的定时器TIM3的两个PWM通道控制。通过改变周期20ms的PWM的占空比,可以很容易的控制舵机到自己想要的角度。
检测出黑块的位置之后,STM32给两个舵机输入合适的PWM值i,j,达到触碰黑块的目的。
  1. TIM_SetCompare1(TIM3,i);//上舵机
  2. TIM_SetCompare1(TIM3,j);//下舵机
复制代码

为了方便,事先直接测得机械臂各个动作所对应的PWM值,如图2-2和表2-1。
  
下舵机
  
  
位置1
  
  
位置2
  
  
位置3
  
  
位置4
  
  
PWM值i
  
  
890
  
  
840
  
  
800
  
  
750
  
  
上舵机
  
  
上移
  
  
下移
  
  
PWM值j
  
  
900
  
  
970
  

表2-1 舵机角度表



     
         图2-2 别踩白块游戏界面。



3.手机控制

为了达到使用手机控制此机械臂的目的,我们使用了ESP8266模块,它是一款性价比极高的WIFI串口模块。很容易就能实现TCP或UDP的通信。这里将其配置为TCP服务端,安卓手机配置为TCP客户端。使用AndroidStudio编写安卓端,如图2-3。



图2-3 安卓端界面


其中,中间的拨动开关可以切换自动/手动模式,在手动模式下,摇杆和右边的四个按钮才可用,摇杆可以轻易控制机械臂运动,而四个按钮可以完成四个预置动作(即四个黑块位置的点击)。


三、系统测试
--------------------------------------------------------------------------------------
1.测试方法

取游戏中的“经典”模式,设置黑块数量为50,,计时点击50个方块,测试所耗时间,总点击次数,未点击到的次数和错误次数。

测试器材与软件:红米Note4X,别踩白块儿 v4.0.3 ,白块机器人。


2.测试结果
结果如表3-1:
  
测试次数
  
  
总点击次数
  
  
未点到
  
  
错误
  
  
成功点击
  
  
耗时/s
  
  
1
  
  
57
  
  
7
  
  
0
  
  
50
  
  
26.754
  
  
2
  
  
61
  
  
11
  
  
0
  
  
50
  
  
29.231
  
  
3
  
  
28
  
  
0
  
  
1
  
  
27
  
  
---
  

表3-1 测试结果


从测试结果中可以看出,本系统的准确度尚可,但是灵敏度一般。猜想错误发生是因为环境光照的影响,使系统对黑块位置判断错误。


四、附录
--------------------------------------------------------------------------------------

视频链接     :https://www.bilibili.com/video/av14545580/
下位机项目源代码:https://github.com/kuzen/PianoBot
上位机项目源代码:https://github.com/kuzen/AndroidPianoBot

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入因仑

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表