技术融合与创新大象机器人水星Mercury X1人形机器人案例研究!

news2024/11/24 20:12:28

引言

在科技迅速发展的当下,人形机器人正变得日益重要,其应用范围从工业自动化到服务业不断扩展。本文将通过Mercury X1大象人形机器人的案例,探讨如何利用尖端技术如大型语言模型(LLM)、同时定位与映射(SLAM)、机器人操作系统(ROS)、开源计算机视觉(OpenCV)和S-Tag标记码技术来实现复杂环境中的精确物体抓取和移动。

此案例不仅展示了机器人的高级功能,也体现了现代机器人如何有效解决实际问题,预示着未来技术在工业和服务业中的应用前景。接下来的内容将详细说明实验的技术设置、步骤与成果。

技术点介绍

在Mercury X1的应用案例中,整合了多种技术使得机器人能够在复杂的环境中执行精准的物体抓取和移动任务。以下是案例中涉及到的关键技术和详细介绍:

1.LLM(Large Language Model)

大型语言模型(LLM)如ChatGPT系列,在机器人技术中的应用允许机器人理解和执行基于自然语言的指令。这种模型通过处理大量的文本数据学习语言的复杂性和上下文关系,使机器人能够解析用户的指令并转化为动作。

将一个对话形式的大语言模型,嵌入到机器人当中是目前一种比较热门的一种技术。

在Mercury X1机器人中,LLM用于理解自然语言解释操作命令,为后续的动作提供给决策。

2.同时定位与建图SLAM

SLAM技术是现代机器人和自动驾驶汽车中不可或缺的一部分,它允许机器人在没有外部帮助的情况下,在未知环境中进行定位和地图创建。通过使用激光雷达、摄像头和其他传感器,SLAM帮助Mercury X1机器人构建环境地图,实时更新其位置,并规划行动路径。这对于确保机器人在复杂环境中能够自主导航至关重要。

3.机器人操作系统 (ROS)

机器人操作系统(ROS)是一个灵活的框架,用于编写机器人软件。它提供了一系列工具和库,使开发者能够构建复杂而可靠的机器人行为。ROS的模块化设计允许Mercury X1机器人的开发者轻松集成不同的硬件和软件比如说机械臂的路径规划,移动地盘的建图导航避障等功能,处理数据通信,并管理多个传感器和执行器之间的交互。

ROS是一个非常强大的工具,在机器人应用领域当中,在全球范围内也是非常多人使用的。

4.开源计算机视觉库 (OpenCV)

OpenCV是用于实现图像处理和计算机视觉的开源库,它在本次的案例中扮演了至关重要的角色,没有它就不能完成这个项目。机器人的摄像头通过OpenCV分析收集到的视觉数据,识别和定位物体。OpenCV的算法使机器人能够识别物体形状、大小和精确坐标,这些信息对于精确抓取和操作至关重要。

提供了物体的坐标给机器人,就可以实现精准的抓取。

5.S-Tag标记码技术

S-Tag标记码是一种高度可靠的标识系统,设计用于在视觉上挑战的环境中提供准确的标记识别。这些标记被用于标识Mercury X1机器人操作环境中的物体和位置。即使在光线不足或视线受阻的情况下,S-Tag也能确保机器人通过其摄像头系统准确识别目标物体。

https://youtu.be/vnHI3GzLVrY

通过这些技术的应用,Mercury X1大象人形机器人能够执行复杂的任务,如自主导航、物体识别和精确操控,这些都是现代自动化和智能系统不可或缺的能力。

6.pymycobot

pymycobot是用于控制Mercury X1机器人机械臂和末端执行器(如夹爪)的Python库。它允许开发者精确控制机械臂的角度、坐标以及运动模式,包括差补模式和刷新模式。此库为机器人提供了高度的灵活性和可定制性,使得机器人能够执行复杂的抓取和操控任务,并适应各种操作需求。

产品介绍

Mercury X1 

Mercury X1是由Elephant Robotics开发的一款先进的人形机器人,特别设计用于应对各种自动化任务。它拥有19个自由度,(单臂7个自由度)使其在执行任务时具有极高的灵活性和适应性。Mercury X1配备了轮式移动底座,由高性能直驱电机驱动,能够在复杂环境中稳定移动,并具备高达8小时的电池续航能力,适合个人和商业应用。

这款机器人采用高性能主控制器系统,配置了NVIDIA Jetson Xavier提供强大的计算支持,以处理视觉测距、传感器融合、定位与地图构建、障碍检测和路径规划等复杂算法。此外,Mercury X1的移动基座装备了LiDAR、超声波传感器和2D视觉系统,能够实现高感知的环境交互。

myCobot Pro Adaptive Gripper

