前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >开源六轴协作机器人myCobot 320结合人脸表情识别情绪!

开源六轴协作机器人myCobot 320结合人脸表情识别情绪!

原创
作者头像
大象机器人
发布于 2024-08-12 08:00:36
发布于 2024-08-12 08:00:36
24300
代码可运行
举报
运行总次数:0
代码可运行

在大家的印象中,机械臂通常被应用在工业领域,执行一些重复性工作,以帮助和替代人类。然而,机械臂不仅限于此,它们也可以成为陪伴型机器人,为我们提供更多样化的互动体验。

今天,我想探索机械臂的一些与众不同的功能。通过结合人脸表情识别技术,我们可以让机械臂感知到我们的情绪变化。当我们开心时,机械臂可以跟着一起开心地舞动;当我们伤心难过时,它可以过来安慰我们,给予温暖的抚摸。这种基于表情反馈的互动能让机械臂更好地陪伴我们。

在接下来的部分中,我们将详细介绍这种系统的工作原理、技术实现和应用场景,展示机械臂。

文章会分为机械臂介绍,技术点介绍,项目的实现三部分,首先我将介绍我使用到的机械臂。

Robotic Arm

myCobot 320 M5

Mycobot 320,一款具备六自由度的协作型机械臂,凭借其独特的设计和高精度伺服电机成为了领域内的亮点。这款机械臂拥有最大350mm的工作半径和最大1000g的末端负载能力,使其适用于广泛的应用场景。Mycobot 320不仅支持灵活的视觉开发应用,还提供了深入的机械运动原理解析,为用户带来了12个标准的24V工业IO接口,满足不同的开发需求。

它的开放性极高,兼容大多数主流操作系统和编程语言,包括Python和ROS等,为开发者提供了极大的灵活性和自由度。无论是在教育、研发还是工业应用中,Mycobot 320都能提供强大支持,使创新和应用开发更加便捷高效。

摄像头模组

适配于myCobot 320M5的摄像头模组可以安装在机械臂末端。通过摄像头用USB数据线进行通信,实时获取到机械臂末端的一个画面,就能够识别人脸的表情处于怎样的一个状态。

技术概览

pymycobot

pymycobot 是一个用于与 mycobot 机械臂进行串行通信和控制的 Python API。这个库是为了方便开发者使用 Python 语言控制 mycobot 机械臂而设计的。它提供了一系列的函数和命令,让用户可以通过编程方式控制机械臂的动作和行为。例如,用户可以使用该库获取机械臂的角度、发送角度指令来控制机械臂的移动,或者获取和发送机械臂的坐标信息。

使用这个库唯一的标准是,得使用mycobot 系列的机械臂,这是专门为mycobot进行适配的一款机械臂。

pymycobot · PyPI

deepface

DeepFace 是一个强大的 Python 库,用于面部识别和面部属性分析。它基于多种深度学习模型,如 VGG-Face、Google FaceNet、OpenFace、Facebook DeepFace、DeepID 和 Dlib 等,提供了面部验证、面部检测、面部属性分析(如性别、年龄、种族和情绪)等功能。DeepFace 通过简单的接口使得复杂的面部识别和分析任务变得更加容易,广泛应用于安全系统、用户身份验证和智能交互等领域。

GitHub - serengil/deepface: A Lightweight Face Recognition and Facial Attribute Analysis (Age, Gender, Emotion and Race) Library for Python

开发过程

项目架构

我将该项目主要分为两个功能:

Emotion detection Recognition: 主要用来处理人脸面部的情绪识别,能够返回信息当前人脸的情绪主要是什么,平常,开心,还是伤心等表情

Robotic Arm Control:主要功能用于设置机械臂的运动控制,例如坐标控制,角度控制等等。

情绪识别功能实现

现在的人脸情绪识别已经很多厉害的人提供了各种识别的方法在github上了,但如果想自己做一个识别人脸情绪的功能的话还是分为4 个步骤:

1. 数据收集和预处理

2. 模型选择和训练

3. 模型优化和测试

4. 部署和应用

