树莓派替我玩Timberman

项目缘由与总结

手机上的Timberman游戏被朋友挑战,无奈只能达到300多分,突发奇想做一个自动化的系统来替代人进行操作,反超朋友记录

Timberman游戏规则简单,应该很轻松就能做出一套系统来实现自动化操作,况且机器毕竟是机器,依赖于算法做出的判断基本不会出错。

但是实践下来,遇到了不少问题,最终这套系统没有按照理想的情况运行下去,原因如下

1. 树莓派处理速度不够理想,无法瞬间得出运算结果

2. 手里只有盛辉MG995型舵机,实在是大材小用,树莓派也不能很好的进行驱动,也没有单独为他购置一套设备

3. 常规电容笔的工作是依赖于传递人手的电容进行工作的

4. 准备着手准备毕业设计,这个小东西只能暂时搁置了

等将来入手性能更加强大的树莓派2之后,再重启这个小项目吧,下面简单记录一下这个小东西

设备图片

实现思路

  1. 获取图像
  2. 切割
  3. 灰度化
  4. 与标准图进行对比
  5. 判断相似度
  6. 做出响应

工具

  • 树莓派及摄像头
  • 一个稳定的支撑平台
  • Python Imaging Library 库(简称pil库)

源代码

源代码十分简单,都是直接调用pil库的函数直接运行,舵机因为硬件问题调试的不是很完美,等着以后有了新装备再来完善

#!/usr/bin/python
#coding: utf8
import math
import os
import operator
import time
import signal
import atexit
#import cv2.cv as cv
import RPi.GPIO as GPIO
from PIL import Image

atexit.register(GPIO.cleanup)
servopin = 11
GPIO.setmode(GPIO.BOARD)
GPIO.setup(servopin, GPIO.OUT, initial=False)
p = GPIO.PWM(servopin,50) #50HZ

while (True):
    os.system(‘fswebcam -r 320×240 -d /dev/video0 -p yuyv -S 5 /root/timberman/testpictire.jpg‘)
    time.sleep(0.5)
    takeimg = Image.open(‘testpictire.jpg‘)#打开图片
    region = (50,50,150,220) #设置切割接线

    ctake = takeimg.crop(region) #切割
    Lctake = ctake.convert(‘L‘) #灰度化
    Lctake.save(‘fintest.jpg‘)

    standimage = Image.open(‘Lstand.jpg‘)

    h1 = Lctake.histogram()
    h2 = standimage.histogram()

    rms = math.sqrt(reduce(operator.add,  list(map(lambda a,b: (a-b)**2, h1, h2)))/len(h1) )

    if rms<1000:
        #p = GPIO.PWM(servopin,50) #50HZ
        p.start(0)
        for i in range(0,181,5):
            p.ChangeDutyCycle(2.5 + 10 * i / 180) #设置转动角度
            time.sleep(0.02)                      #等该20ms周期结束
            p.ChangeDutyCycle(0)                  #归零信号

    else:
        #p = GPIO.PWM(servopin,50) #50HZ
        p.start(0)
        for i in range(181,0,-5):
            p.ChangeDutyCycle(2.5 + 10 * i / 180) #设置转动角度
            time.sleep(0.02)                      #等该20ms周期结束
            p.ChangeDutyCycle(0)                  #归零信号

后期需要改进项

  • 优化代码
  • 调整舵机可控性
  • 针对不同场景建立大量标准图,对各个场景进行优化,增加判断准确度
  • 提高程序运行响应速度甚至考虑通过Arduino控制将项目移植到电脑上,通过PC进行运算
  • 研究一下如何优雅的让电容笔工作
时间: 2024-10-13 01:06:56

树莓派替我玩Timberman的相关文章

树莓派2试玩

经常家里.办公室同时编辑代码,需要一个在线SVN服务器,前面用百度云作为中间桥梁+同步实现SVN服务器,但最近一次同步故障差点导致所有代码文件全部丢失,因此更加希望自己建立一个稳定可用方便的Svn服务器,同时考虑到家里网速宽带还停留在4M的局 面,打算购入一块树莓派搭建自己的服务器. 去年就想搞这玩意了,可惜一直忙于其他事情,因此耽搁在此,原来只知道有个B+板块的,打算入手此板子,淘宝一搜发现居然第二代也出来了,更牛逼的是可以支持Win10,毫不犹豫的下单!下单后第三天就降价了! “世界上最便宜

[linux]树莓派入手体验和系统安装

