结合大象机器人六轴协作机械臂myCobot 280 ,解决特定的自动化任务和挑战!(上)

项目简介

本项目致力于探索和实现一种高度集成的机器人系统,旨在通过结合现代机器人操作系统(ROS)和先进的硬件组件,解决特定的自动化任务和挑战。一部分是基于Jetson Orin主板的LIMO PPRO SLAM雷达小车,它具备自主导航、地图构建和路径规划的能力;另一部分是Mycobot 280 M5机械臂,这是一个具有六自由度、工作半径280mm的紧凑型机械臂,能够进行精确的物品搬运和操作。

通过将这两部分紧密集成,我们创建了一个能够执行复杂任务的复合机器人系统,如自动化物品传送、环境监测、以及其他需要高度自主性和操作灵活性的应用场景。

项目的开发过程中,我们深入探讨了ROS的强大功能,包括但不限于使用move_base实现的自主导航,以及gmappping_ros进行的实时SLAM(同时定位与地图构建).还涉及到机械臂的控制和计算机视觉技术的应用,用于物体识别和环境感知,从而提高机器人的操作智能和适应性。

项目希望能够为技术爱好者、教育工作者和研究人员提供一个实用的参考,激发更多的创新思路和应用探索。

技术和硬件概述

myCobot 280 M5Stack

myCobot 280 是由Elephant Robotics 开发的6自由度的协作形机械臂,设计灵活且功能强大,特别适合用于教育,研究等场景。

myCobot 280 M5支持多种编程和控制方式,适用于各种操作系统和编程语言,包括:

主控和辅控芯片:ESP32

性能:工作半径280mm,

支持蓝牙(2.4G/5G)和无线(2.4G 3D Antenna)

多种输入和输出端口

支持自由移动、关节运动、笛卡尔运动、轨迹录制和无线控制

兼容操作系统:Windows、Linux、MAC

支持编程语言:Python、C++、C#、JavaScript

支持编程平台和工具:RoboFlow、myblockly、Mind+、UiFlow、Arduino、mystudio

支持通信协议:串口控制协议、TCP/IP、MODBUS 

这些特性使myCobot 280 M5成为一个多功能、易于使用且适用于多种应用场景的机器人解决方案。

LIMO Pro

松灵机器人LIMO代表了移动机器人领域的一项创新,将灵活性和强大的功能集成于一个紧凑的平台之中。它是专为机器人教育、功能研发及产品开发而设计的全球首款ROS开发平台,能够适应更广泛的场景并满足行业应用的需求。以下是对Limo Pro硬件和技术特性的详细概述:

运动模态

  • 四轮差速- 阿克曼转向- 履带型移动- 麦克纳姆轮移动

场景适用性

  • 适用于多种实拟教学和测试环境- 从室内平整地面到复杂地形均能灵活应对

处理器

  • NVIDIA Jetson Orin Nano

传感器配置

  • EAI Tmini Pro激光雷达 - 深度相机

主要功能

  • 精确的自主定位 - SLAM建图 - 路线规划 - 自主避障 - 自主倒车入库 - 红绿灯识别

LIMO利用激光雷达和深度相机进行环境感知,结合NVIDIA Jetson Orin Nano的强大计算能力,实现高精度的SLAM建图和自主导航。LIMO不仅作为移动平台执行复杂的导航和搬运任务,其多模态移动能力也大大增强了机器人系统的适用范围和灵活性。结合Mycobot 280 M5机械臂,LIMO为自动化应用提供了一个高效、可靠的解决方案,无论是在机器人教育、研发还是产品开发领域,都展现出了巨大的潜力和价值。

软件架构

软件架构主要分为:导航和建图,目标检测,机械臂控制,以及系统集成和通信。这些部分通过ROS(robot operating system)框架进行整合,利用ROS的通信机制(话题,服务,动作)实现模块间的交互。

ros的通信方式

下图是整个项目的软件架构图,我们来一起来介绍一下具体的功能。

整体主要分为三个模块,一个是LIMO PRO的功能,二是机器视觉功能处理,三是机械臂的功能。

LIMO PRO Function

Gmapping:

