大象机器人myCobot 280 2023版全新功能展示

news2024/11/22 15:02:50

引言

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

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:

https://github.com/elephantrobotics/pymycobot/tree/main/demo/handle_control

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

● 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/725865.html

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

相关文章

项目需求管理

项目需求管理的五大过程 一、需求获取 编写项目视图 范围文档 用户群分类 选择用户代表 建立核心队伍 确定使用实例 召开联合会议 分析用户工作流程、 确定质量属性、 检查问题报告 需求重用 二、需求分析 1、绘制关联图&#xff0c;用于定义系统与系统外部实体间的边界和接口的…

多个六轴机械臂联合作业搬运仿真(机器人工具箱)

1、建立三个六轴机械臂、工作平台与货物 clear clc close all % theta d a alpha sigma L1Link([0 0 0 pi/2 0 ]);%连杆1参数 L2Link([0 -0.1455 0.4375 0 0 ]);L2.offsetpi/2;%连杆2参数 L3Link(…

Playwright自动化测试工具 java版本

Playwright 第一个程序 public static void main(String[] args) {Playwright playwright Playwright.create(); // Browser browser playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false));BrowserType.LaunchOptions launchOptions …

nginx+lua(openresty) lua-mongodb 安装及使用(四)

前言 前章已经讲述 ua-protobuf 安装及使用 这章主要讲述 openresty 环境下 lua-mongodb 安装及使用 1:环境 ubuntu16(18) mongodb 3.6 2:安装mongodb 3.6 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 #创…

MySQL的初步认识——【初识MySQL】第一节

MySQL的初步认识——【初识MySQL】第一节 文章目录 MySQL的初步认识——【初识MySQL】第一节MySQL简介简介版本MySQL 5.5MySQL 5.6MySQL 5.7MySQL 8.0 安装建议 MySQL的卸载补充操作详情 小技巧 MySQL5.7.17的下载教训 MySQL简介 简介 MySQL是一个开源的关系型数据库管理系统…

【MongoDB】

目录 MongoDB基本简介 MongoDB基本概念 MongoDB和关系数据库的对比 MongoDB数据类型 MongoDB元素命名规则 MongoDB安装部署 MongoDB配置管理 MongoDB服务管理 MongoDB 多实例配置 基本操作 集合 数据备份与恢复 MongoDB复制集集群部署及管理 MongoDB复制集ReplSe…

[PG]生成表注释SQL

由于PostgreSQL无论是表还是字段的注释是通过 comment on语句来处理的。 可通过如下语句生成表的注释SQL执行语句&#xff1a; SELECT CONCAT(COMMENT ON , "type", 模式., "name", IS ", "comment", ";) AS "comment_sql&q…

软考:中级软件设计师:存储管理,分区存储,页式存储,逻辑地址,物理地址

软考&#xff1a;中级软件设计师:存储管理&#xff0c;分区存储 提示&#xff1a;系列被面试官问的问题&#xff0c;我自己当时不会&#xff0c;所以下来自己复盘一下&#xff0c;认真学习和总结&#xff0c;以应对未来更多的可能性 关于互联网大厂的笔试面试&#xff0c;都是…

idea 启动项目 java: Compilation failed: internal java compiler error

1. 首先查看 项目的 编译的 JDK 版本是否是 匹配了或匹配的 2. 堆分配的内存不足导致&#xff0c;如下图位置 堆 构建程序的 堆大小调大

JMeter分布式压测连接Jenkins生成HTML报告时候报错No such file or directory

JMeter-master机器上没有该文件。从官网下载的JMeter都会有该文件&#xff0c;添加进去即可。

C++罕见的纯虚函数调用异常(_purecall abort)

现象 笔者最近遇到了一个诡异的BUG&#xff0c;析构函数执行期间crash&#xff08;VS2022调试器下表现为abort&#xff09;&#xff0c;调用堆栈最后一级是调用虚函数&#xff0c;所有指针变量正常。 更深层的原因和特征隐藏在虚函数表中。abort发生时&#xff0c;虚函数表中…

LNMP架构及部署、skyuc电影网站部署

目录 一、安装nginx 1、关闭防火墙 2.创建管理nginx用户 3.配置nginx 4.命令优化 5.创建nginx脚本 二、安装mysql数据库 三、安装PHP 1.上传php安装包 2.上传 zend-loader-hph5.6 3.创建用户 四、LNMP平台中部署skyuc电影网站 1.解压 SKYUC.v3.4.2.srouce 2.创建数据…

TCP的3次握手和4次挥手

一、3次握手、4次挥手的简单描述 1、3次握手 三次握手&#xff08;Three-way Handshake&#xff09;指建立一个TCP连接时&#xff0c;需要客户端和服务器总共发送3个包。流程简单描述如下图所示&#xff1a; 在socket编程中&#xff0c;客户端执行connect()时&#xff0c;将触…

仿苹果鼠标滚轮控制 文字渐入 淡出效果

废话不多说&#xff0c;上代码&#xff0c;纯jscss3 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport&…

测试服务器CPU情况

要查看服务器的CPU情况&#xff0c;你可以使用 TOP 命令结合一些选项来执行相应的测试top 命令&#xff1a;运行 top 命令可以实时监视系统的各个进程和 CPU 使用情况在 top 命令的输出中&#xff0c;有几个重要的指标参数可以帮助你了解系统的 CPU 使用情况和进程信息。以下是…

2023.07.05java面试总结

1、springboot 怎么创建新的对象 2、sprintboot 怎么引用第三方类 3、list set map 区别 4、jvm常用配置 5、list怎么排序&#xff0c;怎么按多个字段排序 6、io怎么读取文件 7、angular现在使用什么版本&#xff0c;angular入口 项目结构 8、promise用法 9、和equals …

c++11 标准模板(STL)(std::basic_ostream)(七)

定义于头文件 <ostream> template< class CharT, class Traits std::char_traits<CharT> > class basic_ostream : virtual public std::basic_ios<CharT, Traits> 类模板 basic_ostream 提供字符流上的高层输出操作。受支持操作包含有格式…

安信可蓝牙PB-02 SDK二次开发记录

目录 1.开发环境 & 烧录调试2.例程踩坑(1).编译烧录 watchdog 例程 1.开发环境 & 烧录调试 详细参考下面两篇教程 【安信可PB-01/02模组专题①】PB-01/02模组开发板应用- BLE-UART固件的使用教程 【安信可PB-01/02模组专题③】PB-01/02模组开发板应用-快速入门SDK二次…

代码随想录算法训练营第十天 | 二叉树系列1

二叉树系列1 二叉树理论基础注意点小记二叉树的种类二叉树的存储方式二叉树的遍历 要熟悉自己所用编程语言常用的数据容器的底层实现一定要会自己实现所用数据结构的定义 二叉树的递归遍历递归三部曲前中后序递归遍历前序遍历--我的代码前序遍历--代码随想录的代码中序遍历--我…

【解决】Pyinstaller打包报错IndexError: tuple index out of range

问题 这个问题主要是在Python3.7以上的版本中遇到&#xff0c;用pyinstaller打包的时候发现报错 /usr/local/lib/python3.10/dis.py argval const_list[const_index], IndexError: tuple index out of range解决方案 vim 进入报错的文件&#xff0c;/usr/local/lib/python…