2 指自适应夹持器可实现内部和外部平行夹持,以及独特的环绕式夹持模式。它可以拾起任何形状的任何物体并且不会松开。使用它来完成一系列完整的应用,并快速投入生产 - 无需机器人专业知识。它是高度灵活和可靠的机器人单元的关键。

myCobot Pro Camera Flange

使用USB-B数据线能够获取到图像的相机模组。

接下来,我们将探讨这些技术在实际应用中是如何被集成到机器人中,并展示其在具体任务中的表现。

场景流程介绍

  1. 建图设立标记点

建图:首先在所处的环境里,使用Mercury X1自带的雷达,通过ROS中的SLAM技术进行建图,用的是gmapping算法进行2D建图。启动机器人,对系统进行初始化,在所处的环境中移动,通过雷达传感器收集数据,SLAM算法将这些数据转化为一个结构化的地图,同时实时更新机器人的位置,为了确保地推的准确性,建议在环境中多移动会。

标记A,B点:在RViz中使用“Publish Point”工具,在地图上点击想要标记的位置,就会发布一个点到ROS的默认话题,重复这个过程在B点也进行标记,记录下A,B点的坐标

在程序中修改好保存的点位,之后就可以进行定点巡航了。

  1. 移动到A桌,进行物体的识别与抓取

完成完上一步骤之后,Mercury X1运动到A桌进行物体的抓取。

因为物体的检测是根据手臂末端的摄像头进行的,所以在一开始未知的情况下,会对周围的环境先进行一个巡视,发现目标之后快速计算目标物体的位置。

#扫描全部物体的代码

def detect_objects_all(flag):
    if flag == 0:
        detect_objects("left", ml_camera_pos_a, camera_data_a)
        detect_objects("right", mr_camera_pos_a, camera_data_a)
        cube_data, tray_data = judge_tray_cube(camera_data_a)      else:
        ml.send_angles([-41.88, 30.62, -1.14, -102.57, 59.89, 58.11, 9.63], 10)
        mr.send_angles([45.94, 25.33, 0.15, -102.31, -58.65, 55.8, -13.94], 10)
        waitl()
        ml.set_gripper_value(0, 10)
        mr.set_gripper_value(0, 10)
        time.sleep(12)
        detect_objects("left", ml_camera_pos_b, camera_data_b)
        detect_objects("right", mr_camera_pos_b, camera_data_b)
        ml.set_gripper_value(50, 10)
        mr.set_gripper_value(50, 10)
        cube_data, tray_data = judge_tray_cube(camera_data_b)      return cube_data, tray_data

每个物体的表面都有贴有STag码,可以通过标记码来精准的获得物体的坐标参数,在此获得的物体坐标和机械臂的坐标并不在同一个坐标系当中,所以在机械臂的机器视觉算法当中,都会有一个世界坐标系,将物体的坐标,机械臂末端的坐标转化为世界坐标,这样就方便机械臂对物体进行抓取。

  1. 移动到B桌

拿着收纳箱,前往B桌进行分类。

  1. 对物体进行分类

跟第二步,物体的识别和抓取的算法是一样的,都是通过STag标记码识别之后获取物体的坐标进行分类。

技术难点

在开发过程中的难点最核心的是,双臂人形机器人协同控制的问题,主要从以下几个方面来分析:

  1. 精确的坐标和时间同步:

要精确计算两个手臂的运动轨迹,确保它们在抓取托盘时能同时到达预定位置。这要求系统能够同步控制两个独立的驱动系统,确保动作的协调性和同步性。

在Mercury X1夹爪托起托盘的时候,需要同时夹住托盘的边缘并且同时抬起托盘,为了确保同步进行,避免一方提前抬起,预设了1s的时间进行等待。

def put_up_tray(tray_data):
    ml.set_gripper_value(60, 10)
    mr.set_gripper_value(60, 10)
    time.sleep(1)
    for tray in tray_data:
        offset, fact_bcl = get_obj_coords(tray["corners"], tray["ids"], tray["cur_coords"], tray['arm'])
        point = fact_bcl.copy()
        px, py, pz = point[0], point[1], point[2]
        if tray["ids"] == [4] and tray['arm'] == "left":
            af = (offset + 90) * pi / 180
            mc = ml
            Hei = 57
            Len = -20
        elif tray["ids"] == [5] and tray['arm'] == "right":
            af = (offset - 90) * pi / 180
            mc = mr
            Hei = 57
            Len = 30
        else:
            continue
        # p3
        px3 = px + Hei * cos(af) + Len * sin(af)
        py3 = py + Hei * sin(af) - Len * cos(af)
        pz3 = pz
        p3 = [px3, py3, pz3]
        mc.send_base_coord(6, offset, sp)
        mc.send_base_coord(2, py3, sp)
        mc.send_base_coord(1, px3, sp)
        mc.send_base_coord(3, pz - 10, sp)
    waitl()
    ml.set_gripper_value(0, 10)
    mr.set_gripper_value(0, 10)
    time.sleep(2)
    current_coordsl = ml.get_base_coords()
    current_coordsr = mr.get_base_coords()
    waitl()
    ml.send_base_coord(3, current_coordsl[2] + 20, 20)
    mr.send_base_coord(3, current_coordsr[2] + 20, 20)
    waitl()
  1. 力学平衡和稳定性