Gmapping是基于滤波SLAM框架的常用开源SLAM算法。Gmapping有效利用了车轮里程计信息,对激光雷达的频率要求不高,在构建小场景地图时,所需的计算量较小且精度较高.

建了地图之后就可以在地图上进行定位导航了,这一部分的功能主要运用到机器人定位和路径规划,ROS提供了一下两个功能包:

(1)move_base:实现机器人导航中的最优路径规划。

(2)amcl:实现二维地图中的机器人定位。

在上述的两个功能包的基础上,ROS提供了一套完整的导航框架.

机器人只需要发布必要的传感器信息和导航的目标位置,ROS即可完成导航功能。在该框架中,move_base功能包提供导航的主要运行、交互接口。为了保障导航路径的准确性,机器人还要对自己所处的位置进行精确定位,这部分功能由amcl功能包实现。

在导航的过程中,运用了两种算法DWA和TEB算法,这两种算法分别处理全局路径和局部路径规划,来保证小车能够安全的前进到目的地,避免与障碍物发生碰撞。

myCobot 280 Function

ROS主要支持python和C++两种编程语言。机械臂的控制主要是基于python当中的pymycobot API 库。 这个功能很全面的提供了mycobot 280 的控制方法,下面主要介绍几个常用的方法:

pymycobot API:

下面的两个方法能够控制机械臂关节的角度来控制机械臂运动,能单独控制某个关节的角度,也能够控制全部关节的角度来运动。

send_angle(id,angle,speed)
send_angles(angle_list,speed,mode)

对于要执行一些抓去运动来说,角度的控制是远远不够大的,所以pymycobot还提供了坐标控制,能够控制机械臂末端在空间上的运动。

send_coord(id,coord,speed)
send_coords(coords, speed, mode)

同样是两个控制方法第一个可以单个控制机械臂末端X,Y,Z,RX,RY,RZ方向的姿态,这样可以控制末端机械臂的坐标可以更方便我们做一些抓取的动作。

pymycobot是其中的一种控制方式,比较方便使用。还有一种控制方式是基于ROS框架里边的MoveIt,它是一个功能强大大的机器人运动规划框架,包括路径规划,运动控制,碰撞检测,运动学计算等等。下面是一个在MoveIt当中的演示。

Target Detection

vision_opencv - ROS Wiki

此外我们还要对视觉进行处理,在ROS中,opencv_ros和image_transport是处理图像数据的重要工具和库,它们在机器人视觉系统和图像处理中扮演着关键角色。

实际上,是使用‘cv_bridge’提供了ROS 和OpenCV之间的接口,cv_bridge允许在ROS消息和OpenCV图像格式之间进行转换,从而可以在ROS框架中使用OpenCV进行图像处理。

在ROS中使用OpenCV时,图像数据通常是作为ROS消息通过话题发布和订阅的,因此需要使用cv_bridge来转换数据格式。下面是一个简单的示例,展示了如何在ROS节点中订阅图像话题,并使用OpenCV对图像进行处理:

import rospy
from sensor_msgs.msg import Image
from cv_bridge import CvBridge, CvBridgeError
import cv2def image_callback(msg):try:# Convert ROS image messages to OpenCV image formatcv_image = bridge.imgmsg_to_cv2(msg, "bgr8")except CvBridgeError as e:print(e)# Process the image, such as converting it to grayscalegray = cv2.cvtColor(cv_image, cv2.COLOR_BGR2GRAY)# display imagecv2.imshow("Image window", gray)cv2.waitKey(3)# Initialize ROS node
rospy.init_node('image_listener')# create CvBridge
bridge = CvBridge()# Subscribe to image topics
image_sub = rospy.Subscriber("/camera/rgb/image_raw", Image, image_callback)# Entering the ROS event loop
rospy.spin()

虽然在ROS环境中使用OpenCV进行图像处理引入了数据格式转换和节点通信的额外步骤,但这种方式也带来了更高的模块化和系统集成的灵活性,使得图像处理能够更加方便地与机器人的其他系统和功能集成。

场景介绍

