【2022研电赛】安谋科技企业命题一等奖:基于EAIDK-610的中国象棋机器人对弈系统

news2024/11/18 13:42:18

本文为2022年第十七届中国研究生电子设计竞赛安谋科技企业命题一等奖作品分享,参加极术社区的【有奖活动】分享2022研电赛作品扩大影响力,更有丰富电子礼品等你来领!

基于EAIDK-610的中国象棋机器人对弈系统

参赛单位:西安邮电大学
指导老师:张恒山 赵凤
参赛队员:许家璇 高瑞 李永恒

作品简介

中国象棋是中华传统文化中最具有代表性的文化遗产,其历史源远流长。由于中国象棋具有很强的竞技性、益智性与娱乐性,在国内拥有大量的专业人士及业余爱好者。目前在市面上存在很多可在手机或电脑上运行的象棋软件,但老年人在使用电子产品方面普遍存在障碍,长期面对显示器也会对青少年的视力产生不良影响,因此我们团队将中国象棋与计算机视觉、人工智能、自动控制原理等技术相结合,实现一款可以与人对弈的中国象棋机器人,让更多人认识并学习这一文化瑰宝。

基于EAIDK-610的中国象棋机器人对弈系统由桌面式机械臂、磁性棋盘及棋子、STM32下位机控制系统、 EAIDK-610 开发套件组成。当用户走棋完成后,EAIDK-610通过摄像头采集棋局图像,获取玩家的走棋路线,并运行Elephantfish象棋搜索算法计算一步最优应对策略,下位机通过逆运动解算及梯形加减速算法控制机械臂快速移动棋子,完成一次对弈过程,并给予相应的语音提示。目前机器人已经实现了常规开局、残局对弈及语音提示功能,正在加入机器摆棋、棋局破解、语音对话等功能。该机器人体积小巧、响应速度快,功能丰富,用户体验将远远优于象棋软件及同类型的棋类机器人。

作品全貌

机械设计

机器人使用桌面式SCARA机械臂,参考T站模型链接:Desktop SCARA robot by YANG\_GT - Thingiverse

基于EAIDK-610的中国象棋机器人对弈系统3D模型,使用SolidWorks2016创建,非标件(橙色零部件)使用3D打印制作。

链接:https://pan.baidu.com/s/1wNpXbhwf3dRBQvftsIE5Qg
提取码:234k

下位机电路

AltiumDesigner16工程文件:

链接:https://pan.baidu.com/s/1I3_ZuyW63Es_l4B93szx8A
提取码:juro

下位机的主要功能是机械臂的运动控制,除此之外还有简单的人机交互界面(一个OLED显示屏,两个按键)、语音模块控制、与上位机的通信。

其中主控使用的是STM32F103C8T6,机械臂采用42步进电机驱动,驱动器是A4988,主控与驱动器之间使用光耦隔离。机械臂末端电磁铁使用一个H桥驱动,语音模块使用的是SYN6288,可通过串口接收文字,解码后播放语音。

STM32资源分配如下:

I/O引脚功能使用到的系统资源
PA0主臂电机脉冲输出TIM2
PB0副臂电机脉冲输出TIM3
PB8Z轴电机脉冲输出TIM4
PA9,PA10程序下载调试USART1
PC13程序运行指示滴答时钟
PB3,PB4电磁铁控制普通I/O
PB5蜂鸣器普通I/O
PB13主臂电机方向控制普通I/O
PB12副臂电机方向控制普通I/O
PB14Z轴电机方向控制普通I/O
PB15三轴电机使能控制普通I/O
PA2,PA3上位机通信USART2
PB10,PB11SYN6288语音模块USART3
PB6,PB7OLED屏I2C(软件模拟)
PA13,PA14SWD下载调试接口SWD
PA4,PA5,PA6,PA7预留SPI接口SPI(硬件)
PA11,PA12用户按键普通I/O

下位机程序设计

下位机源码下载地址(Keil5):

链接:https://pan.baidu.com/s/1bUcL7kNskY2Asv6L1yjL6w
提取码:if84

下位机的主要功能是机械臂的运动控制,包括两部分:逆运动解算电机加减速控制

SCARA机械臂为三轴,正运动指的是已知每个轴的角度,这时候机械臂的姿态就唯一确定了,其末端执行器的xyz坐标也确定了。在象棋对弈过程中需要控制机械臂移动到棋盘的某个坐标,逆运动解算就是根据输入的xyz坐标计算出机械臂每个轴的角度。

由于机械臂使用的是步进电机,主控向步进电机驱动器发送一个脉冲,步进电机就转动一个步距角,步进电机实际的运动方式是按照步距角“抖动”旋转,因此如果脉冲频率变化过快,比如在起动或刹车时,会产生丢步或过冲现象,机械臂运动便会出现误差。对电机加入一个加减速过程能够有效避免这种情况,合适的加速过程也能让步进电机运动至更高的速度,加快走棋速度,减少玩家等待时间。在象棋机器人中使用的是简单的梯形加减速,即根据每个轴旋转的角度、设置的加速度、最大速度三个参数来规划电机的加减速过程,可分为能加到最大速度(vt图像为梯形)和不能加到最大速度(vt图像为三角形)两种情况。

