基于视觉识别的象棋对弈机器人平台研发
2022-06-23杨一帆张亦凡朱林峰梅术龙
杨一帆,张亦凡,朱林峰,梅术龙
(武汉商学院 机电工程学院,湖北 武汉 430056)
0 引言
当今世界,对于人工智能的研究正在火热地进行,特别是在人机对弈方面,谷歌公司研发的 AlphaGo 人工智能系统打败了世界围棋冠军,震惊全球。而在国内,人机对弈也有不小的发展。中国象棋作为一种从两军对垒中抽象出来的智力游戏,一向以其变化多端著称,具有较高的博弈复杂度。近些年来,随着机器人技术的发展尤其是视觉识别系统,机器人的功能越来越丰富,具有娱乐功能的智能机器人已经成为一个重要的研究方向,象棋对弈智能机器人正是在这样的背景下应运而生。
1 对弈平台总体设计方案
文章设计了一款基于视觉识别的象棋对弈机器人平台,分别由负责识别棋子与棋盘信息的视觉系统结构、负责搬运棋子的机械臂执行机构、棋盘平台3 部分组成(见图1),通过前两部分结构协调运作,能够完成在棋盘上的精准落子,因此构建可靠的视觉系统结构和灵活的机械臂执行机构具有十分关键的意义。棋子摆放完成后,通过顶上的视觉传感器识别,确认每颗棋子的坐标。在视觉传感器识别完成后,识别的信息发送到电脑上位机中,实现计算机对棋盘的监控。随后通过上位机对机械臂进行控制,机械手的控制系统主要由树莓派主控板和舵控扩展板组成,另外还包括多个辅助硬件模块。
图1 对弈平台总体
2 对弈平台结构设计
2.1 视觉系统的结构设计
通过视觉摄像头将棋局的实时画面传输到电脑端程序,相当于人的眼睛,能够达到保持象棋棋局的正常进行以及对选手操作合理化的判定效果,所以对视觉系统结构的设计也显得尤为重要。
如图2 所示,视觉系统安装于棋盘平台一侧,主要由基座、支架1、支架2、视觉摄像头四部分组成,视觉摄像头采用Open MV 摄像头,具有结构小巧、功耗低的特点,且支持大量的视觉算法。摄像头安装于支架2上,俯视整个棋盘。利用摄像头将整个棋局的画面通过USB 线实时传输到PC 裁判端程序进行图像处理与结果的精准判别,再通过PC 端对棋盘上落子点的坐标校准,从而控制机械臂达到精确抓放棋子的要求。
图2 视觉系统
2.2 对弈平台抓取系统的结构设计
2.2.1 机械臂参数选择与仿真
在象棋对弈机器人的设计中,为了满足中国象棋对弈的要求,同时使结构尽可能简单,操作方便。选用关节型机械臂,结构主要分为基座、大臂、小臂、末端执行器四部分,底座为腰关节可旋转,连接底座与大臂的关节为肩关节,连接大臂与小臂的部分为肘关节,连接小臂与末端执行器的部分为腕关节,大臂与小臂通过基座在垂直平面内自由运动。机械臂设计的一个关键点是其自由度的选择,通过模仿人类手臂在象棋对弈过程中的特点与动作需求,所以本设计采用四自由度的机械臂,即腰、肩、肘、腕四关节各一个自由度。机械臂通过腰关节控制左右旋转,肩关节与肘关节共同完成上下摆动,在腕关节末端接末端执行器,通过执行器完成棋子的抓取与落下[1]。
机械臂的结构设计还需要考虑多种因素,包括运动方案、受力等多个方面。最主要还是以下方面:(1)执行器必须拥有足够的导向性能,这是为了防止手臂出现坐标问题,因为在运动过程中会产生频繁的相对运动,为此,可以选择正方形的机械臂来提高导向性。(2)机械手的刚度要足够大,这是为了避免机械手因为受力过大导致规模变形。(3)要选择合理的手臂截面形状。
最后通过Matlab 软件中的Robotics Toolbox(机器人仿真工具箱)可以很好地对机械臂进行运动学仿真[2],用于针对机械臂模型设计的可靠性进行验证。据实验数据表示,随机从棋盘上的一点运动到另一点的过程中,各关节运动均未出现错误,机械臂在D-H 坐标系下的运动范围也满足棋盘大小的要求。在抓取或放置棋子时,会先移动到相应棋盘格点的上方,然后在z 轴方向下降,以达到目标位置。
2.2.2 末端执行器选择
控制棋子的方式可以分为抓取和吸附。抓取方式主要是通过模仿人手来进行棋子的抓取。吸附方式是通过电磁和气压对棋子进行吸附抓取。象棋棋子为饼状,若选择抓取式,可能会导致棋子在抓取过程中多次脱落,考虑到棋子本身质量较轻,且外表面光滑以及对于机器的维护,选择气动吸附式执行器。同时也为了尽量使得机构的结构简单、控制方便,而真空式吸盘除了满足上述多个需求外[3],还具有吸力大、干净卫生的特点,所以综合考虑决定末端执行器采用真空式空气吸盘。
2.2.3 机械臂控制方式
控制器是机械臂最核心的部分[4],控制器的优劣直接关系到机械臂的性能。为了更好地控制机械臂,可以选择多CPU 分布式控制方式,通过在主机和单轴的CPU 之间设计并行的串口完成程序指令和传感器完成预定动作和任务,同时通过负责的两个位机的通信来保证数据的可靠及稳定,如图3 所示。
图3 机械臂校准流程
3 机器人最优棋步算法
机器人想要很好地执行命令是需要优良的走法为基础,通过计算出来的走法来命令机器人运动。中国象棋是两方相互博弈的过程,参与的双方对于整个棋盘的任何一个棋子的身份都要清楚,还有哪一个位置有棋子也是必须要知道的。想要实现机器人对弈,以下的基础是不可缺少的,第一个是棋局的表示方法,能够让机器人知道对方所走的棋步;第二个是产生最合理的走法规则,使博弈过程能够更加健康地进行;第三个是从很多种看似合理的棋步走法当中选出最优的走法;第四个是对当前棋盘局势做一个好坏的评估。想要计算出最优的棋步,就需要对场上的局势进行评估,棋子之间的关系也是需要进行估值的。棋子间价值关系的评估可以很好地提高估值的有效性,常常是博弈估值必不可少的重要内容。
极大极小值算法是一种找出失败的最大可能性中的最小值的算法(即最小化对手的最大得益)。双方对弈时,通常使用摸索的方法,即假设一方在走某一步棋之后对方会有何种走法与之应对,然后在对方可能的走棋之后,己方又可以进行何种走法。极大极小值搜索就与这一过程类似,与局面估值相结合,局面估值越高则红方的优势越大,局面估值越低则黑方的优势越大。当红方走棋时,会选择估值最大的局面对应的走法,相反,当黑方走棋时,会选择估值最小的局面对应的走法。图4 展示了一个极大极小搜索过程,粗箭头表示最佳路径片段。
图4 极大极小值算法步骤
极大极小值算法是一种简单搜索。在当前深度下,搜索博弈树所有分支,搜索过程覆盖博弈树所有路径,也就意味着这种搜索无任何风险,得到的走法也是该博弈树下的最佳走法,但是由于搜索过程也包含一些意义较小的节点,使得搜索时间耗费巨大,降低了搜索效率,因此以如今的计算机计算能力很难达到很深的搜索层数。
4 前景展望
随着人口老龄化的加剧,娱乐机器人越来越受到企业界和研究者的关注。图像识别技术和人工智能技术作为娱乐机器人的一种,与国际机器人进行融合。不仅能放松取悦用户,还能提高使用者的智力,象棋机器人由ARM 主控模块、棋盘识别模块和运动控制模块三大模块组成。ARM 主控模块作为系统核心,为整个系统的运行提供了“ARM+嵌入式Linux”架构的软硬件平台。在宿主机上建立嵌入式开发环境,然后将U-Boot 启动引导程序、根文件系统以及Linux 系统内核移植到ARM 硬件系统平台上。ARM 主控模块同时是机器人行棋的决策中心,根据象棋博弈程序所决策出机器人下一步最佳走棋步骤,这些设计中最主要的有4个部分,即步法产生、局面表达、局面评价和博弈树搜索算法,其中博弈树搜索算法是关键,决定着机器人的智力高低。
5 结语
通过对摄像头的颜色阈值处理来精确地识别不同的颜色与形状[5],并通过给定的代码demo 来实现操作。最需要改进的地方是关于棋局下法的问题,如何更快地赢得棋局是最主要的问题。这个问题可以通过优化结构代码,加深逻辑运算来完成。对于机械臂而言,还有许多地方需要改善。机械手和传感器的改进[6],作为控制的对象,其自身的结构、实际运行效果将直接影响性能。文章所用的机械手,尤其是机械手的手爪部分要进一步改进,加入压力等传感器,为控制提供较为完整的信息。第二部分是自动控制算法的完善研究,机械手的自动协同工作需要完善控制算法,特别是求解输入参数和求解机器人的反向运动方程,还需要更多的优化算法,使得所得到的控制参数更准确、更完整。在此基础上,今后还应继续改进、完善,以提高该机械手系统的稳定性和可靠性。