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

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

相关文章

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Conda与Python venv虚拟环境的区别与使用方法详解

《Conda与Pythonvenv虚拟环境的区别与使用方法详解》随着Python社区的成长,虚拟环境的概念和技术也在不断发展,:本文主要介绍Conda与Pythonvenv虚拟环境的区别与使用... 目录前言一、Conda 与 python venv 的核心区别1. Conda 的特点2. Python v

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

C#中Guid类使用小结

《C#中Guid类使用小结》本文主要介绍了C#中Guid类用于生成和操作128位的唯一标识符,用于数据库主键及分布式系统,支持通过NewGuid、Parse等方法生成,感兴趣的可以了解一下... 目录前言一、什么是 Guid二、生成 Guid1. 使用 Guid.NewGuid() 方法2. 从字符串创建

Python使用python-can实现合并BLF文件

《Python使用python-can实现合并BLF文件》python-can库是Python生态中专注于CAN总线通信与数据处理的强大工具,本文将使用python-can为BLF文件合并提供高效灵活... 目录一、python-can 库:CAN 数据处理的利器二、BLF 文件合并核心代码解析1. 基础合

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

linux hostname设置全过程

《linuxhostname设置全过程》:本文主要介绍linuxhostname设置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录查询hostname设置步骤其它相关点hostid/etc/hostsEDChina编程A工具license破解注意事项总结以RHE

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注