上位机开发

上位机代码链接:https://github.com/STM32xxx/Chinese-chess-robot-upper-computer.git

上位机包括四个部分:

  1. 界面:显示摄像头处理结果,输出调试信息
  2. 象棋搜索算法:运行Elephantfish象棋搜索算法
  3. 图像处理:使用OpenCV及级联分类器识别棋子的位置及类别
  4. 串口通讯:负责上位机和下位机的通信

界面

象棋搜索算法

基于开源象棋算法Elephantfish进行改进,参考如下。

elephantfish: 一个只有124行的中国象棋引擎

图像处理

对于棋子位置的识别通过霍夫圆检测就可以完成,再通过文字区域的色块阈值来判断出棋子的颜色(红/黑),这样就可以完成常规开局对弈。因为象棋开局时每个棋子的位置是固定的,因此只需要判断出玩家走棋前后哪个棋子位置发生变化就可以判断出玩家走棋路线,但对残局对弈无能为力。

残局对弈在开局时不光要识别出棋子的位置,还要识别出是什么棋子。因此先采集各类棋子的图片,使用级联分类器训练出棋子分类模型,在残局对弈开始阶段确定每个棋子的位置及类别,之后的对弈都可参考常规开局。

视频展示

https://www.bilibili.com/video/BV1gt4y1u7NA​www.bilibili.com/video/BV1gt4y1u7NA

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/924.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

硬件开发趋势与技术探索

LiveVideoStackCon 2022 音视频技术大会 北京站将于11月25日至26日在北京丽亭华苑酒店召开,本次大会将延续【音视频无限可能】的主题,邀请业内众多企业及专家学者,将他们在过去一年乃至更长时间里对音视频在更多领域和场景下应用的探索、在实…

2023届C/C++软件开发工程师校招面试常问知识点复盘Part 8

目录52、vector<string>是怎么存储的&#xff1f;53、epoll的底层原理53.1 对比select和poll53.2 ET和LT的工作模式54、进程、线程、协程的理解和他们的通信方式54.1 进程的含义54.2 线程的含义54.3 协程的含义54.4 进程间通信IPC54.5 线程间通信方式55、define宏定义的用…

【JavaDS】优先级队列(PriorityQueue),堆,Top-k问题

✨博客主页: 心荣~ ✨系列专栏:【Java实现数据结构】 ✨一句短话: 难在坚持,贵在坚持,成在坚持! 文章目录一. 堆1. 堆的概念2. 堆的存储方式3. 堆的创建4. 元素入堆5. 元素出堆6. 获取堆中元素二. 优先级堆列(PriorityQueue)1. 优先级队列2. PriorityQueue的特性3. 集合框架中P…

万字启程——零基础~前端工程师_养成之路001篇

目录 什么是前端 什么是后端 前端和后端的区别 前端工程师职责 后端工程师职责 前端的核心技术 HTML CSS JavaScript RESTful结构 特点 HTTP请求方式有哪些 目前最火的前端框架Vue vue优点 vue的响应式编程、组件化 搭建编程环境 什么是编程环境 前端的编程环…

华为云CDN,海量资源智能路由,让内容传输更快一步

华为云CDN,海量资源智能路由,让内容传输更快一步 云服务对于我们生活的影响已经愈发深入&#xff0c;在数字化转型的大背景下&#xff0c;城市管理、公共交通、医疗健康等领域都需要云服务的支持。华为云作为国内知名的云服务平台&#xff0c;以技术强、更可靠、资源多以及帮肋…

基于CentOS 7.9操作系统应用httpd配置本地镜像(本地yum源)

记录&#xff1a;301 场景&#xff1a;配置离线本地镜像源(本地yum源)的三种方式&#xff1a;直接使用iso镜像包配置、使用httpd服务应用iso镜像包配置、使用httpd服务应用rpm包配置。在内网环境或者局域网环境&#xff0c;基于CentOS 7.9操作系统应用httpd配置本地镜像(本地y…

手把手带你玩转Spark机器学习-深度学习在Spark上的应用

系列文章目录 手把手带你玩转Spark机器学习-专栏介绍手把手带你玩转Spark机器学习-问题汇总手把手带你玩转Spark机器学习-Spark的安装及使用手把手带你玩转Spark机器学习-使用Spark进行数据处理和数据转换手把手带你玩转Spark机器学习-使用Spark构建分类模型手把手带你玩转Spa…

Python学习笔记(十三)——编译错误和异常处理

异常和异常类 Python常见错误 语法错误 源代码存在拼写语法错 误&#xff0c;这些错误导致Python 编译器无法把Python源代 码转换为字节码&#xff0c;故也称 之为编译错误。>>> print("我爱山大"} SyntaxError: invalid syntax 运行时错误 • 程序中没有…

Python常用库1:collections,容器数据类型