从0开始的话,需要做蛮多步骤的,如果我们只是单纯的使用,没有刻意需要用在某些应用场景当中,我们可以选择一款别人已经训练好的检测模型,我们直接使用就好了!现在目前有OpenCV,FER(Facial Expression Recognition),DeepFace,Microsoft Azure Face API等等。

这次我们用deepface进行emotion识别的使用。

环境搭建

首先当然是安装使用环境啦,opencv的版本不要使用较低的版本会影响使用。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
pip install deepface
pip install opencv-python

它有很多功能有年龄的检测,性别的检测,情绪的检测等等多种模型,本次我们主要是用到的是情绪的检测,要用到“facial_expression_model_weights.h5”这个模型,再使用的过程会自动帮忙下载这个模型来使用。

简单介绍一下使用的功能。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import os
import cv2
from deepface import DeepFace
# 读取图像
image = cv2.imread(image_path)
 
# 分析图像中的面部表情
results = DeepFace.analyze(image, actions=['emotion'], enforce_detection=False)
 
print(result)
[{'emotion': {'angry': 81.24255537986755, 'disgust': 16.530486941337585, 'fear': 1.6193315386772156, 'happy': 6.932554015293135e-05, 'sad': 0.4116043448448181, 'surprise': 0.1861470052972436, 'neutral': 0.009808379400055856}, 'dominant_emotion': 'angry', 'region': {'x': 136, 'y': 65, 'w': 124, 'h': 124, 'left_eye': None, 'right_eye': None}, 'face_confidence': 0.9}]

我们可以看到返回的数据angry 占81就说明此时的表情是生气的。

这只是一张图片的检测,我们多看看几张图片检测他的准确率如何。

这是图片的检测,我们需要用到一个持续的,所以就会要启动摄像头一直的对画面进行分析,所以将一张张照片拼接在一起就是一个视频了。

以下是对视频的代码处理。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import cv2
from deepface import DeepFace
 
# 打开摄像头
cap = cv2.VideoCapture(0)
 
if not cap.isOpened():
    print("Error: Could not open webcam.")
    exit()
 
