Skip to content

十三、传送带跟踪工艺(nrc_craft_conveyor_belt_track.h)

功能概述

传送带跟踪(Conveyor Belt Tracking)工艺用于机器人在运动中的传送带上动态抓取/放置工件。系统利用编码器实时获取传送带位置,结合用户输入的物料点位置,实时计算工件位置并通过运动追踪物料。

核心参数分组:

参数组说明对应结构体
基本参数编码器设置、传送带速度、用户坐标、跟踪高度ConveyorBasicParams
识别参数检测源(传感器/视觉)、触发方式ConveyorIdentificationParams
传感器参数传感器标定位置ConveyorSensorParams
跟踪范围跟踪窗口范围(X/Y/Z 最大最小)ConveyorTrackRangeParams
等待点无工件等待位置ConveyorWaitPointParams

使用前需在示教器【工艺】-【传送带跟踪工艺】中设置工艺号,每个工艺号(1-9)保存一组参数。


conveyor_belt_tracking_set_basic_parameter / conveyor_belt_tracking_set_basic_parameter_robot

设置传送带跟踪的基本参数(编码器、速度、坐标等)。

函数原型:

cpp
Result conveyor_belt_tracking_set_basic_parameter(SOCKETFD socketFd, int encoderVal, int time, int encoderDirection,
    double encoderResolution, double maxEncoderVal, double minEncoderVal, int posRecordMode, double speed, int userCoord,
    int conveyorID, int height, int trackOnRunModeWithTargetOverrun, int compensationEncoderVal);
Result conveyor_belt_tracking_set_basic_parameter_robot(SOCKETFD socketFd, int robotNum, int encoderVal, int time, int encoderDirection,
    double encoderResolution, double maxEncoderVal, double minEncoderVal, int posRecordMode, double speed, int userCoord,
    int conveyorID, int height, int trackOnRunModeWithTargetOverrun, int compensationEncoderVal);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
encoderValint编码器当前值,单位线
timeint跟踪补偿时间,单位毫秒
encoderDirectionint编码器方向,用于确定正反转
encoderResolutiondouble编码器分辨率,每转或每单位的脉冲数
maxEncoderVal / minEncoderValdouble编码器最大/最小值,限制或标定读数范围,单位线
posRecordModeint位置记录模式:编码器/恒速设置
speeddouble传送带速度,单位 mm/s(环形传送带为 °/s)
userCoordint用户坐标系编号,指定操作在哪个坐标下进行
conveyorIDint传送带 ID
heightint跟踪目标高度:传感器感知/跟踪指令示教
trackOnRunModeWithTargetOverrunint目标超限运行方式:等待下一个目标/跳行到追踪结束运行
compensationEncoderValint跟踪补偿编码器值,单位线

返回值: SUCCESS(0) 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。

使用示例:

cpp
// 设置传送带1的基本参数
Result result = conveyor_belt_tracking_set_basic_parameter(
    fd,                    // 连接句柄
    1000,                  // 编码器当前值
    50,                    // 补偿时间 50ms
    1,                     // 编码器正向
    10.0,                  // 分辨率 10 线/mm
    100000, 0,             // 编码器范围
    0,                     // 位置记录模式:编码器
    500.0,                 // 速度 500mm/s
    1,                     // 用户坐标系 1
    1,                     // 传送带 ID 1
    100,                   // 跟踪高度 100mm
    0,                     // 目标超限:等待下一个目标
    0                      // 补偿编码器值
);

conveyor_belt_tracking_set_identification_parameter / conveyor_belt_tracking_set_identification_parameter_robot

设置传送带参数识别的配置(检测源与识别方式)。

函数原型:

cpp
Result conveyor_belt_tracking_set_identification_parameter(SOCKETFD socketFd, int conveyorID, int detectSrcType, int capturePos, int visionID, int visionIoFilterType, int visionLatchEncoderValueType, int communication, int sensorTrg, int type);
Result conveyor_belt_tracking_set_identification_parameter_robot(SOCKETFD socketFd, int robotNum, int conveyorID, int detectSrcType, int capturePos, int visionID, int visionIoFilterType, int visionLatchEncoderValueType, int communication, int sensorTrg, int type);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
conveyorIDint传送带 ID
detectSrcTypeint检测源类型
capturePosint信号源参数(捕获位置 IO)
visionIDint视觉系统 ID
visionIoFilterTypeint视觉输入输出过滤类型
visionLatchEncoderValueTypeint视觉锁存编码器值类型
communicationint通讯方式
sensorTrgint传感器触发方式(0=下降沿,1=上升沿)
typeint识别类型

返回值: SUCCESS(0) 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。


conveyor_belt_tracking_set_sensor_calibration / conveyor_belt_tracking_set_sensor_calibration_robot

设置传送带上的传感器标定参数。