collections&#xff1a;数据容器 点这里跳到原文地址。预计阅读时长&#xff1a;10分钟未完待续&#xff0c;遇到相关力扣题目&#xff0c;会继续补充~ 文章目录前言一、Collections中的内置函数二、各个函数的使用1. deque1.1 deque的介绍1.2 deque支持的方法1.3 使用deque解…

js-键盘事件

onkeydown:按键被按下 onkeyup:按键被松开 事件绑定的对象&#xff1a;键盘事件一般绑定给可以获取焦点的对象或者document对象 焦点&#xff1a;光标在闪的&#xff1a;比如input标签 如果一直按按键不松手&#xff0c;按键会一直被触发 当&#xff1a;onkeydown连续触发时…

THREE.JS实现看房自由(VR看房)

VR看房一、前言二、基础知识三、场景3.1 网络模型3.2 光照3.2.1 环境光3.2.2 平行光3.2.3 点光源3.2.4 聚光灯3.2.5 半球光四、相机4.1 正交相机4.2 透视相机五、渲染器六、贴图纹理6.1 基础介绍6.2 环境贴图6.3 HDR处理七、拓展7.1 坐标系7.2 控制器7.3 自适应7.4 全屏响应7.5…

C#基础·补丁

文章目录一 命名空间二字符串2.1 System.String类2.2 StringBuilder类三 正则表达式3.1 什么是正则表达式&#xff1f;3.2 查找举例3.3 重复描述字符举例3.4 反义字符3.5 基本语法元字符3.6 定位元字符3.7 择一匹配3.8 分组一 命名空间 二字符串 字符串类 System.String(strin…

python数据分析之numpy

数据分析之Numpy 1、Numpy的数组对象及其索引 import numpy as npimport numpy as npanp.array([1,2,3,4]) print(a) bnp.array([2,3,4,5]) print(b)print(ab)产生数组 从列表产生数组&#xff1a; list_array[1,2,3,4] anp.array(list_array) print(a)从列表传入&#xff…

PCB设计很简单?生产问题才是考验工程师能力的标准!

BOM清单有误 SMT产线&#xff1a;物料封装怎么和PCB焊盘不一致呢&#xff1f;停线排查。 仓库&#xff1a;我是按照BOM清单发的物料。 硬件研发&#xff1a;哎&#xff0c;BOM整理时马虎了。 过孔焊盘问题 “ 连锡问题 产线维修&#xff1a;怎么这么多连锡导致不良的产品&…

【安信可NB-IoT模组EC系列应用笔记⑧】用NB-IoT模组EC系列了解LwM2M协议并接入云平台

文章目录前言一、测试准备1、硬件准备2、云平台准备二、云平台连接1.注册入网2.读取IMSI及IMEI3.利用IMSI及IMEI创建设备4.LwM2M连接云平台设备三、 数据互交1.ATMIPLNOTIFY 通知属性变化2.ATMIPLREADRSP 返回读取结果3.ATMIPLWRITERSP 发送写入结果4.ATMIPLEXECUTERSP 发送执行…

1.uniapp全局状态管理

概念&#xff1a;把多个组件之间共享数据抽离出来&#xff0c;通过一个“单例模式”进行管理 工具&#xff1a;具备全局状态管理的库 Vuex:全局状态管理中的库 步骤&#xff1a; 1.建立Store文件夹 2.建立index.js文件 3.在main.js中注册Vue插件 4.测试Vuex是否导入成功 …

面试面麻了,别再为难软件测试人员了···

前言 有不少技术友在测试群里讨论&#xff0c;近期的面试越来越难了&#xff0c;要背的八股文越来越多了,考察得越来越细&#xff0c;越来越底层&#xff0c;明摆着就是想让我们徒手造航母嘛&#xff01;实在是太为难我们这些测试工程师了。 这不&#xff0c;为了帮大家节约时…

基于单片机的双足仿生运动机器人的设计

目录 1 概述 1 1.1 研究背景及意义 1 1.2 机器人的应用领域及发展现状 1 1.2.1 应用领域 1 1.2.2 发展现状 1 1.3 双足机器人设计要求 2 1.3.1 硬件部分 2 1.3.2 软件部分 2 2 系统方案设计 3 2.1 主控芯片选择 3 2.2 机器人自由度选择 3 2.3 驱动方案选择 3 2.4 双足机器人的步…

00后表示真干不过,部门新来的00后测试员已把我卷崩溃,想离职了...

在程序员职场上&#xff0c;什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事&#xff0c;我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事&#xff0c;可遇不可求&#xff0c;向他学习还来不及呢。 真正让人反感的&#xff0c;是技术平平&#x…

web安全之信息收集

&#x1f4aa;&#x1f4aa; web安全之信息收集1.网络入口/信息1.1网络拓扑信息1.2 IP信息1.3线下网络2.域名信息2.1Whios2.2搜索引擎搜索2.3. 第三方查询2.4. ASN信息关联2.5. 域名相关性2.6. 网站信息利用2.7. HTTPS证书2.8. CDN2.9. 子域爆破3.端口信息3.1常见端口3.2端口扫…