双臂复合机器人平台叠方块例程使用与自启设置

2024-04-19 20:12

本文主要是介绍双臂复合机器人平台叠方块例程使用与自启设置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        睿尔曼双臂升降复合机器人平台,旨在为机器人教育提供强大的实训平台,该平台全自主研发,实现机器人建图导航、路径规划,机械臂运动学、动力学、轨迹规划、视觉识别等算法和应用,提供开放式的软件框架,为教学和科研提供平台支撑。

        平台集成了移动底盘、深度视觉、语音模块、超轻量仿人机械臂、五指灵巧手、两指夹爪等各种仿人功能设备。同时在移动底盘上安装了超声波、激光雷达、视觉传感器,使该平台变得更加安全、智能。该教育平台主要应用于教育教学,因此需要提供尽可能多的学习资源、方便的使用软件、开放式的二次开发接口。

        睿尔曼双臂升降复合机器人平台中内置了一个方块堆叠例程,主要内容位于“ws_ross_dual”和“catkin_ws”这两个文件夹中。本文将为您介绍这一例程的使用方法。

1.启动设置

        若想要开机即运行本例程,请在系统应用程序的“启动应用程序首选项”中添加本例程的启动脚本:dual_robot.sh 。如图1所示:

图 1 添加例程开机自启

若不采用开机自启,而是手动输入命令运行,以下提供两个方案:

方案一:运行一键启动脚本:

打印aruco码:(可从以下网址下载)

https://chev.me/arucogen/

参数要求:Original ArUc,  ID:582,Marker size:200mm

图2:下载aruco码并原大小打印

        打印完成后。将aruco码放置于双臂升降复合机器人正前方65cm处,即可自动完成识别调整。打开一个新终端:

①cd ~/ws_ross_dual/self_start    //进入脚本所在路径

②./dual_robot.sh                 //运行一键启动脚本

如此便完成了例程的启动。

方案二:分别启动服务初始化脚本和运动行为执行脚本:

打开一个新终端:

①cd ~/ws_ross_dual/self_start    //进入脚本所在路径

②./dual_robot_single.sh          //运行服务初始化脚本

再打开一个新终端:

cd ~/ws_ross_dual/ update_bt_tree_config

./ build_block.sh               //运行运动行为执行脚本

        执行以上步骤后,本例程便开始运行,控制双臂升降复合机器人平台执行对物体方块的自动识别抓取-堆叠-分拆堆放的操作。

2.例程启动流程介绍

        在上文中提供了两种命令行运行例程的方案,二者在启动的功能上略有不同。

       一键启动(运行dual_robot.sh)的方案启动了三个主要功能模块:

①all_server.launch:此launch文件中包含了机械臂的运动服务初始化,分别启用了双臂复合机器人的左右臂MoveJ和MoveJ_P控制服务。在后续执行抓取时,将通过ROS的服务通讯来调用双臂的运动功能,驱动机械臂按照规划进行抓取。调用本例程中的方块识别模型(基于yolov5),再经由target_detect_ser节点转换识别坐标为机械臂抓取目标。

②adjust.launch:此launch文件位于catkin_ws这一工作空间下。其作用为调用realsense相机识别aruco码获取摄像头与桌面的高度距离,再调用上一步启动的服务来控制升降机构调整机械臂与桌面的高度差,使得双臂升降复合机器人平台的这一例程能够适用于不同高度的桌面。此功能模块的节点在运行一段时间后将被关闭,以解除对摄像头的占用,使后续的方块识别能够正常进行。

③build_block.sh:此脚本文件运行了run_tree.launch,运行例程的预设行为树。此后行为树便会循环执行,控制例程的所有动作和行为有序进行。

        分别启动服务初始化脚本和运动行为执行脚本的方案与上述一键启动方案启动的功能基本相同,但少了adjust.launch调节升降高度的功能。因为桌面高度通常不会一直更换,只需执行一次即可一直使用这一高度来运行。因此若桌面高度无变化,可省略这一步骤,在初始化基础服务后直接开始执行行为树。

3. 例程行为逻辑

        本例程的所有运动行为均由行为树控制调用,例程执行的行为树文件位于“ws_ross_dual/src/dual_bt_main/config”文件夹中,文件名为“build_block.xml”。其执行时,双臂升降复合机器人将执行以下的动作:

①初始化动作:控制双臂向两侧伸展,并调整姿态使之能够便捷地执行抓取。在此动作下,双臂均不在摄像头的视野内,不会发生遮挡,便于方块的识别。这一状态时双臂升降复合机器人平台外观如图3:

图3:运动到初始化动作的双臂升降机器人

②左臂抓取堆放:识别左侧方块,获取方块空间坐标后控制左臂

进行抓取,而后移至中间堆叠。如图4所示:

图4:左臂抓取方块堆叠

③右臂抓取传递,左臂堆叠:右臂根据识别到的右侧方块位置坐标进行抓取,而且通过传递动作将方块递送给左臂,再由左臂将方块堆放。这一动作展现了双臂之间的动作配合。如图5所示:

图5:方块传递动作

        经过以上的三个动作循环执行,双臂复合机器人会将左右各四个,共计八个方块堆叠到中间区域,分为两份。堆叠完成后,再将堆叠好的方块夹取分拆,分散放置于两侧,其过程不再赘述。分拆过程可参照上图5,分拆完成后方块堆放如图3。如此,便是一个完整的动作流程。

        机器人执行行为树之后,若无特殊情况打断或手动停止程序,便会循环执行行为树中设定的运动行为,不断地重复上述流程。

        以上流程中,堆放方块的位置是固定的,传递方块时传递点的空间位置也是确定的,但是抓取方块时每个方块的坐标都是需要视觉识别才能得到的。若运行环境光照条件不良或没有放置方块,导致无法识别到有效方块坐标,那么机器人便会停止在准备抓取的动作,后续的所有动作行为都必须等到本次抓取成功后才会继续进行。

        关于此例程的使用流程介绍就到这里,后续还将继续介绍此例程的程序实现。如果有任何疑问,欢迎在评论区交流讨论。祝您顺利!

这篇关于双臂复合机器人平台叠方块例程使用与自启设置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

postgresql使用UUID函数的方法

《postgresql使用UUID函数的方法》本文给大家介绍postgresql使用UUID函数的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录PostgreSQL有两种生成uuid的方法。可以先通过sql查看是否已安装扩展函数,和可以安装的扩展函数

如何使用Lombok进行spring 注入

《如何使用Lombok进行spring注入》本文介绍如何用Lombok简化Spring注入,推荐优先使用setter注入,通过注解自动生成getter/setter及构造器,减少冗余代码,提升开发效... Lombok为了开发环境简化代码,好处不用多说。spring 注入方式为2种,构造器注入和setter

MySQL中比较运算符的具体使用

《MySQL中比较运算符的具体使用》本文介绍了SQL中常用的符号类型和非符号类型运算符,符号类型运算符包括等于(=)、安全等于(=)、不等于(/!=)、大小比较(,=,,=)等,感兴趣的可以了解一下... 目录符号类型运算符1. 等于运算符=2. 安全等于运算符<=>3. 不等于运算符<>或!=4. 小于运

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4

Python 字典 (Dictionary)使用详解

《Python字典(Dictionary)使用详解》字典是python中最重要,最常用的数据结构之一,它提供了高效的键值对存储和查找能力,:本文主要介绍Python字典(Dictionary)... 目录字典1.基本特性2.创建字典3.访问元素4.修改字典5.删除元素6.字典遍历7.字典的高级特性默认字典

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定