myCobot 280 2023机械臂全新功能,手柄控制、自干涉检测

news2024/12/25 9:33:26

引言

机械臂是一种可编程的、自动化的机械系统,它可以模拟人类的动作,完成各种任务,例如装配、喷涂、包装、搬运、焊接、研磨等。由于其高度灵活性和多功能性,机械臂在现代社会中已经得到了广泛的应用。

myCobot 280 M5Stack 2023是一款高性能桌面型机械臂,其强大的功能和多种新特性使其成为教育、科研和轻型制造等领域的理想选择。该机械臂不仅具备精准的运动控制和高效的工作能力,而且支持ROS2的环境适配、ps2手柄控制、自干涉碰撞等多种新功能,这些功能使得该机械臂更加智能、灵活和安全。本篇文章将详细介绍myCobot280 2023的新功能和应用场景,帮助读者深入了解这款机械臂的特点和优势,并探索如何在教育、科研和制造等领域中发挥其潜力。

myCobot280 2023简介

myCobot 280是一款轻量级桌面型机械臂产品,重量不到800克,可重复定位精度控制在0.5毫米以内,负载能力为250克,工作半径为280毫米。该机械臂具有丰富的接口,支持主流编程语言和环境,例如Python、C++、ROS1/2等。这使得它非常适合用于教育、科研、等领域。

新功能

myCobot 280 2023 具有以下新功能:

