通过可穿戴外骨骼,以更灵活的方式操作你的机器人。

今天,我们将介绍一款专为控制 Mercury X1 和 Mercury B1 机械臂而设计的创新外骨骼。这种外骨骼以人类手臂的结构为蓝本,可实现直观和精确的控制。

开发这种外骨骼的动机源于人们对深度学习和机器学习等领域日益增长的兴趣。这些技术使机器人能够自主学习和执行人类任务,例如折叠衣服或做饭。为了实现这些功能,必须收集大量数据,并且必须采用一种便捷的方式来控制机械臂。设计这种外骨骼的主要目标是满足这一需求。

项目硬件介绍

大象机器人 Mercury X1
M5Stack ESP32 基础核心物联网开发套件
NVIDIA Jetson Orin Nano 开发者套件
ROS 机器人操作系统
Elephant Robotics myCobot Pro 自适应夹爪

产品介绍

Mercury X1

Mercury X1 由 Elephant Robotics 开发,是一款先进的人形机器人,旨在处理各种自动化任务。它拥有 19 个 DOF(每臂 7 个 DOF),在手术过程中提供了卓越的灵活性和适应性。Mercury X1 采用由高性能直驱电机驱动的轮式移动底座,确保在复杂环境中稳定移动,电池续航时间长达 8 小时。Mercury X1 配备了由 NVIDIA Jetson Xavier 提供支持的高性能主控制器系统,支持视觉测距、传感器融合、定位和建图、障碍物检测和路径规划的复杂算法。移动底座配备了 LiDAR、超声波传感器和 2D 视觉系统,可实现高度感知的环境交互。

外骨骼

这款创新的外骨骼专为远程控制和数据收集而设计。其结构由 2 个以人体解剖结构为蓝本的手臂组件组成,并与 Mercury X1 的双臂运动结构保持一致,可以精确模仿人类手臂运动。中心嵌入了一个 M5Stack Basic 模块,作为主控单元,提供强大的计算能力和灵活的接口。外骨骼旨在提供舒适的佩戴体验,同时确保高精度的运动跟踪和数据收集,以支持机器人操作和机器学习训练。

开发挑战

初始设计限制

第一代外骨骼安装在操作员的肩膀上。虽然这种设计看起来很有效,但在实际操作中被证明很麻烦。用户必须显着抬高手臂和肘部才能正确控制 Mercury X1,从而导致不适和效率低下。

电源和连接问题

初始版本需要直接连接到充电器,因此需要三到四根电缆连接到设备。这种设置创造了一个错综复杂的工作空间。

操作员疲劳

使用外骨骼的物理压力在操作仅 5 分钟后就变得明显,导致用户迅速疲劳。这些缺点突出了进行大量升级的必要性,并导致了改进版本的开发。

最新升级

我们目前的设计已经解决了之前的大部分痛点。新的外骨骼具有悬挂在胸部前方的手臂,并通过中心杆连接,确保两侧之间的平衡。以前对外部电源的依赖已被中央 M5Stack Basic 模块中的内置可充电电池所取代。这消除了对多个拖曳充电器的需求,从而显著减少了杂乱。现在,只需一根电缆即可将 M5Stack Basic 连接到 Mercury X1,从而高效传输数据并简化设置。

实现细节

● 操作系统:Ubuntu 20.04

● 编程语言:Python

● 使用的库:pymycobot、threading、time、serial

该程序的工作原理是从外骨骼上的磁性编码器读取数据,将电位值转换为机械臂可以解释和执行的角度。尽管代码不到 100 行,但该程序实现了控制机械臂的基本功能。

def read_data():while True:try:# read left robot dataser.write(hex_array_l)time.sleep(0.01)count = ser.in_waitingdata = ser.read(count).hex()tim = time.time()#print("l:"+data+","+str(tim))if len(data) == 84 and data[0:2] == "d5" and data[-2:] == "5d":for i in range(7):data_h = data[8 + i * 10: 10 + i * 10]data_l = data[10 + i * 10: 12 + i * 10]encode = int(data_h + data_l, 16)# l_angle_list[i] = (encode - 2048) * 180 / 2048 if encode != 2048 else 0if encode == 2048:angle = 0elif encode < 2048:angle = -180 * (2048 - encode) / 2048else:angle = 180 * (encode - 2048) / 2048l_angle_list[i] = anglebutton = bin(int(data[-10: -8]))[2:].rjust(4, "0")l_atom_list[0] = int(button[1])l_atom_list[1] = int(button[2])l_atom_list[2] = int(data[-6: -4], 16)l_atom_list[3] = int(data[-4: -2], 16)print("Left Arm Angles:", l_angle_list)