该项目旨在实现一个继承的自动动画系统,其中包括一个LIMO pro 和 一个mycobot 280 M5。系统设计使得Limo Pro能够自主导航至指定位置,到达后,Mycobot 280 M5机械臂执行抓取任务,完成后再返回到起始点或另一个特定位置。

项目流程

  1. 启动与初始化
    1. 系统启动时,先进行自检,包括Limo Pro的导航系统和Mycobot 280 M5机械臂的功能检查。
  2. 导航至目标点
    1. 利用Limo Pro上的SLAM技术和导航算法,根据预设或动态输入的坐标,规划一条到达目标点的最优路径。
    2. Limo Pro自主避开障碍物,沿着规划的路径移动至目标点。
  3. 执行抓取任务
    1. 到达目标点后,使用Limo Pro上的传感器定位目标物体。
    2. Mycobot 280 M5机械臂根据目标物体的位置,执行抓取动作。这一步骤可能涉及精确的运动规划,确保抓取成功。
  4. 返回特定位置
    1. 完成抓取任务后,Limo Pro再次规划路径,返回到起始点或移动至另一个指定的位置,以进行物品交付或完成任务。

总结

本系列文章被划分为两个部分:首篇文章主要介绍了项目的概念设计、系统架构以及关键组件的选择,为读者提供了一个全面的项目概览和技术背景。接下来的文章将深入探讨项目的技术细节,包括软件架构的构建、关键技术的应用、系统调试过程以及在开发过程中遇到的挑战和解决方案。

在下一篇文章中,我们将正式进入项目的技术内核,分享实际的编码实践、调试技巧以及面对项目挑战时的思考和解决策略。敬请期待下篇文章,我们将一起深入这个集成自主导航和机械操作的机器人项目,探索技术的深度与广度。

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

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

相关文章

2.Rust变量

