基于OAK相机的6DOF叉车托盘定位检测算法

1. 概述

采用深度学习技术,实现对木制与塑料托盘的实时检测,无需预设尺寸,支持任意角度放置。能够精确输出托盘的六自由度位姿和三维尺寸,适用于多种物流机器人,提高作业灵活性,降低托盘使用限制。

2. 软硬件要求

Factor Perception Lite⽬前⽀持ROS1 Noetic和ROS2 Humble平台,硬件使⽤OAK-D系列相机。

已经过测试的型号:OAK-D Lite,OAK-D S2,OAK-D W,OAK-D Pro,OAK-D Pro W,OAK-D S2 PoE,OAK-D W PoE,OAK-D Pro PoE,OAK-D Pro W PoE

您可以从OAK官方文档获取关于硬件的更多信息。

下载中心 - OAKChina​www.oakchina.cn/download/

3. 安装与配置

3.1 ROS包安装

我们假定您已完成ROS环境安装并且了解ROS功能和使⽤。如果您还不熟悉ROS,可参考ROS官⽅Wiki:

https://wiki.ros.org​wiki.ros.org/

Factor Perception Lite以独⽴ROS包的形式提供。我们已将其预编译为Debian软件包。您可以双击安装,或使用dpkg,apt等⼯具安装:

$ cd /path/to/deb/file/ $ sudo dpkg -i ros-<distro>-factor-perception-

lite_<version>_<architecture>.deb

安装时会⾃动检查所需的依赖项。FactorPerceptionLite的依赖项均来⾃Ubuntu官⽅仓库或ROS官⽅仓库,不使⽤第三⽅依赖。如您在使⽤dpkg安装后提⽰依赖缺失,可使⽤apt-get⾃动安装所需依赖项:

$ sudo apt-get -f install

3.2 udev

如通过USB连接OAK-D相机,用户需手动添加udev规则,以赋予设备权限:

$ echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="03e7", MODE="0666"' | sudo tee
/etc/udev/rules.d/80-movidius.rules $ sudo udevadm control --reload-rules && sudo udevadm trigger

3.3. 功能授权

Factor Perception Lite的每项功能均有单独的key,需在每次启动程序时作为参数提供。您可以将key保存在launch⽂件或其它配置⽂件中。key与硬件绑定,只能在特定相机上使⽤。在⼀台OAK-D相机上只能同时运⾏⼀项功能(及其⼦功能)。如您需要使⽤多项功能,需自行进⾏切换,或使⽤多台OAK-D相机。

3.4 机器人模型配置

Factor Perception Lite提供了OAK-D相机的Xacro及STL模型,⽤于⽣成URDF。用户⼀般应将其整合到自己的机器⼈模型中。当使⽤默认的TF前缀时,TF Tree如下图所⽰,OAK-D相机的基坐标系为oak_base_frame。各种感知数据会基于对应的相机坐标系或光轴坐标系发布。相机的内外参解析⾃硬件出⼚标定值。用户需自行配置机 器人坐标系(如base_link)到相机基坐标系间的变换关系。

4. 功能说明

4.1 3D托盘检测

这是一套基于深度学习的通用托盘检测方案,可实时检测各种常见的木托盘和塑料托盘,输出托盘的6个自由度位姿(3自由度平移+3自由度旋转)及长宽高。该功能无需预先设置托盘的尺寸,更不要求托盘必须水平放置。多种托盘可混用、可叠放。该功能适用于各类物流机器人,可极大减少对使用托盘载具的限制。

启动实例

示例提供了⼀套最小的运⾏配置,可通过一行命令启动,以便系统测试和功能验证。

对于ROS1:

$ roslaunch factor_perception_lite pallet_detection.launch key:=<your pallet_detection key>

对于ROS2:

$ ros2 launch factor_perception_lite pallet_detection_launch.py key:=<your pallet_detection key>

发布的话题

     校正过的彩⾊图像。

    彩⾊相机内参。

   校正过的深度图像,已与彩⾊相机对⻬。

   深度相机内参。

     托盘检测数据。

参数

~tf_prefix (string, default: "oak")

相机TF前缀。

~mxid_or_name (string, default: "")

相机的MXID,或IP地址,或USB端⼝名称。默认为空,会使⽤⾃动发现的第⼀台OAK相机。当连接多台OAK相机时可指定硬件。

~key (string, default: "")

3D托盘检测功能的key。

~blob_path (string, default: "")

3D托盘检测的深度学习模型,会在程序启动时加载到相机中。应使⽤ROS包blobs目录下的pallet_detection.blob,可参考示例launch⽂件配置。

~confidence (double, default: 0.8)

3D托盘检测的置信度阈值 (>0.5且 <1)。数值越低约容易检测到托盘,也更容易产⽣错误检测。

托盘检测数据说明

相机图像与检测数据的发布频率均为10 Hz。在相机可视范围内可能存在多个托盘,因此检测结果以数组的形式提供。每个元素中的results包含托盘位姿和置信度,bbox为3D边界框。results中的位姿定义在托盘正⽴⾯中点,bbox的位姿定义在托盘中心,如下图所⽰。bbox的size为算法估计的托盘尺⼨。

需要注意的是,⼤多数托盘都可以从两面或四面进叉,因此托盘检测存在对称性歧义。只有当正立面完全可见时,才能输出正确的检测结果。如下图所式,当托盘相对相机呈⼀定夹角时,可能在⼀个托盘上产⽣两个检测结果。因为可见的两面都可以作为正立面。用户需要自行选择使用哪个检测结果及进叉⽅向。实践可见:OAK在自动叉车上的应用 

4.2 子功能

当移动机器⼈使用OAK-D相机的深度图像进⾏避障时,原始数据容易导致较高的虚警率。即机器⼈可能因错误的深度值检测到并不存在的障碍物。这可能导致机器人行进时卡顿,或以非预期的方式绕⾏。为此我们专门为双目深度相机设计了这种非参数滤波算法,可以有效滤除⼤多数不可靠的深度值。用户无需任何配置,可直接使⽤过滤后的深度数据进行避障,虚警率可降低至⼏乎为0。过滤后的深度数据如下图所示,尽管看起来较为稀疏,但实际能有效检测各种细小的障碍物。

  • 26
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值