函数原型:

cpp
Result conveyor_belt_tracking_set_sensor_calibration(SOCKETFD socketFd, int conveyorID, const std::vector<double> sensorPos);
Result conveyor_belt_tracking_set_sensor_calibration_robot(SOCKETFD socketFd, int robotNum, int conveyorID, const std::vector<double> sensorPos);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
conveyorIDint传送带 ID
sensorPosconst std::vector<double>传感器位置,长度 6

返回值: SUCCESS(0) 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。


conveyor_belt_tracking_set_tracking_range / conveyor_belt_tracking_set_tracking_range_robot

设置传送带跟踪范围参数(跟踪窗口)。

函数原型:

cpp
Result conveyor_belt_tracking_set_tracking_range(SOCKETFD socketFd, int conveyorID, double receLatestPos, double trackRangeXMax, double trackRangeYMax, double trackRangeYMin, double trackRangeZMax, double trackRangeZMin, double trackStartXPoint);
Result conveyor_belt_tracking_set_tracking_range_robot(SOCKETFD socketFd, int robotNum, int conveyorID, double receLatestPos, double trackRangeXMax, double trackRangeYMax, double trackRangeYMin, double trackRangeZMax, double trackRangeZMin, double trackStartXPoint);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
conveyorIDint传送带 ID
receLatestPosdouble最新接收位置(最迟接收 X 值)
trackRangeXMaxdoubleX 轴最大跟踪范围
trackRangeYMax / trackRangeYMindoubleY 轴最大/最小跟踪范围
trackRangeZMax / trackRangeZMindoubleZ 轴最大/最小跟踪范围
trackStartXPointdouble跟踪起始 X 点

返回值: SUCCESS(0) 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。

工件进入跟踪范围后机器人开始同步;超出跟踪最大范围或未在最迟接收位置前收到数据,则放弃该工件。


conveyor_belt_tracking_set_tracking_wait_point / conveyor_belt_tracking_set_tracking_wait_point_robot

标定传送带跟踪等待点的位置参数(无工件时等待位置)。

函数原型:

cpp
Result conveyor_belt_tracking_set_tracking_wait_point(SOCKETFD socketFd, int conveyorID, bool isWait, double delayDetectTime, const std::vector<double> pos);
Result conveyor_belt_tracking_set_tracking_wait_point_robot(SOCKETFD socketFd, int robotNum, int conveyorID, bool isWait, double delayDetectTime, const std::vector<double> pos);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
conveyorIDint传送带 ID
isWaitbool无工件是否到指定点等待
delayDetectTimedouble等待延时时间
posconst std::vector<double>机器人位置坐标,含 X/Y/Z 轴坐标及三个旋转轴角度(弧度制),长度 7

返回值: SUCCESS(0) 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。


conveyor_belt_set_sensor_calibration / conveyor_belt_set_sensor_calibration_robot

标定获得传感器位置。

函数原型:

cpp
Result conveyor_belt_set_sensor_calibration(SOCKETFD socketFd, int conveyorID);
Result conveyor_belt_set_sensor_calibration_robot(SOCKETFD socketFd, int robotNum, int conveyorID);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
conveyorIDint传送带 ID

返回值: SUCCESS(0) 表示成功,负数表示失败。


conveyor_belt_calibrate_for_sensor_point / conveyor_belt_calibrate_for_sensor_point_robot

标定获得传感器位置(传感器标定流程第二步)。

函数原型:

cpp
Result conveyor_belt_calibrate_for_sensor_point(SOCKETFD socketFd, int conveyorID);
Result conveyor_belt_calibrate_for_sensor_point_robot(SOCKETFD socketFd, int robotNum, int conveyorID);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
conveyorIDint传送带 ID

返回值: SUCCESS(0) 表示成功,负数表示失败。


conveyor_belt_calculate_for_sensor_point / conveyor_belt_calculate_for_sensor_point_robot

计算传感器位置(传感器标定流程第三步,标定完成后计算)。

函数原型:

cpp
Result conveyor_belt_calculate_for_sensor_point(SOCKETFD socketFd, int conveyorID);
Result conveyor_belt_calculate_for_sensor_point_robot(SOCKETFD socketFd, int robotNum, int conveyorID);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
conveyorIDint传送带 ID

返回值: SUCCESS(0) 表示成功,负数表示失败。


conveyor_belt_get_basic_paramters / conveyor_belt_get_basic_paramters_robot

获取基本参数。

函数原型:

cpp
Result conveyor_belt_get_basic_paramters(SOCKETFD socketFd, int conveyorID, ConveyorBasicParams& param);
Result conveyor_belt_get_basic_paramters_robot(SOCKETFD socketFd, int robotNum, int conveyorID, ConveyorBasicParams& param);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
conveyorIDint传送带 ID
paramConveyorBasicParams&输出参数,基本参数结构体

