脚本生成特性汇总表
本文档汇总了工程中所有的 TemplateTrackCoderSettings、TemplateSiteCoderSettings 和 ProgramTrackCoderSettings 特性配置。
关键参数说明
| 参数 |
说明 |
| priority |
优先级,数值越大则脚本生成顺序越靠前 |
| useVerb |
判断条件,为 true 时生成 templateString |
| blockVerb |
如果为 true,且 useVerb 通过,则低于此 priority 的脚本不再继续判断 |
| templateString |
生成的脚本模板,支持 ${变量} 语法 |
| siteFields |
站点字段类型定义 |
| trackFields |
路径字段类型定义 |
| planFields |
计划字段类型定义 |
执行流程说明
- 按 priority 从大到小 依次检查每个 CoderSettings
- 如果 useVerb 条件为 true,则生成 templateString 脚本
- 如果 blockVerb 为 true 且 useVerb 通过,则 阻止低优先级脚本继续执行
- ProgramTrackCoderSettings 使用自定义的
ITrackCoder 程序来生成脚本
一、TemplateTrackCoderSettings(路径脚本)
1. MultiWheelLifterCar.cs - 多舵轮顶升车
| Priority |
useVerb |
blockVerb |
templateString |
说明 |
| 30 |
track.SleepTime!=0 |
false |
agv.Wait();agv.Sleep(${track.SleepTime});agv.Wait(); |
路径上休眠 |
| 30 |
track.TrayTarget!=0 |
false |
agv.Wait();agv.TrayControl(${track.TrayTarget});agv.Wait(); |
托盘控制 |
| 27 |
track.LidarArea != -2 |
- |
agv.Queue(()=>{},()=>{ agv.SwitchLidarArea(${track.LidarArea}); }); |
切换激光避障区域 |
| 20 |
(无条件) |
- |
agv.Queue(()=>{},()=>{ agv.ChangeAvoidanceDistance(${track.StopDistance},${track.SlowDistance}); }); |
更改避障距离 |
| 20 |
track.IOArea != -1 |
- |
agv.Queue(()=>{},()=>{ agv.SwitchIoArea(${track.IOArea}); }); |
切换IO区域 |
| 20 |
dst.ChangeAvoidanceParam==true |
- |
agv.Queue(()=>{},()=>{ agv.ChangeAvoidanceParam(${dst.CarLength},${dst.CarWidth},${dst.CarCenterX},${dst.CarCenterY}); }); |
切换避障尺寸 |
| 20 |
track.BiasAlarmThresh >0 || track.DthAlarmThresh > 0 |
- |
agv.Queue(()=>{},()=>{ agv.ChangeTrackingErrThresh(${track.BiasAlarmThresh},${track.DthAlarmThresh}); }); |
更改跟踪误差阈值 |
| 19 |
dst.tag>0 && src.tag>0 |
true |
agv.QrGo(${src.x},${src.y},${src.id},${src.tag},${dst.x},${dst.y},${dst.id},${dst.tag},${track.id},...); |
二维码导航 |
2. Kiva.cs - Kiva车
| Priority |
useVerb |
blockVerb |
templateString |
说明 |
| 30 |
dst.tag>0 && src.tag>0 |
true |
agv.QrGo(...); |
二维码导航 |
| 22 |
src.Shelf && plan.curSeg==1 |
true |
agv.LeaveShelf(...); |
离开货架 |
| 20 |
plan.action=='fetch' && dst.Shelf && plan.curSeg==plan.segN-2 |
true |
agv.Fetch(...); |
取货 |
| 20 |
plan.action=='put' && dst.Shelf && plan.curSeg==plan.segN-2 |
true |
agv.Put(...); |
放货 |
| 20 |
(无条件) |
- |
agv.Queue(()=>{},()=>{ agv.ChangeAvoidanceDistance(...); }); |
更改避障距离 |
| 20 |
(无条件) |
- |
agv.Queue(()=>{},()=>{ agv.ChangeAvoidanceParam(${dst.CarLength},${dst.CarWidth}); }); |
切换避障尺寸 |
| 20 |
track.IOArea != -1 |
- |
agv.Queue(()=>{},()=>{ agv.SwitchIoArea(${track.IOArea}); }); |
切换IO区域 |
| 20 |
track.BiasAlarmThresh >0 || track.DthAlarmThresh > 0 |
- |
agv.Queue(()=>{},()=>{ agv.ChangeTrackingErrThresh(...); }); |
更改跟踪误差阈值 |
| 17 |
track.LidarArea != -2 |
- |
agv.Queue(()=>{},()=>{ agv.SwitchLidarArea(${track.LidarArea}); }); |
切换激光避障区域 |
| 10 |
track.CalibrateWheelEncoder && track.ReverseDst != dst.id |
true |
agv.CalibrateWheelEncoder(...); |
标定轮里程计 |
3. Forklift.cs - 叉车
| Priority |
useVerb |
blockVerb |
templateString |
说明 |
| 22 |
src.Shelf |
true |
agv.LeaveShelf(...);agv.Wait(); |
离开货架 |
| 20 |
track.LidarArea != -2 |
- |
agv.Queue(()=>{},()=>{ agv.SwitchLidarArea(${track.LidarArea}); }); |
切换激光避障区域 |
| 20 |
track.IOArea != -1 |
- |
agv.Queue(()=>{},()=>{ agv.SwitchIoArea(${track.IOArea}); }); |
切换IO区域 |
| 20 |
dst.CarLength != -1 && dst.CarWidth != -1 |
- |
agv.Queue(()=>{},()=>{ agv.ChangeAvoidanceParam(${dst.CarLength},${dst.CarWidth}); }); |
切换避障尺寸 |
| 20 |
plan.action=='fetch' && dst.Shelf |
true |
agv.Wait();agv.Fetch(...);agv.Wait(); |
取货 |
| 20 |
plan.action=='put' && dst.Shelf |
true |
agv.Wait();agv.Put(...);agv.Wait(); |
放货 |
| 20 |
track.BiasAlarmThresh >0 || track.DthAlarmThresh > 0 |
- |
agv.Queue(()=>{},()=>{ agv.ChangeTrackingErrThresh(...); }); |
更改跟踪误差阈值 |
4. MultiWheelForkLifter.cs - 多舵轮叉车
| Priority |
useVerb |
blockVerb |
templateString |
说明 |
| 20 |
plan.action=='fetch' && dst.Shelf && plan.curSeg==plan.segN-2 |
true |
agv.Wait();agv.Fetch(...);agv.Wait(); |
取货 |
| 20 |
plan.action=='put' && dst.Shelf && plan.curSeg==plan.segN-2 |
true |
agv.Wait();agv.Put(...);agv.Wait(); |
放货 |
二、TemplateSiteCoderSettings(站点脚本)
1. Kiva.cs
| Priority |
useVerb |
blockVerb |
templateString |
说明 |
| 25 |
plan.action=='fetch' && plan.segN == 1 && dst.Shelf |
true |
agv.FetchInPlace(...);agv.Wait(); |
原地取货 |
2. Forklift.cs
| Priority |
useVerb |
blockVerb |
templateString |
说明 |
| 25 |
plan.action=='fetch' && plan.segN==1 && dst.Shelf |
true |
agv.FetchInPlace(...);agv.Wait(); |
原地取货 |
3. ArmCar.cs - 机械臂车
| Priority |
useVerb |
blockVerb |
templateString |
说明 |
| 5 |
plan.action=='pickFull' && plan.curSeg==plan.segN-1 |
true |
agv.Wait();agv.PickFull("${dst.name}");agv.Wait(); |
满盘取货 |
| 5 |
plan.action=='pickEmpty' && plan.curSeg==plan.segN-1 |
true |
agv.Wait();agv.PickEmpty("${dst.name}");agv.Wait(); |
空盘取货 |
| 5 |
plan.action=='putFull' && plan.curSeg==plan.segN-1 |
true |
agv.Wait();agv.PutFull("${dst.name}");agv.Wait(); |
满盘放货 |
| 5 |
plan.action=='putEmpty' && plan.curSeg==plan.segN-1 |
true |
agv.Wait();agv.PutEmpty("${dst.name}");agv.Wait(); |
空盘放货 |
| 5 |
plan.action=='MoveArm' && plan.curSeg==plan.segN-1 |
true |
agv.Wait();agv.MoveArm(${dst.MoveDirection});agv.Wait(); |
移动机械臂 |
三、ProgramTrackCoderSettings(程序化路径脚本)
| 车型 |
Priority |
Program |
说明 |
| MultiWheelLifterCar |
19 |
MagTrackCoder |
磁导航路径编码 |
| Kiva |
19 |
AllCarMagTrackCoder |
磁导航路径编码 |
| Kiva |
5 |
KivaCarTrackCoder |
Kiva旋转控制 |
四、字段类型定义
BasicCarFields
BasicSiteFields
BasicTrackFields
BasicPlanFields
五、扩展字段类型
MultiWheelLifterTrackFields (继承 BasicTrackFields)
MultiWheelLifterSiteFields (继承 BasicSiteFields)
KivaSiteFields (继承 BasicSiteFields)
KivaTrackFields (继承 BasicTrackFields)
KivaPlanFields (继承 BasicPlanFields)
六、ITrackCoder 接口
程序化脚本生成器需要实现 ITrackCoder 接口:
文档生成时间: 2024年