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

基于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]机器视觉系统有哪些部分组成

你好!对于一个3DOF机械臂的ROS(Robot Operating System)开发,你可以按照以下步骤进行操作: 1. 安装ROS:首先,你需要在你的计算机上安装ROS。ROS有许多版本可供选择,建议安装最新版本(如Melodic或Noetic),具体选择哪个版本取决于你的操作系统。 2. 创建ROS工作空间:创建一个ROS工作空间,用于存储你的机械臂项目。在终端中使用以下命令创建: ```bash mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make source devel/setup.bash ``` 3. 下载机械臂控制包:在ROS工作空间的src目录下,下载适用于你的机械臂的控制包。你可以在ROS官方仓库或第三方资源中找到适合你机械臂的包。 4. 编译和安装:在终端中使用以下命令编译和安装控制包。 ```bash cd ~/catkin_ws/ catkin_make ``` 5. 运行机械臂控制节点:启动机械臂控制节点以与机械臂进行通信。根据你下载的控制包,可能有不同的启动命令。一般来说,你可以在终端中运行以下命令: ```bash roslaunch <package_name> <launch_file.launch> ``` 其中,`<package_name>`是你下载的控制包的名称,`<launch_file.launch>`是启动文件的名称。 6. 测试机械臂控制:通过ROS提供的工具和命令,你可以测试机械臂的运动和控制。例如,你可以使用rqt或rviz来可视化机械臂的状态和控制。 以上是一个基本的概述,如果你有特定的3DOF机械臂模型或ROS包,可以提供更详细的信息,我可以给出更具体的指导。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值