You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在HDevelop及Halcon.NET中创建pose-array?

在HDevelop和Halcon.NET中创建Pose数组的正确方法

HDevelop 实现方式

Pose数组本质是二维元组,每个Pose由6个参数(Tx, Ty, Tz, Rx, Ry, Rz)组成,不能直接用tuple_concat将所有参数扁平化拼接(这会生成单一冗长的一维数组),正确方法如下:

  • 直接构造二维元组:
    利用HDevelop的嵌套元组语法,直接定义包含多个Pose的数组:

    PoseArray := [[0, 0, 0, 0, 0, 0], [10, 20, 30, 0.1, 0.2, 0.3]]
    
  • 动态添加Pose元素:
    先初始化空元组,再逐个插入完整的Pose元组:

    gen_empty_tuple (PoseArray)
    Pose1 := [0, 0, 0, 0, 0, 0]
    Pose2 := [10, 20, 30, 0.1, 0.2, 0.3]
    tuple_insert(PoseArray, -1, Pose1, PoseArray)
    tuple_insert(PoseArray, -1, Pose2, PoseArray)
    

验证时可通过tuple_length(PoseArray)查看Pose数量,每个子元组长度应为6,与find_surface_model返回的结构一致。

Halcon.NET 实现方式

在.NET环境中,Halcon的Pose数组对应嵌套的HTuple结构,每个Pose是独立的HTuple元素,而非扁平化的一维序列:

  • 逐个构造再组合:

    // 定义单个Pose的HTuple
    HTuple pose1 = new HTuple(0, 0, 0, 0, 0, 0);
    HTuple pose2 = new HTuple(10, 20, 30, 0.1, 0.2, 0.3);
    // 组合成Pose数组
    HTuple poseArray = new HTuple(new HTuple[] { pose1, pose2 });
    
  • 直接嵌套构造:

    HTuple poseArray = new HTuple(
        new HTuple(0, 0, 0, 0, 0, 0),
        new HTuple(10, 20, 30, 0.1, 0.2, 0.3)
    );
    

注意:若将所有Pose参数直接传入同一个HTuple构造函数(如new HTuple(0,0,0,0,0,0,10,20,...)),会生成一维数组,这是错误的写法。

内容的提问来源于stack exchange,提问作者Malinko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 16:20:14