while True:
    # 读取视频帧
    ret, frame = cap.read()
    if not ret:
        break
 
    # 分析视频帧中的面部表情
    try:
        result = DeepFace.analyze(frame, actions=['emotion'], enforce_detection=False)
        emotion_info = result[0]['emotion']  # 获取情绪信息
        dominant_emotion = result[0]['dominant_emotion']  # 获取主要表情
        emotion_probability = emotion_info[dominant_emotion]  # 获取主要表情的概率
 
        # 在视频帧上显示主要表情及其概率
        text = f'{dominant_emotion}: {emotion_probability:.2f}%'
        cv2.putText(frame, text, (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2, cv2.LINE_AA)
 
        # 显示视频帧
        cv2.imshow('Emotion Detection', frame)
    except Exception as e:
        print(f"Error analyzing frame: {e}")
 
    # 按 'q' 键退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
 
# 释放摄像头并关闭窗口
cap.release()
cv2.destroyAllWindows()

就能够得到下面的效果了。我们可以根据主要的表情来返回数值。

有时候确实会出现一些不够准确的情况,但是我们可以人为的进行判断,一个表情长时间出现的时候才触发机械臂的运动。

机械臂运动控制

在这一部分我来介绍如何对mycobot 320进行机械臂的控制,主要用到的是pymcyobot库。

首先还是安装环境

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
pip install pymycobot

以下是几种常用mycobot机械臂的控制方法,

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
from pymycobot.mycobot import MyCobot
send_angles(degrees, speed)
功能: 发送所有角度给机械臂所有关节
参数:
degrees: (List[float])包含所有关节的角度 ,六轴机器人有六个关节所以长度为 6,四轴长度为 4,表示方法为:[20,20,20,20,20,20]
speed: 表示机械臂运动的速度,取值范围是 0-100
 
ex:
mc = MyCobot("com10",115200)
mc.send_angles([0,0,0,0,0,0],100)

角度控制是对每个关节的角度进行调整,用于一些固定点位的控制比较合适,使用的范围比较局限,接下来还有另一种控制方法,坐标控制。

坐标控制指的是精准控制机械臂末端执行器的位置和姿态,使其在特定的坐标系中完成各种操作任务,是比较常用的一种控制方式。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
from pymycobot.mycobot import MyCobot
 
send_coords(coords, speed, mode)
 
功能: 发送整体坐标和姿态,让机械臂头部从原来点移动到您指定点
参数:
coords:
六轴:[x,y,z,rx,ry,rz]的坐标值,长度为 6
四轴:[x,y,z,rx]的坐标值,长度为 4
speed: (int) 表示机械臂运动的速度,范围是 0-100
mode: (int): 取值限定 01
0 表示机械臂头部移动的路径为非线性,即随机规划路线,只要机械臂头部以保持规定的姿态移动到指定点即可。
1 表示机械臂头部移动的路径为线性的,即智能规划路线让机械臂头部以直线的方式移动到指定点.
 
ex
mc = MyCobot("com10",115200)
mc.send_coords([100,20,30,-50,60,-100],100,1)

为了让整体代码看起来可读性高,可修改性高,创建机械臂类方便进行调用和修改,将对应的动作给提前写入进去。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
class RobotArmController:
 
        def __init__(self,port):
        #初始化链接
        self.mc = MyCobot(port, 115200)
        self.init_pose = [0.96, 86.22, -98.26, 10.54, 86.92, -2.37]
        self.coords = [-40, -92.5, 392.7, -92.19, -1.91, -94.14]
        self.speed = 60
        self.mode = 0
        
        def SadAction(self):
            ...
            
        def HappyAction(self):
            ...

当我生气的时候在我面前打招呼

当我开心的时候它和我一起开心的跳起舞来了

总结

科技发展的越来的越快,在未来应该也会有智能的人形机器人,搭配ChatGPT等一些人工智能的模型,说不定在某一天能够帮助人们排忧解难,甚至可以成为心理医生来治疗一些有心理疾病的人,真期待未来科技的发展。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
大象机器人六轴协作机械臂myCobot 320 进行手势识别
我是一名专注于机器学习和机器人技术自由者。我的热情始于大学期间的人工智能课程,这促使我探索人机交互的新方法。尤其对于机械臂的操作,我一直想要简化其复杂性,使之更加直观和易于使用。
大象机器人
2024/02/01
3950
大象机器人六轴协作机械臂myCobot 320 进行手势识别
大象机器人开源六轴协作机械臂myCobot 320 手机摄影技术!
有没有遇到过这样的情况:当你手持手机或相机准备拍摄视频时,心中已经构想了完美的画面,但却因为实际的限制无法捕捉到理想中的角度?这种情况可能会让人感到挫折。例如,如果想要从地面一只蚂蚁的视角拍摄,镜头需要与蚂蚁处于同一水平线上,这在操作上不仅困难,而且往往难以实现。
大象机器人
2024/04/28
3030
大象机器人开源六轴协作机械臂myCobot 320 手机摄影技术!
结合大象机器人六轴协作机械臂myCobot 280 ,解决特定的自动化任务和挑战!(上)
本项目致力于探索和实现一种高度集成的机器人系统,旨在通过结合现代机器人操作系统(ROS)和先进的硬件组件,解决特定的自动化任务和挑战。一部分是基于Jetson Orin主板的LIMO PPRO SLAM雷达小车,它具备自主导航、地图构建和路径规划的能力;另一部分是Mycobot 280 M5机械臂,这是一个具有六自由度、工作半径280mm的紧凑型机械臂,能够进行精确的物品搬运和操作。
大象机器人
2024/03/07
4090
结合大象机器人六轴协作机械臂myCobot 280 ,解决特定的自动化任务和挑战!(上)
大象机器人开源六轴机械臂myCobot 320全息投影
是不是觉得这个展示会比较新颖,神奇呢?其实这是一项技术,叫做全息投影。全息技术已经成为我们生活中的一部分,它的应用已经涵盖了多个领域。在娱乐领域,我们可以在电影院、游戏厅和主题公园等地方看到全息技术的应用,通过全息投影技术,观众可以享受到更加逼真的视觉效果,进一步提高了娱乐体验。在医疗领域,全息技术被广泛用于医学诊断和手术中,通过呈现高分辨率的三维影像,医生可以更加精准地观察病情,提高了诊断和手术的效果。在教育领域,全息技术被用于制作教学资料和科普展示,帮助学生更好地理解和掌握知识。此外,全息技术还被应用于工程制造、安全监控、虚拟现实等领域,为我们的生活带来了更多的便利和创新。可以预见,随着技术的不断发展和应用场景的不断拓展,全息技术在未来的生活中会发挥更加重要的作用。
大象机器人
2023/03/10
9850
大象机器人开源六轴机械臂myCobot 320全息投影
使用ChatGPT学习大象机器人六轴协作机械臂mechArm
我是一名机器人方向的大学生,近期学校安排自主做一个机器人方面相关的项目。学校给我们提供了一个小型的六轴机械臂,mechArm 270M5Stack,我打算使用ChatGPT让它来辅助我学习如何使用这个机械臂并且做一个demo。
大象机器人
2024/02/01
3692
使用ChatGPT学习大象机器人六轴协作机械臂mechArm
大象机械臂mechArm pi人脸识别项目
这是一款大象机器人生产的小六轴机械臂,以树莓派4B为微处理器,ESP32为辅助控制,结构是中心对称结构(仿工业结构)。mechArm 270-Pi本体重量1kg, 负载250g,工作半径270mm,设计紧凑便携,小巧但功能强大,操作简单,能与人协同、安全工作。
大象机器人
2023/01/10
6570
结合大象机器人六轴协作机械臂myCobot 280 ,解决特定的自动化任务和挑战!(下)
前景提要:我们在上文介绍了使用LIMO cobot 实现一个能够执行复杂任务的复合机器人系统的应用场景的项目,从以下三个方面:概念设计、系统架构以及关键组件。
大象机器人
2024/03/07
4521
结合大象机器人六轴协作机械臂myCobot 280 ,解决特定的自动化任务和挑战!(下)
MyCobot机械臂头部智能规划路线(四)
一直在纠结是先讲头部运动,还是先讲空间坐标系,后来决定还是先讲头部运动,让大家先感受一下机械臂在空间中是怎么定位的,然后我们下一节将详细介绍机械臂的空间坐标是怎么回事。空间坐标是一项非常复杂且需要深度理解的东西,学好空间坐标才能学好机械臂的各种运动。为了更好的体验一下机械臂的空间定位,我们先从这个机械臂头部运动开始,让大家体验一下空间坐标及运动。
大象机器人
2022/10/10
3730
六轴机械臂机械臂人脸识别和跟踪
使用一个桌面型的六轴机械臂,在机械臂的末端安装一个摄像头,来进行人脸识别和跟踪的一个功能。该功能分为两个模块,一个是人脸识别模块,另一个是机械臂的运动控制模块。
大象机器人
2023/02/10
1K0
大象机器人开源协作机械臂机械臂接入GPT4o大模型!
随着人工智能和机器人技术的快速发展,机械臂在工业、医疗和服务业等领域的应用越来越广泛。通过结合大模型和多模态AI,机械臂能够实现更加复杂和智能化的任务,提升了人机协作的效率和效果。我们个人平时接触不太到机械臂这类的机器人产品,但是有一种小型的机械臂我们人人都可以拥有它myCobot,价格低廉的一种桌面型机械臂。
大象机器人
2024/07/03
6920
大象机器人开源协作机械臂机械臂接入GPT4o大模型!
开源七轴myArm协作机械臂正逆运动学技术讲解
在本文中,我们将深入探讨机器人学的两个核心概念:正运动学和逆运动学。这两个概念是理解和控制机械臂运动的基础。通过一个具体的7轴机械臂实例,我们将详细介绍如何计算机械臂的正运动学和逆运动学。我们首先会解释正运动学和逆运动学的基本概念和数学原理,然后我们将展示如何应用这些原理来计算7轴机械臂的运动。我们的目标是让读者对机械臂的运动控制有一个深入的理解,并了解如何在实践中应用这些知识。
大象机器人
2023/11/06
1.6K0
开源七轴myArm协作机械臂正逆运动学技术讲解
开源六轴协作机械臂MechArm 拖动示教模型案例
今天,我将向大家展示一个我独立设计并实现的机械臂模型。这个模型的核心功能是实现实时的手势追踪——只需用手轻轻拖拽,机械臂就能立即跟随你的动作进行移动。
大象机器人
2023/11/06
5680
使用 Python 和可视化编程控制树莓派机械臂myCobot
myCobot 280 Pi 是一款 6 自由度多功能桌面机械臂。它由大象机器人研发,使用 Raspberry Pi 作为主控制器。该机器人结构紧凑,运行稳定,非常适合新手入门。它还可以使用多种语言进行编程,简单易用,功能丰富。适合那些有兴趣学习如何对机械臂进行编程控制和项目开发的人。
大象机器人
2022/11/30
5K0
水星Mercury X1轮式人形机器人结合openc算法&STag标记码视觉系统实现精确抓取!
本案例展示了如何利用视觉系统提升机械臂的抓取精度,成功实现了人形机器人的双臂抓取不在局限于单臂抓取。
大象机器人
2024/08/12
1740
水星Mercury X1轮式人形机器人结合openc算法&STag标记码视觉系统实现精确抓取!
七轴开源协作机械臂myArm视觉跟踪技术!
ArUco标记是一种基于二维码的标记,可以被用于高效的场景识别和位置跟踪。这些标记的简单性和高效性使其成为机器视觉领域的理想选择,特别是在需要实时和高精度跟踪的场景中。结合机器学习和先进的图像处理技术,使用ArUco标记的机械臂系统可以实现更高级的自动化功能,如精确定位、导航和复杂动作的执行。
大象机器人
2023/12/18
4350
七轴开源协作机械臂myArm视觉跟踪技术!
myCobot 320 APP 控制技术案例
机械臂是现代工业和科研领域中的重要工具,它们在制造业、医疗、农业、教育等多个领域都有广泛的应用。这些机器臂不仅可以进行精密操作,而且能够在人类无法进入的危险环境中工作,大大提高了工作效率和安全性。然而,传统的机械臂控制方式往往需要专业知识和复杂的编程,这在某种程度上限制了其普及和应用。因此,手机APP控制机械臂的方法应运而生。手机APP控制的优点在于,它可以使非专业人士也能方便地操控机械臂,同时,通过手机APP,用户可以远程控制机械臂,极大地提高了操作的便利性和灵活性。本文的目的是深入探讨这这个主题,今天我将用MyCobot Controlller APP 使用手机来控制myCobot 320 M5Stack。
大象机器人
2023/10/31
3870
myCobot 320 APP 控制技术案例
探索 Jetson Nano 为 myCobot 280 提供的强大功能
探索 Jetson Nano 为 myCobot 280 提供的强大功能,机器人技术的一个有前途的组合
大象机器人
2023/04/06
6110
探索 Jetson Nano 为 myCobot 280 提供的强大功能
大象机器人水星MercuryX1轮式人形机器人基于物体标记建模的键盘点按操作!
在现代科技的推动下,机器人在日常生活和工作场景中的应用越来越广泛。本文将介绍MercuryX1,这款先进的机器人如何通过其手臂末端的摄像头识别并确定键盘的键位,从而进行精确的打字操作。通过这一案例,我们将展示MercuryX1在自动化办公领域的潜力,以及其在提升效率和减少人为错误方面的显著优势。
大象机器人
2024/08/06
2520
大象机器人水星MercuryX1轮式人形机器人基于物体标记建模的键盘点按操作!
Mycobot机械臂各关节的运动(三)
这一节我们开始第一个程序,就是机械臂各关节的运动。让我们首先打开Mycobot,然后登入一个终端,我们输入“python”进入python环境。
大象机器人
2022/09/30
4230
开源六轴机械臂myCobot 280末端执行器实用案例解析
大家好,今天这篇文章的主要内容是讲解以及使用一些myCobot 280 的配件,来了解这些末端执行器都能够完成哪些功能,从而帮助大家能够正确的选择一款适合的配件来进行使用。
大象机器人
2023/10/16
7060
开源六轴机械臂myCobot 280末端执行器实用案例解析
推荐阅读
相关推荐
大象机器人六轴协作机械臂myCobot 320 进行手势识别
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档