Team L205 IDP
latest
  • Getting started
  • Navigation plan
    • Subroutines
  • Line following algorithm
  • Color classification
  • Hardware access layer
  • Utilities
Team L205 IDP
  • Docs »
  • Navigation plan
  • Edit on GitHub

Navigation plan¶

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

void q1_collect_d2d3(Robot &r)¶

[Q1] Collect D2/3 Eggs Start: Starting position End: Last position on conveyor

_images/q1_collect_d2d3.svg

void q2_deliver_d2d3(Robot &r)¶

[Q2] Deliver D2/3 Eggs Start: Last position on conveyor End: Junction between D2/3 boxes

void q3_return_from_d2d3(Robot &r)¶

[Q3] Return from D2/3 Boxes Start: Junction between D2/3 boxes End: Starting square (at centre junction, facing west)

void q4_collect_d1(Robot &r)¶

[Q4] Collect D1 Eggs Start: Starting square (at centre junction, facing west) End: Last position on conveyor

void q5_deliver_d1(Robot &r)¶

[Q5] Deliver D1 Eggs Start: Last position on conveyor End: D1 box

void q6_return_from_d1(Robot &r)¶

[Q6] Return from d1 Start: D1 box End: Within starting area

Subroutines¶

Some bits of code are reused across multiple routes

Typedefs

typedef

Functions

void waitForLine(Robot &r, LineSensors::Reading::State s)¶
void waitForLine(Robot &r, negate n)¶
void goToConveyor(Robot &r, bool east = true)¶
void conveyorCollect(Robot &r, EGG_CALLBACK shouldCollect)¶

Drives along the conveyor collecting eggs.

_images/conveyorCollect.svg

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} }

void dropEggs(Robot &r, int n = 1)¶
struct
#include <common.h>

Public Members

LineSensors::Reading::State negate::s¶
Next Previous

© Copyright 2015, Eric Wieser, Matt Diesel. Revision cdbe60ce.

Built with Sphinx using a theme provided by Read the Docs.