package Ġorg . first insp ires . ft c . team code . internal Ċ Ċ import Ġandroid . util . Log Ċ import Ġcom . qual comm . ft c common . Sound Player Ċ import Ġcom . qual comm . robot core . event loop . op mode . Linear Op Mode Ċ import Ġcom . qual comm . robot core . util . Elapsed Time Ċ import Ġorg . first insp ires . ft c . robot core . external . Class Factory Ċ import Ġorg . first insp ires . ft c . robot core . external . navigation . Vu for ia Local izer Ċ import Ġorg . first insp ires . ft c . robot core . internal . system . App Util Ċ import Ġorg . first insp ires . ft c . team code . R Ċ import Ġorg . first insp ires . ft c . team code . internal . config . Config Ċ import Ġorg . first insp ires . ft c . team code . internal . units .* Ċ Ċ /** Ċ Ġ* Ġ è¿Ļæĺ¯ æķ´ä¸ª ç¨ĭåºı æľĢ éĩįè¦ģ çļĦ ç±» ï¼Į æĺ¯ä¸Ģä¸ª æĬ½ è±¡ ç±» ãĢĤ Ċ Ġ* Ġ çĶ±äºİ çĽ´æİ¥ ç»§æī¿ Linear Op Mode éľĢè¦ģ åľ¨ ç»§æī¿ åĲİçļĦ ç±» éĩĮ å®ŀä¾ĭ åĮĸ ä½ł éľĢè¦ģ çļĦ ç»Ħä»¶ ãĢĤ Ċ Ġ* Ġ æĪĳä»¬ ä¸ºäºĨ è§Ħ éģ¿ è¿Ļä¸ª éº » çĥ ¦ äºĭ ï¼Į äºİ æĺ¯ çĽ´æİ¥ çĶ¨ è¿Ļä¸ª ç±» ç»§æī¿ Linear Op Mode ï¼Į åĨį åľ¨ è¿ĻéĩĮ å®ŀä¾ĭ åĮĸ ï¼Į æľĢåĲİ çĶ¨ éľĢè¦ģ åĲ¯åĬ¨ çļĦ ç¨ĭåºı ç»§æī¿ è¿Ļä¸ª ç±» ãĢĤ Ċ Ġ* Ġ ç¨ĭåºı åı¯ä»¥ æł¹æį® èĩªå·±çļĦ éľĢæ±Ĥ æĿ¥ è°ĥæķ´ éľĢè¦ģ å®ŀä¾ĭ åĮĸ çļĦ ç»Ħä»¶ ï¼Į åľ¨ ä¸ĭ æĸ¹ çļĦ æŀĦéĢł æĸ¹æ³ķ ä¸Ń éĢļè¿ĩ å¸ĥ å°Ķ éĩı æĿ¥ å£°æĺİ ãĢĤ Ċ Ġ* Ġ æĮī éľĢ å®ŀä¾ĭ åĮĸ æľīæķĪ çļĦ åĩı å°ĳ äºĨ äºĨ Configure ĠRobot çļĦæĹ¶éĹ´ ï¼Į åĩı å°ĳ äºĨ init éĺ¶æ®µ çļĦæĹ¶éĹ´ ï¼Į å¹¶ åĩı å°ĳ äºĨ ç©º æĮĩéĴĪ å¼Ĥå¸¸ çļĦ åı¯èĥ½ æĢ§ ãĢĤ Ċ Ġ*/ Ċ abstract Ġclass ĠBase Op Mode Ġconstructor ( val Ġrun Ch assis : ĠBoolean Ġ= Ġtrue , Ġval Ġrun Lift : ĠBoolean Ġ= Ġtrue , Ġval Ġrun Vu for ia : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrun Tensor Flow : ĠBoolean Ġ= Ġtrue , Ġval Ġrun IM U : ĠBoolean Ġ= Ġtrue , Ġval Ġrun Collect : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrun Arm : ĠBoolean Ġ= Ġtrue ) Ġ: ĠLinear Op Mode () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" Base Op Mode " // çĶ¨äºİ ä½ľä¸º Log çļĦ TAG ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»Ħä»¶ çļĦ å®ŀä¾ĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġch assis : ĠCh assis // åºķ çĽĺ ĊĠĠĠ Ġlateinit Ġvar Ġlift : ĠLift // åįĩ éĻį ĊĠĠĠ Ġlateinit Ġvar Ġv u for ia : ĠV u for ia // è§Ĩ è§ī è¯ĨåĪ« ĊĠĠĠ Ġlateinit Ġvar Ġtensor Flow : ĠTensorFlow // çī© ä½ĵ è¿½ è¸ª ĊĠĠĠ Ġlateinit Ġvar Ġim u : ĠI MU // æĥ ¯ æĢ§ æµĭ éĩı åįķåħĥ ĊĠĠĠ Ġlateinit Ġvar Ġcollect : ĠCollect // æĶ¶éĽĨ ĊĠĠĠ Ġlateinit Ġvar Ġarm : ĠArm // æľº æ¢ ° èĩ Ĥ ĊĊĠĠĠ Ġvar Ġgame pad Monitor Ġ= Ġfalse // æīĭ æŁ Ħ çĽĳ æµĭ ĊĠĠĠ Ġprivate Ġval Ġwelcome Time Ġ= ĠE lapsed Time () // è®¡ æĹ¶ åĻ¨ ĊĠĠĠ Ġprivate Ġval Ġb atter Time Ġ= ĠE lapsed Time () // è®¡ æĹ¶ åĻ¨ ĊĊĠĠĠ Ġprivate Ġval Ġcreate Vu for ia Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Vu for ia Ġ-> Ġ 0 // äºĮ èĢħ éĥ½ æĪĸ ä»ħ åĽ¾åĥı è¯ĨåĪ« è¿Ĳè¡Į ĊĠĠĠĠĠĠĠ Ġrun Tensor Flow Ġ&& Ġ! run Vu for ia Ġ-> Ġ 1 // ä»ħ çī© ä½ĵ è¿½ è¸ª è¿Ĳè¡Į ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 2 // éĥ½ ä¸į è¿Ĳè¡Į ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åįı åĬ© çº¿ç¨ĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġassist Thread Ġ= ĠThread Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġb atter Low Times Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" assist Thread ") ĊĠĠĠĠĠĠĠ Ġval Ġtime Ġ= ĠE lapsed Time () ĊĠĠĠĠĠĠĠ ĠwaitFor Start () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( op Mode IsActive ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( gamepad Monitor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( gamepad 1 . gamepad Id Ġ== Ġ- 2 Ġ&& Ġtime . seconds () >= 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsound ( R . raw . handle _ disconnect )// æīĭ æŁ Ħ æĸŃ è¿ŀ æıĲç¤º éŁ³ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime . reset () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( get Battery Voltage () Ġ< Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb atter Low Times ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( b atter Time . seconds () >= 5 Ġ&& Ġb atter Low Times >= 2 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb atter Time . reset () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsound ( R . raw . battery _ low ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġb atter Low Times Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( gamepad 1 . right _ stick _ button ) Ġwelcome () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¡«åĨĻ æľºåĻ¨ äºº ä»£çłģ çļĦ åľ°æĸ¹ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġrun () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĽłä¸º æ¶ ī åıĬ åĪ° ç¡¬ ä»¶ åºĵ è°ĥçĶ¨ çŃī éĥ¨åĪĨ å¯¹è±¡ éľĢè¦ģ åľ¨ run Op Mode () ä¸Ń è°ĥçĶ¨ ï¼Į ä¸ºäºĨ çħ§ é¡ ¾ åĪĿå§ĭåĮĸ åĴĮ ä¸» ç¨ĭåºı è¿Ĳè¡Į ï¼Į è¿ĻéĩĮ final äºĨ åİŁ æĿ¥çļĦ run Op Mode () ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġrun Op Mode () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" init Robot () ") ĊĠĠĠĠĠĠĠ Ġtelemetry . addData ("> ", Ġ" åĪĿå§ĭåĮĸ ä¸Ń ï¼Į è¯· åĭ ¿ å¼Ģå§ĭ ") ĊĠĠĠĠĠĠĠ Ġtelemetry . update () ĊĠĠĠĠĠĠĠ Ġinit Robot () // åĪĿå§ĭåĮĸ æľºåĻ¨ äºº ĊĠĠĠĠĠĠĠ Ġassist Thread . start () // åĲ¯åĬ¨ åįı åĬ© çº¿ç¨ĭ ĊĠĠĠĠĠĠĠ Ġtelemetry . addData ("> ", Ġ" åĪĿå§ĭåĮĸ å®Į æ¯ķ ï¼Į åı¯ä»¥ åĲ¯åĬ¨ -> >>>> >> >>> ") ĊĠĠĠĠĠĠĠ Ġtelemetry . update () ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" run () ") ĊĠĠĠĠĠĠĠ Ġrun () // è¿Ĳè¡Į éĺ¶æ®µ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" stop Robot () ") ĊĠĠĠĠĠĠĠ Ġstop Robot () ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" End ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĿå§ĭåĮĸ æľºåĻ¨ äºº ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit Robot () Ġ{ ĊĠĠĠĠĠĠĠ ĠConfig . op Mode Ġ= Ġthis // å°Ĩ çĽ®åīį åĲ¯åĬ¨ çļĦ Op Mode åıĳéĢģ åĪ° éħįç½® ç±» ĊĊĠĠĠĠĠĠĠ Ġ// çĶ¨äºİ ä¿ĿæĮģ Vu for ia çļĦ åįķ ä¾ĭ ĊĠĠĠĠĠĠĠ Ġwhen ( create Vu for ia ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcamera Monitor View Id Ġ= Ġhardware Map . app Context . resources . getIdentifier (" camera Monitor View Id ", Ġ" id ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhardware Map . app Context . packageName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparameters Ġ= ĠV u for ia Local izer . Parameters ( camera Monitor View Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters . vu for ia License Key Ġ= Ġconfig (). VU FOR IA _ KEY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters . camera Direction Ġ= Ġconfig (). CAMERA _ DIRECTION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig (). vu for ia Ġ= ĠClass Factory . getInstance (). create Vu for ia ( parameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparameters Ġ= ĠV u for ia Local izer . Parameters () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters . vu for ia License Key Ġ= Ġconfig (). VU FOR IA _ KEY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters . camera Direction Ġ= Ġconfig (). CAMERA _ DIRECTION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig (). vu for ia Ġ= ĠClass Factory . getInstance (). create Vu for ia ( parameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig . vu for ia Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// åĪĿå§ĭåĮĸ ç»Ħä»¶ ĊĠĠĠĠĠĠĠ Ġif Ġ( run Ch assis ) Ġch assis Ġ= ĠCh assis () ĊĠĠĠĠĠĠĠ Ġif Ġ( run Lift ) Ġlift Ġ= ĠLift () ĊĠĠĠĠĠĠĠ Ġif Ġ( run Vu for ia ) Ġv u for ia Ġ= ĠV u for ia () ĊĠĠĠĠĠĠĠ Ġif Ġ( run Tensor Flow ) Ġtensor Flow Ġ= ĠTensorFlow () ĊĠĠĠĠĠĠĠ Ġif Ġ( run IM U ) Ġim u Ġ= ĠI MU () ĊĠĠĠĠĠĠĠ Ġif Ġ( run Collect ) Ġcollect Ġ= ĠCollect () ĊĠĠĠĠĠĠĠ Ġif Ġ( run Arm ) Ġarm Ġ= ĠArm () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç¨ĭåºı åģľæŃ¢ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġstop Robot () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( run Vu for ia ) Ġv u for ia . deactivate () ĊĠĠĠĠĠĠĠ Ġif Ġ( run Tensor Flow ) Ġtensor Flow . tf od . shutdown () ĊĠĠĠĠĠĠĠ Ġif Ġ( run IM U ) Ġim u . stop Monitor () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ çĶµ æ±ł çĶµ åİĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Battery Voltage (): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= ĠDouble . POSITIVE _ INFINITY ĊĠĠĠĠĠĠĠ Ġfor Ġ( sensor Ġin Ġhardware Map . voltage Sensor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvoltage Ġ= Ġsensor . voltage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( voltage Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠMath . min ( result , Ġvoltage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ ¬ ¢ è¿İ æĵįä½ľ æīĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwelcome () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( welcome Time . seconds () Ġ>= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwelcome Time . reset () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsound ( R . raw . beginning _ 1 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 4 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsound ( R . raw . beginning _ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 2 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsound ( R . raw . beginning _ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çŃīå¾ħ æīĭåĬ¨ æĮī ä¸ĭ ç»ĵæĿŁ éĶ® ï¼Į èĢĮ éĿŀ çĽ´æİ¥ ç»ĵæĿŁ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠwaitFor End () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhile Ġ( op Mode IsActive ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ Ĵ Ń æĶ¾ å£° éŁ³ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsound ( i : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSound Player . getInstance (). start Playing ( App Util . getInstance (). application . application Context , Ġi ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æīĵåį° Log ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġlog ( msg : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d (" UST ", Ġmsg . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æīĵåį° telemetry ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtelemetry Log ( msg : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtelemetry . addData (" msg ", Ġmsg ) ĊĠĠĠĠĠĠĠ Ġtelemetry . update () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè¿ĶåĽŀ éħįç½® ç±» ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġconfig (): ĠConfig Ġ= ĠConfig Ċ Ċ }