基于3DOF机械臂的五子棋机器人

文章目录

  • 基于3DOF机械臂的五子棋机器人
    • 1. 前言
    • 2. 机器视觉系统概述
      • 2.1 机器
      • 2.2 视觉
      • 2.3 系统
    • 3. 系统组成概述
      • 3.1 使用工具盘点
      • 3.2 流程图
    • 4. 制作步骤建议
    • 5. 需要的知识及参考资料推荐
      • 5.1 机械设计部分
      • 5.2 下位机控制与控制原理部分
      • 5.3 视觉部分
      • 5.4 上位机部分
    • 6. 参考资料

1. 前言

  2020年因为疫情,全国大学都不开学,差不多在家里呆了大半年吧,因为不想无所事事,所以杂七杂八的学了很多东西。到6月份的时候,因为我是毕业生,需要回学校办理一些毕业事项和离校手续,就在学校进行封闭式隔离。说真的,在学校的日子实在是挺无聊的,啥事也不能干,因为恰好学了学c++和opencv,所以就想做点东西,最后就搞了个软件层面的,能人机交互的五子棋系统。大搞也就写了一个多星期吧。

软件五子棋

  因为碰巧看了一些做五子棋机器人的视频,后来就一直心理念念不忘,想搞个硬件和机械层面的五子棋机器人。于是从七月开始就一直在着手策划了,零零散散,断断续续的做着,正好11月1号完工了,前前后后可能花费了大约4个月的时间吧,最后决定写个五子棋机器人系列的文章,做个总结,也希望告诉其他人应该怎么做这个事情,打算不但把自己成功的一些方法写进来,也把失败和遇到的一些问题写进来。有时候出现的问题可能更加具有参考价值。
  这篇文章就写个系统概述,说一说这个系统都包括了什么,需要什么基础知识,以及怎么做。后面大概会写机械结构怎么设计,设计的时候应该注意什么问题;下位机怎么开发,如何通过运动学逆解求解舵机的角度,怎么通过轨迹规划,使得运动更加平滑;上位机如何开发,怎么识别棋盘和棋子;五子棋的软件层面是什么逻辑;如何通过串口通讯把系统组合起来;以及一些涉及到手工制作的东西怎么做。
  不过吧,这里也要说一句,我确实不是学相关专业的人士,我学和做这些个东西,算是个业余爱好吧,要是有哪里说得不专业了,请各位网友包涵哈!
  顺便让五子棋机器人系统亮个相。

五子棋机器人整体图

2. 机器视觉系统概述

  机器视觉系统[1],从字面意思看,主要包括机器、视觉和系统三个部分。

2.1 机器

  机器就是指机械的结构设计和运动控制,机械结构就比如这里的机械臂,运动控制可以使用单片机、PLC等进行控制。

机械臂

2.2 视觉

  视觉部分是机器的眼睛,为了能够看机器正常工作,就必须能够让他看到环境的状态,包括光源和摄像头。只有营造好良好的视觉系统,才能够有良好的图片输入,如果图片质量比较高的话,软件层面的图像处理就会比较顺利。光源主要目的是为了照明,提供足够的亮度,同时光源的布置必须注意光照均匀、尽量减少系统的反光,不然图片处理层面比较难解决。光源包括点光源、线光源、平行光源等。不过我的系统里面没有专门的光源。

  摄像头包括usb摄像头、工业摄像头等,主要用来把光信号转换为计算机能够处理的电信号。usb摄像头价格比较低,但是会产生一些图像畸变的问题。同时,如果在摄像头前面增加合适的镜片,可以对光进行一些预处理。比如有些usb镜头视野比较小,可以增加广角镜头;光源处理不当平面有反光,可以选择增加偏振光滤光镜头;比如光强太大,可以用中性灰度镜减少光线的整体输入。

usb摄像头

偏振光滤光片

2.3 系统

  系统主要是指软件层面的东西。如果说视觉是机器的眼睛的话,系统就是机器的大脑。从视觉系统中获取到的图片,传送给电脑,在电脑端进行图像的处理,将处理得到的结果传递给下位机,即可控制执行部件完成指定的功能。

3. 系统组成概述

3.1 使用工具盘点

  在视觉部分,我并没有专门配备光源。摄像头选择了最普通的usb摄像头,还是有一点点模糊的。摄像头通过USB接口连接到电脑,构成了系统的输入部分。如果不希望电脑连接很多线的话,也可了利用wifi技术,购买带有wifi图传功能的摄像头模块,在电脑端写一个套接字接收图片即可。

自己造的摄像头

  有了输入部分之后,就需要有处理部分了。处理部分就是PC机。我的上位机开发环境是VS2019+opencv 3.4.9,编程语言使用的是c++。计算机通过usb接口,读取摄像头采集到的图片,通过opencv对图片进行预处理,对摄像头读取的图片进行识别,读取得到了网格线的像素坐标,以及棋子的坐标。将棋局信息送入五子棋裁决部分,即可解析得到落子点,将落子点返回给下位机即可完成自己的任务。
  最后是执行部分。执行部分的机械结构是吸盘机械臂,通过大气压吸取棋子,完成棋子的拿取和放下的动作。控制部分使用的是arduino nano和配套的舵机控制板。arduino通过串口数据线,获取上位机来的指令,通过运动学的逆解,将坐标信息解析为舵机的关节角,即可驱动机械臂拾取棋子。如果不希望通过数据线连接电脑进行数据交换,可以使用wifi或者蓝牙模块进行数据的交互。