(如果您当前使用的是第一代myCobot 280,则可以升级固件以访问新功能。

● 提高通信速度和 ROS2 支持

● 自干扰碰撞和手柄控制

● 复合机器人及物流自动化研究

提高通信速度和 ROS2 支持

● myCobot 280 2023的通信速度比之前的版本提高了五倍,现在可以达到20ms。这种改进可以提高机械臂的响应能力,使控制更加灵敏,减少通信造成的事故。机器人的运动速度也更快,减少了事故的发生。

myCobot 280 2023 现在支持 ROS2 环境,它与 ROS1 有两个不同之处。首先,ROS2提高了实时性能,可以更精确地控制机器人的运动路径和速度。这适用于需要高实时性能的应用。其次,ROS2使用数据分发服务(DDS)协议,与ROS1相比,该协议提高了网络通信性能,使其在处理机器人控制命令和提高机器人响应速度方面更加高效。但是,ROS1已经在机器人领域得到了广泛的应用,并且具有相对完整的控制库和开发环境,使得开发和应用机器人相关软件变得容易。ROS2相对较新,在市场上的应用较少。因此,用户在选择控件开发环境时,需要考虑自己的具体需求和实际情况,选择最合适的一种。

● 自干涉碰撞和手柄控制

○ 自干涉碰撞:新添了一个自干涉碰撞功能,这个功能能使本体在发生关节碰撞的时候会立刻停止运动,不会继续运动下去导致机械臂出现掉电情况。这个功能可以有效避免机械臂在工作过程中出现异常情况导致的损坏,提高了机械臂的安全性和可靠性。

通过收集用户的反馈,已经研发人员对产品的期望,这项技术可以说是很大程度上解决了一个问题,在以往如果说强行让机械臂关节进行碰撞的话,整个机器就会执行掉电保护,需要重新上电恢复控制,给不少用户造成了麻烦。

目前这项技术并不开源,所以不能过多的揭晓其中的算法和原理。

● 还有一个游戏手柄控制功能,允许用户使用 PS2 游戏控制器控制机器人的运动和操作,还增加了对吸盘和夹具的控制。此功能简化了编程过程并改善了用户体验。句柄控制功能基于一组 Python 程序,引入 Pygame 库来设置控制器的密钥(相当于自定义句柄)。这是一个相对简单的项目,有兴趣的人可以在此基础上进一步开发。该项目是开源的,并在GitHub上共享。

def main():
 global action
    pygame.init()
    pygame.joystick.init()
 try:
        joystick = pygame.joystick.Joystick(0)
 except:
 print("Please connect the handle first.")
 return
    joystick.init()
    done = False
    start_time = 0
 while not done:
 for event_ in pygame.event.get():
 if event_.type == pygame.QUIT:
                done = True
 # 按键按下或弹起事件
 elif (
                event_.type == pygame.JOYBUTTONDOWN or event_.type == pygame.JOYBUTTONUP
 ):
                buttons = joystick.get_numbuttons()
 # 获取所有按键状态信息
 for i in range(buttons):
                    button = joystick.get_button(i)
 if i == 7:
 if button == 1:
                            action = 7
 break
 else:
                            action = 0
 if i == 1:
 if button == 1:
                            action = 11
 break
 if i == 0:
 if button == 1:
                            action = 10
 break
 if i == 3:
 if button == 1:
                            action = 9
 break
 if action == 9 and button == 0:
                            action = 0
 break
 if i == 2:
 if button == 1:
                            action = 8
 break
 if action == 8 and button == 0:
                            action = 0
 break
 if i == 4:
 if button == 1:
                            action = 18
                            start_time = time.time()
 break
 if start_time != 0 and button == 0:
 if time.time() - start_time > 2:
                                start_time = 0
 break
 else:
                                start_time = 0
                                action = 0
 if i == 5:
 if button == 1:
                            action = 21
                            start_time = time.time()
 break
 if start_time != 0 and button == 0:
 if time.time() - start_time > 2:
                                start_time = 0
 break
 else:
                                start_time = 0
                                action = 0
 # print("button " + str(i) + ": " + str(button))
 # 轴转动事件
 elif event_.type == pygame.JOYAXISMOTION:
                axes = joystick.get_numaxes()
 # 获取所有轴状态信息
 # while True:
 for i in range(axes):
                    axis = joystick.get_axis(i)
 # res[i] = axis
 if i == 1:
 if axis < -3.0517578125e-05:
                            action = 1
 break
 elif axis > -3.0517578125e-05:
                            action = 2
 break
 else:
                            action = 0
 if i == 0:
 if axis < 0:
                            action = 3
 break
 elif axis > 0:
                            action = 4
 break
 else:
                            action = 0
 if i == 2:
 if axis < 0:
                            action = 17
 break
 elif axis > 0:
                            action = 16
 break
 else:
                            action = 0
 if i == 3:
 if axis < -3.0517578125e-05:
                            action = 5
 break
 elif axis > -3.0517578125e-05:
                            action = 6
 break
 else:
                            action = 0
 if i == 4:
 if axis > 0.9:
                            action = 19
                            start_time = time.time()
 break
 if start_time != 0 and axis == -1.0:
 if time.time() - start_time > 2:
                                start_time = 0
 break
 else:
                                start_time = 0
                                action = 0
 if i == 5:
 if axis > 0.9:
                            action = 20
                            start_time = time.time()
 break
 if start_time != 0 and axis == -1.0:
 if time.time() - start_time > 2:
                                start_time = 0
 break
 else:
                                start_time = 0
                                action = 0
 # print("axis " + str(i) + ": " + str(axis))
 # 方向键改变事件
 elif event_.type == pygame.JOYHATMOTION:
 # hats = joystick.get_numhats()
 # 获取所有方向键状态信息
 # for i in range(hats):
                hat = joystick.get_hat(0)
 # print("hat " + str(i) +": " + str(hat))
 if hat == (0, 1):
                    action = 12
 elif hat == (0, -1):
                    action = 13
 elif hat == (-1, 0):
                    action = 14
 elif hat == (1, 0):
                    action = 15
 elif hat == (0, 0):
                    action = 0
    pygame.quit()

复制

复制

是一个相对比较简单的项目,如果有兴趣的话可以在次基础上进行再次的开发。

项目是开源的已经分享在GitHub,links:

pymycobot/demo/handle_control at main · elephantrobotics/pymycobot · GitHub

复合机器人与物流自动化研究

● myCobot 280 2023还可以与由树莓派4B控制的SLAM雷达车myAGV组合,形成一个复合机器人,可以学习和研究物流自动化、导航和其他功能。此功能使机器人在处理不同的场景和任务时更加灵活多才多艺,提高了其综合应用能力。

● myAGV:关于车辆,hackster网站上有很多介绍文章,一些开发者使用myAGV和myCobot 280来实现一些项目。

总结

总的来说,myCobot 280 2023是一款具有多种新功能和改进的机械臂,大大增强了其性能和应用范围。除了提升通信速度、支持 ROS2、避免自干扰碰撞外,我们还推出了 AI Kit 2023,将机器视觉与机械臂相结合,实现类似工业的自动化场景,让机械臂的应用更加广泛和多样化。

此外,myCobot 280 2023 还有许多其他功能等着你去探索,比如绘图、AI分拣抓取等,这将进一步拓展机械臂的应用范围和创新。如果您有更好的项目和想法,请随时与我们分享。我们非常乐意听取您的建议,为您提供更好的服务。

如果您有任何其他问题或疑虑,请随时与我们联系。我们很乐意为您提供帮助。

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

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

相关文章

在服务器部署前后端分离的项目(前后都有), 并使用nginx配置跨域

怎样部署自己的项目呢 先准备一个服务器(小系统最便宜的轻量级服务器就行, 如果不需要给人访问的话)安装宝塔面板 (宝塔面板, 可视化界面, 操作简单, 使用非常方便, 上手也很容易, 如果只是学习, 虚拟机也行没必要花钱, 我使用的CentOS7系统,安装宝塔面板)软件: MySQL, Tomcat…

【问题记录】多线程环境下,使用 std::cout 输出内容会显示混乱

环境 Windows 11 家庭中文版Microsoft Visual Studio Community 2022 (64 位) - Current 版本 17.5.3 测试代码 #include <iostream> #include <Windows.h>//创建的线程数量 #define THREAD_COUNT 4DWORD WINAPI ThreadProc(LPVOID lpParam) {UNREFERENCED_P…

JS事件监听

目录 事件监听 事件监听案例 事件监听 事件&#xff1a;HTML事件是发生在HTML元素上的“事情” 按钮点击鼠标移动到元素上按下键盘按键事件监听&#xff1a;JS可以在事件被检测到时执行代码事件绑定 方法一&#xff1a;通过HTML标签中的事件属性进行绑定 <input type"…

在windows环境下安装支持CUDA的opencv-python

文章目录 附件&#xff1a;GPU和CUDA的关系 —— 开发人员通过CUDA可以使用GPU的计算能力来加速各种计算任务&#xff0c;并提高计算性能和效率。一、环境配置&#xff08;0&#xff09;我的电脑配置环境&#xff08;1&#xff09;CUDA cuDNN下载与安装&#xff08;2&#xff…

【云原生、Kubernetes】Kubernetes核心概念理解

首先我们要掌握 Kubernete 的一些核心概念。 这些核心可以帮助我们更好的理解 Kubernetes 的特性和工作机制。 集群组件 首先&#xff0c;Kubernetes 集群中包含2类节点&#xff0c;分别是&#xff1a;master控制节点和node工作节点。 master 控制节点 负责管理整个集群系统…

【手撕算法|动态规划系列No.4】leetcode91. 解码方法

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

软件测试:系统测试

1 系统测试的概念 系统测试&#xff08;System Testing&#xff09;的定义&#xff1a;将已经集成好的软件系统&#xff0c;作为整个基于计算机系统的一个元素&#xff0c;与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起&#xff0c;在实际运行&#…

HDLBits刷题笔记8:Circuits.Sequential Logic.Latches and Flip-Flops

D flip-flop module top_module (input clk,input d,output reg q );always (posedge clk)q < d; endmoduleD flip-flops 建立一个8bit的D触发器 module top_module (input clk,input [7:0] d,output reg [7:0] q );always (posedge clk)q < d; endmoduleDFF with res…

GDAL 图像直方图统计

文章目录 一、简介二、实现代码三、实现效果参考资料 一、简介 这里使用一种简单的方式来计算图像中的像素值直方图分布。计算过程如下所述&#xff1a; 第一种方式&#xff1a; 1、首先将图像变为一维数组&#xff08;reshape&#xff09;&#xff0c;并将数组中的数值进行排序…

vue点击盒子一步一步滚动

vue点击盒子一步一步滚动 HTML <div class"course_detail"><div class"arrow" v-if"index 0" click"step"></div><div class"lightArrow" v-else click"step"></div><div clas…

自定义的车牌号键盘组件

<template><view class"keyboard-wrap" v-if"kbShow"><view class"head"><view class"done" tap"done"><text class"iconfont iconxiala-"></text>关闭</view></vi…

2. 注册platform

这里先分析platform 对应的dts内容如下 i2s0_8ch: i2sff800000 {compatible "rockchip,rv1126-i2s-tdm";reg <0xff800000 0x1000>;interrupts <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;clocks <&cru MCLK_I2S0_TX>, <&cru MCLK_I2S0_RX&g…

JAVA开发( 腾讯云消息队列 RocketMQ使用总结 )

一、问题背景 之所以需要不停的总结是因为在java开发过程中使用到中间件实在太多了&#xff0c;久久不用就会慢慢变得生疏&#xff0c;有时候一个中间很久没使用&#xff0c;可能经过了很多版本的迭代&#xff0c;使用起来又有区别。所以还是得不断总结更新。最近博主就是在使用…

睿铂相机同步性控制技术解析

极客睿铂 前几期睿铂给大家分享了一些倾斜相机背后的技术&#xff0c;主要都是的关于镜头光学方面的。但实际上倾斜摄影相机还有很多其他关键性技术有待突破&#xff0c;任何技术的发展都不能一蹴而就&#xff0c;需要根据客户的问题反馈&#xff0c;发现新的问题并解决问题&a…

自定义MVC架构【下】

目录 一、前言 二、导出自定义MVC架包 三、使用自定义MVC架包 四、优化增删改查Dao层及Servlet 1.优化增删改查Dao层 2.优化增删改查Servlet代码 五、案例实操 1.将PageTag自定义标签进行配置 2.jsp页面环境搭建 3.案例演示 一、前言 在上篇中&#xff0c;我们已经优化…

ARM架构(寄存器点灯)

文章目录 前言一、LED原理图二、使用寄存器点灯的步骤三、如何操作寄存器四、实际操作1.使能GPIO端口2.将引脚设置为输出模式3.设置输出状态 五、全部代码总结 前言 本篇文章我们来讲解一下如何使用寄存器点亮一个LED灯&#xff0c;一般对于新人来说都是使用HAL库或者标准库来…

SpringBoot3【④ 基础特性】

1. SpringApplication 1.1. 自定义 banner 类路径添加banner.txt或设置spring.banner.location就可以定制 banner推荐网站&#xff1a;Spring Boot banner 在线生成工具&#xff0c;制作下载英文 banner.txt&#xff0c;修改替换 banner.txt 文字实现自定义&#xff0c;个性化…

操作系统面试知识点

1、进程、线程和协程的区别和联系 1、进程是资源调度的基本单位&#xff0c;运行一个可执行程序会创建一个或多个进程&#xff0c;进程就是运行起来的可执行程序 2、线程是程序执行的基本单位&#xff0c;是轻量级的进程。每个进程中都有唯一的主线程&#xff0c;且只能有一个…

机器学习第三课(sklearn接口)

一、sklearn基本知识 中文官网 英文官网 注意&#xff1a;sklearn第三方模块的安装 要用pip install scikit-learn from sklearn.neighbors import KNeighborsClassifier # 1 准备数据 # 训练集的特征数据 2维 x [[-2],[-1],[2],[3],[4]] # 训练集的目标数据 1维 y [0,0,1,…

HTML培训心得体会五篇(合集)

HTML5培训心得一 关于html5培训心得总结? 一&#xff1a;了解HTML5前端开发技术? ?? HTML?指的是超文本标记语言?(Hyper?Text?Markup?Language)&#xff0c;标记语言是一套标记标签?(markup?tag)&#xff0c;HTML?使用标记标签来描述网页。HTML5区别于HTML的标…