BoxSortGenerator 箱子排序生成器

BoxSortGenerator 算子用于对输入的箱盒目标中心 poselist 进行排序和缺失拓充,并给出排序效果示意。

目前仅支持 8 种标准排序,并且要求箱盒目标的中心 pose 姿态的轴向定义同箱体本身的长宽方向保持平行或垂直。举例来说,如果将一个长方体箱子的对角线方向定义成其 pose 姿态的 X 轴或 Y 轴,则本算子不适用。

算子参数

  • 坐标列表:设置坐标列表在 3D 视图中的可视化属性。

    • icon_visOn 打开坐标列表可视化。

    • icon_visOff 关闭坐标列表可视化。

    • icon_size 设置坐标列表的尺寸大小。取值范围:[ 0.001,10] 。默认值:0.1 。

  • 索引列表:设置索引列表的曝光属性,曝光后,可以与表格控件进行绑定。

    • icon_visOn 打开索引列表可视化。

    • icon_visOff 关闭索引列表可视化。

  • 新增索引列表:设置新增索引列表的曝光属性,曝光后,可以与表格控件进行绑定。

    • icon_visOn 打开新增索引列表可视化。

    • icon_visOff 关闭新增索引列表可视化。

  • 模板图:设置模板图在 2D 视图中的可视化属性。

    • icon_visOn 打开模板图可视化。

    • icon_visOff 关闭模板图可视化。

  • 效果图:设置效果图在 2D 视图中的可视化属性。

    • icon_visOn 打开效果图可视化。

    • icon_visOff 关闭效果图可视化。

算子面板

右击 BoxSortGenerator 算子,点击菜单栏中算子面板打开箱子排序生成器面板。

面板中包含左右两张图像显示区、13个参数设置区、以及一个更新按钮。

image-20240529104717739

模板图

以输入端口的 poselist 的平均 pose 的 X 轴为 X 轴,以输入端口的 poselist 的平均 pose 的 Y 轴为 Y 轴,建立标准模板坐标系。

注意:在设置模板参数的时候,一定要先明确需要将最终目标的哪个边作为其中心 pose 姿态的 X 轴,这直接关系着模板参数的行列设置。同样的,在设置好模板参数后,实际调用本算子进行排序计算时,也要确保输入的目标 poselist 的坐标轴的朝向符合设置。

图中,以红色描绘 X 轴的箭头朝向以及目标的轮廓宽度,以绿色描绘 Y 轴的箭头朝向以及目标的轮廓高度。并根据参数来描绘目标的排列方式。图像中的像素同实际尺寸的比例不固定,但是图像两个轴方向上的比例尺默认保持一致,在对窗体进行拉伸时,会破坏两个轴比例尺的一致性。

图中每一个目标都有两组序号:左上角白色小序号,中间位置的蓝色/黄色标准序号。前者涉及运算过程以及拓充关系,后者即为最终的排序序号。

效果图

根据算子输入端口的 poselist 以及参照图像,结合用户在算子面板中输入的所有参数,生成的最终排序拓充效果示意图。

参数介绍

涉及尺寸的参数,单位均为米。

  • 行数:沿着 Y 轴方向的目标数量称为行数。

  • 列数:沿着X轴方向的目标数量称为列数。

    注意:行数和列数需与实际相符。

  • 行间距:两行之间的目标中心的距离。

  • 列间距:两列之间的目标中心的距离。

    注意:行间距和列间距应当尽量输入准确,否则在“分类方式”选择不恰当时,会导致排序错误。

  • 宽度:目标沿着 X 轴方向的长。

  • 高度:目标沿着 Y 轴方向的长。

    注意:宽度和高度仅影响显示效果,不影响计算。

  • 标签尺寸:影响绘图时的线条粗细、中心点半径、字体大小等。

  • 彩色图标定文件:当前使用的图漾相机的出厂彩色镜头标定文件。在启用RVS内的相机资源时,会自动根据资源参数中规定的文件路径产生该文件。

  • 转换位姿:算子输入 poselist 所在的空间坐标系同相机彩色镜头坐标系的转换关系。如果没有对相机镜头的输出点云做空间转换,则直接单击 RVS 相机资源中的 相机外参坐标里面的复制按钮并粘贴到这里即可。

  • 分类方式:该选项内容决定了在实际排序计算的过程中,对目标按照行分类还是列分类,同时直接影响拓充目标是按照紧邻目标的 X 轴还是 Y 轴进行拓充。 举例来说,当该参数选择按X轴分类时,会对所有输入 pose 按照“ y 数值较为接近”分为同一类,之后在类内进行排序和缺失目标拓充。此时被拓充的目标将会按照同一类内相近目标的 x 轴方向进行位置运算。 通常建议,当行间距大于列间距时,选择按X轴分类;当行间距小于列间距时,选择按Y轴分类。也可以“逆向选择”,但是要确保输入行间距参数和列间距参数的准确性,以及物体摆放位置的规范性。

    注意:该选项不会影响最终的排序结果和显示序号,仅仅涉及底层的运算以及影响拓充目标的计算位置,其影响的是算子底层运算结果的序号,在图中以目标左上角的白色小序号作为标识;当“逆向选择”时如果无法保证拜访目标的稳定性,则可能出现计算错误,则会引起排序结果和显示序号的混乱。

  • 拓充方向:决定按照临近目标的位姿进行拓充还是按照所有输入目标的平均位姿的方向进行拓充。

  • 排序模式:含8种。以”X+ Y+”为例,所有的目标,最终先按照目标的 X 轴方向进行排序,再按照 Y 轴方向进行排序。

  • 保留拓充目标:勾选时,最后的输出 poselist 会包含拓充目标,否则不包含。同时,也会影响效果图中是否显示拓充目标。

  • 更新:对参数做了变更后,需要单击更新按钮,使其生效。该按钮还会自动调用一次算子的执行函数,即算子的输出端口也会进行更新。

