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

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

相关文章

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

mtu设置多少网速最快? 路由器MTU设置最佳网速的技巧

《mtu设置多少网速最快?路由器MTU设置最佳网速的技巧》mtu设置多少网速最快?想要通过设置路由器mtu获得最佳网速,该怎么设置呢?下面我们就来看看路由器MTU设置最佳网速的技巧... 答:1500 MTU值指的是在网络传输中数据包的最大值,合理的设置MTU 值可以让网络更快!mtu设置可以优化不同的网

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.