树莓派 + AI 魔改贪吃蛇——与蛇共舞

本作品由 大飞品树莓 分享在 MAKE 趣无尽 上,不仅介绍了使用百度 AI 实现身体姿势控制贪食蛇运动所需要的程序搭建,还提供了配置好了的系统镜像文件,准备好必要的硬件、烧录好系统镜像之后可以立刻体验。

作品介绍

参加贪吃蛇魔改大赛作品,基于pgzero1.2中example的snake作品,结合百度AI人工智能平台中人体关键点分析,小蛇吃苹果,我来做运动,我与小蛇共舞。通过手的围绕身体进行转动,控制小蛇的运动方向。

1、运行平台:树莓派4B+摄像头或者安装 python、opencv、mplayer 等工具的PC机

2、久坐的程序员需要站起来运动了,运行程序,通过手腕上下左右移动,控制贪吃蛇的运动方向,与蛇共舞,放松筋骨

3、代码托管地址:https://gitee.com/shiranfei/Adapted-game-ai_snake

软件架构

一、贪吃蛇程序采用pgzero1.2中example的snake例程。

pgzero1.2 链接:

https://github.com/lordmauve/pgzero

pgzero的使用官方文档:

https://pygame-zero.readthedocs.io/en/stable/

二、百度AI人工智能平台人体关键点分析,使用史然飞的《中学生都能玩的人工智能》中对百度AI进一步封装库。

参考链接:

https://gitee.com/shiranfei/open_course_for_AI.git

《中学生都能玩的人工智能》是史然飞(就是我啊)基于树莓派和百度AI定制的人工智能实验课,可以体验当前深度学习能完成的事情和其效果,基于开发平台的API,省略了模型建立和调参的复杂过程,可以快速、的制作智能产品,智能化我们的生活。

三、程序由三大块组成:使用摄像头分析我们的姿态程序、标准贪吃蛇程序、音乐播放程序

1、使用摄像头分析我们姿态的程序,读取摄像头的图片,然后发给百度AI进行分析,返回人体姿态,通过姿态信息里手臂、头部和肩膀的关系,得到方向控制键:上下左右,然后通过socke发送给标准贪吃蛇程序socket:127.0.0.1:20163。通过测试,发现在树莓派和PC上,百度AI的分析速度基本为2帧/秒。

2、标准贪吃蛇程序,在pgzero1.2的snake基础上,新建了一个进程,完成从127.0.0.1:20163中读取人体姿态分析后的方向控制键,然后更新小蛇的运动方向。

3、播放音乐程序,这个程序是后加的,发现当前在标准贪吃蛇程序中,调用music模块播放音乐有问题,当前未找出问题,所有采用折中方式,新建一个进程专门播放音乐。

4、2020-07-19,当前版本程序,完成摄像头捕捉人体姿态,通过人体姿态完成对小蛇的控制,同时可以播放音乐。

后续待添加功能:

1、解决pgzero中运行music长时间播放异常的问题。

2、添加滑动手臂,更换播放音乐的效果。

3、添加通过语音控制开始游戏和结束游戏。

4、项目退出问题,当前程序已后台运行,要退出需要手动kill 项目相关进程号,所以当前退出需要重新启动树莓派。

安装教程

一、基于树莓派4B的安装教程

1、安装系统镜像,镜像下载:

链接: https://pan.baidu.com/s/1ZV7GTGgsclECiej3v4ifWg 提取码: ubjs

这个系统已经安装好了针对树莓派 4B 的,opencv、百度 AI 等各种库。

2、fork本项目,点击桌面的终端,打开终端,在/home/pi中输入:

git clone https://gitee.com/shiranfei/Adapted-game-ai_snake.git

即可获取项目

进入 /home/pi/Adapted-game-ai_snake 目录下,输入:

sh run_snake.sh

即可开始本项目的体验。

二、基于PC机的安装教程

1、我的PC机为ubuntu20.04(64位),安装Anaconda3-2020.02-Linux-x86_64.sh

在anaconda3中,安装opencv、pgzero、thonny、baidu-aip

ubuntu系统中安装mplayer工具

2、fork本项目,点击桌面的终端,打开终端,在自己的目录下中输入:

git clone https://gitee.com/shiranfei/Adapted-game-ai_snake.git

即可获取项目

进入 Adapted-game-ai_snake 目录下,输入:

sh run_snake.sh

即可开始本项目的体验。

使用说明

一、新建百度AI的人体分析应用,获取人体分析:AppID、API Key、Secret Key三个关键参数,更改camera_get_direct.py中的对应参数,例如我的参数为:

“” 与蛇共舞的人体关键点分析,需要更改为自己的api接口 “”” pic_APP_ID = ‘21414508’ pic_API_KEY = ‘l5XEnXQePmookhlAM9ORkD8O’ pic_SECRET_KEY = ‘hwEuXHLja7U03Zfj1FkI08sNkLiy56QY’

将程序中对应的参数,更换为您的即可。可以提高分析速度,如果好多人同时使用我的API体验时,百度API的分析速度会下降好多。

二、运行程序,在树莓派和基于ubuntu的PC上,输入:

sh run_snake.sh

即可开始体验本项目。

三、控制小蛇变方向

1、小蛇向上走,双手合并,举过头顶,即可控制小蛇向上走。

2、小蛇向左走,双手合并,在左肩的左边,即可控制小蛇向左转。

3、小蛇向右走,双手合并,在右肩的右边,即可控制小蛇向右转。

4、小蛇向下走,双手合并,在在肩部的下边,即可控制小蛇向下走。