数据信号输入输出

输入:

  • 坐标列表

    • 数据类型:PoseList

    • 输入内容:需要参与排序的目标中心的 poselist,要求这些目标的 pose 姿态保持方向上的一致性。

  • 图像

    • 数据类型:Image

    • 输入内容:相机拍照的原图,目的是形成最终的排序效果图底图。该输入可以为空,为空时不影响实际排序和拓充计算,但会导致无法显示最终效果图。

输出:

  • 坐标列表

    • 数据类型:PoseList

    • 输出内容:对原始 poselist 进行排序拓充后的所有 pose 的排序结果。如果不允许输出拓充目标(该参数的设置在参数面板中),则这里的 poselist 结果中将仅仅包含原始 poselist 中的目标。

  • 索引列表

    • 数据类型:StringList

    • 输出内容:上述的输出 poselist 中,每一个非拓充 pose 对应的输入 poselist 中的索引序号。

  • 新增索引列表

    • 数据类型:StringList

    • 输出内容:上述的输出 poselist 中,每一个拓充 pose 所在的索引序号。

  • 模板图

    • 数据类型:Image

    • 输出内容:根据用户在算子面板中输入的行数列数行间距列间距宽度高度标签尺寸分类方式排序模式9个参数,生成的模板示意图。模板图的生成,不依赖于算子的输入端口。该输出端口对应的模板图同时会在算子面板中的左侧显示。

  • 效果图

    • 数据类型:Image

    • 输出内容:根据算子输入端口的 poselist 以及参照图像,结合用户在算子面板中输入的所有参数,生成的最终排序拓充效果示意图。该输出端口对应的效果图同时会在算子面板中的右侧显示。

功能演示

使用 BoxSortGenerator 进行箱子排序。

本案例只涉及 BoxSortGenerator 算子部分的演示,完整的 XML 与数据已上传至 example_data.zip 中的 BoxSortGenerator 文件夹。将文件夹内三项直接复制至 runtime 目录即可。

image-20240529141749815

步骤1:XML 准备

  1. 打开 RVS,加载 box_sort_offline.xml

    image-20241025160932848

步骤2:运行

点击 RVS 运行按钮。

运行结果

  1. 自动触发一次XML。

    image-20241025161020127

  2. 打开 BoxSortGenerator 算子属性面板中模板图效果图的 2D 视图可视化属性,result_image 为效果图,显示排序结果。templete_image 为模板图,显示用户自定义的模板示意图。

    image-20240529145043102

  3. 点击 iterate 算子,进行数据迭代。3D 视图显示箱子点云与拓充后的所有 pose 。

    image-20240529145346097

  4. 2D 视图显示拓充效果图与模板图。

    image-20240529145434853

步骤3:箱子排序生成器面板配置

  1. 打开箱子排序生成器面板,面板下方用于排序参数填写。本案例中参数填写如下图所示。

    image-20240529145758813

  2. 参数填写完成后,直接点击更新按钮,即可在面板中查看排序结果。

    如下图中:分类方式 修改为按Y轴分类。点击更新

    image-20240529150240255

  3. 分类方式 修改为按X轴分类。再次点击更新后,效果图发生变化。

    image-20240529150402649