在抓取大型或重物体时,双臂的协调尤为重要。需要确保机器人在执行任务时保持稳定,避免因力学不平衡造成的倾倒或损坏。这涉及到复杂的力学计算和实时反馈调节。

在本次项目中,因为动作并不算是很复杂,只需要将托盘同时抬起,同时放下就能够保证托盘的稳定性。如果在复杂的场景,比如说用手持乒乓球拍保证乒乓球拍上的球不会掉落,这个涉及力学平衡和稳定性就要考虑的多。

  1. 碰撞避免

在双臂操作中,防止手臂之间、手臂与机器人体、手臂与环境之间的碰撞是一大挑战。需要精确地规划每个手臂的运动路径,同时保持足够的安全距离。

总结

此案例不仅凸显了机器人技术在工业和服务领域的实际应用潜力,也展示了技术融合的重要性。通过详细介绍技术背景、实施步骤和具体应用,我们看到了Mercury X1在提高生产效率、减少人工成本和应对复杂操作环境中的重要价值。

如果你对该案例感兴趣的话麻烦点赞留言支持我们,你的支持是我们更新的动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1632827.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

雅思(IELTS)优秀小作文分享

IELTS优秀小作文分享 柱状图 本篇范文个人评分是8分或者8.5分,属于能找到的最优质的范文了 题目如下: The two sets of bar charts illustrate the amount of time that teenagers (boys, girls, and all) in the UK spend chatting online and playing game c…

2024 java使用Graceful Response,告别自己去封装响应,可以接收数据异常,快看我这一篇,足够你用!

参考官网手册地址&#xff1a;快速入门 | Docs 一、导入依赖&#xff08;根据springboot查看对应依赖版本&#xff09; <!-- Graceful --><dependency><groupId>com.feiniaojin</groupId><artifactId>graceful-response</artifactId&g…

GaussDB数据库事务管理

一、引言 事务管理是数据库系统中至关重要的一部分&#xff0c;它确保了数据库的一致性和可靠性。在GaussDB数据库中&#xff0c;事务管理不仅遵循传统的ACID特性&#xff0c;还提供了一些高级功能。本文将深入探讨GaussDB数据库事务管理的各个方面。 二、事务的基本概念 2.1…

CSS Position定位(详解网页中的定位属性)

目录 一、Position介绍 1.概念 2.特点 3.作用 4.应用 二、Position用法 1.position属性 2.static定位 3.fixed定位 4.relative定位 5.absolute定位 6.sticky定位 7.重叠的元素 三、CSS定位属性 四、总结 一、Position介绍 1.概念 文档流&#xff08;Document Fl…

C++ 之 string类的模拟实现

这学习我有三不学 昨天不学&#xff0c;因为昨天是个过去 明天不学&#xff0c;因为明天还是个未知数 今天不学&#xff0c;因为我们要活在当下&#xff0c;我就是玩嘿嘿~ –❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀-正文开始-❀–❀–…

springboot笔记一:idea社区版本创建springboot项目的方式

社区idea 手动maven 创建springboot项目 创建之后修改pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:sc…

Microsoft Edge浏览器:高效、简洁、个性化的网页浏览体验

Microsoft Edge是微软公司推出的一款网络浏览器&#xff0c;它是基于Chromium开源项目开发的&#xff0c;因此与Google Chrome有很多相似之处。以下是一些使用Microsoft Edge的心得体会&#xff1a; 1. 界面简洁&#xff1a;Microsoft Edge的界面设计非常简洁&#xff0c;用户…

R语言--图形绘制

一&#xff0c;绘制简单图形 c1<- c(10,20,30,40,50) c2<-c(2,7,15,40,50) plot(c1,c2,typeb) 具体参数请参考R语言中的绘图技巧1&#xff1a;plot()函数参数汇总_r语言plot参数设置-CSDN博客 c1<- c(10,20,30,40,50) c2<-c(2,7,15,40,50) plot(c1,c2,typeb,col#…

【北京迅为】《iTOP龙芯2K1000开发指南》-第四部分 ubuntu开发环境搭建