基于此基本设置,可以记录特定运动期间的关节参数并用于训练机器学习模型,从而有助于为后续算法开发收集有价值的数据。

展望

展望未来,我们设想通过触觉反馈和自适应运动算法等高级功能来增强外骨骼,以进一步弥合人类控制和机器人精度之间的差距。这些改进将为操作员提供更身临其境的体验,提供实时传感反馈,并允许在操作过程中进行更直观的调整。此外,我们计划扩展外骨骼的兼容性,以便与更广泛的机器人平台配合使用,从而在制造、医疗保健和研究等各个行业实现更广泛的应用。这一进展将支持更广泛的数据收集,并促进可以处理日益复杂任务的协作人机系统。

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

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

相关文章

浅尝Appium自动化框架

浅尝Appium自动化框架 Appium自动化框架介绍Appium原理Appium使用安装平台驱动实战 坑 Appium自动化框架介绍 Appium 是一个开源的自动化测试框架&#xff0c;最初设计用于移动应用的测试&#xff0c;但现在它也扩展了对桌面端应用的支持。Appium 使得自动化测试变得更加简单&…

maven多模块项目编译一直报Failure to find com.xxx.xxx:xxx-xxx-xxx:pom:1.0-SNAPSHOT in问题

工作中项目上因为多版本迭代&#xff0c;需要对不同迭代版本升级版本号&#xff0c;且因为项目工程本身是多模块结构&#xff0c;且依然多个其他模块工程。 在将工程中子模块的pom.xml中版本号使用变量引用父模块中定义的版本号时&#xff0c;一直报Failure to find com.xxx.x…

来自通义万相的创意加速器:AI 绘画创作

来自通义万相的创意加速器&#xff1a;AI 绘画创作 通义万相动手搭建“通义万相”部署方案资源准备对象存储OSS&#xff08;手动部署&#xff09;DashScope 模型服务灵积云服务器ECS&#xff08;手动部署&#xff09;一键部署ROS Web文生图艺术与设计创作广告与营销物料生成教育…

【Uniapp-Vue3】组合式API中的组件的生命周期函数(钩子函数)

在Uniapp中生命周期函数用得较多的是onMounted和onUnmounted。 一、onMounted函数 如果我们想要获得DOM元素&#xff0c;就需要给DOM标签上添加ref属性&#xff0c;并定义一个相同属性名的变量。 但是我们输出这个DOM元素为NULL 如果我们使用onMounted就能获得到DOM元素&…

uniapp使用chooseLocation安卓篇