机械设计

arduino nano

  其余还用到了一些东西就比如自己制作的棋盘,购买的棋子以及整个系统的固定底座了。

棋盘和棋子

CAD画的底板

3.2 流程图

4. 制作步骤建议

  关于制作步骤,我个人的想法是

(1)多看看别人是怎么做的,了解整个系统架构。我是在b站看了看别人怎么设计的,采用差不多的路子做的。
(2) 购买一个比较简单的机械臂了解一下结构和原理,并进行结构设计,或者购买现成的,省去这一步。如果想作为参考物的话,淘宝这种木质的就很好,因为非常便宜。

(3) 熟悉arduino的使用和舵机的控制方法
(4) 完成运动学正逆解和轨迹规划,完成拾取一些小物件的功能。

拾取棋子

(5) 制作或者购买棋子和棋盘,完成网格识别和棋子识别,使得电脑端能够根据图片输出棋盘的数据。
(6) 完成五子棋算法。实现在棋盘上下棋,电脑能够自动给出对应手,并绘制在棋盘上
(7) 完成串口通讯部分,使得上位机和下位机之间能够交互
(8) 固定各个部件位置,比如制作底板。
(9) 进行最后的综合测试。

5. 需要的知识及参考资料推荐

  下面这些参考资料是我看完了的,感觉不错的,可以根据需要选取。

5.1 机械设计部分

  (1) Solidworks 推荐视频“solidworks 从入门到精通” ,用来绘制整个机械臂结构的,建议全看完
https://www.bilibili.com/video/BV1nW411Y7W7

  (2)CAD二维设计 推荐视频“CAD 2018快速入门教程”,用来绘制底板的,因为亚克力切割淘宝需要cad的文件。https://www.bilibili.com/video/BV13t411i7c8

  (3) CAD三维设计 推荐视频"CAD三维建模完全自学教程",如果有三维亚克力设计需求的,继续看三维设计视频。这个三维视频比较一般般吧,有更好的可以找更好的https://www.bilibili.com/video/BV12E41167UD

  (4) grabCAD网站有很多机械臂开源图纸,也可以参考,强烈推荐这个网站https://grabcad.com/

5.2 下位机控制与控制原理部分

  (1) Arduino 推荐一本书 “Arduino编程指南个智能硬件程序设计技巧Simon Monk 人民邮电出版社” ,这本书里面讲了一些比较深入的设计方法,比较有趣。如果没有时间全看一本书,稍微了解arduino使用方法、舵机控制原理、库封装方法也够了。

  (2) 运动学逆解推荐一本书 《机器人学导论》作者:[美]约翰·克雷格,推荐网课 台大机器人学–林沛群https://www.bilibili.com/video/BV1v4411H7ez。不过如果你只是使用三自由度机械臂,并且没有深入学习的欲望,这本书可以跳过不看,不使用线性代数的方法,可以使用几何方法进行解析。
如果想更加深入的了解机械臂怎么精确控制,这是本非常经典的书

  (3) 如果要看机器人学导论的话,需要先修线性代数,推荐书籍 《线性代数及其应用》 作者:戴维.c.雷 ,推荐搭配网课 MIT 线性代数 一起阅读https://www.bilibili.com/video/BV1zx411g7gq

5.3 视觉部分

  (1) opencv ,推荐书籍《opencv3编程入门》作者:毛星云。 推荐两个up的视频搭配一起看,致敬大神https://www.bilibili.com/video/BV1jJ411M7Bo,会飞的吴克https://space.bilibili.com/14672002?spm_id_from=333.788.b_765f7570696e666f.2
书建议全部看完,因为你会有更多解决图像中出现问题的思路

5.4 上位机部分

  (1) c++。如果只是想入门的话,看一下"翁恺C++语言程序编程全系列"足够了https://www.bilibili.com/video/BV1j7411L7kL,需要有c语言基础。
  除此之外,我还看完了《essential c++》和《c++ primer》。读c++ primer可以配网课一起看 :

  • C++ Primer 初级(C++基础) https://www.bilibili.com/video/BV1P7411k7Km、
  • C++ Primer 中级(oop)https://www.bilibili.com/video/BV1A7411k7MD、
  • C++ Primer高级(stl及算法) https://www.bilibili.com/video/BV1A7411k7mv

6. 参考资料

[1]机器视觉系统有哪些部分组成