龙芯2K1000处理器集成2个64位GS264处理器核&#xff0c;主频1GHz&#xff0c;以及各种系统IO接口&#xff0c;集高性能与高配置于一身。支持4G模块、GPS模块、千兆以太网、16GB固态硬盘、双路UART、四路USB、WIFI蓝牙二合一模块、MiniPCIE等接口、双路CAN总线、RS485总线&#…

信息化还是数字化?

从 PC 互联网到移动互联网&#xff0c;再到物联网和最近流行的人工智能&#xff0c;科技的进步正在不断地改变着我们的生活和工作方式。这个过程实际上也是信息化和数字化的演进过程&#xff0c;许多人会问那信息化和数字化有啥区别&#xff1f;作为企业&#xff0c;如何在浪潮…

机器人操作系统ROS2学习—编译工作空间colcon build报错问题

在ROS2中&#xff0c;工作空间创建完成后&#xff0c;会经常需要编译工作空间。在工作空间dev_ws 下打开一个终端&#xff0c;通过指令Colcon build来编译工作空间。 1、这个过程有可能会出现如下错误: "colconbuild:Duplicate package names not supported" 根据…

openstack-自动化部署 9

所使用的kolla-ansible版本文档&#xff1a; Quick Start — kolla-ansible 14.10.1.dev21 documentation (openstack.org) 创建一个新的虚拟机 配置主机 安装docker 拉取openstack所需的组件镜像 安装ansible 配置ansible 启用lvm需要将另一个磁盘打成pv&#xff0c;以创建成…

如何与卫星影像叠加导出?

让每个人都有自己的地图&#xff01; 水经微图&#xff08;以下简称“微图”&#xff09;网页版&#xff0c;无需安装就可以绘制地图&#xff0c;得到了越来越多用户的亲睐。 但是&#xff0c;当我们千辛万苦绘制出来的地图&#xff0c;该如何与卫星影像叠加导出呢&#xff1…

【redis】Redis数据类型(一)——String类型(包含redis通用命令)

目录 Redis通用命令String类型常用的操作命令一些特殊命令详解setnx示例使用 setrange示例 mset示例 msetnx示例 append示例 getset示例 incr示例使用1.计数器2.限速器 bitcount示例使用&#xff1a;使用 bitmap 实现用户上线次数统计性能 String类型String类型简介String类型的…

Akamai 分布式“云+边缘”,打造下一代数字化基座

当下&#xff0c;数字化基础设施正逐步向分布式部署演化&#xff0c;云计算与边缘计算正在成为两大技术支柱。Gartner 数据显示&#xff0c;云服务占 IT 整体支出比例连年上涨&#xff0c;在过去一年已增长至12.1%&#xff1b;IDC 报告显示&#xff0c;截至2021年已有超过500亿…

【重磅开源】MapleBoot项目启动部署

基于SpringBootVue3开发的轻量级快速开发脚手架 &#x1f341;项目简介 一个通用的前、后端项目模板 一个快速开发管理系统的项目 一个可以生成SpringBootVue代码的项目 一个持续迭代的开源项目 一个程序员的心血合集 度过严寒&#xff0c;终有春日&#xff…

算法学习002-填数游戏 中小学算法思维学习 信奥算法解析 c++实现

目录 C填数游戏 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、推荐资料 C填数游戏 一、题目要求 1、编程实现 在小学奥数中经常会看到一些填数字的游戏&#xff0c;如下图所示&#xff0c;其中每个…

windows下pysqlite3安装

pysqlite3 下载地址&#xff1a;SQLite Download Page windows下安装 首先在官网中下载以下文件 sqlite-amalgamation-3450300.zip #源码文件 sqlite-dll-win-x64-3450300.zip # 根据系统选择32或者64&#xff0c;可通过查看我的电脑属性中查看 sqlite-tools-win-x64-345…

VSCODE通过SFTP链接VM进行开发

在vscode插件里面搜索sftp&#xff0c;安装。 安装之后&#xff0c;按ctrlshiftp&#xff0c;找到sftp的config 然后填写刚刚的IP&#xff0c;然后是你的用户名密码 如果是通过密钥链接的话就是这样配置 然后切换到这个sftp的tab里面 然后在你的项目右键&#xff0c;然后选择op…

线上盲盒小程序:未来发展趋势与前景展望

随着互联网技术的飞速发展和消费者对于个性化、娱乐化消费体验的不断追求&#xff0c;线上盲盒小程序应运而生&#xff0c;并逐渐成为一种新兴的购物和娱乐方式。本文将对线上盲盒小程序的发展趋势和前景进行展望&#xff0c;以期为相关从业者提供有益的参考。 一、线上盲盒小…