使用MyCobot 280 M5机械臂完成人与机器人之间的互动游戏——经典的石头剪刀布
扫描二维码
随时随地手机看文章
今天我收到了一个包裹,里面有几件大象机器人公司的产品。货物包装良好,运输过程中不受机械冲击。该包装包含myCobot 280 M5机械臂,myCobot相机法兰2.0和myCobot自适应夹具。还有一个g形底座2.0,用于将机器人手臂连接到底座上。
该套件的主要部件是机械臂。Тhe盒子中包含机械臂、电源、USB电缆和连接外部模块的电线。也有基本的说明,证书和链接。从第一眼看,它显然是坚固的和高质量的,我将稍后检查它的功能。
MyCobot 280是6自由度协作机器人(Cobot),重量为850克,有效载荷为250克,有效工作半径为280毫米。它体积小,但功能强大。可适应科研、教育、智能家居、商业研究等多种应用场景。顾名思义,这款机型的特点是m5堆叠,有三个按钮以及大量的输入/输出端口和引脚,用于控制额外的外部设备。它支持多种编程语言,如Python, c++, Arduino, c#等,以及Windows, Android, Mac OSX和Linux平台。机械臂整体结构简洁时尚,包含6台高性能伺服电机,响应快,惯性小,旋转平稳。
在我开始描述我的自定义项目之前,我想描述一种简单的“拖动教学”方法。拖拽教学是一种直观的方法,用于编程机器人手臂的运动,特别是在协作机器人和专门的工业机器人中常见。操作员不需要使用复杂的代码,而是直接抓住机器人手臂,引导它沿着想要的路径运动。然后,机器人可以在正常运行速度下高精度地再现记录的路径。通过这种方式,我们可以最容易地捕捉到这个机械臂的性能,比如运动的准确性、速度和平稳性。
以下是对主要项目的描述,该项目将展示所有三个组件的功能:机械臂、相机和抓手。所以我决定开发一个著名的“石头剪刀布”游戏的版本,在这个游戏中,每个玩家同时用伸出的手在三种形状中做出一种——石头、布和剪刀。
在特定的时刻,将显示在显示器上,并通过音频信号,人类和机器人将显示三种形状中的一种,然后,根据游戏规则,宣布获胜者。让我强调一下,机器人完全随机地生成一个形状,并且在它接收到人类显示的形状信息的同时。
让我们从Python部分开始。在这里,我们使用myCobot Camera法兰2.0,它通过USB电缆连接到PC。在Win10和Win11操作系统下,摄像头会自动安装。首先,应该在PC上安装具有适当支持(库)的Python环境。Python版本3.11是从给定的链接安装的,在安装过程中应该选中“Add Python to PATH”选项。
Python程序可以使用多个工具来执行给定的任务。首先,我用OpenCV库创建了一个代码,但是确定手的形状的能力相对较弱。然后我用TensorFlow平台创建了一个运行良好的代码,但是整个安装过程非常复杂。最后,我找到了使用b谷歌的MediaPipe框架的最简单但功能强大的解决方案。
需要在CMD(命令提示符)中依次运行以下两行来安装多个组件:
Python -m PIP install——upgrade PIP
Python -m PIP install "mediapipe==0.10.20
在本文的末尾,给出了名为“MediaPIPE_Code”的Python代码。我们只需要启动这个Python脚本,并在cmd窗口中选择安装M5Stack微控制器的串行端口。在我的例子中,它是COM17(意味着选项1)。现在出现了一个带有摄像机的窗口,现在我们需要在摄像机前显示适当的形状。正如你所看到的,这个程序可以非常准确地检测这三种形状。在命令窗口中,可以看到发送到串口的结果。
接下来是Arduino部分,这部分要复杂得多,所以我将尝试详细解释安装方法。首先,让我们在Arduino IDE中安装专门用于此M5Stack微控制器的支持。
接下来,我们需要安装支持库。
进入Sketch——> Include Library——> Manage Library,在搜索框中输入M5Stack。我将安装M5Stack库0.4.5版本
以同样的方式安装“MyCobotBasic”库。
现在我们将做一些简单的测试来检查机械臂和PC之间的通信,以及库的功能。在Arduino中,我们选择适当的端口(在我的情况下是COM17)并上传名为“First communication TEST”的代码。
在这个阶段,不需要连接12V电源。如果一切正常,M5Stack显示器上将显示某些信息。我们还可以测试按钮的功能。
接下来,我们连接12v电源和夹具,并上传以下代码,命名为“系统测试代码”。此代码首先将所有伺服(关节)设置为默认位置(0度),然后逐一测试所有伺服电机以及抓手。
如果这部分也有效,那么我们就完成了测试,我们需要继续执行特定任务,即石头剪刀布互动游戏“人类vs机器人”。
为此,我将机械臂固定在一个坚固的基础上以保持稳定,并将相机放置在一个特殊的支架上,尽管我可以以某种方式将其直接安装在机械臂上(例如,它可以直接安装在夹具上方,但对于这个特定的项目,这是不可能的,因为相机和矩阵显示器总是在相反的方向)。我这样做是出于实际原因,为了保护相机在测试过程中不受不必要的手臂运动的影响,而且这种类型的安装设备是通用的,可以用于其他项目。
因此,我们需要将myCobot Camera法兰2.0摄像机连接到PC的USB端口并激活Python脚本。在M5Stack微控制器上,首先需要上传名为“Rock_Paper_Scissors_Game”的代码。
屏幕上显示三个选项。开始时,手臂处于任意位置。现在我们按下B键,它会逐渐把手臂移到一个可以开始游戏的位置。当它稳定后,我们按下A键开始游戏。现在机器人站直了,矩阵显示亮起蓝色,这表明游戏已经开始。与此同时,倒计时3,2,1开始,之后我们必须在镜头前用手展示一定的形状。
在人类显示出一个形状之前,机器人会静止不动,等待人类提供数据。
在接收到这些数据后,机器人立即随机生成石头、布或剪刀这三个字符中的一个。重复一下,石头是一个封闭的抓手,纸是一个开放的抓手,剪刀是一个开闭的抓手动画。当两名球员都显示自己的形状时,它会显示在显示屏上,上半部分为人类,下半部分为机器人。现在决定了获胜者,如果机器人获胜,则TFT显示屏上的绿色表面上出现“我赢了”的信息,上面的矩阵显示屏也亮起绿色,机器人向后倾斜。如果男子获胜,TFT显示屏的红色背景上会显示“你赢了”的信息,上面的矩阵显示屏亮起红色,机器人身体前倾,即鞠躬。如果结果是平局,TFT显示屏上的黄色背景上会显示“平局”字样,上面的矩阵显示屏会亮起黄色,机器人会左右移动。
游戏始终伴随着适当的音频效果。在此之后,游戏结束,机器人返回到“准备玩的位置”。“C”键具有在游戏任何时刻显示总分的功能。按下该键,显示比分,两秒后自动消失。
最后是简短的结论。这个项目展示了一个完整的人与机器人之间的互动游戏-经典的石头剪刀布-使用MyCobot 280 M5机械臂。该机器人通过Python + MediaPipe视觉系统识别人类手势,并通过实时动作、LED反馈、声音和显示在M5Stack TFT显示屏上的屏幕结果做出响应。它是硬件控制、人工智能手势检测和嵌入式编程的完美结合。
本文编译自hackster.io





