开源六轴协作机械臂MechArm 拖动示教模型案例

2023-11-06 16:04

本文主要是介绍开源六轴协作机械臂MechArm 拖动示教模型案例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

介绍

今天,我将向大家展示一个我独立设计并实现的机械臂模型。这个模型的核心功能是实现实时的手势追踪——只需用手轻轻拖拽,机械臂就能立即跟随你的动作进行移动。

我之所以想要创造这样一个模型,是因为在一些危险环境中,我们可以用机械臂来代替人工进行作业,从而避免人员的生命安全受到威胁。

你可能会问,为什么不直接使用远程的键盘控制、手柄控制或者APP控制,而要选择手动拖拽的方式呢?我觉得只有手动操作,才能最大程度上满足我们对动作精准度的需求。因此,我决定开始尝试制作这个模型,并初步完成了整个demo。

我希望,通过这个demo,我能向大家展示出机械臂的无限可能性,同时也希望能激发出大家对未来科技的无限憧憬。

机械臂设备

mechArm 270 M5

mechArm 270 是一款六自由度的机械臂,它精巧的结构设计,能够放入一个书包里,携带和方便。较为重要的一点是开放了很多控制的API,用python能够快速开始对机械臂的控制。没有很复杂的操作,甚至还有图形编程,这对一些不是很懂代码的人也能够快速上手控制机械臂。

mechArm是一款桌面型的仿工业结构的机械臂,工作最大半径在270mm,负载250g,重复定位精度控制在±0.5mm。

Project

 介绍完基础的设备,我们就开始介绍我时如何制作这个demo过程的记录。

使用的环境

操作系统:windows11

编程语言:python3.9+

python lib:pymycobot,time

pymycobot是大象机器人的一个开源库,专门用来控制大象机器人的机械臂。一段简单的控制代码例子。

Code:

#Main methods used#Create objects to communicate with the robotic arm.
MyCobot(serial,baud)
# angles control robot,
send_angles([list_angles],speed)
# coords control robot
send_coords([list_coords],speed,mode)Example:import time
from pymycobot.mycobot import MyCobot# create a object
mc = MyCobot("com7",115200)# angles control
mc.send_angles([0,0,0,0,0,0],100)
time.sleep(1)
mc.send_angles([90,90,90,90,90,90],100)
time.sleep(1)

简单介绍了下如何使用python来控制mechArm,是不是很容易呢。

分析问题

开始项目之前要搭建框架,了解我们具体需要解决什么问题才能够实现。对此我做了一个项目的流程图。下面我将手动施教的机械臂简称为R1,跟随运动的机械臂简称为R2。

Control robotic arm:上边已经提到了如何控制机械臂,使用pymycobot库提供的方法就可以实现了。

Motion Control methods:R1机械臂可以用手拖动,时时刻刻返回当前机械臂的角度信息,R2机械臂接收R1的机械臂角度信息进行控制。

Communication between robotic arms:整个项目中这一步骤是比较重要的一步。建立好之后,机械臂能够发送信息就能够很轻易的实现了。

接下来主要讲解Motion Control methods和communication between robotic arms。

Motion Control methods

  1. 获取实时角度信息

pymycobot提供了”get_angles()"方法可以过去当前机械臂的角度信息。

# Can obtain the current angle information of the robotic arm in real time
get_angles()# example
print("real-time angles:",mc.get_anlges())result: real-time angles:[0,0,0,0,0,0]# Continuously obtain the current angle
while True:
    angels = mc.get_angles()print(angles) 
    time.sleep(0.1) #Go to the next step every 0.1s

  1. 机械臂的刷新模式设置

机械臂的刷新模式:主要分为两种插补模式和非插补模式,是指在运动轨迹规划中,控制机械臂末端执行器的移动方式。如果没有设置任何模式,机械臂可能无法正确执行预期的运动,并且可能导致以下后果:

  1. 运动不平滑
  2. 运动不准确
  3. 运动不连续

插补模式:插补模式可以实现平滑连续的轨迹规划,确保机械臂末端执行器的位置和姿态在运动过程中平滑过渡。

非插补模式:非插补模式是指机械臂在运动过程中只关注特定的目标点,而不进行插值计算。在非插补模式下,机械臂的位置和姿态会在关键点之间直接跳跃,而不会经过平滑的过渡。

在进行多个机械臂同时使用插补模式进行运动时,可能会出现等待或排队的情况,所以我们选择使用非插补模式。

#Set refresh mode
set_fresh_mode(1/0) 
1:no interpolation
0:interpolationmc.set_fresh_mode(1)

我们将前面的整合在一起的代码如下

Code:

import time
from pymycobot.mycobot import MyCobotmc = MyCobot("COM7", 115200)    #release arm
mb = MyCobot("COM11", 115200)   #move armmb.set_fresh_mode(1)    #no interpolation
time.sleep(1)
mc.release_all_servos() #release robot
time.sleep(1)
speed = 100
while True:
    angles = mc.get_angles()    #get release arm angles
    mb.send_angles(angles, speed)   #send angles to move arm
    time.sleep(0.1)

Communication between robotic arms:

我们的方案是两台机械臂接入同一个PC,用串口连接的方式.

# build connection
from pymycobot.mycobot import MyCobotmc = MyCobot("COM7", 115200)   
mb = MyCobot("COM11", 115200)

用最基础的usb数据线进行连接,我们电脑上就有两个机械臂的串口号,可以对他们分别发送指令任务。

让我们一起来看看效果如何

总结

根据内容可以看出来虽然说是能够做到百分之七八十的同步。也会因为一些其他的因素所影响 ,造成了不小的延迟。造成延迟的原因可能有几个方面,比如说数据处理和传输的速度,机械臂的反应速度,软件的优化,硬件的性能等等,这些都是可能 产生延迟的因素。

除此之外,还有一个很大的局限性就是,它们的通信通过串口进行连接的,如果距离稍微远一点的话就没办法在用这种方法去使用,实用性不强,后期我会尝试使用蓝牙,WiFi等无限连接的方式来尝试控制。

本次记录就更新到这里,如果你有更好的想法,无论是优化的功能或者说是其他的建议欢迎在下方留言。

这篇关于开源六轴协作机械臂MechArm 拖动示教模型案例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/357632

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}