本文章全部以高德地图为例 代码 <view class"bottom"><button click"choose">定位</button> </view> choose() {uni.chooseLocation({success: function(res) {console.log(位置名称&#xff1a; res.name);console.log(详细地…

了解模2除法:原理与应用

模2除法&#xff0c;也被称为二进制除法或XOR除法&#xff0c;是一种在二进制数制下进行的特殊除法运算。与常规的十进制或其他进制的除法不同&#xff0c;模2除法使用异或&#xff08;XOR&#xff09;运算代替减法&#xff0c;并且不涉及进位或借位。这种除法运算在数字通信、…

基于 SSH 的任务调度系统

文末附有完整项目代码 在当今科技飞速发展的时代&#xff0c;任务调度系统的重要性日益凸显。本文将详细介绍一个基于 SSH&#xff08;SpringStruts2Hibernate&#xff09;的任务调度系统的设计与实现。 一、系统概述 本系统旨在改变传统人工任务调度方式&#xff0c;通过计算…

RFC 793

读 TCP 协议 RFC-793_rfc 793-CSDN博客TCP灌包中RTT时延与RTO超时关系 - konglingbin - 博客园 TCP的RTT算法 从前面的TCP重传机制我们知道Timeout的设置对于重传非常重要。 设长了&#xff0c;重发就慢&#xff0c;丢了老半天才重发&#xff0c;没有效率&#xff0c;性能差&…

Transformer:深度学习的变革力量

深度学习领域的发展日新月异&#xff0c;在自然语言处理&#xff08;NLP&#xff09;、计算机视觉等领域取得了巨大突破。然而&#xff0c;早期的循环神经网络&#xff08;RNN&#xff09;在处理长序列时面临着梯度消失、并行计算能力不足等瓶颈。而 Transformer 的横空出世&am…

计算机网络 笔记 数据链路层 2

1,信道划分&#xff1a; (1)时分复用TDM 将时间等分为“TDM帧”&#xff0c;每个TDM帧内部等分为m个时隙&#xff0c;m个用户对应m个时隙 缺点&#xff1a;每个节点只分到了总带宽的1/m,如果有部分的1节点不发出数据&#xff0c;那么就会在这个时间信道被闲置&#xff0c;利用…

vue el-table 数据变化后,高度渲染问题

场景&#xff1a;el-table设置了height属性&#xff0c;但是切换查询条件后再次点击查询重新获取data时&#xff0c;el-table渲染的高度会有问题&#xff0c;滚动区域变矮了。 解决办法&#xff1a;使用doLayout方法‌&#xff0c;在表格数据渲染后调用doLayout方法可以重新布局…

深度学习|表示学习|一个神经元可以干什么|02

如是我闻&#xff1a; 如果我们只有一个神经元&#xff08;即一个单一的线性或非线性函数&#xff09;&#xff0c;仍然可以完成一些简单的任务。以下是一个神经元可以实现的功能和应用&#xff1a; 1. 实现简单的线性分类 输入&#xff1a;一组特征向量 x x x 输出&#xff…

开源生成式物理引擎Genesis,可模拟世界万物

这是生成大模型时代 —— 它们能生成文本、图像、音频、视频、3D 对象…… 而如果将所有这些组合到一起&#xff0c;我们可能会得到一个世界&#xff01; 现在&#xff0c;不管是 LeCun 正在探索的世界模型&#xff0c;还是李飞飞想要攻克的空间智能&#xff0c;又或是其他研究…

使用Docker模拟PX4固件的无人机用于辅助地面站开发

前言 最近在制作鸿蒙无人机地面站&#xff0c;模仿的是QGroundControl&#xff0c;协议使用mavlink&#xff0c;记录一下本地模拟mavlink协议通过tcp/udp发送 废话不多说直接上命令 1.启动docker的桌面端 启动之后才能使用docker命令来创建容器 docker run --rm -it jonas…

深度学习张量的秩、轴和形状

深度学习张量的秩、轴和形状 秩、轴和形状是在深度学习中我们最关心的张量属性。 秩轴形状 秩、轴和形状是在深度学习中开始使用张量时我们最关心的三个属性。这些概念相互建立&#xff0c;从秩开始&#xff0c;然后是轴&#xff0c;最后构建到形状&#xff0c;所以请注意这…

【json】

JSON JSON是一种轻量级的,按照指定的格式去组织和封装数据的数据交互格式。 本质上是一个带有特定格式的字符串(py打印json时认定为str类型) 在各个编程语言中流通的数据格式&#xff0c;负责不同编程语言中的数据传递和交互,类似于计算机普通话 python与json关系及相互转换…

基于 Python 自动化接口测试(踩坑与实践)

文档&#xff1a;基于 Python 的自动化接口测试 目录 背景问题描述与解决思路核心代码修改点及其详细解释最终测试结果后续优化建议 1. 问题背景 本项目旨在使用 Python 模拟浏览器的请求行为&#xff0c;测试文章分页接口的可用性。测试目标接口如下&#xff1a; bashcoder…

k8s dashboard离线部署步骤

确定k8s版本&#xff0c;以1.23为例。 部署metrics-server服务&#xff0c;最好用v0.5.2。 用v0.6.0&#xff0c;可能会报以下错误&#xff1a; nodekubemaster:~/Desktop/metric$ kubectl top nodes Error from server (ServiceUnavailable): the server is currently unabl…

python学opencv|读取图像(二十八)使用cv2.warpAffine()函数平移图像

【1】引言 前序已经对图像操作进行了广泛的学习&#xff0c;包括读取、放大缩小&#xff0c;改变BGR通道值等&#xff0c;相关链接包括且不限于&#xff1a; python学opencv|读取图像-CSDN博客 python学opencv|读取图像&#xff08;三&#xff09;放大和缩小图像_python(1)使…

【LeetCode】力扣刷题热题100道(11-15题)附源码 环形链表 二叉树中序遍历 插入法(C++)

目录 1.字母异位词分组 2.环形链表 3.环形链表2 4.二叉树的中序遍历 5.搜索插入位置 1.字母异位词分组 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 排序字符…