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

2023-11-13

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

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可以配网课一起看 :

6. 参考资料

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 机器视觉 与 人眼错觉

  • ROS中阶笔记(五):机器人感知—机器视觉

    ROS中阶笔记 xff08 五 xff09 xff1a 机器人感知 机器视觉 文章目录 1 ROS中的图像数据1 1 二维图像1 1 1 安装安装usb cam1 1 2 显示图像数据 1 2 三维图像 kinect 2 摄像头标定2 1
  • 机器人学重点知识点总结

    机器人学重点知识点总结 坐标转换与机械臂运动学 雅克比矩阵 机械臂逆向动力学 牛顿欧拉递推 机械臂正向动力学 运动轨迹生成 动力学轨迹跟踪控制 这篇博客主要用来记录一下现代机器人学里面比较基础也比较重要的一些知识点 所有内容均仅仅记录是什么
  • 深度学习相关资料总结

    近这两年里deep learning技术在图像识别和跟踪等方面有很大的突破 是一大研究热点 里面涉及的数学理论和应用技术很值得深入研究 这里总结一些在微博发布和转载的相关资料 以便查阅 一 winsty NIPS2013 Learning
  • CV 经典主干网络 (Backbone) 系列: CSPNet

    CSPNet 引言 1 模型介绍 2 CSPNet的优点 2 1 减少了模型的参数量和FLOPS数值 2 2 解决了梯度信息的重复问题 2 3 减少内存流量 3 融合策略 总结 引言 对于传统深度学习 总是想达到一个增加速度同时精度提高的效
  • 车牌识别中的不分割字符的端到端(End-to-End)识别

    传统的车牌识别过程是往往是这样的 车牌定位 gt 车牌判断 gt 车牌字符的分割 gt 车牌字符的识别 这种方法有个好处就是 仅仅需要较少的字符样本即可用于分类器的训练 在光照 相机条件好的情况下也能取得较好的效果 现在大多数商业车牌识别软
  • (9.2)A*搜索算法

    A 算法是在Dijstra算法上进行改进 知道起点和终点位置Dijstra算法是四面八方全部寻找 而A 算法则可以往一个最优方向寻找 即启发式的搜索 在提高算法效率的同时 保证找到一条最优路径 一 原理 A 算法的核心在于估价函数的设计上
  • gazebo仿真 机械臂抓取和放置 使用ros_control插件

    仿真截图 rqtgraph ROS Control教程官方 http gazebosim org tutorials tut ros control 下图概述了仿真 硬件 控制器和传输之间的关系 图片分 gazebo仿真 和真实硬件两部分
  • NACHI机械臂后台SOCKET通讯

    NACHI机械臂后台SOCKET通讯 将机械臂做为服务器 电脑作为客户端 通讯程序在机械臂后台运行 我是先在电脑上写好 导入机械臂文件夹中 转化成机器人语言 再在用户任务这里开启它的任务号码 端口号设置为10030 代码 TCP IP So
  • 【机器视觉】——裂纹检测笔记

    目录 传统算法处理裂缝的基本思路 第一种思路 第二种思路 第三种思路 CPP代码 halcon代码 python代码 Matlab代码 深度学习缺陷检测 裂缝检测文献 传统算法处理裂缝的基本思路 第一种思路 1 先转换彩色图为灰度图 2 进
  • AD如何圆形布局led

    1 左击选中led 2 右击复制 点击圆心 3 选择edit paste special 4 输入个数 和角度 360 个数 5 点OK 选择圆心双击
  • 反馈线性化:具有柔性关节的单连杆操纵臂

    文章目录 写在前面 机械臂模型 输入 状态反馈线性化 坐标变换和微分同胚 输入 状态可反馈线性化的条件 机械臂实例1 输入 输出反馈线性化 相对阶和李导数 输入 输出可反馈线性化的条件 跟踪控制器设计 机械臂实例2 写在前面 通过反馈和坐标
  • Halcon三维模型预处理(1):调平的三大手法

    面结构光拍摄生成的点云模型 往往相对系统坐标系是有角度的 首先讲一下调平的目的 1 为接下来的预处理切除背景面做准备 3 不做调平 后续处理会很麻烦 因为不清楚坐标系在平台的为位置 2 对于无序抓取项目 平台相对相机可能是有角度的 将抓取平
  • opencv学习--图像处理基础

    将图片处理为灰度图 import os import re import cv2 from PIL import Image import numpy as np import matplotlib pylab as pylab img c
  • 大数据毕业设计 机器视觉图像拼接算法研究与实现 - python opencv

    文章目录 0 前言 一 拼接效果 二 算法介绍 1 拼接算法简介 1 1 基于区域相关拼接算法 1 2 基于特征相关拼接算法 1 3 拼接算法的基本流程 2 拼接算法原理 2 1 第一种 特征匹配 2 2 第二种 计算图像之间的变换结构 2
  • 理解ROS节点和在中.launch文件启动节点

    理解ROS节点 1 图概念概述 Nodes 节点 一个节点即为一个可执行文件 它可以通过ROS与其它节点进行通信 Messages 消息 消息是一种ROS数据类型 用于订阅或发布到一个话题 Topics 话题 节点可以发布消息到话题 也可以
  • 【机器视觉系统】基于3DOF机械臂的五子棋机器人(1)

    基于3DOF机械臂的五子棋机器人 文章目录 基于3DOF机械臂的五子棋机器人 1 前言 2 机器视觉系统概述 2 1 机器 2 2 视觉 2 3 系统 3 系统组成概述 3 1 使用工具盘点 3 2 流程图 4 制作步骤建议 5 需要的知识
  • 摄像机标定到底是在干什么?

    2017年11月13日学习记录 机器视觉 1 摄像机标定概括 刚开始学机器视觉 我研究的方向主要是双目视觉测距 做机器视觉的肯定对摄像机标定并不陌生 我入坑一个月 开始就是看看书 论文 了解了大概流程和研究主要方法 无特别明确目的和压力 然
  • arduino uno r3 机械臂

    1 硬件 arduino uno r3 改进板 sg90舵机 180度 x 4 JoyStick Shield PS2游戏摇杆扩展板 或者按键 遥杆模块 3D打印件 M3螺丝螺母 10mm 15mm 25mm 以及M2螺丝螺母 2 接线 开
  • opencv的安装、配置及所遇问题(Ubuntu16.04 + OpenCV3.4.2 + Python3.6)

    安装opencv对好多首次安装的开发者来说都是一场勇气和运气的较量 同样也是我在安装Ubuntu下安装过的众多软件包中最为波折的一款 在此记录安装过程中出现的各种error 幸运女神眷顾的安装顺序 1 安装ubuntu下的依赖项 sudo

