package Ġorg . first insp ires . ft c . team code . match op modes Ċ Ċ import Ġcom . qual comm . robot core . event loop . op mode . Linear Op Mode Ċ import Ġcom . qual comm . robot core . hardware . Gamepad Ċ import Ġorg . first insp ires . ft c . robot core . external . hardware . camera . Web cam Name Ċ import Ġorg . first insp ires . ft c . team code . Constants Ċ import Ġorg . first insp ires . ft c . team code . controllers . M ec an um Drive Train Ċ import Ġorg . first insp ires . ft c . team code . cv . Find Ring Auto Pipeline Ċ import Ġorg . first insp ires . ft c . team code . cv . Ring Pipeline Ċ import Ġorg . first insp ires . ft c . team code . robot configs . Robot Base Ċ import Ġorg . open ft c . easy opencv .* Ċ Ċ abstract Ġclass ĠGeneric Op Mode Base Ġ: ĠLinear Op Mode () Ġ{ ĊĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġweb cam : ĠOpen Cv Camera ĊĊĊĠĠĠ Ġ// Ġset Ġpipeline Ġhere , Ġafter Ġcreating Ġit Ġin Ġpipelines Ġfolder ĊĠĠĠ Ġ// Ġchange Ġthese Ġlines Ġwith Ġnew Ġpipelines Ġlater Ġon ĊĠĠĠ Ġvar Ġpipeline : ĠOpen Cv Pipeline Ġ= ĠRing Pipeline () ĊĊĊĠĠĠ Ġfun ĠsetUp Pipeline Ult imate Goal ( right : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( pipeline Ġas ĠRing Pipeline ). right Ġ= Ġright ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġinit CV () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcamera Monitor View Id Ġ= Ġhardware Map . app Context . resources . getIdentifier (" camera Monitor View Id ", Ġ" id ", Ġhardware Map . app Context . packageName ) ĊĠĠĠĠĠĠĠ Ġweb cam Ġ= ĠOpen Cv Camera Factory . getInstance (). create Web cam ( hardware Map . get ( Web cam Name :: class . java , Ġ" Web cam Ġ 1 "), Ġcamera Monitor View Id ) ĊĊĠĠĠĠĠĠĠ Ġweb cam . open Camera Device () ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠ Ġ* ĠSpecify Ġthe Ġimage Ġprocessing Ġpipeline Ġwe Ġwish Ġto Ġinvoke Ġupon Ġreceipt ĊĠĠĠĠĠĠĠĠ Ġ* Ġof Ġa Ġframe Ġfrom Ġthe Ġcamera . ĠNote Ġthat Ġswitching Ġpipelines Ġon - the - fly ĊĠĠĠĠĠĠĠĠ Ġ* Ġ( while Ġa Ġstreaming Ġsession Ġis Ġin Ġflight ) Ġ* IS * Ġsupported . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĊĊĠĠĠĠĠĠĠ Ġweb cam . set Pipeline ( pipeline ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit CV No Web cam () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcamera Monitor View Id Ġ= Ġhardware Map . app Context . resources . getIdentifier (" camera Monitor View Id ", Ġ" id ", Ġhardware Map . app Context . packageName ) ĊĠĠĠĠĠĠĠ Ġweb cam Ġ= ĠOpen Cv Camera Factory . getInstance (). create Internal Camera ( Open Cv Internal Camera . Camera Direction . BACK , Ġcamera Monitor View Id ) ĊĊĠĠĠĠĠĠĠ Ġweb cam . open Camera Device () ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠ Ġ* ĠSpecify Ġthe Ġimage Ġprocessing Ġpipeline Ġwe Ġwish Ġto Ġinvoke Ġupon Ġreceipt ĊĠĠĠĠĠĠĠĠ Ġ* Ġof Ġa Ġframe Ġfrom Ġthe Ġcamera . ĠNote Ġthat Ġswitching Ġpipelines Ġon - the - fly ĊĠĠĠĠĠĠĠĠ Ġ* Ġ( while Ġa Ġstreaming Ġsession Ġis Ġin Ġflight ) Ġ* IS * Ġsupported . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġweb cam . set Pipeline ( pipeline ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart CV () Ġ{ ĊĠĠĠĠĠĠĠ Ġweb cam . start Streaming ( 3 2 0 , Ġ 2 4 0 , ĠOpen Cv Camera Rotation . UP RIGHT ) ĊĠĠĠĠĠĠĠ Ġweb cam . resume Viewport () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstop CV () Ġ{ ĊĠĠĠĠĠĠĠ Ġweb cam . stop Streaming () ĊĠĠĠĠĠĠĠ Ġweb cam . pause Viewport () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Ġfield Ġconstants . ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠT ILE _ LENGTH Ġ= ĠConstants . tile _ length ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġauto Find R ings ( gamepad : ĠGame pad , Ġrobot : ĠRobot Base ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpipeline Ġ= ĠFind Ring Auto Pipeline () ĊĊĠĠĠĠĠĠĠ Ġweb cam . open Camera Device () ĊĠĠĠĠĠĠĠ Ġweb cam . set Pipeline ( pipeline ) ĊĠĠĠĠĠĠĠ Ġstart CV () ĊĠĠĠĠĠĠĠ Ġwhile Ġ(! gamepad . b Ġ&& Ġop Mode IsActive ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrobot . local izer . update () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr ings Ġ= Ġ( pipeline Ġas ĠFind Ring Auto Pipeline ). r ings () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( r ings . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrobot . drive Train . start ( M ec an um Drive Train . Vector ( 0 . 0 , Ġ 0 . 0 , Ġ 0 . 5 ). speed s ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrobot . drive Train . start ( M ec an um Drive Train . Vector ( 0 . 0 , Ġ 0 . 7 5 , Ġr ings [ 0 ]. turn Control ). speed s ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsorted R ings Ġ= Ġr ings . sorted With ( compare By Ġ{ Ġit . distance Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclosest Ring Ġ= Ġsorted R ings [ 0 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrobot . drive Train . start ( M ec an um Drive Train . Vector ( 0 . 0 , Ġ 0 . 7 5 , Ġclosest Ring . turn Control Ġ* Ġ 2 ). speed s ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstop CV () ĊĊĠĠĠ Ġ} ĊĊ Ċ }