ConveyorBasicParams 结构体:

字段类型说明
conveyorIDint传送带 ID
compensation_encoderValdouble补偿编码器值
compensation_timedouble补偿时间
conveyor_encoderDirectionint编码器方向
conveyor_encoderResolutiondouble编码器分辨率
conveyor_encoderValuedouble编码器当前值
conveyor_maxEncoderVal / conveyor_minEncoderValdouble编码器最大/最小值
conveyor_posRecordModeint位置记录模式
conveyor_speeddouble传送带速度
conveyor_userCoordint用户坐标系
track_heightint轨道高度
track_on_run_mode_with_target_overrunint轨道运行模式与目标超限

返回值: SUCCESS(0) 表示成功,负数表示失败。


conveyor_belt_get_identification_paramters / conveyor_belt_get_identification_paramters_robot

获取识别参数。

函数原型:

cpp
Result conveyor_belt_get_identification_paramters(SOCKETFD socketFd, int conveyorID, ConveyorIdentificationParams& param);
Result conveyor_belt_get_identification_paramters_robot(SOCKETFD socketFd, int robotNum, int conveyorID, ConveyorIdentificationParams& param);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
conveyorIDint传送带 ID
paramConveyorIdentificationParams&输出参数,识别参数结构体

ConveyorIdentificationParams 结构体:

字段类型说明
conveyorIDint传送带 ID
detectSrc_DI_capturePosint捕获位置(触发信号 IO)
detectSrc_globalVarstd::string全局变量
detectSrc_typeint检测源类型(0=传感器,1=视觉,2=传感器+视觉等)
detectSrc_visionIDint视觉 ID
detectSrc_vision_io_filter_typeint视觉 IO 过滤类型
detectSrc_vision_latch_encoder_value_typeint视觉锁存编码器值类型
identification_communicationstd::string识别通讯
identification_sensorTrgint识别传感器触发
identification_typeint识别类型

返回值: SUCCESS(0) 表示成功,负数表示失败。


conveyor_belt_get_sensor_paramters / conveyor_belt_get_sensor_paramters_robot

获取传感器参数。

函数原型:

cpp
Result conveyor_belt_get_sensor_paramters(SOCKETFD socketFd, int conveyorID, ConveyorSensorParams& param);
Result conveyor_belt_get_sensor_paramters_robot(SOCKETFD socketFd, int robotNum, int conveyorID, ConveyorSensorParams& param);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
conveyorIDint传送带 ID
paramConveyorSensorParams&输出参数,传感器参数结构体

ConveyorSensorParams 结构体:

字段类型说明
conveyorIDint传送带 ID
sensorPosDeg_X / Y / Zdouble传感器位置 X/Y/Z(角度)
sensorPosDeg_A / B / Cdouble传感器姿态 A/B/C(角度)

返回值: SUCCESS(0) 表示成功,负数表示失败。


conveyor_belt_get_track_range_paramters / conveyor_belt_get_track_range_paramters_robot

获取跟踪范围参数。

函数原型:

cpp
Result conveyor_belt_get_track_range_paramters(SOCKETFD socketFd, int conveyorID, ConveyorTrackRangeParams& param);
Result conveyor_belt_get_track_range_paramters_robot(SOCKETFD socketFd, int robotNum, int conveyorID, ConveyorTrackRangeParams& param);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
conveyorIDint传送带 ID
paramConveyorTrackRangeParams&输出参数,跟踪范围结构体

ConveyorTrackRangeParams 结构体:

字段类型说明
conveyorIDint传送带 ID
position_receLatestPosdouble最迟到接收位置
position_trackRangeXMaxdouble轨道范围 X 最大
position_trackRangeYMax / YMindouble轨道范围 Y 最大/最小
position_trackRangeZMax / ZMindouble轨道范围 Z 最大/最小
position_trackStartXPointdouble轨道起始 X 点

返回值: SUCCESS(0) 表示成功,负数表示失败。


conveyor_belt_get_wait_point_paramters / conveyor_belt_get_wait_point_paramters_robot

获取等待点参数。

函数原型:

cpp
Result conveyor_belt_get_wait_point_paramters(SOCKETFD socketFd, int conveyorID, ConveyorWaitPointParams& param);
Result conveyor_belt_get_wait_point_paramters_robot(SOCKETFD socketFd, int robotNum, int conveyorID, ConveyorWaitPointParams& param);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
conveyorIDint传送带 ID
paramConveyorWaitPointParams&输出参数,等待点参数结构体

ConveyorWaitPointParams 结构体:

字段类型说明
conveyorIDint传送带 ID
delayDetectTimedouble延迟检测时间
isWaitbool是否等待
posstd::vector<double>位置数组

返回值: SUCCESS(0) 表示成功,负数表示失败。