随机推荐

  • SpringBoot自定义banner

    在resources下添加文件banner 自定义编写然后重新启动 也可以去网站上找Text to ASCII Art Generator TAAG 然后复制到banner txt
  • 人工智能与具体应用领域如何进行有效的结合

    人工智能与具体应用领域如何进行有效的结合 人工智能 Artificial Intelligence 简称AI 它是研究 开发用于模拟 延伸和扩展人的智能的理论 方法 技术及应用系统的一门新的技术科学 它是计算机科学的一个分支 它企图了解智能
  • 阿里云ECS服务器购买及域名绑定 新手教程

    教程内容 购买阿里云域名 DNS域名解析 购买阿里云域名 1 校验域名是否已被注册 阿里云域名注册地址 https wanwang aliyun com 2 购买域名 选择钟意的域名 添加到购物车 填写信息 如何没用进行域名实名认证 就需要
  • linux 的grep命令

    一 语法 grep全称是Global Regular Expression Print 表示全局正则表达式打印 grep命令是一种强大的文本搜索工具 用于查找文件中符合条件的字符串 它能使用正则表达式搜索文本 并把匹配的行打印出来 root
  • stringbuffer方法简单使用

    buf delete 0 buf length 清空StringBuffer buf delete 30 40 清除下标30 40之间的元素 buf insert 20 str 从下标为20的位置开始写添加进去 列如 buf hello12
  • Fine Report 连接 MySQL的问题

    工作需要今天来搞Fine Report 10 0 连接MySql 数据库 MySQL 驱动器 com mysql jdbc Driver URL jdbc mysql localhost 3306 数据库名称 useSSL false se
  • Java 内部类(1): 基本语法

    可以将一个类的定义放在另一个类的内部 这就是内部类 内部类的表面意义一目了然 不过内部类的实现语法还是稍显繁琐 内部类的分类 内部类主要分为 普通内部类 匿名内部类 局部内部类 嵌套内部类 静态内部类 普通内部类 普通内部类内不能有静态成员
  • windows下Meson构建系统

    系列文章目录 文章目录 系列文章目录 前言 find package Zug REQUIRED find package Zug REQUIRED 前言 在编译krita源码时需要构建 关于Meson的中文参考资料比较少 比较全面的是Mes
  • 若依系统分离版去除redis数据库

    文章目录 1 去除redis 配置 2 去除ruoyi framework下RedisConfig的配置 3 在ruoyi common的core redis下新建MyCache类 4 修改RedisCache类 5 修改ruoyi com
  • 谈谈装饰器(Decorator)的实现原理

    熟悉Java编程的程序猿对装饰器模式一定不陌生 它是能够动态的给一个类添加新的行为的一种设计模式 相对于通过继承的方式使用装饰器会更加灵活 在Python里面装饰器 Decorator 也是一个非常重要的概念 跟装饰器模式类似 它能够动态为
  • Android平台RTSP

    1 背景 我们在做Android平台RTSP或者RTMP播放器开发的时候 需要注意的点非常多 以下 以大牛直播SDK 官方 的接口为例 大概介绍下相关接口设计 2 接口设计 2 1 Open 接口 Open接口的目的 主要是创建实例 正常返
  • mmdetection使用tensorboard可视化训练集与验证集指标参数

    如何使用mmdetection训练自己的数据可以参考这篇文章https blog csdn net weicao1990 article details 93484603 在这篇文章中只是用训练集进行训练 没有用到验证集验证模型的指标 因此
  • 音视频基础之ffmpeg命令实战二

    ffmpeg音视频处理流程 先看两条命令 ffmpeg i test 1920x1080 mp4 acodec copy vcodec libx264 s 1280x720 test 1280x720 flv ffmpeg i test 1
  • Python在ENG信号中的应用(1)

    实验任务点与要求 设计合适的函数读取文件中的数据 该函数以孕妇ID号为唯一参数 返回包含每一个通道每种滤波方式的二维列表sig 从而使用户能够通过sig 3 1 获得第一通道经0 3 4Hz滤波后的时序信号 设计合适的函数 计算每一通道各个
  • openai

    作者介绍 大二本科网络工程专业在读 持续学习Java 努力输出优质文章 作者主页 逐梦苍穹 所属专栏 人工智能 目录 1 简介 2 如何实现 3 api文档 1 简介 OpenAI 提供了一个名为 OpenAI API 的库 用于与他们的人
  • function_score组合script_score定制评分结果

    背景 ES版本 6 4 脚本 分两步 过滤掉不关心的数据 加速后续计算分值性能 编写分值脚本 得到最终分值 GET user doc search query function score 过滤掉不关心的数据 加速计算分值性能 query
  • 【表白神器】Python超火隐藏表白图 你能看出来吗?【附源码】

    导语 浪漫至死不渝 温柔绝对屈服 马上国庆了 没啥送的 那就送大家一些表白的代码吧 大兄弟小姐妹们 大家好 我是准时上线更新代码 讲故事的程序媛小姐姐 整理了一款超火的 隐藏表白代码 希望你们喜欢 正文 隐藏表白图 我喜欢你 就像你看不见但
  • 利用sharding-jdbc进行加密解密

    使用前必看 加密后字段不可以进行like查询 加密字段以及涉及的表 代码中需改成小写 数据库表定义也需改成小写 jar包引入 mybatis spring boot starter升级为2 2 2
  • jre替换local_policy.jar和US_export_policy.jar

    JDK1 8 0 151以前版本方法 JDK1 8 0 151的无限制强度加密策略文件变动
  • 【机器视觉系统】基于3DOF机械臂的五子棋机器人(1)

    基于3DOF机械臂的五子棋机器人 文章目录 基于3DOF机械臂的五子棋机器人 1 前言 2 机器视觉系统概述 2 1 机器 2 2 视觉 2 3 系统 3 系统组成概述 3 1 使用工具盘点 3 2 流程图 4 制作步骤建议 5 需要的知识