digraph foo { graph[rankdir=LR] "Q1" -> "Q2" -> "Q3"; "Q3" -> "Q4"; "Q4" -> "Q5" -> "Q6"; { rank=same; Q1; Q4 } }
digraph RootGraph { rankdir=LR; size="800,400"; splines=ortho; edge [color="#06306F", fillcolor="#FFFFFF"]; subgraph Flowchart { "Start" [label=Start, shape=ellipse]; "Depart Conveyor\nMove\nForward: 1\nSteer: 0.5" [label="Depart Conveyor\nMove\nForward: 1\nSteer: 0.5", shape=box]; "Line Follow" [label="Line Follow", shape=box]; "Turn CCW" [label="Turn CCW", shape=box]; "Go up ramp\nLine Follow" [label="Go up ramp\nLine Follow", shape=box]; "Turn CCW1" [label="Turn CCW", shape=box]; "Line Follow1" [label="Line Follow", shape=box]; "Move Forward" [label="Move Forward", shape=box]; "At Delivery Nexus" [label="At Delivery Nexus", shape=box]; "Any more eggs?" [label="Any more eggs?", shape=diamond]; "dropEggs" [label=dropEggs, sides="6", shape=polygon]; "Move\nForward: 0.35\nSteer: 0.65" [label="Move\nForward: 0.35\nSteer: 0.65", shape=box]; "dropEggs1" [label=dropEggs, sides="6", shape=polygon]; "Move\nForward: -0.35\nSteer: -0.65" [label="Move\nForward: -0.35\nSteer: -0.65", shape=box]; "Continue\nMovement" [label="Continue\nMovement", shape=box]; "Reverse" [label=Reverse, shape=box]; "Reverse1" [label=Reverse, shape=box]; "End" [label=End, shape=ellipse]; "Next Eggs\nBrown?" [label="Next Eggs\nBrown?", shape=diamond]; } "Start"->"Depart Conveyor\nMove\nForward: 1\nSteer: 0.5"; "Depart Conveyor\nMove\nForward: 1\nSteer: 0.5"->"Line Follow" [label="Line\nAfter at\nleast 1s"]; "Line Follow"->"Turn CCW" [label="Junction`"]; "Turn CCW"->"Go up ramp\nLine Follow" [label="90 deg"]; "Go up ramp\nLine Follow"->"Turn CCW1" [label=Junction]; "Turn CCW1"->"Line Follow1" [label="90 deg"]; "Line Follow1"->"Move Forward" [label="2 Junctions"]; "Move Forward"->"At Delivery Nexus" [label="10cm"]; "Any more eggs?"->"dropEggs" [label=Yes]; "dropEggs"->"At Delivery Nexus"; "Move\nForward: 0.35\nSteer: 0.65"->"dropEggs1" [label="Line\nAt least\n45deg"]; "dropEggs1"->"Move\nForward: -0.35\nSteer: -0.65"; "Continue\nMovement"->"At Delivery Nexus" [label=Line]; "Continue\nMovement"->"Reverse" [label="90 deg\nTimeout"]; "Move\nForward: -0.35\nSteer: -0.65"->"Continue\nMovement" [label="45 deg"]; "Reverse"->"Move\nForward: -0.35\nSteer: -0.65" [label="10cm"]; "Any more eggs?"->"Reverse1" [label=No]; "Reverse1"->"End" [label="30cm"]; "At Delivery Nexus"->"Next Eggs\nBrown?"; "Next Eggs\nBrown?"->"Move\nForward: 0.35\nSteer: 0.65" [label=Yes]; "Next Eggs\nBrown?"->"Any more eggs?" [label="No\n"]; {rank=min; Start} {rank=max; End} {rank=same; "At Delivery Nexus"; "Depart Conveyor\nMove\nForward: 1\nSteer: 0.5"} }
Functions
q1_collect_d2d3
[Q1] Collect D2/3 Eggs Start: Starting position End: Last position on conveyor
q2_deliver_d2d3
[Q2] Deliver D2/3 Eggs Start: Last position on conveyor End: Junction between D2/3 boxes
q3_return_from_d2d3
[Q3] Return from D2/3 Boxes Start: Junction between D2/3 boxes End: Starting square (at centre junction, facing west)
q4_collect_d1
[Q4] Collect D1 Eggs Start: Starting square (at centre junction, facing west) End: Last position on conveyor
q5_deliver_d1
[Q5] Deliver D1 Eggs Start: Last position on conveyor End: D1 box
q6_return_from_d1
[Q6] Return from d1 Start: D1 box End: Within starting area
Some bits of code are reused across multiple routes
Typedefs
waitForLine
goToConveyor
conveyorCollect
Drives along the conveyor collecting eggs.
digraph RootGraph { rankdir=LR; splines=ortho; edge [color="#06306F", fillcolor="#FFFFFF"]; subgraph Flowchart { node [color="#06306F", fillcolor="#FFFFFF", fontcolor="#06306F", style=filled]; "Start" [label=Start, shape=box, style=rounded]; "Straight along conveyor" [label="Straight along conveyor", shape=box]; "Check Egg Type" [label="Check Egg Type", shape=box]; "Drive Straight" [label="Drive Straight", shape=box]; "Arm Down" [label="Arm Down", shape=box]; "Arm Close" [label="Arm Close", shape=box]; "Arm Up" [label="Arm Up", shape=box]; "Arm Open" [label="Arm Open", shape=box]; "End" [label=End, shape=box, style=rounded]; } "Start"->"Straight along conveyor"; "Straight along conveyor"->"Check Egg Type" [label=LSL]; "Check Egg Type"->"Drive Straight" [label=shouldCollect]; "Drive Straight"->"Arm Down" [label="10cm"]; "Arm Down"->"Arm Close"; "Arm Close"->"Arm Up"; "Arm Up"->"Arm Open"; "Arm Open"->"Straight along conveyor" [label=Else]; "Arm Open"->"End" [label="At position 5"]; "Check Egg Type"->"End" [label="Not shouldCollect\nAnd at position 5"]; {rank=min; Start} {rank=max; End} }
dropEggs
Public Members
negate::
s