变量的声明 let关键字 在Rust中变量必须要先声明才能使用,let关键字用于声明变量并将一个值绑定到该变量上。如下: fn main() {let var_name:i32 123123;println!("{}",var_name) //println! 是一个宏(macros),可以…

C#与欧姆龙PLC实现CIP通讯

参考文档: 欧姆龙PLC使用-CSDN博客 CIP通讯介绍(欧姆龙PLC)-CSDN博客 使用NuGet添加引用:CIPCompolet 基础参考我的CIP协议介绍,默认TCP端口为:44818 类NXCompolet 类的功能可以在安装PLC开发软件后帮…

【Transformer】single self-attention的理解与计算步骤

参考B站Enzo_Mi老师 【self-Attention|自注意力机制 |位置编码 | 理论 代码】https://www.bilibili.com/video/BV1qo4y1F7Ep?vd_source19425b683f74eeac34bde8ddf968a0d6 建议大家去看老师的原视频,讲解非常清晰,这里…

类和对象-继承

师从黑马程序员 基本语法 有些类与类之间存在特殊的关系,例如: 定义这些类时,下一级别的成员除了拥有上一级的共性,还有自己的特性。 这时候我们就可以考虑继承技术,减少重复代码 语法:class 子类&…

【鸿蒙 HarmonyOS 4.0】应用状态:LocalStorage/AppStorage/PersistentStorage

一、介绍 如果要实现应用级的,或者多个页面的状态数据共享,就需要用到应用级别的状态管理的概念。 LocalStorage:页面级UI状态存储,通常用于UIAbility内、页面间的状态共享。AppStorage:特殊的单例LocalStorage对象&…

Android Studio下载gradle超时问题解决

方法一 1. 配置根目录的setting.gradle.kts文件 pluginManagement {repositories {maven { urluri ("https://www.jitpack.io")}maven { urluri ("https://maven.aliyun.com/repository/releases")}maven { urluri ("https://maven.aliyun.com/repos…

【Pytorch、torchvision、CUDA 各个版本对应关系以及安装指令】

Pytorch、torchvision、CUDA 各个版本对应关系以及安装指令 1、名词解释 1.1 CUDA CUDA(Compute Unified Device Architecture)是由NVIDIA开发的用于并行计算的平台和编程模型。CUDA旨在利用NVIDIA GPU(图形处理单元)的强大计算…

SpringCloudGateway全局过滤器

文章目录 全局过滤器的作用自定义全局过滤器过滤器执行的顺序 上一篇 Gateway理论与实践 介绍的过滤器,网关提供了31种,但每一种过滤器的作用都是固定的。如果我们希望拦截请求,做自己的业务逻辑则没办法实现。 全局过滤器的作用 全局过滤器的…

App前端开发跨平台框架比较:React Native、Flutter、Xamarin等

引言 移动应用开发领域的跨平台框架正在不断演进,为开发者提供更多选择。在本文中,我们将比较几个流行的跨平台框架:React Native、Flutter和Xamarin等。讨论它们的优缺点、适用场景以及开发体验。 第一部分 React Native: 优缺点、适用场景…

大模型时代下的自动驾驶研发测试工具链-SimCycle

前言: 最近OpenAI公司的新产品Sora的发布,正式掀起了AI在视频创作相关行业的革新浪潮,AI不再仅限于文本、语音和图像,而直接可以完成视频的生成,这是AI发展历程中的又一座重要的里程碑。AI正在不断席卷着过去与我们息…

接口自动化框架(Pytest+request+Allure)

前言: 接口自动化是指模拟程序接口层面的自动化,由于接口不易变更,维护成本更小,所以深受各大公司的喜爱。 接口自动化包含2个部分,功能性的接口自动化测试和并发接口自动化测试。 本次文章着重介绍第一种&#xff0c…

python学习the sixth day

python函数进阶 一、函数多返回值 二、函数的多种参数使用 1.位置参数 2.关键字参数 3.缺省参数 设置默认值,必须放在最后面 4.不定长参数 4.总结 三、匿名函数 1.函数作为参数传递 这是计算逻辑的传递,而非数据的传递 2.lambda匿名函数 python文件操…

【vue.js】文档解读【day 3】 | 条件渲染

如果阅读有疑问的话,欢迎评论或私信!! 文章目录 条件渲染前言:v-ifv-elsev-else-iftemplate中的v-ifv-showv-if vs v-show 条件渲染 前言: 在JavaScript中,我们知道条件控制语句可以控制程序的走向&#…

ReactNative项目构建分析与思考之react-native-gradle-plugin

前一段时间由于业务需要,接触了下React Native相关的知识,以一个Android开发者的视角,对React Native 项目组织和构建流程有了一些粗浅的认识,同时也对RN混合开发项目如何搭建又了一点小小的思考。 RN环境搭建 RN文档提供了两种…

阿珊详解Vue Router的守卫机制

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

用一个 Python 脚本实现依次运行其他多个带 argparse 命令行参数的 .py 文件

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 问题描述:在 Windows 环境中,您希望通过一个 Python 脚本来实现特定的自动化任务,该任务需要依次运行其他多个带 argparse 命令行参数的 .py 文件。您希望找到一种简…

CXYGZL实现钉钉、飞书和微信全面覆盖!!!

非常欣慰能在这里与大家分享,CXYGZL已圆满实现多端互通的目标!!! 无论您是在手机、电脑还是平板上使用钉钉、企微还是飞书,只需将CXYGZL轻松集成到您的办公软件中,即可实现无缝审批处理各项任务&#xff0c…

计算机找不到msvcr120.dll的五种修复方法,轻松搞定msvcr120.dll丢失问题

当计算机系统中msvcr120.dll文件丢失时,可能会引发一系列运行问题和故障现象。msvcr120.dll是Microsoft Visual C Redistributable Package的一部分,对于许多Windows应用程序的正常运行至关重要。由于msvcr120.dll是许多软件在运行过程中依赖的重要动态链…

Java项目:44 ssm003在线医疗服务系统+jsp(含文档)

作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 主要功能 前台登录: 注册用户:用户名、密码、姓名、联系电话 注册医生:医生工号、密码、医生姓名、职称、…

idea:springboot项目搭建

目录 一、创建项目 1、File → New → Project 2、Spring Initializr → Next 3、填写信息 → Next 4、web → Spring Web → Next 5、填写信息 → Finish 6、处理配置不合理内容 7、注意事项 7.1 有依赖包,却显示找不到依赖,刷新一下maven 7.…