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

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

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

        睿尔曼双臂升降复合机器人平台中内置了一个方块堆叠例程,主要内容位于“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。如此,便是一个完整的动作流程。

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

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

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

上一篇:python内置函数hasattr详解


下一篇:4.1 iHRM人力资源 - 角色管理