10. 跳转至

10. 视觉3D抓取#

一种适用于AIRBOT机械臂结合视觉在桌面识别抓取物体的操作方法。

提醒

联络技术支持团队获取本文所需要的代码文件Stacking_Bricks.zip。

前置教程:

注意

在进行视觉抓取前一定要先执行相机内外参标定!!!

10.1 环境准备#

10.1.1 Python环境准备#

本文视觉部分硬件使用Intel RealSense系列相机

依赖 版本
pyrealsense2 2.55.1.6486

10.1.2 RealSense相机驱动准备#

依赖 版本
Intel RealSense SDK 2.0 2.0

10.1.3 物理环境准备#

尽量选取颜色为白色底色的桌面,本例程识别小木块依赖色域分割,如环境背景为蓝色绿色红色有可能导致识别失败。

10.1.4 环境安装步骤#

安装RealSense相机驱动 #ubuntu可以不用手动下载SDK,直接运行下列命令

激活conda虚拟环境:

conda activate [airbot]

安装pyrealsense2环境:

pip install pyrealsense2 -i https://pypi.tuna.tsinghua.edu.cn/simple

10.2 启动机械臂控制服务#

打开一个终端,运行机械臂控制服务

airbot_fsm -i <INTERFACE> -p <PORT>
airbot_server -i <INTERFACE> -p <PORT>

  • <INTERFACE> 为接口名称,可通过 ip link 查看,默认连接的设备名称为 canX(X 为编号,从0开始计数),如can0, can1等。
  • <PORT> 为 gRPC 服务器监听端口。如果连接多个设备,每个设备应使用不同的端口号。为不同的设备可自定义不同 PORT 值,如50000, 50001, 50010等。 关键要点包括: 例:
airbot_server -i can0 -p 50051

10.3 运行 stacking_bricks.py机械臂视觉垂直抓取示例#

10.3.1 下载并解压Stacking_Bricks.zip:#

#与上一步骤 airbot_fsm -i can0 -p 50051中p口一致
python3 -m stacking_bricks -p 50051

文件包内容解释

文件包内容
- stacking_bricks.py 实现机械臂视觉垂直抓取功能

  • brick_detect_realsense.py 实现使用realsense相机识别积木

  • arm_kdl.py 为AIRBOT_Play机械臂对应的运动学计算包

  • airbot_realsense.py realsense相机配置程序

  • configs 存放相机参数以及相机内外参标定数据

10.3.2 内外参参数配置#

内外参参数获取方法详见实现相机内参外参自动化标定

实现相机内参外参自动化标定标定获得的txt文件保存在此目录下,程序将自动读取txt中的相机内外参参数。

内外参路径

10.3.3 程序运行效果及展示#

在文件包目录下打开终端

conda activate airbot
python3 -m stacking_bricks

正常运行后将在屏幕显示:

  • 图中绿框为识别到的小积木,参数为积木颜色以及在相机坐标系下的积木坐标
  • 本例程可以检测蓝色、绿色、红色三种颜色的积木
识别积木图

按下q将关闭该窗口并开始搭积木,建议使用颜色深一些的背景提高识别成功率。