【机器视觉系统】基于3DOF机械臂的五子棋机器人(1)相关推荐

  1. 基于机器视觉的多机械臂煤矸石分拣机器人系统研究

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 基于机器视觉的多机械臂煤矸石分拣机器人系统研究 王鹏1,2,曹现刚 ...

  2. UR机器人装箱姿态_UR10 RG2机械臂手臂+RealsenseZR300 机器人手眼标定 系列第四篇

    UR10 RG2机械臂手臂+RealsenseZR300 机器人手眼标定 系列第四篇 发布时间:2018-09-18 17:43, 浏览次数:1180 , 标签: UR RG RealsenseZR ...

  3. delta机械臂,delta机器人,运动控制器,运动控制卡 本卡采用前瞻运动轨迹规划,运动采用G代码指令编程,具有G5三维空间的圆弧插补,空间直线插补功能

    delta机械臂,delta机器人,运动控制器,运动控制卡 本卡采用前瞻运动轨迹规划,运动采用G代码指令编程,具有G5三维空间的圆弧插补,空间直线插补功能,子程序编程功能,逻辑判断语句功能,示教编程功 ...

  4. delta机械臂,delta机器人,运动控制器,运动控制卡

    delta机械臂,delta机器人,运动控制器,运动控制卡 本卡采用前瞻运动轨迹规划,运动采用G代码指令编程,具有G5三维空间的圆弧插补,空间直线插补功能,子程序编程功能,逻辑判断语句功能,示教编程功 ...

  5. 机器人抓矸石_基于机器视觉的多机械臂煤矸石分拣机器人系统研究

    工矿自动化 Industryand MineAutomation Vol. 45 No. 9 Sep.2019 第 45 卷第 9 期 2019 年 9 月 文章编号 : 1671 - 251X(20 ...

  6. 动作捕捉系统用于柔性机械臂的末端定位控制

    柔性机械臂是一种新型仿生机械臂,其设计受到自然界中生物结构启发,比如象鼻.章鱼爪.蚯蚓和蛇等.与传统机械臂相比,柔性机械臂可以在材料变形范围内进行任意形状的弯曲运动,通过调整自身形态在狭小复杂的空间内 ...

  7. 【Nokov】动作捕捉系统标定与机械臂各坐标系的说明

    导语:这一周的工作先是完成了度量系统Nokov的标定,然后对机械臂自身的编码器得到的坐标值与动作捕捉系统Nokov测得的坐标值进行了比较,来观察二者之间的误差.在这个过程中我对Nokov软件Seeke ...

  8. ur机械臂 控制器_UR机器人远程控制研究

    UR 机器人远程控制研究* 刘宇航 1,2, 顾营迎 1, 乔冠宇 1,2, 刘宏伟 1, 吴清文 1 [摘 要] 摘 要 : 针对 UR 机器人的远程控制问题,设计了一种 UR 机器人的远 程控制方 ...

  9. ABB机械臂乱弹1-ABB机器人选项功能

    ABBSystemOptions:选项功能 Industrial Networks 现场总线 709-1 DeviceNet Master/Slave 必备888-2 PROFINET Control ...

最新文章

  1. MS UC 2013-0-虚拟机-标准化-部署-2-模板机-制作-2-设置-虚拟机
  2. liunx下的DNS配置
  3. mysql怎么加全局锁_MySQL锁机制/管理(并发锁,行锁,表锁,预加锁,全局锁等等)
  4. 图论算法-图论的表示、分类及基本概念(系列1)
  5. Oracle10g数据库归档与非归档模式下的备份与恢复
  6. matlab如何excel数据,Matlab如何读取Excel里的数据
  7. SAP Spartacus build error之后的retrigger方式
  8. CentOS查询端口占用和清除端口占用的程序
  9. 2019/02/11-分布式数据库概述
  10. 在 Ubuntu 14.04 中配置 PXE 服务器
  11. 应用计算机技术建立起来的地图,地理信息系统的思考题及其答案
  12. vueRouter使用心得
  13. 使用grunt合并压缩js、css文件
  14. python爬虫如何连接数据库_Python爬虫框架和数据库连接
  15. RecyclerView更全解析之 为它优雅的添加头部和底部
  16. 浩海技术激活工具可激活Windows10系统和office
  17. 【C语言】输出“*”菱形图案
  18. vue 接入天地图并且在地图上画基站扇形覆盖物
  19. 罗素说理想与历程—幸福心灵的获取
  20. usaco3.2.7香甜的奶油

热门文章

  1. C/C++黑魔法-编译期运行的sizeof
  2. 对话驻云创始人 | 七问技术创业者(合辑)
  3. html div 虚线边框样式,纯CSS实现渐变虚线框和边框滚动动画
  4. 0x00007FF8DC013526(ntdll.dll) 处(位于XXX.exe中) 引发的异常 osg 0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF时发生访问
  5. 插入排序基本思路与算法
  6. 【CV】Mask R-CNN:用于目标实例分割的通用框架
  7. 什么是标称属性?什么是二元属性?什么是序数属性?
  8. c语言无符号整型除法,用位运算的方法实现无符号整数的除法,游戏编程 | 李大仁博客...
  9. mysql安装后目录介绍,MySQL安装后的目录结构及配置文件详解
  10. adb命令行打开Android settings