寻位跟踪
跟踪
跟踪传感器类型
设置跟踪传感器类型
- 命令字:
0x8740 - 方向: 上位机发送
| 参数名 | 类型 | 取值范围 | 描述 |
|---|---|---|---|
| fileNum | int | [1,99] | 跟踪文件号 |
| robot | int | [1,4] | 机器人号 |
| sensorType | int | [0,2] | 跟踪类型:0-线激光,1-电弧,2-弧压 |
请求示例:
json
{
"fileNum": 1,
"robot": 1,
"sensorType": 0
}查询跟踪传感器类型
- 命令字:
0x8741 - 方向: 上位机发送
| 参数名 | 类型 | 取值范围 | 描述 |
|---|---|---|---|
| fileNum | int | [1,99] | 跟踪文件号 |
| robot | int | [1,4] | 机器人号 |
请求示例:
json
{
"fileNum": 1,
"robot": 1
}返回跟踪传感器类型
- 命令字:
0x8742 - 方向: 上位机接收
- data: 同0x8740
电弧通讯参数
设置电弧通讯参数
- 命令字:
0x874d - 方向: 上位机发送
| 参数名 | 类型 | 取值范围 | 描述 |
|---|---|---|---|
| craftid | int | [1,99] | 跟踪文件号 |
| robot | int | [1,4] | 机器人号 |
| dataType | int | [0,1] | 采样数据类型:0-电流,1-电压 |
| period | int | [0,1000]ms | 采样周期 |
| std_low_weight_threshold | double | [3,20] | 噪声阈值,噪声超限后偏差权重降低 |
请求示例:
json
{
"craftid": 1,
"robot": 1,
"sampling":
{
"dataType": 0,
"period": 20,
"std_low_weight_threshold": 3.0
}
}查询电弧通讯参数
- 命令字:
0x874e - 方向: 上位机发送
| 参数名 | 类型 | 取值范围 | 描述 |
|---|---|---|---|
| craftid | int | [1,99] | 跟踪文件号 |
| robot | int | [1,4] | 机器人号 |
请求示例:
json
{
"craftid": 1,
"robot": 1
}返回电弧通讯参数
- 命令字:
0x874f - 方向: 上位机接收
- data: 同0x874d
电弧补偿参数
设置电弧跟踪左右补偿参数
- 命令字:
0x8750 - 方向: 上位机发送
| 参数名 | 类型 | 取值范围 | 描述 |
|---|---|---|---|
| craftid | int | [1,99] | 跟踪文件号 |
| robot | int | [1,4] | 机器人号 |
| accFactor | double | [0.1,10] | 补偿加速度倍数,对应当前运动指令加速度 |
| algorithmType | int | [0,1] | 偏差提取类型:0-均值,1-手填值 |
| beginCycleNum | int | [1,100] | 开始采样周期数 |
| differential | double | [0,1] | 微分系数 |
| integral | double | [0,1] | 积分系数 |
| maxSingleLen | double | [0,10] | 每次最大补偿量 |
| scale | double | [0,1] | 比例系数 |
| switchon | bool | true/false | 补偿开关:true-打开,false-关闭 |
请求示例:
json
{
"craftid": 1,
"lateralCompensation":
{
"accFactor": 1.0,
"algorithmType": 0,
"beginCycleNum": 4,
"differential": 0.0,
"integral": 0.00050,
"maxSingleLen": 2.0,
"scale": 0.050,
"switchon": true
},
"robot": 1
}查询电弧跟踪左右补偿参数
- 命令字:
0x8751 - 方向: 上位机发送
| 参数名 | 类型 | 取值范围 | 描述 |
|---|---|---|---|
| craftid | int | [1,99] | 跟踪文件号 |
| robot | int | [1,4] | 机器人号 |
请求示例:
json
{
"craftid": 1,
"robot": 1
}返回电弧跟踪左右补偿参数
- 命令字:
0x8752 - 方向: 上位机接收(控制器返回)
- data: 同0x8750
设置电弧跟踪高低补偿参数
- 命令字:
0x8753 - 方向: 上位机发送
| 参数名 | 类型 | 取值范围 | 描述 |
|---|---|---|---|
| craftid | int | [1,99] | 跟踪文件号 |
| robot | int | [1,4] | 机器人号 |
| accFactor | double | [0.1,10] | 补偿加速度倍数,对应当前运动指令加速度 |
| algorithmType | int | [0,1] | 偏差提取类型:0-均值,1-手填值 |
| beginCycleNum | int | [1,100] | 开始采样周期数 |
| custom_value | double | [0,1000]A | 偏差提取类型手填值 |
| differential | double | [0,1] | 微分系数 |
| integral | double | [0,1] | 积分系数 |
| maxSingleLen | double | [0,10] | 每次最大补偿量 |
| scale | double | [0,1] | 比例系数 |
| switchon | bool | true/false | 补偿开关:true-打开,false-关闭 |
请求示例:
json
{
"craftid": 1,
"robot": 1,
"verticalCompensation":
{
"accFactor": 1.0,
"algorithmType": 0,
"beginCycleNum": 4,
"custom_value": 0.0,
"differential": 0.0,
"integral": 0.00050,
"maxSingleLen": 0.50,
"scale": 0.050,
"switchon": true
}
}查询电弧跟踪高低补偿参数
- 命令字:
0x8754 - 方向: 上位机发送
| 参数名 | 类型 | 取值范围 | 描述 |
|---|---|---|---|
| craftid | int | [1,99] | 跟踪文件号 |
| robot | int | [1,4] | 机器人号 |
请求示例:
json
{
"craftid": 1,
"robot": 1
}返回电弧跟踪高低补偿参数
- 命令字:
0x8755 - 方向: 控制器发送
- data: 同0x8753
设置电弧跟踪路径数据记录
- 命令字:
0x8756 - 方向: 上位机发送
| 参数名 | 类型 | 取值范围 | 描述 |
|---|---|---|---|
| craftid | int | [1,99] | 跟踪文件号 |
| robot | int | [1,4] | 机器人号 |
| cycle | double | [1,1000000000]mm | 跟踪路径数据记录周期 |
| type | int | [0,1] | 跟踪路径数据记录方式:0-距离,1-时间 |
请求示例:
json
{
"craftid": 1,
"robot": 1,
"track_path_record":
{
"cycle": 30.0,
"type": 0
}
}查询电弧跟踪路径数据记录
- 命令字:
0x8757 - 方向: 上位机发送
| 参数名 | 类型 | 取值范围 | 描述 |
|---|---|---|---|
| craftid | int | [1,99] | 跟踪文件号 |
| robot | int | [1,4] | 机器人号 |
请求示例:
json
{
"craftid": 1,
"robot": 1
}返回电弧跟踪路径数据记录
- 命令字:
0x8758 - 方向: 控制器发送
- data: 同0x8756
寻位算法参数
寻位跟踪系统通过传感器实时采集焊缝位置偏差,结合 PID 控制算法对机器人轨迹进行动态补偿,确保焊枪始终对准焊缝中心。
寻位偏差计算原理
系统通过采样传感器数据(电流/电压/激光轮廓)提取焊缝左右偏差和高低偏差:
- 数据采集:按采样周期采集传感器原始数据
- 偏差提取:根据算法类型(均值/手填值)计算当前周期的偏差值
- PID 补偿:使用比例(P)、积分(I)、微分(D)控制算法计算补偿量
- 运动叠加:将补偿量叠加到当前运动指令上
PID 补偿算法参数详解
| 参数 | 说明 | 推荐范围 | 调节建议 |
|---|---|---|---|
| scale(比例系数 Kp) | 控制补偿响应速度 | 0.01~0.5 | 增大可加快响应但可能引起振荡 |
| integral(积分系数 Ki) | 消除稳态误差 | 0.0001~0.01 | 增大可消除静差但可能引起超调 |
| differential(微分系数 Kd) | 抑制振荡,预测趋势 | 0.0~0.5 | 增大可抑制振荡但可能引入噪声 |
| maxSingleLen | 每次补偿量上限(mm) | 0.1~10 | 防止单步补偿过大导致抖动 |
| accFactor | 补偿加速度倍数 | 0.1~10 | 控制补偿运动的加速度 |
| beginCycleNum | 起始采样周期数 | 1~100 | 起始阶段采集多少个周期后开始补偿 |
算法类型说明
| 类型值 | 名称 | 说明 |
|---|---|---|
| 0 | 均值法 | 取多个采样周期的偏差平均值作为当前偏差,平滑效果好 |
| 1 | 手填值 | 使用预设的固定偏差值 custom_value,适用于已知偏差量场景 |
跟踪模式详解
传感器类型与适用场景
| 传感器类型 | 值 | 适用工艺 | 优点 | 缺点 |
|---|---|---|---|---|
| 线激光 | 0 | 焊接、切割 | 精度高,可同时获取左右和高低偏差 | 成本较高,对工件表面反光敏感 |
| 电弧 | 1 | 焊接 | 成本低,不受弧光干扰 | 精度中等,需电弧稳定 |
| 弧压 | 2 | 等离子切割 | 适合高度跟踪 | 仅能获取高低偏差 |
跟踪模式工作流程
1. 初始化阶段
- 设置传感器类型(0x8740)
- 配置电弧通讯参数(采样类型、周期、噪声阈值)
- 设置左右/高低补偿参数(PID 参数、开关)
2. 运行阶段
- 传感器持续采集数据
- 系统按采样周期提取偏差
- 根据算法类型计算当前偏差值
- PID 控制器输出补偿量(受 maxSingleLen 限制)
- 补偿量叠加到当前运动轨迹
3. 数据记录(调试用)
- 可通过 0x8756 设置路径数据记录
- 支持按距离或按时间两种记录方式
- 记录周期范围:1~1000000000 mm 或对应时间
补偿策略选择
| 场景 | 建议参数 | 说明 |
|---|---|---|
| 直线焊缝 | Kp=0.1, Ki=0.001, Kd=0 | 平稳跟踪,避免过调 |
| 曲线焊缝 | Kp=0.2, Ki=0.005, Kd=0.05 | 需要更快响应 |
| 薄板焊接 | Kp=0.05, Ki=0.0005, maxSingleLen=0.5 | 防止过补偿导致焊穿 |
| 厚板多层焊 | Kp=0.3, Ki=0.01, maxSingleLen=3 | 允许较大补偿量 |
补偿数据流
传感器信号 -> 采样滤波 -> 偏差提取(算法类型) -> PID 计算(Kp, Ki, Kd) -> 限幅(maxSingleLen) -> 加速度平滑(accFactor) -> 轨迹叠加 -> 机器人运动
故障排查
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 跟踪振荡 | Kp过大 | 减小比例系数 |
| 跟踪滞后 | Kp过小或Ki过小 | 增大Kp或Ki |
| 补偿超调 | Ki过大或maxSingleLen过大 | 减小Ki或限制单次补偿量 |
| 噪声敏感 | 噪声阈值设置不当 | 增大噪声阈值或改用均值法 |
| 补偿方向错误 | 传感器安装方向或编码器方向 | 检查传感器安装和参数符号 |