背景 一直想捣鼓点什么东西.当看到树莓派的时候,就是它了. 树莓派可以安装Linux系统,而我在工作当中,可以说Linux是一半工作环境.树莓派真是个好东西,这个东西应该在我学习linxu/Unix的时候就该接触了.想想大学的时候,在windows下安装虚拟机,安装Linux是件多么痛苦的事情.而且那时的电脑配置也不算高,才2G内存,还要开虚拟机.玩个蛋蛋. 对Linux也算比较熟吧,入手一个树莓派应该可以玩很多好玩的事情. 购买硬件 直接在某宝搜索入手.必须内容: 树莓派一个(Raspberr

折腾树莓派的一些总结

树莓派是一款著名的掌上电脑,它只有银行卡大小,却具有PC的完整功能.具体的介绍可以自行度之. 我入手的是树莓派3B,最大的改进是自带无线网卡和蓝牙.它在外观上和树莓派2B没有明显的不同,最大的区别就是指示灯的位置了.2代的指示灯在针脚一侧,3代的指示灯在电源一侧,所以网上卖的号称2/3通用的外壳都是骗人的.关于教材嘛,<树莓派就这么玩>不用买了,它是15年出版的,内容却是14年的,落后的很. 有评价说树莓派就是买来折腾几天,然后吃灰的命,这话不假.我用它搞过游戏机,机顶盒,然后发现这都是然并卵

玩转树莓派&mdash;&mdash;支持PS3手柄

之前写过一篇用树莓派玩模拟器的.通过retropie可以集成不同的模拟器,在树莓派上玩街机.玩红白机.玩PSP都不是问题. 不过我不喜欢让游戏直接接管我的树莓派,毕竟用树莓派还得做正经事对吧. 还好retorpie提供on the top的使用方式,只不过是需要自行运行Shell命令.这里有指导: https://github.com/retropie/retropie-setup/wiki/Manual-Installation 可以直接通过github拉回来:     git clone -

玩转树莓派&mdash;&mdash;安装系统

纠结了很久,终于在今年生日的时候买了个树莓派 3.拿到以后少不了各种折腾,慢慢的把折腾过程写下来吧. 有关RaspBerry Pi 3,技术参数以及对应提升,就没必要在这里赘述了,官网介绍应有尽有:https://www.raspberrypi.org/ 万能的淘宝买回一个电路板~没有选择所谓的套餐,那背离了我折腾的初衷.当然,考虑到折腾的程度,散热片和漂亮的框还是要搞一个的,电源可以用iPad的,全部到手也不到300元. 通电之前的第一件事是准备系统.有两种不同的方式来"安装"系统:

再玩树莓派

好久没玩树莓派了,想用一下kali,于是想起了树莓派.昨天晚上就那么任性地想立马开启树莓派,但是当时只有一根网线,然后这个Mac总是不能直接通过网线连接树莓派.Mac ping不通树莓派.而且用网线连上树莓派之后大概一分钟之内会产生一个172.18.124.1的默认网关,然而arp不到它的物理地址.按照网上的各种方法删默认路由又添加依然没有用.我觉得我缺一根网线,于是今天去买了一根两米的网线,然后把Mac和树莓派作为两个LAN口连上路由器.不知道是不是没有设置DHCP的原因,树莓派一直得不到IP

树莓派 (Raspberry Pi) 是什么?普通人怎么玩?(私有云NAS也会有;上传到百度盘的功能nas也有)

作者:王震宇链接:https://www.zhihu.com/question/20859055/answer/54734499来源:知乎著作权归作者所有,转载请联系作者获得授权. 我两年前买的(约2013年),上面搭了十来种服务,比如: 一个个人网站,虽然我在国外买了专业的网站空间,但是在自己家里搭建一个,放些好玩的东西,也蛮有意思的,更新起来也不需要FTP了,直接拷贝就可以了.服务器上顺便搭建了一个家庭相册,由于是局域网,速度很快. 一个Git服务器,用来存放自己的部分代码,比如有些代码不想

Qemu虚拟机 玩树莓派最新版系统 (截止2017-04-10)

Qemu虚拟机可以玩 树莓派,大家都知道了吧.可是网上的教程好老,都是2012年的.我按照教程下载了最新版版本的树莓派系统怎么也跑不起来. 研究了好久,终于找到一个简单的方法,特意分享出来.转载请注意出处. 如果能帮你解决大问题,请给我留言鼓励.谢谢! 本文出处:http://www.cnblogs.com/chengchen/p/6751420.html 1. 在网站下载最新版Qemu http://www.qemu.org/ 我用的版本是2017年4月20日的 v2.9.0 2. 在 网站下

玩转树莓派&mdash;&mdash;支持XBOX手柄

作为最早玩XBOX 360和Kinect的一批玩家,家里的XBOX已经很久没开过了.改过电源.刷过脉冲,现在又在琢磨在树莓派上折腾XBOX手柄了. 之前写过,用RetroPie作为平台运行游戏模拟器等,RetroPie支持驱动XBOX360的游戏控制器.不过,需要买一个XBOX360手柄的PC适配器.万能的淘宝有售.至于我呢,无比怀念之前有150刀购物券的MVP时代,因为那时我买了很多XBOX360周边配件~ 言归正传,首先在RetroPie-Setup脚本中,找到xboxdrv组件,安装并启用