Add ABB120 demo suite and docs
This commit is contained in:
9
kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_00_MinimalModule.grl
vendored
Normal file
9
kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_00_MinimalModule.grl
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
language grl 0.1
|
||||
module W2MinimalModule
|
||||
const speed v_joint = joint(40 %)
|
||||
const zone zf = fine
|
||||
target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] }
|
||||
proc main()
|
||||
movej home speed v_joint zone zf
|
||||
end
|
||||
end
|
||||
45
kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_10_DataTargetToolFrame.grl
vendored
Normal file
45
kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_10_DataTargetToolFrame.grl
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
language grl 0.1
|
||||
module W2DataTargetToolFrame
|
||||
persistent tool gripper = tool {
|
||||
tcp: pose(0 mm, 0 mm, 100 mm, 0 deg, 0 deg, 0 deg),
|
||||
mass: 1.25 kg,
|
||||
cog: [0 mm, 0 mm, 40 mm]
|
||||
}
|
||||
persistent frame fixture = frame { origin: pose(800 mm, 0 mm, 0 mm, 0 deg, 0 deg, 0 deg) }
|
||||
const bool use_fixture = true
|
||||
const int slot_count = 2
|
||||
const real blend_scale = 1.5
|
||||
const string recipe = "w2"
|
||||
const time settle = 250 ms
|
||||
const length lift = 80 mm
|
||||
const angle face = 90 deg
|
||||
const percent safe_percent = 40 %
|
||||
const speed vj = joint(safe_percent)
|
||||
const speed vl = linear(120 mm/s)
|
||||
const zone z5 = z(5 mm)
|
||||
const pose safe_pose = pose(500 mm, 0 mm, 100 mm, 0 deg, 0 deg, face)
|
||||
target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] }
|
||||
target approach = joint_target {
|
||||
joints: [0 deg, -22.918312 deg, 28.647890 deg, 0 deg, 11.459156 deg, 0 deg]
|
||||
}
|
||||
target pick = pose_target {
|
||||
pose: pose(500 mm, 0 mm, 0 mm, 0 deg, 0 deg, 90 deg),
|
||||
config: robot_config(0, 0, 1),
|
||||
tool: gripper,
|
||||
frame: fixture
|
||||
}
|
||||
target pick_q = pose_target {
|
||||
pose: poseq(500 mm, 30 mm, 0 mm, 0, 0, 0, 1),
|
||||
tool: gripper,
|
||||
frame: fixture
|
||||
}
|
||||
proc main()
|
||||
set_tool gripper
|
||||
set_frame fixture
|
||||
set_speed vl
|
||||
set_zone z5
|
||||
movej home speed vj zone fine
|
||||
movej approach speed vj zone z5 tool gripper frame fixture
|
||||
movel pick_q speed vl zone z5 tool gripper frame fixture
|
||||
end
|
||||
end
|
||||
20
kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_20_ExpressionMath.grl
vendored
Normal file
20
kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_20_ExpressionMath.grl
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
language grl 0.1
|
||||
module W2ExpressionMath
|
||||
const real blend_base = 5 + 5
|
||||
const real trig_value = sin(30 deg)
|
||||
const bool math_ok = (10 mm + 5 mm) > 12 mm and not false
|
||||
const speed v_pick = linear(100 + 50 mm/s)
|
||||
const speed v_safe = linear(max(50 mm/s, 200 mm/s / 2))
|
||||
const zone z_app = z(clamp(blend_base mm, 1 mm, 50 mm))
|
||||
target home = joint_target {
|
||||
joints: [0 deg, (10 + 5) deg, -30 deg, 0 deg, abs(-15) deg, round(pi) deg]
|
||||
}
|
||||
target pick = pose_target {
|
||||
pose: pose(400 + 50 mm, 20 * 2 mm, sqrt(90000) mm, 0 deg, 0 deg, atan2(1, 1))
|
||||
}
|
||||
proc main()
|
||||
movej home speed v_safe zone z_app
|
||||
movel pick speed v_pick zone z_app
|
||||
wait io.ai[2] > 0.5 timeout 1 + 1 s
|
||||
end
|
||||
end
|
||||
21
kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_30_MotionAllTypes.grl
vendored
Normal file
21
kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_30_MotionAllTypes.grl
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
language grl 0.1
|
||||
module W2MotionAllTypes
|
||||
persistent tool gripper = tool { tcp: pose(0 mm, 0 mm, 80 mm, 0 deg, 0 deg, 0 deg), mass: 1 kg }
|
||||
persistent frame fixture = frame { origin: pose(800 mm, 0 mm, 0 mm, 0 deg, 0 deg, 0 deg) }
|
||||
const speed vj = joint(45 %)
|
||||
const speed vl = linear(150 mm/s)
|
||||
const zone z10 = z(10 mm)
|
||||
target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] }
|
||||
target start = pose_target { pose: pose(500 mm, 0 mm, 0 mm, 0 deg, 0 deg, 0 deg), tool: gripper, frame: fixture }
|
||||
target mid = pose_target { pose: pose(550 mm, 50 mm, 0 mm, 0 deg, 0 deg, 0 deg), tool: gripper, frame: fixture }
|
||||
target finish = pose_target { pose: pose(600 mm, 0 mm, 0 mm, 0 deg, 0 deg, 0 deg), tool: gripper, frame: fixture }
|
||||
proc main()
|
||||
set_tool gripper
|
||||
set_frame fixture
|
||||
set_speed vl
|
||||
set_zone z10
|
||||
movej home speed vj zone fine
|
||||
movel start
|
||||
movec via mid target finish speed linear(100 mm/s) zone fine
|
||||
end
|
||||
end
|
||||
26
kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_40_PathEvents.grl
vendored
Normal file
26
kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_40_PathEvents.grl
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
language grl 0.1
|
||||
module W2PathEvents
|
||||
const speed vj = joint(35 %)
|
||||
const speed vl = linear(120 mm/s)
|
||||
const zone z10 = z(10 mm)
|
||||
target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] }
|
||||
target pick = joint_target { joints: [11.459156 deg, -20.053523 deg, 25.783101 deg, 5.729578 deg, -11.459156 deg, 17.188734 deg] }
|
||||
target place = joint_target { joints: [-20.053523 deg, -14.323945 deg, 20.053523 deg, -14.323945 deg, 8.594367 deg, -22.918312 deg] }
|
||||
path generated_path {
|
||||
source {
|
||||
type: "cad_curve",
|
||||
id: "edge_032",
|
||||
sample_distance: 5 mm
|
||||
}
|
||||
defaults { speed: vj, zone: z10 }
|
||||
point p_home movej home zone fine
|
||||
event before p_pick io.do[10] = true
|
||||
point p_pick movej pick speed vj
|
||||
event after p_pick wait io.di[10] == true timeout 2 s on_timeout alarm "pick sensor timeout"
|
||||
point p_place movej place speed vj
|
||||
event at p_place distance 10 mm pulse io.do[11] duration 100 ms
|
||||
}
|
||||
proc main()
|
||||
run_path generated_path
|
||||
end
|
||||
end
|
||||
26
kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_50_OperationProcess.grl
vendored
Normal file
26
kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_50_OperationProcess.grl
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
language grl 0.1
|
||||
module W2OperationProcess
|
||||
const speed v = joint(35 %)
|
||||
const zone zf = fine
|
||||
target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] }
|
||||
path op_path {
|
||||
defaults { speed: v, zone: zf }
|
||||
point p0 movej home
|
||||
}
|
||||
operation pick_op {
|
||||
kind: handling
|
||||
path: op_path
|
||||
process {
|
||||
gripper: "main_clamp",
|
||||
dwell_ms: 50 + 50 ms,
|
||||
clamp_force: max(20, 10)
|
||||
}
|
||||
start_action:
|
||||
io.do[1] = true
|
||||
end_action:
|
||||
io.do[1] = false
|
||||
}
|
||||
proc main()
|
||||
run_operation pick_op
|
||||
end
|
||||
end
|
||||
23
kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_60_IOWaitPulse.grl
vendored
Normal file
23
kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_60_IOWaitPulse.grl
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
language grl 0.1
|
||||
module W2IOWaitPulse
|
||||
const speed v = joint(35 %)
|
||||
const zone zf = fine
|
||||
target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] }
|
||||
path io_path {
|
||||
defaults { speed: v, zone: zf }
|
||||
point p0 movej home
|
||||
event at p0 distance 5 + 5 mm pulse io.do[20] duration 50 + 50 ms
|
||||
}
|
||||
proc main()
|
||||
io.do[1] = true
|
||||
io.ao[1] = 0.75
|
||||
io.go[1] = 3
|
||||
wait all(io.di[1] == true, io.di[2] == false) timeout 1 s on_timeout alarm "all timeout"
|
||||
wait any(io.di[3] == true, io.di[4] == true) timeout 1 s
|
||||
wait rising(io.di[5]) timeout 1 s
|
||||
wait falling(io.di[6]) timeout 1 s
|
||||
wait changed(io.di[7]) timeout 1 s
|
||||
pulse io.do[2] duration 50 + 50 ms
|
||||
run_path io_path
|
||||
end
|
||||
end
|
||||
35
kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_70_ControlFlow.grl
vendored
Normal file
35
kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_70_ControlFlow.grl
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
language grl 0.1
|
||||
module W2ControlFlow
|
||||
const speed v = joint(30 %)
|
||||
const zone zf = fine
|
||||
var bool ready = true
|
||||
var bool fault = false
|
||||
var int mode = 2
|
||||
var int retry = 0
|
||||
target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] }
|
||||
proc main()
|
||||
if ready == true
|
||||
movej home speed v zone zf
|
||||
elseif fault == true
|
||||
alarm FAULT "fault"
|
||||
else
|
||||
alarm NOT_READY "not ready"
|
||||
end
|
||||
while retry < 1
|
||||
retry = 1
|
||||
continue
|
||||
end
|
||||
for i = 1 to 2 step 1
|
||||
movej home speed v zone zf
|
||||
end
|
||||
switch mode
|
||||
case 1
|
||||
alarm MODE1 "mode 1"
|
||||
break
|
||||
case 2
|
||||
movej home speed v zone zf
|
||||
default
|
||||
alarm MODE_OTHER "mode other"
|
||||
end
|
||||
end
|
||||
end
|
||||
26
kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_80_ProcFuncCall.grl
vendored
Normal file
26
kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_80_ProcFuncCall.grl
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
language grl 0.1
|
||||
module W2ProcFuncCall
|
||||
const speed v = joint(30 %)
|
||||
const zone zf = fine
|
||||
var int global_count = 0
|
||||
target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] }
|
||||
proc read_part(out bool ok)
|
||||
ok = true
|
||||
end
|
||||
proc increment_retry(inout int retry)
|
||||
retry = 1
|
||||
end
|
||||
func bool can_run(in int retry, in int max_retry)
|
||||
return retry < max_retry
|
||||
end
|
||||
proc main()
|
||||
var bool ok = false
|
||||
var int retry = 0
|
||||
call read_part(ok)
|
||||
call increment_retry(retry)
|
||||
if retry < 3
|
||||
movej home speed v zone zf
|
||||
end
|
||||
return
|
||||
end
|
||||
end
|
||||
25
kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_90_ExceptionAlarm.grl
vendored
Normal file
25
kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_90_ExceptionAlarm.grl
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
language grl 0.1
|
||||
module W2ExceptionAlarm
|
||||
const speed v = joint(30 %)
|
||||
const zone zf = fine
|
||||
target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] }
|
||||
trap recover_trap()
|
||||
raise E_STOP
|
||||
end
|
||||
task background cycle 20 ms
|
||||
alarm TASK_MONITOR "task boundary"
|
||||
end
|
||||
proc main()
|
||||
alarm START "start" severity info
|
||||
try
|
||||
movej home speed v zone zf
|
||||
raise E_PICK_FAILED
|
||||
catch E_PICK_FAILED
|
||||
alarm RECOVER "recovering" severity warning
|
||||
finally
|
||||
alarm CLEANUP "cleanup"
|
||||
end
|
||||
enable interrupt guard
|
||||
disable interrupt guard
|
||||
end
|
||||
end
|
||||
80
kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_99_FullSpecExample.grl
vendored
Normal file
80
kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_99_FullSpecExample.grl
vendored
Normal file
@@ -0,0 +1,80 @@
|
||||
language grl 0.1
|
||||
module W2FullSpecExample
|
||||
persistent tool gripper = tool {
|
||||
tcp: pose(0 mm, 0 mm, 120 mm, 0 deg, 0 deg, 0 deg),
|
||||
mass: 1.5 kg
|
||||
}
|
||||
persistent frame fixture = frame {
|
||||
origin: pose(800 mm, 0 mm, 200 mm, 0 deg, 0 deg, 0 deg)
|
||||
}
|
||||
const speed v_fast = joint(55 %)
|
||||
const speed v_pick = linear(180 mm/s)
|
||||
const zone z_pick = z(10 mm)
|
||||
target home = joint_target {
|
||||
joints: [0 deg, -20 deg, 40 deg, 0 deg, 30 deg, 0 deg]
|
||||
}
|
||||
target pick = pose_target {
|
||||
pose: pose(500 mm, 120 mm, 300 mm, 180 deg, 0 deg, 90 deg),
|
||||
config: robot_config(0, 0, 1),
|
||||
tool: gripper,
|
||||
frame: fixture
|
||||
}
|
||||
target place = pose_target {
|
||||
pose: pose(650 mm, -100 mm, 320 mm, 180 deg, 0 deg, 90 deg),
|
||||
config: robot_config(0, 0, 1),
|
||||
tool: gripper,
|
||||
frame: fixture
|
||||
}
|
||||
path pick_path {
|
||||
source {
|
||||
type: "generated_example",
|
||||
id: "pick_path"
|
||||
}
|
||||
defaults {
|
||||
tool: gripper,
|
||||
frame: fixture,
|
||||
speed: v_pick,
|
||||
zone: z_pick
|
||||
}
|
||||
point approach movej home speed v_fast zone fine
|
||||
point above_pick movel pick offset z 100 mm
|
||||
point at_pick movel pick zone fine
|
||||
event after at_pick io.do[1] = true
|
||||
event after at_pick wait io.di[1] == true timeout 2 s on_timeout alarm "Clamp close timeout"
|
||||
point leave_pick movel pick offset z 100 mm
|
||||
}
|
||||
path place_path {
|
||||
defaults {
|
||||
tool: gripper,
|
||||
frame: fixture,
|
||||
speed: v_pick,
|
||||
zone: z_pick
|
||||
}
|
||||
point above_place movel place offset z 100 mm
|
||||
point at_place movel place zone fine
|
||||
event after at_place io.do[1] = false
|
||||
event after at_place wait io.di[2] == true timeout 2 s on_timeout alarm "Clamp open timeout"
|
||||
point leave_place movel place offset z 100 mm
|
||||
}
|
||||
operation pick_op {
|
||||
kind: handling
|
||||
path: pick_path
|
||||
process {
|
||||
gripper: "main_clamp"
|
||||
}
|
||||
}
|
||||
operation place_op {
|
||||
kind: handling
|
||||
path: place_path
|
||||
process {
|
||||
gripper: "main_clamp"
|
||||
}
|
||||
}
|
||||
proc main()
|
||||
set_tool gripper
|
||||
set_frame fixture
|
||||
run_operation pick_op
|
||||
run_operation place_op
|
||||
movej home speed v_fast zone fine
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user