From 2b827a6f24ba54d113ff55c1c45660fa288c6c5e Mon Sep 17 00:00:00 2001 From: jpiergal Date: Mon, 30 Jan 2017 19:07:59 -0500 Subject: [PATCH 01/69] added rs232 --- build/org/usfirst/frc/team708/robot/OI.class | Bin 2326 -> 2479 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 3914 -> 3964 bytes .../robot/commands/led_out/LED_out.class | Bin 0 -> 1349 bytes .../frc/team708/robot/subsystems/LED.class | Bin 0 -> 1290 bytes dist/FRCUserProgram.jar | Bin 1277717 -> 1284192 bytes src/org/usfirst/frc/team708/robot/OI.java | 7 ++- src/org/usfirst/frc/team708/robot/Robot.java | 55 ++++++++++++------ .../robot/commands/led_out/LED_out.java | 55 ++++++++++++++++++ .../frc/team708/robot/subsystems/LED.java | 48 +++++++++++++++ sysProps.xml | Bin 6190 -> 6190 bytes 10 files changed, 146 insertions(+), 19 deletions(-) create mode 100644 build/org/usfirst/frc/team708/robot/commands/led_out/LED_out.class create mode 100644 build/org/usfirst/frc/team708/robot/subsystems/LED.class create mode 100644 src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java create mode 100644 src/org/usfirst/frc/team708/robot/subsystems/LED.java diff --git a/build/org/usfirst/frc/team708/robot/OI.class b/build/org/usfirst/frc/team708/robot/OI.class index 9e1520e4e8def11b62fe3f3cb851e9a1c4765800..c07ed9af23b74f5496bb299ad15b9aedefe057bd 100644 GIT binary patch literal 2479 zcmbW3>r&fR5Xb)lgFuLD8whF0g;Gk$MQNG_8c13jY~$cq)HbvrRBr!`R$&wd$fDbF@OB^>u&%a;y^}G!8A7e zaT!}OzE%*!rh;#<&6aOvyim{=xWAL}Qo%p~-^(Z|7z*GA8HR#UY|1DrkWk^ZRTid< znv5L<6WC?8SnRQ=v#?n-SU47Z>(neJhvsgIQP6XgN8d{3^O@D8g!c*? znOv!`rt8IIzLeN37IoUg<+IlK%KC|GOt@0XLP8&W+cw$SXPHajxxq1Ss<@iS3Oq+(6aU{%U&1zdaXj)p( z6B^l8c~2|1eV?kTC4{D444$sj+rES_PQtKljuW~Wg?q5&I)48TT-T3W%tl21YXs44e}Idj!1TjB3XaHdaWj*+cxQ-^)6eE0%#_7}Wj%9m&)7F4%wPP-t9XWW6$w0%@c8^?6}QnaoN7yJ1vS;UHer2bcq&@( zRiyq)q@ajeHd1O8X^yaT!M*$=0(D2l8i!c;KOv~0Dl)wM(M6Y=)soxxH9qmA>3pBR zFwf7#taGb%p9482t6UyEn%tCnw7>cRDpaO3cWMMLZwj z+r)Pwe3$rMgf)tDKf>()B*Gl;L4?`=X@oic!w74{pGEi)#b1c|^L~~h ze3zK|D883kDKvFcXlkg?)Kj79Dho~R6`DFMG&Nahx}ZYSH4~cdiqLfENq12V=|v!! zC3=l+8Ud;KBXk|2yMx&F5qjRD_YiUieFXgilnw?6Q~`q>3=s?q80lb?V2t1w5&t>K zYmiC4pnn-^^y^$Hyl{_H^7jve9sH@L*Z z9x)v6U}F0am->z{`36@)A|KHQA&vA3yc%LaQ)i}L3urtDLtoB8$Ad7}Lkh#(2r&qA zGbCB0pel)lv`xxSWfBz3q&h`{j&OM-aCx3$nB-OZmuU*)bVX;VC=cjmjnmtx)8qD% gnp3Bluc%P3$?_AG=w~X>A@cYgMT(NA^<60Z4SHQkG5`Po delta 1058 zcmY+D%TE(g6vn^lYsz#=EN#)YSVa*Z)F&Xc_&}k)ODjIGDrl<~uxeRgjB(K|`$<^4 zaN*7X3ydTtZv7A3`5(A-VT|9oGbWc=eCPhoxpVHF@803BL$Z%d{L1fXy^R@RYhBNH@>16z$BSl=YaSnL{1*hiEI)D7x&ZdnQ zcxmIJp6+nUfn;bxQe)msNyQ@N*UL60B|oC&qoH!6VW3}9>FHLzwOpz#*(lv#)Dj7 zNaJDhX^o{mqOojBF)Gp<)Z~llk4n%Y6?u#*(k&Hfn2PjFMV_aMJVX_FXpBC( z#alqVOnL)9N1)5U&C&Lns$Zd|5u(oU($*2fJhE7zbBo+u6IWTW-M4TJ*GXaA_}|fp z@*R1;ZNaDpHWAxEmkfhy7~evox{j{!Cb~DU(<9bMyV@S^2q{i^=u&#y+>A?cw~yZ= zw@;5pUYp$>x^1!^nQ95sBkq$Mn6tJ`jfx!x#Et_0NV$Fy^q`wRN*^Y8&Xc^JMU?sJ dvoxYfE8fzG6_l`wDSTjM9Tj#c@m(LL{s96YmOlUh diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index 7556f9db02e8c4c651a2d9cda5b72bfb37af9fcc..408af635df0f5816e85c6f905375b761bb16a232 100644 GIT binary patch literal 3964 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 diff --git a/build/org/usfirst/frc/team708/robot/commands/led_out/LED_out.class b/build/org/usfirst/frc/team708/robot/commands/led_out/LED_out.class new file mode 100644 index 0000000000000000000000000000000000000000..bed59e515686f81eecb62d7037c4052f08d42f58 GIT binary patch literal 1349 zcma)5TTc@~6#k~&vh8*&h=L-DTm?#H%e@Nm0Te@0H4(#uFJ#*eu-JAsJG0(?jX%H_ zd8mmG{s4cIF`ntJwUStP**P7OP#J5e(k z#(N9A*rPEDp9iiIL2RC(aKWg$OQrE-j=9Qs0*cS>C=%=qmD{vDAMle8;9VOu^25D#DT8ChP z_L`sztQCN!L0Rt8B9m_!=Wgq^_< zX4}le5jtj0Q#C^vCgmHHO%8ryh-#-2M(9jeTA)??N*JH@x6K_n&38FXbez&diIHnD s(maFNLi&7{9Fi+`QJ5Wy(GJDmHn)&DPq0Ql*SiQ(F#*Hvw$nSm0f`qP_y7O^ literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/LED.class b/build/org/usfirst/frc/team708/robot/subsystems/LED.class new file mode 100644 index 0000000000000000000000000000000000000000..92f190fb249e6fcd82df054d5d145ec5de118322 GIT binary patch literal 1290 zcma)+YflqF6o%g^g>9GRRxWZ;1i7_E=A!6FJc@24G|cO0$AU5z zBY3Ecq*}}fmUIeR*6|1{8dfztX3!j~wC@Fy;X%$S1?I`IZI*3cNOf}T!jYM`e49Jl zo-b1j;bYo0JfV~FFc?|awfwZhg|Gy}+^r(hb)}9C+qLB;Lt8wtOLA$iWHI#QY}a}h zR0@{A!wU|1VmYtKon1~4WY?Wxd1zC$WX|&s%s|wD%YM<67O$)=t((4A@T4h%g7_+= zRS{Xt@|ot-9Rt;sAtPd zx`C&7W*~*(8o-1aje!k3*RW~e1-2L#Z>IUTKLp>Jq23=e-)JYpOzX(zyHXu9wfOVf z58Dh2@$7%T7-}G$C%!GMy!37NfMGD6Q>`@}?jD#mXDUI1YA-v1IHYHnUL$lMp12;% zu+kbXd$>o|1W$0#N+MjnI2NCJ21 z4s;%;yPABC07B&JJ%tvFoFlqNhjZvn&2F^O{S@I%6Yxw`Z>W}2*Q0EzGf9f{Z@2_c zQH-kE73(C@a~R*zwbzu@s}gZSOI$(hxq(VA8lZ3mTr)gI+BvoY(kJm>2B!`NofTsQ9?omMdUvR^t+$; z{^xn-IeWe9U2AI1?AfztXZ%v%tkb~KQbj;Shl4|fgVW5COu=GC(1894&%^%Gu;Hn0 z|GD9r5TUY4rVtK(ng=}LEf@pOhX6H6>xLJ>hAAVuaYXdt;o#^&Y0rJ=(^xzmc-n(Q z8Lcqx;+tWis!OKhOH%(cIi0QE4C1_g@x`RG2GhrFM$g&&rz*52X>c%SSM67YK2^sy}B?=1=39BDE3p?aPPtIh(s~*Xq>nJUYEQOVQ9)0Da*sb zFRxFOe`3WLcmC%+44Vu0lF}r*q`qN>kaIjW?ozQ#8fB*;g3Kq-Ong5`q2`6Ng`0mHN2|j6_!#BKch8DvkXsq+P_?+ zeA=FB?>vcv5V}!52v5GWH%OsS30;tKg9&5&IkuV8M!}%e%?}L=KZ{Lze+i40%cVTcrJnQ+ z9AR4>ItDfJSQbyFbU@EM_6AjuH?@dt2(#w9%%BbEO3nU-8NF}xm0A@_M}3V*^+N`0 zq+zGT_$uc(Oa()g0a`_H1S7%?yFlt>?gnxrdnOT*y)$7=45YUm)9|x{fH_fEiPnO; za~$aF$n=*YCOz=It7h&;*c)=HdyzvvD5Xg{y|e~p21q8TWbYRtG(2#N4^4!&IUQ|?3eOuE&*;+_T~E3r4(GDkd4MK zgQ4z8a-^OcA8z=_!j!pK4O+>P9#ox`82G*?#S9b5oaaV?3~-0fpGuz65Gzn(c;P=1 zAH*9)p}#IEd7ksXGRm$14^7kZ_ACJZ$YH?DOTX>^P3>K)TEIWKO zlJUWkgYlz8?{%JY(OIH>2a;=}FGV)~a#(VEbC|RoXS$B;JhS?IGP3Meyem0* z{AzS&*-N%HP^8^hhFw;dOn!mp3=wlS8sAs7^5<8j9t$6hoetL2P!pw|6>o?*OxN6W zvR&0eLT?ayC7#7F-#6-gjml|bIM@pAUrsrp_-3>dggecEiSm(3z6+AfP1>788wVZ+ zT`EU%T7$)CRltbp#&!J(G!HBX!y-w@c?GjY9+ZtI45=lOBNAFUi6QfD0ps1K2I6wH)$bk^v}uf;rk6RGpx0X9aUU;W8D2coh^Y5z z!Fj6_&mxe+R@MlLC*EMRt=sJLxrNX(WGPI0o z*<7;Bt+L%whQnR4kwsu6lLj?w)KS|&B_dpw@E%6ij+cpNr<@ohQ?12DM^U{=M$k>O zmXt-#f4=2$X@a&BE0eD-+PBDj_C}wQ^qhR93Ra$tc?)^b?WVG&W4w8e_^+`(Gnz`I zPt`M;zSkJ@ASMWYD$A4dA)oeC{>&NoahJ6^MIkj>+xlZYHlp#$L!WT*sOvG&eN91d zT}uxawJnK{M)aaOWbKO}D&TR9jygio5_6j1M7CmIZQF+Q%2wN!bvxbH#n4}USe*D9 z_EhxaD1UMT4)q4iT7W|`Bi%p8edT^m)sq*c9#kJkIv!`lQ#~TltY@H$RsvDxOH~~% zICq#kF(*nZFl=b+MY0vcYbu`I_@K+{@tW&Q+^@%W`Meh92T>YkbgBO#$>AtxSF&<) zMMUAQ7pF0=yBzDkJZmHhv3k1V5SYiZk$%cUXcru=5U866;m8-|BFi_fL0*#U{pwFa zAlO%*;47Y5-#2MvpU;hF$M{+;oFpS;1I^D5U$ylfezlKn`o~;$i=Co51u+r+L$@VI z{$&XxaZKR$Gy&^|`g-63jKvsWW@gdc~+VncDA2fp}9knP^IyjcQ_N z-bVf9UoaXb-_^7!cg+nw$KCj}H682WUoRVS{AIUi|G>YM>&DLVCP?CX??j(yqx@H; z`On9f2i-phy1!O^ofMk*Hha@ewl1~z3++Pt*k*mCUDFd%`|$aWnGrN4Uii}!H87Lu_{i{(-hFLzKyr)n&cMMBy#c5gfP#(=@B*z54zAEV#m5|gTX znBkl7zLZ8QguBr{PIbT`D-W zur!J^Y0K+0bu{ft%0D8eDV^-D^a`)AeF2;(=bOUf>Br4eX;pH|W}{zGlT_$^PmK&z zNU^+MWT{-ByK};XzQFK7HSgx{`#grqp7hO&XV9B`@V&GiIr_A23@pe;{{=n#n^MzN z{wAL)YLF!M|wA1`_xq1xVEhtUqes1bx#x_Ryn)Zr~5=n z6SJC}R6n;Yw@xooo$M<(+&+qge14l71i8344!U4GpO-4{fv-ciWOa;SD7KU#sUmgl zr6h4e$|y|6WiyQ~E?|T#V2&6Oowg+~RjmF}JYmAuL|2ic{gJ%M zM=yI%f18Cw)6lJovU&a_K{~XBbb2hnqR-h#HnfnGYdk=?&%_AwM)<`hjs@WW8?Qyi zX%6Dhx$nlBwVj$_|4)tiQRgdU_Ue&`5|&kS2L3&S;ue}V1I@_l8*eyF`#))n9KC6< za9rIkOjTi~jfv-q3i}e(u(vF?al8{er?b@uloN7)>p?~?5-`*5P%R4Q3XMbLjw}SNS z*>LOxq>e~(fri*^_DM|Evxt;y-Mdk?{jLcAM>ddhJvG*r?LY!0q~RdecOxiO z1AOOB{;qybYZrRK%v%t84M)G^%K)8{?$+s~3t{*54?HT%!S+ocDor-Q^AjAU!hNpe zh&DH>%1gwN05m*};L3sirXYr@=d_{qbxo1FCk9?-n{S@%aERrv=e{vdbr-|X3Y)b~ zqU9%KW6y`!#+C*9xsW`sxWs%O{~n{ImgNgRTKtIADE2#jgRcd~+?6|pZO?#b-`CS# zN|Kfgu~oJ#*_MMHvT5JjsjD)5>`7s}GHcJ>RrT*HIRY*`W!LM?P3q9_?9R+*?sLuB zHZ{3lIIneFy(Fp@XBaIT^9vs3Kd+x|z;bxLIJTPz=}UEurD(cAJm1O5PyVDZu=ZY_ zBS|v{jCLCSVit=oVboPHV`ejBr_}fc@}OU}(6Ik-w$Z7h`k9F?{sT1lN7SmbOWy_f zES67sl*C-5i(Wc`DysvB`Bl{FA5#Up^|g}97w;O;k=k=N!XxvEnQ(i^C~-HMBJp)< zpX7~DLMSI)Y5FGj2DGE--(iybYp*_jSo1i0s+?NjgLcam{inmxeDtapLU^QOK;a-NFCsh?ZuSf2wTlr}s>u8hyG(SeEA$d_m zcKryoX6JQ8y&y4}$SqZ9ME>MXh#<=DM z!NGMx*VgQ5VF)w;8#Ndkl9+Dl0hYlZnP$OHH#K#wUr;sWBGBr5Q&GJnPwJNQn6c`8 zh!JvD$6@jcycD3xD0vD0Q)`%yEj{eaN-%rpLh8o*^}1i^&G+vZaQS_e_=B6wXd}u2 zvB_?1JX@dAzkYw*jC+#MghvvYgVZthlO{=3CvzLhL&qtEZzMGA;LoNWqEKK6Xq5=fc4qiV0}fxB4leS;H_ zTJ)K0b1YtMM>_yocT}u`3~&%p?0s-LaM^8xM7? z#m}x6-^~dS{807&j5<9sR)`ko2Zd~vo;&TJ<_p3%HL;H&q&cFNMiWd7mT8pdxoT(w zHas;!wDQbvNOwgk4ihL&QMINnin8U^PC%x}?#m=bPKcRQVOY^@P`;C(jgQVn)+5Apx7 z=s&%6H5f!FMa^lfZN^w*^fUQ#)~siQ?|NT=r(9tho<(EO=ZaMdu16`8X>V2G0bzd5 zht22k*dMcbA*1J`U$?maJhI(xUa3I0KmPeKrO6PprsWWz-|kW6kqM`55D>tw8!re% zK(`ls#106*wd%LP5!t<4pz(%M0Pz+PqD#8F7-Q1EQ_-*i2)M8~u0r!PjfTcCIuab5 z#%*RNf*5Jst>>bNCxb6BzchCwOMpnFuZ_d9Tkj~tO?+)d<4h{BkRHip zzlQC1zthyg;q)~3XAxS~WgpdM?I{uQXEjx)n7+YfTl?d6zKds#K@L~jORb;b3_Ld! zk>{OCJlPUS)>~L|-mG;+iC`d+og2-}7b#}4w_#?_eVhNZcQ8HynVJG46!ZKPK9Sq~ zUh%1!Hb3wS-rk7SORI7g{BoO4%$F$rM4xEnXnVvAOLx6ysF_U(B_Wi}E@s_l&K%bSh(Y$#`mWKlt~(c^E^d=0&7U$t}{j~5U!w^BB(szT?-5M!I?f#$}0;qbCFoIws zRzg0S5x?obSGaXlcV%0aki$>^eeM2zjVa4fVEUV($lmhIEB0Rz)N&mkn?Y#>Y`I(+ z9sUA(GAKeH=|*R!o?7c&q_|(ktk^ke5wU1!yJHeLQkK8v+=_(5i>kGXI;43J#T7$E zqdiJN`+a3W!;u`KoHLR_{hFV1i=1=*7+rys53@~PB!9@sQV0HB$;d!V`8*KTKTiWXEW7W+%MyQGxgs@GjOq zJ3OfU#>#PSGFLuC^!52`xTrVfZL{Uf-IdiX<1igD165B4L%-J9#hw886F+JL+mU7vjeqVT^+PP;k$6heRj0i1Uk0^v>j= zWJEIu+q1%Q=1)Hr^w>^Mnk_5llr6P0uRnEDp*JSo;|O8L9|+WrR9J~p9y`Z2Ds6izHc3lF|(gjSaZ9xi$b<~ z&du9KR|7U5P*TbrZ~dg>sCdWMGmOx)RrDB%ES@v7&edjUh;`AdYP&E|iBmAymnV{a z;M2|5Nb5L5+Rq`>U4-df70h`*kpk8@Cb$D3^}Q43q{Wy4`z|EIV|+VYB>E07`ST}n zmrPR@8#D&;R|FFC+p;z@j9IeAO{}tdOZshZuY$haoPU7k%$5#2wl%w$wgew&dkVF$i z)HZCbjyuNUY~28-rZ}l8ip(usByg$~+q2>k_Z+;f+vb#Do&2n#?IwO~4RY0#^#Nap z=IomT{$yU)F-B9W!pB}EJj%-~Uu-(Y#AjqjCY`np%P9t`4Ul_gG@EtNBI+$9Yxu20 zMADpU=;r0c<_rDG*m&k7quxsYa0SGLidcNKmfhmsd#|ob@3HrxN7dxd+eeE{jdnud z{tSr!y=!p7Vwcv{!`jyF;eUmA(3Gn>AvDD0q3afjyAZ#lsonl*+S~t*ah=-@_g{is zOiz_*N~ObOpYtmtaBgX9X>%z^lv2-Dptx%^6q<_oEt>-)9$TO%)Lxq?C&f68Pq!6C z5W^Uz4<`>VLK?-c4la_O!%=Q`CxQu8+hR=xRDL1@W~zuk^%p$6A00M_jO&?NkDP0Yv#33z_x_>B9Q~nMtJ|CI4W5ou zE0b8wo(06=Dw}P<@5Nh<<W-}tF34SrhU-K+ zXRo=nRxz3ywESm!Gb0$su?e;8m%mTT@w%S4?}QSg`bU;#aIHGnAif;Vw{~mkC$n*S zKnEZF1k&zD(ENs}^pPdQ)Qm3?1B41~%*lDm#Kq52$>wLxBa&mOILNGL48z&afs=Ld zjMa(D5EcsTI$5qd#B+k)$*fUP{39AUwqB=T6qjH*`kJw$VbBm`8C= z9~`CjJhOwJR@l^V{7_Fc$HCtk+(Jw)?R7>ER^cr(puZl+`Hs=0PH7Y#wTt%j!8lJ+ zC7M!N*Gszw%d&+frexJ@{PyGuDdl8?;2-@>0eOz3c=!e?UL2(X=~_Evaz^uroNjOP zsYjU*F_*UUgns=Kc6U=IVtqye2{fM6q46aBzwxB&>Ey2L{=Xqb)5Oq)-c-t=KKD32 zAkN?wzJ3M1FwO#k5Yx(BHM!Vf&BV5lSD0L~@Cm}Dc8u|eS2cNDZ>ocz{kN;`mAvb( zS0kEmNuJY+NK0&OVG3k+>rI{$!*1*(jjj-0Ho{{gBRl4!80mfU=-}cgL$JpMHH;#baDTi`P8fT^VJSDm_dbp zSMNRdkq~x&6bfz59Szoqf%|0YrmS+YBR|AX%R8MWbx}FF&pAJ5{gicY>-b&jE}pc-En?nV}?zgu{y{hf>NlM9J0r^2G{ z*AcY2I8DnO0uQh{o1AqizM)Rs6EuZ-foK8M&AG*DOc@>;t2WZlUEfgtOlEgc_2^1S zmIfMCrqHO8`TwIz^UvM5R9D>tj|V5@^^)M4I!2*ZH+p&tzp|V;VvI_dMO+{{HSPjJ ztNNCX;h1~ftKHvW)thHIz$Kj^l&hXDhuc5*dYLcubE3q%=RG|kC?|01L*g|AUKDJc zX6v4wjVIegTafo#ga*~^Zn`emixjTh_>>dUITF#XrGcZ#Yxg?Ct?OA3PQ^d9Mg{J+ z2H~>^4Lsct`;yUgK%d1oqQfWd6#WS+=}U^<>IvPO_llR-N@AU6QAaZ;&)0$xC;tVe!*SJnlIRK!PC6LJ*(60XHN)+7wk z!w~XJYdIgfU+&c3Q8gR$U7sgtmyicVH#h2An5e!bi{)OwQpNCDSfpyg4avioUy>{z zT)WRILs11W%yC$HL%L1&E#m}&U(ATBx^s~qRsL;7FMrrWJ=gQG{<4yb68vOK+##s? zTXG@E=9}*DH{H~H^56KX`Hbj0AG5EVj~1%!V+cF=KmDfLq$a5}%d5*|g9}E5UvExa-G%g_qFY7nU<< zcr8HJd4Ek>>elYQ)~1xN?RiFYjFHckQo{EEKfo!eGqc~uX}16YprIQIals| z>EXbKazeGGF|j#z;a%R=_O(9oLXi529V%X}Y)gpYS${5t#Y=}0(|3gJ=h$x;DPl2;`x(2Z8cIFQduZQ0?LN44 zmvJ>7FDvGGK1LThiB*!k=sDesX^%DezB~F60!Bb@vRkNur3u418dp3z7pW0qo<~Xh zP_#`@>e}3VovRg6B{C(1)~$fbDSGIpmVF?Z`Nv*ooZaGNESvH7Vm>-_a;@mTJ(>K< z4AD|Of3c7;-=NTUSDVV(-zHC<;?)EknEJS2ZfBdFclk{p0(wf={P(`O=61Y!i3+HW zR4?T{FiU-~&7tjAjUp>~R_f#W>EmR}C(?7O>H8A;*l|7EVd-KZ*~L6=MJ@XirHHBoK8G zJ7-8ybzafWC@0gufP^bWY#Il;JeH*QjFEEf?v&yrTm zeWRFPbvWL>svK=GE$5=2f^F-6zVuwbIH`tul`2R}B~8r1AamxuCu;d46-ZkwhmAYQQcKhtp$cZZ z+(*@r!DPf3Z5hOj3!@-%8W9L>*eYA02*NYv4W!sjU)0CeISmxmj}cv5Smd zcW>mH%&;4u-fAuLnHeFREEeEEv3HL@1W!FpF2dc^>yFUxrWKI>fib0P#Ml|hzv64_ z8M~lRl{IQD&S{nL1Cx`niZx_-gz>RiR~-+7ZLB8;?y)ZEb|cFTX#;{0Ubwo%K4g5J zkP%<3uu9iSMNTC#a9g!hYI=uDokcgcA!`T1uVZrhi^x9B5LGu%)(CCuVR!(ytSuYD zjsv_e`YR!%(Wh{jhFhbR|Mi5ERwt=*yPJh1C42XLuOj1cdy&>8Cyxs|MPz>e1g-%C z4o;X94o)O3MUNeDV*%qp@(lg0$aV>CLKZV$H`wG3DvwelOgvyt!;uBGWLVdwS)s_z z$xNRaOVS=pe%#rVMX7AE%OG5h1f%JSbSBn49FojWMASmH5mkKT zAe9z`&^8TOeKpe6!tzL#&SQOgqh~lWtB0~bSR9A(4C~i7E4U5JVv?ZmFP>xtvn6Y-_*hXG-kFbV3cYsJ)4N>hyP`zhJQ96}F4rEWDdha!S%>xMtm-uMNNMXHa z`I%q`dA&oV7CJ_H9XD1>vMFROp16U0szyA$)ee_`Z_^+2D_CP~IUgU#6iF6gIC)Xx zh1091vR5+&?>cEbu=Y5@JQWWbMc+It%?5p?V6mZ2X;9;sU2K4arseQ7u*KvVckq2m zX2jw7>eDkpmC5!&w{2;W~Vvv$e1lg6=M88zE&&YX?SI`Hb${s zr4HZ&y?CoscEu6ICfD(OyJcev6A#Jy5G~E+E&hppi4RN$YnX#%J^@5%3*SD8s7{qN zCFZn4Z%8SOZ=6{nrFQ)D#4{y1BS{fUIZJ#7K`o`}xxKGGTF>KTNj=q5JzK9iW>6)1 z)|$B-^QtD`^S2szj$FR|Q9Q#)Rp4Fvk}qFINQw3={nnE zI=mAWQu*ZcR)_D%I1ZJN4*$(McS&~HJJmh>BTzS`?psCg8_3H*gH{8yfCp0_l3%W3 z?!EXp)42NMr*x9NyG{^qlkSrBOy7qWWv^Wv=3TxXw9{EK0iVaPbRT2wfR&e6T^%Jw zUw(c0J>iW#Cguy{xDQ%V3NLNxb{~xG7`!Az5wBJs(BZ(2aaUD$JJ3U+PzW9z4K8f5 z&pV<=H;>U}FkC-{47=7nv%}OG#r04XoZ1>3H@0;i>@paRd+>Zg)Rl`tvR|@>gsh2YI6St2ueflT5 zDY#kk!5XrDPR_OY>S<4~SBep8NZfgum?7+;Cc5S!e30`j^XRQD{Tnk#Qelp5p=WD~knSpJ-djCg%nrP1 z!zX%SWdkEFxharcG9&!e_eE9V{Gqj*n9p7oAmpJh@_mddE4b&7dX3G}3>u;QRlr$> zKZJRWf<#uQ-Dj-Uk>z7k+#BmreaJgUMc~@Mf?lK8BOSbzk!p8E;5sCRxTjH|#~Q%& zu5?o~crsytFhKEFW4L#nabNqg8l}AyJ+HH1-o74(s1F8Y?Tl-grtZ=$T@eW~B=tR+ z2)_$uXLBC=UTQdI=PKBp+Wc6m(Ttf#z~epUN+bc9VZB7^Zo zR)MrlRq=kg`$WkX%akUJYN5r~a)z$Yu<6+dc2n#~Nzm&E@NCn*t}s<18s2>KYuA3x zwm7&|+`F;T;n~-Z1kaN#-xg>0LaWK4F=r)H+gl_N(%}DH{>LG41BJ>tJy@VTqyAef z$CQe<2*+o))6+=-d&m=Akmo!#1ixC&mu*oTyH_TGZFp*fw<|f{G;bGMrQ^HznQ-UF z)vx*!t8WF0a#)%Ty>l9rM42Sv*F2r)30GvN-4;JqC%;|L>^>6WePuJE^+fWRL%iy6 zZ(f#*1R_vPkUOon>N>F>5n=L~W`mKaNBgkkg}b!g z-^a-|mYk%2LFXG8&BK}b2d`6}KlPE$33=7V>*5ZP7N~w#UzWSSXQzA*8#nwqlAcMg zf_};r;Xzz)Lu}R@PAu)l9JWhzdr=U+xJ=PP}#FLUgfL^Li(9F-C4z7s;Ngy$&;eCWAOvFJriT`hAG$nsYL#1&yQ(6 z-m2yYCI^2-^^%f#_b5}mF;PRyb%Hhm{^OIwtT$fh;%8*J_1T=7j3PBJEVC4oKhy5C z(>~pTY|X^?p5{}*UpjGZ=ry{Tdr!6SJv}=bRFoC#evIcX%Qrn*iS*3zGs7^uSue<; zgA5D%Mk6xb%vXI1iG5w&fbxQl?JxzswJ39+x~uJRKg$zmOlx$`5_)3AgnSM(v&f+~ zVm2?d#km1n2}yazj<_0sEb|jlqc#f*ehpL~2+4;c@y^F;96OUG*-Ed4^MZZQ_s_aB znp0K_nqqgCThiFKig~~u&Wz@-kl0y;j5~K;GsK?#l0Ae@h&RBdqTdCnD}#Q zq|LvhAhf-`c+gOC$#889v*mho2v4a8btBX+LT-9iwVZ@ptFac2BJ&mtdyoRiGc*2=~)tU(xkz7gO1ZsQEcm zBg-U`>9tdyVfoqp?9ID4;?DzD6bbhp50GRjgtauWyjuUTKey0D#dH)Y)v>;`@51}7 z&DxM@z>X@6fO%c>M6Pb?-)TfrRd}0avaVXr09Dz;>5$tT6 zI}anowN7~f{q!V)x-PR{g>h%VHoDR;&eiI@&SV}9V@hXC0Rf>O-)x4??%U9JY!fcb zX#`4XxM3bHBU$=r+LSl~W4ynpO4BIm9HgFp*UQK`DG~R|4+1$AZ8PetZQ&7MuR7 z)x}M7GT@Y>*@J%J<^lnL{|ON7w%7Um*qXT*-S}sW+Ca zrza1V2A0~CHumL5$A!a?J!E@3$tm8!!WF!aP$3Fx`=-7auc(J>ePH&XqHR)}XHX&&-O0t+1OqZo z|DGf4Ui-yQBRd>Tq-3}-M7D4ElSqv9b3$^TPzYT#1GzR??U*YD9{^`NXt{ z8LBGxq?t1BitQ(pMsw2|KA*BVF?ryel~B&3&#$^wrrP%VTGtLvDszC{@u6o$c^jJI zPMG>zUZm*_A%xj|{jU>cO#yCp)^8wRUZpar)gTqb%CnrV4RS+nS6DqF23KrnRmNOp1rua=)_Y z;eJ&!e`uF|Xo!x`$_?GSkwXR(Ke%rpAgo{STyXE2zi|lZZ7-g5%~c2OC1ukC?hkCVYvP^SKwMnBFgc3P@o#Cm+*oWEyDyXz85h z&SHHrn}h9tF@>C^K3`O%&xC{GXW5<9H;#tT zSQbP~lhNi%d!>g3Nt@MxzIKkjDV(vJFezXz3J0M#DG=k}sY&C_4G)%hTB9j`E<4i7 zJUr$XYb2(ckneNcLb!w;FIv+fWuUh>oD^}m2>!4Eae!R^`i0l)?J5$G9`WQ63I;Zz z_vmJQJdb$&>>P9EQFp2wE(3}kN+qUyfxL?)2?3wln;h01h&rCC#fq3Peps9zaYJY5 zPOc$l_JfZx)@?;5sn%V4N@vt)WW192iH}*Ma-8Ef?+D|B~#k)5MTTE zLlye`MPfR05)gyZRKW_lPfZCXPbyfyD9gnz3ohz|g?3#wDo78ojim@2!mW4h-3SPr z=xB>25^Tb)OfGd&c$nh(17jrw)(wI*NGMQ1PYvDr#q!=3wHQBp4UQMd*y5Aq@Z zdOkdRFlx{*wMl3d;Q{-E=Nc&h(b9D8@i+UHM|HnZp_StiKX&E z7Hxr6cdyoW6yDEF78X`JYz@y}ibjH}ABm3jvP+04N!;U6$X+_?cUxEfI3Kd*oHOr> zG+Gul6s8DS^yrGuw%DdjtdCefBeFGo{oV}zVH1LC!3JxTT6z0g#PUAnF<$h08OssD zzGVhZ2v&`J+u38r)>@~Qdn-pWXHnYmB2TWc+WjGEi=(Sk@H*X^IjYZtFaNbY4huc< zddyui=*L(S&}mchsw_d&jRX*7^KHfBpD| z(918#OFWoJKg=6L^IQ>odzH0>CoFfhqZC*p%~4h>^HkdIBvG>#jS3>2Ea9%aXot`r zGx1C(r+3OSAM;=ud@6EU%ov&48Xqp(MfDFW44U4ji*jvP~a+zZp!nY$~bN>9+5T~wnx3Em%Nb+5Nbyqt8ab!T-KaA5kNrnwNwTWXnh zrE^-wUr9s8`fT1;HF)ieLLYysY*!FM9O!t?QQk2kQYhbDBH}xS(*UMWX80EKe8=5J zH=VuR6faZhwVM8=MV?f>02dvr_f_@R*Sy@3e3%FnZ(T;h!*qq+tZ*Gtjd<%42oRFA z__g}$!bXg&iLZkE72d1ZwZ}#7Lk<^}r9O{i(74$hfHmuK26MuA7fAw5e-+3;5Hz(# z2%Cl|v|HbFhdCJ8W&O0&j%D$<+`E!k!;Bbxc(`iXNIC9eU`k`M`jEPMguxJ#j$$hT zneA(t_MS5jq@X>dadHAWUQc{o8g z-M0$JG0rL1eSAqeug9FPLS!%CQ&-0+slTR3CcP)G{xGY4;H$zD2ESesnFb;5lfdVe zlk7#+-3D}z+$C0=-SQ1iVGmSs=j+|RXM+C#((U2BtxXKcH0V77_VQgYEya!z5aj~nHD-t8-4R6|>)x)AB9g+M zB!$6469}3Rpa~J0ke~?}noyt#6`IhX2_2d+pa~P2u%HPWn(jdpPHR#au4FE(WWWqL zSQu6y0D}T7b$g*s0p_~BfKY&iZZFy?z+$%-7ZhN*J1ZqH8DK;S=KQa(Y=Lx2ur@Vp z+WGHqK>wWDDhW$LNb@3~1{kQoWVg)!eAEU9$M}Z^{VxfFN4aG_rUK*NGXL|r2^<{D zU(8wz7!&#d3I?!21;(U?*6i;?y??P&!MA>)XM9O-ng3G4G5sUpz#Yk86F`}4Kr%J> z_RJ=*K?5cO>B2x3=-Evy;N*|uni{GozEf}!k^<&5V9eW=a)nuJ5ZzjE5n=+}G+@eG z#jPu4GN7Ij%nxwW{-#UOLh0GR(PUaM<1M!xhE`JEa-qjLvC=fDhyX77-!>9-Q0+GD zzqPnP6&;xPwsOMO&sR>NVO0#B|CRr#9ISbLnf{m{0TlGVizP`9bvDKNk0#BD4a}yc z3J=0ZfPImD_eTG(bEbd!bO2`Q!REJx=3#((GUmDS#LA1${@-4>7BZ3qpe0*?2E4*w zUQ+pPt$=R~V5-|nV4dqri$keNP^!jXR93;e46X#p0VAQ`T`y|9NZAVg?7JI!-&6XF zJ|_&L>)#d-jR{)7V^J6&kk%^(2Hco_+yBc1j_V%*77(6@$$bf=s5rJ0?S@i29`bFKZn8o?v}rfgZ*O%%N@A2ll^V?U#G+V zll}j53g|C4sPeGv!GF2AJro3l>45QWd+M*l9)B4_6k*1A|6{D_3up`dw*Ko~{$JKN z_hHrwzpelG)&74f@xN{OcNc1^!94N*d6)Sg!@Ju5_15#RB0Re_#Qb9jt2k^0MFbsK zu$eR%7EYv^Fz0C!QaI2jfWLYNcn{Ni{LxeYCt6J-qlH1x;08m3``_oqOTwD8|9Atc zn88%HQTv)1>V{Ges-RB$tb_5_sDe$rf4w&QtNeEV7{T78k>7etV1asbxBBBP%~Kl_ z*kt)Vv3!OpFRgzoiGVgb==gx;@zM-f$^xI2LE~ffrAtH z%b>#kj{)7S>;GP^{vnry={fx=C9Ks+Zf{5=Y|s)8xc*V34Hyyt;~Zdg+W!p#x<8)a zU;~NKJIy+Tk?mhy1gn>3`gT|_v?m@yyHw&IK5PIv!1xRRF*|fdhB5&ec4)?uelRdi z*cu;*=lnBus0)&?LtW58J5%y67q0?uUF@@inQr$t#<|zOeuc8WqQSv&1IS!p{xm5^ zEWpV0ck6p{K(mMmzcp&$0Mp;*y8;94BX9Gy^1ubyq50k_#5kdf*Ri+k5Kb`ZZSUs5 zz~O{jcCSAc@bOP6|5|JORmy}^C|ej%=lWd=GcKqL?~Gf&`CMS?TfcoUa4ho{MBoNX zgZ#1q1#U1mC@UNA=LQRada{8UZmjX-i`X~ZcU zzzh$V6(s)x_{jq{1|?MjhP+^15N$0`#S7L0H8rNi=Cc57d{B;7GhoOE)&M>40LuBm zav>^^_+J#sP?hpz3jY7)%N5AmM>;O9D8; zU{pqcMg-bU*+O6*&~vssA(jxH07&Nj;~rTUN{r{a(+LTK#X&eccS4*nSOP@EcPG3P z2Frjfg<*mQ$X*=q5&>(0$ffR-%OYS=(6RKLz#? z;c)?F1z1D%z+hqk+H|Nuh5}d+q~H55^2Vn z!y*IRDxeWQr3j`3b&vi7qX3vnU{z4U_#IN`iHHh3Qi2v@^f%HQhlmLD!4SBK-<&64 zQ~>Kf6cPUqf(UT5z+(afN?>MC=x_MdQz)?#M(nslGSQI`fpZve_M5^jkAwlpDnk*T z$=_wl1ET>+FvR^gf~5)Nyn`XtcSvRd_#VKc0tHTfQy>qKkbpoK!ZP){kda6zzz__v zodQl(!1|!BY1ltK;HnB10x`_q36x#%=)faYXv?*B|J8CQ^DqJ(K&u7~7?-y&ff}$H zg~tFOYEY*G8~-4Pz_c3FBm4V*A?)hVD7oCeLylg8rgN#SDwczrMl;0XpH1HVW>C;-$18PL#$O+u2uV_mQXY|h%$1)G6p z6oEPzw?_|*3rzEXz*$~VN zx{3K05@ZOy`CZ5V3qfQ9gYTO2gCVqhsL%eu)AoDSuJJB=C>MRfwxs|Yh~O&UE76HIgjGc!7)M&Rmsd1xd%8#zJat`J!t)(76Cbn?s$>DCQmMi59!1hpyjrrYR=z|_CYuXl_xYJ7GLqBy# zbosV%s38%XBoVoaR$Lo253O*iQy-NM5HrpebjQ1+;&pvhnFkqqU<=gb45qd{s##2eAy@%yk$Q&;53)BQvaZrTy5<35%2l9%Nv_=yF(P zv{bn-LTVQ_EkbA2PK>ycK6mVOsP@%GR*344b?8Q4#O2kyc1%P+>=g?AW5k-X8_3X>803m{)xOm{Kmx zj2>VuFKxCkxG(@#xOy@8-*=6LHy29O7`4v!d8Lj&Yh`9)<*gsU;6x_oWJF;GQG+nw zN(@AN6)R@P1eu-PXkZsihZO@6U&Tw>$%18P13eoE^MXpLbZzNZkJu27I!ecXjRtA8H}M^Tay8mb~Y(Td0zV$ly@j{xdCfc z%EBqYy)lESSt#$_gu$&W3|CA7g9<|+Dbb9z8wM&9BajT zBZne>BZgv{J#MWsb*1uc7=+ewHqw)!==arj%#;}hW1b|dz(~`F;Vk*QgB|m~VTiPh z&dekyIGfq^4cj?%@0Sc#=-m$HRceB<*)|-OHSEW9Xa{E(dNCXhE}y9~CRS`U0*XO{ znVvKP3xUf>0Yd3>cMP;XIlr$b(;b?WeqpT->CT>ZT046=XuTfITL1QP(3;f8LF>p^ z*4o*}S+=X|VP6NW&53r zmu54F8jX>@mO~k%vAujWpAyGfL+I96XK(sG8l#iAn3+ankiRZ1VX$QkX4$c20)&yr zSX{tF;m|tPnkH>W?h_TPo$ee&A`st;YD|IR#7R(`c!%lXr=6`_{-K~Z-xG8pT6GpP^F|M7FSy|_pqF2=!idSJd-)p% zbN_a>a3$mN9JCL-6AEplmY>CMC{39H`;A`}kn(i>lCA3Ud=6 zko-R&c&biE8*|*58TS#6Um%#D%*=#-g>w@=V}2Uu!4)nuP+6o^l@$`lvv6sYtTKAq zJOjgi&6}BTGq7ae@?~&VqqS0xY!oQz&y1f|i)4?ROuCSb^VOMzZ7N=I16f5iZbx<)Vk5gS;%8&OV}}|tXebgp_Ogw16gaooCJrds=*Y| z6FuxU8@rTjikgelwo>IZUzoUmHjIvoRF&cPIq2o>C}z$FX!Vpf2Rc_OFtce6mb59+ z42BhfY33Y=U8^v2E(cxK7Sk4{jh)eGP7d5!I!2XMl{!^pP?FHagVh;~B%D2O)ldP> zrvxho)e=lwX+s^BERIBT%5WWS0wJWX{}s40bZrY(!D5j0{k zT)(8J09~XFy_wvU1h-;04}UE|pZ4?-9`MDrlbLdtV3B${AfJerijSf#OA%%1OR*Qt z`bB_V(&sT$Xc;atW{#&(%aEsEOkkxu{j|O!Pveen5^Y(IbY6V`-2UW1zKiB8hqdvO zg{+PA=QJ)AwgR)|%M8j`VNH@+&Q#i_&12yFgkf4!&abGh>MT39;&81O-}Wh6)XZN| zXYOn}g&n^lhK|fr89xeLDQsFqaVwFBdM%=fE3J(+4VP*uWU}^0x?L0Y)yPG%3Rs1M z_V{HAA408H;bvg$dM&jjZ6M9f%GcU1wDg;_ls8WstUO2J(%lw21iBIcoTgppLW7UM5+yw?S11^9BYp1o&!FfsP(;vX*tKM^V4QV-+?d#~tO1v9c5Oz`{N8t#-y%eEtyK^UlaEf*d2 z0V}OeX1(pd!#yQ`W}x4W$(GxdLF#tw>z1agz=aNPM_(o69?<~AE)=)}rFS6t2&VTA zc&zzga@vVa!0{c>9Y0Kf7Sgd%;@6*+jD-yc(p^kEX!F2HGsm&){7&Stu~Y37hYxb` zWX0CIpcpvIPWG%40y1YbF@ZB&yjZ*V9%%oy-cHtK44;*x^#-S!OQmgFnYyW-#)+i=HC( zBhfU!Wyc(EEc?*B{b(lpAC)#!-hMO_@{AeNH5WG;bQJcyzwY3;$QP^-{1@it^aCi8 z`G%ROgW`;T0D~L$US+CE#XhOPg{B=uG%ot4GFp0c5Qj$G(bhbQfmf=CJ%qII7zg#E zh>shu^Zl~z5DczoWct}59Qmrs3?jZEQZQKI(id-Lo;&G0XtQ9-;EXQn331Wk(Zdli zr9uP~Ou+`7k=hGp2oCB;F&)<(LBnCC8HDL;0g6m$n^N;UCYgpMCY zKg-}0EkN-N;V^W==D#NEn2VD^yabm$MR7Jr`JV4AXTq zj;}{CcL&Akyy@jr_&wk_3VNgoI)J_>>MZnM5oC&ff}WVJ(puVd91$_Lk6`?1b8nq9 z8BSoYUah|!6P2R#;_!OXQD>i0iVU*T^6rE_@A(alzdnIh&J3}W9q0lJs(ptn?j&R% zaokngd)h;1pcyCO%0pvR+CtObK>LHxZaq<@ovBfOoo|l2NP2@DOmUuOr}SYEnp?dQ z6|^4epfw|#wMGop`O&lhR3o283)(qMH$08NxH*@>snI$&uH>-LnYfVYkEh|VGD{gG zoWYblvVy^yGr0I_wU$BTIXuv7G6$onbfnT*RPk)1Ds!i-v&d?-x7ab&7b5O($7ZJg zg!aa5s;stjV!sMxQl{X}bI{pxjOnFY(4RFCDC%<_wD)P1mMQf-BE!D`m{e8 z=q@1n{&AH-(kY#lCcHt$n|uLP^vF|btXVG+$xkmJk{di?I`kqA!9Fh(kn^`rPac0^ z^p$n=`Yi{STi)a=g>Ve5yYC?X=VQKHPq*&F2BngLf5L|0-||H+lzItic*mc}M$esT z)KwAHAJDA(B`ilC?keL&eJ&xA!o5`nn>Ht0&;7I;(Qx+?YMtwECkwia1adE!nckPJ zaZcGZ@+zi0YS+@=m*Kjj#aLSA3MOsSFaZK-+!eU4R)hdW=;;+qNU59vr77VmY|N@C zKzpfr74aKDk;Pms^sNTQC-53fIF5H~u4DJSE6ml8dR>FTsdWT{UE?*B*5a~E0N3jX zkwr}f_(^)#lALa#v5>#4c*J`hW-o4|GO<$OWCs2XT|KFtD_SZU?`l6+J9K1)Hu0|B z;*AS48E?RpPFBvxtBjX~+IZXzDSr4Cb=xpfPNo~RiNs{M`Stvi-kp}XX7G}jf2 zs{pBE(SqA;>^YpN&mAPaj}u&FYVsJvn{^uapC_Ol`y* zyu8w(l=~i5__ET~MD_2Y%drQTxwFAlOEd4H->(m=j7(pJPXFV~)V>E#>^RL};XRny z{JaWG)O0ueXugjE7OdN_Bjt>_o(JS zxSYHGK>P;LsSBIsGf33ANLnJ*VK6ech&x*n|Uf5{>1ybRMcu?zOv?2X_4E4FjFgEv# ztNq^mu0>B<9$H&#%6RH&nNA-<;g76UG%3C|H0}|erk)N|P&k!(4|__v>CI$#j8~jH z7gDPCqo~I?DO4_QLnSSGPq8I2)6T~@izSBJ_!?gNK+ekkPr%PFW8<4X!E54C6$+3C z?SFz74Te@KDCkZBPpy?T+87(v=PA0rI<`Q;g%*bC1H_UYt|?!~o{xEkF3hTLqozH> z6Y)`v_0(am9xoA8L|+?9@bV7`qRtj;-ODH zy$8qmP9Z#=Tp+BgIgwU?OqB8hgW}rLMty9p52EugVDS3^1(cbJzl7GRAvS98OKYrV z=olMH@2$7x_4hB)n0}Itk9cLRqiHzJhMJDh8)@Dv`0z+}0p&sey@D%JXBSXG9Aa6o zQCG`F1-u6xe2oL%yCwEi(Ki@@x@#0FfQG!mD;<+JC@4~N!%Uyvpqdw3Yzlb`^?2z* z@Yk0*_|~#r(eTSz2G`;ttC`lkMZw{_n5Mk9u(H8E8>*BGEj&!ej%b}jHSZ4EG$y=* zsq2pFY1AftEG@{$A1llMP^;fbg)c$l%6klA^Lqu98~ytpr`C0}>?4-A+dK3+iunM4oqvUy z^aabYe1sxKIg6{!#jn^8e{yBsoTM?q)~dmgMTvZ|N%INpTujRjw~Hq3sQ! z;$fvNcjcryIQskmRm+vWY2+GG`e3ytY!f@fbIKuPdzwSJmqYEe_B+FZ4$OT!{iK!srO&vuR25!k8hpgNTH(^{>2~ylEQ2p? z5_HE|Og9~F@Zu5k)1i_f#B>uKTs>hPgT*@Z&A5oce>%CcbaOd_cvpa-s~B|8HsG-8 zippoMWoG0YgCCjnU`}jQ83P@hXK+^zPFZ?1>9vhToAh!msozc&XsOEzSgUM)DjT4< ze~+E4pFxh5W*=bYj6rTJr5|OGw8>zl)-`1dwKU3plK%;&CmQ7{Qs*-aZX02D^UDm% zxgjjdUSkk)*x*fz-C**J+sq6@yg39hGM*tyLQ82 zq|L9m#J3xUQoK;i&T~*W`;HZ!n`BQqpJ%XbSa+Jx-T41hS#zn;cNKV2Zx6Yu6zNQb zyktKLdWr5TY59={O6}3vXfwL|#f`y}4;Yze`5 zUomyNOGf*AvciWIdRfqFW&ndfEb!U!5C#EOcr&>OgWgsI>o>e$En0YHF?#T(=aCf+ zPsFR%ip{bd<8+roy<~qnA87Oxuc6uI7|GCkfcL3|9%OiSD8tILRhijS!st(D6VMZv zQVv#D$6MB3ctpW4@4|v~N(61tmwj}zntV6lb`a+?D^g2QOhSRGmMmNs3 zZDWmQy5S`oq}k1dtO!ks&6gGPM%`!d{`c{amCNus03TBwH z&G%1mXu3I`>x*(w@Sr_Da#`tHcRR-1%BZ7jN0E6;wKsa$y$|21FKbQlMXt;oENly= z`@Zl}onZ_r`N;{A&nO0lbU66jYYgluKbW-=w}S1;rLhx9JHv;%m)4z?r zY(iXNlr_H>t@_coI|yGT7S;*+m(NV!DU4<8=nwd02|87aVCMQcGtj*>S}80Y5BHQr zzqJTTt#e`7yw|V~cWHR%+KrjmqF6dYaJeArasP~Q!t3n$MT?^71B)ut(aWM3)!+OD z6F~Kg$#GK65C)rzVGPR`5g?Fs#pOCuU`YXj$wPKCQO|7%rWhYL`z+DFG%KX}xOs?s zcr*PQ;GhsvRw$IBkU%$^3!a8LC={*83iC_Ib*0WR0(6w>RcEqKNf`02jtV?!+)F&= zaSKDIer?3`uNB;6-VSF9x>XaV_l3znIvu8qrR2giq$bQC)C+I>y~@KSZ{=_-5Mx^j zJv`~E>E=a~!sT$MpJ`NSbUd}B>_Tnpp;BeU0vfsD*j5VpphXIofXtokXj=*m4(r79 z+){G1l-Gs9+fs5x>0VC;aiuXy>tzTKK#NLaoCjwL;7?sUxOq}~FrwZk0#*GznCbWk zlpZsTL5+TH&Qz>C-UA%zBx`AR1dMkbWheXG!_AGpM<5__$Jo&edc*KGWk4rRP-zd^ zD42JXRmPbXRZ?p$#daI`EU`SLynCvx2^wE1tu zREzZv^-Vn_6ar}2dN<`FDO}3_gPCjP;M`&77?dfGu57)?U|e}f;;u0GyF3E@-E{{4 z9D$z-R-&Zi4sFf4#afeo#4?zAhe6ZRD5C7~>YaDc9`TP*@TVCSu-mOs0mI(>vC3eM zz7&4N9KC^_#Z|np;6(QlcKt%wL}^npQkMY+6FOUj5wNAFZb%AfI_1;d}9@iH-rg&oua&NDiXgFA$YVzRwkOm7j`D zkO~S@tDt9J$}xBrM?Q!r%L1$i}Vv#+})Sf#h?=xVkx5r zDm)nG9!RFDUi0+MNus+(| z%*WS%tD$sIBGVUQkqe5%!uzd~RK|_Q-@+yJyjUnEc2wzVQnl_XaHERVv9dqt%gmMb z=m5+$)B5TtReyk>gXlqZxH)<-gYeGo7OHv@;r>&agGaK53Wavk=8@vJFs<(4j!%zj zpzr^UW#&~McO&n&(rTjmfXRXmpv5&YqywihNE__#!^>JwE$AGY$#jcaSj1y;gwOHx zr4}Yh?tB$E(}J<^YEW&o)o(G=oob5&u}lCzIz0t8pAzEfxy*Rf!3=)8P6ha%Q|lmX z5;rkZeLm{DPzMF7Z&eu=3aE={`m&vw-gU8}-q~#@K35mvGh;t9!`Glq=yxQ+HYgMg}{(L*f;Mp$s0NPL==54&h%)k_&kT+Wov(M9{?Y(h?%Tf%o?S%D_iBiW=RaX) z!WGOJ<;?v1bqB*A^cA8R=o8SDjWG;fg`02_kbsQpR6}JH|Ab3_)m9lj1vW*vjl%~E zP33rLT%7m~qJ2#fl`Wdt)M}!t;6ymhskO=|w;g7@{SIr!;@bmZ`o#?4d)ry9dz ze1;k>EytGzaR~ky2_`Rb&uykv%}}a!SEg?^!;G4SZwZ9X&{n1ZaTGSwwKfi(GxuhN zZ*5GrjmEC#sAMHRv=rrDG>0QP;X_Lsz#V8OlaAW8K>K+^ZADvPk;!cV8^4ZJnOLdb zSQY3fxg|P&WP%;DuO)nV5#I-hn)|eZW#_X@IIXop%|mCYbR%gVoMF>(p{c(>N7kjxi4L@Z-5Wf0&1Tq+gn;YWdKxBsi=70+n&0D&st`+0wxW z50lVJ$_hJKp|;3gJ675;YiD?Ph>vmb#--TO&1;J-UHlq5g&MP=pj6j@9LyNC-cGAj zJ7kzT@9dZ*rvll{IkIMiOQf+rznJp1sd#EVbe zWZ7S1z*~Hv!f0}`TvZc|$4WpY#fxHAK9RVlK|JJc)dwQ8x^bM3p-%K<~7Ea8LP2t94+gBepHU5 zdmWG^(&8wzqg+d~AkIt~mCU|0tfO2~Iu}Q)J3{Mw96joYj+TnYXL-?(R_g?5ay+GV z!t9tDPpiZ)wgM0Et9c5oL(yhjSa*h2U=z`j7iD!uv-`U;c$s8&p>v%PJonP=n4q7b zqwS+IW{k0nXG{Ie^t8P>6gQuEQMVt`?)9J1vy1)Bv^vFHibA_!cp@?>u8Ukx(}D2X z#xLf=9Jh-0g3)ICM=Y1;nrZE5a}a-LrD)8VXts~lbBie=O>UqmwG928Vh*7t-O=)j zG&xwhwu0_+sR<*3bUKoOSsXvt|+i|AJa>6K`Wa!rNzIx zBFYaPX4!@fW~12t*?L!^8)WB>vn;6_w)eNrFjynN%Zmaul3rgGzy5URkXc7fy2A(W zZnD~)V`h`EIb4$OGBfgmSxXPQ!{*r!n2G8EUk5+2iF=^l-(RS}g|76#?yCj%)uMkj zZkrACv^wmokS+&no_@dp-$SV3Pae3@a6vWstWe(cdpgRweW$WLWtl#w%Rg$g_@3tG zb8`U2_rzFU#%mo}J>@vfIIQ{YK4KJ~lnq_)H^R1_a+V+y;HQRhG zRH!4&2d22J+U((ex%mt}nSwq?o>PUCpnP;ebpFHkW--$)D5dR9|elGUkw}A0lq; zT)1Ggr38)a2Wh!Qw7wst$&2Y#Kit-&FQxkZk)XP)py~bP+L{t;EcA7jC0M*LY>S;e zITrg!ez%T72FMLHC$?C`%=M;i3(@q#0q~CJR;F?mTYLnAtHDgns?|Genw2v#mvax; z(DY1XkA;UQXdrU`#Px7g-XIidyV0S!*++yzW2w(^G7rN3W!ymQC6Z1uXuJ)sn<7fp z-|kRq844BP|A)I-G&F7S zQ_nODlR)fRBr@ex#yYy?(`FTF81MI4k15}$y`}Ai=MaS^671sTio_~ zMpn)DZ0Ir%f0Lfc`peM%{<1Zb9kADB0{l<}(R%`U+<-`1}CKa!d!H|~|{gFrL z1IWqB0*7)KqnrP%b3Hc3IArdsSr=5V`Qh6{RnH~wgeepfmp~~~RGt2+Em2ERll0jf zs>CGS$J)G2Ywsb!&{o|-@Ac@nRQX-k`FpAHpI6_zs@!wZe6ZO$-;X?^q5NZR?&|^h zv2~Agj%TI#H?3bCFD^BbETrl`H~P(|<@`Qc>66Ts^B=6`T2-?<56X}0YYqmSmGJ$1 zuvgnBWw3QOCa~b``t6l+vt@{;p zGF@(wUVPL2Hw{cQSU_po#G~}+X=ognX=s$OfM!0Xr}wSpZ!no^x^pJ(#>sH8 zvb?gWue4f$Tb?CnMV$4yrXFJS>7`W;A@p2pQ0-%xlozaozl?TU2UG_R-5@Y0aP8T@ zp2(C$*42|#IjbkpyhAoprin$}spW56XLhi0`seAX&U*U&ySNHH`M$loLff5jeYT7Pz`v7_O90ws<)ORH&Pd$YXL#!YT!1ZGOg&-h@IJuzmFCq={GRs7{&%kQS?B=t!0 z+KHV`YuJ_feD}N7xaRBl77VNrty!<8>luDxz$d|9dx&i%?`+!k>_d5-8UJK-on%LG82ZFV@K_*4K)qajsl9?xM`~o@tlx3X1G{TlV|in>Sq{6-9dU zm`8?hM%T}uZYrw~^>uopv)=W->xNYNYo8~lOx90{-aR}k;D2vt8)stw)_tz?4hOCe zciU{1eRv|#v2zYFTQsqxZ&_*RE{aB<#qP_CdM0Vnc(w9K*1^&BuC_hCBj`tXG3&}r zZ<@1i8wy;b|H7y3LV5o#BDwbXo1>HO8HO&jy}Kg9`cyE?y7X{w_#641r<)%XJe_f^ zU!7{i&YD|LWvf^%w*LBzjdWCWX34P=M}n>&ql{q~Of{3L>k)kGfL6kSl!~PI(yy9C5oTo2Wgs`jC!+{HqY9tzP?7&)(e= zFr1Y2JvnaP_C;`e+m4y$>!Ae(4cWMIrhfk{8b0; zud0}&{}a@@H>NC&{^bz$Z@MR!9<0ErSt+E+U5Bx10s8@Pf!SwAip@KO!dHCsrbmm{Jhhujf zirt}aoH%!=!9H}3=kvZaRdEjz<+F*@^mT%X?3GcCR)KdB)hDJmyxVp5FY(>DaKCB% z@!>NMRGEMG4Y-^R_vW>a?-7mMf6Y*YDFMxDlSB?s6}z2Ve&GdC=0G{QO-|2VZP&&#EkR>l@o$Z;yxcgm=gYq9{+o!0tcrIN z<5f?@-%zcs)3iC|OZ0ojaXsg4L&w<$mja8(cAey+Uv8z8v6n9|y^PfKt^Hir^YWE# zQ5);lj?$rVh^{sezGKd$$C0AZW6I=)$Qob`+~;T1j|(xD!&GW?x? zide_CJ141Y(jh9SY4**Bq=xBx=i;od@m5CM3ymv&W#X^zWS&Bo1aOZ0Dza5u&6 zGSMU7=!4?DF9l|fzuFn|@lveRhs51G`bLCvcB_azeBtCdGoS89q2-*;P?;Sz{FoYZ zt-X7epyG9LzuTj(P17^(6Z9tEC2z%@{knGGS8>}goggvxU=iVyhLYw7Hbu7Y{GT+h zXk771YDr0XzG|%g+2r%%PcOdp;j{VFICqcHuV~_j-G?egzmRi;kb`xf{RL~?9);|_ zku&`HXvL65d6$Pz8e`@&%7)miC+9Q&dYe-8xhTp-6`6I%pXgdqwDW?CzV06SdGc>g zltj@Kmnui|)1LcNlua|&ytmCH55*);DY|dC%lCzAq_9yuc5T2Z*J+cTGdyeRTR*kV zT^45$d@w-M|D-g7e$em=Io)$usnLX|sWUiOf!CtHSAWnw`aBITFwRNT@$hf2iquZp)MEt0Ls{ zn!&fH>Zanq*ZuyKIsd1>ex9y@_L=tUW68;G?8=wIhnTkVh6%pPd}vNlFD<>~|G{Qu zE{n&(T$}gWTUTeSk^3c=sFz4ozk4NQM!nmpe302lJ|{S3Y_FEl;o|$xr&td5JI}@9Bm&8&ov_l4b^W}Mj> z6ukdl7mhCnk>a{a>#NY&WBIDtTvhw)C}UX z@OFu44?D6|wBVXZHLD%Z>GI-%fkH8tR6QG)9fbCy!q+3C-W}!s;cKFCuUgnx)WS|# zD|t-kz*nW}{PCDkLVxJJuHxQ;GnNMR(W--+V>dPCo)NdPbqGtDe598sh`>=9GyROh>6dcH@a#be4x|R zdo38|Kh&sCY16qGw|-7v9>euP_ci@bi>JRPJ-8YX=@wt+7hR>E`*nM(|L!d4yBZ) znVg^K+T@VwzxP^}{P=OQg)QG2QT=0UgZOXr4L^yIkMtgWR=Tn5+M#mVpu^j`F=309kx223Z%gn&jr?J`mhihWffMzIS@MVZKRG&7 z_a1&8LMnE-TRzM_m($yHU8H+PXii5UouaYE!tw|wrgskALc86z9~J=-rRvUVnEDua$c? zlTbOI&(vclkg(dSIZs1~*KaP5>*2ky= zO8nrJ&fo7h@TBf0nY8aI_@Em({$t(1?8THzP%@8{#`(eYDyqr{8!W%CJU(V^_MK zMatIi9Bk#zVrTYVy%C6X4(-s+scL!r^PPYig+bv7r>zkpUinJh>%StT9R{C zPI|E&(YF=DB1(-c_c?tkahLA9DRJ58cYFDc-{_bXhuFzA*QBdr8-MKU64lE;J$qEa zaI!dplBGy@|3cKT!9I>8^OoRY&7EB2J6fNHUK|$KbbI&wdxfi~b+{cyx7$gH{%O4V zsQlP%rw-|)goKD29U2l7G8-n|w~oE}tVzC5bA6I$!{%?TA*;V#X}LB}YVq|5{QA93 zbZBt@f!}%ojr3cxY~^<}`d$t@)=BCMJ1b(TXxZ>QpOT)>rd%*`uXX3PwSAVM-(RfE zVeZ=c^|4aM0lWLFM8|mbqpJ@*8^;l_V7-GPe&#^6Wvt^LLIi8&_x^A+aD^PyX zReLCR?)h_rD%)g7jVIZwRdR~NlUlvMZ;-S*vBpYikhmu{`a{@<$drC-+_-IhIT^oL=_ z;OM397rWO!x{zUCFuf=Fmjm5R%F()8J>B2!zp4&#*nRr3LaV!HM!+j?gW!j(lVZNX zPqZ&H->s+p%U*K%tK*Ny&)QZ^9Cq5&vP$ZlXU)o0mQPlkQM=O6Vz0pz0 zhbNQmDD#~z`kw1K?z)H53s3L05}NZZG$k)fBC{_d2+6+_de$Zw)$X7L|0^Y#wo$*1Md$%u{y5zGr^b5J+I6?V{UZ($AOa^s!aob z1WLBMbktX;{y8f)5dAkVLut_A{RfV}D_G;VPc|6d)tnmQdOI5TGcT#@;WID8k&sGm zz1dQ|BTeU(h?@lF$8EU+1Y;}%I_5b4+Zf?Y!J08LuV~$S5Rg9aGlsd$mbZ`Dx^XPaS@dn~jmZjPVcJIfoX_ zU8+xuIQ=rM;^*h}cXVVwoR~5(q0lxMpIs@zV9Bg!*T6`~UjOipP5cFwFJscQPNtJC zQ3)4vOC5`wyic1mJz_p@Rl3&1rJYPqd2%=<;M13%x14Tou42A&WaMPwYsG696_{=0 zx=qzfhMnm*w$Qr>zhb{-MRpbXr4xL!fLB9m3!4;!v>$V!u$gK$TZFRm;9BD;mQ$IZ zOt;EbcAa?k{ha%|J?Xm%z1+JTVi`x-U#*ra__d3W(v;Rwd!(T@tm=tq>X*+|l9jQV z6mzjwJ*f)zZOTVbS6}V$-ElIsprH@>k=h`ziwx`&vv(G{yc?t4^86WaNG)u z+IiN0X-GW?vxZx;#s6e!XfhRfHK<2kp1ii$^?D_*K7snj#EKns3lhD|X;Ie212rb> zK<)ZPAx^6JdbOxFJ+;BKWI8=Jmg#z4=X+-$(F-8at*D7U?Z^x!xURR!vg3_jDIhv_ zO!u?u&ch9$>ysI;vXPQGZikh_{Cd^(Xhc$%H-qKq$xydKNx3L1xwW>nhXSmAcvnq& zGWNZxF-$?a-75xCJhToZiN(^KZ;@5Y707Z*YHY54*fDZev;NC@ea(JK{2zt^g&;vS z^;}b7L_TfWme*Z)_F{z1*l8WLgKoX9*RnG|DH^=jzTvC;iI?&`cSNkB%vXEo*IN}e zX{v#iJQD#8L$@fVaf0E4K^v<*d8&#e>h6iC1oytgOa2G~#`AlPJSY$uGGt z?<=^~gath;=L<}4-?uY0ndQ6o>(1M6!xX1)-5zD#)u-rop!eqe+tTe}Ddm;cL1li1 zzWoX@v52|zecGv0O%z)dh4haH$oiea{j*ux{7ziAF3%}TA1y4DJ6G#hWNNKbU2hj( zf3L00%5Y~V>z%Jd3EMce%}=kX)A_{oexKR42kWG!7~GS}!UWWQj6S<=_^o{Rg%xXL zUUlb7ZFe%~v)S5oAt~tV&g$RwRV7|S;m;grVnx==ln)?|nimvi^DHGz$G?)=e2^-S~y`R&kc&$mUhwGzLTq zgw)Tqohw(RG`nUIJLcA`W=~4q7I7-!Q;5Qu4J)eA?|PAls22rwd&a{wIZi@TtT z)A54LgC~c-XbCmwk2up`W4pBCWrfCZNj7h}N18?MGJjehRBNy)9@_VTjoWeSPNl6Z z!)zyddd=E4r!yb1HnKj@k|SqvP$Si6-9GEuuhLJ?bH^|`PpV%{)J#11z00v6=BS0S z!@5GN*K5f-0^X_$!G-O2rS|GQ;i}=f*v0!quOu{w@3Ge4*CTD+43cC??=iX?=jb0f z@4U#&#Y+2?#^qg+$G>vJ%fwGz2QR1dny2tTbajgGKl=3q@IQVVsN2lbCkMVGZ4Sh?)`;~)EujfQ52aOPmv%FGOZ*32s|T$G|s%(240yz`WYpE^V{ zZF35Dzk2fffuH}KRdPj)%KlHJq*twrzU3-&#$RL7Pq(AvB9Dt{SEv->TcwNH)#R6< zzFRIy9tbU!lao6@xFGrV=uzRJn0_0-TVog5Pxq_#&%CewUOP2k9(?}C)E`b7JzE>+ zJrB|i54tAaA-Ja8*+;2POpMw0;l0G=fyx6?X7qc+rlv**)k&&9-kWG{`}?!wz@OHBcb{^PFGZ9li~43QLH8ELz~< zD~QEKtHoL5YPIjjt2M7iF5g(Ipr80MyGTDjVvHd1bmy+UKM#hE#t?***{SW*UbNd$OvMZ53 z1#febc28+}SLv0JEZU#HTzw`X>JP`1R>HN7QoH>hR@XV{Zt^4fUn^Xj(mH!6=%PWm z|NCa+ugVYjnJ-JYo$0h~TeaKp(aDA%#)SdnFSNDK>uhg(f4|vcV&ry=u9o)r!|>#^ zv(L`|{$81RB41znGFhw0*-Gjyr6ACPa&neWsz|!TuKnn)B+*sFzp5Q;yZu}@Uy!ik zZuBlR*W467cG3R^>FfowhCc6rzMYe2cCBRJm1`PO=*Moh0ePoAv5+cJ?F_&1;k`nc zwAsneEj%K3Ei~ER8m>+62`aRYKNo&cy7nO9ij>IZy^daaKR-mrrDR#TMwFycIFzks zgm)IpoeK2XT38o=b{A=!i~MY8H`C- zo^OzC-9$>9bR`mM-+Rd0>LhKi!TElxRBOvE$J0-EKj z8ZT{&ZbzNHyJ7qZeW|^0TSUpq{)P*eIN$qh2p?R5Rt``2s0?r{@M0GlDVWKrMVds2`Tzk+a zFVD*jFXLStdHXUPW@yDU=MLRGua!y8-=31J6DYxXUCf(VxtDLtMYlaDz9 zj-`}jjn(Ve8j2K*52v^|swlWPKD@NeLQ5UC&uYOJa^4vV3@Hk{BI^{qk18A)65PO6 zK&$)tBhQ3W2w9V3)BSbo*1QGx`8TBU4!fv}ZYuRAaP~Z!4>_HD^wI?e8CRkc;}&;=>i!wp6E|kk7wW>V4vLtdkn+bIOGA_7*c`i|m)LrQ{rV{U7OH@6{-= zcvNzW^``8T250BObPkzz0qHZo7a#bA*_rhEaDQ)ey7#6a-;AX2^WH9M3Lv+vqOUNt}B0tuVidZqk3xCFPqQqzve8Wy`Fq(sJmhG_)~8r`}1@55|2}N zmDN1WO1YVJV_R{OTmG%w$1Y0S_$C>>xAGoc%Oo&%lcCo1#N}5HhbK$c?&=(K3AO*j z)v0|axaZ05b-SL1#qDC^9w%AsD1ICL`j*-4U>?VikJS`b+f40a`sL5kGYjbYG=APy zFwA}DvG(-Es`1Yo_J)dtRhQgwb{}iqS(5hEGOLz6)OzTxZ*#<`+1lWHPJP>hrfz8# zTNSq#kA1o*ddq_+f4ivUcDug}MRc!T);?vue$i0tX~3j^_f@~Q?;|E?{44t}9E!<5 zAt@Ht>@y|J(yC4ou`lV(J6b}}H1R&cV)Li#1i!7x?DOvQhoL+(yAn2<&v|Bix!qw? z=H4-?fBpR< zsaF2@naWz`c3b(~ZO<*Ir2ocns~D%!zL87!b2R(fHk+tkDRgkB{^_g@Z}?Z+thvT- zebQ?@WmRsIUXf7KNXNKh)*bF{>(q}e{6oTa^V_fSx3?>`bZbdk3N)T9;IDrhrYj?C z5uq!&*NQE&>*WCjLCR=%@E1p>?Me!2X>yus!o}O!0=Sz9kIY2`9n!U3*UG6%_@EOL zz0Zb(LU^;hIJ1UnHV%pBgote%G`rH0+5AUq-*4Z~ABf=x0;Ez{XPCzl?Z4%v^~z=S z^S21r7@36zbkvDI7N0uu;oVu$o}M)o9IY`g)+D6w>~ujvTb!IJHM_@5r$mLXFi*Wo z`So$S{Lg9299chge^r^!rKC(n^&-;KYkH6WY7{VjQL>wIBW-?5S6yiN_*2|`dQNZJ z2T}U4DCausd<*tX>60{Nt$`HOX&%HVrduO;jEFQhjXW-mc+sCjHM66ZePV;jK?~ zFztyIeF>dzh04W4sx>Hn-^%<%d?*PSrnrZ@%nD++2JC6p0e`% zlzrFq3T~m`{GS{5O~{q#y%QA*O=s6{Wr_DRC>4{veIsrXpzP1qx{axR@4skl z-COPYbLC9J-N5OZ-aW+IFZd|AmakJwR1H$CU4sk7B(oEXj+p77UAguKnVfZPkGl+H z*D&sxVc8MFw?Zv9ETHLgR=R_Yak7R{){fUSFZ6zi49K0eaGHA@98>Vkp`v}&DcPyL zBNY+s25-z-j*Gqe9o^|9A61^0Ha@Ly*=io1wff7t&tDFFta5X2&H9)lb&1kP=Mj~4 zt8L3UgLejXTQA=GQaC|mYe_kIRCT22!MYWV$E)9lOs}(6iL5;TBRKEWi;$a9oNENS zg;)tr=kMQpyZ`RyX$@W8lj%NJFWs8kMI5Q$zb$Rf>_XP`Hm213*9jXEKISM)aVur> zma-h)J7p>0sCTpUH!(8J6fQk<2Vsn zndEf!YP;o0>kgR`DTSFK1>-c9r!pU{=;R)M>sDBK{7b=yxKvdYztR4QSMi$NYqTsM zd^;j~XN)Cq@9jd7?fdeO`&0^NWCPjbFW=Ob+i0JbjqyXY+#mkV5` zJMGB6d|-`$q&mUZd*zWN$J62#+e`Tm-u9*h=1S}^IHD$gN-n@L(%$NIx+r_?x;PkT7DzF_&t?`UeNJm%`)&`NuY&bIyORgILe zXl)6~)x!OE89kSU((`~`TcRGque{#e~LM*XT`tt!JoKdJQHcDPf+HB&?_wLR7R&YojO-beRyAaRZjqK^Fc<{zr+G~26EqQ zr0l*qy7SXT9pAlDRvTxo8ZnE;(ui4~o!mSto}A$0XZ&8bKjX!%(G@hZuCrI4new(9 z8yIio|F}ZI`O}HUzFrXxmpcYoY?G$GpAGES_%le_tQ(^@AWDk zjoX8_MdY`Oh-Du&lz;NHNi!(?lE|%nJH@VKmW(9uUDX=Zs;HcNc>DqRMUTJ2wbOxR zkA@OHF&lE+R4df_WuSZfuG8Ud*9$pihV0Y==YwALWJgGbRUH=m$ToN0@I*ptSUlx& z)I*1?OMC7Wgl>6zp8KW8Axn?V!kkz36uc<@cv`Z+wJ&D%$ng^_??3EzpnuNf)@tNi zb}i|vjJd^ZV8h=V7k?996yIyn&4@d|N;$a2P@^6OAo^P%DF03Ashp(gN;HN`9 z>&fsJpg?GwOd+(B9>=-^8Z#MZd^YS!VPQ!|eD;m&t*6fT?5bMn*84`zI7_ziAm_lE zq|B-;QTh;0&HhIn@C;{C|JHe`cz#X=ukeYShKY*5W%M+)tG_;!A2psY7^Y%wraSKsUO4*gLK3NIA7(=OV`@Ux|=rli`QE|##`kH#i3dd5rL9vg}|HugFOI!4%KI|hl?C)A#} zlyBRuTfjE)WI*)!x}RSpt~_O57p%16?4y7y_sZP1Q;0t6yXJ)^{;&jfT&${F^6dg- z>h-QbPX_9ln`W3XHHX8)p5Z3}>my_FQ?|C~!vyNLX>Dq+XJ_G4s#*AyN(~|}gU(x! z*so{C&Etxv4)o!55O&CyNHx}%G>aR1n%aaj*(cuN%>Gl(RON%uvl5?Y(ZY`aKRWo) z!w=pAW--8z5q?bYV}>6K{8-_~20wQAalnrgeq6VnXK@>!!8$}MG)Q{bcXh}~gJeSe zL)nESgeo*hJXF-8LDI$k$kHSkQVC;C(i&<@AurH7uSrtjSpFFv>eD1SivK@fk}aNS z($Ewp_|at^mlcN(%Q%s^7Kx3jz3iiqW!htmRBiZ11aG->HOw>?hVw}Bz)Ckwy1-3@)3FJkQ~G@Pj=g6{$T`#_werBe3_CAKl0Kc zX=keOla&7dcb_2y{%S30KwVv}@BQity#xbRgR@HGmp14t;2QR~9^2j}-2~9AYEvJl2)1 z2_u}vj+K`+ znf5DnEC%SI0ZE+d)`S7LMb@H{s|-nERMNu`$jdrZveJ+wMs(Ge^c3XGwVe5Qvz3DujDSg6(>nS!++{{&o_&GuaAks*nV zDl{_#;VQF*R$Q6PPGnSSwjjKX35(ZcCb%dr@d2OT{|*>wX!I9-z;f*q*1!<$T)hxB z?$qK!T?m^DWP|oHO?gMmG^$@s;-@fe^> z6(i(4_H4I3?9Ax6|m@JbL$$>)57sir`3BG$S2zaPjM71`92_k)|g1^y1$j$0QIfS&;YA( zCfK!w>V$^}3zAmm;}c}GZTCV@-|o~ZrG?3ghTnhLiDib;eyXLhbqi&}W(9*gkU%Bv ztVpH=)k7%5iljzxJcRC9k+ca>hcZ1c@nlYAGa~sNBsL^&O%f$kB_UI5k`tl$7WqsO`co3M`Q*t_R7V6ChDV#~jF1YxL*{#;(f(mN&EEG7oBB zPf{TCWoLF>=S6HbBoo5!T=-iaeLT3>!UkF}=TUpuf0GM+a3pb|=NRc)lzFE{0I}MF z2~sc8wIx{*tokyqObehh7`LfEv*zncG>-kPJ&jHiX@$|H`hT9Uu_Fo6S^cCzo^~V~ z!rX7Gj1p!eUNTSG4h?WJ3*pmzhHN-_m0A<)?2ALNb7Ste0%ZjEjx|Mwi zy~Y8W9^}LrJ3=EDYH%d+qIV7?b%HA&4!RU+d6BX3zp-Yk(sIFD1pL3kgtdaW)?HOv z5+2z+N0^a^LKy8t=n}!j@=hc(0>2avGW2LUQHB$^A|{J7$cUC3B{@UX6ik+x?~%t9 zY=OqZy2cs8TC9lEVrJkQ%nujJ#%M(~oNjX_=@E1_F~Eb$*U>T{Q5WdV+67s=KrRKk zpja1@7U6^oy5<7IuX90Wn@IeKVFM_ArUDt{iUF++m_!e}&WXW3&RH#v5lGq9D$fqaZ`5#%3_>-9EU?)Qz;7@O~!_ zV&iEAaf^d)ptB_qqczZU0z|{w5}e6%2WQMTgX~o*^4d%aCPbwz=v<^FBIYe5YrF78 zG3zFY0Uh%Oy^sH~%;*)y$lk(jiEfA0&~E`u?ICia*zF)LSzsErlT-;qx6sUXSaC$E z@ix<)v~0-J2Z}qQW|0vN7~52eFW)``#=o z)0Gc!Ezd#dpvf0Hh;3VB*pZMQNr!d>NqCb45UB9sJ>~^K0y4Z?X6S0iVl!6MCutRd z_bU!Emq$shhz30x-wDR-XK`7VKg>xN3xT?=aiMkoAoKXWL^i-hU_q(=Fb6}l zXl6I0Av7^06tFJ>2Ba83(jgd;mN2!lxJAg|0GI%7{w1=v0k9@F3oK_Ck@GGH3rYNc z>2hrX1FGCbvL*CN{GYNsZ2||1ClOiDZwajavG5}U!qU}zwe~A?auF~f;Sh*-UzyR#%;Uso65(a8CMN1fya44-}rWymjg!~%ps*aK(p-fKR#le?I7|oVC3`irpy)gXXUZfrcLp#409Ek42 z!Q3=V$A7uR8wJsgev8TM39OS?bofzD6gGcTIGBopxzYZDgGweke!O*80c2vpK4|^= z`=X2umF|P}C-v7N!-@#euv_!~!I=ya9T(c+1IZ8>4NV8;ar$pGi3wec1~;c^(eZe2 z0T?~PBO(qQVqjZ?4V)?g0OujXbS$Vd22$WD(<04<+(qdakbErAhgdOMAWMRd9mQaT zEC-c94YAP6%nA%hpg0w9M>-CI{*!-^5yiI1g;Fby126XqEy_5Ns3{TdOcoWG<3XW9 z1XEB&F7Xhz`{EezAau)NR{>;eOh-nd6mVgeD#q|5ZwjP{n+6WJ5@6`BE$Nuhz90xo zlr`Pb+LqE@qQ$WvX2L{o3FE&XI^;K8!nEv%iN9*T$QTi<*Wut!0tr^mPu@+1TT<-3Q>#KE`Dc!1>7m=qq<4qCH63L11yit}-a& zAmp>~797kTgaq~3hJ(paIss&S5C$1{2<*~%;&lBX7!{ot2BeYLVK6ze7daj#xe(;` zVWbeccNpR&6^#SlBLFyJaFCh-^T)P*v1pHg-3xJ;4DNF>Aw}SEgA2XD=rIaTvn4{A zupYp{mPFDTLdhW<+)jkdkU53}hNEy>)}OYZR!Fx3bq0f}#RIyzzO28|1S!(@9)m&jC8AUI-Wi;NZ_v>FGUDKHZycQGJ>q*EaV>5niVh2m2o z{a^vw8^5p~}hO#@T@bGS?>9UN+$$3b8^&8@5n5C*Ae>r>gNzf< z(Hj{Ya2e1O(fbpS3)_`&MlBO!bWC#*Fd;50dKP?uLhF|eutgi!dYK81cIx54+K!$V zOUH#Z%H|~a@l_v}?LP^M14fI0h&-KO65gDIa6U4@Y0C}t>`3JlFcdSK`Lz)&?umf_ zqf=n)!fKoraitf+>2DZ4u?D9VvY?N2OANRW3aqfJ6nd2f8`MP`9GD_VFa>)INTLcK zdIpq>;2%~SBF`+?@`e#)DZw3+@}sygdNyQo8l0K%#F-tDF#oy%;EdwFWx;s99arc% z4G(Jd0XTr0dnTlv4HoYNE@6xh(DR_Ad@yn~8(c39S|XdwhW4?0mN4^&>B-152b|~) z#c3|=hUG>Ml!jBp5{B~(Favv+Faa2|DS8QWA7j|#78x@_DrFIHp_sF98j+E($Z(?J zvydG5hmm?NY}Q)mV3}n}!a-^-{X(rbo`X@OCgU_m-oLt{CL(Vx$SA3p%%64)nVo_4 zChZ*DC^_UpS=`Ts(FUjEEmxi=!N1?jKoWT*Srm7Xo(Y{j52J24fiqL*!IP)?81N>D z7hzW=R8a%-r+W%Vebvw>*6~Yqj{}=~Bg|O`$d$k~$hJfl-gNs9j zU}DP~oE9yD22uSuh%JH!9Pe@P0+Te4;=u9`JvZ*$#*5Ipatx<6=b@;u<5PSgy@kmV z#&H=vEs+|$g{4HG7-UV8m`oVudBLpN&=I+@qZtK4!4#e6aOy?yiQ10JLm<%o=dCBtZSOP{q%q>@7K2csG2!rIj z3}O#PoOvruk!%TU5L8p<>)O7jJXu9WnTefXlnZ zK(P{rEi8xAXI8$hv`xJ26I$)8Kl-E%2z<4wu1k4l8QFv|U}7GjQiw4aDC&Zr#+FFg{70@!M+K+xR1gchhFITCIJFJY2u zpzzm+E@9deiQ@P|EpP{hQyjKLCYwZrLlA5ckH%!b!k5URlZhgz>kf3u5V@RYL(+F) z4pR0lp;^xNnTmvwGMd?`0#A29g!smRusLzfM#|ZJ32i4REj@luxAuQGWw8m?=cujd02@ zT#P&#N!D~aB}BCUF3ijQMv@j?RVgv+9#IIbxJOz=clHVfBrsDgeA>F~a z0^N`6iwqIH^COdxR1-;*F61^&f9!y>Lh7k(WEYW#{lBAp={vYWZWrVgHFnKdyNp_# z{?$Y>rR!06`0WPW|A5mZ9C3H4}d4s zCOX5*nhZY16*dn;FS+-jmvv8ZX5c=|#+v7gfC1^ZK=5?mqFpVpa&CQ#@>-yVj=o)( z$p|t7`qcsk?!6_V{AUdO$fT8|PIsn%0ljU7M`p2E$bjrt&@vhRk2j`M99uxT58z{i z>FEU&$iTpkKJ>ygUVH%4cyxAwSAGchNxbf4KE%q&urvZyKmXIvqnrP;fc8Ix zQgp(S(a*=gi!$8ET!r236?2S823P&d}gK)@z zG48$$+-UbU=(TF+ve0=sV+xxIZkw>HIAZUDZRXBq92oBbJJfjIk66}fk0)++5@^)c z1s$>ZAletu5mz^4oas&+)W(5$eK;&U4i8}AInoUyqXgnI&N3KBOE>hkK4b~A@(BdY zIBE$K{{-&Odf@N@Gf!=`H4~b`OE@kx_XKWyQ&4_49B~*ug}v4P@Djc090oQ#H+SVP zbDuADiPpJ%i2U4B7{lxICA7^mc$_$a78w!rNFI88_6){gd}fhmK|DR+@x*zY@xRGH z#v_*41B&s5I9=NV_dvuF9PmDeTgb~-a3FUNCWac~6VIW+$4ZQrK%LKFfU= zJ$4mAwa;KY@h`Awx8h9dYnUJvSMci{M2BGAiPIu4;W_!`a~y=dgtg$qOC0R{1eNvb zC74isgS>j-xk$PfCTwT`0~-l%-(gpA)Y}W2?8Y%%L-Q2`cK;*}l3u}1aA5|sCWyos z8F|puE3h^{i!-sTi~`865183MICHWO?BAqCjj!NV=TjdzHcG_7P9a7POqUDki!m-O z=XcDQf-pMs8nm^za4`KELO8^?2pG{$B}Pu<`3CxG6_J9+|FxfV(C9+3v!IGBoBEy8#`XMeM7K;oII@1sRr>|RN z7}3Xm$Oj{vMTQ=k4#0#zaKspR6CB7$MC*4zujK>KboHi1nh(9Dg_#r@1V4;;2b-f9$w+Ak%pUf`nXn-k!qr_kP)%TD$Ie-} z(D)Ga5gm-vKMp~7s43{1w5$)Va9klRiBSkwC>(}%wNW_THw?C|VsX%VoRJ^dy@Rgn zC^%zuijfb$`=%EEop;dmcmBc3tygnMnG{i8K=*Tz_t*ZhJ#-P zjIaW{hdww@VT^EAJ<|<&A@Zt&{I^Tn-xikNXj$DP5p&kO7j>0L_ zj`ROSaPmD0-XxU#Blu5sLY(M6fPsLk7%72FKR^a{-dqH1$fKQ+`u+$et#euAT5e-n z8wldHRD0_&}&#rQ^?t{j8JSlPA+xRB^aIOCvwiX1fA6+i~nTg#p!z(tviO(f5#yiFHYe=p2)S3M|hDTqns(22~CMbMi9+UfzLly;>_A< zh{k?-9Gsm7mjqOC@OK&e5pjJ6-A!v386Fh> z89M1(hck~qLsALa;y~>SOp~x94o-c6f;+tl2co-~n6Y=j3mY8oR~TyR7EI<&(Dgva zzmm2Q2EB3J9Z^i|NPHGLiQ9=Y!LzXY=?CJVK7ol1pTG~ZU`22*PUodEk?_6F>Ko8w z(F;v8m=^Y#%NQ+{fYTqp!84x(oOog5wEhmuXYElm_#KvclU!(!@e}6b{Lk&4mV z2rL=cRUCQ#fbqW1#6iOkh;RzR8;bq}lL}Bnn3XG)OnjIX1;X20obkK?qoVG`$+wu6 zF5=o3FfRm=$}dQu+#U`5G=u`wjl= zslvfzI};E3{Tp0ht65|?ko_E_QCl6(SU!WGfesfs^qQLSP0|Ka$z)X*lhnTp~?LW}l@vbE_;V+a`e$NtS!(WmytrSuRb9l>Zf3dBu ze~AjyJPbZ|WRZa*D?BAfan^xriNBFa<)++!9uh#LSJajQX_DV)QRnmLhyr++xzH!xwFx5dR)9eECVYm&Ur<8*1Tut+7bVbd13LTZU}HR3@^T=Q9eC+E5TD9(-B8vM6x;U1lmtWmO#O4nHN&4 zfC#EK8kmX*dQF6m4B%9R5nQ;n9^8gcXSk3f1Lzo-;dCMc8E$IeFoF^6_-%oHsj1)N z&b%~5_gi5K@`%j?I;#H*>GFKXGKB;uOu>WD2wyugl0~za$ZH7|aC!iLBeh6oScjP) z#2$VaBZB&4m`Ny}6?{oPw9Je)oEl&XH-W}Wd`0pyg?n%qfGI>XlUEZ6`_Lc@Sq7z~ zF|(jg%+NtB?6E9l1;l&;{G@JdUMw(J0oZ6Ux|oFw@3W!KSzvC;VB=&VE22HDK>p1{ zUTkDx6j#Db#s@gY3Juqu#_6UqSeB{dHfIC6_$)?mBDCdU-UuSgDsUIxXmg>jm{_+E zrxn=Ax&+!wIEb$Won!3aWZC5faU(Ma@;CTb$hVu9jntzvF;`hipn%^$Q1`JlM?gz+}Mxu9O;7V4Mi9^Efc#C0i3d(W0v)P}{wNMF`dN z!hlW@7a1nR$p>Yk%#1ODs8p1NjIRJk`M@RkREJ87OR>NkOFn3-&W$kws7!{1W64vU z<_geO;KgM-S3ues2;krj2CPMJz`;*8Ayi2rFEO$h3gU-KdM%FwcN6HC`b7MVpDYL; z>g9t)0v#K1past-Mq|WX;>^Ug}9Y4!%wf_!2SWt!qdvvm0(c>RtHQ+UK(6st6yj! zO*SNag!;!MelH*;s5i_%rJ;eaITl!fCNWm!;s_-eUK24DBjVX`CrOJu9$$ef5v7S{GHKbMV-0hW)2u80V<>HQ(!L+7<#ve3T*q15Xge3%1sFjB}(f`K5 zelAuPB%}bdpYs=IJQZMKwh~ajBDh?u028jtfP)Gl=$iTn(<8Rb@_rVoLY6oyEBa{( zb#Yh`qOgJkV_gZixbf!vN^k?QnhytoO0a6>2;)FhADnokL{_8CMR|&lGeGblRb}w% zh%BZeh$589YY0CSkh&^lUZg4O!co>YW$5TO-27v-vI#keUN4BbpqBqNhIB zURMFdQiK1mt80(T@$BQeZ=rhb`+4r}6rGTniHN3yRB{R(Q6W0bAw=aAI+0XUicr5^ zqiM6*tnBoTiI3^yFjF%&wwO76usJN#yklP8-tTo^k37%*dOqLp^}DX?cm3|)b^2Y` zRUK(6cggNUK!*o1dWKLK%zjaWi>q?u`EO8@U%}>!!Bj>V9*J}KtE66 zbY8AaKd$}(MxRZkpQ$WSUH+mjpVvWOT*C{E ztAtIpZn}lhc?FzquYTcfcNpDT#AwVWJ8bNEFfn8}=;t^+XI~(1I9zLcIRlPV+10&Eyq1yg;{U|dVq z!23Sv@Mp0@U@6aiFw?9##6ftojTKp*vvH(sU*vAb4uQ$!oVRfxr?Z%UfAd8XO0X|r zw5y*QA{;u-ybcFfe)#YeO&vf_&ev^pRU=T0-*+Z#^a!Ya`Fj&4<+m4BK6T%$-OGM5 zk^0|#__;PP`T0W!$6t6_nm?TVn`<02`(vW?zs*wr3V@W$&Xn3$=g4Jpf*^CjmeH=X zKL}%shXV)lC}e1HVqhT68>(}x3WnR)jDq|xy*Zoet#bnFF1WnPi6mQV#D0QRPoaGP zV}j_KKZfU9!N^oUgfSUH{BSN?Ga6%q-j9Qw5jtbg!fgy>vqzG}SnOZsj)6jf!5o~5 z)#<6F8P|befJi$7 zn?uyj)H)v4XiV*35L}rGlf;EUt>p9$8hf^79RRsPFf!L?nlOVm>U0!2fhmK_ftoU# z;6&P1;NBK ztv|*=UN{z!VPA7_`Z8Lkg+(5RLz$jUoE{tj8Q<@yF#_Im_$Hh}+q=FO0U6zSMo$x3 zE|L-jlg2zi?fmd05M3Pn~44`kwySOf&HYlX9l3k#Gh1CIgd&iFY}Sq(eeF9KJzql9 zPDR$sJv->m6hB0=VJA%nvi6cphp{hQOr$)c(a}BJIJ4JB(i!awy@WsdF*;G$Fo69I zr0^J2?Ky}67y2YvGERWUVjxR{IsGgK<%JF9pn1I1lTVT%lgw0T!=V8yq#+h2UE#}t zI!*Pp_>qoAW3XE|4PK=m#}hWiNyaF^&1tC0I=q9nrvB5hIQT2tgju@~c6Dz-yQ`-| zx+b2dxh|9JNgs;=>M^4`B{ABG2G3A&341mN>8mA`oucCGFoiRoMJVjM9Mq3U52n&o z6S{S+WL)3Ph(n2=W$?7kaae<%U%|nhIMpB5I+AC=!}gU+4txhYe0RJDy^Wm40Gf4#@0oeoJd^-n~bCw|Bn zCrV31*X_NJgPLQK3%grnpofX5aL=clel1BIYcU9K!_eHlO{h;B0Y6BB$bo}gl8c-VvPw*#$M3-vHAD z9+I?h=9N}_L+#vl#cWjD`!ZF`R%3*uE9}>my39c?&GN2PBXJE0DFc;Tv5wmomD@-N=H-tOrUh`mhcgcjw zorm`570#5tD)(SF4vn+m(|O2$-;SpZNx}G2;mCpHDfgs(x8TdiQ&=6YoIdR(Yj61xnFfcOhT8v?&8i9rk z_}=e}v1;6p7y|>7($Evz5o2H=rx3~^!ie|oX(%)Yfd)qZ{ibYOTDql!EohAAUWPa+j)+qPj{?$&d6dByH8((A#DDZq&Y1 zbr(-&nex%g)G^}5+?SL>gI1t{Ez49#u~U(ew_UD|5PRSfqgLRe<*KikvDt`@FIWA< zF58UAWd+a(GNMCudIx@6NE>u^u0WyB*;V*QSX^q$laQx+)5|VxH;p+1GEqn9uX;MS z+QNa7R^lE~%QJmPqFS)IjlPgig#TiJq=fhl(e$()b5IV>L`vMJ@YV|zBSDV7DJHzWdtr*mHWi?b z`jZ@7F2L;9+{A&$dQ=#GmV@l|m`r{;&q33AtijSQa^P5q6zK{F3ky-&?i;kL5Igd& zx7n{lRS|sk#2rjy?eMs$B3SIm?^sI}spG`5HW;$2;zl;JUKr+a5zHO*#6Wh%YKS=d z8J@8fL$a>jK!)y0U;3sP1uPa7=53xd@Gw5D_L;ojM81S>8sCSOzp46&xtQy&zoHB> zk-E#Iws+TfS8^VxSkd4OC{S`#n8WtNGbLE+Trb*Hg0C@gxMD-ij9KW$8L0%V&5Gw> zW(f;$B{C2uM5S=@RE~m0OCh>=pHeuRUm69J!Wbu(QBf({5ud40W2u5&cqyta%~I&W zCiEJQjX>^eajB?MaiQuWWdE{SG4-L@1qyv#t@NiRCVH<}p~#)cs4s(d4jah7OpOuy zmEunj>_XxD7~89yE|o#UYg?&TxjIp-uTn^}#X<9VD1hAVLMAS7FqNdO@a!GU4B(F4R`j0bXBcpzkG8^pJ<66O0E ziW58kp-@E?DvzvEgT&7tYA8l*Yg6b>l^P*>K2~T1sUa4BQ+_4H((Ld@ENrg7@a~Ts wutqses autonomousMode = new SendableChooser<>(); + + SendableChooser autonomousMode = new SendableChooser<>(); Command autonomousCommand; Preferences prefs; @@ -76,9 +88,11 @@ public void robotInit() { drivetrain = new Drivetrain(); shooter = new Shooter(); loader = new Loader(); - Intake_Gear = new Intake_Gear(); - Intake_Ball = new Intake_Ball(); - Climber = new Climber(); + led1 = new LED(); + +// intake_gear = new Intake_Gear(); +// intake_ball = new Intake_Ball(); +// climber = new Climber(); oi = new OI(); // Initializes the OI. // This MUST BE LAST or a NullPointerException will be thrown @@ -86,6 +100,9 @@ public void robotInit() { // UsbCamera ucamera=CameraServer.getInstance().startAutomaticCapture("cam0", 0); // AxisCamera camera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); +// port = Port.kMXP; +// led_out = new SerialPort(9800, port); + sendDashboardSubsystems(); // Sends each subsystem's currently running command to the Smart Dashboard queueAutonomousModes(); // Adds autonomous modes to the selection box } @@ -166,9 +183,10 @@ private void sendStatistics() { drivetrain.sendToDashboard(); loader.sendToDashboard(); shooter.sendToDashboard(); - Intake_Ball.sendToDashboard(); - Intake_Gear.sendToDashboard(); - Climber.sendToDashbaord(); + led1.sendToDashboard(); +// Intake_Ball.sendToDashboard(); +// Intake_Gear.sendToDashboard(); +// Climber.sendToDashbaord(); // visionProcessor.sendToDashboard(); } @@ -194,9 +212,10 @@ private void sendDashboardSubsystems() { SmartDashboard.putData(shooter); SmartDashboard.putData(loader); SmartDashboard.putData(drivetrain); - SmartDashboard.putData(Intake_Ball); - SmartDashboard.putData(Intake_Gear); - SmartDashboard.putData(Climber); + SmartDashboard.putData(led1); +// SmartDashboard.putData(Intake_Ball); +// SmartDashboard.putData(Intake_Gear); +// SmartDashboard.putData(Climber); } } diff --git a/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java b/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java new file mode 100644 index 0000000..09a3c18 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java @@ -0,0 +1,55 @@ +package org.usfirst.frc.team708.robot.commands.led_out; +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.RobotMap; +import org.usfirst.frc.team708.robot.util.Gamepad; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.OI; +import org.usfirst.frc.team708.robot.subsystems.LED; + + +//import org.team708.robot.OI; +//import org.team708.robot.subsystems.Loader; +//import org.team708.robot.util.Gamepad; +//import org.team708.robot.commands.shooter.Fire; + +import edu.wpi.first.wpilibj.command.Command; +import edu.wpi.first.wpilibj.command.WaitCommand; + +/** + * + */ +public class LED_out extends Command { + + + public LED_out() { + } + +// Called just before this Command runs the first time + protected void initialize() { + + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + boolean Bpressed = OI.operatorGamepad.getButton(Gamepad.button_B); + + if (Bpressed == true){ + Robot.led1.send_to_led(10); + } + } + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return true; + } + + // Called once after isFinished returns true + protected void end() { + Robot.shooter.stop(); + } + + // Called when another command which requires one or more of the same + // subsystems are scheduled to run + protected void interrupted() { + end(); + } +} diff --git a/src/org/usfirst/frc/team708/robot/subsystems/LED.java b/src/org/usfirst/frc/team708/robot/subsystems/LED.java new file mode 100644 index 0000000..20049b9 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/subsystems/LED.java @@ -0,0 +1,48 @@ +package org.usfirst.frc.team708.robot.subsystems; + +import org.usfirst.frc.team708.robot.AutoConstants; + +//import org.team708.robot.commands.visionProcessor.ProcessData; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.util.Math708; + +//import edu.wpi.first.wpilibj.Preferences; +import edu.wpi.first.wpilibj.command.Subsystem; +import edu.wpi.first.wpilibj.networktables.NetworkTable; +//import edu.wpi.first.wpilibj.networktables2.type.NumberArray; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; +import edu.wpi.first.wpilibj.tables.TableKeyNotDefinedException; +import edu.wpi.first.wpilibj.SerialPort; +import edu.wpi.first.wpilibj.SerialPort.Port; + +/** + * + */ +public class LED extends Subsystem { + + public static SerialPort led_out; + public static Port port; + + + public LED() { + port = Port.kMXP; + led_out = new SerialPort(9800, port); + } + + public void send_to_led(int command){ + led_out.writeString("10\n"); + led_out.flush(); + } + + public void sendToDashboard() { + SmartDashboard.putString("LED port", port.toString()); + } + + public void initDefaultCommand() { + if (Constants.DEBUG) { + } + } +} + diff --git a/sysProps.xml b/sysProps.xml index 5aba6bb933097ee4b6476d7d49db8cecca664bd6..5a72d38dfd55d3abdf45c30c9c6276c559a855d8 100644 GIT binary patch delta 119 zcmZ2yu+CsZ37@GcgCm0_5V|s$F&F@$0)qum#F@dI!HB_$!39Vv07(-d+Z0H;07(}H zg~@>|)|;R3ynVKAM1P{eYwfY2;vBL<7jYlT!9S-}!OVe8F8B5Rl??-MZF J{6)-)5ddE~8i4=+ delta 121 zcmZ2yu+CsZ37@GYgE@mUgE504g9U>D5Gnw9rVLI%z8QlhgAs!(P{f77guxLgX946{ z0M#o@4rH<3{Dkif6RR^rC_@O4Yd-md5Zh!Sp&8633?`e`3aK)(0woxnCm$5C-Yg`t PhH3ITZi~&|#4H#AlC~Qo From 246d196903663bb46525ac712ac039c7dbba9bde Mon Sep 17 00:00:00 2001 From: jpiergal Date: Mon, 30 Jan 2017 19:58:49 -0500 Subject: [PATCH 02/69] added intake --- build/org/usfirst/frc/team708/robot/OI.class | Bin 2479 -> 2712 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 3964 -> 4155 bytes .../commands/intake_ball/Intake_Ball_In.class | Bin 0 -> 1131 bytes .../intake_ball/Intake_Ball_Out.class | Bin 0 -> 1145 bytes .../intake_ball/ManualIntake_Ball.class | Bin 0 -> 1575 bytes .../robot/commands/led_out/LED_out.class | Bin 1349 -> 1237 bytes .../robot/commands/loader/ManualLoader.class | Bin 1492 -> 1492 bytes .../frc/team708/robot/subsystems/Intake.class | Bin 712 -> 0 bytes .../robot/subsystems/Intake_Ball.class | Bin 0 -> 922 bytes .../frc/team708/robot/subsystems/LED.class | Bin 1290 -> 1290 bytes dist/FRCUserProgram.jar | Bin 1284192 -> 1287197 bytes src/org/usfirst/frc/team708/robot/OI.java | 5 +- src/org/usfirst/frc/team708/robot/Robot.java | 15 ++--- .../commands/intake_ball/Intake_Ball_In.java | 42 +++++++++++++ .../commands/intake_ball/Intake_Ball_Out.java | 40 ++++++++++++ .../intake_ball/ManualIntake_Ball.java | 59 ++++++++++++++++++ .../robot/commands/led_out/LED_out.java | 11 ++-- .../robot/commands/loader/ManualLoader.java | 1 - .../{Intake.java => Intake_Ball.java} | 31 +++++---- .../frc/team708/robot/subsystems/LED.java | 2 +- sysProps.xml | Bin 6190 -> 6190 bytes 21 files changed, 179 insertions(+), 27 deletions(-) create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_In.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.class delete mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Intake.class create mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.class create mode 100644 src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_In.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java rename src/org/usfirst/frc/team708/robot/subsystems/{Intake.java => Intake_Ball.java} (56%) diff --git a/build/org/usfirst/frc/team708/robot/OI.class b/build/org/usfirst/frc/team708/robot/OI.class index c07ed9af23b74f5496bb299ad15b9aedefe057bd..744b204f905ae0c258adc29ba8869c62d974696e 100644 GIT binary patch literal 2712 zcmbuBTT>iW5Xb)mgn?nWB+=YT$i;{RV}+DZ zUtatKegdC-lT?K&x61O_7r&9^zt2oyQdSUkAG+t)=bY{{-KWp&?|=UCD}W35PRBzu%ctt zz=0U*I@Syv#vL8L0S$qyT^I2{N2sG=;3y*Drih0k9*Ouw#A6Yk>iA4UZ!Pp5y5Y35 z=B_(64X5)#xMVdOi(c4>ti`ZuMXs}U`Ro-d3@SlnH6yQXC9}sg^aty1=tRM`gT7p$ zl)0HLPiHg5a;~63%Q4DC;5Q=2kLI0v(`{$6_GoxEb3BvJbEa53=`p?DzFiV?+qPLv zPR#A}F=rPT$DYp?i@C|HhW&H1xk7nv#_sbq5xhn}})CT?yG?NdWj+3aL$ z{=w&r>FIs;Y_^ywWy>>}!gRJMyVEob?z#PR(oRmo0$GV+6v*J8-G>q>4$eWnO`zErO z(2&`ASv6Q&bNpJvipx^2F!5GSm9{KJDCc|~pPTpsUz(T_hvWa#Av0~_D{(g??ym0A zT_di!CACZHZ{llllm9nv;tE^&)HyJ5OFWG2awC89pkAmTE-wEU7d&kyY*~J3x69pH zIcP?fv?Dc}Z|8+Yxf5?W>vAlwl`Cf>j(uhE@*_D1ly5qZ_sxOX)i+c}J#lK|hE z7{`Q(NfFZ`aw2YsxG8TrAjjFNJN}YoS619A_kVKdeLRcb{b-pzG2_vxNwpK zZB4`ndraE4M=i`$BYs2_x&CbEHX7359V0oJGW;Tc)2{D^UUeonImU@N&TrBPugyVz z)|f~>9hO{DAHiw7$&cI_KDWUlpH1;w!m6pR0> zDZWS^OYt@Oe<#J)$?v9E#@|b^>?f1r^JLaly)R3vH18Lsc`Yc-YAemYR+@!ZnzdJ& zwt2EnAY4(oNYy#>w=8)GHWs&p~+W7?BAKgUT2HIQbSlGm#r|8^(-a;3l`zeeK z^t50SdY__i1N|)w5cVqA*TR0nOA20Y;Q-;Ffob*o!KL zu*3@2nf*21s6KbKjxrvg#93y%H{8ZNsS6)G+qZU<>*e=H3)(`*CSG}hL3!Mx9*0^u zy0C%4u1y?&f)fdGjPz{=n4y$mDHs^>0j=h7Y;E4GVt(4riE3 delta 1127 zcmY+D%TE(g7{yPYw@wFW#kPPHM5`!>JXJ)VJ`m~yL{KZDq7+e{f=XP?&aj`vxOCy( z&?YvaiMny43;!eI`R)wKIE!=cZ|(}4CZvc9*tuSriC}s|z26q+i z83tMK%;(?e294qFG!waR~!H^w~|JX8U`vI;OB`VhgWLjP6hL zs_``w*Dzo=goXoS^!ZSKV4VIbv`~@78xzNnF>xFjJ06~H&Elufqv6Gl7#F`*Dig z;^9{EX%DxN&v>|J7d(&&S__&+8L^L=Bk|y)XvUnXXmuDb96sbHn5CIFxkC1YB~;G`ghASVbIh*{RdylG1x9mx7uYl)PNh zS;?d{IaOm4kPi~jAgZYKJmhI4c?vR&rHdzRgvV diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index 408af635df0f5816e85c6f905375b761bb16a232..145310ed7ef88cafa0228494beb743e9942ad3d6 100644 GIT binary patch delta 1819 zcmai#>2p(M6o;Riwz=ueHEly%5W2FJsj`_;6s%prR*Sfo(jo?lTDwHrP!*RH>IS&> zT2N8kpo#)Y+NOcJjm|hD>&nhEPXYTzQAOA~u^1`Tp-XGlFoboLtL+L2+M#|%u{d0giSgFM^Wr}LzN z-*%qTdD@`JcAn9R8Z5A#5rd{E`^9p=V3cQ-c}}^{8@#}ais7K5Iizz~IWHM3A)?I7 z2Ct~8IlQX#n!En8lpr4!cwGUGsq|t@Wr~!^W6Xo4^M<>@GdDTFctGhN@o-ey*&ewU~g#Wu3%rEMs2&5?%N^kG%D2V>$kR< z+{s-geRP@h(xvl}$q7!HOsL2sD)O<4d}6YVPLor7sfo=j5FWrMXHG3V~O; z;HR4si7prQHKMvfbXy1sd9Sp%PiFLIM640EdG`y(<~Kd=?@rch_g&3$V%4alMzPn zv0v&Ljb^Bqrqp*QCu=1_8*4+-_*3{9^?{GcPXIVF`RaM3j6 z@-(EqnBxL@Btt9jzkEKCdB_pHM%WaemZowi1IIHIG>7Kl)DNS`iT~fqPDo`ZrLu_( zt#oBQ4#b9(lqW%zTHiE_-J#Rc{4?mBb#x@ZCk5qF$58~jrHWD62CAAGX^|dhMIqHk zkFmn`u8rZ1voc0uoK-P=aaPBeA7@RBf;el_ZCotcFePoAmK!m_BFe%eyMKVCp4&ZkTBd5w?Q{C}Z#j3Ftof@t z^WEQPzW`bo)hwi6v0f9Szle4=C^l;1K{8;THYpy~6a|$>6pw1$Ala4+yTkc!-YgCn)veZ&+&D!b1}PzUW*p*d{LP8yWL`Uaf8K7Z;_qWi#uIz;%18)nN!`m^hTFk=yrLK zUYE7>Dn?x1k@-Zj8-&A+ONg315K=PE!CwywcXBKtl!||`2)v@w+*$$??Ag&}9 zA%@K8H6-fmK&(p!!tReENk$h7>6642-ho8z+&iRZx(>4`q>GjLIZ#3$t0c3yGng;W zBNRvu-QFLG&P;lO>GCfhl}ZeQl=k&3BOwh)309?GTp=jUg3-nr>GFD(utEB`F~Zax zGTjw2EfGY+l*(~QmI|S%Oy{UNLv_fO5sE^YvKgB#LcEn}Y>U9ALfE@Q*p+$Ms&x7^ zg;_2=N6i^(C8_-yZH6o}3`2qMCn+Pc?~@FQmt7I?D*7^hd+zZkTa}`Abx5;7GNV2* zr9PA`Uo87$u+!5xlZ73ZF-LeqE+80%u3X*)ef;Jc2dl?EVm|E$__9ahX})3vo_} zzmq6VMR1(FrkEVJjK7P;#SYm9#!Zv7NM*Ual={OX%m}h8$4F#Jk1;Jv!x+gdGsh^+ z(rD;{Rjw8i7?%c~mV0o53Ubu)IrW^SkuM|kP0^-iuo`7M$xR^aD+FODj<2IbmB$uif^=S?zS@-}&&y2ey;Tszf>GPykA8_M`r&e8YG z;RiYOKL(1n2V`MKK zFYpi~9{2!03NafyPN-1eWjwPx=gire@y}o1e*oCT9TOE?t>79KOq6lmzzq{OaZ8&; zeX?X=*}w`z>9Gie+F{5y)(;p8?XbrgY8?^q7qRd1=#}GobTZosyN-9@L_){uVL=@W z$O5d3KVH|b&uFzuV{v^M9 z;+#4bOjHfrwy=sd3w1OY>eF?%!$2x0P}0D{#4Yt+j zOjo!+BH7l{AX>4@{{Td6UbbKq{T~- v4^pHte0}L`@kQ#`@&tvEQOsu)_fv{ua{%Kk!5THGK0#1S2^cO9m0tM`Jtyn9 literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.class b/build/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.class new file mode 100644 index 0000000000000000000000000000000000000000..86f6871eec15ff15d79836ea060e3b776bca7c74 GIT binary patch literal 1145 zcma)4%Wl&^6g`ud8^>v(q&&)_l#(`0Lybg%N=03?RVAbpB#OFVQ`yOsPI2tu8JEX5 zv4KU9SiqjI;R_IV?8J#86!7Bu-kCY)p8NRu``dQ_8?a53aJ`5dxM{+~EdvXMAHV2| zJ`=aGsLdUHwPfI~fht4ciSUKmX2{l7j~H^hL7OwoG=413KWd~HYaM1)e=Ct=H0-03{NziEeo8z{RKbUKdTmbUPf^M)V0j_27= z6Mu*NmMkg&9beQ4MKjtDMSALL+cjV|aXcAK) ze;bLA(`*~H=46G31ClMhKO2)}{yif@u@jv0gFpo#tzd00-bAT_E*5E5OY!~|!1Vmc zPE)*%40(W6{|Z+Bf=mzD&lG1cLv|WjvPI+wTO!m2{W5uviAI{yd6 ChVPgF literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.class b/build/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.class new file mode 100644 index 0000000000000000000000000000000000000000..fb971c3544363a46301f590268ed280e781fd11b GIT binary patch literal 1575 zcma)6OH&g;5dJ0!S+Z_Og7^eAf=CR=f~bJ_1PY6)pjBXT@M2ApfedbTDi3=1*Z2pt?Ae5Xj|wJLJKa6=b$|Vs`S$bk7Xa6>WFmu+6fR-ZL?14vFouGG zD<*nS)aG#m6DF==GWqp8A?T+yTOXb>Fm2!(L-MwCrMk-yFI?GVNGy3(!H_9QS3C;q zW#K>JWrr;NC9lGrP3}vrw~Yx^lL5m@$@91EFxZlQpzJNbVk^Pxvr}`n@0C4eSG;nv zQDtCH8L|&v$zWY>*Hp)x-cY>qe2q8S3{4rVkkg>1F_a>q;=(2Q7;zE4A2yWUF*m%> zuZR_?Q$6_?waFd6%PnM)GcaRO>2FxLiCF`47Upq_q1e3up^}dMkk>_nS1l~ywuL*O znvZpdEqQLBxT^vK_blAU0}G4DS-5~4!*X}*|J9sfR8&LzWkcGn=8@#c^3HzC?4?%g z7)H8>Ti1=IX>vSHU1FF%VkCmF9J~&cs0Vf_f>8H+eeoic)L@2*La95ijeY!rp4xnO za*tOT(p6vX3cuY1if{zM!!09jscoSaL!~^I?nq%(&yk*>{b^>nd4#`13I9Ix*SmB7 zH;xF^yJH&9*!7wL9qqRXBHT@mEy+fVvk#7F|H;wP};9%4%J>7zlO%WF6q?4)7g?(ShdokjN&R z^!kvX*E@rWw@B~7$TX39kHH~QGo%i{j0`5peI)6C@rdy-dPzQm6wZ?S3&b%`{}GJR z!#7PY;T(z)nS3i?n@kE*ggHxOb0}btq!@ExkIW1URtX10+x+DL0%(Pwf6q`u@>0q9C R-a6!aBIXsevG@Boc|3B^?X~%3$hWV37MqSS%zeG1x37 zi+{vm6u)zCbKAx8dz}2fuk&ucQl*dI*Ee95lEE;PVwjvE#Yl=gqYh(+1mlJYChhZ- z!?eT9-Nyah_g=OY*P-B2WY)!F&SBnVfkl5uEp#uj?6Ber^_oi-S5fj0V>$m>?W*x$ zy4Bn1A|IS)^ojChD)>J-TV+(N7_kj4 zD8z=;Hrck&GJ#usK^33SHDZslYtmBF#H0=oXHYOhwA;(@o(?)?i_;Zx&B|`MRD-~Z zLB86AR1vZ}LLP{omcz~`;)xn9n_{HH)NmS1p_K`eObbCFAk2iII$=^G_RuSeaWeEt zw*fursw#tyJ=hxL3T=5!u5{!|KE4k9H_uWNuo0&}0r literal 1349 zcma)5TTc@~6#k~&vh8*&h=L-DTm?#H%e@Nm0Te@0H4(#uFJ#*eu-JAsJG0(?jX%H_ zd8mmG{s4cIF`ntJwUStP**P7OP#J5e(k z#(N9A*rPEDp9iiIL2RC(aKWg$OQrE-j=9Qs0*cS>C=%=qmD{vDAMle8;9VOu^25D#DT8ChP z_L`sztQCN!L0Rt8B9m_!=Wgq^_< zX4}le5jtj0Q#C^vCgmHHO%8ryh-#-2M(9jeTA)??N*JH@x6K_n&38FXbez&diIHnD s(maFNLi&7{9Fi+`QJ5Wy(GJDmHn)&DPq0Ql*SiQ(F#*Hvw$nSm0f`qP_y7O^ diff --git a/build/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.class b/build/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.class index 74ffd03a8e52abb66cd17b90bc8c03944f0833b4..8811daf0395716a5bdf6030c28f3771e9f2d9e54 100644 GIT binary patch delta 81 zcmcb@eT93277L^JWNnrjRT%~j23ZCH1~~=^1{EMnl|h|BgF%NulfeQ=+A`=exG)$@ iKEsmEXfoM^)sEGYfsMgxayhFFt33k?gTv$(F<4J7XSHEPBOk?X#bOpo8-`46nu}&n;j-ZGV1ONN_uSrNiwo?AkQ9PTT zvPgw@yqV3!FZ;7&33>W>zlxx_P@-6-YL`yt(e-EKo+!y-h+>6KV2&sY7^Z9_yF_@E zDn@nxfsI~G*caKifW>b_`lL_dD8{JkmG^1qJ^3ebsYjgcIp`C;W)0&M87BVMULL4D P`9E=UAaROp<}m#M%-(?4 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.class b/build/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.class new file mode 100644 index 0000000000000000000000000000000000000000..e96b61aaec51984d9d2b910f571134c41b746895 GIT binary patch literal 922 zcmaJ!p(N?XswI4PyO2>!N3W`t@ghJW}8wx(jY%;N1cXz_hY{j1? zs09UofImvSv&|P+^D^9X@7#0GJ>1`ae*6Nki<*O#B3wLhuw%P1Vl7grjT(?bEu&sX zwS+$Nl!&QVJW)y9m2Z42w=y+o=UiL}hT3eAO%-V)BBM(v;U>evKW;H>&!%{5w>=UA z%kZd#BIZii#v;S+?7r*$A;q$n@J|DuUl~hL;CttsgjuKf$;ehRrG99A%4%t_PIuta zl`v$i1d8$$(@yl33AK=;2>Lk!k!y_FZM|68Uc^e4%Ux^YoVKjDThOxq=0(qC%*2 z)kU~Ui0*03_$0-Yn-CPz&l^*Xi zQtS>%s0B;7Lo^I`$2#_j%x;#_m9L?DN_0C@nnrXC_r@guU1o2pak9)Z&CB5aUt`X) A`2YX_ literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/LED.class b/build/org/usfirst/frc/team708/robot/subsystems/LED.class index 92f190fb249e6fcd82df054d5d145ec5de118322..3860579493623f39e1c1422d646af27447ee5023 100644 GIT binary patch delta 15 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�~gL-&ijsQD{k}&-uhF1`|Mu6h-oiv6Ql|{gm@))ijq9E}`B49f?0k;kWaEgRM zX$0Tr5@1ILI0qMv@OSW$VDuVXJrMM--Mn*qPWeqhx55XwQ7{t!pE9mLDC#1L!*@rK z@VM{Z>VYB{YBHUi;%Fu*IffOa2xEcekF+T#E0Z4{2=YS^I1mCnk$YJF!o~rAkfVk= zX;WB=&QX(NrD>yCLs3pCX_GprefIW?UG~@A=e_rRyZiRN-Tl7r?k-G+(`O*-V1S3n zlMXMaL7G8QMrXh&zuO@}n&#T6i03kpdsyD8fISob)`jGPEF`Kqc$l)+zDyLdgw zLO*AUnOX(Xlo=wFW@cgTNN=FRERoD+lbK$*VGbu#y*Y@s)|dy-y)0p4{_pzIUsxgH zS;wY-Nt~jy(ZF*n#85V6he5YE#1riKRs$__h{^MQ9<0Wn z6FJa>1oVBTAk#{en~o(ypZs&|E_$U8Sttb;<&u3Bns##~o{om&^)Wfc<%$^A7G;pI z3oL+YbH$U)YI}fWqT9J*JoAtKAN{2~m}th>2k1C?n+MhQr+n#-$@(x^6&th7@TKRj z60yN&Qgz(m_xiZ>j3vuo&2i^r;$2iIg0;=BGhP zC=Zb=8><7#9LKG6LZV|pO;utL1r)&Nucy(30#tMOT%E=rfQ(a8=gg)31@Q8cxzr)rN5}kPnxZpsPR(_Ud82DUH@1JXWXA9d0{l92s7)qIRuB9ft5#=h#3EkbgcwYwX6g&*>X%WLg}Ltq-~lzBuLWQI^}N&nZMBc z(SkJyzGJ6-D7)5RRQU=g=?s~H?ot@?CmfuUg!oc1LF@WKfx1$Z(cPuM_obK<1Fk4w zFGGQqR~5)F!^C2_p@63hi?f|K6&P9$PQo1p-Ygdr*(IEIZYmegu&1!m8Go#9Cp_0L zkkh00;D0Gj)aBMdDsV#NBdA3L#M;60|L0w6FqlzeI4-2lJ71 zssaXY8NsFF#n70e=w)xWOsYh;Y>e{KBgs)I9%qNga=JWj}0&`3I6Zua(Z% zpoU=wXn3tiWZi9?_#PfXYipt5=n<|Wv9lJ{8t}0f*;Uwh4cd0-KjpvIZpfcM#J!&) z47)ei!J?Z^8O#fxa5Mc{htk)1=yE-x$J5RS(bRRq=3hzsTo@1X*TKhLJFU1|JGh0; zgR9LxbDt7OBU~`E1G_Y&hP@shN?)#rN!%`2bk|u$KJLOC)qy=4QpUO-Y3qX*6nJAj zIIfEdbbgKU@w83bhYcH2)>IF_K6^!iq4aV+VrTE~5`@w2dc?xgs}iJW6+KEKX#?sq zbwwKJ8i`4)dz2SNT2p5B!`&}_e!Z-h N1ugaW>z!f&`Um4uTQvXx delta 25268 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 diff --git a/src/org/usfirst/frc/team708/robot/OI.java b/src/org/usfirst/frc/team708/robot/OI.java index c15fcdc..5bef229 100644 --- a/src/org/usfirst/frc/team708/robot/OI.java +++ b/src/org/usfirst/frc/team708/robot/OI.java @@ -9,6 +9,7 @@ import org.usfirst.frc.team708.robot.commands.shooter.*; import org.usfirst.frc.team708.robot.commands.loader.*; import org.usfirst.frc.team708.robot.commands.led_out.*; +import org.usfirst.frc.team708.robot.commands.intake_ball.*; //import org.team708.robot.commands.intake.*; @@ -93,9 +94,9 @@ public OI() { * Driver Commands to be called by button */ // intakeGearIn.whileHeld(new IntakeGearIn()); -// intakeBallIn.whileHeld(new IntakeBallIn()); + intakeBallIn.whileHeld(new Intake_Ball_In()); // intakeGearOut.whileActive(new IntakeGearOut()); -// intakeBallOut.whileActive(new IntakeBallOut()); + intakeBallOut.whileActive(new Intake_Ball_Out()); // sonarOverride.whenPressed(new SonarOverride()); // diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index e29458c..b13cb88 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -22,6 +22,8 @@ import org.usfirst.frc.team708.robot.subsystems.Drivetrain; import org.usfirst.frc.team708.robot.subsystems.Shooter; import org.usfirst.frc.team708.robot.subsystems.Loader; +import org.usfirst.frc.team708.robot.subsystems.Intake_Ball; + import org.usfirst.frc.team708.robot.subsystems.LED; //import org.usfirst.frc.team.708.robot.subsystems.Intake_Ball; @@ -33,6 +35,8 @@ import org.usfirst.frc.team708.robot.subsystems.VisionProcessor; import org.usfirst.frc.team708.robot.commands.drivetrain.*; import org.usfirst.frc.team708.robot.commands.loader.*; +import org.usfirst.frc.team708.robot.commands.intake_ball.*; + import org.usfirst.frc.team708.robot.commands.autonomous.*; import org.usfirst.frc.team708.robot.commands.led_out.*; @@ -53,7 +57,7 @@ public class Robot extends IterativeRobot { public static Drivetrain drivetrain; public static Shooter shooter; public static Loader loader; -// public static Intake_Ball intake_ball; + public static Intake_Ball intake_ball; // public static Intake_Gear intake_gear; // public static Climber climber; @@ -87,11 +91,11 @@ public void robotInit() { drivetrain = new Drivetrain(); shooter = new Shooter(); + intake_ball = new Intake_Ball(); loader = new Loader(); led1 = new LED(); // intake_gear = new Intake_Gear(); -// intake_ball = new Intake_Ball(); // climber = new Climber(); oi = new OI(); // Initializes the OI. @@ -100,9 +104,6 @@ public void robotInit() { // UsbCamera ucamera=CameraServer.getInstance().startAutomaticCapture("cam0", 0); // AxisCamera camera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); -// port = Port.kMXP; -// led_out = new SerialPort(9800, port); - sendDashboardSubsystems(); // Sends each subsystem's currently running command to the Smart Dashboard queueAutonomousModes(); // Adds autonomous modes to the selection box } @@ -184,7 +185,7 @@ private void sendStatistics() { loader.sendToDashboard(); shooter.sendToDashboard(); led1.sendToDashboard(); -// Intake_Ball.sendToDashboard(); + intake_ball.sendToDashboard(); // Intake_Gear.sendToDashboard(); // Climber.sendToDashbaord(); @@ -213,7 +214,7 @@ private void sendDashboardSubsystems() { SmartDashboard.putData(loader); SmartDashboard.putData(drivetrain); SmartDashboard.putData(led1); -// SmartDashboard.putData(Intake_Ball); + SmartDashboard.putData(intake_ball); // SmartDashboard.putData(Intake_Gear); // SmartDashboard.putData(Climber); } diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_In.java b/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_In.java new file mode 100644 index 0000000..9c9a6f1 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_In.java @@ -0,0 +1,42 @@ +package org.usfirst.frc.team708.robot.commands.intake_ball; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.Robot; + +import edu.wpi.first.wpilibj.command.Command; + +public class Intake_Ball_In extends Command { + + public Intake_Ball_In() { + + requires(Robot.intake_ball); + } + + protected void initialize() { + + } + + protected void execute() { + + Robot.intake_ball.moveMotor(Constants.INTAKE_FORWARD); + } + + + protected boolean isFinished() { + + return(false); + } + + protected void end() { + + Robot.intake_ball.stop(); + + } + + protected void interrupted() { + + end(); + } + +} + \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.java b/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.java new file mode 100644 index 0000000..86e0b17 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.java @@ -0,0 +1,40 @@ +package org.usfirst.frc.team708.robot.commands.intake_ball; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.Robot; +import edu.wpi.first.wpilibj.command.Command; + +public class Intake_Ball_Out extends Command { + +public Intake_Ball_Out() { + + requires(Robot.intake_ball); +} + +protected void initialize() { + +} + +protected void execute() { + + Robot.intake_ball.moveMotor(Constants.INTAKE_REVERSE); +} + + +protected boolean isFinished() { + + return(false); +} + +protected void end() { + + Robot.intake_ball.stop(); + +} + +protected void interrupted() { + + end(); +} + +} diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java b/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java new file mode 100644 index 0000000..e41acbf --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java @@ -0,0 +1,59 @@ +package org.usfirst.frc.team708.robot.commands.intake_ball; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.OI; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.util.Gamepad; +import edu.wpi.first.wpilibj.command.Command; + + +public class ManualIntake_Ball extends Command { + + public ManualIntake_Ball() { + requires(Robot.loader); + } + + + // Called just before this Command runs the first time + protected void initialize() { + + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + + boolean R_Shoulderpressed = OI.driverGamepad.getButton(Gamepad.button_R_Shoulder); + boolean AxisRightpressed = OI.driverGamepad.getButton(Gamepad.shoulderAxisRight); + + // LOADER_IN_BUTTON = Gamepad.Button_R_Shoulder; + // LOADER_OUT_BUTTON = Gamepad.shoulderAxisRight; + + if (R_Shoulderpressed == true){ + Robot.intake_ball.moveMotor(Constants.INTAKE_FORWARD); + } + else + if (AxisRightpressed == true){ + Robot.intake_ball.moveMotor(Constants.INTAKE_REVERSE); + } + else { + Robot.intake_ball.moveMotor(Constants.INTAKE_OFF); + } + + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return(false); + } + + // Called once after isFinished returns true + protected void end() { + Robot.intake_ball.stop(); + } + + // Called when another command which requires one or more of the same + // subsystems are scheduled to run + protected void interrupted() { + end(); + } +} diff --git a/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java b/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java index 09a3c18..adeb831 100644 --- a/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java +++ b/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java @@ -6,6 +6,8 @@ import org.usfirst.frc.team708.robot.OI; import org.usfirst.frc.team708.robot.subsystems.LED; +import edu.wpi.first.wpilibj.SerialPort; +import edu.wpi.first.wpilibj.SerialPort.Port; //import org.team708.robot.OI; //import org.team708.robot.subsystems.Loader; @@ -22,29 +24,28 @@ public class LED_out extends Command { public LED_out() { + requires(Robot.led1); } // Called just before this Command runs the first time protected void initialize() { - } // Called repeatedly when this Command is scheduled to run protected void execute() { boolean Bpressed = OI.operatorGamepad.getButton(Gamepad.button_B); - if (Bpressed == true){ + // if (Bpressed == true){ Robot.led1.send_to_led(10); - } +// } } // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { - return true; + return false; } // Called once after isFinished returns true protected void end() { - Robot.shooter.stop(); } // Called when another command which requires one or more of the same diff --git a/src/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.java b/src/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.java index 3b923d2..2748596 100644 --- a/src/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.java +++ b/src/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.java @@ -20,7 +20,6 @@ public ManualLoader() { // Called just before this Command runs the first time protected void initialize() { - } // Called repeatedly when this Command is scheduled to run diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Intake.java b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.java similarity index 56% rename from src/org/usfirst/frc/team708/robot/subsystems/Intake.java rename to src/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.java index 487e76e..8f63fe3 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Intake.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.java @@ -1,39 +1,48 @@ package org.usfirst.frc.team708.robot.subsystems; import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.RobotMap; + +import com.ctre.CANTalon; + //import org.usfirst.frc.team708.robot.RobotMap; //import edu.wpi.first.wpilibj.Relay; //import edu.wpi.first.wpilibj.Relay.Value; //import edu.wpi.first.wpilibj.Talon; import edu.wpi.first.wpilibj.command.Subsystem; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; //import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; /** * Subsystem that intakes balls - * @author James_Makovics - * @author Michael_Steinberg - * @author Thomas Zhao - * @author Alex Tysak + * @author Madison + * @author Nick */ -public class Intake extends Subsystem { - - /** - * Constructor - */ - public Intake() { +public class Intake_Ball extends Subsystem { + private CANTalon intakeMotor; + + //I'm trying to link the right motor to the intake code here + public Intake_Ball() { + + intakeMotor = new CANTalon (RobotMap.intakeMotorBall); + } public void initDefaultCommand() { } + //I believe this sets the speed of the motor public void moveMotor(double speed) { + intakeMotor.set(speed); } - + //I believe this stops the motor public void stop(){ + intakeMotor.set(Constants.INTAKE_OFF); + } /** diff --git a/src/org/usfirst/frc/team708/robot/subsystems/LED.java b/src/org/usfirst/frc/team708/robot/subsystems/LED.java index 20049b9..c32c796 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/LED.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/LED.java @@ -28,7 +28,7 @@ public class LED extends Subsystem { public LED() { port = Port.kMXP; - led_out = new SerialPort(9800, port); + led_out = new SerialPort(9600, port); } public void send_to_led(int command){ diff --git a/sysProps.xml b/sysProps.xml index 5a72d38dfd55d3abdf45c30c9c6276c559a855d8..8eed543e19837805c3aae1b3aeef0ddb4bd8432a 100644 GIT binary patch delta 81 zcmZ2yu+CsZ37@G8gDZnG5SuetFc<)#0)q>K8BoN6!3ap3GnjxyOcbS) delta 81 zcmZ2yu+CsZ37@GcgCm0_5V|s$F&F@$0)qum#F@dI!HB_$!39Vv07(-d+Z0H;07(}H Zg~@>|)|;R39bsm*04lK9yjG}@6#!6>4>AA% From bdd5c7b51335bc099859f87eda01cb8e62854f14 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Mon, 30 Jan 2017 20:01:12 -0500 Subject: [PATCH 03/69] rs232 --- src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java b/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java index adeb831..d6978b3 100644 --- a/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java +++ b/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java @@ -34,7 +34,7 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { boolean Bpressed = OI.operatorGamepad.getButton(Gamepad.button_B); - + // if (Bpressed == true){ Robot.led1.send_to_led(10); // } From 47b6f6bed6b4c1d1876867307234574c47a090b6 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Mon, 30 Jan 2017 20:28:19 -0500 Subject: [PATCH 04/69] rs232 testing --- dist/FRCUserProgram.jar | Bin 1287197 -> 1287197 bytes sysProps.xml | Bin 6190 -> 6190 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/dist/FRCUserProgram.jar b/dist/FRCUserProgram.jar index 6ff50a3d0620ca49bedd97908f8a6da4a00a09d7..f9ed93e264595e7991e7f2c818cd6534d7a723fc 100644 GIT binary patch delta 1878 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 delta 16 XcmZ2yu+Ct^3L$1Q2BXcZg_>CbG(!c7 From d3f977d6a9889ffaf7b8b2e473f970be9daa5f3c Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sat, 4 Feb 2017 12:12:51 -0500 Subject: [PATCH 05/69] rs232 and trigger mods --- build/org/usfirst/frc/team708/robot/OI.class | Bin 2712 -> 2977 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 4155 -> 4334 bytes .../robot/commands/Climber/ClimbDown.class | Bin 0 -> 1251 bytes .../robot/commands/Climber/ClimbUp.class | Bin 0 -> 1245 bytes .../commands/Climber/ManualMoveClimber.class | Bin 0 -> 1329 bytes .../intake_ball/Intake_Ball_Out.class | Bin 1145 -> 1383 bytes .../intake_ball/ManualIntake_Ball.class | Bin 1575 -> 1578 bytes .../robot/commands/led_out/LED_out.class | Bin 1237 -> 1371 bytes .../robot/commands/shooter/SpinShooter.class | Bin 1115 -> 1158 bytes .../team708/robot/subsystems/Climber.class | Bin 0 -> 1074 bytes .../team708/robot/subsystems/Drivetrain.class | Bin 6712 -> 6749 bytes .../robot/subsystems/Intake_Ball.class | Bin 922 -> 922 bytes .../frc/team708/robot/subsystems/LED.class | Bin 1290 -> 2182 bytes .../frc/team708/robot/subsystems/Loader.class | Bin 1078 -> 1078 bytes .../team708/robot/subsystems/Shooter.class | Bin 1483 -> 2135 bytes .../frc/team708/robot/util/Gamepad.class | Bin 2549 -> 2549 bytes .../robot/util/triggers/AxisDown.class | Bin 0 -> 787 bytes .../team708/robot/util/triggers/AxisUp.class | Bin 0 -> 781 bytes dist/FRCUserProgram.jar | Bin 1287197 -> 1293103 bytes src/org/usfirst/frc/team708/robot/OI.java | 29 +++++----- src/org/usfirst/frc/team708/robot/Robot.java | 21 ++++---- .../robot/commands/Climber/ClimbDown.java | 45 ++++++++++++++++ .../robot/commands/Climber/ClimbUp.java | 47 ++++++++++++++++ .../commands/Climber/ManualMoveClimber.java | 47 ++++++++++++++++ .../commands/intake_ball/Intake_Ball_Out.java | 7 ++- .../intake_ball/ManualIntake_Ball.java | 3 +- .../robot/commands/led_out/LED_out.java | 8 +-- .../robot/commands/shooter/SpinShooter.java | 12 ++++- .../frc/team708/robot/subsystems/Climber.java | 51 ++++++++++++++++++ .../team708/robot/subsystems/Drivetrain.java | 2 +- .../team708/robot/subsystems/Intake_Ball.java | 6 +-- .../frc/team708/robot/subsystems/LED.java | 33 ++++++++---- .../frc/team708/robot/subsystems/Loader.java | 1 - .../frc/team708/robot/subsystems/Shooter.java | 35 +++++++----- .../frc/team708/robot/util/Gamepad.java | 1 + .../team708/robot/util/triggers/AxisDown.java | 23 ++++++++ .../team708/robot/util/triggers/AxisUp.java | 23 ++++++++ sysProps.xml | Bin 6190 -> 6190 bytes 38 files changed, 332 insertions(+), 62 deletions(-) create mode 100644 build/org/usfirst/frc/team708/robot/commands/Climber/ClimbDown.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/Climber/ManualMoveClimber.class create mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Climber.class create mode 100644 build/org/usfirst/frc/team708/robot/util/triggers/AxisDown.class create mode 100644 build/org/usfirst/frc/team708/robot/util/triggers/AxisUp.class create mode 100644 src/org/usfirst/frc/team708/robot/commands/Climber/ClimbDown.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/Climber/ManualMoveClimber.java create mode 100644 src/org/usfirst/frc/team708/robot/subsystems/Climber.java create mode 100644 src/org/usfirst/frc/team708/robot/util/triggers/AxisDown.java create mode 100644 src/org/usfirst/frc/team708/robot/util/triggers/AxisUp.java diff --git a/build/org/usfirst/frc/team708/robot/OI.class b/build/org/usfirst/frc/team708/robot/OI.class index 744b204f905ae0c258adc29ba8869c62d974696e..dff37afa3fca0e37bed2eb35ad854be406971688 100644 GIT binary patch delta 1207 zcmZ9LOH&g;5Xb*Z$WB;R2p~@-n2J1u1Oer#0-_j*D3TzkNI(z}NgxRVzTy+{dD+tP zs8yc4kyJ?)TZMY{q#wW!;>EIOHdd`(=0Csgp5C7B*|+)c3*+B@Z|?wT!YhVx1+@rf zU>_zJCKaS3sNf2wxMiB*ssbCg%wU#V<`}LiP>log4A&K88wVD+JH!xHkY~6T8I}|j z7!YBIDkw&fA=a-z!ZMG)!Iu?=RfaVMWw^=t7Q<}?F5Ka8mm#j8!hn0+a-S~``0|k9 z(dPC~NvhPo%Z2vIiNPF^i+K7}Hz_5xw^h)T`oYqQhF}*0)OLab0 zv5qGy`r(z(opSB5Gi<1M${nZqnKt40oSrWa{>2v68&dI%hnz#N=CF2JhDax@9Tq?7 zJL}Z00G_KjfI1Z()M+`gpQ?DF;v`Seq4&4&0i>WS165LC^cFr z^;#&kTPVE)p)`A;G<%^md(t%OBE2|T&l7!wg?50pV{^yl1hRBwk8Z*K2{{Sm>c}J5 zEg)Y<0YRaFA|1s9B?Oxy=LoG8$e?wM{?AF|U|Iao>q? zWkTZ09YZ3ClNi^y;s^LojPcy+HumP6`fgRtjg&O(t34;1Dtl(?{< zuxOzSV+yGb3jsWokC#N26&@)(woru?;Z>0*B2Pu0iL8k{S9r0x^DD5m8ypEl260uR z8wsZ|)DwNF@d~dsddTac?pzI9@FEfcv^yKwwa)KQadcf`m;c4$dC8@@RBuY-iiA42 zEUqOqu)3nr&rF}PJHrDq*UGs%ClYSU9mE@rL#WqiK)ur+9*Pa(twt9T8s|kWi1do| ziCkiuxLS2~RiBL*FHy(BSFjMw!BLr{p_k(@j<706IS!(ce9Xtk$xS|PCdYl;!aS`$ zmiZGtmV75+|KC6swD}gu2JJp>A$Rz=lN+4!@oDlIAItn%AIpKx`M8>49W=QgiVt-Nv%N+b)0|6Gzu|;O3bo@3#{%U z-(re;E@2YO7~(4J?u=oKkRrIwQ)Tg3&WhD!SB<7ok-d%B77k=!s32@G%R`rxNAA*t zE>%X%%BV-~T(w7Dni>z?G_@Wn^I?9*sg5=VlFo26*3gRy{s8lQ@M{>rdlv5l5Bix` RNh66LJbnN-c!3~B{{lUErG)?h diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index 145310ed7ef88cafa0228494beb743e9942ad3d6..53e1dd5c58e2d3166fbcdf2150ee09a90309c52a 100644 GIT binary patch delta 1843 zcma)-*>eLpgVybd(pL_fM&Uel|wgY3B*WlQzYH^OSztu6Wue9LzkUc-F=VoaYn?o07oU zq1b5?3!Ghw=WRv@&I^hcZN>)9ONy6eQ+eR+wk6~qZT8x{!mHZ!YxgyqeY~!L-q2`o zDqQXCx2a*fHV16p(ytbCQ1Q0ea#`|`KRxk|rah!t#5mfF)@H0WB^#G_?#|xU-2CC7H&1D za|et%%i%Vb>b>=$hGK`?xx<}rHkchOGq~PuGvoH6g%0;{Z?IuXNj9#-o!n(mB_frx zmWlQXIvuvqak@wI&p9mp(%d z1GhOcy*bQs?iN3+)9^=O^-n`;^iqUQr);-=JW~a79PP89>~4} zBkATr@eDQu@5^(FBJmOIKO-H94CS3EDh3%JPf;oV*AB>92(39o6AD{I=wd=r!76FB z)znFenuKJbP;^MN6>O4~&EoYG#O}()ekd1vu_)`FsFz5>};PIhBXc12cpd^|qH2#?9{?TQIYA*iB1(Z&1dAPOn>4?fr62vc~~|kq=#h3|H$m9WOht4J6@ob z&+L&LL{m01D@|P5=|2@ZA;mw5;*_tG(7g;+7AmA~qReQferW@})+7~D9#cm#?ciZ< z2)yY@A|7=~MtRgHiF(XPGR9+Ol5rjlNlHCt<%?M(cMG}3QHJE}my+*onrco{n~*Cz zjSMq6%UsSE*eQ6Un3JN(quHOmF~dB$TJt?x ze7`kAoA@`$dTfE7NwaVuAtJ$LE0a$(d`}ra$R)eTY<{GLp9+Xtb48M`SQcc1j2dLJ z)F90wsfTZ+L*;plZ%chUPHes{D&+v+XUrM=BA5JEx!%9YFT(Fsa*0X&Q4n=Lwv9SSGJd27EDh0_y5d>yxYUKlnU}i>X1zWOGnKdFksg>oV zR+c@fWvS%?!y=uIrx%@*r&F(bI;R)>1-sV#zxV!rbNBDc z=?eSGzn8uP8kjQaB&ze2Nq}e$9XzeG%Ou+aL+UQ3v)d%c^9<`eV`6#WS)J!h!XDV8 z^SnvK1ABE|Fe&uFi#oQ+^&Z$~(qS_qmi;E9yrj&_3ch0UDz7OG2b7wFI)@Z^-K2_` zGH;l?sY0_ktn*f=ZAMCvpK`pd1Rhc8#aPM|Dih|2fur+IsNI+iuIFgI;y-3^T<2Yr zW}*teXYjtx36oZ$1|OJw$Vp{B()n2Dld(>%Q5%~ITn+>`)9dWbZVqi=qeih~XBUMx z>>TLdWwDIAEk2dUGucg{<=mrD=Zt7Kh1c(hMq?^q1uHcgl+Uq4*92Fy#yK2n2(98? zjanx^SZi3^&jT725>wW6-%5*hthacQUW+H_)%ncg6sIlDD9_`{^SSbTVX=uGi?e*G zF<)tNW`f~Di!Qn?zEW}LEY5R5qgqj4*BKogiftQ=4Ox7xsJ;=^|LFb3W-eO98FRK9 zYl7plju``a6BaI$$|N+Z)ca$rbG8O<=#bL`xpGP6Vsnt9)#{ArE~x_PkRX(ZYFyelAww)d zF;i4>iE5@<#JAM*y)VR;8Sd>>YX9ryV9A_FDcU1kN>RIL$co%LO?{7uDxhJKr7n$0 zZ__l*J(IM!+@8dDOw%g(PI(?_Q=SCveoKmE*usw#aYeqWpKO-$Gj06hOQJocD4?cR zO2`&jm5_3&Ji%Skg`}0;llwVIn=jVSbE9k?{3`Z0nHRsym;8tPgZxPue`Ta9_Xos) Iga;V>4>q9|5C8xG diff --git a/build/org/usfirst/frc/team708/robot/commands/Climber/ClimbDown.class b/build/org/usfirst/frc/team708/robot/commands/Climber/ClimbDown.class new file mode 100644 index 0000000000000000000000000000000000000000..293e50761875ace70e1c1ea512a3a23a56c438a2 GIT binary patch literal 1251 zcmah|TW=CU7(D|E3(E?%)z)h-RxCHW*m`NKX<|yMO;8gtJovW2w4G)zIJ?_cf0Hlv z0TUnm0sbiCH$Z{Jl)lW&H#6UN&Ufa_pTEC;19*z(1`OOw<31J*q_LF7GFEgvFp$8i zfrrSe?MFJ+bQBnpuY@PU9fo+J*ksUl{SIfy)rH63M{bMDPj<_po!PqIww3)2eNI2+;(47w=C(m{LpIqu4{Xpz}j_$Dmj>I{;9XkU?_ZH zJK`Im==_YgqmWi<*FWKnF6SKvR#Vr4J-QhjsSV=#nMUr>IwQQ0OBr=Tbz(I9NVfT& zP@J=UJcYAn1Ez8A{VTh(h65Z)}%$?T(2j*wC?QlGx8o z+=9ulH9h@u0T}YU6IrKSVGY!yl_Ofm7n)hS1ML`Ar$c;HN|S)?fy4|OS3F7(wSuof z$lcMi&|{<|{}Ktw=}{|%`gCTEivruqILp)Neb^^c`CTsU(3e9Y3F8Wmld=;#{g8*R z&y?e|!hVrVQJoI@e~V-ga$;mV@5o)MOs&|&3jGIz{tl1?`3WYC*C^USj8=eI`UzG# zN34hV4~k>R(wIeDok63!8H#fKsDB?bxK5FV*-@=B#p;ZW3n(yPZX%J566Z#Vb%Ieq zGw0B>9+Gc~$662ixXysc0#anf9Pae%%@aw=8P-eD*$vzzJPq?$pjow7p;)I)0AfzfAMB6j780*N6qqn;GMyZ-=@ C1PS#3 literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.class b/build/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.class new file mode 100644 index 0000000000000000000000000000000000000000..c3a35771b3884e3d9b70faff41281ff9b86446aa GIT binary patch literal 1245 zcmah|-A)rh6#k~&cH3q75fv3gsfe_tbSo&5U`R{}N>Vkk(hKjl?Eph|yX)*OqR-@w zT-3x1AHat)p6QmhiJ{z_nKL`z&pC7U&);9a0X)N&0R#85Si}PZSv<^Q2{|2)45YAZ z;4xOz@e>`ZI`RzZm!c!WU4~@7&|uK2UYj#a*F=ZEi`*ucAMK_?C$lxLWjhU93YGT{ zweUm)4BItN9$QgxBxDd;N3vyw+;(47wk_#3z0hiTu4{MNfmL;cqKwx=e}}

cV!! zH`37gId4TF?Xs?S#_K-kZ3ecdt_AyaGdNKPtm`P7uux$rj&~o0!m(c4F8A%WiKp1mv1wAHpPRS~ zlVNK-{Ho#^R(LzIzWBn5`$juQG*2(PWmV&@F)WW4_@H`B&1=QYW!SjpIfAGed<{bG z4jzOaA|v_dNJvi4S<2VOJF8z3?5L4h8gK9Y0gaRAb7_a3?6;9LuJJh9baJO3^YGQV znl&wdP@sXRj2HdCL>dm7!N_*r(qt)`y+Q*y`V$QLYk)LpmS9qxq-+-n+5u+qCs^?U zi7t{qC{JLD;uMk;C!t}QFf$bCW_+Kr8!a7Ly+V4vV=r0B-grQ^hVa!wQU^+jVkR9wA8el^N!H{ucfLizEk< literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/Climber/ManualMoveClimber.class b/build/org/usfirst/frc/team708/robot/commands/Climber/ManualMoveClimber.class new file mode 100644 index 0000000000000000000000000000000000000000..fbc6ff4ba82b32b6cb0941d35881e0114cb5fa82 GIT binary patch literal 1329 zcmah}TTc@~6#k}Nx^!7U0gK`V1d+B}7V(C`;01z^6iuw*!MEvlfWh5v-3y|BL=)pb z@I@Xl@j>5x@&_5?ne9@Vplu({o-=d4bG~z#{`~XpJAhlbXP_5jSzN`q0TUBhT*IV} z>jt_om3i=soamSNkthc8DCj8am}bb_mo*tKGo+)JPuvQ$Y zLRy==7IA0O+ZV~n5`&?5NbbmYluZ{0!j3}HvMza*>q1l+*eXMBIpp@MOFsQe7V+srl9p)B9mEdg<3b#2qnp3wgUPsawH20Z&sXepuaeyVYTVw6% zJ=>tY^XkIqq30*Pq#PYMwsxM_={q8PbfA_}%Wo8DU*_8Z71~EjIhI7qW z(`2hVb`l^H9}KntSreFR0(}aj5{(~1(~gi?pBjSx;S+l4n|=QgU484sZ0ZO-Dsnoe zmZQH0U>MyP!FgOHd4-A`jWgwlK1EA1DUV_DVYoo2#OOCh(v)$8P>m+c&{q*pX`hvh k<2RU3v@lOKnO|x$|8L3p7T`(AmpcPz{{duFo8mS47wfPfOaK4? literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.class b/build/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.class index 86f6871eec15ff15d79836ea060e3b776bca7c74..044f801e69a499e939bc28e9abe13f3e2a0ac96a 100644 GIT binary patch delta 675 zcmZ9Iy-!n77{-6+w!H_gryy;i6>N)A5!wnWpz@(cLSh&|6Zi)%(vU_>2v+0PI65|W zU|?}@bdjM0gYIt3EN-r>F2?uV)_UVf?sLB0=Xaj>{_6YbJ^%ju^eZsWBah2m>*qQX z9)pznxxu97rbmJ)_wf%YlA)P)zg=|J9%U+4s@8BzGozVpEqzKRw;KM7mmB`Uw!gFA zI^P@{BBi-)xWiq;9P^q5!#(aR%E5{%483X8_h+B_uWASWuHgZT!J?|Bmki6S7#@-` zY^)r`LiH z&USiGI<~__ArVE>!G)7=X5?&un5ZExt4q?}aJW;Uj*yi(POjsTbwxgVr@n|dSb&8> zI$~7(HD2i%w*+JBawo*yHf{!e)I7$V;AHUH7z>Prz)qs9r?f04v{0^8f$< delta 552 zcmZ9IyG}wu5Qe`!=fJ|UAPRUv<)Q+5KrO(;SXkKF_(FzfFua1LjTV?tXzz>I+Gt{9 zoIM;D;ufzq0+YuIJTTnv}{mRTqU(H^{Gb5>oy#YowGYx z6hf0&lI)T|USQ*ARQyCRC47`TU`1kyP-31)v;|R>UFW=?Rn{bnsCZUia>r5&fHOm6 zWyXI><&{;hJQp9=Xk>sYnJIdKFft2NWs2I8zwwkB>!Njk8OZG@LHOWe@`L#Rb;{zO zjvjca>?)O>rBa=2Aot(BDO+nVxoeNu^oU`K$i!3f{{bDE5#1$1CM77gl3DA&M4moxF}eppjc=Gclitw z!G#-l1#x495nR;0D?fs3SAts+@0$$M;9J~x&%N)QckX*f=Dm6N?eCXkV3~UXr@5SE zis^u1X0psu)64~An78Ex&6R*fuG-3yzxhLGviz^V`ibq;Ew!Op)~vjGaNHeJk1A&f zHP;N+Sv53S)7&tub5l|4es`=K0-kvJl714lA2 zwa=(p4=2L?DA-|CVgc9o@W_)BbT&ruc}kQ8d7MkN<^*?aQ=KUIv3fYbR4KEPGGB|1 zBgC~H-jE;RuUEWxq8Urdd2A$h2I+3jqO`@zQedHTaG z3=HRV(&^-566#7q)#5dxc=9+w?4piOV?aZv5)-LJBaz6|B8L7KSQVqqL}0{v%p?j* JrnX)u{{cuUN@V~5 delta 725 zcmZ9KO;1xn7=@p?E%$ma(=V(QDV7TIVL?8uC`CR*T(WZM#+XQy4G?b^?)nQ%B>e-% z4T*7MO={u-U7Pq{`~w=#T$+}6Z!+_qnR(AS^S<-Zp4z>if4`jpciD}|F%@!?>4+>d zA+yW{+=>{Y=9cFJ79wu5=zssM41EqQxx>o=D*<;-o}Lx*J8ur+CkHQIHIHBK$MOD) zcF8;&%~J@dTgj|i?r}e0&C+1K{njiEKVZYM$(CWZ{mxV>yGMs{^Z8*j4%oIlWXJM| zf@Ok&;jue%@?+-9p7+bN(sA?Xm>aT?OC0$aq@{60cnePv*xFZ2t%KJk^;y{Cvc@ba zw?~=`!$QRbCFi+9NhrUAnQ;L5h3*=Y7spWK)zyTZcag{yiZm%gi# z8q-T%?WG2?-o*}T6^RGx_<90^LI?eFRr?h69>q|tOXh!qhSb&v1S5Kz=dCh&1kUT^ EKWeu~%K!iX diff --git a/build/org/usfirst/frc/team708/robot/commands/led_out/LED_out.class b/build/org/usfirst/frc/team708/robot/commands/led_out/LED_out.class index 508b2790fc6f76693581b84f524dff59f721eba3..18b3f2ade3fdf765ad50933f350c744ca3f53d16 100644 GIT binary patch delta 677 zcmZ{g%}(1;5QWcmY;J5Wq5K7Cnn3tZQUWE^g*K{G)Pj&;MK`R#SV0Oz1XT&k@C;U7 zfL*t3kg{OW2k5>lUZtvfZc-UV`gl@rHi{SCji->nu*90eI$kMkpd_)W@EWc_K4@jy z$09NH23raWLlWBxZ}Cpy1%?IOpyl3w6D^U_^nie^yO>Gl^ksb3{t!#wj)QJzT;RX{0bp*$PhpSCi`Ch{u9R}pDA)o^Nu{fkrBjx z&aw2US#zv6YM-Xk@4|lCkE2-+u|=Tmh=Ucv ZXF`W`Pfv#!SE3z6WW&=u&9G)*_AjaYL1_R0 delta 536 zcmaKoyHdhX6h+q!2_f-}?wKcR$N7JRJ>2v0CuDM{K=!TQ#^w-iA&5%o%k(M#nnr*Zq2q(eYk9tyN zPv)8@i$cT%^V7#nV_cB40vW+wY-(~>XI=hGhruExsWuxCN4|UVnmhF>USy&v6r_$V!VGZBghf6{`_zrI?fbY*G;mHdVHy=0&qF z)tIs}F9uVt`YBgd>`Jz?WIp_pXP9Cpd3NGFqt#5OJ13V!@RxQ2v3HXaa8{$0?AaKs F{Q*{pCkg-n diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class b/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class index 6fad8d4d1e53d8e9b6873503f7a4ef3e8a9a6c7b..de08455e8dda9833e9d3e15885b0060d82e027f5 100644 GIT binary patch delta 595 zcmZ9JyG{a85Qe|A;4UmHa#K+7f)`Nm25N(e&}gh|tu2hPQ4{Ft?1>Mcm9elv6HF|u ztSn5dEqxE;oCOy`Gnv_$|C@j3dz|L4R1%A*ToP7RweZt;$b&jEF_Sp~$Mk8tWDt4x5w|`I|2_b91DEF^4iG zhbRVi=#q3H&4pks_`qyYnO%m&z~Qe^yay%~I{A#4bT^gXsaK@{~zWxi5S4 zTwDw!@OLoXB+$VgHnT*KoR}*PAmbh~#iW3udjF~tYIst)qL#|+ yPETpM=Lq#3*n-h-Y|2Rg6qbib|0AmMFx~AVg$~Xzp(1D79UzSK2#Snrb@~s@Lo^lu delta 527 zcmYk2OHKko6h%)ppQ4)rML<*pK}8hs7d0`AOq@7$3vK{RV9v}j#BDf14T%n1fLn0r z23&#h72P&H=v!4?@1A$-J-A<~?&t6O2XM}@N1C$BCKV5ls%9&B^?ECJ$gxJ<%C^1Q z(d=p(lbi3nA*0zdG}$*C&{8xf<7)M~-y00?dc%RHZRl`lI3i;xkx_Ifl)O2LE7$^2*H4>l^ zaXO(>1`;?g0;iS$Gg3Bx&-eS?Tk?>0grP&mTF5vH7>U*lcQFAUa3X^`jQ|n>K(RiL Gy733{1}C}z diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Climber.class b/build/org/usfirst/frc/team708/robot/subsystems/Climber.class new file mode 100644 index 0000000000000000000000000000000000000000..7ea78e85bd8289d868af62a3b2685015b604596f GIT binary patch literal 1074 zcmaKrZBG+H5Xb-9mL5INLO~Fp5R`{LAdAMR5o0iINK9H@2qEF+Uc1PVyW8gW4&%pC z6Pifk2k=7~XUnxT*7VKp&g{)^{xh@p`_Io`0A6C-!ebi_RxGSqcw!@qrv==?nuT>6 z7FKLBHjI1ILfJxv!D;(m;L50_VihsWH`^-U?KqOW{^8(A_$u6G$iMSKFMiLEEmw{i za&^^_3^PqHln054J`%1^p1G!K3;$R|p0QJBE@(7b*vi4xD5ybXCO5gp=gu?S=BUZllPsH#vlon39Jb;jLlisd@)BY&m#_C5D~Ju<-^{)v}ZDFI|sc zPlZmt=brO4FFzd2#Ps>2>2pcTv3XR>&B>T_a=QkQB>-0G89MZ0849Kkbef_wHI~*A zS#^4$jP_Eshs+hSC$kGZO#MLq8#yzWqqRt%01uJFGKH;Ro-F4&2zRhR7Q^BY_%;PP z)hk#hJxpJsaKo~R39ON*^%0IUTUltB@= zhxe3U5dLPbxBGSy_DD9_B#=Nt8P_8eNtv<~u&h8p1BgUH6k&x(!jWJ&0*bCD zcyOo>6ciM^5tJjaoJPePMMYG+KoIdlMa7!{cF#WFF4X?%?l;r(_1DMD+gP!uBDVeb z<~9HoB2U93Zak{vA}sZwAC|FrjK$+Do?!8$hNm<9HpOz8_2dl+D^jxVv#jr}^l z!T~qF)^Je6H?6}&)FBSGZgrN3f_i)_aWQHn`eT5^Ko)hlR$>fljCNPAyn1{maR~-V zT*_iFi&_j4INR8%7aP;GjEs7GFL4CP(|;?QB9-knkDLSNMZJ9!ID3XjmG@CqqKhRBqn z1Ex#iW8vpRm7_3P69FlLXc5q>r#CkhQ7+@_G?67mwg?IMt7?k|H#J6^i>ewXO^!B> zs!OES$(ZdqBywA)>09iMus|i{RB1G3R>u0#9RLEbakI#>ale$NmMKj=QkvSNG<8a8 zYL?Q}Af>6!N>izors671tx}r0q%>7SX(}#ILIEi)S`a)QYJ(<(bRMlxt4WSE`gS-X z#u?}P#^jHu9Z74T$(w*i(gIDUSDUZn8RKY0Crl8kmvEE*((FHjIm5|~d!7AOKm>af>> z_FB+h6Ix&@S{Q?X%SdxrXJj25E6K2dL0xKbVM<0$E2C+cZXWK}liWFdS0sNu9BZuO ziJ~kf@=Fv%DB)#sa;g4vUoH5%rfAXAWr zjRa?UuNAVACYM8c=zer`#Bt#%LryQOo8HzWyvHJOUkZq^DknQRjTFl*+-VQpZ}$Ii zPRgv%+nfxLoOHwVEz3>y4W#v*Z&su!H=KMmL@qQDPV2wGB7Y9$&lPY}1v(>Fs#_erR}x^#OC!3Z0dU|!Gr^Oty@;gsU5G^#WUSE=E>Q_)@-ry9 z!zs!U5Ebf7;u#8>9Rh-Qhz5?+d)P|1#+=4t5dM0vnVs!~%_iBf2_#6uV_BZ$3Biay!1q)RIRrrwIn`d~4OB`lV*c!tF?4bN(L&VV1!^Y;rZma}+~#Y-Ai7zpBJ z{#a>{SfydLfgIHG&MO+~4CGlKYj{~duij(kTR8Ij{7GWu zR%~OW?FK%;4hH^^Pj(vEijNEwVHbaX?8k0=!p@(v*u&y8rt~?BFBo92fiLluj;{^u z!+s41G<;JxN>q5nfx3;}645G-ZzV29KZ*VrATf}|IEv2qw7=bIz#es;~=*q~D7>Q95 zKd@PAHY>Ym(%7nT<0mu7j}n(-n8XzrCXhL?qPn8AvSL!abU?)vf*H=denO2v7YbW! zR_dYP&-jfU4@q2w3W1(FzW0+=C%Ab~r1<-#l}+`=Pq7g-Ch6q?Yb@C!qVfRIvTV44(} zELyNr@zofsiJ%l&s1`7KPoG@XhBB!fuZfTp*&@eEqR=exg8yrV1!c1qDhdAf-YZf=5Cf&{UAlryc4p$!pCqEslzb=8#}~>~(Y^X%EvQ2&XEL@P9fq$(EQyY_wC}=1k_Kr|tN=x7!jTRRbxcKToi&@HEz9cNi>+et zkeq5;@#;oOj2TSDWLmk^ii_vPO|;hF?H&vSbuy{K6a{!zs8yngzdlIF19*cy0N(89{fr#5R+GV(eZ-Hd6rbKf3h&guJN1@-VWFUmq9 zzequZEh~qUPt65Ko^CfIH@j^qXOpSeFNTgK^vEntA&}(|pwVXn=DtrM>p7x+L@~NAM^4g&RIna zQra{c8`9FIJD&z1nnbr|0N9+?|8C4;fAd(*d8*7|q6m7%eb|mH?4YN8C)#6|^6jI_ z5_8gwVYZ!S40BYPJoERcG<)^S&_pCH#{9GxU5Um2Kne(?Ra%e**0X13 zMk4LG((2(5ZPVC#@TiqFKQbw{v9z|2p+-&5+(?P)hIm80uv`Qe|`JG@$pe=4I-S7GiJ;lc0_2!jpxnBMWJ4t^e;YA{Phg M=e8Su;X6O_FLxH0F8}}l diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.class b/build/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.class index e96b61aaec51984d9d2b910f571134c41b746895..2f7cb63530321e715526be737f88a32d34c17f7a 100644 GIT binary patch delta 61 zcmbQmK8t-rJ`<-H0}F!$gCK*{UYX;B$PDz%*u(=)jlC{V0LQm{sNzWzNMhpTq*5Dq~T(zl!7QB$n_^9N#7hmQ%*E zh7}E~0-9r$w!Kga4Cbs-XuRCFjk4_rQq3H@uxsQk-!`2!&zI8zv3-sj);Loh0e#7J zEq~rIgTM*|hFgN%Y9O^&gNi`g^ErX8LMWx@zA&B85)exQoiny;%SQt3nd}C+=DiZ1 z^yF;US_!KK%U?GO4n3)yS2UdslNr)(IAe0hW-8-3^P*+p-i-xq!>Vt`ghVKtrfj$)pY65s#Xw~m56oMd|?`n=~j%q z^li7o=pGfl?k$+XPQf#M2BegR1*>d^j+}3z#Ak|5Lt8TMg?`amw3U)La~M~!tl_)! zp7-29nyw6Ve2QB-zQYY2*Kk81-D(3he6M32KWNy{@gtroge@H(pY0>L{S7<0jHNN?@YhOf+o=>A;d{>1inIs9>iqAgxY^4ja2V_TUJNy<5t^ zw}8qo7SPxNBj4OHfuW06o}AU_m@%upRkyJn{{enFgy%>e@bs-UCLMb#o=eTy_c+y2 z2+u*bWoCKl?a$egM>KvijWJO&jkacL#*ph(W~uf1=)S$ry1IhafX4}_`!Uf{?k0y+tPsc2?ad#Ud}6z+~$z&VaBQDIUo)UV*91|A$h#de2^Q?pDQ; za|cqjxmYF}HLjORTfGGcT+QUp22E$#%Xy*qQ95{rY>Rui@!lgs>5I@y@gx<~6*wS^x1{<+4#(%y7`1-ufwQZam$Ev3z8|Y4b zK$%Cl@&;E=ktO*Un4*OHr=)ZrOPM$Z8jYk;-btpNWCGv!Cp8d_z&P`5*8O_4io3yz u>nd181+53)B>yCRZMci;90w_TfTjL;wx7QyI*{i$&2f|CV~#(~_WuKAiz*WU delta 596 zcmYk4%}!H66o9|Ey+6I)aUP#O4%$%8XzVpq^{gVBv8^8bkIsxWb54fx8V?3mvN=TY& zz=X!57A5zROh(C66z(UP)>1a3nWY{u7ck%2T~rIL?;AEy-yGGjN2+T7s*TJb1;YdK zh8%fC(f)Vxw(06w!yt=>3|U2DW?CDTcxYIrph#|SZ5Erm@AnLkSP57)JZ8=QaXxGJ z?UR>J6}3vEbvo`;U)UdB#rIyn`}pCFo%F|4Jsxo8mF#oBzMqyCfkPP0kzE*B$m*hG zd_m%nWY6LpMkWq%+9VEekMUk*%b(h~hxi8sKV!_W#GDkvO^KsuZZS-e5jime69hNp z4%v^&-TnoCTMQgI%(Mw|$qwO;Y&z&3G)+S8OX4>s#^o58zv#IHO1BKUEnvl+uKBXm zL}OFAYogl09Ff}TVVgQ;R79?NMKaZuEOkk>SX#t;-F}Roy3(jF8y(S%K5LolvTCX8 Km)~MwZRi|ePC{h> diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Loader.class b/build/org/usfirst/frc/team708/robot/subsystems/Loader.class index db49c1c64396c03682bb048361d27b05ed7b599f..a3c33913a64339b441ea621d2a4382e92ecdf7c2 100644 GIT binary patch delta 43 xcmdnSv5jMcH8Z2)WE*A&Ruu*g2Gz-p%wDV-K$hm@3(T&pIt;uF29u>&WB}C`2$}!@ delta 43 xcmdnSv5jMcH8Z2qWE*A&R#gTL2DQnJ%wDXTK$h0z3(T&px(vJwhLfdOWB}El2%!J~ diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class b/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class index a477d7beb4909424f64cf40391fea97032c0e921..fe51bb99f088e840d254c889aa41731d6f58d1bf 100644 GIT binary patch literal 2135 zcmah~TUQ%Z6#fo`+&WMQh|ubiB1i!3Ai;uCxil#)He7?$qE;r!Nf?;Sp)(WOdhMIP z#Yej|b?I6zpY_eZ;4kpq<#O+t1SnzEu-IqsefHVs+qW~n|NHZ=0H*Lw93!|M!TWKv zU@nF?FwfjV42!tIT$)LS$<6Q+I>JAemck32ffW9&&anCxliT6>zf%5>rRDJaZhqy@ zzrXv3r4N|gi6M&>=2n@kFa)1H95L15K60}6u6i*ZMj;lSKX57xSn2e3c4qa%JjsH?x?)-bhny!AG@BcxOy%?Ll-Cb z-i$06Rm)4OO2x2?0vBkh8dmO5N|Hj!3}b3@15soIqOSCo%7$qRh$XUcJ#|QMU1=A$ zRK{@k^2%`NXgsH?PC+i2j9shWdUfA8GBk`~T%fBd8NBg{h9pKce2Vc1?rSiR*HA!F zgG5O~nGN<}YS?FTz@mkeh6)oKsR)#Y2XHjF@HA9eeT0<2$crAQNs&`oRww2`>Ws0sXneiL;<-llN8V6@A;skcx zQ6;}ELo9F)OK&+?sKE!Dljx5sb%^IEYsDYW&Sq6xeP)KviTtcJXRWYj*k$>g*OBwG z)^wH=)Jl*8#598)W$96>8tv-8Bot5T{62CkhT|0*gR19PJT&;syeIYE*j>qcPXzD&B4i#T#%?$kkXd~gye+U1O_p_TrCZbteP zmuk4o+(-?toVe=nO%~~kb^{4ye3!ix4;`z!WNr%YkW)dp8_pN&&i&Mp%U4fa^0x}O zg(z;Hau+*x7o*SvcQeO9PLn&1DX7GA2m^O_$X)hSzzuf-?;bnZtveY@yvBjnF!1e9 zxNxOVwctgaf|f-*+M^I JYr)|{|9=z2;sgKy delta 770 zcmZXS%TE(g7{z}xeM}!iX^SmlQEGiMMT<%SQEY2P9x9q>G{%is#>51srmgEPT^chB z6IZTXm}syNO#B0M<;wqt_}ytK8Z*gv&zXC_bI(2Z{*M2QKKZe?`yH5KHNp_54bDW+ zIU6R)xI$K#JQE6?Q{}v(1%t^D7Zkr3;Sy6Jii%8!m{H@b!DWNFx4XaG_gZm2&9FwI zR^KetS`E8Ut*ky++o(GxX|9+YB4u)wVS{;-G8L2SR84L$X0kxVt>~rfO%@H7OqN;E z7+7#>^>w?Ez5mj-*G+D5+x?)Ye0NxMcl77sK*Mg@EsdP}$)9uI_){5k*>UVfbz`mB zw3`~ydv>E{JFSP$UNzm1{>@;(Q*uWG@7hTT0W>*;_!1NlEdHe)7WM+aAjn(WXx2CM z$MM;1d|&ZfTlhN!)bNF12ScG)htOwPt}`O_2tlc*L?Tau2@#wmM-hu@nFCX#+oDZ| zQK1?~`}^iSF8>bHf}WANey3{KZ#>4BFlG2IKKWp%Yb@L|Hu#URn73q}2&J}Md)d=W zi)-oYX)2WExTs35eOoiqsNx9!e^~Vlkeduq{mWvwZ}CK5=qgCK(ggD`_5gDit9g93y5WK;HH!9bu)Far-m2v8=BL4qN2 z@=o?R#-zy-9Bz#1ljAwOIkOoA7;+ed81g1>=J;w@4%A)2pu$kjputcHG^dKe2S^7n fR5Ro<)G(9)=?aEghN%p740C|=0*3m@H#ubh7S|mE delta 135 zcmew={8e~^0=uX!0~>=KgCK)FgD`^wgDis!g93xwWK;HH!2qC45CacGFi<9xL4qM- z@=o?R#>B}I9BzzhljAwOIkOl97_u3J7;-0X=J;w@2Gm{7pu$kbputeV;L1?R-~*%s g7^)a@8LAmdfOG{z4Z~E1T8245dI3Y-fgc5PfUAacdk}LR$(HXn~@{Ahw4JkU$7T1&Wk%X;les>%=u%k~p&0l%K+d zGZ!vMEl3>T&adE?Af7+q!X?lgNxO|T=H-kR~p}c z66EJ%&BeNa8>>+?Q3HWny(Eogo*n2kGx8wqOB1Ql-OYP4O~S;;+~}cvR%PE8aMW9! z35c#hk_;k&`JNs}&+}0jrF$wIa;Mcx`f9kZQeDLLrej_e zq<5yFF{zH@D9z+!4!WHjjX8AFs5FjDtwO-7;vz%9CPLfpykz38QT^9DYElz>yGfq* zqo=wUt@)?p?L+lO`Do&*k2!cgPQiC^&Bt|Y2y9Jpp8pIfun`S%c{I_ox(Iqh9UjUs zHzpZpa<7tA4$AWjrXcw%*QLTrtJCgwwz1A}zfdt|q5GYdGO-m)%jT6^QN#e*J1AoGT z4`9OvsRfAzAHY}eC5YpPSg;DVbm!hV_ug~Q%>4ZQ{Re;@T=y`IOEYk>TA0fouHb6p z;V**xT&%fR7jR=WjK-=jaI>4FvCOk0on}TJr9EjPHN3NZSEfmr7?~SAkk6~^djgJn zuQLJB5op}kBW)fCY`6ZWN2h(rHcyg%BrxCAqi8Q5hEaN;!U1=h-K3`mhbq-YTyHw& zbwRo_35`j097ky;A9K(bV~#v$R2oO7)*#?jae)iiL}**>S4`YDs`qABjcZzOKgrWx z^h_6n%~t(x9jmv>#~e0%%)s+83*W`2k89WxxIMvH{xhJ!R@BesyRnwl70?^#@K}bq zG07;C2bG|5NS<6U0mWabF4a{!omQv)6zhBd(|iUNe@B#JoUdtiSzll) y!3h~oV1I?Ph^Y@B;X0q-*q@2nWB?jv-crfoS2Z=q3ehQ8%a8adae;w_i+=$32d+N= literal 0 HcmV?d00001 diff --git a/dist/FRCUserProgram.jar b/dist/FRCUserProgram.jar index f9ed93e264595e7991e7f2c818cd6534d7a723fc..96b3d4b8895cdaf016adbc14348ae4d7b1ff2c83 100644 GIT binary patch delta 38216 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 b#WSUa6aGJrpM6%UDb*OV96l?JbqD%CMy3M! diff --git a/src/org/usfirst/frc/team708/robot/OI.java b/src/org/usfirst/frc/team708/robot/OI.java index 5bef229..b516fa1 100644 --- a/src/org/usfirst/frc/team708/robot/OI.java +++ b/src/org/usfirst/frc/team708/robot/OI.java @@ -7,8 +7,8 @@ import org.usfirst.frc.team708.robot.commands.drivetrain.*; import org.usfirst.frc.team708.robot.commands.shooter.*; -import org.usfirst.frc.team708.robot.commands.loader.*; import org.usfirst.frc.team708.robot.commands.led_out.*; +import org.usfirst.frc.team708.robot.commands.loader.*; import org.usfirst.frc.team708.robot.commands.intake_ball.*; //import org.team708.robot.commands.intake.*; @@ -16,7 +16,7 @@ import org.usfirst.frc.team708.robot.commands.visionProcessor.*; import org.usfirst.frc.team708.robot.util.Gamepad; -//import org.team708.robot.util.triggers.*; +import org.usfirst.frc.team708.robot.util.triggers.*; /** * This class is the glue that binds the controls on the physical operator @@ -66,21 +66,22 @@ public class OI { /* * Driver Button Commands */ - public static final Button intakeGearIn = new JoystickButton(driverGamepad, INTAKE_GEAR_IN); - public static final Button intakeGearOut = new JoystickButton(driverGamepad, INTAKE_GEAR_OUT); - public static final Button intakeBallIn = new JoystickButton(driverGamepad, INTAKE_BALL_IN); - public static final Button intakeBallOut = new JoystickButton(driverGamepad, INTAKE_BALL_OUT); + public static final Button intakeGearIn = new JoystickButton(driverGamepad, INTAKE_GEAR_IN); + public static final Trigger intakeGearOut = new AxisDown(driverGamepad, INTAKE_GEAR_OUT); + public static final Button intakeBallIn = new JoystickButton(driverGamepad, INTAKE_BALL_IN); + public static final Trigger intakeBallOut = new AxisUp(driverGamepad, INTAKE_BALL_OUT); + public static final Button sonarOverride = new JoystickButton(driverGamepad, SONAR_OVERRIDE); /* * Operator Button Commands */ - public static final Button spinShooter = new JoystickButton(operatorGamepad, SPIN_SHOOTER_BUTTON); - public static final Button spinShooterBack = new JoystickButton(operatorGamepad, SPIN_SHOOTER_BACK_BUTTON); - public static final Button spinFeeder = new JoystickButton(operatorGamepad, SPIN_FEEDER_BUTTON); - public static final Button spinFeederBack = new JoystickButton(operatorGamepad, SPIN_FEEDER_BACK_BUTTON); - public static final Button loaderSpinIn = new JoystickButton(operatorGamepad, LOADER_IN_BUTTON); - public static final Button loaderSpinOut = new JoystickButton(operatorGamepad, LOADER_OUT_BUTTON); - public static final Button loaderOff = new JoystickButton(operatorGamepad, LOADER_OFF_BUTTON); + public static final Button spinShooter = new JoystickButton(operatorGamepad, SPIN_SHOOTER_BUTTON); + public static final Trigger spinShooterBack = new AxisDown(operatorGamepad, SPIN_SHOOTER_BACK_BUTTON); + public static final Button spinFeeder = new JoystickButton(operatorGamepad, SPIN_FEEDER_BUTTON); + public static final Trigger spinFeederBack = new AxisUp(operatorGamepad, SPIN_FEEDER_BACK_BUTTON); + public static final Button loaderSpinIn = new JoystickButton(operatorGamepad, LOADER_IN_BUTTON); + public static final Button loaderSpinOut = new JoystickButton(operatorGamepad, LOADER_OUT_BUTTON); + public static final Button loaderOff = new JoystickButton(operatorGamepad, LOADER_OFF_BUTTON); public static final Button led = new JoystickButton(operatorGamepad, LED_BUTTON); @@ -100,7 +101,7 @@ public OI() { // sonarOverride.whenPressed(new SonarOverride()); // - spinShooter.whenPressed(new SpinShooter()); + spinShooter.whileHeld(new SpinShooter()); // spinShooterBack.whileActive(new SpinShooterBack()); // spinFeeder.whenPressed(new SpinFeeder()); // spinFeederBack.whileActive(new SpinShooterBack()); diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index b13cb88..b74ec19 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -23,22 +23,21 @@ import org.usfirst.frc.team708.robot.subsystems.Shooter; import org.usfirst.frc.team708.robot.subsystems.Loader; import org.usfirst.frc.team708.robot.subsystems.Intake_Ball; +import org.usfirst.frc.team708.robot.subsystems.Climber; import org.usfirst.frc.team708.robot.subsystems.LED; -//import org.usfirst.frc.team.708.robot.subsystems.Intake_Ball; //import org.usfirst.frc.team.708.robot.subsystems.Intake_Gear; -//import org.usfirst.frc.team.708.robot.subsystems.Climber; import org.usfirst.frc.team708.robot.OI; import org.usfirst.frc.team708.robot.subsystems.VisionProcessor; import org.usfirst.frc.team708.robot.commands.drivetrain.*; -import org.usfirst.frc.team708.robot.commands.loader.*; import org.usfirst.frc.team708.robot.commands.intake_ball.*; import org.usfirst.frc.team708.robot.commands.autonomous.*; import org.usfirst.frc.team708.robot.commands.led_out.*; +import org.usfirst.frc.team708.robot.commands.loader.*; //sue's comment /** @@ -59,7 +58,7 @@ public class Robot extends IterativeRobot { public static Loader loader; public static Intake_Ball intake_ball; // public static Intake_Gear intake_gear; -// public static Climber climber; + public static Climber climber; public static VisionProcessor visionProcessor; public static LED led1; @@ -94,9 +93,9 @@ public void robotInit() { intake_ball = new Intake_Ball(); loader = new Loader(); led1 = new LED(); + climber = new Climber(); // intake_gear = new Intake_Gear(); -// climber = new Climber(); oi = new OI(); // Initializes the OI. // This MUST BE LAST or a NullPointerException will be thrown @@ -185,11 +184,10 @@ private void sendStatistics() { loader.sendToDashboard(); shooter.sendToDashboard(); led1.sendToDashboard(); + climber.sendToDashboard(); intake_ball.sendToDashboard(); -// Intake_Gear.sendToDashboard(); -// Climber.sendToDashbaord(); - -// visionProcessor.sendToDashboard(); +// intake_Gear.sendToDashboard(); +// visionProcessor.sendToDashboard(); } } @@ -215,8 +213,9 @@ private void sendDashboardSubsystems() { SmartDashboard.putData(drivetrain); SmartDashboard.putData(led1); SmartDashboard.putData(intake_ball); -// SmartDashboard.putData(Intake_Gear); -// SmartDashboard.putData(Climber); +// SmartDashboard.putData(intake_Gear); +// SmartDashboard.putData(visionProcessor); + SmartDashboard.putData(climber); } } diff --git a/src/org/usfirst/frc/team708/robot/commands/Climber/ClimbDown.java b/src/org/usfirst/frc/team708/robot/commands/Climber/ClimbDown.java new file mode 100644 index 0000000..e5c9de8 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/Climber/ClimbDown.java @@ -0,0 +1,45 @@ +package org.usfirst.frc.team708.robot.commands.Climber; +import org.usfirst.frc.team708.robot.OI; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.util.*; + +import edu.wpi.first.wpilibj.command.Command; +/** + ** @author James Makovics + **/ +public class ClimbDown extends Command{ + + public ClimbDown(){ + requires(Robot.climber); //Requires Climber from the IO.Java + } + + // Called just before this Command runs the first time + protected void initialize() { + + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + double moveSpeed = OI.operatorGamepad.getAxis(Gamepad.leftStick_Y); //Gets input from operator's controller + Robot.climber.manualMove(moveSpeed); //Defines speed of the motor from the operator's controller + + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return true; + } + + // Called once after isFinished returns true + protected void end() { + + + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + end(); + } + } + diff --git a/src/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.java b/src/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.java new file mode 100644 index 0000000..bad71c5 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.java @@ -0,0 +1,47 @@ + package org.usfirst.frc.team708.robot.commands.Climber; +import org.usfirst.frc.team708.robot.OI; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.util.*; + +import edu.wpi.first.wpilibj.command.Command; +/** + ** @author James Makovics + **/ +public class ClimbUp extends Command { + + + public ClimbUp(){ + + requires(Robot.climber); //Gets Climber from IO.Java + } + + // Called just before this Command runs the first time + protected void initialize() { + + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + + double moveSpeed = OI.operatorGamepad.getAxis(Gamepad.leftStick_Y); //Gets Input from operator's controller + Robot.climber.manualMove(moveSpeed); //Defines move speed from the operator's controller + + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return true; + } + + // Called once after isFinished returns true + protected void end() { + + + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + end(); + } +} diff --git a/src/org/usfirst/frc/team708/robot/commands/Climber/ManualMoveClimber.java b/src/org/usfirst/frc/team708/robot/commands/Climber/ManualMoveClimber.java new file mode 100644 index 0000000..358c515 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/Climber/ManualMoveClimber.java @@ -0,0 +1,47 @@ +package org.usfirst.frc.team708.robot.commands.Climber; + +import org.usfirst.frc.team708.robot.OI; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.util.Gamepad; + +import edu.wpi.first.wpilibj.command.Command; +/** + ** @author James Makovics + **/ +public class ManualMoveClimber extends Command { + public ManualMoveClimber() { + // Use requires() here to declare subsystem dependencies + requires(Robot.climber); + } + + // Called just before this Command runs the first time + protected void initialize() { + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + double moveSpeed = OI.operatorGamepad.getAxis(Gamepad.leftStick_Y); + + //check if joystick axis is in deadzone. Change movespeed to 0 if it is + if(moveSpeed <= .25 && moveSpeed >= -.25){ + moveSpeed = 0.0; + } + + Robot.climber.manualMove(moveSpeed); + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return true; + } + + // Called once after isFinished returns true + protected void end() { + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + } +} + diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.java b/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.java index 86e0b17..63dc5a7 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.java @@ -1,7 +1,10 @@ package org.usfirst.frc.team708.robot.commands.intake_ball; import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.OI; import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.util.Gamepad; + import edu.wpi.first.wpilibj.command.Command; public class Intake_Ball_Out extends Command { @@ -17,7 +20,9 @@ protected void initialize() { protected void execute() { - Robot.intake_ball.moveMotor(Constants.INTAKE_REVERSE); + if (OI.driverGamepad.getAxis(Gamepad.shoulderAxisRight) >=.5){ + Robot.intake_ball.moveMotor(Constants.INTAKE_REVERSE); + } } diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java b/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java index e41acbf..6735154 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java @@ -23,7 +23,6 @@ protected void initialize() { protected void execute() { boolean R_Shoulderpressed = OI.driverGamepad.getButton(Gamepad.button_R_Shoulder); - boolean AxisRightpressed = OI.driverGamepad.getButton(Gamepad.shoulderAxisRight); // LOADER_IN_BUTTON = Gamepad.Button_R_Shoulder; // LOADER_OUT_BUTTON = Gamepad.shoulderAxisRight; @@ -32,7 +31,7 @@ protected void execute() { Robot.intake_ball.moveMotor(Constants.INTAKE_FORWARD); } else - if (AxisRightpressed == true){ + if (OI.driverGamepad.getAxis(Gamepad.shoulderAxisRight) >=.5){ Robot.intake_ball.moveMotor(Constants.INTAKE_REVERSE); } else { diff --git a/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java b/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java index d6978b3..dffae26 100644 --- a/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java +++ b/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java @@ -22,6 +22,7 @@ */ public class LED_out extends Command { +static public int count = 0; public LED_out() { requires(Robot.led1); @@ -35,9 +36,10 @@ protected void initialize() { protected void execute() { boolean Bpressed = OI.operatorGamepad.getButton(Gamepad.button_B); - // if (Bpressed == true){ - Robot.led1.send_to_led(10); -// } + if (Bpressed == true){ + count++; + Robot.led1.send_to_led(count); + } } // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java index 550e50f..609ea87 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java @@ -1,6 +1,7 @@ package org.usfirst.frc.team708.robot.commands.shooter; import org.usfirst.frc.team708.robot.Constants; import org.usfirst.frc.team708.robot.RobotMap; +import org.usfirst.frc.team708.robot.util.Gamepad; import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.OI; @@ -29,7 +30,16 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_SPEED_HIGH); +// boolean L_Shoulderpressed = OI.operatorGamepad.getButton(Gamepad.button_L_Shoulder); +// +// if (L_Shoulderpressed == true){ + + Robot.shooter.manualSpeed(2000); + Robot.shooter.setFgain(Constants.SHOOTER_F_LOW); + +// } +// else +// Robot.shooter.manualSpeed(2000); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Climber.java b/src/org/usfirst/frc/team708/robot/subsystems/Climber.java new file mode 100644 index 0000000..9dac615 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/subsystems/Climber.java @@ -0,0 +1,51 @@ +package org.usfirst.frc.team708.robot.subsystems; + + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.RobotMap; +import org.usfirst.frc.team708.robot.commands.Climber.ManualMoveClimber; + +import com.ctre.CANTalon; + +//import org.usfirst.frc.team708.robot.RobotMap; +//import edu.wpi.first.wpilibj.DigitalInput; +//import edu.wpi.first.wpilibj.Encoder; +//import edu.wpi.first.wpilibj.Talon; +import edu.wpi.first.wpilibj.command.Subsystem; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; + +/** + * @author James Makovics + * @author Cody Cooper + * @author James McPeak + */ +public class Climber extends Subsystem { + public static CANTalon climberMotor; // Uses the Motor CanTalon + + /** + * Constructor + */ + public Climber() { + // Initializes the motor for the Climber + climberMotor = new CANTalon (RobotMap.climberMotor); + + } + + public void initDefaultCommand() { + // Set the default command for a subsystem here. + setDefaultCommand(new ManualMoveClimber()); + } + //Sets the motor speed to the variable speed + public void manualMove(double speed) { + climberMotor.set(speed); + } + public void stop(){ + climberMotor.set(Constants.MOTOR_OFF); + } + + public void sendToDashboard() { + if (Constants.DEBUG) { + } + } +} + diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java index 87e3794..c025e22 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java @@ -330,7 +330,7 @@ public void sendToDashboard() { } SmartDashboard.putNumber("Gyro angle", ( (int)gyro.getAngle())); // Gyro angle -// SmartDashboard.putNumber("DT Sonar Distance", getSonarDistance()); // Sonar distance reading + SmartDashboard.putNumber("DT Sonar Distance", getSonarDistance()); // Sonar distance reading // SmartDashboard.putNumber("DT Encoder Distance", encoder.getDistance()); // Encoder reading // SmartDashboard.putNumber("DT Encoder 2 Distance", encoder2.getDistance()); // Encoder reading // SmartDashboard.putNumber("Sonar Mode", sonarOverride); diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.java b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.java index 8f63fe3..719f766 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.java @@ -5,13 +5,9 @@ import com.ctre.CANTalon; -//import org.usfirst.frc.team708.robot.RobotMap; -//import edu.wpi.first.wpilibj.Relay; -//import edu.wpi.first.wpilibj.Relay.Value; -//import edu.wpi.first.wpilibj.Talon; import edu.wpi.first.wpilibj.command.Subsystem; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; -//import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; + /** * Subsystem that intakes balls * @author Madison diff --git a/src/org/usfirst/frc/team708/robot/subsystems/LED.java b/src/org/usfirst/frc/team708/robot/subsystems/LED.java index c32c796..60cde8c 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/LED.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/LED.java @@ -15,26 +15,39 @@ import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import edu.wpi.first.wpilibj.tables.TableKeyNotDefinedException; import edu.wpi.first.wpilibj.SerialPort; -import edu.wpi.first.wpilibj.SerialPort.Port; +import edu.wpi.first.wpilibj.SerialPort.*; /** * */ + public class LED extends Subsystem { public static SerialPort led_out; public static Port port; - - - public LED() { - port = Port.kMXP; - led_out = new SerialPort(9600, port); - } + + public static byte[] msg; + + public static int buttonvalue = 0; + + public LED() { + + port = Port.kOnboard; + led_out = new SerialPort(9600, port, 8, Parity.kNone, StopBits.kOne); + led_out.setWriteBufferMode(WriteBufferMode.kFlushOnAccess); + + } public void send_to_led(int command){ - led_out.writeString("10\n"); - led_out.flush(); - } + buttonvalue = command; + String message = "1"; + + msg = message.getBytes(); + led_out.writeString("1"); +// led_out.write(msg, 4); + + SmartDashboard.putNumber("LED is set to", buttonvalue); + } public void sendToDashboard() { SmartDashboard.putString("LED port", port.toString()); diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Loader.java b/src/org/usfirst/frc/team708/robot/subsystems/Loader.java index d59199a..43aec2a 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Loader.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Loader.java @@ -30,7 +30,6 @@ public Loader() { } public void initDefaultCommand() { - // setDefaultCommand(new ManualLoader()); } public void manualMove(double speed){ diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java index 3ba95ec..755da05 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java @@ -40,17 +40,21 @@ public Shooter() { // Initializes the motor - shooter = new CANTalon(56); - shooter.reset(); -// shooter.setFeedbackDevice(FeedbackDevice.QuadEncoder); -// shooter.reverseSensor(false); -// shooter.configEncoderCodesPerRev(500); - shooter.changeControlMode(TalonControlMode.PercentVbus); -// shooter.changeControlMode(TalonControlMode.Speed); -// shooter.setAllowableClosedLoopErr(0); -// shooter.configNominalOutputVoltage(0.0, 0.0); -// shooter.configPeakOutputVoltage(12.0,-12.0); - shooter.set(0); + shooter = new CANTalon(41); + shooter.enable(); + shooter.setFeedbackDevice(FeedbackDevice.QuadEncoder); + shooter.reverseSensor(false); + shooter.configEncoderCodesPerRev(256); +// shooter.changeControlMode(TalonControlMode.PercentVbus); + shooter.configNominalOutputVoltage(+0.0, -0.0); + shooter.configPeakOutputVoltage(+4.0, -4.0); + /* set closed loop gains in slot1 */ + shooter.setProfile(0); + + shooter.setP(0.6); + shooter.setI(0.002); + shooter.setD(0); + } public void initDefaultCommand() { @@ -59,9 +63,14 @@ public void initDefaultCommand() { public void manualSpeed(double speed) { shooter.changeControlMode(TalonControlMode.Speed); -// shooter.set(speed); - shooter.set(1); + shooter.set(speed); +// shooter.set(.2); } + + public void setFgain(double F){ + shooter.setF(F); + } + public void stop(){ shooter.set(Constants.MOTOR_OFF); } diff --git a/src/org/usfirst/frc/team708/robot/util/Gamepad.java b/src/org/usfirst/frc/team708/robot/util/Gamepad.java index abf36aa..37d6321 100644 --- a/src/org/usfirst/frc/team708/robot/util/Gamepad.java +++ b/src/org/usfirst/frc/team708/robot/util/Gamepad.java @@ -57,6 +57,7 @@ public Gamepad(int port){ * @param axis * @return */ + public double getAxis(int axis){ double val = getRawAxis(axis); if(Math.abs(val) <= axis_deadband){ diff --git a/src/org/usfirst/frc/team708/robot/util/triggers/AxisDown.java b/src/org/usfirst/frc/team708/robot/util/triggers/AxisDown.java new file mode 100644 index 0000000..1d4808f --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/util/triggers/AxisDown.java @@ -0,0 +1,23 @@ +package org.usfirst.frc.team708.robot.util.triggers; + +import org.usfirst.frc.team708.robot.util.Gamepad; + +import edu.wpi.first.wpilibj.buttons.Trigger; + +/** + * Makes moving an axis down on a joystick result in a button input + */ +public class AxisDown extends Trigger { + + private Gamepad gamepad; + private int axis; + + public AxisDown(Gamepad targetGamepad, int targetAxis) { + gamepad = targetGamepad; + axis = targetAxis; + } + + public boolean get() { + return (gamepad.getAxis(axis) <= -.50); + } +} diff --git a/src/org/usfirst/frc/team708/robot/util/triggers/AxisUp.java b/src/org/usfirst/frc/team708/robot/util/triggers/AxisUp.java new file mode 100644 index 0000000..e75c8c4 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/util/triggers/AxisUp.java @@ -0,0 +1,23 @@ +package org.usfirst.frc.team708.robot.util.triggers; + +import org.usfirst.frc.team708.robot.util.Gamepad; + +import edu.wpi.first.wpilibj.buttons.Trigger; + +/** + * Makes moving an axis up on a joystick result in a button input + */ +public class AxisUp extends Trigger { + + private Gamepad gamepad; + private int axis; + + public AxisUp(Gamepad targetGamepad, int targetAxis) { + gamepad = targetGamepad; + axis = targetAxis; + } + + public boolean get() { + return (gamepad.getAxis(axis) >= .50); + } +} diff --git a/sysProps.xml b/sysProps.xml index b06852b90ca1ba1c2bbbf3552b1f8a87dd54890e..80bc5ac34e23fcca3fdd8bf486174b4baefa1f75 100644 GIT binary patch delta 57 zcmZ2yu+CsZ37?`fgE@mUgA;=xg9U>D5GpXZF}N^TGMIo#3kH|XQ~88hSj~U}7Ms@! HHL?N#M^Os& delta 57 zcmZ2yu+CsZ37?`1gDZnG5SuetFc<)#0)q>K8BoN6!3ap3Gnj0i$|uaiY6|3-Y+ftW G$O-^R7YgA3 From 2fb19af41a233b67d2dd2d17bd02d00d9d2bc668 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sat, 4 Feb 2017 12:14:11 -0500 Subject: [PATCH 06/69] removed rs232 bug --- .../usfirst/frc/team708/robot/subsystems/LED.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/org/usfirst/frc/team708/robot/subsystems/LED.java b/src/org/usfirst/frc/team708/robot/subsystems/LED.java index 60cde8c..0ece3c0 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/LED.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/LED.java @@ -25,9 +25,7 @@ public class LED extends Subsystem { public static SerialPort led_out; public static Port port; - - public static byte[] msg; - + public static int buttonvalue = 0; public LED() { @@ -40,13 +38,15 @@ public LED() { public void send_to_led(int command){ buttonvalue = command; - String message = "1"; + char message[]; - msg = message.getBytes(); - led_out.writeString("1"); +// msg = message.getBytes(); +// led_out.writeString(message); // led_out.write(msg, 4); - SmartDashboard.putNumber("LED is set to", buttonvalue); + SmartDashboard.putNumber("LED is set to int", buttonvalue); +// SmartDashboard.putString("LED set to string", buttonvalue.toString()); + } public void sendToDashboard() { From 284b197ef9721958882f42fe3f46dfbc088e1f21 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sat, 4 Feb 2017 17:58:35 -0500 Subject: [PATCH 07/69] intake gear --- build/org/usfirst/frc/team708/robot/OI.class | Bin 2977 -> 3164 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 4334 -> 4525 bytes .../commands/intake_gear/Intake_Gear_In.class | Bin 0 -> 1131 bytes .../intake_gear/Intake_Gear_Out.class | Bin 0 -> 1145 bytes .../intake_gear/ManualIntake_Gear.class | Bin 0 -> 1566 bytes .../team708/robot/subsystems/Drivetrain.class | Bin 6749 -> 6832 bytes .../robot/subsystems/Intake_Gear.class | Bin 0 -> 922 bytes .../frc/team708/robot/subsystems/LED.class | Bin 2182 -> 2360 bytes dist/FRCUserProgram.jar | Bin 1293103 -> 1296765 bytes src/org/usfirst/frc/team708/robot/OI.java | 9 ++- src/org/usfirst/frc/team708/robot/Robot.java | 17 +++-- .../commands/intake_gear/Intake_Gear_In.java | 42 +++++++++++++ .../commands/intake_gear/Intake_Gear_Out.java | 43 +++++++++++++ .../intake_gear/ManualIntake_Gear.java | 58 ++++++++++++++++++ .../team708/robot/subsystems/Drivetrain.java | 4 +- .../team708/robot/subsystems/Intake_Gear.java | 54 ++++++++++++++++ .../frc/team708/robot/subsystems/LED.java | 16 ++--- sysProps.xml | Bin 6190 -> 6190 bytes 18 files changed, 219 insertions(+), 24 deletions(-) create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.class create mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.class create mode 100644 src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.java create mode 100644 src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java diff --git a/build/org/usfirst/frc/team708/robot/OI.class b/build/org/usfirst/frc/team708/robot/OI.class index dff37afa3fca0e37bed2eb35ad854be406971688..059b2afe76df49f7e60180e6647d86bea4ce770e 100644 GIT binary patch delta 1358 zcmZXUZEsXX6vuzt?(QtNgN4?%6#9U&Kmnz;t_T!Vw56`KAOh+NSQc6l3roQw79SP` z6rUfi@uf)Qn|Kq#YhvIF_)(1UKXaGlChm(l^PB&fGk4CJvx{ASuc_Yq_s=^( zfnN=$1D;}f1)G>Lyc>{aI^YcNxs|hq_XBdVJZm@?(BkCtRGfUlFc;7o%NGro0@`Bu zz%U=s5r?|$d_Oc?3F!9nF+MUZ1oXttR}CKr^fPVvBp}77&i^wvR1Mb*p9gH@3&Zt* z0dBbUn}#m~w#D$3Te;7n&!X3Ccai{)H{AM&+zQsME12a?9r}A_PxdXR?T|JQ=CZq1miXB+#IWUQhQkBd zBiRzaq%>X3^o7=Rwv-4huenWy##&qZ=!Gjf>UAb9hncV(VX|H@y{YOZl@)rGa)s2a z+eMXKtFk|%Ebq{~iD$(-6TC~jJHaF3Jqg~cIL{^6>CY$F#e2bVwQ+!R*q3l{2fUcz zz2cV=JgNi661-nLo?xfHoM87s#RQLtRe7rJ#;U2mxvK1~s^_h8=&fq#tZNHsCi;tJ&EV?RWtwV)_g8dPvo(TeKl$(?seT1=zXuViQhJ%k>uhk- zjGyKsHkN8^$St$EPIJV7BWYXe?yg>2mGz>jHdLWhUEZtm)y}Ok<>NTY#WuysOM9Zu zlMSsAXL}qbABP!ih{lIe-dxbUzEeS!I8X8U>&gv`PwaCUODRw21-EMKQQms#WR$$p qG|YZI)NyrqQ3;x4R{sqPqFd^?-_-4YD2+As*jsz|_z*vdJ2!K|xSZR76=s1O#zJMFdn-1Q7*9KoCUS26tRzGKsIo z#3$dFNtlFAjL#;mnF5gECzaKk`AMn*9vBjXA;4Vcag6AHHsq&qK6N_t9R+Ca9GzO680 zAlHFeg*yfcFr+ZoX~2VdnSWQB1%-PGiw25tU-*H-LjxsvB=A@vY@p16B^h}l%~NTf zDLh~KGvEvK;hc#R=!kqwYRgb~Vd5oTndn5wgVu=0UmjUY%FphapHo;i@mg}H(BVOY z&V5eK@po@vof(=k@kXYcrQmvUv#*D-#oy@bWnA))r1jygiQT9&u?JO=fBxRoKD;w= zOeAWkXhp_VR%YAu0)_hU-o$a)M|C2Tn{^T$CQc({qDy*b5Q_a$K~K1tg#dyyiQ?=P zh(2Q>_F^9$t7hMe{p1=KA0QueaV@#d#r4!_aIxeMxmffXg~N#jWWr(B1X-ZT#r5PP zE^g)mEiP^)A9bn9xzl9hc}AIsF4>oqDZx2_Q#R73V#%vY@`!1R*@M+ zmW^z}W(_$uatV1F@@*6l3JEKEoeONskivF=H)y#4P$b z%XD@U#zkBr25@;}o1P*H$n)EVr#~rFud zGWpgqxWl2a<>=4@(Xkwzoleq9=u|j5mZMXdNGh#EzhpZW_eoV6 zrpZ~Kj%jjM%on3P5Tly-50QhPiX#^P7wstJfv9H1T6iA1c(Dg~T_)IDctcQ diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index 53e1dd5c58e2d3166fbcdf2150ee09a90309c52a..9b7793331bf678404c168d4d897a4e32fb1720a4 100644 GIT binary patch delta 1921 zcma)-*>ee3`vY65F#i68&JR< zp;Z)I05?Dpn2^p$6j1{RPp+kp`~^PxXnD@`*fUi5;8e}I_uRSncfND(GJjT_9PM2F z``me;iYpfP&~38SB1CtLI<}cSYfVd6Qihao^c(vd1Ff zJ1>~LXffD#UNU*vVyN%DV)ClU4)?v+O!iuo`_Ai@#NVf8zlF;iYTi`$EsF!Zt#t1w z=RuQ0>bz?)f$eJEvv^;p7V?3~;YiIjNlrdGa759MDvKCf%}`c~9j@KDngmCqd}#7f zq&E8Rx|w{ekv@s?smU>mS#+y^Jjw}^&n)KB9p!V2lYF7(l*wt6Gd;77YQrvSZSQJq zYg*OZ)Y$3PgsKYWOQ&aZC=?E_rPjZMGK`^x5P&KrzZ=^JNvv~TQcZ137=^NmVfklg+t zdS+UI$+Utht&M?HTx^S5ZdX*d%9!pVOr?PNJdvFPH_*nD;u);-=S%-0Vez5O-DKB0 z{ggNKadQtNlYLakchnjAEre=LRYI0g#Bw=I4U7=ZaY8y-IA;jy9I5dVA*~n6)uO+a z7Kz=O7r!lt-yXzYAnF=Fk!G~#Fh*jIO{N*w%lKUAgd_qTL|8AWZJ>nCJlRAb+Y!jt zXJyNh$+HxA+;V{ly{MDCgr$u~r3MIRax0b=wmKBEO%ikR)XTE!>ob#$5kk8m2y>@+ zN?)Y(K75Ya7u_Y)yM=mBo@P-%+!;vC6Cp>n;@3e=%t88_x=$GQ=V`^S=PMSOje%&T z=&7cWql#n(4(2Hs0gclYto$FD9hS_FNM=X#v~rm}6-dpHhzb!+GfB5M$KqG$m=ymw zCMR%mXEmCI3hC{XSdak5N!H3gQ(lhdOo^|BC?4?3ph4J(;i8NE>DVWYVYUI-A;A*e0 zd5s)4c~!EMTZjgf1&JB`%xn delta 1828 zcmai#>sM4&7{-5RfH`N*oFE27GbIQC!@ML2Ng(>&wKWMp67k{-e-oZ zE>y5@hu2lutKb_Z`*>3sdP`Y* zTgO&lzex=PDjYC*M@=o@pw7F&)<2~l`BRDal-onfiv&xBDJo1;p@>5U9fx(^54IT> zmo#xiiF{!2q0W#=3o(U1GWb~MsL4`d2FFZ}^N9+d>U^g2`RE$0NgF*M_%{$-M^vN1 z{wrK&Unr=^yO*_gaj+uX#d3=;)Vq3nD6iZ;rHAba%`C9EgOqHRk)t)w&T}#cdk0#3M3RbhKOC%{{`iD0l~VYE;O(ibjiWdMutKYVib7 zof8%(8MgRRWgb_VuT$+B&| zef`ni{yvMOB1;jq_ZSh37+WVFzb_DWoDr>)ASha{&qN1fh$;dwYS2QFs=j|kG( z=*^esBzb}npCy-d$Lo@m%l}m)k_n)g7P@}!BFq{&E^C<~>NTRjKzh?G`t72lhlk;E1>o}Of@*nR(0jMbrs48aS9ofns#{Pao5<)4ErW`vNl7K zn|+xULCSqN>pt5ok94QF-X*Sg=Qs}gj<@(!of)bk-(y^vye4bX+s6H3@<0w((WU+h zg=VWyI!C-Ie_Ga6&`li4VbFXxz5YT~Sp0t~J1UhOlgf_gaAhmo=5sX*m!dLK)T#Z= zdht4RLYjXPo#7lFLp;UR=?thVD9hK&^Ikayil|vyq&v(hW$wYl%=6Iv1Yw5-2}&KV zOHk;rFu_!Z`UKM*8WI#cEXp>sM(z`GX$u*X&s|bJuqi4zO|4waxumIQBFEK;A8Aa})Fbvvxjsp=!wqis#xyNGNtQUYy0|UPQo%RL`^Ykt zNztBdPFY;O&G0>C{2-U?9F6=)D?jBpYRfnZsLxl%$VM4eld7c$DLSMdZj=)$&r{u4 u?8fO5vufqC0dQWn^k=!_zsT+Wb+-Hj{6;yyGmAfRRIB~-(kDv-^#2Fm+b*mC diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.class new file mode 100644 index 0000000000000000000000000000000000000000..6032c956859e2bf70377264d2c7714eec648899e GIT binary patch literal 1131 zcma)5+iuf95Ivhqo!F*<7RseSZ?s9%fRQK#si+bPDykHCpr{YLR8F#Ox5ReXU6;!@ z@d6J);(-s~qY$%+tH6!h{q9E|Yw(>-%{kQz^nETS(8~D%3Kimtq z8Ehj&_#N?y%31saZ^fECTc};SQ763J7x{)P56O3kjY}DKwYjnPqgb~1t}tR}|0KV6 z>Yw>8Y&aI~xLC!Si!v$<<;lA1QK+;ZYGq;FMHL$^YH(a!fy3~0GWI{-%&^MavG=|! zyg}#4>xky*uwPz%&^Lya$+cdYE)NruwKf57hW5XbuI*-^D_58f>l7 zn5=MrNV08~XLGX5zgJ`^2GJRR5$Q}O;9@(0!D$B>y6NsE^t vA0|kv|N5!(#TTh#%VQK)N->vGJV+?=)gG+#1Z&i!@)$urAz--LS9wJqTbyC0E&~2M@*7;f@)~VAnXQLSuYKT2 zVdDN_MxO}9uv-u1u^Xu)A(eKIWYg8$^B>;bbY<8Gwc8AR-wRsG6@m8N@WW&7N%v{b ze?tD@i%4%V*rpQUwZ%u$v-o@7j5K++P1NH+PN zFx8gE*w;_JGtYs8qJ`TIR#A3PL6u>3a^*W=ptKigWns-h4R;)@qv+r=iVTk@WB=#X z3@f}9x$io{?KO|QwrHFVTITNbTF0<7S?r~0bgw0Y4l_LX$6Qp@P#=`$z8akdO=3#& zw~>&XW?L)QCs(*XAlWkevoX2Mzbi82{qT%G3w0=I1mr1*yPxdz=(ma z41p{GmJ;A5$(VaK>6ei0!WuHzR0?QM@|YW8u@jbyxI|d7g+u4=j&iJ>$6hrtj@pt|!esH)l%0i}RBUrt4%K zY37__k=uFCv~04;;Uc z7jDTFo+t7Q>?uR@w&b~^EnW)g=$5xm2;PCZK>5&>sIW%O`xq)^hHOv^8#hih8ENECXa0|pTT|Zl2S_N~17e$HZ4cx(9153EaFkIhl z)v-OvZRu&aZ(tcK23E0V-~o~bdXZ#Us}JyhRc06zdEb0qvdl`mNGe#_!_y|2tCeOk z4Ac+zShbesr{Hkv3&YeoL*V&Y@1-Y2(K9oF3so}Vif6t>EoB%>W$N?VKJ~w?=CrRq zxksBc9eLL}7H-%Hif|6W+P)FD#(g1Id?_89wj#BuhDnXl>HIRxor71C@b6PTQ=j|4 z{fJP}ITl-vbg0;|)S9Y-MjV%4s1;NU*XZR*r-bXY;BCRa$3feJBt0*XzJv%#fRX+L zmOeqGjOa(wBj})K3!>@_F*Kuzw2Ofj+(#$6NQ>c86>F4qb;iyBR4@?KnIo-N=-6F# zd`&PBx;KA321ayLWMLEbaoj%MDq%HCJ_CBF4h$%LRSf+Qll|?t283f z59%32sw6gElUSsh7;R?gIU9Ov#I%g&v%2U3iJORHx&}h4LiAN3rbCE^bQvvw0xS^E P#TtNy5P(s?71RD-y>nq) literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Drivetrain.class b/build/org/usfirst/frc/team708/robot/subsystems/Drivetrain.class index 418065c48fb339d800adcdc5a67927226c9a6f50..ab67be4911ab1f1e643075895a0b18b7c45b8433 100644 GIT binary patch literal 6832 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 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.class b/build/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.class new file mode 100644 index 0000000000000000000000000000000000000000..8bb3891a881eca46d13840c26f24a886a2ee3f81 GIT binary patch literal 922 zcmaKqZ)+1l5XPU)zw^?VrqNcdTKmr?MsP)n6%?T)D222yY$*6j_L5C|HFq0!_bPrY zK`kiw0sK(n>@{fu*1TC}W_O zCCo{ngr>{lp-OaDz6l*}WopoqQ*kC3YO^7mDmGTc)|61fb%uq1++x_8E%DB6yDx@L z;b93y%$2Z(MTYI!eOLQK#Il$0Ps5O37)#M03{E+LIj8vH*j6&7zUO?(8fmdc|G=kT z!jN$Y6y+(Vo#-r6)n^>e|j-U_{5EK*yK|oL=K}D2^_!`I%c_agq3A)Qpw^H*1 zE?u}WsfsC}`~a)`62HKWdV4~NuS!*)?sM<$bIv$mt9$#!!{crWjm{6Ab>e zp3Q10eMwthX9&jEv~8_tL(8Ok<}7nHlNz=??5(}atUv@&jzzR_oJ1RgYX5LG+M8}A zFX0i#6FimhjAIGQ91$crPM}4C&XK}%j#aF2oW>am>l_$2MLt_(X8iFfERDbQHh1 z_FeJXL!ns4(o?!gd6rQz%Fqywb^hz0bi)6k?f0H=jbiFr^03_A^47WM8Ty>jeDzG) zv)+N>5Pbol=aa=mXeW#LIY{$xkQ#K5yb^lA$a<94E_=^A!n*Bm-cbH5ML2Ol7kbc3 z$Z!tlMHcPfpo)ILP^buA0579@rU1FCgd-)?B=!(kpkoQO9}z5~E?7@Fughpi1RD#e zE8}S5168}wO=}AzS|e~%4}M}ANv%CkV!b4Hi9T!5idvC7XoZB)M`q}yi0LOAF4|wH zn4s)o=L}Q_j}_o9q3KUWg~Gr9`5SaDulTI~~7)-K}rw2H#pKuP|oPiX-zIwq01?%&uAzMw)5S+@n!bPopzuw3hE{9`MlQk>)W^G|fEKoS@ER zM)RB(npx&Fr-@7RZj-ELo&`-4G0h?(8Oe-|#+FO5QqGRq1(PLBo|lS{8-HCW+L~on zG_P1ybQX&F+??zQrit;%-{l?Cf6#hipOxo!RCRDHU z)>rFn1xI5cyReU=s7bW_2l8idu(wv;3;3~I4%t~QtY>9t&kBv$07`IMWNmdO%;EAG ziPcIJq4mp2SkB_K(!p7IKuacclAukjqFqj;R`xbNc_7}fgN{ZfJ9nwrp>i858rkLO zbhK(4{eF+=^k>O3aFyx_%GxeU9hh`cQRbWs-Yw!io?L9d<$;_u7wNbNn(~o!Nvm&tfe0`yff2FK HQgwd-ow9pu diff --git a/dist/FRCUserProgram.jar b/dist/FRCUserProgram.jar index 96b3d4b8895cdaf016adbc14348ae4d7b1ff2c83..ac275dbaa4d14d8e8b7975ffaad133380d777198 100644 GIT binary patch delta 31026 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 Ij&uh4KgWp}ssI20 delta 28020 zcmZr&2{=_<_ve_e`Cju7389Qh=AlrCNSWuTWNwnFn=*t&U~9qSwGGjDW`X@1l*x8L|{bzSb+2WKBVc-=lNvuoF6o-)_jQzvg-(R)3N z!cGjuoY?XCkx9pI<}tawhaEPAi|qKQi>

GUM4nx^bq?{Q5EH{%eQXmezM4p`I%< z<(1A2a3Qs;H67SGs!sU+Isnl#(5Rbw}%gr%* z$y&zi!=+@FeK)^WPGVm*wJ-V3p6|z#)%|0YOB%-WBNGd>D*djWS)*GJF~U~;>Q+I` z>!2^8u3r)zF2&BJzS39dd9liHju_l8!+YPqgecz)4Oe~Fp3 z;}M6Rnb<2cTX?Dz-IStQC392uD6Yy~8lrG*Gc~TIbKH|R!bd8_{otb7EkmJ-c{fk> z9461aD!(`6w|C_u?p_Z~O;4pajmZbxPkp-EYr8S5SYn-GPyPq~U_qUN$hVHY9&K4m z?Wo-i75*8`3$5PtzKPILDDTgDsmT>1rx&s($JbHExLw&%tM{C3asK(RrD;brMjBOp zH5REX57~9~{^k7s8(KCtZWXV79oeWV*ta3=cG3y2FAB$_Q#W-j7Zph`s2A7tbrD(p zA-HqjnSmX_<7GM#w^FnEpH&~*z4vZJ?6dU&`S#SyO6miT>ij(plB!xIWbaqzZW6ej zqs#elpIP0E!22&>$Zku`q#s1zYP9{W-&HcOjOzvau;-rRF$ z+!~4_;S9l3dnCUy&Bn;Ej4h+P@Oj}C)Lo=WA6geHeF%1 z-5rgNkq*lG%e|jBybpiRXFR0Y^W1h*qQUbRVfAOnNxZMAZ*IqZ*1Pm<-Ztot!J#Mo_Z`1XvbSSfD{Pw$lyxc%uJHW9yYkfA`NAuSY zgeYI91n(`q;?+NW@34~NWxEeAHkU5(-Iaa&Swh_#EwKgBebpjIEhKqg3%0A+O}xR% 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 E0W~2Ct^fc4 From bd8de88276dba513921ab58c235c8d31ec1c7e39 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sat, 4 Feb 2017 18:48:32 -0500 Subject: [PATCH 08/69] added new gear up and down --- src/org/usfirst/frc/team708/robot/OI.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/org/usfirst/frc/team708/robot/OI.java b/src/org/usfirst/frc/team708/robot/OI.java index 8a2603b..c9574cd 100644 --- a/src/org/usfirst/frc/team708/robot/OI.java +++ b/src/org/usfirst/frc/team708/robot/OI.java @@ -39,7 +39,8 @@ public class OI { private static final int INTAKE_BALL_IN = Gamepad.button_R_Shoulder; private static final int INTAKE_GEAR_OUT = Gamepad.shoulderAxisLeft; private static final int INTAKE_BALL_OUT = Gamepad.shoulderAxisRight; - + private static final int INTAKE_GEAR_UP = Gamepad.button_B; + private static final int INTAKE_GEAR_DOWN = Gamepad.button_A; // OTHER public static final int SONAR_OVERRIDE = Gamepad.button_B; @@ -69,7 +70,10 @@ public class OI { public static final Trigger intakeGearOut = new AxisUp(driverGamepad, INTAKE_GEAR_OUT); public static final Button intakeBallIn = new JoystickButton(driverGamepad, INTAKE_BALL_IN); public static final Trigger intakeBallOut = new AxisUp(driverGamepad, INTAKE_BALL_OUT); - + public static final Button intakeGearUp = new JoystickButton(driverGamepad, INTAKE_GEAR_UP); + public static final Button intakeGearDown = new JoystickButton(driverGamepad, INTAKE_GEAR_DOWN); + + public static final Button sonarOverride = new JoystickButton(driverGamepad, SONAR_OVERRIDE); /* * Operator Button Commands @@ -94,6 +98,8 @@ public OI() { * Driver Commands to be called by button */ intakeGearIn.whileHeld(new Intake_Gear_In()); + intakeGearIn.whileHeld(new Intake_Gear_Up()); + intakeGearIn.whileHeld(new Intake_Gear_Down()); intakeBallIn.whileHeld(new Intake_Ball_In()); intakeGearOut.whileActive(new Intake_Gear_Out()); intakeBallOut.whileActive(new Intake_Ball_Out()); From 5df990bdfe81ee7c4c10a14a5c974c5768e88d2c Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sat, 4 Feb 2017 18:55:57 -0500 Subject: [PATCH 09/69] added pivit motor --- src/org/usfirst/frc/team708/robot/RobotMap.java | 10 ++++------ .../usfirst/frc/team708/robot/subsystems/Loader.java | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/org/usfirst/frc/team708/robot/RobotMap.java b/src/org/usfirst/frc/team708/robot/RobotMap.java index 49e402b..3292974 100644 --- a/src/org/usfirst/frc/team708/robot/RobotMap.java +++ b/src/org/usfirst/frc/team708/robot/RobotMap.java @@ -38,8 +38,9 @@ public class RobotMap { public static final int climberMotor = 21; // Intake CAN Device IDs - public static final int intakeMotorBall = 31; - public static final int intakeMotorGear = 32; + public static final int intakeMotorBall = 31; + public static final int intakeMotorGear = 32; + public static final int pivitGearMotor = 33; // Grappler Grabber CAN Device IDs public static final int shooterMotorMaster = 41; @@ -47,10 +48,7 @@ public class RobotMap { // Shooter CAN Device ID public static final int feederMotor = 51; - - // Hopper CAN Device ID - public static final int loaderMotor = 61; - + // Digital IO public static final int drivetrainEncoderARt = 0; public static final int drivetrainEncoderBRt = 1; diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Loader.java b/src/org/usfirst/frc/team708/robot/subsystems/Loader.java index 43aec2a..4ddb3ad 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Loader.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Loader.java @@ -26,7 +26,7 @@ public class Loader extends Subsystem { * Constructor */ public Loader() { - loadMotor = new CANTalon(RobotMap.loaderMotor); //initializes the loading motor +// loadMotor = new CANTalon(RobotMap.loaderMotor); //initializes the loading motor } public void initDefaultCommand() { From bced209fd61de20ffab0882b941dd8b342abca3c Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sat, 4 Feb 2017 21:52:02 -0500 Subject: [PATCH 10/69] pivot workingf --- build/org/usfirst/frc/team708/robot/OI.class | Bin 3164 -> 2920 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 4525 -> 4688 bytes .../usfirst/frc/team708/robot/RobotMap.class | Bin 1211 -> 1214 bytes .../intake_gear/Intake_Gear_Down.class | Bin 0 -> 1145 bytes .../commands/intake_gear/Intake_Gear_In.class | Bin 1131 -> 1131 bytes .../commands/intake_gear/Intake_Gear_Up.class | Bin 0 -> 1128 bytes .../intake_gear/ManualIntake_Gear.class | Bin 1566 -> 1495 bytes .../intake_gear/ManualPivot_Gear.class | Bin 0 -> 1494 bytes .../robot/subsystems/Intake_Gear.class | Bin 922 -> 922 bytes .../frc/team708/robot/subsystems/Loader.class | Bin 1078 -> 1000 bytes .../team708/robot/subsystems/Pivot_Gear.class | Bin 0 -> 918 bytes dist/FRCUserProgram.jar | Bin 1296765 -> 1299838 bytes src/org/usfirst/frc/team708/robot/OI.java | 29 ++++----- src/org/usfirst/frc/team708/robot/Robot.java | 10 ++- .../usfirst/frc/team708/robot/RobotMap.java | 2 +- .../intake_gear/Intake_Gear_Down.java | 35 +++++++++++ .../commands/intake_gear/Intake_Gear_In.java | 10 +-- .../commands/intake_gear/Intake_Gear_Up.java | 42 +++++++++++++ .../intake_gear/ManualIntake_Gear.java | 5 +- .../intake_gear/ManualPivot_Gear.java | 59 ++++++++++++++++++ .../team708/robot/subsystems/Intake_Gear.java | 11 ++-- .../team708/robot/subsystems/Pivot_Gear.java | 47 ++++++++++++++ sysProps.xml | Bin 6190 -> 6190 bytes 23 files changed, 212 insertions(+), 38 deletions(-) create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualPivot_Gear.class create mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class create mode 100644 src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualPivot_Gear.java create mode 100644 src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java diff --git a/build/org/usfirst/frc/team708/robot/OI.class b/build/org/usfirst/frc/team708/robot/OI.class index 059b2afe76df49f7e60180e6647d86bea4ce770e..876fec8153f359c7b55ceba0e2b062599f565e5a 100644 GIT binary patch delta 1276 zcmYk6OHUL*6opSS!_-hT2qHMVs)qI1n6U<9KIWL=$@$ROaLaILwtLz@ z;w}cK7ALJlPrbF|+46Vdiit)9t+(ECYucL{A2G3v6%(yHYss>E+QdZ!4K!MYuh}x`^f%E^xl#T_a_uRw_73jjQw&@MTQ!~+~g4JsO53#A94u)Cw)%Z=k z#EO9;3OUvfpG@e)D-%aiX5tvitlz#aUngE0sL&2!kw#oKP`QnJQ=F%|gk}?$5j4?` z=ID2kZA1##d?1~FM$s_o4XmD{I6FBeUYBHOr6JigvWlywa-L+*S*-SdJgL;9**Oq0{ zmX*?$#nP7Dpp9Ww_;PT(O0wbM44AM&vLxbLLxPRO-VN+o2O-HuGGXsJQr57~Mk*mq z!+sk9Lb`U#u#ri~T1WO5eZn=4C6FBZc^^Z(T6d6xyC}sF>pYAmjPUeP3}6o9m`4{q zO;t@k2)c2d){mZ@hy24J>KC^ZEZVhi4!%?iCVfXI#DxJ zK@6yZR3U+57QaB*NMkDsS%wO>rh&JugSV+4xvd!EtGz^AWslyo0H0V412?!a2EG3P D9;(?v literal 3164 zcmbtWYf}_Q6g>mTz&Jd__>8Y8Dxz@+F=|9j7Fb|q*&)k9LSnMc?hY`p%;4;-haYu;Y43JT67J%8FLm!=%Q6c|%}-Uw`K{zBJ9 z!}oGtV3Y%=XjHv>6ts8?wr>UA20?Qom5B|}6P`Z@(Ws(Ma%J>a@-U|?ORCFA|;KzH20nzILO%TKrpP9*I@*;rg~jBro*RdjN* zMy?zL%&O5VCHJCfW1LwI6r6m-z>M!qPuo66RwMRW#iEE;p ztiSBIPH>g5B%1hHx+&dyr5ECrogKO8zH@w$#{7*-J5d|2L_pSRpX$p|+v zJI$Rp60!)gq6)GJSH)L4zQ#8?Qcpmb<4&#-id`k4jwD7D^#0G8am!SEtK&N{HS-A= zAD9{$b-W@Ld1;GtD}|M4h>EIKrH=8(VF*jkNJa`%$M<4M6N08^ixYW(My};mL2=

5^8NLd- zcyS%%!-J*3uYIB#DEIU6^8z0m=lNZO3&a;A_(kGN5!^$3IfAc{=V}BC`%4il_+E}+ zVUI4oMzF9CMX;DpB7%E}*{9`t*%hT^o0XD1O-k0El?z8Jb5HF25GAgqwJi-g-ED zyhRK6?!B?LGUYIN#P6R9l*zhP99_XN@wrWYwpVa`av8@OR&jDgEW1M>+D@&2OO>|P zdTC@Dq>+e5E?pYw%7L9BY7c3ciPNNMr|rxNo~_!dG-pGa_K?P?8dXWdtO?R~PLrfe zn?zxF=1rn7;31JNg-HU-xrP4+n6!h~jefKla>W UzcPu->_dO@a#EOLQ4YEP06Zl(rT_o{ diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index 9b7793331bf678404c168d4d897a4e32fb1720a4..9b0893ac60b2b0dcac7c7aae6d636d6d4682a523 100644 GIT binary patch literal 4688 zcmbVQi+3DV8UIaQlT3!BSQ@5qiG-H}co1G1A%BDFd_ulXB{eIu? z`|iEpcXu!S_rgU0yYVLtqnJ@~pN2ZjwBRs4rQ&`Kje+oK89kulGa6cgna`^DoCZA* z9#rv=hW0>sSj8h6B7yLziqC6U9SC1g@kI?+2f~+Bd|AWVK=_J^uWDEy2#=|FT*HPy zIH!@z*QEKnhHu~rX}&4qw=_J7Zwu4!2B3GrosQv zQU1xq55m!_cNyov<{n(G;!d(_IBj)LwHGo6o}ow8!%mg9Od%2>%$G5_NM zE>1hvwCOp9l~Zv2i0w?o@@}wn+)2ee)5z}KaYM|pleQOg^GWw^*E6$jEM8V4i0V$- zwkPJ^Q#(Q;(4l%$#x~NTy|Z@h5nqMMtya!6PMar_Mkb?RPwfc9f!?jutALp>4H8*7 z%x%;oj5cLW+uq3lWd-3J^VLcqYAR!8lPe78P@qE&?bDWP*|{;tPMNN2)1Cg>qjGGi zF5wz7W_qWB?X_c!9Eek|&bAb6d>gGJ!(7>B6z*qB=65XL3c(mXR`+Eams zzK9x#ZNX>ZV%;-cFBIEc#-2tz%k``jJ?T7?H}mE#OE!|zU9v8|xMPWO{@_hX*m);q z9<(Gzn(yfLQ^vHR<1~1YcVEc~&|zX+!P@G&e#+Bv1Y4#agB zNUkKRrEI6;L-??Q=;du48P<_PTE{1l(eZI)R9w(e#LGHiVh2>bi9gR z@N!l^MsLX*IwmlwYaZtD@5I94?Dnv5bhqCJ2SnRHB7q;|>eN9}TU=O;b!xYWWHBb^Q`GMYUVGNx^d^`3{)TSVQ7^QfOk!;74&LyoO{YXJ750k^~E zNc6cLQ#iw3fm6o%a|tU?oJQg_%|q>d32Fh&MYM22n?q|6I!9N{p{xM2pzK(Z)GkL*ASCe{D#(-w*1Y zXl3{!4AnZO`Rf>}9XN@8hAPf-G0IRKXIf7(NEwD>imk_hgbwD*4!UIr4>1(td}IOF z6|k9RdwLhJWgfku^#}t6xM(7thCDhjU4a@Yqk3i3<0aJYUIwe7fWB9;bspO&Y3C8q#q*bhbu5! z%Y@ICp$?Xy+Lus_g%pD$^B5^UUIEpF?gru7Mi6<)%lrovS%ZfGl z^%VVjntnY~0TudnPZ_Ge8J{mDlJ}swOtK+z za}oPakY^_b&*PQ?ZY9}<$WRe+Ub6!Q9Q5Veia11hn4d>(mzf2;Hw@Am{!{_J5Z2%l z@7wFxgEvU%%_@ZIN kOMl~a|2u!M`3HX=`6o8vU+BfZE6n$mkIyHmRfl{32jqnHHvj+t delta 1950 zcma)->sM4|6vlsN2IkD1IY3NkE)kasNDkVfAQUVa6GY8RsU^@A3K0m9OID(eUC_#I zIu)f|)NX27GQeSyGAl3XC%d@nV}FUY-*d(@<63=a)|$P~v(NiJ``P=woGV2q3!|5> zojwCpaLM3a26c8Aco+<@ik&*U3^E-MRZqKho;L_Mkr#AcG%y|TlFpDpjsy1S>@^5E z;ANdx45m2XRh@kX(;V=c&g(*(@1Qqy-ZYr$fVT|Ezh9XH1~J}N<{bs!H5leSrS5&D z^PtWl1wJsC$8KdlH26pj&E#X9!@ioor8xPiz!4?=sL~?FRAw5R#OABV9A!cr_4A3& zr@n~)`n<(_rZRo*=L?-<21^-K__&`FI$s*pG3e(jgOhx%%r`oxbVf#7v|ZY0vG*U3 zZ!>Kg6|vml)L6tf%lA0V8upE=I()hlOGh-S=wUL0rM8zo*j_qddnwZP zO*~|K>45E}TJaz&V0)2odnr!5iH0nd*e!yV#5QIXENqu2wb)Qe2K96#$H7f>@{}Nr zE_cp(yn>-Kb}XwU8lGUb{O62F#Dik0w5wT9P;`ex;|!XZD;mpWjjBast*pmd(bypR zT7-48DCv-ysjQuD)^0cJ3Sn1SLkS8kiX>%mIKkZLI3=mnA(0O~_}D51^^!|p8g0m> z?Qv-vlC%Zk@E92ux1MF*I0}R>U?^u%suFnZ+OoyN4zk%Pbw%lj3REqHf+YJ^d$2Y` zg1v5mCp_wOk>boH3RO%=>MqfuvB(LDm$9Sm8$G%m#aEinLoh-wZ17W zPKS<3^N*u*B8?~NPm1!WlPm;kR}afJP}M}FMY_dpd6W$wqQXIU#0grI$GOF#B2Ko& zopGjHRK_W=SQsbQVo{tti>g#h!y+F}NlQoMULBLWbe!38fs{mOKG8@-UQYU!1 zybsl@NHoEURG+5G^$+Km%6U0*7v(5k5=EE)LydA2PO>!yq_N6LUJvc|v4N%&2U{O|I?`9nT&S1IC8!u*w%ztr7B&&ezg+y4bU C;6o<> diff --git a/build/org/usfirst/frc/team708/robot/RobotMap.class b/build/org/usfirst/frc/team708/robot/RobotMap.class index ef2a3135deea071b7495d8eaf51e7c4b8fd881ce..66f369fcd4e3b245a43dc5b1a30bfd31974e7c6e 100644 GIT binary patch delta 41 xcmdnZxsP*$ETaftL1tNgiF;~dk#BxUei1VR1B2pZX-1F9lNg0IcQ6_=0{{@53 zgpGS2Gv-uihNl&&PW(t83#E;JtZKgDLG$s$Enms1G=5Dsn?YFDz6ee5mLHw)K>5$R z{xkBAcIA1v&EVQnM9>f)DWSvP^IBxcbA{fc6Mf3-ahY$(@{s&I@wie^%h(h5Kt`&@ z_k=BXdJw;U7PJEo9>yHp_ppM3hgB3AR)*JJmZ3I5XtaYh4<$VCu#Pbg*D=OW98^eqIYeI%xQ?~iOG*ZzD7Ix!J)JC?jNV}Sk z_cse>r$=_2;vJ;O1H9r_u;Le_I!J$}IE4wa<4BXuArq_fxMFX1@8c>aDaznl!dj!) zvREHrlUYn($P(dHBHW@h_MS`mr!dli(Z{mI(+ z0p0vFmz1eQNt@SGZuXQ;{Ql9w_P?h?XD5H}LUMh`Jk>>xJ?n5Q-^Tmp>r01P+d HN@xE7$*1qr literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.class index 6032c956859e2bf70377264d2c7714eec648899e..d85f64266b273ab93c41fb90cc4ca4ab28a4402a 100644 GIT binary patch delta 59 zcmaFO@tR`;KQk*g12+TDWD#ZyM*hjZ%=WB84D1ZTlP5A;GKx(;&1}ai#lXfOJ(-Wi PhEW6umRBoLOcWFfKR7zQZ>kb)v1qaY-M5P=-HL}R;?bg-vQcaK@V zi3=Qz#DNdsqY%|&$2Ji%TxzPS>%DqiUGwwT_a6Z6;+Bg%F6VIt^Dc6@>foA->$qXf zg3T;CSaPt;F!fMG!fZ37OKW=!nW}7ZhC)q5{CV82bM-2$wv)};v=vfU1&rVd18!nb_?kcTRG+V`K3zyG?k z#o$^YB5a9I)Xw1_cq2CCxkB&Ii9X`ZMC2Q?JR;vCHm+3MG4{mWm9c8@9bv`J{z-oO zIP8W#TzC#{`dGoLk0MG8#mTy>GSViDjCQc*ql|SQ6?i@_z+-qc8T%i1W?13PIC$R? zL4R`OwM6~+WL`nFKR1Tu$-Q3MDbol#qAN`@U53qnyorwM`lB|yt%DZ{%svFYLQe5_ zu~3|zwNk20*0+1Yv1M0hW3tGg4b{c82E;3Z>QD)j!_Ulo=S&A|^H{@EU*mAKEfo%pV z83E~U7yxI6zouv$cu*e)st? zWNL_{ts5XW2S_Km{nY8^3pBB%F$!l$F*l^x7*J%(JvgTcR%uAZF@o%XfZ<}I^wMuM CUF#tL literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.class index 71d4cc8645c8a4340d87dc3cbf5c676ceb07337c..1d107a47add0942f3e99443ea2cbd1ff75c5cb71 100644 GIT binary patch delta 636 zcmZ9Iy-piJ6otRpU3=E+@f!2zfWd(IHx2|am;@3h2#F?5-h#LABT!6%XlQAW5EL#b z646r8(eM!TL6AGk1}sL}JNMq%bM86!#N6e7-aK9X2Ab?f6shHyW+ozLHpd+EnuUlA zi<)}G5)D^;%>H>0gdEpec0aFZK514jepOVZkCJB1uujvk!KS8V*y6LIZrgr6G<;!O zF>jw$)!wW8(2n6N-wbWO8-7qSR4LgKOwH7B_AOaX9Xri#gweM#tO4+vXBfM77@@& z2Zr)C!l($UNH@fPq^!zWaWF<_+}W0PLvE+o^UqxD@zCh;;Jtc~wWi386sbjO7xT7) rC{eL0t61xy(61B|Lb3NUeLdyK)VmbkGqgnMRu4laWl&5eQm6g_)M`3j delta 682 zcmZ9JJ8u(F5QV?H>-DwQH#RsA+ZY_;gakVdCUFuH9^vJX#!Y@g1awG96e(ynZR#ze zG_*7{Hqs(dK#%D88~lJMV(zu&SlpHF&N;Jl=FIG$+$VGR>+<^#V3SuN*I3N5#GQ}= z%UM>qt7(J;G%dZVX@#tD&ob@w&%aV8$5Qug#kyug)9LrBs(hWIX4A06w&4Lgnq9*~ z9>tMrXCCv!u*cK5uUh42hUdI6yrgT`r)Zd`sOZKgel4E%j&tdE?~mTR{h(Oy3D*dE z7RJB5ukopO5J&#&s36AeNu!X)a!(7|!;=V1^Bbx;z)SG^f<0#B&g0u0DW=E?nsvy1 z&m1K|DavE5Rlzo=t^{l|L~53b)p6NzWo1|ye@s;)T}a4&ramAQB!v01a|#3W3^~V# z66Ynd%D%H!LrYvCLru)hijViTRO_;jcLFim;$l^N_5_&9gTO_)} b?wyfF&`ikxudpLdcPA8rk%D5uS*`yAkhnoX diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualPivot_Gear.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualPivot_Gear.class new file mode 100644 index 0000000000000000000000000000000000000000..f5970adcbfe90625ca7c373810aff17c2b872abb GIT binary patch literal 1494 zcma)6%Tg0T6g`~`88S>rL{Jfwmq-Z6pol!h5)_ImP)jTpZm3SuKtnPUXL|7QHM(-+ zMiyA*Lic`+KcMC9NeD<;!KAAD-tNBVp8J{~zrTJ1a2F3Ow4y(W0o<^V!eA0NF=QfZ zp$Wq#au!A~n)v>c9@9^2xAeO)6OM^-hQz#drCMN!XNNZ#j3uuq7}9If6;Hx)UidF~ zzC*r`Bc^+0K^YL=5VOEXGz%SoOrf&nIwpwU0c hm05@AsY6WEAewSVu+IX_5YO3D08KRj>fwlK-yf24N*e$G literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.class b/build/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.class index 8bb3891a881eca46d13840c26f24a886a2ee3f81..18ca0f370ca9748359c8a31c78d7846fd09d9613 100644 GIT binary patch delta 57 zcmbQmK8t-rF%zpegCK*%hfqr&F>hlTsuv-B!ox=C0hH+s)lPIZnr-LRF_`QD;wK56@M0_@x@jMB9C^+r6%1 zUo@|8Tlencu%Yz_hU^A~=8+|eNGyxQ#w9xxue@sY1#KjO#)4Q=JY)!yWl7@DmkGE|Zdqx4KD49>l88gi2$=Gs0wjK|ZYLQ_{Yi*c2io zq*)P+Vl@zQA~5d~9~TdB{ne^UG7L1(dTXC7z6Uvc^PT(eM5%t4sgEA5uIx KZ(S5VzLMtR5 zz>|0ivCg5@h{-&>Pj8kR(%sAg! zlN@P()5^7xwA()tS9f+1WcjuT>Q@cMs|KZtbLYy?uOX5vF9(Psn19 zM5C(W!Fg;=*Q(zNXw7MCA-gQW%rYlz7q%in6|43^6Q95$h6*u9mxRK;0qu-0sO9r|LT6B;>D? zr6O~jNrA#6zS$P~H-afqAcLQ*3yHZp@B!wdbx%Ly;v6RN{g m^4QLT)?A7#A?kNxwFo?89{f#KlI50rNTKfYbV`C7q`v^t4lv>X diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class b/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class new file mode 100644 index 0000000000000000000000000000000000000000..18614ba4fa775cee417a940b786aa4efbdc30a2e GIT binary patch literal 918 zcmaKqZ)+1l5XPU)zw^%6w9&R|)i&BTF`_G|R8WMHpa^LxHWYj%d&$OL$=!zCy@(%6 zPzwrv06&yCn9#)`z6B8s@eu=I~t4BPW1-nm`(#K0+R z6%pWa5!+a1crw55LU#yQc2oXo5b-ltDe6bz2`4V+6F;1IN|w~#I+wCWT2$x{`1C^< zGLC?vJjJvUoePvTk)sGG*H4kD|3vovV&xS1Zzz1BY6c}b7w8KCEA(;|OSq0j%8F-Q zl$R-^&vdT%V3bpBDo_|bUYltoL&uHRuuQiOWtYadL4N%!3f1rMrUC(x0PD2N#z1{5Y9YE+l3_$Q*=&cz+-4)Wg$v|1Np5R~X(GpP<6Pvw%RHQEoGx>d=4G(<7c};< An*aa+ literal 0 HcmV?d00001 diff --git a/dist/FRCUserProgram.jar b/dist/FRCUserProgram.jar index ac275dbaa4d14d8e8b7975ffaad133380d777198..36f12390b1113fa47321162ea04a9a898d3e6760 100644 GIT binary patch delta 29906 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 delta 26098 zcmZu(2{@Hc7kA%lU$1-ZTOtw?5(!CJ%HE1nNV1E{mV}CkqLi_PQY1@KqDV;DT4>)> zTC_|5N~QYF+|iBa`M&45|MC0HnKNh3oH;Y|zHi^}V@|*JIte@5(YXb=xcIra26yif zobF^7docvBZM8o9)dI(+o<8Dja(CZ>6 zJ$bme+=aQg)H4?bPRumpj&ZF(G`@he!LlXK7yl<@NE` zRpW0a-wI+rocVSwZp%-_X19?^D$~5U65kIbPF%fgE;o;W)n&buDXUk_-B7fO5$CnQ z&+82{NIlGQpV}$DHxE?Y1rE>#Er*#Ad`l$N mIM=19No)0j))uaZtWT%6he%j9 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 F{U7rX@&f<> diff --git a/src/org/usfirst/frc/team708/robot/OI.java b/src/org/usfirst/frc/team708/robot/OI.java index c9574cd..910959b 100644 --- a/src/org/usfirst/frc/team708/robot/OI.java +++ b/src/org/usfirst/frc/team708/robot/OI.java @@ -40,9 +40,8 @@ public class OI { private static final int INTAKE_GEAR_OUT = Gamepad.shoulderAxisLeft; private static final int INTAKE_BALL_OUT = Gamepad.shoulderAxisRight; private static final int INTAKE_GEAR_UP = Gamepad.button_B; - private static final int INTAKE_GEAR_DOWN = Gamepad.button_A; - // OTHER - public static final int SONAR_OVERRIDE = Gamepad.button_B; + private static final int INTAKE_GEAR_DOWN = Gamepad.button_A; + /* * Operator Button Assignment @@ -57,9 +56,9 @@ public class OI { private static final int OPERATE_HANGER = Gamepad.leftStick_Y; // LOADER Buttons - public static final int LOADER_IN_BUTTON = Gamepad.button_Y; - public static final int LOADER_OUT_BUTTON = Gamepad.button_A; - public static final int LOADER_OFF_BUTTON = Gamepad.button_X; +// public static final int LOADER_IN_BUTTON = Gamepad.button_Y; +// public static final int LOADER_OUT_BUTTON = Gamepad.button_A; +// public static final int LOADER_OFF_BUTTON = Gamepad.button_X; public static final int LED_BUTTON = Gamepad.button_B; @@ -73,8 +72,6 @@ public class OI { public static final Button intakeGearUp = new JoystickButton(driverGamepad, INTAKE_GEAR_UP); public static final Button intakeGearDown = new JoystickButton(driverGamepad, INTAKE_GEAR_DOWN); - - public static final Button sonarOverride = new JoystickButton(driverGamepad, SONAR_OVERRIDE); /* * Operator Button Commands */ @@ -82,9 +79,9 @@ public class OI { public static final Trigger spinShooterBack = new AxisDown(operatorGamepad, SPIN_SHOOTER_BACK_BUTTON); public static final Button spinFeeder = new JoystickButton(operatorGamepad, SPIN_FEEDER_BUTTON); public static final Trigger spinFeederBack = new AxisUp(operatorGamepad, SPIN_FEEDER_BACK_BUTTON); - public static final Button loaderSpinIn = new JoystickButton(operatorGamepad, LOADER_IN_BUTTON); - public static final Button loaderSpinOut = new JoystickButton(operatorGamepad, LOADER_OUT_BUTTON); - public static final Button loaderOff = new JoystickButton(operatorGamepad, LOADER_OFF_BUTTON); +// public static final Button loaderSpinIn = new JoystickButton(operatorGamepad, LOADER_IN_BUTTON); +// public static final Button loaderSpinOut = new JoystickButton(operatorGamepad, LOADER_OUT_BUTTON); +// public static final Button loaderOff = new JoystickButton(operatorGamepad, LOADER_OFF_BUTTON); public static final Button led = new JoystickButton(operatorGamepad, LED_BUTTON); @@ -98,8 +95,8 @@ public OI() { * Driver Commands to be called by button */ intakeGearIn.whileHeld(new Intake_Gear_In()); - intakeGearIn.whileHeld(new Intake_Gear_Up()); - intakeGearIn.whileHeld(new Intake_Gear_Down()); + intakeGearUp.whileHeld(new Intake_Gear_Up()); + intakeGearDown.whileHeld(new Intake_Gear_Down()); intakeBallIn.whileHeld(new Intake_Ball_In()); intakeGearOut.whileActive(new Intake_Gear_Out()); intakeBallOut.whileActive(new Intake_Ball_Out()); @@ -111,9 +108,9 @@ public OI() { // spinFeeder.whenPressed(new SpinFeeder()); // spinFeederBack.whileActive(new SpinShooterBack()); // - loaderSpinIn.whenPressed(new LoaderSpinIn()); - loaderSpinOut.whenPressed(new LoaderSpinOut()); - loaderOff.whenPressed(new LoaderOff()); +// loaderSpinIn.whenPressed(new LoaderSpinIn()); +// loaderSpinOut.whenPressed(new LoaderSpinOut()); +// loaderOff.whenPressed(new LoaderOff()); led.whenPressed(new LED_out()); } diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index a13edb2..b9098ec 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -24,6 +24,7 @@ import org.usfirst.frc.team708.robot.subsystems.Loader; import org.usfirst.frc.team708.robot.subsystems.Intake_Ball; import org.usfirst.frc.team708.robot.subsystems.Intake_Gear; +import org.usfirst.frc.team708.robot.subsystems.Pivot_Gear; import org.usfirst.frc.team708.robot.subsystems.Climber; import org.usfirst.frc.team708.robot.subsystems.LED; @@ -60,6 +61,8 @@ public class Robot extends IterativeRobot { public static Loader loader; public static Intake_Ball intake_ball; public static Intake_Gear intake_gear; + public static Pivot_Gear pivot_gear; + public static Climber climber; public static VisionProcessor visionProcessor; @@ -90,6 +93,7 @@ public void robotInit() { shooter = new Shooter(); intake_ball = new Intake_Ball(); intake_gear = new Intake_Gear(); + pivot_gear = new Pivot_Gear(); loader = new Loader(); led1 = new LED(); climber = new Climber(); @@ -178,12 +182,13 @@ private void sendStatistics() { // Various debug information drivetrain.sendToDashboard(); - loader.sendToDashboard(); +// loader.sendToDashboard(); shooter.sendToDashboard(); led1.sendToDashboard(); climber.sendToDashboard(); intake_ball.sendToDashboard(); intake_gear.sendToDashboard(); + pivot_gear.sendToDashboard(); // visionProcessor.sendToDashboard(); } } @@ -206,11 +211,12 @@ private void queueAutonomousModes() { */ private void sendDashboardSubsystems() { SmartDashboard.putData(shooter); - SmartDashboard.putData(loader); +// SmartDashboard.putData(loader); SmartDashboard.putData(drivetrain); SmartDashboard.putData(led1); SmartDashboard.putData(intake_ball); SmartDashboard.putData(intake_gear); + SmartDashboard.putData(pivot_gear); // SmartDashboard.putData(visionProcessor); SmartDashboard.putData(climber); } diff --git a/src/org/usfirst/frc/team708/robot/RobotMap.java b/src/org/usfirst/frc/team708/robot/RobotMap.java index 3292974..1f0a428 100644 --- a/src/org/usfirst/frc/team708/robot/RobotMap.java +++ b/src/org/usfirst/frc/team708/robot/RobotMap.java @@ -40,7 +40,7 @@ public class RobotMap { // Intake CAN Device IDs public static final int intakeMotorBall = 31; public static final int intakeMotorGear = 32; - public static final int pivitGearMotor = 33; + public static final int pivotGearMotor = 33; // Grappler Grabber CAN Device IDs public static final int shooterMotorMaster = 41; diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java new file mode 100644 index 0000000..54cbc1b --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java @@ -0,0 +1,35 @@ +package org.usfirst.frc.team708.robot.commands.intake_gear; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.Robot; +import edu.wpi.first.wpilibj.command.Command; + +public class Intake_Gear_Down extends Command { + +public Intake_Gear_Down() { + requires(Robot.pivot_gear); + } + + protected void initialize() { + } + + protected void execute() { + Robot.pivot_gear.moveMotor(Constants.INTAKE_REVERSE); + } + + + protected boolean isFinished() { + return(false); + } + + protected void end() { + Robot.pivot_gear.stop(); + } + + protected void interrupted() { + end(); + } + +} + + diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java index 4985bb4..842380a 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java @@ -7,34 +7,26 @@ public class Intake_Gear_In extends Command { - public Intake_Gear_In() { - + public Intake_Gear_In() { requires(Robot.intake_gear); } protected void initialize() { - } protected void execute() { - Robot.intake_gear.moveMotor(Constants.INTAKE_FORWARD); } - protected boolean isFinished() { - return(false); } protected void end() { - Robot.intake_gear.stop(); - } protected void interrupted() { - end(); } diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java new file mode 100644 index 0000000..b9d8124 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java @@ -0,0 +1,42 @@ +package org.usfirst.frc.team708.robot.commands.intake_gear; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.Robot; +import edu.wpi.first.wpilibj.command.Command; + + +public class Intake_Gear_Up extends Command { + +public Intake_Gear_Up() { + + requires(Robot.pivot_gear); + } + + protected void initialize() { + + } + + protected void execute() { + + Robot.pivot_gear.moveMotor(Constants.INTAKE_FORWARD); + } + + + protected boolean isFinished() { + + return(false); + } + + protected void end() { + + Robot.pivot_gear.stop(); + + } + + protected void interrupted() { + + end(); + } + +} + diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.java index b841e2b..3d8065f 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.java @@ -10,7 +10,7 @@ public class ManualIntake_Gear extends Command { public ManualIntake_Gear() { - requires(Robot.loader); + requires(Robot.intake_gear); } @@ -30,8 +30,7 @@ protected void execute() { if (L_Shoulderpressed == true){ Robot.intake_gear.moveMotor(Constants.INTAKE_FORWARD); } - else - if (OI.driverGamepad.getAxis(Gamepad.shoulderAxisLeft) != 0.0){ + else if (OI.driverGamepad.getAxis(Gamepad.shoulderAxisLeft) != 0.0){ Robot.intake_gear.moveMotor(Constants.INTAKE_REVERSE); } else { diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualPivot_Gear.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualPivot_Gear.java new file mode 100644 index 0000000..6ff36d0 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualPivot_Gear.java @@ -0,0 +1,59 @@ +package org.usfirst.frc.team708.robot.commands.intake_gear; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.OI; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.util.Gamepad; +import edu.wpi.first.wpilibj.command.Command; + + +public class ManualPivot_Gear extends Command { + + public ManualPivot_Gear() { + requires(Robot.pivot_gear); + } + + + // Called just before this Command runs the first time + protected void initialize() { + + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + + boolean B_Buttonpressed = OI.driverGamepad.getButton(Gamepad.button_B); + boolean A_Buttonpressed = OI.driverGamepad.getButton(Gamepad.button_A); + + // LOADER_IN_BUTTON = Gamepad.Button_L_Shoulder; + // LOADER_OUT_BUTTON = Gamepad.shoulderAxisLeft; + + + if (B_Buttonpressed == true){ + Robot.pivot_gear.moveMotor(Constants.INTAKE_FORWARD); + } + else if (A_Buttonpressed == true){ + Robot.pivot_gear.moveMotor(Constants.INTAKE_REVERSE); + } + else { + Robot.pivot_gear.moveMotor(Constants.INTAKE_OFF); + } + + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return(false); + } + + // Called once after isFinished returns true + protected void end() { + Robot.pivot_gear.stop(); + } + + // Called when another command which requires one or more of the same + // subsystems are scheduled to run + protected void interrupted() { + end(); + } +} diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java index 2073756..1452ca5 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java @@ -20,26 +20,23 @@ public class Intake_Gear extends Subsystem { //I'm trying to link the right motor to the intake code here public Intake_Gear() { - - intakeMotor = new CANTalon (RobotMap.intakeMotorGear); - + intakeMotor = new CANTalon (RobotMap.intakeMotorGear); } public void initDefaultCommand() { - } //I believe this sets the speed of the motor public void moveMotor(double speed) { - intakeMotor.set(speed); } + + //I believe this stops the motor public void stop(){ - intakeMotor.set(Constants.INTAKE_OFF); - } + /** * Sends data about the subsystem to the Smart Dashboard diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java new file mode 100644 index 0000000..5a5df8d --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java @@ -0,0 +1,47 @@ +package org.usfirst.frc.team708.robot.subsystems; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.RobotMap; + +import com.ctre.CANTalon; + +import edu.wpi.first.wpilibj.command.Subsystem; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; + +/** + * Subsystem that intakes balls + * @author Madison + * @author Nick + */ + +public class Pivot_Gear extends Subsystem { + + private CANTalon pivotMotor; + + //I'm trying to link the right motor to the intake code here + public Pivot_Gear() { + pivotMotor = new CANTalon (RobotMap.pivotGearMotor); + } + + public void initDefaultCommand() { + } + + //I believe this sets the speed of the motor + public void moveMotor(double speed) { + pivotMotor.set(speed); + } + + //I believe this stops the motor + public void stop(){ + pivotMotor.set(Constants.INTAKE_OFF); + } + + /** + * Sends data about the subsystem to the Smart Dashboard + */ + public void sendToDashboard() { + if (Constants.DEBUG) { + } + } +} + diff --git a/sysProps.xml b/sysProps.xml index 457db8f06e709cd28c725a13f4130d71b5f39b9a..1274c5cd46febc10ec03663bc6e59a425556f20f 100644 GIT binary patch delta 57 zcmZ2yu+CsZ37?`FgCT<}gC&C#g8>*S0C`3XjzGRSgDH@7-8_{~n1$7h!GytL^ID-s FRsch93g7?$ delta 57 zcmZ2yu+CsZ37?`HgC&D8gAtH4XD|Rl1qN3JLm=Cc!41eVVQ|?zl~0(3)fA*?^ID-s FRscg(3fTYv From d181802146fd32b3ca889c92b265f4579efedf9d Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sun, 5 Feb 2017 16:09:23 -0500 Subject: [PATCH 11/69] rs232 working --- build/org/usfirst/frc/team708/robot/OI.class | Bin 2920 -> 2920 bytes .../robot/commands/led_out/LED_out.class | Bin 1371 -> 1107 bytes .../frc/team708/robot/subsystems/LED.class | Bin 2360 -> 2276 bytes dist/FRCUserProgram.jar | Bin 1299838 -> 1299696 bytes src/org/usfirst/frc/team708/robot/OI.java | 2 +- .../robot/commands/led_out/LED_out.java | 10 +++--- .../frc/team708/robot/subsystems/LED.java | 33 ++++++++++++------ .../team708/robot/subsystems/Pivot_Gear.java | 2 +- sysProps.xml | Bin 6190 -> 6190 bytes 9 files changed, 29 insertions(+), 18 deletions(-) diff --git a/build/org/usfirst/frc/team708/robot/OI.class b/build/org/usfirst/frc/team708/robot/OI.class index 876fec8153f359c7b55ceba0e2b062599f565e5a..c8d7615cb380fa9c224853ce74f595e5adaa9e29 100644 GIT binary patch delta 20 bcmaDM_CjofAt$5dW+TogjEroP#km6kO6vvz delta 20 bcmaDM_CjofAt$5xW+TogjEt<4#km6kO3nrT diff --git a/build/org/usfirst/frc/team708/robot/commands/led_out/LED_out.class b/build/org/usfirst/frc/team708/robot/commands/led_out/LED_out.class index 18b3f2ade3fdf765ad50933f350c744ca3f53d16..d1f48aef9732691e0d68e522d1802c915613b951 100644 GIT binary patch delta 556 zcmZWlyHdhH6g``4SP~Xgd}0WS3i6T$hmoZti*9{RzIyPccg7t#sygLq!8XaF)}o6l*FGtLd{F z#Wmj5;1WYf=BOaT4m&epa2I<#CF)xa>mfh$PrMNvl7Z6ZqHPgHPTbFl51cl{`T|lu zEg=_hV%95oh151nkE#1~9$J$1T=D>i6sl5c#M4MR^3|XfW^6H?oXJPZnAsNb|1~BS zvsmLeXHGItZ?HnC2p-TLxZ_jJECDaGF5@H@h&GV{&t0M^je@X(H`p~c%bflJe3mAj literal 1371 zcmah}T~pIQ6g}Gy(x!nbB8teDh?G(r5QHKO51=^ARGkrr2VXEv7g$W2nr!^~HU0o! z#F;wdgFnFE=R9Zc)caW{(@+|w|t zBaK3qcII>xF|WRrG~CxvW=Pv^(3A{pm!WS%G=Dpl7zG6Vlmc)m0bJ=>JrYOF3)OwX;k(zM-1!)n%j z)8X|4H;`ua$z%0iXV6u4VL9S6<UA%vQ_ezR&AK@-;*Mp0w<@&#YFIR~P;c z1^UP801>AnN!}zoCz_IbUeJ>2OJ>7%qU!WLH}Gt}BUCL$l)rppy|)YuAg{qRuz*Da z53r&6-eQjPpt-TS#<-es2DKNuVKx=Bdi;^jXc9jZ;XqyVVL3d!2Hk> zW+*FJj;NiSiD_qR0`j!XD;OHS;vM_g_NQo2p5u&}EJq0~F={{_;- z_%t{N(mf!3LX3S((Phce?IL{DP_i_#X-sInLf$44WC2F;2UzhGi8hko$WP!ZtpiBX zI*JtaKZh|4s*~Y)T*DA~DO``S=E+xB>>Qx4voX~b$l}1^IMAhZ2@0GzMJnB+*G<9%c_R-2K_mzoARr(p$V<>5C@3f>1PS305=??FQ?4vmRw}=Q zP(@LerF*yj1%HQS&jkaUIdgitd(P>(_q6O!Y3A48Z$E%u-kbD$xypctdImjIbI)YR z!!Y+fJYd9&lTjUh=wXa;O(!&+)XS8YM@;M3j9wnQdEzC+tedA^X*Z|IyiR;(^4w&> zz>GyU*Aj=>uK{B*`*Y20?x&*3NO<$O-sm@cZTJ;0XjIhEm|M5CW?m|md1dlivC11o z8*ddg)S9d*!fYtsv8iaLMbX4{lZaxAsA8KP#V&q>qR`|-Qz{ZqH>DFMdx{wQ25uca zNF>ubKdwk{ptwPcL1!Wv4IHMnc9N-duFqDUo3d{>9ecCO^T$W_sIAudF}ahD7`Xf^ zV>9hD2F|V6VQSkTnEPa}%4J;>l@&~ErcI1mfRqk)BVawi@g%Kdf?&Q;5(!G%Yg zkex?6wNTVsC{`>KEf%(NQ_zVa-u<$+3p>D+9rWZD%#KVRWw$RL3Ab@e)>`S0R6C^7 zD^<->*CBP?bP0kwtEH3M!VK;ZIPd#KYU~mV)*a)^<2$8zR(D?wI@Ys`c|1ZKCtO*Q z?Fl7irTQ=v{CrB;(#8D^qE329uU?Aiqmq7kn*mWXOb;WLhNiQ7&Nb-lF7YpqC0e^B z(Uu@Z`7wZjTrBP({$(fD2!jXq?$Y0^) V+Gvf8!pV~01Hl!+F~RlGntvgidIbOg delta 980 zcmaJ=-BMCf7+o8X!#QjdQBl(LsO2A)mYSwfTAG=dl_lAqVW9a3c0}!ti!Qn>hd1a2 znqY>QYI=a4qX+N_n$|v=S{Ds7dwqZV`_{Mi;b(c#pZW3Y%Xa|1c&%a3Kplp3n7FK? z7GVunbX>)-juBilP=f0!JgQ?1H*`2Kq_832TZwJQy4GUJrLLK@wVYg% zc%_mZuq4{hF5r!fjhdT@WZF!pG;B(wu_aKcqE@0g7B?5I)Vdk7;#JpaKNc4TMV)e-NGwVY1uPZy|ai~LJzsC`1f zuoAKOe~V@XdZbjDHmac@ekz&|Lb~bWRVhIHI4)N@yw+M|E z(3#zHhccgNIdGO|fOSA4Tw0Tm8L4~g1qY5T zT6(zX#lub^)+yP<5nZ<(2p_vB4la7w@{iuFb`{`tQX%b|Cy$e=g|I~r8#aMDu3S%R hfC&dzZ6Y=?X7WuMhlBiEmf$IIgcu`^5f_JpzX44Oj&T40 diff --git a/dist/FRCUserProgram.jar b/dist/FRCUserProgram.jar index 36f12390b1113fa47321162ea04a9a898d3e6760..ead9cd06286175dc2a6d2e19c7b4014447de9430 100644 GIT binary patch delta 21686 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 UDBZ$zn9ElsJ44?gB3^0we{Jidi~s-t diff --git a/src/org/usfirst/frc/team708/robot/OI.java b/src/org/usfirst/frc/team708/robot/OI.java index 910959b..eb0ca92 100644 --- a/src/org/usfirst/frc/team708/robot/OI.java +++ b/src/org/usfirst/frc/team708/robot/OI.java @@ -60,7 +60,7 @@ public class OI { // public static final int LOADER_OUT_BUTTON = Gamepad.button_A; // public static final int LOADER_OFF_BUTTON = Gamepad.button_X; - public static final int LED_BUTTON = Gamepad.button_B; + public static final int LED_BUTTON = Gamepad.button_X; /* * Driver Button Commands diff --git a/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java b/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java index dffae26..0b3f826 100644 --- a/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java +++ b/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java @@ -34,16 +34,16 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { - boolean Bpressed = OI.operatorGamepad.getButton(Gamepad.button_B); - - if (Bpressed == true){ +// boolean Bpressed = OI.operatorGamepad.getButton(Gamepad.button_B); +// +// if (Bpressed == true){ count++; Robot.led1.send_to_led(count); - } +// } } // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { - return false; + return true; } // Called once after isFinished returns true diff --git a/src/org/usfirst/frc/team708/robot/subsystems/LED.java b/src/org/usfirst/frc/team708/robot/subsystems/LED.java index 7344805..b44a493 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/LED.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/LED.java @@ -27,28 +27,39 @@ public class LED extends Subsystem { public static Port port; public static int buttonvalue = 0; - public static byte[] msg = new byte[4]; + public static byte[] msg = new byte[8]; + public static byte[] msgread = new byte[10]; + public static String messageback; public LED() { - port = Port.kOnboard; +// port = Port.kOnboard; + port = Port.kMXP; led_out = new SerialPort(9600, port, 8, Parity.kNone, StopBits.kOne); led_out.setWriteBufferMode(WriteBufferMode.kFlushOnAccess); - + msg[0] = 0x00; +// msg[1] = 0x55; +// msg[2] = 0x00; +// msg[3] = 0x64; +// msg[4] = 0x00; +// msg[5] = 0x0A; +// msg[6] = 0x00; } public void send_to_led(int command){ buttonvalue = command; String message = Integer.toString(buttonvalue); - - led_out.writeString(message.toString()); -// led_out.write(command, 8); - - messageback = new String(led_out.readString()); - SmartDashboard.putNumber("LED sent to", buttonvalue); - SmartDashboard.putString("LED read from arduio", messageback); - + msg[0]++; +// led_out.writeString(message.toString()); + led_out.write(msg, 1); + led_out.flush(); + +// if (led_out.getBytesReceived() > 0) +// msgread = led_out.read(1); + SmartDashboard.putNumber("LED sent to", msg[0]); +// SmartDashboard.putNumber("LED sent to", buttonvalue); +// SmartDashboard.putNumber("LED read from arduio", msgread[0]); } public void sendToDashboard() { diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java index 5a5df8d..845d083 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java @@ -27,7 +27,7 @@ public void initDefaultCommand() { } //I believe this sets the speed of the motor - public void moveMotor(double speed) { + public void moveMotor(double speed) { pivotMotor.set(speed); } diff --git a/sysProps.xml b/sysProps.xml index 1274c5cd46febc10ec03663bc6e59a425556f20f..f455fe4c5ce97350f587a43b6678b8a986de4e34 100644 GIT binary patch delta 158 zcmZ2yu+Ct^G-gg$1``HH215qp$rqWdH{W6oV&yktFlDe}Z~{tLF}N_8Og_kAy}69@ zAB(94gENB>g8_pD5E=lX0+??MR1T7HW-tbd05t%$x&YbEK+=>!VR9gg_2wshZ!vFvP delta 154 zcmZ2yu+Ct^G-h@)1``HX2A9c!EVi3(F$b~o8!}ijSTPtf7ywB(2Fu9@IjlFAasFd5 zH3JH|0wtY*QXr@R Date: Sat, 11 Feb 2017 00:29:04 -0500 Subject: [PATCH 12/69] Intake and Pivot on IR sensor --- .../intake_gear/Intake_Gear_Down.class | Bin 1145 -> 1221 bytes .../commands/intake_gear/Intake_Gear_In.class | Bin 1131 -> 1381 bytes .../commands/intake_gear/Intake_Gear_Up.class | Bin 1128 -> 1232 bytes .../robot/subsystems/Intake_Gear.class | Bin 922 -> 1269 bytes .../team708/robot/subsystems/Pivot_Gear.class | Bin 918 -> 1488 bytes dist/FRCUserProgram.jar | Bin 1299696 -> 1300351 bytes .../intake_gear/Intake_Gear_Down.java | 7 +++++-- .../commands/intake_gear/Intake_Gear_In.java | 15 +++++++++++++-- .../commands/intake_gear/Intake_Gear_Up.java | 17 ++++++++--------- .../team708/robot/subsystems/Intake_Gear.java | 6 +++++- .../team708/robot/subsystems/Pivot_Gear.java | 16 +++++++++++++++- sysProps.xml | Bin 6190 -> 6190 bytes 12 files changed, 46 insertions(+), 15 deletions(-) diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.class index 9f413b11cafdc3849c5cd1e617d3a513b1b2406a..4d05efa1f2f49f4c729a5fead66ff26be5364d93 100644 GIT binary patch delta 593 zcmYk2J5K^Z6ot<$k7bu((FGKgMM3ca_(U5`w6HcNYH5SSM52X>L`!}Hp|i3vHa22H zVdA5)@i+J*Xl;yVV6!lrJ+pgf?sx9Jzo9Q<_xtbl9l!?4CL|mK8BCc7W7 zk1o%-RA5#~UY*bBnAfq;+^g{5eQQVCh(tD4-}&!jg_ zn$s9z%z}?B?xw?YEAzGk|Z@h delta 509 zcmYk2OHzYC5QhJOkO`9^#w5lVOyc`NqAt`b%Z&%n19%FrkTX!6!JV6E6$=--a^q24 zxp3pg@^3+4D0+aN@9U=D{O`u)`_J57tTCy-elo>nuz^hpTawz= z*wNUHukPcoo3=%uv1hT51B*jM$*qby8dHlIjx3H5Sgay=iq*ABKAf;Cb!63{K$x+W z4BXLtiQigq8GY1Prpc?#H_Hmrx{ diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.class index d85f64266b273ab93c41fb90cc4ca4ab28a4402a..d9a523244d086fefe3f2726abbc2acfce4ba3e68 100644 GIT binary patch literal 1381 zcma)5T~8BH5IwiuvUJ%}Y!w7VseF}!EXt?BXiN=;q!=TH2Vcmxy}*Tbx9;A>kDuZn z@WmH>sEH5$0DqKm?(Wjo#8h79o|(OK=IqSeU%!9+1h9^W1~Ryv#vM!>Fi}wGu7MfM z>X=jKyfO<0iV77KGO?(mq+^L;;E`~Ie9Vw6E*>&yWw*{5vK8U*7eTYiz1McNL6Ka= zt=Wx3+Y`!b@l$X`l0> z6K;FfUWA_$KH7737z`yu*bVWK%IW+)uLY7&=0MuD^L@J&*EEE`OE>*fUJpgTA!i5dss1HVb#QaJkYUbQd7qn7W)5G z*>!wrJJL6?flU)zif!A(1hNcI`{!PvAq;c89$4>M!iw5Ts3EFnm(8@wQBxUa`qz4; zMi6!9viA&||CyK{RQ(UW;3=r-?C|&PHkT?Fr=IA1>bk2OIRyD3s>HkZi`{<%G6y&D9}^N&?^K6 zz|=yK9U*TI2|_@=^c}494T(0AbZB&ZrEmh*$mXDt&5#|&5T)iQHAfLMN<|*m$pF delta 542 zcmZ9IyG{Z@6o$Xq1!mbDE`lI}a`DcBg%K%DENtw20w0BEAo~cmHd&LWB=>$dc~?JbBDZ1E^GnIpZ_OA8vnbI} zKp{L)Bh@vY+`z=IsQ3kMf&VPEM@h7dFB+1Q{z&@EwsX}_g{o9Jwj66DwPmR_z=lC( zmT@ZQtU2dYa%^KD15_5|*MLwaff|~6h7mYMoo#X2pN!?S49|bEx}1L%-(J=9XKnohN7N>Z diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.class index b3ab317314be377e8bd99568adb58c6fc4d11596..bd759a1f4d4fab0f96fac2b7a1c7a61becea6004 100644 GIT binary patch delta 607 zcmYk2y-osA5QWcO7M5M^f`TA|pr9avpv0fv#@J9{WrtWuv@nr`k_WINRN7kD(0~br zg%4n*k6`Ch7|&%luzRyJyEAjXxii1PFZ1N{@BIV75$YB!q)n_NW5Gn$!Ui@CgZhhYH@mI&ZKHL6(Ym@Dd^eIINCP_(CG1L+Q8BP5QAJ`{6XmEx4f_%Y zkP@qq0;j{e$i6*_l8~X!!&&dT+3R%MH^Z@(iJ82LdIAt2mDV2qXqkSPu`qnJ7IbD* zF2X-mq3jZt>2*XM4ZkaVRZfg)G>RQ4C|d}{To{`RFWE*3Qxj-Y=+Cex=xdQF06h%)bgwCfC6v0nK5fwDxz*3nr)vdS&Swo5?ICY{{W#GWE<;b}k&`nsr zCNU&cx!vi0_q?0;8GQQ}AHT0}z!m2q0XqS^#34R=nqJ602Uhy_1fUj31h>A$j~8D%+mYW%e(T_;>(HKzBI8<9fcr7%_4An^M;(Q z;fjXTFmlt7Z)B&I+N33GjrH6k`?0+CPCbb@Ql3MRl9f^MZ`>%2Q)y$3{xeQ9!?XT* z4hRK=#MX2x5Wj@9*|dqJW+JPFIPRm>O8dCtbV{d;qHtapPA%;->UsJ*8$a*fm)Q&| g3|%t1CF8PScu9s{{eKP^%9utKfL8z%Tg#~1e|%FRmjD0& diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.class b/build/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.class index 18ca0f370ca9748359c8a31c78d7846fd09d9613..12a551752f4a2a75c0c283a073d1942af4bc6df0 100644 GIT binary patch delta 660 zcmaiwPfrt36vcmUrt+A{v=ppBYbnKowjiLkC&A^PT)6N9n6T!Pur=OS{>_5KNoMBUch5QZynC$Ao#vmvzkUM^<~0?UG~=2H z%|jQPM-CoUgK7?wOu0N}x~G{HzC4;4&FsPSSxN8u;mg49DC}zOl_I?!`CD&R{r4OG z=G!2)RA6W6k6)|Ba+W6^8Tve)lGi-*sMFBQc|7NZq7i>qrT9#(+KP(cO25M0?zBGy zQO9rZDdtuTBOmT>h9AQyco)vLuDc70y6G<8+Lc&4LA1QqYKM`(w-t25wiuHursXyY z%j6Q&BUs|fcOYJ}D!X^(EF(LBAyN!WCr?f)PZ%)3JqG2kq}$a9p6b?e_FaI5F)*f3 zObFGra99k@uv4q>$#7lKK$%_%X9f*+Yv+;=4h8OuLW$pqQ3_{WqL~S$AN2mj$sB$m zcL8&_Ma<3D69Ahicmhwr8BFg?JcNmHVT=dx0-nUJ zv8DkX7jC-ib*jEs{ps%Q>HF8q8!%;J*-vmBSaM4*A*SzGV^FF?%g}OkclqH9a}%em z`v-H;NExLh)KkW^3{!t=a{n6D{V2N587S?+Mk@q6E}}xmyXEpWrsFa+zFLT2n4^$4}HI&sYIw3qqnB zdaBzGly;cif})J-b;L2M7s|_Bh*p*iyll?}g>{ F_ZvCB9ti*d diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class b/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class index 18614ba4fa775cee417a940b786aa4efbdc30a2e..b9cf38b8408aadb0d538b7bc4d16aee18b0c187c 100644 GIT binary patch literal 1488 zcmaJ=YflqF6g>l#ZOc-yC_Vr!@+zP%F9odcHX4&+3?&%(LZLl~B#49^Ia82E8M)aYp81Cd{ zaNyL`z8fg*><1-B3+}Bgt~-G&O6{mxQN34Mc*=QY2<<%=JfPW0Gdd^sd99+e((|}q zW{7#RE}E1h>6{^TPF01VBbH+rC}>`Kx5=wb3jMBnc2q7Lxw>>1ir8hK-j=AhdJ&~% zl_V+Qm$zk(tHYw?0l~!!vKExYGuP-FJY{zKEw6Ki*|SAurLQ#iwX$&m7a7j~w_S#r zvmv(3c1Vgr$k<3?*us4q4{+7S1a8=vG~pq}Z9FpBW87f45E4!8%ixGqq*SQf!V?=$ zk!>FbqAmg@n#T+)XEW*Q5UoIzYtB*CbsEl6R&k4O9a3t%atbY9>D{DX7^f!B9uo>~ zJ^kw=ri-?*5C+Po3c|(4K{cH#OXq!E~>hAaLfA24J zy+74n+Zw4c^JAR?8wBE^kVQnX)BzG}lbCLUY|=js$Y^q)DdRg5uakp~!ZyXJD-B!M TF@Oy+G1CD(+J>G9w=nw`MhY=_ delta 441 zcmZ{fy-or_6otRpRmNS`6;VJ%`9~5Bl_r$N&eqP_#3#_wgl8a|_zKo0hJr*Nz{>W5~U^$G5II=V>&6to@#0G7rI+m`bH@W`GZp>|% zu$jG?i&8>AA*PscOvP}PO-v(u46Zui{oMm?r6aKofip?1ODn50&7Q;VcuQ}o@K9xq z8r$qq(v-*nWzA*XhMh%5`qa;QdyxomfPy#Ib3yYH+@<1{$#tnUZc%jdN?|a?3NT(0 zV%^YG-Ik|R{TwYR%BWsV9HV-^yxb$vTuIMM7rZ~Xo^btKsTIz!zk-bZ|IRR%{Qb^> I76#P60gHbh3jhEB diff --git a/dist/FRCUserProgram.jar b/dist/FRCUserProgram.jar index ead9cd06286175dc2a6d2e19c7b4014447de9430..44ed8c944bbe83d6c143d454459fee8e7832600e 100644 GIT binary patch delta 23393 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 delta 22801 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 B{&4^R diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java index 54cbc1b..1107d4d 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java @@ -14,8 +14,11 @@ protected void initialize() { } protected void execute() { - Robot.pivot_gear.moveMotor(Constants.INTAKE_REVERSE); - } + if (!Robot.pivot_gear.isRevSwitch()) + Robot.pivot_gear.moveMotor(Constants.INTAKE_REVERSE); + else + Robot.pivot_gear.stop(); + } protected boolean isFinished() { diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java index 842380a..6a09ad8 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java @@ -2,6 +2,9 @@ import org.usfirst.frc.team708.robot.Constants; import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.subsystems.Pivot_Gear; +import org.usfirst.frc.team708.robot.commands.intake_gear.*; + import edu.wpi.first.wpilibj.command.Command; @@ -9,13 +12,20 @@ public class Intake_Gear_In extends Command { public Intake_Gear_In() { requires(Robot.intake_gear); + requires(Robot.pivot_gear); } protected void initialize() { } protected void execute() { - Robot.intake_gear.moveMotor(Constants.INTAKE_FORWARD); + if (!Robot.intake_gear.hasGear()) + Robot.intake_gear.moveMotor(Constants.INTAKE_FORWARD); + else + { + Robot.intake_gear.stop(); + Robot.pivot_gear.moveMotor(Constants.INTAKE_FORWARD); + } } protected boolean isFinished() { @@ -23,7 +33,8 @@ protected boolean isFinished() { } protected void end() { - Robot.intake_gear.stop(); + Robot.intake_gear.stop(); + Robot.pivot_gear.stop(); } protected void interrupted() { diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java index b9d8124..b3e7e16 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java @@ -8,33 +8,32 @@ public class Intake_Gear_Up extends Command { public Intake_Gear_Up() { - requires(Robot.pivot_gear); } protected void initialize() { - } protected void execute() { - - Robot.pivot_gear.moveMotor(Constants.INTAKE_FORWARD); + if (!Robot.pivot_gear.isFwdSwitch()) + Robot.pivot_gear.moveMotor(Constants.INTAKE_FORWARD); + else + Robot.pivot_gear.stop(); } protected boolean isFinished() { - - return(false); + if (Robot.pivot_gear.isFwdSwitch()) + return(true); + else + return(false); } protected void end() { - Robot.pivot_gear.stop(); - } protected void interrupted() { - end(); } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java index 1452ca5..7e7977f 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java @@ -1,6 +1,7 @@ package org.usfirst.frc.team708.robot.subsystems; import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.RobotMap; import com.ctre.CANTalon; @@ -31,7 +32,9 @@ public void moveMotor(double speed) { intakeMotor.set(speed); } - + public boolean hasGear() { + return ((Robot.drivetrain.getIRDistance() > 0) && (Robot.drivetrain.getIRDistance() < Constants.IR_HAS_GEAR_DISTANCE)); + } //I believe this stops the motor public void stop(){ intakeMotor.set(Constants.INTAKE_OFF); @@ -43,6 +46,7 @@ public void stop(){ */ public void sendToDashboard() { if (Constants.DEBUG) { + } } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java index 845d083..d1fbda9 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java @@ -1,6 +1,7 @@ package org.usfirst.frc.team708.robot.subsystems; import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.RobotMap; import com.ctre.CANTalon; @@ -28,7 +29,18 @@ public void initDefaultCommand() { //I believe this sets the speed of the motor public void moveMotor(double speed) { - pivotMotor.set(speed); + if (!(Robot.pivot_gear.isFwdSwitch() || Robot.pivot_gear.isRevSwitch())) + pivotMotor.set(speed); + else + pivotMotor.set(0); + } + + public boolean isFwdSwitch() { + return (pivotMotor.isFwdLimitSwitchClosed()); + } + + public boolean isRevSwitch() { + return (pivotMotor.isRevLimitSwitchClosed()); } //I believe this stops the motor @@ -41,6 +53,8 @@ public void stop(){ */ public void sendToDashboard() { if (Constants.DEBUG) { + SmartDashboard.putBoolean("Pivot forward switch", pivotMotor.isFwdLimitSwitchClosed()); + SmartDashboard.putBoolean("Pivot reverse switch", pivotMotor.isRevLimitSwitchClosed()); } } } diff --git a/sysProps.xml b/sysProps.xml index f455fe4c5ce97350f587a43b6678b8a986de4e34..8a2244f8cf90eb853de819818ce46be3c68cc423 100644 GIT binary patch delta 154 zcmZ2yu+Ct^G-h@)1``HX2A9c!EVi3(F$b~o8!}ijSTPtf7ywB(2Fu9@IjlFAasFd5 zHDj<~aAq)Oa0E($paO#nP_HusMBEan7$V}tU0g|o^3P5wMH$UNf!^G~&5X=z5 jU^@Arh~;Dfp&6_uKt%?d*9xgJvVx_664slAL}XY1&xIgJ delta 158 zcmZ2yu+Ct^G-gg$1``HH215qp$rqWdH{W6oV&yktFlDe}Z~{tLF}N_8Og_kAy}69@ zAB(94gENB>g8_pD5E=lX0+??MR1T7HW-tbd05t%$x&YbEK+=>!VR9gg_2wshZ!vFvP From 6685d45b16e18481a071ea83922dd292a5d295eb Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sat, 11 Feb 2017 14:56:23 -0500 Subject: [PATCH 13/69] hood added --- build/org/usfirst/frc/team708/robot/OI.class | Bin 2920 -> 3241 bytes .../usfirst/frc/team708/robot/RobotMap.class | Bin 1214 -> 1242 bytes .../robot/commands/shooter/MoveHoodHigh.class | Bin 0 -> 1061 bytes .../robot/commands/shooter/MoveHoodLow.class | Bin 0 -> 1057 bytes .../team708/robot/subsystems/Shooter.class | Bin 2135 -> 2454 bytes dist/FRCUserProgram.jar | Bin 1300351 -> 1302117 bytes src/org/usfirst/frc/team708/robot/OI.java | 14 ++--- .../usfirst/frc/team708/robot/RobotMap.java | 2 +- .../robot/commands/shooter/MoveHoodHigh.java | 51 ++++++++++++++++++ .../robot/commands/shooter/MoveHoodLow.java | 51 ++++++++++++++++++ .../frc/team708/robot/subsystems/Shooter.java | 15 +++++- sysProps.xml | Bin 6190 -> 6190 bytes 12 files changed, 125 insertions(+), 8 deletions(-) create mode 100644 build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class create mode 100644 src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java diff --git a/build/org/usfirst/frc/team708/robot/OI.class b/build/org/usfirst/frc/team708/robot/OI.class index c8d7615cb380fa9c224853ce74f595e5adaa9e29..87ab087111d4d69fae44397ded8832db2a70cf25 100644 GIT binary patch delta 1368 zcmZ9M$xjqP6vn@vt%jObK}1Cb1k^!sMO;ykMHzHt+!5S`QE(eqaBo+@eQEXV!GoR* zGl`Qh3DKMJqW^$*ubxeeUsbnBD~EdTH($M1UGKf($K-d#)|cO-V*qOLN}xxg2FX0k z#Swv{5&bLOH6l8xvVx{5x6Q*=IGZ1u1i!PDPTz$xS@93RLd=a+X8nas&H3eP@)<` z0>csuFr@T*YPqkL2LcaAKJPJ#@?wcZ%Yj&1Ys^4c`|(6arrZ}W3d6mrR8Oq$Xs-dG z+<0ohuJn&ay0FK@Cd3Ui+9Uo_`*omvVjFM!$i!njF|qX@N$fmrVjJSN6^MlrUMb)H z6(|aAM!SKgzljPH7g(65CZ4HGTfCauUJ#~kVms5l4>tHaXnzLlBG1+4-70sTPV_BU zP_Q}GpNzQ|FwvSCN(^f*#{(!qvC2fRSS6#KhUHkn2Cby;!z%J> z57&{`cz7+j-op*#bskoFqlcTw&5AA00WF>lDqy{b)qxv4tPW`Pa1%c~_8+%-crEpf z9&R9W3}C4nvyJ-Z?69_MowghXZ8-tjvUS?BjM}o2+OnA1vZdOxo7%E*v_4jmW5;zb z={x-NfT4L=_|mZ7<{h!pD9xd)GmDuYP?AP@4i$t-!ibLF$F&9~*S&nd2l*5ap%jPt zLb_SL9u_LeDec1nzRwdlhf6q*LG)ukBTVNsY6nSSM!H{Olrfk3`)cK2bOy4RoxvRC z2DKZ_p{g^DIpHkkW#G@DS`oGR8RWZKen^YsT#-a^k}Gm61BFY>Pm&HroupH8Siq!K zlv@{Ou*enNtc#tjQ77vXS9DIC=8}_@)l;9U((sIORWt*tX!V%Dbq4>dm0&Ula2A?a q$Yy#iNU&`CI8(<_xrr5vV~BI`ik*DJCz|F{`N)@Iu*#}~-G2bDHt_ZU delta 1171 zcmZ9M$x;(h6o&s!Lf>$0G^m700%24@kU2q%9UGC3t^6Q_^UjQ`XmB1B= zY7C{L1j7O&5&;ZJT*au`xh60s5p?8nfeDFi4onJ6No;puTHv}wrV6})n<{WdU{)f_ zkrM)Q5;+dc3oLX?M%tK`! z2|V8TF{D`oKA&dJ`acExaLzynVrD3<&ioL_+|kWyNdr%?W}tg(KTAJ_n1&8>!yhrf z>*?mNK*Zl=%W=IEaSiPrDQ8#jGJn)l1J6{NlmF|&{FWBhPpgbAZdj&Sp=ap5YOCpA zrtHMj{uT ze30Da;X~xZ9&RSLcv$I2Jlsk?syOK>aLjW+1swOVDtN-fsz95ETloO(9&RRc#P$Pm zR<`HtY|q))o}=ctd609qH#i;JvrV>Vr)9qm4rWqGKCb&EreV#q$?E}u1KP|+ZB0~nsA8)NYbIG zofX+BR4{3jC-+*|=W1@!N+)SlB^|a<<*H7_Jk<~lsv%9tpxwiNh604y$WpeUo{eoo f7kc@=jBpmSyqBw_bvF1l8}OFR&~TY?J`DZ^M)bfY diff --git a/build/org/usfirst/frc/team708/robot/RobotMap.class b/build/org/usfirst/frc/team708/robot/RobotMap.class index 66f369fcd4e3b245a43dc5b1a30bfd31974e7c6e..0eaa2931120b6ebce987872fda3631d2d6fe8207 100644 GIT binary patch delta 255 zcmdnTd5cr@)W2Q(7#J8#7_7M%m>DeC87$cutR{*&@pES6=chR4rRStF1LYYuhFUUi zp3G>;$gIy`F!?-_E2H>iQResc+zgTo$_%Uwj0|i*RZI-*K)wnRpA*PeMdGUg`RYh~ z4Ip0=iLV9ZYa{V>fP7sfKFB^j1fLIRAtMk19R(x}CpWT)sT%T4!9Nh`_Vi(pRQ-C!LE(8}-fF)=Vb|7A|%I0zp zFYsR8u5$6~_pAV{v9CcRv)EbW*Z5eTGclSI+;5VLo?=#f)Jd8}qQ4i57TPcnM0}y( z=uY4+-3#2O2Z4ul8hAvH11Iz(u;nHJZ(z=WgD=9>CVfCkf5UFu4@%39Jq{UJUibv^UeJH{rv}kC#Z20u~@a2-DL#l!17qPvySW-FFF z7bS29D=t=X-^Ci%9XxPR!G?<}xQnac42}PofMHE`Bk_Ky#6$t|`l@|$Hn-TF%+Iho zo#l;Hixh}uV%YkJuqJAok0zA95v_@|q-HUY?;;gQT1>stoZeaM44`3`zd60VzuAb) zk5@^jQ+YYQAQS2#mg&Zdbca9z%x-|}3`IN0kO#QcZ(!B0$c&KvLU9Hz*~`e1y^b6f z==CBl*_V^|l$)g}hq(l+MzO_W=Kz)rSV|SLq_CV6ZpTe<;x9YDM#!BbaLR$&FJUEx z!V{EvTpF$qe*lm7)G7b~ literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class new file mode 100644 index 0000000000000000000000000000000000000000..1c63ac75c012e8e224d79cc91382f23ecd58029e GIT binary patch literal 1057 zcmbVKT~8B16g|_gZI@LlegG;eAXwVQLDXP`@Ipc~sXkc4gKxX-V25-&b!HdT-{gxv z)WipWfIrH3r(Ko}CN=Tp?!9~Go^$TUuirm@0(gRki!v4}Sj0^i4sN-)jU{XD*zm4{ zdk&TvO1p9(qdkUvZR3!ku&=s;VYVd);&mJbLcjHcKK+?%sgB=2^tH5c^0N^2q+!@? zDgBgk?_Oq&1YPzKt;Tx!q6Xd4L3cdBBA*!bs}CU)orQM9R}AbkbYl& zCLTw86rDIC&z0tYGNvcGV|DMyiUIjEazG$D9!56fwpFY<;y_xJ)eQ2(WB){$)hUfpUpJ7dOV}3f6e9}I7eHk2|HO==Y%`>b{CwXH> zMg1o;V%Yk}R81V1PbLzf;qA#>X_jRzKEzTB+Dfz5ny##U2C!o{zd2pr-)uw{CVQm2 zsl6PZkBQU}%XDC6IzpfXW*0zqhN3;>$OF9kcd+_5}BN1-arBK^m+l8 z?90h}%FR+#KsCi`P;9Z-Ie;YtmNJDbExeKzZYLrt#9v(;p>Pi1QVOKLjFk*XB?Xzo zRidz+H0f)}a``XTj`dII*E5y5w34nYseGDLI^*_>7s(qmvStRtNg=MM5RVgxVts_t UMSw>%rL7D=F#%vSS*vvZ4_95%dH?_b literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class b/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class index fe51bb99f088e840d254c889aa41731d6f58d1bf..19df7c07826d73c70819373cddafe2a2c1c33490 100644 GIT binary patch delta 1289 zcmZ9MT~HfU6vuxXNH$?sgmh$VLm{FqkW#4<#kMG5+S({kS|}8?KuT6XAsY!&ziMi2 ztzT4eXMEKepZZuwW2eqIJ~}@7;;4_lJL9|Kc+T!7pqrU<&$;*9-}&FOck@frXS>Qj z{d4DgAdTC=gJeyfZXm=nF%B}K-e`<5PN_Gp=CqnKk;}40AB`p=Lrs1Z`5|z0dQ#2V z$lxD+-lNe}WN`k%=+A%M{9B`GHRsNm%rvmaulQ_?=XhS{&#ReLGiNd%CD*_O7NX=e z*H-gFlto=%in6TZi&0+Eam8fSq_B0TBUZoUIC+D;BkrG}mhgnVw&863`eSQ!)!DF5 zdQ0_P+3qQWaIUbpVjCD)_jBXWY#(WZ<^^Z9cVT_a?#&F3P3Bgdf<+%0i(U>{IHXOA z7A4j#USY%HBClG!rU|d}hQ*s|E@}7{0~Td9ml-ffsF?daF%}Q;u*usN?{L-P8t+WHDDN+4-fooylFa_=ru58)OWcju#f3yuFqj zcS_6a%PRU~HVy8o&QBC=J8$s`TkaR3d+I)A)4d&<`?9SrWb~;rcO-nQGqPx}3)rBp zt2=8DDFtDp%nPW>c5j6D^&XUKgY-S5jqyA=l#C{Z^eZj)5s7{$EFN5Pe+w7Osqfe` zV}48G8(MF9dma^gghsLZsi%i#xqtTxxkIQa;iiQ-D7+D&P14USkFmsIiX4?z56TQ! zeg#=MERi9+YV`wNEOUObvQ~?D*_jc3)dg*Np%E3|J5 zZ}d`5$k*@`ak3t=MH(X80;GD6^MpVR5nHa(hXZ;nU?#VjdX$ITFm%O>W2QOa+BQ@>cYMo@7nNxOjJuiFtWwxBS_JxH7c+Ut#*ib^rhX delta 1032 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 Q#1zC>5uzdvVQfJE54qayh5!Hn delta 23731 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 G$O-^J*b2%3 delta 57 zcmZ2yu+CsZ37?`Fg9U>#gE506g8>*SFt{+707W3;mJDv2r}7E2u$lk`4K}Y8YGeff DLbnRi From bb6181089c3b855ce3618dcf923c00cd7aae15c8 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sat, 11 Feb 2017 15:24:56 -0500 Subject: [PATCH 14/69] added shooter and feeder --- .../usfirst/frc/team708/robot/Constants.java | 6 +- src/org/usfirst/frc/team708/robot/OI.java | 1 - src/org/usfirst/frc/team708/robot/Robot.java | 10 ++-- .../LoaderOff.java => feeder/FeederOff.java} | 16 +++--- .../{loader => feeder}/ManualLoader.java | 18 +++--- .../SpinFeeder.java} | 14 ++--- .../SpinFeederBack.java} | 14 ++--- .../intake_ball/ManualIntake_Ball.java | 1 - .../robot/commands/shooter/ManualShoot.java | 57 +++++++++++++++++++ .../robot/commands/shooter/SpinShooter.java | 13 +---- .../commands/shooter/SpinShooterBack.java | 52 +++++++++++++++++ .../frc/team708/robot/subsystems/Feeder.java | 49 ++++++++++++++++ .../frc/team708/robot/subsystems/Shooter.java | 20 +++++-- 13 files changed, 212 insertions(+), 59 deletions(-) rename src/org/usfirst/frc/team708/robot/commands/{loader/LoaderOff.java => feeder/FeederOff.java} (74%) rename src/org/usfirst/frc/team708/robot/commands/{loader => feeder}/ManualLoader.java (76%) rename src/org/usfirst/frc/team708/robot/commands/{loader/LoaderSpinIn.java => feeder/SpinFeeder.java} (74%) rename src/org/usfirst/frc/team708/robot/commands/{loader/LoaderSpinOut.java => feeder/SpinFeederBack.java} (73%) create mode 100644 src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.java create mode 100644 src/org/usfirst/frc/team708/robot/subsystems/Feeder.java diff --git a/src/org/usfirst/frc/team708/robot/Constants.java b/src/org/usfirst/frc/team708/robot/Constants.java index 34edc93..49bfec5 100644 --- a/src/org/usfirst/frc/team708/robot/Constants.java +++ b/src/org/usfirst/frc/team708/robot/Constants.java @@ -18,9 +18,9 @@ public final class Constants { public static final double VISION_ROTATE_MOTOR_SPEED = 0.8; - public static final double LOADER_MOTOR_FORWARD = 1.0; - public static final double LOADER_MOTOR_REVERSE = -1.0; - public static final double LOADER_OFF = 0.0; + public static final double FEEDER_MOTOR_FORWARD = 1.0; + public static final double FEEDER_MOTOR_REVERSE = -1.0; + public static final double FEEDER_OFF = 0.0; public static final double SHOOTER_MOTOR_FORWARD = 1.0; public static final double SHOOTER_MOTOR_OFF = 0.0; diff --git a/src/org/usfirst/frc/team708/robot/OI.java b/src/org/usfirst/frc/team708/robot/OI.java index 1ee3e14..6327915 100644 --- a/src/org/usfirst/frc/team708/robot/OI.java +++ b/src/org/usfirst/frc/team708/robot/OI.java @@ -8,7 +8,6 @@ import org.usfirst.frc.team708.robot.commands.drivetrain.*; import org.usfirst.frc.team708.robot.commands.shooter.*; import org.usfirst.frc.team708.robot.commands.led_out.*; -import org.usfirst.frc.team708.robot.commands.loader.*; import org.usfirst.frc.team708.robot.commands.intake_ball.*; import org.usfirst.frc.team708.robot.commands.intake_gear.*; diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index b9098ec..cf7c5ab 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -40,7 +40,7 @@ import org.usfirst.frc.team708.robot.commands.autonomous.*; import org.usfirst.frc.team708.robot.commands.led_out.*; -import org.usfirst.frc.team708.robot.commands.loader.*; +import org.usfirst.frc.team708.robot.commands.feeder.*; //sue's comment /** @@ -58,7 +58,7 @@ public class Robot extends IterativeRobot { public static Drivetrain drivetrain; public static Shooter shooter; - public static Loader loader; + public static Loader feeder; public static Intake_Ball intake_ball; public static Intake_Gear intake_gear; public static Pivot_Gear pivot_gear; @@ -94,7 +94,7 @@ public void robotInit() { intake_ball = new Intake_Ball(); intake_gear = new Intake_Gear(); pivot_gear = new Pivot_Gear(); - loader = new Loader(); + feeder = new Loader(); led1 = new LED(); climber = new Climber(); @@ -182,7 +182,7 @@ private void sendStatistics() { // Various debug information drivetrain.sendToDashboard(); -// loader.sendToDashboard(); + feeder.sendToDashboard(); shooter.sendToDashboard(); led1.sendToDashboard(); climber.sendToDashboard(); @@ -211,7 +211,7 @@ private void queueAutonomousModes() { */ private void sendDashboardSubsystems() { SmartDashboard.putData(shooter); -// SmartDashboard.putData(loader); + SmartDashboard.putData(feeder); SmartDashboard.putData(drivetrain); SmartDashboard.putData(led1); SmartDashboard.putData(intake_ball); diff --git a/src/org/usfirst/frc/team708/robot/commands/loader/LoaderOff.java b/src/org/usfirst/frc/team708/robot/commands/feeder/FeederOff.java similarity index 74% rename from src/org/usfirst/frc/team708/robot/commands/loader/LoaderOff.java rename to src/org/usfirst/frc/team708/robot/commands/feeder/FeederOff.java index d7d3431..dc72b19 100644 --- a/src/org/usfirst/frc/team708/robot/commands/loader/LoaderOff.java +++ b/src/org/usfirst/frc/team708/robot/commands/feeder/FeederOff.java @@ -1,9 +1,9 @@ -package org.usfirst.frc.team708.robot.commands.loader; +package org.usfirst.frc.team708.robot.commands.feeder; import org.usfirst.frc.team708.robot.Constants; import org.usfirst.frc.team708.robot.OI; import org.usfirst.frc.team708.robot.Robot; -import org.usfirst.frc.team708.robot.subsystems.Loader; +import org.usfirst.frc.team708.robot.subsystems.Feeder; import org.usfirst.frc.team708.robot.util.Gamepad; import edu.wpi.first.wpilibj.command.Command; @@ -11,11 +11,11 @@ /** * */ -public class LoaderOff extends Command { +public class FeederOff extends Command { - public LoaderOff() { - requires(Robot.loader); + public FeederOff() { + requires(Robot.feeder); } @@ -26,9 +26,7 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.loader.manualMove(Constants.LOADER_OFF); - - + Robot.feeder.manualMove(Constants.MOTOR_OFF); } // Make this return true when this Command no longer needs to run execute() @@ -38,7 +36,7 @@ protected boolean isFinished() { // Called once after isFinished returns true protected void end() { - Robot.loader.stop(); + Robot.feeder.stop(); } // Called when another command which requires one or more of the same diff --git a/src/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.java b/src/org/usfirst/frc/team708/robot/commands/feeder/ManualLoader.java similarity index 76% rename from src/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.java rename to src/org/usfirst/frc/team708/robot/commands/feeder/ManualLoader.java index 2748596..13d8e6b 100644 --- a/src/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.java +++ b/src/org/usfirst/frc/team708/robot/commands/feeder/ManualLoader.java @@ -1,4 +1,4 @@ -package org.usfirst.frc.team708.robot.commands.loader; +package org.usfirst.frc.team708.robot.commands.feeder; import org.usfirst.frc.team708.robot.Constants; import org.usfirst.frc.team708.robot.OI; @@ -14,7 +14,7 @@ public class ManualLoader extends Command { public ManualLoader() { - requires(Robot.loader); + requires(Robot.feeder); } @@ -29,20 +29,20 @@ protected void execute() { boolean Xpressed = OI.operatorGamepad.getButton(Gamepad.button_X); boolean Ypressed = OI.operatorGamepad.getButton(Gamepad.button_Y); -// LOADER_IN_BUTTON = Gamepad.button_Y; -// LOADER_OUT_BUTTON = Gamepad.button_A; -// LOADER_OFF_BUTTON = Gamepad.button_X; +// feeder_IN_BUTTON = Gamepad.button_Y; +// feeder_OUT_BUTTON = Gamepad.button_A; +// feeder_OFF_BUTTON = Gamepad.button_X; if (Ypressed == true){ - Robot.loader.manualMove(Constants.MOTOR_FORWARD); + Robot.feeder.manualMove(Constants.MOTOR_FORWARD); } else if (Apressed == true){ - Robot.loader.manualMove(Constants.MOTOR_REVERSE); + Robot.feeder.manualMove(Constants.MOTOR_REVERSE); } else if (Xpressed == true){ - Robot.loader.manualMove(Constants.MOTOR_OFF); + Robot.feeder.manualMove(Constants.MOTOR_OFF); } } @@ -54,7 +54,7 @@ protected boolean isFinished() { // Called once after isFinished returns true protected void end() { - Robot.loader.stop(); + Robot.feeder.stop(); } // Called when another command which requires one or more of the same diff --git a/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinIn.java b/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.java similarity index 74% rename from src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinIn.java rename to src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.java index bbbff3d..eed2110 100644 --- a/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinIn.java +++ b/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.java @@ -1,9 +1,9 @@ -package org.usfirst.frc.team708.robot.commands.loader; +package org.usfirst.frc.team708.robot.commands.feeder; import org.usfirst.frc.team708.robot.Constants; import org.usfirst.frc.team708.robot.OI; import org.usfirst.frc.team708.robot.Robot; -import org.usfirst.frc.team708.robot.subsystems.Loader; +import org.usfirst.frc.team708.robot.subsystems.Feeder; import org.usfirst.frc.team708.robot.util.Gamepad; import edu.wpi.first.wpilibj.command.Command; @@ -11,12 +11,12 @@ /** * */ -public class LoaderSpinIn extends Command { +public class SpinFeeder extends Command { - public LoaderSpinIn() { + public SpinFeeder() { - requires(Robot.loader); + requires(Robot.feeder); } @@ -28,7 +28,7 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.loader.manualMove(Constants.LOADER_MOTOR_FORWARD); + Robot.feeder.manualMove(Constants.FEEDER_MOTOR_FORWARD); } // Make this return true when this Command no longer needs to run execute() @@ -38,7 +38,7 @@ protected boolean isFinished() { // Called once after isFinished returns true protected void end() { - Robot.loader.stop(); + Robot.feeder.stop(); } // Called when another command which requires one or more of the same diff --git a/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.java b/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeederBack.java similarity index 73% rename from src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.java rename to src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeederBack.java index 7f33595..47ea4b1 100644 --- a/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.java +++ b/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeederBack.java @@ -1,9 +1,9 @@ -package org.usfirst.frc.team708.robot.commands.loader; +package org.usfirst.frc.team708.robot.commands.feeder; import org.usfirst.frc.team708.robot.Constants; import org.usfirst.frc.team708.robot.OI; import org.usfirst.frc.team708.robot.Robot; -import org.usfirst.frc.team708.robot.subsystems.Loader; +import org.usfirst.frc.team708.robot.subsystems.Feeder; import org.usfirst.frc.team708.robot.util.Gamepad; import edu.wpi.first.wpilibj.command.Command; @@ -11,11 +11,11 @@ /** * */ -public class LoaderSpinOut extends Command { +public class SpinFeederBack extends Command { - public LoaderSpinOut() { - requires(Robot.loader); + public SpinFeederBack() { + requires(Robot.feeder); } @@ -26,7 +26,7 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.loader.manualMove(Constants.LOADER_MOTOR_REVERSE); + Robot.feeder.manualMove(Constants.FEEDER_MOTOR_REVERSE); } @@ -38,7 +38,7 @@ protected boolean isFinished() { // Called once after isFinished returns true protected void end() { - Robot.loader.stop(); + Robot.feeder.stop(); } // Called when another command which requires one or more of the same diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java b/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java index 6735154..aa55205 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java @@ -10,7 +10,6 @@ public class ManualIntake_Ball extends Command { public ManualIntake_Ball() { - requires(Robot.loader); } diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java b/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java new file mode 100644 index 0000000..5a7b2c1 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java @@ -0,0 +1,57 @@ +package org.usfirst.frc.team708.robot.commands.shooter; +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.RobotMap; +import org.usfirst.frc.team708.robot.util.Gamepad; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.OI; + +//import org.team708.robot.OI; +//import org.team708.robot.subsystems.Loader; +//import org.team708.robot.util.Gamepad; +//import org.team708.robot.commands.shooter.Fire; + +import edu.wpi.first.wpilibj.command.Command; +import edu.wpi.first.wpilibj.command.WaitCommand; + +/** + * + */ +public class ManualShoot extends Command { + + + public ManualShoot() { + + } + +// Called just before this Command runs the first time + protected void initialize() { + Robot.shooter.setFgain(Constants.SHOOTER_F_LOW); + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + boolean L_Shoulderpressed = OI.operatorGamepad.getButton(Gamepad.button_L_Shoulder); + + if (L_Shoulderpressed == true){ + Robot.shooter.manualSpeed(2000); + } + else + Robot.shooter.manualSpeed(0); + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return false; + } + + // Called once after isFinished returns true + protected void end() { + Robot.shooter.stop(); + } + + // Called when another command which requires one or more of the same + // subsystems are scheduled to run + protected void interrupted() { + end(); + } +} diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java index 609ea87..f3f5600 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java @@ -25,21 +25,12 @@ public SpinShooter() { // Called just before this Command runs the first time protected void initialize() { - } // Called repeatedly when this Command is scheduled to run - protected void execute() { -// boolean L_Shoulderpressed = OI.operatorGamepad.getButton(Gamepad.button_L_Shoulder); -// -// if (L_Shoulderpressed == true){ - - Robot.shooter.manualSpeed(2000); + protected void execute() { Robot.shooter.setFgain(Constants.SHOOTER_F_LOW); - -// } -// else -// Robot.shooter.manualSpeed(2000); + Robot.shooter.manualSpeed(2000); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.java b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.java new file mode 100644 index 0000000..bd19e63 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.java @@ -0,0 +1,52 @@ +package org.usfirst.frc.team708.robot.commands.shooter; +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.RobotMap; +import org.usfirst.frc.team708.robot.util.Gamepad; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.OI; + +//import org.team708.robot.OI; +//import org.team708.robot.subsystems.Loader; +//import org.team708.robot.util.Gamepad; +//import org.team708.robot.commands.shooter.Fire; + +import edu.wpi.first.wpilibj.command.Command; +import edu.wpi.first.wpilibj.command.WaitCommand; + +/** + * + */ +public class SpinShooterBack extends Command { + + + public SpinShooterBack() { + requires(Robot.shooter); + } + +// Called just before this Command runs the first time + protected void initialize() { +// Robot.shooter.setFgain(Constants.SHOOTER_F_LOW); + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { +// if (OI.operatorGamepad.getAxis(Gamepad.shoulderAxisLeft) <= -.5) + Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_BACKWARD); + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return false; + } + + // Called once after isFinished returns true + protected void end() { + Robot.shooter.stop(); + } + + // Called when another command which requires one or more of the same + // subsystems are scheduled to run + protected void interrupted() { + end(); + } +} diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Feeder.java b/src/org/usfirst/frc/team708/robot/subsystems/Feeder.java new file mode 100644 index 0000000..979fed9 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/subsystems/Feeder.java @@ -0,0 +1,49 @@ +package org.usfirst.frc.team708.robot.subsystems; + + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.RobotMap; +import org.usfirst.frc.team708.robot.commands.shooter.SpinShooter; +import org.usfirst.frc.team708.robot.OI; +import org.usfirst.frc.team708.robot.commands.drivetrain.JoystickDrive; +import org.usfirst.frc.team708.robot.commands.visionProcessor.SonarOverride; + +import com.ctre.CANTalon; +import com.ctre.CANTalon.FeedbackDevice; +import com.ctre.CANTalon.TalonControlMode; +import edu.wpi.first.wpilibj.command.Subsystem; + +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; + +/** + * Leaders + * + */ +public class Feeder extends Subsystem { + + private CANTalon feedMotor; + /** + * Constructor + */ + public Feeder() { + feedMotor = new CANTalon(RobotMap.feederMotor); //initializes the loading motor + } + + public void initDefaultCommand() { + } + + public void manualMove(double speed){ + feedMotor.set(speed); + } + + public void stop(){ + feedMotor.set(Constants.MOTOR_OFF); + } + + public void sendToDashboard() { + SmartDashboard.putNumber("Loader Motor Speed", feedMotor.getSpeed()); + + if (Constants.DEBUG) { + } + } +} \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java index edf56b0..c244559 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java @@ -2,6 +2,7 @@ import org.usfirst.frc.team708.robot.Constants; import org.usfirst.frc.team708.robot.RobotMap; +import org.usfirst.frc.team708.robot.commands.shooter.ManualShoot; import org.usfirst.frc.team708.robot.commands.shooter.SpinShooter; import org.usfirst.frc.team708.robot.OI; import org.usfirst.frc.team708.robot.commands.drivetrain.JoystickDrive; @@ -41,7 +42,7 @@ public Shooter() { // Initializes the motor - shooter = new CANTalon(41); + shooter = new CANTalon(RobotMap.shooterMotorMaster); shooter.enable(); shooter.setFeedbackDevice(FeedbackDevice.QuadEncoder); shooter.reverseSensor(false); @@ -52,11 +53,13 @@ public Shooter() { /* set closed loop gains in slot1 */ shooter.setProfile(0); - shooter.setP(0.6); - shooter.setI(0.002); - shooter.setD(0); +// shooter.setP(0.6); +// shooter.setI(0.002); +// shooter.setD(0); - hood = new Servo(4); + shooter.setPID(0.6, 0.0, 0.0, Constants.SHOOTER_F_HIGH, 0, 4.0, 0); + + hood = new Servo(RobotMap.hoodAngle); // hood.setBounds(2455.0, 8.0, 0.0, 8.0, 553.0); // defines HS-805MG Servo @@ -67,11 +70,16 @@ public void initDefaultCommand() { } public void manualSpeed(double speed) { - shooter.changeControlMode(TalonControlMode.Speed); +// shooter.changeControlMode(TalonControlMode.Speed); shooter.set(speed); // shooter.set(.2); } + public void manualRPM(double rpm) { + shooter.changeControlMode(TalonControlMode.Speed); + shooter.set(rpm); +} + public void setFgain(double F){ shooter.setF(F); } From 987bb2055b6a731d1e75ae41e588391bdbea340e Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sun, 12 Feb 2017 12:32:56 -0500 Subject: [PATCH 15/69] added loader back in --- build/jars/CTRLib.jar | Bin 56286 -> 0 bytes build/jars/NetworkTables.jar | Bin 28266 -> 0 bytes build/jars/WPILib.jar | Bin 275293 -> 0 bytes build/jars/cscore.jar | Bin 24524 -> 0 bytes build/jars/niVisionWPI.jar | Bin 725034 -> 0 bytes build/jars/opencv.jar | Bin 132596 -> 0 bytes .../frc/team708/robot/AutoConstants.class | Bin 548 -> 0 bytes .../usfirst/frc/team708/robot/Constants.class | Bin 1725 -> 0 bytes build/org/usfirst/frc/team708/robot/OI.class | Bin 3241 -> 0 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 4688 -> 0 bytes .../usfirst/frc/team708/robot/RobotMap.class | Bin 1242 -> 0 bytes .../robot/commands/Climber/ClimbDown.class | Bin 1251 -> 0 bytes .../robot/commands/Climber/ClimbUp.class | Bin 1245 -> 0 bytes .../commands/Climber/ManualMoveClimber.class | Bin 1329 -> 0 bytes .../robot/commands/autonomous/DoNothing.class | Bin 1005 -> 0 bytes .../commands/autonomous/DriveInSquare.class | Bin 1766 -> 0 bytes .../drivetrain/DriveStraightForTime.class | Bin 1328 -> 0 bytes .../DriveStraightToEncoderDistance.class | Bin 1913 -> 0 bytes ...DriveStraightToEncoderDistanceOrTime.class | Bin 2074 -> 0 bytes .../drivetrain/DriveToIRDistance.class | Bin 1443 -> 0 bytes .../drivetrain/DriveToUltrasonic.class | Bin 1525 -> 0 bytes .../drivetrain/DriveWithOpticalSensor.class | Bin 1290 -> 0 bytes .../commands/drivetrain/HoldDisablePID.class | Bin 986 -> 0 bytes .../commands/drivetrain/JoystickDrive.class | Bin 1236 -> 0 bytes .../drivetrain/RotateAndDriveToTarget.class | Bin 1167 -> 0 bytes .../commands/drivetrain/ToggleBrakeMode.class | Bin 958 -> 0 bytes .../commands/drivetrain/TurnToDegrees.class | Bin 1389 -> 0 bytes .../commands/intake_ball/Intake_Ball_In.class | Bin 1131 -> 0 bytes .../intake_ball/Intake_Ball_Out.class | Bin 1383 -> 0 bytes .../intake_ball/ManualIntake_Ball.class | Bin 1578 -> 0 bytes .../intake_gear/Intake_Gear_Down.class | Bin 1221 -> 0 bytes .../commands/intake_gear/Intake_Gear_In.class | Bin 1381 -> 0 bytes .../intake_gear/Intake_Gear_Out.class | Bin 1145 -> 0 bytes .../commands/intake_gear/Intake_Gear_Up.class | Bin 1232 -> 0 bytes .../intake_gear/ManualIntake_Gear.class | Bin 1495 -> 0 bytes .../intake_gear/ManualPivot_Gear.class | Bin 1494 -> 0 bytes .../robot/commands/led_out/LED_out.class | Bin 1107 -> 0 bytes .../robot/commands/loader/LoaderOff.class | Bin 1092 -> 0 bytes .../robot/commands/loader/LoaderSpinIn.class | Bin 1101 -> 0 bytes .../robot/commands/loader/LoaderSpinOut.class | Bin 1115 -> 0 bytes .../robot/commands/loader/ManualLoader.class | Bin 1492 -> 0 bytes .../robot/commands/shooter/MoveHoodHigh.class | Bin 1061 -> 0 bytes .../robot/commands/shooter/MoveHoodLow.class | Bin 1057 -> 0 bytes .../robot/commands/shooter/SpinShooter.class | Bin 1158 -> 0 bytes .../commands/visionProcessor/FindTarget.class | Bin 1043 -> 0 bytes .../visionProcessor/SonarOverride.class | Bin 1042 -> 0 bytes .../team708/robot/subsystems/Climber.class | Bin 1074 -> 0 bytes .../team708/robot/subsystems/Drivetrain.class | Bin 6832 -> 0 bytes .../frc/team708/robot/subsystems/Hanger.class | Bin 550 -> 0 bytes .../robot/subsystems/Intake_Ball.class | Bin 922 -> 0 bytes .../robot/subsystems/Intake_Gear.class | Bin 1269 -> 0 bytes .../frc/team708/robot/subsystems/LED.class | Bin 2276 -> 0 bytes .../frc/team708/robot/subsystems/Loader.class | Bin 1000 -> 0 bytes .../team708/robot/subsystems/Pivot_Gear.class | Bin 1488 -> 0 bytes .../team708/robot/subsystems/Shooter.class | Bin 2454 -> 0 bytes .../robot/subsystems/VisionProcessor.class | Bin 2960 -> 0 bytes .../robot/util/DistanceSensor$Model.class | Bin 1394 -> 0 bytes .../team708/robot/util/DistanceSensor.class | Bin 2276 -> 0 bytes .../robot/util/EncoderRotationSensor.class | Bin 1059 -> 0 bytes .../frc/team708/robot/util/Gamepad.class | Bin 2549 -> 0 bytes .../robot/util/GyroRotationSensor.class | Bin 731 -> 0 bytes .../frc/team708/robot/util/HatterDrive.class | Bin 2402 -> 0 bytes .../frc/team708/robot/util/IRSensor.class | Bin 1342 -> 0 bytes .../frc/team708/robot/util/Math708.class | Bin 2595 -> 0 bytes .../team708/robot/util/Potentiometer.class | Bin 1101 -> 0 bytes .../team708/robot/util/RotationSensor.class | Bin 378 -> 0 bytes .../team708/robot/util/UltrasonicSensor.class | Bin 1258 -> 0 bytes .../robot/util/triggers/AxisDown.class | Bin 787 -> 0 bytes .../team708/robot/util/triggers/AxisUp.class | Bin 781 -> 0 bytes dist/FRCUserProgram.jar | Bin 1302117 -> 0 bytes src/org/usfirst/frc/team708/robot/Robot.java | 32 ++++----- .../{ManualLoader.java => ManualFeeder.java} | 4 +- .../robot/commands/loader/LoaderOff.java.txt | 32 +++++++++ .../commands/loader/LoaderSpinIn.java.txt | 49 ++++++++++++++ .../commands/loader/LoaderSpinOut.java.txt | 49 ++++++++++++++ .../robot/commands/loader/ManualLoader.txt | 61 ++++++++++++++++++ 76 files changed, 206 insertions(+), 21 deletions(-) delete mode 100644 build/jars/CTRLib.jar delete mode 100644 build/jars/NetworkTables.jar delete mode 100644 build/jars/WPILib.jar delete mode 100644 build/jars/cscore.jar delete mode 100644 build/jars/niVisionWPI.jar delete mode 100644 build/jars/opencv.jar delete mode 100644 build/org/usfirst/frc/team708/robot/AutoConstants.class delete mode 100644 build/org/usfirst/frc/team708/robot/Constants.class delete mode 100644 build/org/usfirst/frc/team708/robot/OI.class delete mode 100644 build/org/usfirst/frc/team708/robot/Robot.class delete mode 100644 build/org/usfirst/frc/team708/robot/RobotMap.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/Climber/ClimbDown.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/Climber/ManualMoveClimber.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/autonomous/DoNothing.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/autonomous/DriveInSquare.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightForTime.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistance.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToIRDistance.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToUltrasonic.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveWithOpticalSensor.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/HoldDisablePID.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/JoystickDrive.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToTarget.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/ToggleBrakeMode.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegrees.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_In.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualPivot_Gear.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/led_out/LED_out.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/loader/LoaderOff.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinIn.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/visionProcessor/FindTarget.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/visionProcessor/SonarOverride.class delete mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Climber.class delete mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Drivetrain.class delete mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Hanger.class delete mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.class delete mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.class delete mode 100644 build/org/usfirst/frc/team708/robot/subsystems/LED.class delete mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Loader.class delete mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class delete mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Shooter.class delete mode 100644 build/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.class delete mode 100644 build/org/usfirst/frc/team708/robot/util/DistanceSensor$Model.class delete mode 100644 build/org/usfirst/frc/team708/robot/util/DistanceSensor.class delete mode 100644 build/org/usfirst/frc/team708/robot/util/EncoderRotationSensor.class delete mode 100644 build/org/usfirst/frc/team708/robot/util/Gamepad.class delete mode 100644 build/org/usfirst/frc/team708/robot/util/GyroRotationSensor.class delete mode 100644 build/org/usfirst/frc/team708/robot/util/HatterDrive.class delete mode 100644 build/org/usfirst/frc/team708/robot/util/IRSensor.class delete mode 100644 build/org/usfirst/frc/team708/robot/util/Math708.class delete mode 100644 build/org/usfirst/frc/team708/robot/util/Potentiometer.class delete mode 100644 build/org/usfirst/frc/team708/robot/util/RotationSensor.class delete mode 100644 build/org/usfirst/frc/team708/robot/util/UltrasonicSensor.class delete mode 100644 build/org/usfirst/frc/team708/robot/util/triggers/AxisDown.class delete mode 100644 build/org/usfirst/frc/team708/robot/util/triggers/AxisUp.class delete mode 100644 dist/FRCUserProgram.jar rename src/org/usfirst/frc/team708/robot/commands/feeder/{ManualLoader.java => ManualFeeder.java} (95%) create mode 100644 src/org/usfirst/frc/team708/robot/commands/loader/LoaderOff.java.txt create mode 100644 src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinIn.java.txt create mode 100644 src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.java.txt create mode 100644 src/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.txt diff --git a/build/jars/CTRLib.jar b/build/jars/CTRLib.jar deleted file mode 100644 index 84fb6973c019d4457b6ee3f6bc64a85c71e13089..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56286 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

    qOUH*}~;#spC?R@n!tX^sQ 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�khx(3mbpSC*W#T(Xi(hk6KO#(Echua*(uDx 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 diff --git a/build/jars/WPILib.jar b/build/jars/WPILib.jar deleted file mode 100644 index 3dad90961cb3a360e4cbc1c25f647f633e5c48d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275293 zcmagF18`;C);1d3-mz^v9d>N9W83c7NyoN3wr$(C-Ld|>_nhy3=RLRH|E{XJYuB!^ z=30B!Gsk$w7|)cK0tJHs0)m19f?_0-1p2x_{`&a3pudKUsInlPgsd0?D3JW$3~PNs zE^)pL0AB;`KMiFBWhKN!m6Yja#O`Fq$E2m`=x5-i=%^>hr|J|L=UKK7b`L=QV=~D9 zdMeo0WX49$e|zA6+d%!>#?{XJ|7wTuA9g0@4vtQLv;Ob@i}C-l{+i#)+`!^*cm4G) z6Zbz{D!!Jf_UmPd{_!qleJfiVdP6IHN5@2E8EI5Ow2va8CfbM}rG&&EKZ2~O$_Y!v z3%?|!fHK-V_Krb zQiHB&KC}%tp)q#|doaOvNq=UEA=;}!QKd!GY6`~tOswL$?3z`7S7_nDx&PJh4@HpwT5r0hW3(~HKCc~Ai+97mbO4P z0$nTimvQJ4SQx#-l2hb!?Ln&O7#btpci|y?xJ_g6`Q{)CMklI@`AG#znRf!To)n~= zCr@YH*FHq{`Tq+|cES+HZ%>5J+3G6&gq;-t2O>f+>veaN!^N!C|;D{V) zS6k!@dC5?!^JhsbTsza8bd>S*rd7(n|NWE82FJhu13&MxmtfcZqJBl9btq>nBKizj zZXr@Y29IqD1=EaljR->~=m-DE+&-Tm2}nWw&1BP$8z>Ouc~PWDLNq^ZKa?#&CGerW zAsVx2wP_T7L1x@7QA;Ty^)}Auv=79bcq0xW()^O|hzrL9TqXMh;tw-4zjBDqh5(~x zuNtU2oM(>-1><+~3O`@a)Hkq5@yKcXfwd9BT@Sf!q@CXWV{iVoLnc=_!GpiBzW0T7 z@_)p-q^-N7lewWKDbv3JpP-{O_YEz0%UWt~5D5JZ2u%cP8V031oPaPJl!Y)T!bM($ zVV1Q~%3xMPkvjTw2*R4deTgY zr$l|efW)S^A1De0cnNbbBkiDA+@bHY6k(#UHcUobZ zW|hM|-{adiH+F{0(z8oH0=qs%OaX^3J9#z$ahoOF%Gh`M1^;g6k3n)1_;eoL6vNOW zmNmE<<0g@*HI8OOn?-&!nW`L2YmeEQ9qiVQ3Qz6plfFf-92|@VUSqDSMczK`gPkAw zyH8o2RZ5fSL)ALjJO>#7<@LBgXy|wte4?@(R6H1bL(LvkUgKkAqO=MgW9zwzrN~ig zj*Hpwqn0dx)0CuZZLmq|W_l34AF@5|jIh15Fm+%ar9P)YVtCWNx@N^4(~}-dBRS<< z(I<3ktyk&%!oM}#%bHEGfrYm|;~9!eY zvmc1f(W$d=z#3Cei?66fw|SsIwGhzJB9pk(&&QTN4RB$ElCu)%&Emxor4q_y7ti#RdUzGstKP~f!w5lt?N<%UJ zkop*tOUkD|jkit~m79FdxxvReD;uut@1x$4qIq1D(2=5X`~mv+kd;)7`WX3zWLR(@ zAclWLvXZfbxxSUWt%DP(l9R2SkhzoNzagz;Er%+If zGGG7)Q^YDwQbn9^ASMig80bz(T&F#gb(E!LZ*~X*2 z%bCnc)?Rv0!!6Tof|gCVxDfle{(0outcTb?y0g&HZvMLNz|JdxB~V7k_y?*LKBlb) z+jiC8=Wf~%ii56L@K++%{LSdyZMsUl{;l=*bz}*lxS~2S)5Ov6CYcRX7k5e;_Cp4{^46$#1IS%W@hB4y z_%4$wdm^423QNuD(`NEYHL)QUG-WhE3LAKcli8TR$*Im!7BRp z1msiT+mpsCO#BW5enKu%*@$X?tYAAlxV}J}Sj_B2kk`OUr9gfp11ut(*c#%4m|Za* zUkn`wH7Tl=DX45Ald&Izg#r^KLT4`O-9Mi*w{$e*2c-f*2>D*;a|9pQtYvr`-bFg z$@ojrLCa`?2 z2qQZjI6!OfBG+{Wb2BUyqGlXqhW8F3`ZS9F=t6QiBA*e;?T>$tS>{UzKB9QnXbyrK z?SN~cn+aj@i9xb{C-Q4WlXF+Lq_O$+)Lg@E4Ve0zOKs)}bb~svr^WYKCD}+5z4{np zWYkoAguRbnHsxZRk(yp|;$extTW#Kl*{|$Y<7?Hw8fxH&f#a# zTp3|8uX54FXj%2l^A1d z{%$;*L`jy)?MmlYC~#L8V-3`ssQvJ6wm=*Z_NWgqG91Z!xa%nW7VUBauPR=Ip@63! zKm;hSAp^I_HS5?SZ2Z)JHpr9K#;C5DYP_^*vyqAf0Nurbsd5p?Q()7S4^uD`u3+{Q z4=UUAUb54d2y=z6U}rvpJcLOBz+OzD!o8E3oVeY;!bzy3e{&Y?`haWlX0q2#Nbn`I zI8aB^TwBk@y9@Uu%tzzX@RXRMT64DDK9cI-r+W zScFu#h7|`@h!GRujHlG#v!vGzD9xU)0^+kBYurMXaS9P6EZ7_y1p{FwGa`-rGO^z* z$Lr0j@`dkjo_4Ka+9y=~p^6&Q%ncp+7mST~aHV%t%e3Td=IV;vT*GwRrpBq%S^XBG zRI{uuRAkxoJ{$e(4@=sgLeEEqlb$YV7yy&&ct~A)v z))p0Mt!e&yPEnOO+sU39%A~wpC-gAEMeFL)c8&$Sgij+Ny;zs>aUV`gu-r$nnS^;M zN@$W}yTJRT6pFd7a&6p;VoN(4I$y0@UA60Je%>5KR7$Y;uC*b@sVLPFAdME778mI+ z?Iy%6_j;fMo@P|^L*kIy-%{>G!!tkY?5x)8x1n6{OEK!Do$BgEdFmxuiGzZ;P5BuG z%=s}01~UBqt&YtCq}jBJ-C!UQU=0NQSz4$G_MVf@6xFVb>xUJ`9JFP%42C18sa9%D ze_BD-spN4i3QFt&%qsa&?~{0Bj@8Mkxzk!yX0M#@%E2yq1!Bx*{SyoGXNxHe>9o>0a9rvVB}LCGg7>PFn3cpj%G{*; z_Lh4u2`+-eDOh>KidnS-t+BHPIaqlEP|IiaBXKzW>p<39R>}vmvYFVUW!za(8Ec6l z;9lq5n9cv3j&QG#l%279p-zP#aKTUItJ!%=^)=n#!82^PVe5(%2PgO6^3`||2;?9@ z8tVWT1(UN{ibF@*4kEw{h*X6Wm_IT3?63LPz;a4PaRK?XY69tsu^)+ zBAcY1NH8LS8x;$Me-vqpmF0YIFjI822=YJPhs2&68{9JcbNpPO^E6Km*_NTsOVe?G zD_$affyH-S?EDDWcsDdIipj%}OA10&v+;X;n_zXpp3xo-FlsY@L|1+}O-}>+Wx=#B z&1bHw;3QPd4fV`NijX>^M=rj49IU|TYS1Wyqsb*uD<*cT={AeNiBGFtq^D_Lh$zEqW6zsT8s|11@5 z;r3P$Wb>(R(E56i>Fu(c7vS67h>L>Qq?qSa>W>+)BfDEDj&K#e8LJ#?iJ$NHVPFXH z5>Z^$jci3nTSypbgiQHk%Cwe)pUd{X6o$xT6a*u3k6+E6Zt%NGR308B8 z5_uJ+=Mrvr>M5d`?6bkH3h8~0<`NWB=CW~~vozkbADy)yM1!G&c&V>u`cBVxNIx5VRQ@< z5xnF3m5J@Gq__@@Jg+$aHf1I1C_N%?$T?zZ!FzO=UT(_E$Wy2}0}?5}l>W}X=9 zmb>8tU5OTqj3H;#EzO;v5Kl%Aw9$+-5=tII_dWkXywF_SF?;^(Q(Rf?Z&bs@?3(iX zb0++W5))du6XCKGK0a$WnT}vtB}a_y1~;OJJ-%ob6AEC5w|ec1>keoKrk?pKoB2>M z{IiGAMb8iVixxyti2&YPDaQ@%#jOlhgJ}^NrKwrK$S+vi;BO4=!XF9u+28c@{M;V z%)y3`83#2!PaJmx;Nw@p8lo_?j1j zJlXB@5R%F7G34IVs#I?Qd3kx^#@(>_>BF3^x#pTgVjWDCG^bhvQaX*GRK_loj%$Q&g;Yi1KQXTbsGlD6OVw;( z`7AruEn@Ot;`UPPN07(irm%ahEK*s(RM*xa!L=8KD!Ru!O85xTVX9@I>@P^1;*nky zrpipw%xR4i43|akG%|v4afo6Z8GkNd8AU%Jy(BuFQA_I5Wkzr#pyk`_q8w%nF|oK% z)u|0$K?FDeF2dE-x*uUq(Fd*`r^s=tT5V`6_vpQ%IEk{F2E%UJ8yszdJdm7UE%$w1 zJ_1s@x{k%@^5L~3fDVM4vr5~6S?ozjTu^yV50Nv`?TH|sE*yGyz{s2EiCn}zR%lX6 z86RO=lT_sb*&d)*K6JP4T^uaVw^vjODNwxz2P){TqcC&@DP}VYtl7 z$Slg%A@t67CM~NS7N~L`sE7{XQ2ag=#74xW_JCWWr13u5jPGJ4*+;*xezi-|g`MPO zM(FU|<Am@a6jO^WDo% z37TrN*%Dsyya8W-#s1$U=dU^x+DHW6I4}^<`d6a!&vmHp?hdv>`i{o`Q-_LD{8!T6 z*zvG>M-8r5Qlfs)O~Rxt{#JAYYFktTE)4CnJ@;UfyGHLiv56O`w{ObIG>G+8h6?BO zTui|-6nAksTuF5&uVWFY?9u^tgWl@lTd(RH^vWzx@Q(+kBl=6&P`*M4%`4&vlyDFX=!?j5K}-&ONWfXI4*_5SdJ^ zj2y7>;YND-iHO!Q?i~NCOt`YJXKqMLU~eZyQnu!$b60p>sCAIeR#7NH9#>ExTE#@iWUOEf5$_%TCDTzS0muhSNGwc z@$kRZoPQ-84QifVTE+k$*?4jpmsKa7rpo$s&^9`$HuOQ&*j{x88ra4Sv(^b_G`YDs zdabm;eIv~FpKik7PSo2v*AUdFSY+uxL9a#!aNLI4O5B9My(@WbUS(vNXxwT&hP=PO z=xjZ@Gi-Tsx$k#9W&>3Ne?spXH&gw@U&sB1xryH2X0IOnIDEYcMBg(}>!AmPxmKp- zU(mMD)Pj5}=h6gj2fWEphB$mJD8P@~|NVw(r$tBh5-B4F_K^bQxY3@Us;_weVXn4S zDY(t(6#(F;={tIBZiC21+_m!RiD7`42_|7{rU=b%RvR`oa?XYWU%^N1-DCEWXue9W zgEVrJ4`zsnle~on;K%Lg3v})dsl7j?1y5I6^)h?j#mAetQ1a&^DzRXh5q|3hCz{9gK(PW;;sJDLLrB|%(0I4$nZ{80fkOnbDn zP{vBCr?YBfMkA!5K2L(CiX0gcr`H)JN=IH@M5e9;#-eSq16q%SivwMgtkhF# zSih=G&HcEQ!%8CZnAHaurw6m$xqv=9MrUHLPIXgZySx$TifV5#`Dzo{W^=T742_ga z$a(hGmX4*WDuh~aGI)8E5JLnt|ER^%-$(^EQ#UJ8-cDIL5gDyUIYCQ=dxUnFc0icZ z7!)Hgv?h+_32OEkt@l9GFtO>6Ob>fM46KcgMH^2W6d4~SS5(5r?z4n=#D0yMEQn1z zt(T+nw&&D*XdmS*(NFY_7k9lBKez=zOFJ4!QD_DX zusO7`9%tTt4UUW)g%UW%t~wSr2uBNt2wT(0yxxVk-BJyUc2mxP5hBN?fz;kh3D6lN5)2+SGgwu| z@aTKL<@d3C_;z+A9A^-SvC3>1W?6s`s1oYoXtDGyJnuJv#?>r&HtH_44~3kkwHW>N zh2^M7m?Hjp9e+|Io_c0iojW@!9Tb|%ESGE1c^3~)i?L{L4QqBL#7Cere-D}W_Z|~( zWUptM~@}*KXjwVG4bIzoaY~nfsq~O#~H@C zOkCG6+Zt4t*$CFgyNt^6TDoG_+NA3I<;h{$gL|Lx?)(Zt+R<3(v1`vV6wvq#)){P^ zIMVn4_uIqFm$ABhwZUYoF~O|UmXq!dL@T+|h}*OkKQytvgZ$NPtTZ!J?6+$De9h^`}<8|W^Xh*s0*E|-WF@^+vL@54CYTfO$&Cl zh!&HUeK#uCscuk$BQ?=z!3d}EoYQOXYY~%eE`%y+x*-L+yV|~?op{kYR|p>)i}@lC z2w)q3WLscZ;;3oZk_cSUlAkZ)z_4d(NTxG2sY?0Opgk=}JcO?r4BGDY0YpZ!*#Z!Cgq4)(b>ztHX3=8Y+)9)toA5S{IS& zKwP;&s&c+56v=|&55(P~*pgjYOB(bSxsWZkpqy!kIY*1c){VtFavg*s5RH~rl~NwN zFmL68RaB4Y2okBu4Yj1+VYFxy-n#+K&&%KEFUPiU9@K5kHhGHiwjq^oiO5W77Xz>bBc9 zsaP*5H{pqyhlDkw0{4vM_h}y%@3P!?Bm3TvWWXy}NioJ9o=u4`_!7^Qv~gkZH2o4b3C*Z*xa+L&y2w(|PXUwO%b{vku=2Eq?p5MJS^y5%&v`aV-tI)|V6+ zadjQyS{F5AhOjj#rtdUdWG#Xaw~3TB@S10Pc5~P0mgQp;&0E}yQf=*r+ZxbG|86o@ z3|Cf&g}^N!j=K#}Co>J$+S^z11jc(i>MN%SL%%48Y5AksE-MP?nvdA#t!t@&;pCPQ zQqu~;wssEEZcRcYwtIW2`jvK+)N4(utp?uALG@|r<|x{HC%MCpT6x53_r|1{i&0@p z$K8eIfa7HC3I5pu&p|odq&E5nUub4{ZK;+pvF@teyR070Bpc}lh@@^;isIN6QW5ZK z{;AHewH|3RiD}=Naz{RyY_~by65_~k1mOima0C7U`FB%Osj1}VGQgM-j#KNNQ~a;zo>MZPZ?8jo z!0TaBOyvX6OnXenoPZ(W6r{WAU?uxWUi=|cw_3b-dtPv1)gsn?BQgTh1ghLQdn-Y~ zK53qE&Q^O()ydGB0W>yF>(}hhR_~$3u0yb%#FaQVIoMwmx*CxTMZ_km;~Gp;p{aA% z<-td+yj43Hy@M&nOm+fxZ{Zx{+lMJ6jI7_E9*7Yf7TFBA4$TTVjXfx$s8%*ugeX0G zuW6s7$+g}9W#!e+zuUpG>bVEKNn8(86v7P*1M7--XO+y>Xm}rx8B@_QG?jn$F77+e z(-K*aSh1sWa?Rby#69BhT?ce_h?5W5C1lCL6{h*ZV`4f`iKV8VniyMVX0W!+u zF_aIsi}+omC8pKI!DroRG|6^C^CJTdW4kI-=j7P-hsYr7tx~X81H>!Z?w-xSSSlo4 z?zGC>-NW2qdF~#<`LsO_gj4%ZJZ#;0dwhlyH-INwdtP;&{R&HPCcm43TSCExLCuzc zeo_D}#gXLrY|XjW)GcYd{u*WSL~XR1y-1%WH~lv8$pV(So6Zo9o6?Zha#{6BTKL&= zK!?G@Ni&}LjSH34uin|l9kkhe^fi1(y4ZU^QwNigChhM#(cGaTEsE4DNvU#AHbUa0 z4zoPEWJhhfz0?%ALQvOh+%5*m(Vhe6J-|Wz4L0S`uGf{(`eANzp(g#FdhLkUxzREG zUbKg(v2RLVMSG53gD}`6u!q3;(t=H_n@DKf*8AfQ+*ZR;QIAo^EIWnr%L{HH))Q%_ zbQD)vGBMNMoObRwclvt`=oC_wLzZpU2WJX%JHwP!j#c%=13uo1ZRWp( zWeL3pA4kRAZIdi?7}0rEsxqW%c{L|Z((~)TOT|?^84fr?ZPs^^tzm94TJ2UHV6Ym} zG!lhjl=rz5bQ|t5xS`tY!x2<=n?6F4=&?j+uJ@S~cEsx)h30Tx%If&NfNW4j%cxDa z|4h2dHF5y1DDyCWfHZ?Oy9yKau>iiY1*}B2nJwi;x!|xmoREavk7pVkwxxJ-sQqDt zy&UAjg$&?a7#i^`Q+9Dokh#!b#OZ_=hjq&!X_njT#8&qNE85SEU=-76Jim~52Ya8F zxjRnzZW>j3q^{O;DQt3C(t6G>AMkQ8g z^Nuf*H$rgy1iex0;c-~=(ln2FeDK+sCZvU&&nNAVb4(^q60yK3bP%0KFjTTgDR=IM zm+42H2|NoRgrBK^Jtcr(HCHdI39kNlM;_wUd`2AaQ2%_nxKp2#_Z#BmmxYl7qf#Or zY_=HP6bHV!EM7u$6JB4!HR44weoKX906t#2P#%aU)bc2|HQYI*=4cGhD2G!{;+J5L&T`XU6+XT~>rY>@(^;k{2piYU9cNu}1X&Bo6f zzJ1kKr?p2TjQ)<}X)Zmn(S8x=#5^0e1; ze*JUO`S|ckV7mpJ(k}_7(@Z!)$jkrqJOfE}|9+Wl>K$@sM5wNKx+Zu&GBf~6b$=iK z&ij6A4wf0pvGbJ?vXKT-ix9)f9PdDhF;WZ1`~XQdmL6^HB_yL8x-AA^&r1`_QD3BG z#r;>MrSp_ zbeF~y3O|_z__H1wud7!76a`4Zp*Dn}!E5QM%T+lDTwGobzB}t8Kw0t9LxcD}Nd~8Q zn14BBcMY*GZ5%DjpZE7TIE#zGhKWS&Fh`aP?#`oC_D8I=(e-RcnrMkCOx2?S$$euZ zKz%FW4cnzgWs72scbSnENYT67aev>9Cme}0wIXcr?>RxIXyKF7&z#UpXjEA{wHdiP z;yn3%{>Sz59nA24S@fP^cJ$p60!k4)Chb?!wbi}XB*WHMkEHR5ZX+{xX~)KGH8>CV zU}H8K?(a?Trdm_aSqD~f#;5XC&?$S-RM_0j!f$$-p}9>ytFyEV3b$?}_g=wbY^c(z zt{YAL?$}e6Kg!K{MLy$sg*RbYNkq6y@7sar44?+4kpj?!IfKQ~!ymBeRO&4%RO-!D z>c7jyMOuU$n`I*{63KSty%YWUh5IeV2sa9=fF;-tf!ZB9uI~>?vP8{h+##uAh+&k*ukuK=w_k#R|^j1(HAgX^vx}b=< zGz%-6o&>Y-|5PP2m8@-N<+1oMVZhIECrhn5tra;^B*6hQX7fQ&K~P%6CTZsZEeSl$ z(+yHujh}m%0%c)LgXfS>`H@rB;?qW9_A;K6jyBm%{ErVuRaeD8zbQ@a;9FQ{)y3l* zO7@-cI1-vmx0C$WxRadL_1*McWR1)aSKo%wI%?b+r_A!EGo_ro$YjKs!00Nhw&tO+P%~VTw zcGrhyhQut|Nhcwjn39mNNvHN2+lXLg;`o1AsLR{|f_vOLV;94xM-f$awPXFpXv3~A6!g0%4mxQ4$XWBOh z!|-lKkLpf~?0(4yt{eZss-yPg90KVFRnledw{a=IOw@NPaChuBEYG)Q&24`+9!5c) z!FxEV?tEP!ziyjJv81$GsbHL*>#}LLapyUEAX|SWlUUhWam|#=PQ4T=`I*e!CSuAV zY?^B9Xu*&egl1wF>y|VR**^k;z11!2Yt%{jps{gNHC?|EGp#GiEWyl_$UU;JTqJ%P z`vw+uIx!~@`whXp9H}bL-+33Cy;=hId(tUc{%>z>;>a16?^7xTo2UCTA2^h|4*P5| zH2v7mz+(#1k-ujWWfVkFX&5kl{zFgkSE;+<+%oqsd2z*;P>u5+aiwDADmehH^)f0>rX7zGpn##+w4c%_$!B`zq#P{r-gQI13}lgpLj47y zmT>l6M(!iDeLqbw0>NvF-!T$#Rr-)MMpoWMF@gu}ZheU39fPoWQJ-{&k!Z*rbu z88Ob&f8HmM2o>0cKo~*$9`CP*02ijB$Ki5$miSAg-#NIDT+>QA7Pd*yE$M)G=$93F z;I`_RpJhq}##Yk9%h-(dd)Vak5@lEHW;O24jIznV-6HH684IWEDBO< ztQy+ELkP5M@C63<(z*J&R4CQ8lB(8d{Pdu`sF{}oafHiJmhlM=l!W4?>V>(i%T-y`2P|rZaocf~J7Yk)gb3kC~4Vu2B3wekQ0QB1sSswaUqX zO#X_DM>NBqj7t#K>E+VSX&}Iy(Hgs^9*2@gOY!r`Bwp z_6TL4HL8FOqh8hfd}<~DxiQE$BWV#Sz03oDEXff&9t&(0szxk1rw*<`K*s@lXAC^$ zr`HZZITmXZp_>gs1{vxUMCw6NAj|!E3pf80b|0{FQMfi%=~_P<=~wNVn-#uxOze|3Dg|8WZl3(EeNq>c37>NXi$ zBjbNjizqo6slG3H+gy=Ex@raC6C`f|=HqNSMHm!t7vXl#S|gw@*jdSi<7JEY3G_{2 zRt8C=oioJU*2K-$guiQ30I1wP<45dvC=%egH!$AHd2U#Zs-CrhvO}e)lTbRrld=+O z&+1+zW$~P#@Y2l;EwJ8-r|rP9Q230stDVMmTxAp6R;ywq>oEyBDUeMq(`}9Fro8-) zZ_Z*av@5R8)?-bz$MK^~6K$}1qQNN|PygBR`n_nUg2L!i2Ne~Ho2AU>CI}S~ zA=-GT%^f?xl>%Iin(5+y?(G-|J_aan8z?zLHoSM_JShDtNb6u+c2~rS)hxW*_)M7Z zVc}-LN9{{W$}E07*hHGsgw6Z5r7yetb35bc^<&1fWSUT; zeSl3Z8WPt0+hafp&ec-dK0h-(G*O!l{&os?%Mo7CgIr36;SN;En6O-YV8kC^e&H+s zZb(Y~q)tb)gJaWJIZT-cKFw!*cTLdsTSv|Xu6^Cy>$qLs$=J+126-`HSV{xrD<#(K z15_IT<0i-?>S`VrS@`}eBmB-%$hAvDhCuhSRG(igUfnrz`lwdP1Jpth0zWAdL>nvE zYmggbwnc*%P+99W%tNo^`1p9zU169oXN*rkUk_0@S(7$j|9-kG26U|62$RP%?t0Fo zjbh=NvSA`tIRHTl@DeKQJnYAJ$z-1~P>iZR<}) zX^RAIV`#vq>cnn|33BpHY^etBqR|u0_kC?5uHvo4IvFb;PQgjIBzzJJ4$w9W1C$ch zI|DGI)ItLI&~$4=L5Bj6HFU*TSeVE?B`*`1c8I_4(YA+WBfqcMe({wZ(f;Ee{ZGy) z=w|%?D$sSl;yDsu)5b;Pn5HDv4`gMu8ae`WN`l#NFKh{H_Y!txg7HS$>Sn8nMp55? zDbQC4j5AtP6^X-~2}~|qSR4<>H#~jc-fr=}LBt5lGnN{{n8Vw{&vCah^_e7*q!JQy zKXXCc3HC2DfXxi~DD(*fZ>8e_8{c=RpfWaUFWoNU)u|e$3~RMT{b_4*@tAtBaMtB= zd1mZrt%=W`81L9j(;ztLrL9X?Zby@kktx=P4rK$ju5V8Btx<*Aq13sy6yUo zCfuLW-(O6wRo<7|D>t?unXKgE$=q6BLGPnH3*RkE^AxpZ)6es*ZA_8#Tp>-U(G)4M z@}-AqorhcEYv8^{q>_)URO;wqU^VC6ENa$@AKZhci@~FxdoPu9@R~>ui!-X(YaV=n z+0r)HTeU{zYZs3uON8r|u(yZb_nS<_HYQM!v)N_Z%B^>!)M7h;7-rhzG>3hMxHMS# zCII2aWRj`wV8>(}ytn#jTKxzN?I zp4$9c^@2LGJIcxzYU81JDw%Nrx^GCgHH6Q{ONa#6uOlue3=~}d*^QLTv;RDoj+DL4 z6Y>d45irk* zoPU}IfRygUOv}=9_M(9whFJpZs3&N@qZtl*I^gTxi1&0#;6~yFr(v z!v6C*g~T01uaKN4X(a9>vp@<1*@^szp}KMyNQ6H1}_sI81J_!$+!QIo&QBsVUXzkcD~}XYi3HDTuS) zeC0lHrokYCKpu{VUwvu*BSW9}j}O#tP*!hcrYrrPkN_Sww`R+BQNv4j_1o(4ZR-*?=T(eLaKmZ0tvFa zAvhNOwy8(=1iJ(YLcnkDp?Aa}zQt70ZOZfz;lj8tVr`;e$G@J zV{^bW!ui)tb3#MAVXO%+5;y2d%-`^uu#!G(RmeSAyP^Dnh_Hceuy58641#a!cCwsb zi6_mW);Kfu&s6dQz+aB2-v#pZ$hqC=pOqueu|#puc${Qe5qr`Ew%gl%Lq|E9^^RwI zI9C*uhaaeJ=mwz4DO){gdr2#S7SnrKi2xnr3CC=TScO|}Fs>~QKXX}%Z12G>mOlfI zvTwb#`<%zpJANKz^}T*;kHNgQN#NDA8u2tU%&~BT#QI2o2vdDrnf2dmk30M^xw@8M z>M&u!_xqgSKSUaTDZ_84Y)xUl;4%NjNCf}c+xQvLCQeKHm}>DZ#--VWEh{QxQ}G%!Z2Pg`fiy%u%KR z^O*NbPlTcaGc!9Y1P9HJ*vP@rebRS!9O)aLlUW;{cXvxm1VF)zn1P{0jc_4$pd4gQ z63ysBSWPQ&2sxs?>Y=-Pv?sDa3MLdFW`-`zKV3|&BvVk3w5L+!oE%%~>2lm>m7^5x zbIUO!G~IUwipalBrWC1WF)NSF(gGW5Sg%M}+n$!9cUY~QPfRB-Dh|0E;(E^27*b5n zg1nuDSFFOhzQ@{}nB4dos_!pWO_c=SOkp-D_Yu(;fr-})jGXV8i*`TNX`XP=o}`3Q zSPb0CBqo*i4wl@^R^Y)lu`+^MNkdU$9FpAiLKf-D$7TS zHk7llC(oMx#=(xr%psY`Z!KNh1IbhQJz|6sQNN+PP)a2z%8>T^A^~8K@mc@|tY!yYTsH{>`j=j*47;sJGwiz}1(P-?}+&KAcH<9tjzZ4xt!L7wiH_XdwtFoC! zkGnMhndczRBh4Y^&@3RcY}I4OgWiCSl*DfyA!Wi9zk^{pII>G2W+R#-F+_|+R%Qp2 zTtvWFaj(!e68sgIC5$Y2?F%AW3fU@tD3PEPFA5Fd^AWy{7MEpi?V%%mFIep{aJ=9O zdI=MJ!3;VXI?OgR4F|4OSZZu(%+wgovj>*JvohF^fZD~K6z&GUZ5^qlQ1&}wX@|V_ zCY0+I4W2OMN!W_Q=kSHX|6oJIh}YW|_&I#bH*{-QKk8d+2c7JmAtp>CoDzh|pA>t3 zwjPpj{sN}|h?MV_*NxNb5y9QQr;Z%X)DO1Qx0yoB5a*?)rv#*Cw@|?#n#2?_5`(n) zS%MED*kT^unN{` zLa~`s#E<`?74v+4o48-Txc6)P^Vzn)(F!Z8|78|Y@?(;H-_ZEt*`uOn7GKsewAH~O z>nmx6%#dLOF(pfFjN+oX^`*%q8oCZ7?RFra6m~ONVO?8O?wTF1^bdW!eZ4@A4TeO) z&k)%0teBP!eJhzE*a^MsrXMc+E%_2l-Xe2rmjF!4uXABWW?WS#i8sbIX##0*LrbgKQi_|55=N^_#AA_sQ2R!MdfDh*YUW8eg(_H%zKjUbZ4|D3 z`5!i1o}=5kGN$IFQ;A_VAE#WA0}05J)nS5f82yNNcZ-d|33f?3%k5Sya4lhKpVS8_VDR^#yGHJe;~BK< ztsEPQVd%04Yx*9A2wZMbBl9Bp0NGN<6$GqSL-B+Mq@<^i2iSGA8wrF*pSyELNV6qI=Rq~RyHK6<@i>nfNWJxaBr38Cl)1qMRCQ;|~uGOF2;@SK^IcK1w z9s9Q}8URjwFod=l$DY9|HF6xH=8Bc39Na;YJvQ9N-W%Ka5UY2c!}%&q!5ZjQ`XU3E zSjjb2yHZ|-yOv)0yX0b|B^QJMNa{}Tc!fB-CZ08HmWKPx2D;zLI#qI>JgqdGPwtmj zPil_Jil!4rm1S+rqtw*XD!2yPqUdbs5YbQv@hR6DCCxz!iCOdIfmy^X>0r%KqJSZ4 z>3K5g&ejW3X(u)6<0MO-vT-tp$JVlxgngx0qYL7#z_O2-w_lG^ z3WME1W(MNuFehYg4W+XNh6p}}68C1q!oNWI$`}-r7k0#44l&A}o&9+PH5W6_o_d3z zV(|zbHiMm+A$yl`SAC?C}J*F5TEE*nx z%QT4{#FY@tw)?hE4s4%BEX2wdddQkd?36|1ojo1=1gV&MbZni=fJz486{hVb8!I;r z8(#y3jtz0$cwO)^+>I*3xVx>jV0PrnXT)}^WLBaEMNseODRj-t4D3cWtl+PdW+~Y5 zBX1hP>szWiikMC4rwEoM2&|jbQ;|DTN*j&{)+5RJXG_4O15T!!`1gD)@3#xWB(u|1 z2E6Heb~Dz%O`>Fer_6dTL9#l#V537d?JlT;v{3ta=4#RUrnO#$UOTk){9A{|$3B1b z60G$tsG#^a*Z?mn_+JeRD|;ST=U%gpHt~q4C!NP+Mzbr~hH*nW~m*sA^~%!uauU`DV&!T5J|2 zM1dmU$UWguc{8DOxwq55VTP_qPN-L8e0p$V7g{RTCVE6o97uvO~57yDkcpF!B#I4EOeu z>Lrtgv_9A&%E!V1YlBBn_ovuoC26p?L|11JXJbzq~EI%-pM1%?_GqyjWLjmg#usI%#+ zcgcSgHKev@r6)`)3sQ8%Z)a4QSOG_bz@G;hHEZO*ltG`#P`d?IjpkVUGHff4U`fS* zMIAYt%Q8eINY#RVgm%zDUdLd0K+UBrJG&Gpj#nHd2~#AoIZECn7+OxcX6t(C60hH| z-ey;ri*Og$j*DdZlnge09hyU3|H54IFJ8Y4XE(McZFLu<( z%U~h}G>xEG@mW!r`u>$oC(tU?IR!gRNuW_2H6CVT?G`8xkk)0lbf(o&LkH}sj&&qk zS0~*?d??og6}zQ^QyjcTbO9Q|?KL}#Wvx87)jRsEP#UZYH&2q7L;;iK2Urucb5%f) zu9BErC#eo7kch3IIJVP9x|C!ixc9HiMNrWFkVW8Nup{gw5N>6oHZQWh0e6=3dya^=5kotw!8bnd{ICzsSOJmChI zB)cysjfhHC+B?S;oGWlqSyy0djVRkq`^Wcp8aBB$%)2ID6aOplLF z5sd>xDKvvdqT3vZo4I~vEax9G6(hnj*Pcqo^XC}bSxKMSK8h;QRO(Ttp6Y{m{(W#* zcRpDIU+PX2hJDLbJ>h)&(X!VTrpQd;u%>OE$F(rTzA+@$3-z{ggP%DE?qR zU|3}Z=XL7F7l7ux&l*>9u9Md*ZmhY0EM}BYRe3#+u5V@yCRF8xNn0?2e9ISL$MxrF z2v5*kKu^m)ZrJtNd{ZQB3&Idy2%<2s0cU^59R){}zE91ELx@wo#+O}<{{qn*ZU~R4 zES05d*j zXDm0WteBP|TiapT))BnhFr9^nUd5D;E?gyn7kdw+=|Z@@Yy!z#Wu;KK!xHFRvYqKd zidAoJf4fb(6sqE=hJJ9H`KX34SHt8<`a&ag3 zly!|e=AnBI{P))LpM8ra3Z^gk_v&!ud!Q!%kAL`Y$Ahcge+$jgN-}o;c>5PP7+qi> zX?Kd7W>IeEmX-g~mZgFgNy6a-1T1DE+hxKIi$0Q}_5$_y3I-542xPq|gssW^Do0R& z-_FLJ>3TAC{nnYk&neCg+z`Qd?DdTXMFE0vnQ+TD|F~aNuvvu!VNFy$q}3lpI38uU zC9lLw(&tr4-iT|d=OyO<^pP{ASmxI0W@BrdAy%m(K?#ke*1PlhE})-IzNq5sf$@rv5 z1Jxap&{ZpD;``jVE8s`^vBa||f>M<6ccTk|j_^sdYk~ArSYQ;p{Mc{0jiVMH0Ln$e zv1ObEH^f|Sfva>HBfG207Y(kEz^Ex!W`ML_)@iOk0U*Lb7qLbhH(R|hp3Km;HW~>A z_vv=(^q}*gikfW`SnHWg+O;CCnj|EkF{2VsrYGM|jvD+^Wb~6nZ7G^AMAXJ^o#?UI zV+xeIuHr&77QCeoS-K6BD%GW%X9M~jb+6%xN$bsf8LxEv8KlAwFhGv%6ubg50(7OY z|1it~WkLfyJa4|~MRTwYBXvzZcBfn6_tWM};1Xq-^482h2Kc4#QS3(tJM7mF%>frO zBBQM#T4bF8n@t0Ko9bOUnie(Kecq}YTZi~3ho!u`KbSc0|28ZB(V>W*Pk zj>N~BnVKDMUv;`&dN;0oJ*{H{!R^Ny!0dJ#oQEJ5l;DJfOJYc=AB}*&0EFM4?SW#0 zZh(2l;bR@{IN0(390_lFr)9?4-znJg4NoC&dS_+I1u+E4h17%R?vKbh-K7)oO%UW7 z#YGBw=e&_?-GF(=i|Ik_P8e8^sJTz6dAw5E_Mr8x{CE}xk^{ev0_D`8sTfw*rA%FN z1lmbL;4H_=$jPqyBU7EUqAV;_#*nL_Y;K?%kd%Z#Gr3^IRx1gCawKE&TdY&jvIR+x z&f>-?LxIgBX$5V11aRia!#Vh20C~|OB1xTT8NUTzJL2fV>2bYNjLLdf270CMXr9u+ z$SVc9uB55Jt3XLpHXJ2V&RlGk^j>9X{%$SjIVDm}lV1yYGS)5;0KswNIfF^1;qepG zLU>)737srC;i6KF_Ld-@Y7IZr_)Y$jM3~vc${7q4oF`$ zuuT6O$`d-~ZOxjR^s6FA6@!R zAjE!0PZ5$XKOPC)VQ6fIM}_zlowT_QS1cn;edO-ews{eOZ9VLM!Dv*`?`YD`msy>x zn9{QT*nip>`a`C5!Ng3;v#QjN^6q)WnIWVOU5%CJ-EWo0an0tA~ ziW9_4J;B0EA&f|UjZ8h!SD@EAm^*_`O#2w|j5Ag}vG}0ZT|pnw<+M~U&qMdCkQFrD z@?jau)*!Qz`ys3|z+D6fBJc9Uu^7*!T{H(sy74zg+9~w`)J(b}D#I#x-NS`e?mEMA z*CA244S<}&0+eriCX(G5=E39HY&G;**lM=I0x>>F^*Vb<*-KWFsA8!WuV@a z8!}(w1C~qTF$-PhHxBOJH;ZQV2i))cZr-w zD~)rtt`-;L)Mm?lGL|Q)u`&FAWDHibXsjnn-l^>E>`T_Zz_%&|uI(Ev94|$-ery52jSKHwvh^LDqEPUu@r#RdTugOAAGI}n^ z*n{NP!V;#Yt3Gltt#;2-_#A$zxMErg>M82<*y*Kya_5AYoh#qHa@pQ(uqN5Fm8I z^p-~G7v-h|(L>tV6}y55EcRr}Ulq+6Soa~`@7vxVV7MAY@tGjIXZE3BG~LPyM8P4m zzdrZr7#lEp_%DkuJ~6E-UF&Ls)fBKE5fZ_iA=YW_ma+u{kwLmbG07G{UkSmNfMr>8 zHtfYfaZ`#Xx*gzQU!>u>g&|Uu>C=|gxjXQC_`2b~#0m5L8ZHcY#|S<~ymU4k%32TZ ztp3>Aw$(#z*eH)-OA1;jTy`9>;2stcb!QPQL}T;>kLEFS&JxvSl$;+8^$K3%KHZU1 zrTj}OISk3&fuwl~AI6aVJ0DL^E{|Lp@RL1PY;4EK#hVB&7vd%z$(v}%OtLNvA(wLC zXwCr(Y=}al5TTk!0$V@-3VjSXVEMAS`#kRz@Q&<~iPD5fy57-bgWr1LV|?W?XX0Hy zy?Tr>v&&~@#2Zkxy84@HeT$J_CT)ggZB+xYF^DtE(a@qimh?6uavB=eh;u7RHZ*gZ zmC36cGMkw#yK(Box#LvZPW;&SxGi?w1Ru@i)fiRBmd}r9lYiv~lG}U08LvwC4bQAn zTdRAnTg%U4)NGsc-mR+n%C+%@8g*?4>(w17;^IJqyCht#&SD1D8qY&_mJ|j8TlP!! z6<@z6N?3q*MuY1Bb&ySK$NZ$cJc`uTPYmUYp#POT`LNggb0_EvfBe9Ykxs(JBg6id zKFGJPN_VgS@zpT|s2$wC}CYhDsM8 zvRzY=Hi#C*5T8xz!$sR`dHlgNqs!m>hs24KSXXyG2?~yDskJM&p^aJ{tt;$?+=5N3 z5g4~kPHO#v7peliW%`M6bF!-v+0R+R3xKOd8=OgKprW(%&0EG2H0)0#=Ab-q-<29hDjXe8mZCy99KsqJ}pX)2x9>gzRM*AD(G|Np6f{}eYg z9Q^lglU`fsQuq(G>VTCSb~dWftPv)vDb>=*Sp54cbXeRAxETH|(Lzspw9!JNAhvqKINrEsf=z zgFWvSrgjg$M6u3_%13j)8J2w&LpElxpoKta5F(920fB0zifL1-ViVKp&e?Lx{YqMj zlJTc)gCSi7T43QBR8u7!C_G+3VQicm*NAY0hh9LI|BqAJvdOKCV{1}B8_n+>h9kf@ z%Ojq*JKeA{?Ua^aD{Swm z%l_J(Akzk576(@X-kP>g0W8C$B>;5u8JLG+bCtOSW!E^R08tYJpJMf*6iYTU zWd$^(k>;cOAT8Sq56M8DJ%{12iJ;%q2WdV38c@JVsDuAN`Z-I#uLPM(NV`XX|9If< z--E8o2+m1n01*m$UVda-Qee>-QlZq=$bMUOj^+@1wtB{k-YtS8d!?gPrJH@uxp<5u zYpjGJOV}Q^QWC6F+lxL1gwl4+QdXwzmPy1Bqzx~?Ml?vk|T`vykrl&9j9{H24G8#nVTMh&MlhG>sYmws!ETQ?ucC{sM$<%QtPyG9rBXihhnUrI>>gEjkjT;3 zGfP-qdGO1GO8wT8USAB?$w6S`Ng@6WUQivl7h-XGN2qUta2IWsM_*<+zIn{`k^Q4` zDog8Jge5)*+=4BffhKV0uNSo-Jc4(Kc;&>_6nsL@9S2^a12~qsw%B3cA#+*9JXxrO ze5En4eku2K)8B4s=(}i$5Odz@z7PtwTLRMCG0#5}Zt3ILW@*IOW{LPk&kk!s%{K(X z&etmipA;x&sf2bN&dDCPRwW2KDU~wFi2KwA-GeFYscJoyFXwgIm+XnD z3<{X;(KGOgT{xRB2wT1=;lVJ1aYdPsSaK>1?texTCxtKE`y^pR#{;baH5%luF??JQ zi;h@qLG9@|LWG~7Sqvs~@0FUyOiqoh^4RQ_;B%J^`*p3QnJ|O-@3+e@T>Fx=b5UB^@yL(-O^utqf z2|B4FbuPWsDfuxIqve#n`2yK;L)n~Jd5hga)TT~row^N=a6{a@wgqH+d{nS45z6fA zPe@Mi(Wy6hUJ4Yj%j|Uqh**Dggmo=-Yr3mxX1*+Rz>RlB!Iu=`8>#LV8X_G&nx<`y5 znElyyQoXL)pK`oXzOtOIGD~+n%=!H}4K*Rz_FeJEuUYX^cHzMEp8BJ?r8t~Yp;<%W zByX`B+O^o8MvrvYHjf9F+VuK=H0+R>wM@*xajuu|X7WY#;p(0zeArT&2*f;&n%2U@ z?-Now=Wc$~1$=yi9*A{${tg;FyFv=NZ-%14d7!npvhzPJZ-o}~$+@HH8Y<-kQ+nm? zN_gxl>GE6%Bg~8*^e6?8d8_4o@^ZfRSmz{9!AoA__);Xl$6NbW?UM6N4&stp=cGX0ZR1C!+DT?w zB*Pgo(y_7>q9qIs>g}V$d#bu+4z;jV5MOuilCJ5N1ujk9XHHvcC4A9vjF@w07@p?w zJ77nt%%r-HGZ`$+2okGTH1gWNL;P3lnP`LDv2rk=P5%{YSV)*@oH&FXfaEDvQme(j zZWBD7nSe;!BgAZ&;7Yc2w2nb+<_PTJ5>1_HI+HEJ8VRe_+UEy-kFIHD!(JDm5J{=u34jDs4*}dhVYk%8DvMW-pFsGMfw zxqh3D3qBZ=kGiKK5`H~qHLWU&SX?0wU{Fa4->bNeTu{CzqGK?bt&-=dc{0D@DkNVh zC7%Rf6M0Jh>{x8e;sR$1cP1m9nk&3-#vpXTE00iU(*TS(BvOewkqnF9YSO3;sjEaG zAE-EVq~%3~8zM!%QUW@u$cSqq{H>?sBvWQ;j7sp78kO&VXKYdBBT}nq$I?cm6-1O5 z1R!Tq+4iBqsg}1Xz=41jh{_cuigu@zK$~@S7Em&9^9yIyZ`lD{FZ9!tb$@|qEP)XB<-mgV9Nm4e%2c#GVe&x77EOqY znJ%283YT~2{Q$vB-Eo{4jZi9A06VMNY^kaVzpQ61m>iEo#Z|c?Dt4c+m@CWf2SGn# zBv&SomP^Z5J*TUJcp8};)$GwMDo6cORX1H`KV60)-4xLkuG*AgtC%3lk}|u$ygI0xwyUE)Mn)%WmHxZ zEEiI8;5G(sIlrx|l5W>6-!K{~=w2P15A(t>qoHBeT@k^Z?VG%X9yVu$2OE@hYSG(q zCuV+dufh?C?po6L~E2lI3Y4ga58VNqba@tel(p`ZOf0kDQ z!)l4dQa=DSkE9K`z!E;fRb5NwCEAiUXczDnzh~amjd(Uk&yT~o?l0vL#dGQS#^FH9 zKe?sNjj{Pd%^rU{xJKqGtRQu0Ff;T%wxf|c6q3^d4Xxd~`U zlwxJoesEi~-)H&SXeBhiqKAjd>4GQbdeS$3DFcqGSr2CXfx+$XP}7akORUc8zu=KG z!#AU6^Z@vzTnqFV4}$wzOR%FSOO{Is+|>mwLf1|~?_f-^!LEj47GGzKsewg!Wrlo# z5%Oir=S`hmMxI9?v>{JIN0!V+s3Cqb6>@{kUl-!w8%w80h}nP~^#L_v=XC?3oahwX zu+zB08xpez>!uQ$pAkuNq^%hu`|E;gCMJlp*KZ4E0>wrpPT98pnsrRP(C=CU1{d?% zzqEY}fqsj73d98tNHNrM-H)mOmQHtwEylh3i59C3J(`R6>=*OymW_`S zUf#)gK{xqCpD^@BQ!w5ufs~BKXn`M)4QJ2OT#+RZO=jsO@6>l!*P0mD?AGzIbde3n zfy``aX?j#TTB${h|PP|kn>@00#1=&Bd z?Z7mqMN^f&@I&x5z)t$rNY`~S4R`L6hCnOJKDOR=wNh=?Ze`C1j(|^>ueib!+xcCwAaf@{}uiHb-4E>sq4!(i2KPMUjOb> zB4~IG8ZpsADZOxHNiI{l^~q#9buQI{CsXm)QpD8iL3R?eZw+^8a=m@U!9eq>g~nNl z0;(+(Xmf(gk^i^1|APrORUK~gssw|ph9#KwoCX5cH6+MrD%PFskx=}hC;Bf)@>ZsP z>uf#4Makh+zDc8~DZ2zu+yTp8x3a&1l5gGZnreq--Pp&<5}6Hu+Etc(<>0#WEWMT+ zFeyylXxCeFiywjR?h&Pj3e!SHF!ExVC35t4dB^_VphP}0Yfy{T4||U{gjsSwdTI#s zMbFHZRnkb}h{g)-K>VDdjVWi9P3Rn-+28|RGjob_F^T`c;k&9E@05$U1FLjBc;5x0 z!>B?qN%_ht#n&Scpg+Y>5lLu(8o{am)5YLA*DI-DxCn&uB$YoOK}ZA9k{<6`Hc z>Bw;whT9VNte1f|eKH?U5vOv;G`fa@zN}>VXvWDr;?Ce8B>1=$@g7qsTE3C0Px=l^ zsXfk8%zBtiZB$j}T#`A*7Ten zF>=MsK#x8^tw+H(?Tz2=j{5lZa}`)_?Calx9scRO7pPc3d=*oS782GrcFVY9*z|+>oS+H6GKF?%MqoNgMl39{96b-;icD70L5x zZpy^mfNL%+g*>2}XJTbRK#E{4l%3`dX^~HA0g`XMMFH9&{FKs=0t9)y>2^G|V4ib6 z>;1uZ+U2#=ZT2?9`IN&x({nv02fQjSjCejwUg!>+gK!JZ^f3q#v#+G!jpawOz#p^A z?5-#(hw08WJ~JbF!^wj^d>nizSNIIlg8_JWPB?#Qh^vKoVJ7sm-K8%uAJmJO>_s}N zg?h32p$C0%rr^BKneHb%%0Bp<$?&Nf;z$1H3J~Ona2s22l52cVOSpq}J0tWdGTICE z!cO=__lG~|y)^C%>2^n`hxm_Qkhj|C6Hy!RPHcl7KY|E9%55RUA zf3zWXP9kdX$V^Zd!f@m{*6&utU`ly0L8#zzGU?_n*$_d4K%$=_uocXsEM+WJ;_OC5~=G(rC(9pH91~SwIt1V&3x|32Hy%F3R1_-;W2e6C;}fB zj!}lCpZH6*_894Ju--^ejZd$cNdBnFdC}ePi2G48o=+&&Xp}n7v+koo>7kLCL{ykZ z_T$ogHcxb5J5?dJto`h;=?z`5=b8!2{^ewOiVN!YYlp2&I-?>fO`atLJU3M zDC$RCMhkoi6y@~sZ)q~ErXsfXf{iDfR$0vt3u@*iy`#N#W{q3jGiM3wGB0(QFzHmi z_!EPv1AsN18FvLa&Ir$vUTH~iK{8?)?4dxsm_mH+I0v#(2a6?TQfp&@5A!KVuZ{Gy z2PyW*Q4Z@CRZjzlt<3Q=0dE}cuFP_hz*@Csb3KDuu}Q`Hr)Ub(84tPhTk-h0lb+yV zJ1t2KYJ#duZO7wHiRLm|FZ*>W9Ih-@hly}S)i4&EnIn-NrU}&Qbcj9)Z~H87%PMLz21jK* z6@yjs(AV%ASzcabseh7|y=k+0U-okrCEgHndDoP@mM%85ch}3kF5hW*)Zos}WZB!PGGjUo2lqwUPE@{Q5QC}V$#mCg zEZFr*s)Q+f7c@aBneGVq$PUcjD3;NT;0LSzoi3N_d1^4S(CrgNs7>=lbYyLr*~Qd= zqsl*9RD@ehIx-H4o@FaVtczxfy>ZRAw%KtH4RwN}q8;l+GHruJY7kefO>0H8NXu?} zGGyCRK`r|Rj9-L=_~iF0p$;W!l27m)-Bf}5f~Bp05(79~z1Z-nla(eVk8P+u%qDFd zW!6P&SuD7#|4eT38>;SCl zegO-lsV!s|7Tii%Y923Tw^O8REmr#QdX664BNQC45gRp6T|s?~%&JVMB=~!;m+kD4 zI~SaGc;%I(?uNv<;WjG96-UL3pz9uTffQ3x1L3v0RpuyXMGDTu3VPe6Si|NX)2R`E zv9~OYJgPS@NsFSbDedm=1K!(<14%czgfhz8*gMq zg2f`^n<4?2e|!g>8{RK_Jq6@|L+)YxaaLd z|I8B4{u?f6rWt&nK5pNo`#a;T2WXa996q7haP02>_K3U_V)L>7&S9Sv&SN5 z?bOk?|ANpL5gJdW!`7?=#2_9f@#DmpU-h~z)8}-A&w9|8gdv1-8_|iTkFf}dm1`O= z4l7$Aqd1<0czyqE?GAyTeS|)bQTBKi1wLE2F)qdZ8b|X$F7M)cAKIKBT=9U^5+{P5 zH!>K#uFQH@1%?_U3!!Fj4v~dHfEH$&2uB2+tUkq{BP2N@-a)L~>W`^$dg3C*NTEMg z_@1E2CGPs>)+G65@IhoMD1BaG6>o*RBaS~e4?~a+tbv-ax)nmZ2kny;O>0Olu`h#j zP>$dS@(Iu8q&m$@6F(I$A*`f)`cf!YiJO)DrGdQeOy1^1UKg;`jcC%PtSeRK?E%_;HsqvIgP!ofu4s31h~*o5(n7g@%*)gr}&;YrG5UZ0w=WEZP!$IPH# zXVR@0mbqz(L-v%oExA+IgbO&hxH7l9GP2|E+xCs??#@-(b>jr%8)|HcnL25T;5- zCENLesGODa4gqD~ujqT9G=Bh?LXLqV1-Tk+k0*joVEkEbfjKxrn$xx2b&~G4& zH=5KvB=WD*Nq?jEVeWCjGf2xpWEQ#JEyuxBBKHf7)9s%np4+2vV=-zF`i4FPv(Vow z*ZAd82JC(ovK|ljOmP#`zu$kRuCV)zR~B(sxkPU2x&Be4y-J~wd+t|L&`lLp(zOt$ zrm{tdmhP=Y{J zXfF7@J}Y#g{tLQ3h`+kFK=%GR)Sln(!?wg^RaQ+utXJD@&hfkyl|!7G*B{3bnDY;a z<0#l41l@_kJS@&&Dt{Vhq*|CT_9tHxS=6Wdn!P_-3h~}e--^VQ5`a{SsD>2L26C*l zN3}jDmrCSimx<2saIhvs(?c#Z*;%Qyo;ds3%J*F-`8`nO)x3v3QqZ0@+x)4m1i%M=%jVX3D~BEmdRxb|;gQ-}6}KhR)J%wNUX{Pe4e=HMwkoySb&m&jTMRb# zj?{GfT(4TC5*O|#Oy({G8nZRiFqaoTWZ!0*({^CXc*2BOB#mh~^R6zeDC!X;4;x1p;2F zI>`C7-6`dR3al0UVqu*ib_X~1JW|g*WK%LJRs_Ryrvt|Ud91?uc`<(mW_$F!6A=7c ztDedpy9HGDkkR1G+P>v_;;x34x8wC>4vM@hmA_q9yN%_bo+=7hTlwDMJn)?lX#h6B z+9=Ja7u#sX#eSt5Jn=p17JZ4iIX?H_us8nYOd#rE5@ z@Gr>wzlKu_TeJV|56xE6`o|*w3D?<8YeiY?e^>%x*-B9?-_=ay$jD~#Cx2DIdp!jV zEtPi7mhqFCQXxuo@Slt}C+oUjNJ>uzN0Z;FK`%$=oczANFK`5*W{72NwFYSE2nmG7 ztoH^vQy^xJ216{jkvKdM#QmQJ7=h>b!Pn{n9+_K6vnyMgJ|nJAY&-ZGC}=t>x2m{} zb9GoCPNY_)=^k#zX0A51dw1jYmEh@1o(m7Ob^vSjg=|odlI$JBOk!*fwrsNchynrg zj@zz#&u*GHp9Nkkd8YV+;G`S;!@rh3q0aZo)+?S%JXM<8B^oZ~-W8xdBoS8K=t9Ge1^mBVe|+I)SD}pZSJ&M z+>5VmJIVB(G8##m4g_Z`(5WeQ)zA0WU$VhNZ^_pEN@#NIK3%FpXS0fR5im>F9&zch zm%x>agU=^m*wBH;MRu<+f|BA2VVJD6z-5Fv5wF7>@)x+j#c@uxl-(lb4Nsb5JP>{8 zt9U8$xXr}^MdOxJ-@bWQ`FeLW+sEtpJA;vYNYh=+=NbL`kYoaUlziPcj`!6=fPihl zOte1Yo4p40n=!&R{#edR&|7GRGYK9AGAa>ve3N01+`ce+CSUB*(t-5@^S4u3)Kz;> zuY~GX^Z<#=F3-QL@{qwS2t>Tht|9uK@5Dmn=r{`FAe8$|vyn}IunKUPw^Qz}Bghr) z#ZdiLH~}zsmf-R8O@tHxx5mU$V}%H5%bdNXYiOVn%B;DFlWl zNP^!88q$O^ik6DdvaUPUA=A@E%#Hbr%PpE$%j?T60qj-iF?hUS0Fo9>zQ3n8m3SYT zGdIuV&ttD$jhS0x)vQx{*O%N^hfh2+S8R!HpKnJSKyZ7UNMsBcnmO^|qVFOtpBmna5lar&nBAndV-W^p=%ziq?rKl*NkWR6t52#a=d};|xlzzhzTo@HXh+&v9FM5lWLi0Jqn$*bH~0;m($-j<+~3UuxT# zXRu|HaB!(qCSC!7(@;IcOga()gk0gRkOoD zfJ)U2Iuh#9?y)1_C|Nf@tiTM;c78ej4`ap#-{tA4*wxB$glffbbXBpJN9bM8R7E0L zai8ZF%h)`!pk6StQqS{5M`}*;zSTlUGMeeN^o5Bjem34{p;35#dCrtbXJyu)GRE}F z%Tg~Yc7@p=P~_hhyhV8#bPc$Sf5SWiC1#>r-vg<7s&>r{&83{Jf=OEgb-xi0mgH^A zyAZt0rft$wkd98gyzIxv3@@zX-3G(@ho;fgUEs&V7hQ>HrA!*HMNEu`BP2)9AyAPU zrcmtAa&yEMjp{Y^14{ZL*(Yi^oY;!@3fsg6`R=J! zTR%}#^47T3#i@?g%10IqWo1!F$V^4L7L)fIJFr(|%D*JNH6f^bvcfUPPN}g%>?H?% zA(x2KA2T|VFL1Rl6-#kOTv_f9_+X#L4S@8Pt`YdE_pPvcVvbq8q3O+^*>sn$ak~oi z)z&1(SwvLXHRN+37&e;|^7n>mH>mH{OZQZ|O7>WKD)*>rES_`jhb`(bFLImiZlW&q z>Vigxc)4}OW81WBJ4_C0LKwSB2q>@WJKiG!f7Y&t+kSoV`R46~IzA)TP_K52F6AXo z9S0qP1wBY4X>UJ3m}K14FI~g~rx~OVtrTtXW>UeU@-JU=`4$lLe0JX|fIa!Hjw>-- zU#pI{P%Mu8o;(rSCyOvod=~<`q>NFK<2=I@jwWaw*NB(QdF_mBJT)(x|QYt-P&b zs!K_7H7c}_2(w3%FLxQLv$0wzoh*+>D>GsUe}<2C*&ZE|PtER#Wv(lqAhhc zlF>_fww}bLmaV>+rKL%pe;m&sd=RRwq2wO=Vlawg8eqkVr*vUl`~Al%-0p{O5bkGO zd%^C|@&S5JWNsm(FMKFMicL;q-TA$MO{Ddpcg=4iJ#-xS+f$leIn+-!GW2{B;a*{J zI0HY|$TQUUhMyTPkg)5}M(h=J;7d)L0-gBB6{>Bqd^lujL~m_h8}xqd?Eb_}MD?FS zs;KX{GTWjjR4u*1<72O*M2p;Gvmgb%f=jH66Wvy;k7$O8k*ls^d}Qc(H(!sW%H)GQ z8pP;N+oBiSV2iZ*pDDG9w>$!D`t)k?Lb#%%Z#0jFNnY@ATNIqpdmP;MP{^COBb+=Z zR_1iqROZ)aVh&N8{0j5rYB5f1Cq^oZ&HF)D*@-;^CU!kS!MFFjn!$TAlwF6R@{)f` z27ilDoPv;^7G;!>^mk(>pe7}eG7=+1^cO@iE!BC$qEqG&T2Qudt&tsUwgiQs=GTzX z?K14*wGiXm%ejp4E@7Bb-5kK=(nzdC&T~WGQgk~s^jIKH_4JXRQxq#x#3{-tt|%=& zuxMVxa9vvqh?xn1+pIXm+ns(NvraN_RiQkB(7_m#(yd!x6S-&AF@A^eWzmQBn zA71+;DYiUHiqqBZ-$Eye};5sZ<-<;nnD8FhiuvnMupyju-$d-PUdfWQng|oTD1}O@Ewieon|b*-_MalU%WRv zB%kRa+W3(#vw?n{tw-^E`4Mk6W9`-cdd5cl z{QQJ?$AWuiXwo)RgSM%w_JQoQ6L0DyKkG!hiRU)yU0Q(e>kN7!?|kT0*Zq3T-v^^E z_C6gd(wlZ<184vm;IS*xmf%wj-ADO(8*3?O{WN`bJhbK2a2zWZUH-p{_dw zW9Qzq;u~xv)Wa~^Zi(aB0oe5$hN;x$P~9mNAO7tE_McwBlon%2{=3aB`KAc`XQS@7 z{f0#TJBrxOSjNTL*}~rXe<5^|m9OL$^bvfwo3%O>TR6$M`t&#)u-8y|fRJ{Z~I+BWWnlBcx9hA+=9Ca=aw2|F9e#>7u0LJ*Q=Om zdNJil9Szre%506Dj7r9_w|pWAbq``52CkZDo{HBRPGgYFFL4-@8=HymhFGi@I9dMY zOk@u#+ICTmX|~#|!!8^OdCLpBPR5WL`jsvGGP$&`9boVgxvAC;Z0K&yB8ypm$v5)s zk&;wY1zmL9z#~x$ab(BsRl+MhgKExS>g?HQ$#I&im23(?Sai@ipJ|enYA)G@6#o2j zahcpNkLheHC5|bIp)^nwXBraiG=XTns1Z(9THBl@;jSjGyijmE?Nv2V$M&`DcTK7B zjQlpSE)mgsNA;k!XP|8X|0(^+N9t`T3PX<(w*S*MV4Z+PP8UZL|D0F|J?=YUIE@e+ z((rC57qIEy8zFD6CN=&d2cai`_C5>og{JY55WLZbJak$gj|wFs?hGR7>u`w^zu;Fy z9aQGB3D1F9<}UEqfEf7`apV}4@g?H2PxsT$xWs`Hr$hW zbHw-q=KOx8YfQiqIPtzTT@V<)yo-gRM?n0UrUuMu4$lZO-13$D|GdvG{b@a8^9>R4 z`L0mT|JbSiaZM_+;8I#vRzzEm z#DgfIWT6}pDyhfA(rCrdyp_CVbJNJff`rK57mH-Z#&f+mYHT`v!F|kq?Csst^J5k8 zmtj9mj_@}aDeYhN`TEJY^QPxQ2#lr)s=#fFHQg0hO!YwTy=s`-4VW_*hb310%VH1O z4+7-`;_4QUKNC6E*o5%K$Ct>v0v${|#uR8jg%%@ZLfiqJNH7O3rxA^|BS@cMtvC(F ze{-g?$)1Ymd!roy;RUf156D-P5XC-fG0)hnE2zGJJ;A)iZb67YU&i@pNccm9 zXB!1n#B9BBS~lAUKNT?;_4NS)NF6aagVX%uOhqbO3wxK*9=6TFGN6WFtXa*#^Mqp1 zGP5a0`Vrs~Fv1u==PdvX^A-Xa#cokeO6Dlg(n)Nu`o-wx#phZLv8&9OtWgWxXkbYc zV?XCti=ZdtVg;N_{KYe3tg%dqH*v^L3fU-;BABEFGR=_{pxqKI7|t;4NYDnZBW2}L zPg7or8bis!GBsE9o5W@wB_nB@g_brLX${gQL$^rg>b_^;(eCTsFQ?<`97>DLF(V_? z&dl^U^B_Cjj=%dg7hMme4)3dK=B}q=YagOvQITLWEPQnPm?OQ&0;v{g+vFK zjGY$4ij^FY;>|~ARGZzj315gSV^G*_->VMJIc=zP%rIqA)aW1w^$U-6jDux8>xDv5wQdTHQu{e{a z(qOQN#5q>DQ)$(KCCSafL|CDkg}i%gU_Dc&<4vtp*DS18O1l@*BjM66L(-UA?eV~a ze;2?Ll0b=0({eUTwMwqR@>lSf8lh}+MufdiF1Jr!VXfdUaT@1ssHUC7} ze1%+AFHrPK2-GMRX^cvgYb?_kG(-ci4T*0E4bLz~VX4%SIE(O?wUkUdnvEvexEuom zLjc~rvLX|sSTO6{qkKy8@eJpW%0h-j+vh6D0lMrp=3HigD7pnfFEr;$KvxJf0}GCT zG}^ElKRpcATKX`F)FUuwktL(wr$(C^PTGM*M0kr@#=jU<7Axt$e+FDUTZGwxw5wqoFVRVgGL?; zLv76gD*@*(8Qb#+e7#XOl&cz?Tm{{0>Ps7ISE{&Xh={1z>D0li+pA#^HQB>duXtcL z2H?rF5)wkGuynfMm0!hrN*}9(vLM9xP|du9(vEIWw%pOZOZ`fKZ083bd{k}+u(&%vAQWLc{*ZHLwc)%Vr5S<)SHdWW* z$^thEqLfjU$1uZx$tx3ZuVWE#=nxc%P+G1s{y;KOFS}vLyq+l%;uf4vH4v8l2;}DeErv z748Vf^efI*2Dpn;aQE3-IGIB^6kB4E_F95;!TQ9(c-#;}=5wLlfG5^o-s>wyuA)NM z(8^XL=y&L@R=hLi0Ch)|$UA0du^dQPse zsamQ}AfbZ;q^g(skPIXId$V|rE9g3Oy&6M^X28v^eJM1*B26l^fNItC?&zECXJEsNn4Og3sYTP}Ul?U(hjoC@jbjug8al{+ z5j=u@&sM9_F3t~Fs1%SaH}&nkzv{GxUH6EzH8)T1EGa)GRgyj?-x$SqNCr#eK^u|hAIh$bj?8b(`ie>X`UzGfoqe2*{k+O)WPG6aG2l- zUX!yYuCn(eU5MZY`p#@W9$izF%(sZ8pBM7b2g^Rnie(%YZciOq1sSQZgR!xGqF22> zW{efKQ%9usb9N${GOw@9KQ!1`^wRtMp7U`PYyyR=D&0DtJXC_lSt+qR&>%(BNCKK> zS=hfE1LfA?$$41XV(V7wm>>cqMcVD7U%V6L167BBy zU#81_>waM^9JH)F#I*aVK0*6g1y4-E`zQOUbcRbHqeR#=;vM0@=Yj2QnbIHf+()Ia zbpN5PzmqBeQ~d;BtpE7I0{k{M`bOtsXHI8g?%?S3`z&<9~`M2+9~c3EEm)69Xia9G&!S4F5-&H$ur$c7-0LZC`mkexcv-%NGw@ zqn+x3f!GEGIp0wH#l}JDR#xKrn7GdSg?oKIJwA)&Z~aOOpUq3K_8zhE@N{(#7B2Ak zKI@_LCh0YT;6aXxzz(lqS~FGhYnsZOrGK)AkXrI1qu4vbj9_B@5eMP>l(}frub%rJ ziiJw6pY=bJQHbYjUQJAa3DP(rOZgQy}P?y-`=hIefZ=cw1t@A5Y zKm~p39`?MWWqi<~tnq;s*Q*v|v6$0@y;zqlx1}qQBLVs%EY0)U@8`XBSdN%_5FCoF zIHrhixr+XIWWp-F(_P+2#!dEV-IWyGnTDJg1E|J)W%7jSpI<4GH~s z)Wz?{7y$%AJ;x)Th<-?7;R}#n-sy-y)XnZVY}e(*OQ9+_xl^n3(_)JqUoB4BP)V z?v?Z%OaXVmO5gEcn$!`~OEN$VC}5k4NtjDUh{lMh@s{AT;FEe{O<$3|+KR_;!o??! z5^l}4UViq(%Ib6tWk}rfOH1*7`rxpRdwTW$`1Jh?d77Ppz*K-E(2;yn3+s(#y1UMW ze0V@Q6i_}tzDiv8P4Q(GIs784Hxx)L^qc!H6=i+{X}bcy?bJ;T(1gA6l^VL0h{RzV zNF&w4yK|7eX%)ASuQn_lE>;6YTBw&gPjdpI4y5@^auLu#DSco#T%Pm!>tcPnBle1L zK;!S*?7nsY*=MFwu5`p7JFnnn!&i?EVjDk;_f?nhs|t|^-0ig{RH@EygXgLC=6%{u zEq@{WpsgkVaXio)95zArnOM${zBGyfC7Io#mI<`3e-^wyMJBgpoaw{^n(ga}_QzQi z#{5Y`Kjo1scv!U$!CAr)w7!5XO2$k!MKK0`Shp{D8?z6?S<1oYvwtvQ$ll`ur3wON zXAxkh{5=-&`EMGOY3K2!EC81^4yYhe{n2#)+J>NN>tOWHE>eWThz&qLHzSSRd3#Zu zJfMM@f~1a_rGWM)7lMNFPqly=G39(4LNaG$QE#DfmLDBkz>E0$1l60skL10h(q<8R zpbbv@qjTv@4{GmsF9Wil*!@f?mGmlsjOih8kx!Ai3E1)JQQ4I?Df~nE?0_r}IRHyR zhrZr`tBm&G-}bnUf4v7^O>qSKmVT3Ab_$Xw>xDaxarnMDoQ3CT6G56UQjlS>hinWEpEnTHsc6+CDk{S z-5Fc|&;S!r6>N>j2uaYV!QAlmLN#;=pustw6q-c?wnJC(&16y24dvUZ^Q$+sB9^1q zfJBLK28x}EM{=@CM2e0mO#kk%(@KF-de|6*t~)TY)E2X4K z82q5*P^c`hj9l$Y3h^RoO|0HSjC?4K)0oH`SRh@>PfZSa%;nvXF!d|vibwqlwc*fT z&D&>M_7qg>6Q~!vp?hVI^s2Aqs%1ufqRrdd40CUPYtx%hgrGG5kVgddr@8Upp%zdV z`X}lVlvh-cRWaUK#Rq-A{|KfuU~K8zfg=NQD9i&-u+fTRfGZ&Td{#D^ zyLslPorm)Z-)zO^`09h37Bxp zmTv7U%#@Ft%S$petKT&6*#>mH6E&GKR`aH|s{~#W&B1pv`Bbo&fcKMPvKx*T>3YND zG4veP)*Z&K*~;CzF*h{t#v&B-o_)_Ma4E5CEn|g+w?_H5%y=%fYI- zU1fHRJgV52@SWfcDj46Xz+6n57o=*Ewcc<<G`T2j zzqi~f4qF>zX) ziM(=bX*=Kx{k)w{ZeTrwM&i8XJ5sQq_xeMFR%!RE`KTZ6BkxAMw>(*RPa}poXMxDD%wzpv{H-BI;~rD=HcyrK>L<-krq3rp*q=qG68adNDAK)7z=d-jKK76m1BExr09$VF+h%|_HReiD zne<4^4aGlp8MM8lc=l^XH4-eLRM#C}`cB<}VeJ{NW!75IwoeFfyFtB|xt_?T{OWFh zG}hIHJW|KkrC$;kV>A4U>fOYX>#*>LhtOoHMJ~dRn}Px?fBRZ6C1}`XdMI%jOyEV^ zdm!jZ(2EYr^h$CY#DDXH2`>8RJmg#bDSkuK7mhrV1A=>`HzPr0FHW~+uimuj_h&&L z;pZ@x*9?wTUAnuMx{e#zG2r)Ilgs(s-kVQM6N8M$qkR1dBE-f71#e>)_`HmZ$RAr| z#5;UMxF;bUKM+F5r?5z3pRJ^T)y=b}TZ-=o5$Tm~p@_2N%)JbnniXTlKupklil!)>^vr+LKeEnP+L)xx z7IYRCM)UObQX@9iSYW-u`|k_`Y@^@b1HhMp0fCqFk3m;XNKQgV{GXmLFlOX8Jqr4u zMCVuf+PV<|?X+dJYOV#5YBm{dMsKeg1eL%jC?T3>yEoh$2)`+aDI1I>9d3{I=F#r> zWIEpJ)7t)du}1?fPff;vBaqD>)bRHtoMx3kMDPv{D-!pVUfT&D^V~r8Zh27v6UbTLUe#VAyH)93PEUb zZ7@V1u=OLx~Iro^O1j>YqX2|BSn@0C$uq4g-qx932)eya|NXTJ0tqr zUHXOP#8F*`_s1jTCTfF5a-RvZY?^ETq$`o4`3B>tvj;d#z1)Cb4o`G323nD!{{54h zyor4_Q3YI64DJ0;s|#w&0$!<@F$c?@SogY2)XfgD zR8PuUVs(lSUX>G7*d&CU%?QrlwBiHBcn#E&AvCq;T#jVCIdCX5!d$bzp&id+m17*Q zy~l8An_lDXxc5~Z$YC&WCb3HVd^o=D#)w%qN5{iptx$NVe$olAEtYPGQ z+K!N=?3d4tK(+6yc2DTB)I_!ZNg<|)_|_(TppnK_CM02ZBU9XF_b@%|>5g~Hr%9xp zEOt709jH|CyvM+|bMrH2{Bk>J!k@EaUHmy`OPv&kl|fK;(aV}%)vq5+_;U>6$;w7o z`;-xwG}ag6nm|qFaaq{pJPa$iMv9%L?_4A+O`6xZXp-v>SFs0-xba$7SArAD6D$+o zCPXu%rgB=Gs*P2@`1~#B;q=)}Y62J^3jhR>KZ4+Yww3@OK>U~QV)`~l0NrGfZ#IU% zJ753e)RA3KeqS*H4(Mj;{Khk&kEeCqzvD;W$^~b?lvtKimzHVVTHv^U$EBQ>$;kbn z{{UyAzwund`=o-wama;%;ND6;8=*JW(-*UebG_W#og{(K|Eo2&7=?5dbR=B2$)7-< zCN@1xP*ixFFd2!K=c~)xIA!)TqiNtN~Eq&%HGT1 zg&f&lIQgx;NSjtVf){- zPR`cF_&;|eFm~*>hYPgblSRP(3i^S%BcRO=-5b&0t0zVuko?ndyW(qLtbLFZ=cQJK zl-A=XfNXGs3gqVwgZJ4xbXvOPr$Kt=rcZKdITG5`pfg!}6KCWXU_}-;m?YY%AWd zID!6eTiH#skvjnF1PP$wWPijlfPyPKnOprU7{zMJ&dMPSd<284Bx*;OZo@YJ_?0~i zZHp0CLs5{w!fNdz?P(4*yB9sZR;L}l(HoT`i-h<3$s0N1f>%tdXf0?~sApvK>CJR} zG~K-8{rwfR6Rkl4!&k1GK9hLg9C0Glb(}tjMR|@vNYP5H!HAJQFh}76ME(@ae&o(W zCugH0SwFeHHz-FUl43d5@T8@-XwU;R`!d3SM!Q~E-Ql+I?C@87-jD*)%Q$_(am&`C zgy58sD5Lb66c8UqA!>OA8_bl7^UpG4#WmvVIDPS1A>|~T6(u8eMx4B24RdS%VR(s2 zDbyf0X_wx_pFa&0y5p(a%;!nMa^D_M+C1ks9PeH_XfZ@|FTW4aVM5Jmgy}b}b6jJP zD&x9pT-ZY&=hPfR_m{TtL4U zs>gKnNpoJk-_{mH)6~JZl8JV%`>9NtwvO2`YyPs6VsoQNH+OFyk}uC+i{6{Re9?kZ zY~;q(#y)P-QD_gIqJZJt9fU4ylcsP`A|cIVKcUs-;@_axM*zRP;;-Vro6VFQM;{um7Ct?$Rtj^Ly9)6HsFBy<>ypVs{Bq#64Y_I!7eYBFz7DvBTYJ1pE%UZ?=p zXZkGCE%usM_GF-eNuFtVh#d&;WYm0bX@plqWc~iPy2Ut)YBesv#Q*`I`@c`V{B|+_ zrTq4vFf7+4(+yBF1_sT~g@AHrx%%Ea8O9a?IhCx31!p1GY&`-cDIuBYx3M?W>yNi7 zifL*|$C}&}?8bD_mXWbEQTYJ>sffKQMl>(L1o9_pYP=GEQNU=ay@=}lS7@8&i=5QiaTN&wcPq_%8$;Y=XRLFz=I#jiS zL|po&lq$JE(4Yb@A7O}*@2s`&*?pe0EO0S9A8bVsjFooO4tw-ShB(kamPNwZ3D^E7j+|xQQ^a%`&S?<7?UZx08DG|F zEaL6DT&JJ0nT%FHb`->NceT;Bk6ovG}-O%0-rp*|8{U1pR7eeZSuRDzO5o&)B>4A zfVI$5#~z_lqgfhAy@fp4JDdN@oXl@N$;B^zfdg>Ay#Vd1|9waAZ!G_{ZJ=Q6X#35< z(D*+O79!@4RKBpGfZI_JBR~Xrkr5-*kR^X7$mhZoG*DUCL1-y7ptkCA-L+swaJjI& z6U57gpPQjdNwf^Jd+r8uvJ-J7fnawSQf4=nK+!BUq^BruV(UoIX4Xx0euoHcJVaGXzMVs1?jOY| z%c#t3Pex)WT}=)-)@|jq+)QhlU4&}-)*&-wq!@xUp!EdU7(zt%%dn({u0o?+^-fEx z{>WHLxsqvjjy$^WIr=4?pkr4GHGkF^`9X1d0c9bcdFT^KTZFjtI#XBn%yy~)syE?W zOh|CLmuG`(&p5A6QoUMOrw+%qRx<%1?xH$QfzfU2=*Po017P{s(&&<+sYHJUt3xQB zU0>e!fkM4*Oo#KaL`WOC=?#osw?PZiRHu7GopVX+g`r)xjMW2)DtfX6oJE=<^TDVy zC@GHGy^&~9g~c(>GpG3pV`;k;^=Y86Gwd;TFE<>EJ_F2<&Rv&u&_z_=3O-erj8oy< z`Z}`FHpk3ni9q3otcQ%WidN)ma4r#sI6gb{@fB2I+A;1~^m76dWNE>2`hqW+Yog=a zXq&FpYaUWVPKLJ<0Z2lc_<2kW%>BZojt)gY}A<_XcDOY4?ocGY1Jy``8wnjQE4b`pW+D zY4MVv^XT%RZT#qsK`du+=&Y|?HS2~zwNEl-E&VqY-n^@f&GMDqaq8Btc=YbvtK?YR z8F$J6RZ9!g4+I%>36u8;>&-jSA(F!7DX3zHO82Bx*0axO8 zeDWB?yrjIwdL+4~vO{yjY4vS|To+geyTCu_%pyAI;&u4^isgp>3g!m?3VNNiSsC2{ z=HvfL^GI{;q8HQ(4;LM#7wP$lmLRDM=n26y0Namh5K)a#wQGZj$}YUD3-X%b5#%Z3 zt!!xmZ;)>Pf{be0aV*KqZ-WB)581j(>{A~%Dlf9At$zF44Kph zP+rsPwsf>N{4#xie|ZD{#JZ&i1I8cG=?%gwn*FoWX;jTOTThDy+Yz zTgDP=BPzxcVvwCPDuz_S2o%iT7#5arSodbIO|73!S#BPw3UjFx9h0PMjS?IOtS`fS zXzRWStp=eYdg7Vuhm$1bJdNb5T-3`M&m<(v1}E=c?2^D%lR9tWaS)uHcEkI0O{pD@t;P80 z7Nmve=@6U1pA8fxMs=mh;#m|-YkOzYl2D^TiefFLbZISycxei5>CJd=ebv? zYHyaQ=!;0p6i9-k*7$^srd4bWnmg5J;4F$2_c1w-GX~K!3C~PA*tCt8pS4TamV{hZ zj7WxSV!{+)$qYcg;FKPxV-mc$`5@+(kf*Yr5jp!d;<@}tG%N0i;lpO8p3Eif333Q$ zNqsigjpNBN%;Jg5N6S^(5yD_WmQ;sPM3R8h4s52!X>xH=ACM@tROZ+hI1&F?TDsI= zfkSM{=^SRsqySZ^Y!GT4!tBhIAnKzubUcvD`;4Nq+Qx2 z+$xDykVgO&<9bQ_LcS*+E<#~`deFD-V8(T#kSLN40tTWRzL-0ngh#1Il>{s290uUQPbQ;$)YZyn6_r0Oi_S-AwhgEp~OF^ zBa1^jOmr$Z7;fv(XDFbjBcio~DVMsS3xkGNMw>=1qjS+1&4KJZBTjWvvi2VHR|JM$ zaP^1v*C>vk!P+XWojN<~f8Rl6H&y|h3phu4fS3BeY6uR0Imf`*5gTMcl{9LFIp>H) z`~uY77qm)`_4KP4IVg+rv`C%B!gx5B{q7>s0N9mUS+v^aCvKE&*L~(B!ddmlTD}j* zeKAw-kEbW-PwSnvl%qZRpplezquH-A7Dww$$v#)tsr<#}NL_m6H1+HcJ(*Ritwocw zE2R6!shXJM#F7`hO}Kdi#Kz_iUPq}+{-Q$y|4v*u|s+=6QuXy{t0PA&A)`Yn?>BuQkAC~;Ja{K%Sh z=$sx3nN-r4hD@?7X;7Y***Wc3nABTaHabOd(o*Q^1^DJo70Z3lLVeO^%Vd{)o~@iY zNv|ZbmnmlpA*jtx5JRA>Dj$rV%sl& zz;C@p?5UGdV|QV{n{1hXf}XRd*`W|%-0d#K>uldKfun3nbW{%%ZK6g0tk%m^C9EcZ z+$5kyQh~S-!eWrIh;M_y7NXf}y$xrd)Fiq}#!Jcz*}I;(uZ{N#`rpX~oxTYD62Q)O z06YI5wQyDGe}|z!K<{~$9)-u|po@DsXOE%Pe1u9dd#MVz+WadN*6>e$;nWPWD`Hw3 zEfQSHE7jj-{_Kgey&RIQMCrO^nB_6v#@7CHb+h8~Y2vaj%-E{&swsjDrW~CyX`iI0 zhK*Ct?DSZO9;TlW-6Je7g?#-ch0w&S%&-E^mEf$6^b2VmNzc3*G4#i-+Owm2e1B$q zI?gku>icfb3Y*84V-Sm`r~?Tf^fqY={q94zyx82fR4-o0+L&u5v@&QROq(0QyNY6% zzXC?-+>=(}%WFW+PN2<_*@x3?AkeRL1|G}RobZF&cTEhto(JJ(xgbE%)!3(CH)gaM z(RXtw`~XsL2D+$Wke)|&s<^d+zL===Tv^MBS}381rA4C}S$jI{D81|muhc8>NBWU@ z5eYD3p=tQH!mo+Wdc>zxHrwGpi^-W`3o3}AisOEOQEQ=}ll+R&L8*47p;;>3Z*m;u zyW+(%W3+m;J^Y9V+2V@TLzcW{Tds#QxtU(iO_LpjNL$hEYM<1Hv|iSX)an9Veo6R* zMA~d_Kvrsl>b3t(w^i-=k_pg2d4Ku zHMk}iDyKJ2NE>3zhCS*jgsJZ?lZLJO$7xj~DM+cI2_Zv_1Oir0Lw7QDb*=E?#2ao& zK+K}aX}VZL9BDlVMRUlKFV#J!nNKLif+oo*@k~sDsI=MJtBPQGASP92AtA|Z$1fz# zj|4l&0HAAvV7Y*sTp)>yGeXz3Pt61V7tgZ)eSt=Tnk-2GRS-`=2Kndg{9n)A|9y!f z6ahQn`BB<{-=Y<0;uTh&eaQ{NhAp z7XTumy}#ql{RN*d7g&~Y&xSsKoncSv3^oN(5e;$iber6HTyQ@eGb+ISW^r>iMPXtI z)<75kqweAyK}}`DVAfD~>Jr34y3s>o;^$6nr@hw|0d7>xMV%HL>0QknUvL}#z97YZ{?EDNZ}m*6#F5^*9F&6a6dj3j)!-{#%|7A_ z@4{pub53&4QY6~`NcTltC0DHfrMqel6WT%CA$wA&s_`s8jzL zE&J0~G(CAnDBB*K2okmFCK%%gD!Hj9i`$Z|3#@jN$Cj?3E)P519bng=_OQ6-T5L~I z5f>p_Y@5aX(mOsT<7_zv_9L5)eIs10lZ_rv;QtLa|B-YFGQee=0et=(l@*Mw^xggq zwLm!@Ss;Ftbnt;9d?0UU3+m2p%Ts1nj5sEc2rQ_UJ+;=ryYW>VtT$B^QndF^KJiy) ze*OJTeQ9hrCL1#MJ2z)IodgZTg9dHiBY;>TpA1n;ZUdsN>t8^MkRyn5<^kolvGX9t zc0|E3iM%gQ0uRDvFuFfvuzm(qEhOZnytr1bR)@yTI%&X?+2GfCkkq?!Ubu+{6uOB+ zmS+|y)8(;~>}srMpCOj)sJ+i;B$@)vy?uRFEOh}w3{sd71r}h4DaN5rtor5pLX=RM zr+zxZWbCKXVTdi&>;JQpKeFn@$D;dwqfqg}k7kiSh;KHXd(dh>)pVZ`$j>LX?zxYD5bc~Z{?eT6IHowv z!JCW<9k*hG1j%t@-)Qze=x%N6Xa!>L^TriFHL6bQ(?RDUid#xZ1M;%rL@!-Q_d>_`%&DL2?d0LiTK1#iE2nQ*lP1wPj6SGtr~_ zuzI#6n3$Lo59D8E95>i{bY34o*uVO{`?{IaGZ778tFsa?t?!stktrYz#*OxlGtP^n z@ghTneHzgRF2ET1*{dc@(=TnP_@+YL7y{fYoJ2~MG352P_8&>xkqZXEF8Bbi`)Ass zC@21(YoNFSAg2g8jm>r9bdv&fTl0xP;=bq5w!&gdN`d7nG=$2OcVkOZNUAGq2@7dZ z@1bPGxPUen6vMp+xx50RFz-EwX}@9A!$Ve9$EQu4*78nn?D(y3nCtZ9ZRjy_co?G# zUvR(zRaOPTO51;2QvW*2ZQWdpPG;eQb6wn0IIJguwjfsk^WeQ_JYYqX(H&GeQYUX& z7>^E?d8u`A-^XE4lR@5^Qt=DkPKzx6<=%suOGg}~fJ=@j3X|S)qI-krLWsz9t{P}F zf04(XD&7Jc)df`06fYn@y^PbFB%fb81WnP&6~G zVc04N)K3i%$_C7|aTWHc=a{Xw_G8BP3xt2vrU!U6aG0D!MQ&lm9jqd4>X(cQlx7NIaC z0nCr!Rj$rVJ7u=2iXg?!4#*=B7|CO@bCD)^#7WFCO$AJI4|Uy;xPLPowKce2M34iy z%46lZ(&O`|M^6uMyYFY%BGoZ{CTN;KDMYA057qSQlx!gKOZ3A)uD_v9K5ecOc@gns zr3mm?Npuj@GulfP=2jd-$Dhn%u}AUj)g_#Z_TMD995@wRC;=S>XUve{WM(YDf$op7 zlX%@p^`KBCSnOd=qjM{+tvy?U?cv?6rr z3oXmsq+Pb2e;ZSw*i?kvt?2Q!nGUJ3jcJ;F<9fm;ixJS!d&q+Ca=CFKIk2riy%RJ1 zLiAdjYzx&Lu9vnosE-nU)Ta6a-B~2sIIY?U&d`di1DbxEp_iRBnSnjfJnRX>l-{!X zJ4e_JgKoGz!9IGmkv&I$0)}b??Sw|HW|`05$n4=Sqitw_NoD^}qV_ML-2d40pG1uZ z_$|9Y4oaaa^aoJG&ocOSbEzNoCekFZ*7Qd!bvVP(#*Ha!K+lz)j8|QFn^BDGDR4{H z7C&C-P0yPT)|(&3PcQiRd_KEIsJe~r7^4NNv%{n`PA5%q1wC1u#S`4|Vn75LC_Zny zdM+WC^myPhl#XRjv?*5PH_)VnjvEhFZJ_v9JMzSirzq*?yJVhfvmdNF@;-VE|K!E_ zWs4#4Og+T&B(0W7p!)6Tq=h9(|4J%kF|MSgCI3}UND&({$>2Odmnq)X`UrkSsmSco z8zs6uTPPVqH)KacU`UUCNX=9&%sA_5tei>v+eu510`@|r-;~&5CoO1yMT=4{-cV%uVQxIT(lc@e(zuWUOL;ZA43}(gf?SSRx_F=Sw`xfFG~GyUL}x!D zq?;UiLZ-RlOSmcb^sYPb?LwUJ1RH$IbBSQG7MnU=Tujs+kx`j7upSiy+-BVT+^4`(@8A{dBK@6vUWL-zQdD6-D0ZLT3u7PW2+aao?={j$Z3b z1|1+U^`AGv7hRS|2_!B1qur<{HIgBsiM~(=3jitrQCE_8p_0+J$^ zeN6y(iuwPOAt>5f8Qa*J8~q1U3L`RK7*Kf7ufJc4xyHvoXcAL%rk#gIixKB%e~m5(QFfcG7oRFe=R@GKM&c*8#&CyB2L?x!2gT~u%9QO+6k)7!927U}*L+Y6O<3&`d>YSW+HFx* z>kFDKM3`;w{#Ov+*?{5lmX5 z!s%oa+Cqm*UtXQ)+C$BEqsdM`7N8OC-_H!+mVZo%VObf5e<1!U8h>heK=Fw`CD( zsdn%j0K4FI1OMM~K&00E+wbwBZNP{1kJ+z~xv9C6zLltzxs#!p2w*MyUxsQDqJL9w zgrJQ;E`U%@UsV5aFAz1i0f2pDjbRE%(W_nHP{F7-kJKDq)G$_GfwKrQ{6VRb!rl>d z*S&!5-eX>|MqS9<{x?SVE5K-o9dOcbfX|;9oj731^4~+5aw9T5^a$7w3GL8(6!xEc zbN0Rp^_Bk+BqRV8=J`68xi+iZ2qnHpjQ>a_BZmE(%T?QWlwazb@?>IqyxqLq!ES;L zDDT?qZB2H^d_77el(+!7&Nvs#-t1Q-nY^Y@@IQ6Sy_J&@Fj@A-9<(E7NqGyR&Ucgm z8TVotJ6#}IVwx7WXo)6;_MjD9IcbImuB4mH&OEtNCKhyOTaPrPwPNI%Wt1?AR=|eT za={+Z9Yi-5MOhiwEJ?RwRcz@9JaY#!hQqX!;J7y`U4x)OLr4i5JhZS&K4)Y4`DDjFLaus)A&FDcrBx^$GH-OB!xo z1cX^`UqcsKjvo~PbvBt{@vCDX&1spPi@&wwcxIdO^84QgVgpUsPM!b=4+fk)*B_Do zPsRf{e&Ty>qLM8;FS4$NU_|yIy(P2e93>7X9_-X@~@A3lZ8ODbs%REv#A#*ZU1k z2?A3 zTmj}b#J@BX4fY^SKa$acbvyCPI{X!d0Ce;$@CPs%&pLGaJv(&k#!l;uei0FNP;$|XP1O>1GBg_k z(lvy6v^X_3iGt0U_&~*E3g+GI_fcJYf$dK4OZgwi_j-e$8G^mFD;rc<-gXWeFFs}F zZS+#&E?nhDW_~>*Au-a0EW3Xe1xny|F9G2cl$iClXOQ2QlVN81(!-qiEQaOaEUt1I z?%>;&!%5>OiwSCKN_x;Gb&MYlw|*{42hvgjFD{*h>X5Sq!~ni9wdGe*dW)%3MO_c6hM__xV0Mja1os^oSV^+RLeycf7Td9O~lJ zhAx8Z;|0P!-j@{PVLf!JSD{rG)b6?c+J2Qza*R^h4gt@t5vXI&dG4idRNj@aPt21b zLjFq)11x18r*`7O+E%WuD%T5=t-jJxY?3c%HXf_pI8iS46FYA;8a8Ee+a9|^Lg|7i2}a{=?yPcdKZWi~%#HXn=*L}hKX1G@&P zfP!*UZZ!oAkhsFU_>KoKxW%^dLd!Hq#?!B91*e3w2(kcpQslNdr9#j%g{p7+ri2I+ zB``DwD_6A)Q$;PWYBPB>0tRcQBuyQQVn^(8g`+Kf(*?h=?e9^V8LQ_9n51ehg>6$8=aGz|0kP%I+ zOIy-HH=NhWF1A+#ww0NY#+UT;I1<$Bsm@AS5?L~rQ6GU{%YqMXEW8vLnI9 zs0^XmaBOxGdvI2ro46((_FchW;NbUNfBb^G*lO<~;y%l}gD5f}O=b`lgVe;1W`1RK}RYFeRCG&;d^8}O<3 zwn`I%e?W=@hm;aWWEC3w5{%5(X})g4U)c`E{+Kd*JpG-o*ua1oOt0-`ayaT9jE}#+ z-@KuJCn+Pz(O(z(49!XEM4gJ!9m_ld79{OJJMv=yOoW)1fu8cJ*f+e_6s!g*>kCGl z+N`|6uZ-o1HGiKoCYoWVA-rdZ$b2q;imIX*x{NwleQUfmQ9M~|J zt0bKf8lffxg0mCFUnhGmX>dKOFK}OoW!UG;7)KATGxjaM-0>vkR8o7o{Q9Q#?TfA3 zTpo@#>e`a2+C)OsBV;4bIo_hoB*HsC!-jsEQZt~RNoxzC&SR1D^tzbPZn2Amn~79?u1d0icV6gGrV@IIZzO3R2dC7Q{0Hf@=zb` zH?v@{Z{!8Na~&zI=K9%!bA}%tI!>+r5`hD{M@$nV#zZMKoLSwxKicH5jT2HkJyrEV zd{&Ou$9y>BI7Sm%?D2ZfaplsrR=xFzNvB*xi)zvuFIQJgcSMZ;)0S939-;~1s0cf0 zH6N9%FCz=FJ#=H2UGO4tj^`-CDOC$C!izxo7VT2NbqWe!h==?uQp@r$3hU=D+vt-< zo(l<&6g4V!?NQ*vvSeZ^D&+Vgbkg)ZOx}^bM?TZvb_<-ON|P}$T!k8Fc9~!avt;?Q zl@;7ivHLM&Lz7bp*Fx3oh22q(q{*j?#5yVlzY|gj#&o^+%H~!_pIZw0f;$;%mM=S)G89d||E+AAb=z3D2k?AJ0MGa5@`)lq z6iwes&ep-{-w`k(R@!#vD?*UzisxiqG%Kt$MOL6UJN9LuCL%Z)2xeeOXz6`x2-&bo zB%4O1W`a*2WC$?dcf7!4Z8{aofB^Ux*L^P+lh*aDj&{In#ttL2J|7ETi zsJG0nl7%)sxuYQrOy*$1z8Ozmk#FMzkj5H<99u)6s@=V`>QhWH42N(G<8Nt!mqh}` z%dI2^o_iCn+oEDzu}sCcMKhNH{9Lsm(Wywi=*&pU*FZDgrE)~GpC@(@7iRO1LASKa zCs^PE#>-3|SR~KFNoN~J&c#NAw`>xcB^kF&Uy9EdImC9QWeYWi0=i66c+nl>n;XWS z3)PFFdGqgy<;H}E>!XXm-G&=B+T9A@Clx5p;}AsodvXe+PBFx%y-PJxpP@{Pawcj< zEJ2U~RWi^<(ilyWJ1NF=Wun7WKC(P05_s*G)~U2s09y z62&&BZhl?-Wp_~2&M?NB4WtY<@ZpAtf&IE7{#>vf21>aYjM`GRzXWEYF{zO^NXBSz zcgLoudt?lHTsLp!0DQhQhouLL^~nl$p2E--4_A#Y!4S*6=2Yoxc z|Jh;mj~CEiQF!8#a2CvQNnnX56|f|bvcW>MsnGcG3z}#YN|X%P?1PN_EHxv6kMJ&G zUq78FKq5f%evcAZwa-N%Ml;Lj0{FU2CMG@~uaD20khovy?YP3I8{(Vu3|GG5xUigJ z3~pvRU}2?VX~1x(-V5SpuJGdh_zdhZrWej*KG6eHdY{~}lX(087<{%Beso>7 zKv_f38IVqwwy$HTPn$%6;~#qfr=1F~yLpWGgOKH)$_R*%dJ*oKzgL;F#ESF|KuRLA zRmeYPoPFIdQSA3ZguRNK#{yqEO2ED?nLMf7Cx$X z$+cbw&sigh+q4vK664I!h5gJ5SeJXGF{baTk**J>dcgwqN(FW-jFxVT6ZL?U93|Eu zoX*Rf&9e3aX%E2=H)OD*jb^Gl==icE3#y88S~BqJv>u{YE>QyuRpWkx0O1_EXF|x` zM_Jf~mzg(1l0u`QlM`F5BU>mfs+5)(VbY}E2ZFC!AelN+HU9=#siCMO6uC%jt&f2r zq0LlQAqTCP-$F=X1%sAJk5QX6x%IC-ylJwh!_j9l%KQwj|LjrzhY}>C@c)#Ka0+F6 zzC!4cg(tPl)e4cV}5-j9XNBZ1p@zXYGfQt9r1B(-mMrJ6!RI1zNfD0?l7sW@sdb4T%i<@RqJjfm@n%9(@c#W~v2& z*m*Q8D>R}v9B-)ArxEU5u|zVxSuld;4Nc}PS}vf0ge_LQo9BBppn)MByp-xwTAM(Q ziiY-^C9-({`!6@nowQZOPTV)GQ-{fKxeVniUX$`1xoG$IbsTf{axEH07a5XIz227X zlHU>Be#Vz7)9cl!70C=@8dX`tV{z>+Q(=0={x&*Ja1t5W z#m$zM6LN&!FVdN(lHdrui;CJ;H(>4y?U9HGH-JK8gxpXxtT_bfhw>i%tth(n6fQ23 zYgdITy_OpRDwZ`lR+5aXA`v?=vJzrgMa&9!Fx>p{R7oS%4pYLL$oJSy^Uc5C$3u)q z#j}d(HmA&jn&^CQk zOk1r3wV<<}-|^w)na^NW81OBZpBdfq-6JJYx8Y~f^osjATtM8UvJ$JD@FgBF^< z;V09AtiH>(c;zaceSkO^=b6UjH(?4*N#tbI z&gF(uslXIX3ARYruN}>tzgs#>?eY-zGbw3mW)@Es?Wir2=J(0U%%AG4Y8Bs?2*HU? z{wg?D)>%I>Y6}|_V$dw0P)w?+|qMO=~ z2uz`hXZ3*~+ixDHBXP%W_d{S$lzv15#I}#9@6*(#M$l9v@ZSa$c{{Jwzdy_2Ka8~h zK8pL_7a??%vN3eB{AYrGOz)rjHla%cM`2JnV9gd2E3Kz*#?TN@Oz=(?kP5@!3yJ2V z26P;@!Jg!Xl3?;FSRU{9x;B@(sxPBuz9h3s(TdXIM<}xpS0}ofJhOjck?g)vQlG36YR3zs+ zlDVwc*ru=7&Q5-dBmp2&3u@P&3)i8lsi8`XQ;R>0A+I&dta}6J-iEg^R0<`MSy$Es z@QE6So%(H1iPt&?jQR)pWl>@rn_Sj z8oAgdwEp!VIkxA!she}BIj|k6Hu#%aV1#r2XE?S|a zhOl43Xa>SKIkBQd3KR8=?0^oTF>d>}o>HG#7ZSN(z2S5}sYyl91^wBFa5t;bONl}= zp0iE2dTqX}uYK}XGQO1LWb`ua&50TiOD$F;ElI7<>=XrQpj)S>FxUle2X3$@<*r%X z2xvG4JzVEDJQkn_tlk*5n@I2=nMb$l>sGf_T?IgX2c}xFY3Zf`=(jrsEif#_cR^<} z3_uNHff`U9&5Vx*-3=~Ym59U2UsIKMH3=pvozsy{GFZ~@~4CIdORG2~{?Rd{|vV?(bvjbRO1 zM&NZJ^s2pdOrDO8gNXjyKC#5HX<>zpy&a8xoHBjhqm-(E);D}0zJMEF8b$W?yYmgh zEpjc*OO%hlo~4i9HF=y^Txcz$81XQ@&|Jix2|&>%?L8FOe#F4n6@FY5uSy^JbimHA zRGYr6%r=x(cp8aICDz^K(@I1qCuBT!iLnX}V-IXXgpRIEScO>#*^06wbsUJOd&EMHW6paw|q|T%SlIi zDTO2a%TBl3i{BTIpFP3NrH{|Yw_mK>h}YgoKvlwYLGl4X&!i8#{@^IKky_p(L8q3g zhW#RE>z~{zw83H3u(?(l!4bWLd;o9YMpaO5O+Ayd9IQbrEV(kkSSf%w504*J5B$i6 zaDg)eGQzFGg zeJWh;yyP01dI99Kr#m07?NA9qFR$Fs#PLdDHM&ErG1b|UkySs-va{6<=+*HuBHY&r z@d>o1ytT4fS<68~dW!M7DhhNXEjYMqCA@}IAM(cVRdzoQrQ)K_gs}>iOc@3t^^bx*D}2$aXC3eMXZg%Iodtsm^u1Fm7WN-IJxk z;je{?>;qKAVOAP$>l!tg4eL*2VGw_Yd1_3VDL!kCGAngTw}99CQ|JzJHl>B^!#AlL zExCDB8Y?xi{N@wVZx#z^uXTXTT!dbf4E!RHBy|#gVzr-ErV`nxW<8x^gfTfaS)$+v zMGl2@xzj0@RQqGkVT}?mFy4}tc$Ei-J6P_OOBu8QNibzYgelvEYznX%tXs%&LI zh1pP=ywn0T!|a`jzEoX|1;Qp!qPTqliRO8*onT*kj!C%--=cb02nWK&jsk>GQ|jh@ zy*RPuX}7$#9Qj_!=!LBk32)?`M(g(|gN?7~PBxJ)G)vZoVzcE@azie9j_#()w_SCy zAR}f_LB``}R`j!(`a?5T^EuWj4vLxxq>X$eBb9jj$`Xr5mCSME&P6~avz&2m(AzJ*Fn0wzy)eM^y-vWF4ys8*T;MY)dC~gl{lK1qRrG>V zyqJT8Jt}M+;tiJf=z$m8m0x%bb#y8@GncSMzFX754|2RZ&L2UINogHZl-fwS(88BW;wb| zUuQXVe%rVsAJEwC$e(Jpaz|S$wX$6CwI+AcXK>baP=q|A+N}j?y_lW&7J$R=9^mbt z6sv@um$=1w0mtJMd@KIFZy(tvq>^Rhp&L~ zD}qk@bXx2l)o_O97^3x1p>s=N5|e@N&4f)JP_)k`+5Xjm6Dx)Shxe^h;9P~fu`_Gc zrDNTpLk9W{u69bX`vNkHZxaN^i2zJrAk(h_m)X7u?Z z(hZp4Rem+T+~-HL;1LK)1_va$e(!-!IuPI;hQ~Z8tfudyrvtaN>g0m|CP@8^_IedA zW3e9jOW7UAO1sZPi=1mc^}1RsTcsr?OS-)q0xL-grC09S7s`|kiE?>eEzkGQk7-W0R#Q= zr2*!@77KroVg6nS{UeFJbCnWabAM;KykR zkWgJe8=4dre6?=8Ty1V_d=Pl8%#>b>9bQO%(BQd?KDk?OmjI`eGsZN&;Cfu&a?9po zd3)W;_W8OTjbj+$j<;QbS_!zFv7ZXZa?MiM)t3AP0;@eBk>S1~&>|+C`N%(r6g)#0 zWhPCB22mw?tN$I9mG^MC06HI`2-Qi{?qE<{)l=qn@IWGnCi#h;X15M?trmATETWuV z`;*c|r??>*p{|bKTk$?_msH0zACn^pO!IM!eZA+P9{k+BeA=B(yN z!&V9jB1e#zyOv4EoCz^q+;A0PTxcbIyt<&tS_gVUyfG@~uqnzRDbL3D5^Wk}j1w=5 z65$*%yJ#WJ0P&MAc_rxl~5m3nlx)>Gfb4Zvs@X0{R; zyH?-DFHp>b_k{MZOM?ds66VV@6SmWSlkW5k4E#nb5rZSKbGTry!j??l+YM><8wzt1 zQD$P3(y-;X1rz{ex}?(s&U(}70(sBs(Y_(c4Q0d#f!7yS#glkhp`}=fiM(*LtYQdn zxp=X9rGu0*lN5i98OQWb&84s9B&f2fy3Pv_!Ec4`$`C_rkh2-6oaCZR*Xt2-jLgya z)^zwm^vpy;L*)qOOGM6&ctRzuU?vNL?Bc5z@s}6NEsWD`RF>FYgz*R+1ja*Qw~W`I z8o|rs<5ao#xmtO;un#x;Km4Q}?M`C+z6Tg~6#a7Qz}uAqvDvl)x%`#pw_&Pci*-5X zD%1P=#5)uW$=x>$>1UdJ9U9;jXf;*l?yB4360_22Ouu3bTiY$xX? z4U%VQHDLn}()l{s6FLjBr@sbd*Z#OmOXV+*^`x2FZ9n^d7t>Emk00Ei*ViXyvEZ;$ zleMf;75x}+mK4l{?KruYgqGBw9A-;-r%d6D$rnZm*JWPB+L49pY6Docc}-s$6fCUB zdzlB=2O$D~gr9FT3i)}te(n24?iBy=oA&S||HrEM5Cwlmm!_N4 z>e4pnzY~Sc;F|o@r`~l^M+anIcFHWyod0nBVbjXpmzn5NC6dG zz%Zd5<&B}!x55P7L^!qH@AWWJ4;LaB9|m^{#fjdyUybfW1mtD;T#D_;ozZI=RAw)6 z(AyeA&Q%EfrH58CJ}EVI+nQ<)WFIB z`K`(<66U`CD1SAH+l~93Ym^XNAfy-|E@oE}PwED8b6mwE+X_70DtoBq+MXoa2xJ7` z1xF&0Tw@0Rlga)N!Cd8+j)MtJ;1^7i;m00Hk~p;8EOa|QM-^W53FB9sM`b8SIOUflWioH`#Q;y zwSVSkEFR+SLKB$-qyV{b8OV#sBIy>tYhq&6LsudRs>C)Xl?)ulWv(^^Hd?y9(KJ2| zuo;^xa`YzSvhl%)M>pLR4Z`$84hNP~B5UDAgv3~#B1+39;r#7SOF-8PBRn{8we$=JnQ4ct+l+_1 z%kFHSFB3aPnCLgekSU9FWxKVZgvJH6Fwm(94MaPkzVOH4pmTFPKd&S3+8!5ST>v|m zf;||yS6rYLgSW0VN9>g-Hgu9o&&F$;ANXff@D2QK_Cj7u+PhV^Odjeg`m_&8zje1D znD^}>U0i2&pxvFla$n3!hhkpWS(GYvTdY<(W5yqK3aMVw7wk&NIp1?PDsF$}E4UPb z3N^P4%8n_yWJVdZM>Sh5_3^r{6?$&L$SZYkx137j652#--ewRdw?Yjtim18bXP5vw z3ogaIGt2t1_#B2T^w%8voOvZbY!K(`dx6_>Htts3;dZS%G*3lo6uw!eMxB+C)|={r6nv=~MgDk~QjE zMC5VI-a-OFt@SpNRtCp)GA>;vrSb(E(sR+dO7!wLyxs+e^K-D#qoYJXcI!P-w1%W@ zGTPe4sAn9YQSi^g@cn?5l(A0YH&$ZzCpGAjVq^WWzw<+n-K5wyzZwh;AdaI7+g_Zrg7ylfl_MTifJUvTet4)q>Mf z=|@>bdlbyU=eiR>W#>5_?Y2xLT`9X&(z(@yhQbpul+20(Hm8RyL6B6I&KK@pY*976 zB`5-e-Q@r-VorF7J*i2x$UaqT;1;#jbf$guaxQMxK%J^S)mp1W$$;&!IjbduZZIw_nQJ(n!gEb%+ix^3yV$ zcT$C0XdmXqDCY*QT5k<>p!W~utZX)sojaa=^ihIiS3)|FBUi}>dGKPsf%QB!e99iR0(yB z6;{4LFpS@&WVbWyf5A)RxE;i*{0eOD>+BxNkBxyH66yMIzjS%@dB5AV+4^eBb3tqe zR|vQR=5HC=V@D(qE650d2p1y)<$yp{+SESCL?(`=RWrIV9Uf`FG$(}bc##Ck9z5K6 z@aQc*-@o()h& z7ZcvOVzO=6sdWSpq;G3>OCzvLpB7zkqt#msDcvs7lpxEPFVAW! zn`Xi0kDrO%TySC`J^x5C%_?|4YGYl+KNO)*>es8BGniN*OJbX(Y$Mvi$%i_Iu#3Z- zCvQqp(W=DNJ9PZ%cwfg{%)#Cpol>-4RwZqhP($S+rKMaSWR6k~lcm5PXRG3}NuSJ= z&Rl%546(7DYK;OBbe7WQsh8#|N~Qq~F=^53+GR?NOEp zLD4A&Of`!JheLNR+hX8#i6BnjR zgQu#9OFj7^%&CzlZt1blqYTnr5m%uhHBZ5za#yM#obe|JZ*skxFeRmoI3*@X@t?Cu z%>`s2<>FQHqykvtri1G8f>NXsNtKGE@C!n7<62y0r1gp;kiQ|llZLO_BC@v+>8a^{ z(b!54VE~ft;&XjQ!+wXI`yi5(e&@s?JC$Y+dNtfzDFtKRUdVlA1!^|@6t*R&p5-)9 zjkm+-PP#_9c&lDs*rnJOeANKm?++UZwj^LOW~~2ZB;QrAU+t0iR+MLn*okB9B|KvOv+ac&go8r=WO8o!C{B zR0{gKW*JXF-a#+9Bk|$Vuj}-p+T9lXJ1a#VrhmuK0#kO{stsW3{Y?t&e&E{w=NbaH z`Q}C+&(~25=duHru*MDCwKQ}D-?G3y%iC9u)uFeKQ!$ii?e5CNN~21lhgvBob)C5@ z%!^!_H2*sgdvGj34=p_-kK`61-nzuc!pOi|35#)Othq{rVg#c#LDs8X+|jG)JyM?| z5a#$Bs64SJm>w}a@oX$0)Fo!Ag4{PW= z9I%>9X=gmDhKaZ&9Jpm5D4c=dCxtNM;s6)~>D`FpS*13D*%pFZls+1~q}FihG+~RF zK;;Nbl#w+!B6lFVy5e|Og@*P_TYy;A_*D!x9H%^ql{Wy^otOM;Ejw8fx2S0B5$(VlDn1l99W1h88vSp!~=sV*bgS5MEGW4MU?r zukRvVg1UHj9~4}qXFB^OUPL6eHA+At1@kR(0vnf$PX~|g1w3?~MHE&WPo^`>%a!U& z#}?RTbTp)Hb;1r~=BKH!%cOuL|knUIhFj19s|x}r#P4Wh-e zfDSlJ_qi3d&QQmh2G^z92I_#J0|qG>{J9JG{$s!m*xgR_*R>bVwU?_}<+Z9OCzoo} zBiRxz|feHt5y zE=d;kYKuM^QHCCYBI2f1uh2-y?mU|~ZaGL*j_leGzdzK1l2yfd#WvF+@rB#T1L_ib zsL9aay4Fyup8I4xjyETP)YjKn;rJ!sB|4AdUV!4-xWw?tQHzA!G1)`}7CcUTAUx5f zMRs`pwf`dVsUwH^EFHYR|F;#*|KX(Je^xXaE{IE?1w)-fZ$NH{Wnc`M zg62C8GMy%pM>6n;(e{=2x3X^08t@MhfTse$Q=&p!;o2Q&!&P7~oxH0ur<5^WXU1x+ z#@@NNrGj^qOje@4FpMVaA%gk@^R|w{4-%)ntH6NgfFqq4qOyW~Qc8Q8N729djcpgMH zXdOkO>f(thG^qE9olR*!TdX?qtO@2cLhf?2xyW=>f?Hg~R1Y@#L{n|xkx zE3G|+VYKCF2{H}4+P06RpireoiC&dlhsCq6G-fnx1X^@}#iB$)FC%y_0K?O#_Q%N? z@lCOR+E%OgK`A=E%VKp95qX|G1c6l+?C{RDs#}>Tp8k9ueY1CZ@QS+sRBZBep*e<~ zHD>M#+dFp~JgV%eFi2;+C5SI$=E?$7#ZI8#W?<@79{|7Bja^evUE1LRZNO)k)ob!&7e&8NA175aXo6kR`QA4?NmSb^r z6mNz~qC0Cr{La)A4wkV_4AuSk>M zfMK@S&6|PtuxD}G;9`vT!qrF+3ml`MH-vcoOIVrabY%q#E2<-}bIP1$VTXQ2qA}DI zQM)q-lW$pP*r4}kC3J{USTV9k7QZsVVqm-pv%0B%tUM(+cj#VJ8?5tb>lsEsh>onn zAygg5u!ej{Oqv&M_r{t1E;SB*$k6GMdl&Q`HiH#lBK!f*?F<&XSI;sNx3?3|gZr*5 z+IoN0eRE9gd`DbpMu?Vb&b|Ih$G>eP_=>&GZ`pC#+xyyl>`f6AOW^oD-~Rh9+_1n5 ztMlA(a0r1|Idy|BYUm~LJy$_fvQOm0_V{u%-bDmMhKXCAe+ZQ(*KiKMA8prr2Mo$<$NambIE5jy>k$hwY+x%iaxdEC_mYQJp<1A{A(@t4Mhj?WBqL<|{>PNlQrYHtb5PiR?wo=fpd z93rS|G~31Q=|foU{5nTJ?|dU5I})@7Xpl;9Xu0V9Xoyz$iCS_WQ;?nK#WH`WDs}o* zowrK+R~EiN81BN9sNn8*ppmhLZ%ua)Tm*;7v(y>E1-Aj7Ok-{p&bf>*j0m5FWbBWX zFSZfPePxBspL7^Xz4jCrTkSxrxVX-Nk)qj%|((rSNGiEH;MNenQX7oH8G2gg2-HBN96-O5?hJW z6o)T3j@rzd^i)b=O6MAVH>-%wv}7K!QMfq#KNw!`+=>Bf*cHE^{*-uam6al!V%_DJc1?eW+J_9cUq zGthMSutPPlyrTu(ffQ^ctDiCy`7?!PXyj@QK~W(_e+f z{Yr|)x^I&50tHsMb2(fCdHsMWY7MIPyUW#yGW3d#r>S8k?DZSg;+2***F--7WY^&!J?GdS z0rcZ*$IDmPXt$Z;UfA#})~u^vBG{bAz0t^T1L5=63dX$GQ%ji5Y0|wFNl?gEGqFAi!Y( z4MU$Fg{Kgtp=ss^`r~QIOM0oY7`VsDGd2*U2$ISs3#<`y6`WT&N#bdZ%|x{&eO3A0M+J1zBpNe$!r14oqF3T_-#?IOy8^8)7y*YHDl_U z#JZK(z@9l|kv@O3xyk}>HC0Rk>Yr6YR z5&Q*-hGN`O)=jIA`G<5@6ZzaMLqY1bGZpg;My}*)2S?djtf`2g7qxFZ;*UW${ZMTV z3r@ln6xrlkd3uEsQg|5iYeQC*ft`Sgc+B>n;9vvRbjn?^X-bwO>J{IDf>GW6xUT9WGLyTC<*;!~eWhAxa97Yk1(7l| zElILxB)(UhBG0<3{AGmPJxoEaZFJ4GEQ+0C9H{``V?o|FQ@KOX5@XMsmiG&m{5@pJ z?G@8ERV!3>uspisPyQa(4KX1O zvRWjV;?P63L;fD+jr`HWqx1$P=Ub>iHa-g`ZGN5FaS0{Z=OygZx8ToRw$I(}{tA?k z9@|o_@+jx{x&xoBb%eH?-Wt88DT33yU-rbZDSwUA^dy9>y}#`lbBG8~rt{Mxr|zNl zJ(-ZS_*_lls@(INrBvr{6z_DqY6t<#X?N!DXldfpk~qcDmIaQ7qqj1yK54m3thaVl*Yd(&mZdKQ#;C6g*n*YL`*qt2bxh-$U+*H~}b)zJQ zD{4B4WCHBD;^J{chF3W=@t6<4w_S&{@0c-Wlid|%LpMPj4LIJ zKXEoR?K{5|b;yMlNREjQM9M0-TuPI(+)23MCQS(YR&F03vtNQV`4IIxoA8_$4S z0N1*WS*O9Aqm)0clsth5cCIrmOFe7l2<7h)x&w@_?`JzVs#p!r?Ffy+tYkR#V@q;P z;w57ar1HNin1vJXh>1C=5gNrx4Luh4fXXhFohRe#)J5mx){{s*S#%2eG4VpFmj(r51=tVSMfvDvrWmWJUPtM zYCAFNpF8CJM2B>TdPp|6(fND0QFu3WRdfkS$#nicK>M!{eo#1hwP@s#8lyc{q(nK5 zz)tXdT2ZhDRL(JWhqF3g@POe(aJa*~SHJ##N;HNWc4JJI@1Gxm0qVR{0)Jd9K{i5G z63lt@w|XrWEet;p_EXw+iPhpPc~A2PF01XZ2U3F78{%s*>t6Nw!Z2)m=6x&%%8rVS zPO#T4EnkC86q4t++5k)J8q#Yhb~~z#Pw-xnM>|z#D70 zB7whpy(MNrJHgm4m!M?^g|fwFZO0l9`#@bh>S3mF;ViH{e$jk&mBDvKa%a@8&)aRn zA0JZ$RX)@_trALIlJVDW!=sqGmUw&e>^t(nwb{ggi5+Lv0Fb88gH9yTGC^+H+-4#3 zg0`4lwSwq@I<{$YmNSasbqjKA-u9OR#)$2w!Dflm0Zr_qEh;Zadia*4_v~?mQXw&i z`hi0QvRj;Sr-jVlNB5o!RMFb|a1!79n@$`a3@ zxIMM7p+i!H>|$syU;JyKr)zrYf^3fBZRCa>rn2nnVxj%jh7!dXp892_^E?=L+O?W= zL+P*2niUt0bG5t(Taxh!HWCPLsxspy$rC1JZcYXz(-ViyWU-s0vD0+qcopecznfZ& z*8;IoSb_pwWP%6;(J`aH1$)!69typ<`2?}$;hsKkNOP%O98FUO&!LB*3YDlCX~sYa z2oML&RU94{7wyh*whPWZqni_?;+Fk_XRvR%!#4+1yz6Vm5l1O0;e5KO+EJ40a0U^7 z0Fol~jsaMw}bV zJ1FO)6z0xs*_=K7!rGi18_$hs{I#S@WW-xr0|e9?@O2t;WgCjW-m>>}ENC~2-zUo% zu(HR0YNM&gGsRQ8@Lzhj>}m7hcq4TJ9~+W`MZ&NvTMl3lf}KJ!$(6~-1nuUj zEI{hva#^g<&(qmXnUhi(^sGOYb7bcUn_>+?k>HA?x)3mRBADMeoQuBT!zAH13p3{M zeu*IPEX0~#$4#nl5ilJWFpkQI*4HZ%Bd;aemjgSz7Iz#`r0PNMnv{ptvgKIJvZGv_ zT^Fm5KDc*$aO|0?q}gus>-%>}-{NmJI$EEk|33;VlK-)!{ueERe{8${RiEG=-wC-I z7}@@>*-xds)*q2JuKLvUwnDWeHCPbtCwQwEE;Kn&d0Zi~u4r~Eg42pKk^5%%kepy| zULNwcb`TITz(CJ_md7QV!v$@%%{0vyb5$8#&~dSWnEBc=f@!!%n*x<}qmrfpT-wW_ zxsIf&!{AgZ4}n`%yR};Oss_q!ZQys-t5ZRa81a{2XpusmD|G?yajA5Qam&{#Mdi+Q zqY$PHUtQ7W0))ff5|Z`rmn({+O&Q$H?dyqn@03IQ{m>YQcQO~R`eza%bN~}^h-N*9 zX+%aZ_Ri5Ao4$rtZiKAi%8|`zCqSGPiS271nLzb3ggOV_XbAz!62QB=I`##L-boehRK5L?rPK#ljbGe<6MI5n)J)0kCTToiZ)#!}oukIhsTGk#KxI zq0xWkd?;Bu+Uq&kSeqFTDp{NTy|9e@{}<{=ZBflqSPpflE6U5ja&Nl0P{yec5Y{+w zaf332r^`l#De?zf_LO$Q`70)$3Wn=Zqys``@gD9MY@e(Ths)#WY@M!eq`64G5md-) zGsu*rBc(Gn1W6mT2TG6^VG$&HgaMNjq_m`mOv9Y@pwRa7+t~if4w&N`&5^ylXVy!V z@p{|+9@?z?7d?nN%r-7iQfm&8d|TVb!oS9VIeq%A(jO_O?IB7G)vHe?{XzZTt&O8* z0`*{pRx+|Ov4}1oWhjGGGdUKwYnGbUn}yekum(R@bVj77_f>X!NS6J_Na$JPnbK?= z4!(w+Ht5ddwynRg;>V+A>jlqf^iT5pAXm7leI|(iSbK3x?he_dp7R3IH)6FfwwAR}p#+#KtfZu2tLc zbLa=~OEJ6|cF}Fp=+!V|Zi z8sG&lgt*@5;Ng%UAER$m2zrVndYMo^MRJ-6B05t>(=N3DwZCm>E}+)(1vdyG&+lz0 zyG2CUu)yD9T38}vCS6uqw^NS?fY{h->j`AiCSZfF&$w*VUI^uh5=P3=Uu`Kyzl_jMS zR7N`4(lysoQ>zFTslCq>6&o>^K_@-UP)}Qc2(-CU+yLYw<&q}(N|#a%72mx5BJwJh z*95I%AycAhi9)5~lp49zGY-n^w)+mm1-Uyn4JW-@mhJRU7@p)}ZW{#>@6sOyBJ6;Q zjQ*yFXW#vl3*REdb#Pn(f4#JNwr;~GYNeKvBYyfcE7mpj#YajL4|;{dqp$$AixmEO zzWY$0S-8AFYP-h0ovvN#CGExCK-S&3{TkE_I`9A#5zLV9(qJYP84+@anb z@Ig7$U?h=(2+(`vJ$m$?Mf7P4^l1iEhSQ}YA&rvYjsZ{OKd$gsBw|J$@{qj*y+OD{ zW6pbRBh_SW4(kG_oeEu1D|KBk6 zU(xj6a5VFOaMa5BB+1y!h$a!#c=lmNK^#sVj*{;`;3&~EE}dswSd=F7zeXbZ4vjaB8pyW*g!>;JXuvow-g$EvIZ)I_yzb7=ota zMEwdu@vD;19wV2n`}X^)=QGJ;W@k=lcS$U8&}Zyiil)-m=;cTnymX@m-Auo-#6s?izLBF?%$sPWZVOq?6CX7oQD#T~9zw(V z28A>qP?akO7E^i27 zUf>fhHi0lixNi2pKG|rEqEN->bCG=JF2eu#WPi@|{-`PZy{J>LQ26u*=W3QpXB6!5 zw0l%XW6w*0ZGT+f z;PQAl*u3Q7_W4%xV;G(^Wy!3uL|<^w3X7|y|A1QL!tChhs0kXS89>)ZMlO6K*i9p(`qbqDt-2~EG3(#iIfC*tJ0IE zF@Lem6psGd6Q+kGYWWUH1jqWttMZ4mesv~DDTYwra?f;OXih=xK?2|Mj|2Lco-$vg zMQCWf6cw{?okuLRJ;X!AQ^s(=filmXu&wLL_3&Nwb76bjcVxdO4>HO;AqzJ1vPQ|Dg1xlY0{gzY8xwqeK3)CY+V7zCV0 zBchW`XKw~Ph4eu9T^daSuhc}`%XtGWsXs%3k9@LF3V84wfdX&8Sv|)aM(U`wL={BL zhsGNPk$}g6j)}^^U=d_szkj*EO307T!yVL{TjvY=ba3LOmmYO<9Yh4N6Hwj=2r@HN zf7!$%bXcd69h0L1a0>5%w+Ui};m6|57Rrj|Nr$%e>4mltwN;cM2sKs%`%ATj7!^YF zQwFCUF^+E&w@ucq3NCQ^v2t?JX_21~qno`~+JM&2P0wPR%pmqsX^swh|C7P%AEb6Y z&T{JgzazCE6C>^aAhm|VJTKCF62E{ziz>Na2)HuzJ_4`xSRt=PAwoikCenhHXad;;a|z>-kFk7F+wF1oxZkBX$oVbHBtg ztT5~I?|eWuI4)p&kHszb>82i2+B>rI>E=jDa)=39&=$3f*T0W20L^@$CPl;t}l+K)2p4>;VKsvDWoUWLk+$On*`Z+ayFkv@~0tt?Y%KSZ~(2 zKu;r_LYZ{x)QCfKv9pY?ip|bFP*v|i8ESY0tM_mY!)2kmp^#}$h7rnl>9T%rMpI4V zn`$+pnPy1RP4H*P4<4$`{q^;LkdjnXU#yp28L1#f`3i0c4c(6y1dTJUrVKZH7-11W zT$U_PYe`j~xcbX`jEg<&RigvRaD$sle(`{3Q9S7{fF{3=1J>$gXGU7*&-SB^?R@8fa{0E?E*1D7$J^|W!1=*eZJwdNU z*y8gHv3RvKV_Y%qg@-b)KXL$ZUFnXKiWAZ;%kB?A>*R3b$o>yNmu2-gMLmap0(9sn zK*Qh)#OtMvyLDUs0qCNWzW^Fced>|&P?uUG|EMg0?H>Sr{TDzxFQ3%?0qEI30G$To zxTSQ9JS&oIWbz5nx!QjLbY@;C9Bq7v?;u=QE*>aZkSK^$D2pt)sdR(lOk7D0)2i@; z_zv`JlbY`ooCg-%Cawn}!U}goe)fn>KB`^aH$ZOpFr(t#OqG3Bn7)UZG5;m1kzq(- zlrh`vZxof#j$IZ9D1O7?*&h&swlumYtkGS%2qoEdbT>o(4lbnMLlDe|0mOYfILy(5 zg;oEQ?f=C8xz|cg+UH?51o(f;_J3rD`Sl$B<{d{WZaK^g!@W<%QEABW+u};8ql*%t zuH`EKcqe3}8X$B!E%-4{YlQG9<#_ko@Pslxq7d`Dr&$Bf8=10R)r@DV>ZNEECxk!A4 z+_h*c(QgHFie83(VY;kKYu$dE)7MX+Egc-!YVfI+zUuD7d|MB&X zL81jwmTu{mZQHhO+pb%-ZQHhO-m-1mw#`>P-4i`C5&iz1I6qIG%-FftUf*&UAU`IX zvF2^LUaknAm~O0T9M5yc9d=pp6bf>~(P+l$RuVogx#+mV3{<4PVl2B5$Sjyy)Y)0P zcFvG(P24@Y5SVy&xtcv{=~O=OPHol2OtgH^K;LX3$}!<|*hezLh!|2r8PYfcElS(= zggJAlcarpG1Zg@OELf);Fd}Nvl54rFsXE~{VB>T_SGzLn!B{omlCXrjppu1Dh@)__d*z;$vk!5aPisq{}y=Zy%wzAer%tKYkC9Xq&Ib~6S&rmr4{M8n`ROm)3?X)Y0a1=@)Z}Y}&PhM%$Tp z3b`oc;YK{>2RH1R4?}N4k{FTauIcL>uXBoUCyLHh-YUC5IEpz~SX7xD_Q(47Y`!lI zL{Bk^3{V0>9}1wzw{ltt+uw4rk&~urvoO0^3Mf8&lF~E65li6o*X1>IF*0!`!=UB$ zU0O|wuRQXxG$SB@DQ#Gz=rrFv??)%XHQNOz3J$9JCc!!I8skdzO|I_VvFO{+fw*%A zshdJ`MzEOg;LmmP>%KSjtSrtTNq8eEBVhXdJ$Mk5xDvEjnoK7#5FZU9m*@M0tgiH-gS_c2M5@o7ks z{0ZW5Sn{`|=(fCmHlu3%KsF%7Q+E<)N_ijm7m9$P`uHY&{<=5?)z_LCKg!Lq+ig$U zo|aF*#1k4c3S7*40?A{Gzz;%!oh^W?4L|LlsE5XPh!kVK)j9Y^JWzP`+_muyU|(#6 zw0@O(-GM0VAMR93&JV=@yOP7so?UtUt>7Gg3-JFr@Ato=LjHSu2gm*|&Z$VPdB&`K z9ydvfIQ4kR+ASc8Onf^(K1#j*38~N_c>@vG-kl}&e^5@H|MH*1O64%cdXC($yo`|f zQDup;N7!NS3G1`3q>m-j;%-~+JLI#hX^>q~F}3{fkM|!3BfJ!`So-gWv;I9Cx&Oy9SlGeb z#n|D$xOl|BvB{FQ?v768hL(cPPENnUU;kM%{Ku_j^A{fF>dImx&C=|%v9983uhT~! zhK$??SCmrBtL~Ld9OJxfrI-+o$2S3n@LMsw78bdRdXqm9i0@9fxlXq^%C*MI{U*_> z&ebXOolu6-v3k&3=bIRW$Y0@twJAzuA(-XrJI4+X$D){S1nD}HHoi0F&!LjFxxR^c zlrl~wiN-^7Zrf1O344@zktDih|G{ERu}GY?LRF;3Mxf*x3&)3UF{bu8-r_In`NZEJ zm*;}`IvtfOp4N*%;X&N--m&-*uVEq?c(_snp7z0xbRxTNl(u`X9tD5;!K&6uBf&;? zls}C|F>G>bt{Q+e=+2AK$0K#ejNmc%8RdJC!ujcU-Q5iY#`?mX(kMe(-ZstLJ&(~n z9O>x_%p(%q4iL>3fH*2~VOR5u#-uZVqcg_nq^mW%ny=C`-b zU$VrBXZFuqOwQZXfgXTeyccm8F)sA3qX2hMD6pIGQ?A-np@8&(9SN%;so%)r_yHg` z#4g^_Z7$HOAWFvE$D3`zE4E1xf@j&jaxHh?$D3fYuovc z+Q5c@)ev2P*&vZrq01tk=|0rwreQDL ziZUhq`0a*=9Tn-YNU95c5LU;q7;y5`>}k4GglpBX&6_VMG&)r#vxXp=WChfqDqA%x zrgX^2>uRmYwb8g_dD5EyQ#3IpKgnomqO)TE z;vniAvBG5-(n`^962*P4-rtS89K7*Hbu1^UFKSeAz;kqg)1$vWDX-Fs|V)wJeJc|C2ZufIAFcn z_nws*R$W0#0>F!3d-{@8`I7;^Tb>HiB<3pPa_NZ20Y=UX!E64gt2KC}g`M_{k$h#otj$yzO(;ZJ7WM)WEkparykV|U zBN0JIv{)jQVUJ>?v^5nCkO631@YZ}w3Fg8f8~!Iaun0ca+dznBov~)@$s$@J1vMi%hsmw|!N8fK5?<4AG>0AwB-QQX zv3L^r;J8kTam0y9mXdpab!=WM(Ozb($-L;nMuprfllI>PPWvW>>zQ5eLQ7Lzu#V72 z>t1KE)!%zuS`TLkT5{Y__Z68UCa#GU7xRUw>cM?dBqN{u=}HDzzZeWj-w;n332wx|rwx;VK(`=(jR zQNuTPV53`AoQHCPI;^S7o&z7qz|0AQW)h7@W$i5HEbOZPZs~hgcXVy?oY6OJ3RF=@ zuHa}m0#D4_R26Z}pWd00M?Jqf5=rSogEWOG*-E&(CiYOjh&uiCEDSrVTN%2;n(<2X@L!ktF-*>x5r*a}Yg`JAWFJH)6nniO}P zO|)J+B=SXJ*qo9%dv=F3?n|)}Knd@xm7Q29!z5vOp;6M&dJJ?JX0+JqbD%v}9LkTX zROahyvFVelyltlNJwSa+`P1>a;V|gZ0GIFRGqU&6xq7J4+2dD-GR$s$5b1G1VIWrX zt>AaD{+4Oly<#F@5+5+b5sq9_o%xe7;XB^eLlJA2Go>)XK)P@ax$5a49&xRfJk`4i zRrorPolkzE6en)%K_~D>UAuCZx_UmJ(1ui6ZR_`%lx>L^&}h8Su>MA;JXG92%Y7y? zD7KN2{_%k$W&dIM!b%1CW7n^`+ddjL;>mb$;8j_&G=sL}m`uf;fih9in%?p%o94|x z;Wj#13p8qgXE(mpP@4>dC$ zWLF4Av5o-!qzZb)ae6)U0OfoNin?0WR&qKuE~VC7al3a7Fv$_bYTXVUkup=jeUuIO z2bz*~lHU{AU;YR>063qrg}@s#QZRA?Zy><|n)~p|k!Yh4LEjVO$VP~ScI2;O)Gr08y>~urEDt%TO(ShuWIB&7sn5zAXR6ujw3qBh~FTO*&`veHnr6}W@ztSr92niYDM zZ1hlS&Wn71elmof@)t@Jyy3qcU@aSjcJhhTyGp<5m$6Bl-?E%K;e0mb(tSfHy%Iuq zmDGcKdNp2|m-hkXBJEtjyg**u+Ufycexq!f4zND~SH{a|;Dz7pmCawx=*7+PGG*3G zU%R5dRF0U~yUq->S79?nAk(bEI?0qqaIA; zxq{E1L+c5gzM0Qedg6ITVBqWnWm=JC$|f+H!eN1VrG{Ydqrq18$4zEqM$+EJxPjFa`l^|~4xCCED{*|KgZxZYlNl>DLzow<^M3gJ`Nr0d^oC?A z(VJA5!d|IN>L`@gXmRqV7Fx-j?wD!M(ggDo+jTX4q0v_OLMA}K6nsIVJ=qCVdHt&w z+*S;%l!Q}5YtlrUyw3;OxKqlJW^(ufkIkF7{im{(!r0zp@}j%faMu~4vzvTO$%jjZ z*`jqU9E@$|c>`f#OXnnPU3sFm@+-M(ucjMaPu4sej6NmNFT78|-=Blt;SBTUN)J0f z@F`V#O!=GD;IR9)d04s!+~f-NFsUp)^DRs6w#}g(j1I*{X4RDJp-Y!uOBtAhv!gX- zM50-v_b9BUs&xigqCeN?hW-AkbEO)H7?NO6@`U*PQ$=Fu4AxgIl$xNsD?c46XV5V^ zw$?i13LCOu>>oqEmLE{Cbu%pFvwcc)i1n?h{e<#9QreG<*wlvC*g&TiP);VRfWUpi zju83Oi)L93h;Bv9zWgx2k5Sd2q$=-%tQUD6 z3&K8ZKi|RM5^!I?*ok9PnYjoWqZ802>_tmY);n(F9p3bcz~q*}>6WC)={tLcl)GZl%8}CZu@4u+tYfL^2&UB$C3P|%^9pb z{3a;(9Zdc;4Ryx+y9JFo7*X_RGoQOy{FZ48anXs)9f$WJEqrae9N5_3MPu|wa$xGa zQAKEz8b8#%n;;V|4DLz#xTAW5_MusD6YCzlW57-=mH6R4((PU~! zL7?S69Lx9xxwpULN&MsYb6h5kxBPc&KDV+)G{ApDDd7#2|Bv>d1 zLGX!waL|zZ*AIK{$npoJ16PxOb^>1T`$L7=}Qkk-k;chCZAfv9o})bxOm}(jN2E1 zP&W?_$FL0TN>yEY!&{8Jy91%O25`LlLzTA*c)TI8p1-H!yB*SXqJ2-4+^c+GVZmDw z7+l!5z#R620WI$RJ|{NXJT7XXT=?+;m6@!X?R4*ZqWy5_ z68pI^6Kw{>T-MVrga3m)fzx~-nefk{bk=|pE;misjQg$ooUgzz6Js~|fd+MKgn3O$&m70YhgQWl~f>Icfbh?|N%vFqy# z5EW?y^yVE71Kt^P$)UPPG9yceyi2oxtmWD#1+u3#R0Q-aN4`(rk1IVNZ0wBZ`+J&G zf#iguJM&jMnYoCuU-{h03ALH2@}p1ftJ7o=Ow?4Fu1>A0iaas5U1P(niXzg=heKT| z($T)S^U^;^l$VxV55sf3T>awznno(g@MI^zSAg^)#Q2dz(xfmuO9$Dlb2lx?i_t_+ z=ARNc3&WH?I<;Qal{X)~f3O5d*l!h9X&aCOuq(3O~!hozEbUNkCsn$QXj z(vgA^k)%NM=cp^qea>&@jx<=MDR>KCEGvaSp2|`YST>k&Dsi4g7CVY+Un~ZL_6(3% z28Sc6YR|hu!tTeJZBrW94<#XBbrh|EfDyecYQqvek}h4;R#ANZ%Y7n_;)`MIqD{Mb4?TGiimC%-0b^8ZKe&Z7fQt zFIf=<$EwVVDyiC=T`y{4#4l*K9p<21!(CN4dw7)9Y`PFB?IVXktA&mUpV5ylZJTjn zu5ml~;%=ynE|aigOlcFD9^|ATpe9;d3cmqVZ?Q@-nCw_;{PCpfAXXfYLAy6i^_k9S zVB3?OG6QYMw)XP=C0q}-0Chz?x{P=PJx0TNfSr{EZcBKi25!rE#0L8OIqQPu6m72* z{-%;Tyvih;A*oTdoK&3hVO@dUH))|P$I(XHq2AUn>+7)sVv^O=`dEEm4bu|urMfgkFa$>VgxT>2L6F~xRp ztuw&Jjs2iDStie4NJHU{ToVDAc%y*IAd*g#x}A6>=}O3*v7C)`W){eUJZ?soXF-u? zSt}bf1D7aB9o!&{mAhXLdCBe1nq~jA#GCfzW_!@H>!6P8gEP$s23OPZg^s3Wb+%!x ztXQMY9o)>3SbUV$$2Fd;)u4|FK2T@&r^;!l(mr|7b{Afyu&QXVvIyvR0dO8fE&7KU zPA#o1)7hLE-v^4mI%?^NME7EYU83?&-NmMqE+DC|BbzlCs_?kq%+Nr%67u`>Unjo8 zGPbA6rzAbnk~8i17nqbAPo(7rtX3k5s1FR7oWUJ?3b!V>Xfw-?2UJwTjv-b2AdOy# zuQ|pyTk;Xx#J!$I$d9%0+Z$}dTceBmg?mZLRa3z1U|{p737g#dL_3yjz6&;0J66ST z{r&TsI*YQhyy1{`)&^HSyz9f`)&cv=)1TO7Lu5nc6H&jrwjm%dDqTxp_G$Ne-xp%l z2W@SXCpEPA*UHj7a1?{Az6|-m4)LX6%tJyIJWd6_wgea8mxiv`HZQ)EeL&T0uyptl z^)B4M4Y;no+tvfmb)sD{a|hXd8PA|t&j_0)12#cMZ%q}XZUuu!vFzHqDt2#J7~|ZQ zWUi4+Cr}~N_{i8|LJWbXTKLnmWCvA&5JIZV+kf5^ylcvx~2u#;&pRNBi~x$+WjR=W{}i_$TYa78AftkR-LM&i4E_> zvDn?YW;AfcSDz!b%*dZ6nP4fd15CGd>j;fj5YLPt4jf@c%X?pAq?o$pL+nAf&6{ru zNP3-{oC57CcLvr;>M6tUph=pnG$zl_`YYFV1}ke*yU<+saxCbG?9h1CufFj9Z%vJ> z!7a`3ci1N5cQpHd79{@@$M=75&Z3nJ4moh=|K<^ zhDeZ8seR5{0*rOU+F|y465{`N$W#|KC}Cgo*p_Ek$BFy(*44_5Egzs!d@TPE6YxxZ z5kdZ5us?aqTGc5!3wc{VN+sv;nyK^PTJ2ey{*U57yPqZK!PjHTB-MxmvCQHwfF1w5-aOzK2Ap>o`{1U#~Pg~C+{GX`PTTbEa8+bYy zbbs4IySJ`Ef{KdR^G_;uYu&FjZ(4TD4?o~L1TI6CE|BzX+Bl}Oa!C4y&YA>>03D8a@@_vMT^1&K{ZTF_43Ll((9b9sIecSi zhu5RGgE(Rm0fHM1F}6uQH@&S>%N_Fjv>03rt_9Z-JbL%XdWs#*P*X`G0i9l;NiYsF zCVvE4@85s?({Jk9Wa-vF&p>CHBPbSenH*<`8I=2VBR|0))8^+B69x^f0vgCjFT{wR z&}XL(O0*6akwkl?uW|KvmNK**y&v|M^cnw(pszFn`U}od3VXv;R~3{V$L=011YZl;V#q2Y-Sw?C%4UN#$d9JeQ4_`IM05OOME-H?!}dCW@RDe}rC&tZVd zF}+G-%2P_m8Y15Ff(;|(at2yxzA6gl!#_%njecRnc8)wI?zlyGP&XA z(iMURo=Eld?uyby?~%HzpOVng-QWKG&Pvtp6c(M*bubKCD+Z-|m=}gxa4=Uz_ww(f z(WN{{w$VK*R_vDFMH@3~X0{CKiZnhhk zwSC+_%`rz4M!vDq1@~p6Pf~gmY_~ zoJyVeM7g&s&a6f3RO@(yn%5(mYM%E}Sk@-%)S;V#xpym!>LxCvlX6Vt-lk4y7ZLq8 z-m+1&MmpsJXMM84<3x3H+t9~#bVoJ6N#J?&cu%{1RZ-shOnI6m4CWf1_U!g*^KAjT zGvN8hr8erC>D8z2)h`wAuy(9WDSm%2$$n^X91b zVS#auXbR9AR&wFu$n;f%Oyg%7ewJX3b7}VkhIi74HAwJ#G%Jq|^GPf{WJv@l^E3W9 zjSdw&H08Yj3+5X%v4a#H`c<&nr-a~Sg?SpzHhLJS8Vik16IUj9(F%cjO(Jf+Mx7cP zh~CohuNFHZupd?$nKexUL+YKm-5(ls`r`WAyc>KP7W zqi5A!teo)!Y`qH)Ur6QY=KQvitgRleYM@C7*Wka+Iv2}tMA975SYDZ4$@%=P4K9|G zw*K}-9fmSi-h(%mf#&K`0p0SRM~Z(2yhKMbSoJ1X7EvB-4LGMX=TV?QsI&(1mutia z@gh_}2dc3OlcUY*2Q07ro&Zh;k*woL0JXXX_MND2Ke#Ld;87;civKz`(!pn9#Vi7z z?T7Wy%$`RYIFzL=ndF6u^b4dLQcC&$F2OZ;lj?F=4J$V6ySKxBoDbmoCJB`O+&awn z@+!2mtlA=;Ir!3_g6?L49&k$7inD;U0i3;>vIa`1)P_Di1FF!MBYm4SE9fX*s zAvtNlb;v9yY+%hBDAnmRJ(zV-mns3LFcQF2=N5{yTd%U3Ej&x{*R`Vk1Obl>L)liD z0trL>L%r3d`ei%~$|$Bb6Hr0_Rcg|%R-?8ss?BpK+7}TZM(f%=0QkXWF#LGwydW#@ z?B^r|eS&)o(aboC&NgCM%Pe*D*@a7qH3NZGs<$z1W69bcM^uZKSuYT>4 zV7p*C#C~csInKQNLZ(sX3OC~c`Ve575YDv_Zv@GD9;TlN+pl{?q zPXfMR(lACC7v7nl(E-FlSM~5%j~RVCK{EU#Qz@R2L0LmEFeJ{W$te5Gxj-F+J`nAo zJ!Ta3YcAfNz<(RJF}6Wy4;;gH56D#)G|G`I^sFH|$C{Tx?P#=V)6r3=^?ze!*Yftt zN3F`NV!-M`PXAaAXjLt!X&Mccrr2CPmI|W29|Dc`%{yu0%>W$m7jME_USwGQWw2+l!oduq#fBGQ1fFY?k&t2p znmewZ%UDi}kXY5jg0O{s+dy?5qJDbR>s10hF%-GOL45IgUd^%e1Laj}|`*D~>!XyP;dqjoBT@d!?w$ zsaAq+;uLp1P}vrKghA#5nj=l(W$vrATV>H?9{3TTv1KOZZ~7z4IqMlg`%Y2lnLr|L zzD;0{@%_KI-#J~$59xPK9_#tWdF+H^j$gccDZvjCF{9Kcx>y{g6r|BS(qmB{UFN6G zcaDVIoKH}?e|WG&*CVvjSRN9pS%_GMlOOE(=?Caf@1feMtov*J7+=C1RDgYdoS z>;jwgJ84&%;D#a>61OG&K2HfYf~KUu?R5eNg(J{Uy+rKX0qIYW9?M(lUqil9y|hoJ z@3yg?T|LZCszl$Z9s>$=?BH&7f`m-}Yqbp&@Rm0s(w`K)0hr_9*nnwBdA0o0s=71g zH`hE?N%?TXre2j9Rb$C zmS4e2q`4$kS;Nev^%Arf{+`m`z&~?`e0RABzKUv)TegHAs3AhZh!nm1i~aKKs^E~o z0^vbN!L9Z|8NW#_s_2hmhag-@e$t7NL16(P7VJay%%8zO5#osr$H;BjCigq1vg!dx z9LuP_$cb0}ai^w~{J~VHY|Nm`sD#=m(-c%xkHPDZCxKYCW5HgS!UDDf*oY(RWzrt0 zJA%7Xy$AR7XFNU=MK5nRq~5(h^zMk%IX@D3>7R7WkNHvGG=;InZ^F1cDaU-DF=Ic; za~<=aav3kL-ibf4eDrTZ!v_e@X`l7nxXHs47@)p??@KpLEr^d-h2*d>Gc!ugLXPQK zN{<;?fSEE9yCYA1_CMwh_qh9KH%pH95K4}h7^SBc8D(gsu>M*IH5-JaSX-zY&c}jx z-!d_;gX^CFaS)1SXyclj5y@C5aUV)BX=Zqt*Nx8(r>(2!yJo4Hnb8N#KkBvE^D%@Xzv=q*5f>xm`Khi zFK;R8UZlXlMt}+6HSS1;NG2}j1W%+~%8BRw8Vh?jj3n~6BZl9wF#eoS`3i`FCm_o~ zSbG@_+fQ)1L1t7DL8#4+^F~e0s;V02>tlAvR%f@dFBc;{hfJ+)T%e;PCM}h^hyh$v zi%v?9Xg-bLxB9Yo=ub{S0RETFmJ=!HcvL?D3amk)(LqoPq8vUnmDgbyEmy9t#e!zQ zr?a#uM}=BQs~lOsgyaiXbl$JommNr(?UXgtY_SbBL<~tYr|3{lJTu18R-{@<}$I$|#=e`!zxnd;2nWQg2n?+}j;LsSG%@2>J8xSaTW|oGdSrP1WFCzGF4ow;O-|*Ha@4W1e=y~ z$p~eE0Yoo0%4Fhvp%rA|Uu#vAowslO(!3dYj+_jDsloxv!tYViAI7FgqP^#^+QJ@c zT6P!4H9#>OE*#&Nv`iaGZI-tf)$K50>hdUS$llh%l#i06qT-Pb1JLfIq>H>;qi~39 zQQ2{^3SX$By%X4Wqyrt{qB$E(8P~a-!H2C^5srv@HAv+@LQiELNdXmN3Z?I%R<8rB zp9okn{jyJG{IjM~-X$JMCa0Fg$4U=8F0q7CQ-#7xGc)VALM}g9TYRd+K_oHYe9>jK~cYyz==;iEv{Q#l86*a?}8hgha}e7HO(G5`*QqsyM>?<>l| zCGWO19l<9z^9vuXCBi9+z^MSq9LXO5$i(*nX1pU4S5i^vfq5n_3pC~@lFX_zRoPOY z%t2;IqsgN*&$>5794k<uWA{@V)k$Ij`WeK_7nyn8dH)WPC;PS$yeDcW0Lv7grf8S7LhNhf> zjaTUP-N?_s(}y<Tmf++uRpPkEplQR+#&L&UL;*XgHaBKQT~=6>>K={rcC6c}v^j37 zJK!xHaX4&RgrC66geGStf)SNXKje+&_#XpIRk1o~cbE(3kbP_dGh4E`KX5O}iX~rY zvO!<1&AoZJ=QvK%I-Fo^9ZuE+9Ay0~*zq!%gKwJgzeJx>KkUuSwC}4bN0_sedo~+VJu@Y!Y=j-)a8?G7qIn` z#1$REQ@TQMcve7d(*UgNKi~E{qJaN?@%J-4(Fu2V|N9R7HMhL$C4xP7_2x`G_MZd8J0FcGqZ zCf)XiEtYdpY%^ZQI(vc7 zFOhkk==`CTwr$A_lz=5xD@5j7#Q2V+GMig}A(J8GTkP?UMU&S#!j@Qo(e-?R66 zL%x+GagXrhvax6MNT%ia4|pJ(y(4N_D7K&rQhhYDbsAfek7(>*Xr|N&Q;6>^{R#Bz z2pnT*^-~SoY^)h@1Dbl<2dFIv7mT*1h32$Yr#Thj2Sn@2b< zudQHf*tQa|Fz0x2d5GFG5$7cV>BtGa^?!Ar#bcrNX1rcjh|e+wic4D1Cy@2r37y;# zqWHHbj=VDa0Y$fJIr>GLCc@%V1X~wp1JOlNvuwl^K=o;#WKomzKZsgCTu|4;-nn0G zflb0YsWE2WDLEA`BAySx1ui;^y1V3dP1X|h&O@|}0M4gm%>Kn>EdFEiop2!UX4&U7 z;fwp6L^;B+v?0opqlb*+M-G&SkeIQS_CRv^W8BFVZ_pWI3uP%Y1u9;wf9!NzZaJE= zO-a-Hrh^_`NGJ8lyl$kK+*fX(E9^sY`|}_DDzVq;Sy$z@trupy8wb({AQDLvuA&De&4&pCd{(J zpM&LJ;XCnw!+5y}?iBy5)i`s;*cqG|pMfvUESYL-AG*!OAIcEnKv=r@b;4Gii~4j_ zr>1Z`CoC{f&E$KHh4aq1x9X!sOTEtD8|s)vxycjI2x>~c>g0Pw-dSkR4l2;&0v}}V z@?@GL+xmm)K-RWF>pF5Q-J&q())t9&XQ4-74Lo z!C**a-lJ`yrV$75UXwCp#IS@5#>2a$?b zP!Lp7j)S=W6Hwj2uiPN0#EDyy9X*#FwLmj!#%fp>dU&mDin_^1-Imhv@=eHMB|B{5 zARyBdl(k%ZN)VNuCg$jp`!Ss`uc9ffK08X%X{OK46D5J793YsmlF+HUT_k3ClaTku zj7S&3|BE1*EdosZgiid#PW(hn{DgeYTV%2+#PkY~9Z6^n%O?cm6{dRY7&bPuVDd{3 zE@~kqZe}4USJhHJr8vA0WP4{P$^DS=@B`yrSikq1Wk)# z46h%h8BczZQ|THyRc~W?1Ji#*p?^1|e@DWcsGS%7rpO-Sllogm*(a~E?@->L^iLaI zyXRaiQRwfuxC5q3iIoTneXtH5;X%DyJ1*A|9VuDhI|NNMT}nZSZn*s&pk}jFaWlFO zdXMjf?)r-IvtnBiKd^r-I#y)-CNi1&7%JnNtI_R^eQdYv(5I+kIU7fL&?Mm(If{SP znzp4#2N6Vp#oWaE-U6d^!Ra|mi_C*KD!evY}brX=qag^6oIx3cgam}PIN|EY+{TsHBH)4bO=V#Y(xxi z2*#2%Iy`Q6k1QX*Wlh^f#Dt|`GJ@yTu=rEBkl1B`dj(it(!f~ATLpJYFTWUe43w7o zyg^&6(S8mIb{q)QCMVA?;Fsl+t;)jA`e)v-rG$#C9jOb<30+b{zGl9*+~ri9JpLgf z%I8_+wL0!G3M2>Md!FnQ52JSuUwgXt4yQPZo1&zdtwK&^`aEgSe%cn5ABZx zFT2i8yxC>{MVGktoX&O7j2dV8W)}$Y>jI7S6k-QcveE2x;TnnQ!oxppi6Yfe9t__; zm(*E=kLbl3VC1cTdoReZC>_kz$jryY&Bi7$o}0fI(-;6fJ5xC=$fEORhqY#0G;2k< z(&<}`*s8OWoJZ8m8C0{Z4>3!RIK8=^%Ti+tjk7FYUz83pA~?&&6A#v8);y9|`r!@7 z@2)RU!%Fe?*H*S(>Mngi-@u(;wrFf$Xzi6TzNDhOmqK)puEAPgR7{C;?ipc)syLeB zY>H)?5MOE^1=>ZQfOeo_Kxn&uVIs*cWj=I^ooxAe$@`A$slPM`eK9tr7#A!QvkkM( zmTXevhP>=u>^7kv@xteJxv-NGmx@#M6JV;|(72zmu#Z|SQR@-si! zv4~1_cG~#zvB4()P3Pm}Q_~c#<;g_Sq~c8zA=*?9ZMi%k0dGF1H`!z++T5i0d+JGd zu%(Kvdz!9&A5c!+VlJ_P{=r$7N`0RF3xz+^T1|VAf9y3fv|-}%;+)D^6iRnXsPY$SQ?_qjy#3SPd%%Wcf@QQibYQQo$>QJQhKw09lUgWucY zyhKdJ)_uXj4bL18f6-gKuqoDzI;u(VBW-#yMzQM|f@WmXVl%uNyc5fbEZ7;%TD0CH z{W`zWnQp7hbe6`0^lG-zES5LudLeZF;Jt283n7|Txc!}V5Us?VJLDSd(BkmUP#_TY zXL{eh)s?u34ncDX%vZXbJa#mc>}`TZtBoOxphN6s{s?9W-VfN{Ry=)M zN-YT$&isl%?1#%irRbtC&f!R*gcnnQHuwIKA>wzR-Nnk1`!dIh1>^fxD~g`lc_T|yue9_rwJ!7y#_SJQ^NZMZ3Qt=q0@Fu5&Kqx()MIl*kdp@+M1vL9f0u)7zm&FIAc)@Mf2s zp3E{oo}4k6<@`n{&7004esOD7tjtn&p)RY5`E=zhUp(l0pC}3E%4t3QaVqYnAG5A) zI4YS#;byq=FeYysis3Y1#~|Xy{f$+Y2=ARWEkha(pvvQrvdB_}1^oKoeTK=nF8{pPAF#&<_ZK1QBec{?X` zmy$j5WJgxp1@_C?U`y=`jNU;++xLDlUG_VbWlH5aL{GX9V@@g{w zJH0zvNyc`8AKrU`oxxceNwZth{7urFcRfS0>(5hypYoW$q(J#%CKBBgsG-_3DGDDH zM8qJV{jnH<2^&JOV6{ixmy64DmwV%ZUQf>tKwV_EJM!(Kf3ztpC9H$G>n-|>wbg3b zdKm(w1$pB*RDT3rf4!>*Vb{z5vN~SIb_Nc}CNAiXt5@*!Yd%GEYR2j}C&sN@BH}+BZ~B41TWBylkCd*Lqj8H_i~_KR82n0*f+5>!9vNU9nA$%P;Ukk_^KWh zG;Pd6L6hMAAzF178z8YO;x&3vp*%eDBf9-8_BSs>Y+X>G!rb{{WuN4bH%xAQ*B2_RN)(+MTm}JNC01($mu z@c)^<{Pqxq8UOWIR{rY$ME|45^1nRE|0${#t3$XcuQ-3tn5B!z0l^^R1O5dt2uHvV zx=X0TK<_0K1Se))6ToGLGuKCDcmVZBI@s-MZd|gzEDATjT9y4fvI-J}h|N{GRU(za zYMsDp-pDNVGANT#WPO?CxU-O1%Elxp`#RfpV`KVt({?hQs`v3239vld1^7E}1^7wx zJsn$nfOY>Q!{_wb<@F^5u+#tVi#^B}dN=nL=k2{F?grwmJI)vNK5#sG$NwE|cN?zj z)gIs{!WW76hnDDv;LuX{vlQ+Jr5F2C_?-{szM|^Q7SHE+#QU`^?&oeFjrWt$58h{g zpw{bEPvgZ`@LO;3t=X&Vc;Lc^TafxjfDo4;Hja_ts564HQyHU|@*dQV?Jejv7{sV% zTr4BD!dscB3q#Q4y-amIFV;jti>yd@)QZ3{XcA=}zer(l(s01M+X)Ta9I-)OTzr&} zATpRberW2xS$R~2*Wylz>LWEpLEWwCjX`_@c=5N1cP2@2#j8o;h%>KoRajYR2BULO zY}w_Mom%rUpV|3nLRU> zFaqoApiiGIh2ash;*8ii=I=&Xl1r>i0w%g&Perk~fWeUZn2m`L98e|CZ7Hl2=naxb`a)f#`{{Qjy zPSKTi+w*WbwrzK8vt!$~ZQFLzv2EM7ZQJhXpZDN9zjMZTzdiQFzFPZY&F5J)Yt5>{ z(7H|B%9OxeV)QDS&_zqnT0xr}D71k|#_GSN(%W6wP)oQg&|l}mVFpJ@20Cw#7M2lQ zSGaY2J5mVlVs|+R-BVtoC~Hb)Ft-miGBa9&GY-ehyeWH3>C zAfS-67!|gER45g=CI&58|9DEymMPS3KO{P3N&}x)Q69|^qQ>4|I{0Thj2DkOq*TK| zV4^m!QAdb9Hq3-w|44TcVT#4M+MO;}gz+^{aZ)lvti)M%Ub&qlzH`71!7Z`(u0s+Y;N=k-%-B*5HtY3;8mvtP38Tir7E1^nXJTHokLC*^ z9?WYY^LgiFx#W1USDJ*g3DFVE8ZxkFM5GO9sw$Er4IE4ZTcSbVo|UrU%ZzAi)w_Bd z1P8cLusck8p94XN45}3#P&flXn2-BE_zkrG;5r*{m2wj67__ori5DXl^RI4=(myEArzN%5)CF9xy4V5tKGGr-;zz4J0fjX>=Lm_ zs4lQpgiK6e*U3BhvD*xWFmnh3VbbgvVB+>;z{t?$YS_Z*-6o>Bn1m~I2kzm*TqkhL zb?D^x^MjhvdiaR1PHZx7tDM;Mjdcjbw^kr5ks=;9aeQnK|wPj{IT4vU;gM_uK$v&$3tocAnUi5?eO zcY(D-s*FmITG7~8P_yWW>kmTo66l!BTAGago^f+7H|XS^8c&zdAxeI8ade2%qI9w6 zN(H(P4`vXHQS&B zxY&%Uj9N$PT9KoAsD7to%dyh%DgMa(UwY&g4>Y!&7vFx)qg z*+MJKhMnK0E)4GozF?b(BaG6rBhm?g@Y3L@|CyPvFqXnTjXYvc1AbIF*$rom2AdWG z_|)*aQld~D;2-7m8a0*DzoFkxI=m_^e6<`rsY5#9SVzaJxi`BDf8_093!d}@^GX6D z1FN0Cg?)!wgHusj9JHC4bj^l~2_qe)WfQr^#roz)P@KC>_4xB*ny8L`x?;qGsN0CY zg)TyJP5H&s6gy47PLSVe@pC+)TAz+&jg|3SmC0dDt_I{#r75zO*BW|Q!JLN@KU^>| zLWSiydMK)QH**$23}SMkQtj5N>4l}ez{5ITXM~M>i2Z^@DNAu_+=A5PcejujB9$a0 z0z_Y(86FQ+9|3d@bTfW<|4qK8xP$L{i#fM^Lph6HqvldMi&dkhQb}?-`l3BV@1=b# z@{Xj8{WVFl?9k=b4N0sEc2?&2biO6@;ak5Inry8nbkhEfb|5WPHrH-<=&zOw!m>b9 zy|z$u0_I(g33P$WiLx6IV8e4ZWA5sKEd4f2%z0^LZ?N>aAoUAD@XZQIIF1^uWqr7% zJTz8a+9m_uKehnPchRw>*jvHP<=M5*dn_5oi$TMeu3!#m22-j-n&p3Vji&Rj5YO)K zfHwSbPK{I`btW}UZc%VuRJo$-1=ToHa2VPzQ51ECG6H&AQ)X`DTdbg?`syWbGom1i z$eYL~Glby{MW*#sw#$x?;WVyWTM`0+;uEXz?tm8_0uAArwV z)LsH3LtsJCwEFf^l4UB?^DK{VSgU@cn=1=Y4%H|+^M_eYi`D1O68w=2Yaml!^R^tkV5 zDQaH@)3>4X#3+ZIY7c~UR&2>|2*q00F`?PsIk=GuN%3z=@n>nmYl=DdQdV43t36A3 z9nt)?2u3I1ZlG#KTE=1r)gHR^sp@1QD^{30tOxp~av3Wctg_V=RnF^+P$c!R@K zxak#r{nZ=X(UaDs`8Ts-V0-UPDIYH_cMQ8`Tn6=w{iQ37kp>azn>Z6!Q-~Kly-JBS z9!p(5$}&xKdu{$FpLt7}{SHf?7U*;gDuc_1OCG7CO$NuBRJisvC3R|CI%A{jo1old z(mWc9QTHUB_W9|f!>g1sDK}$3sjD@~FzTgQ+s7xaf)Fog)akMI(+WxwTv{^U#pTY2 zBrbg-Jib&SuD%q-9NIRHJR>Gwogo}}tWq6TqhHP6m~$3ZPhnqT!prXcJAI;pQhj@Z z?B+9_9b6ZC33MG^BE8OAVAc*W_*=sj9xgdcXZ<1n+4WlC2=0scIjD zFEq_+w6?nKO4))E%5MGQ?@&ocrjetRSCA2@8{;Hx-k|1W10SBJBJa!_cW2v;cI-$j z((OnGx0`B92rK1ZCvGX`+_12Qs@t$T}$K$Uc(~e8U9Tt+{^L z=*>INEna~yLSt63I-p2W$C|lTF@{MF!Oqj`#k9wQ-=Pb!K2gm zH~67!Zy|gSwb}D@v^yU4)Hzih&E|lAiq6%y(hQc&u}SZjr2Ac;msp&ws+EtE3{v1C zlO8YMC5@k)c2|$k(Tr0I2aXDTzeXG}lYLcDW`@EkU(v8Y{1(cmS^?wz{>Tu26-#QB zU&(G?bzG{;V1*csdsrvqtj!W{FID}bN#&)Bk?g16n()pJ9%|2L? zTGy6WxtZEs(Hf@_o3uN7$?5LI52crv5+*G_TYbN;YMwRgw{CvZlQZ^e4w@xVifyTy z?yuNlg|td1(Z(m*=C0jPEE%LTi>%`-NS5tWY-a^VgBUU&01t8QFVXvpa9HcfiSUBD zG8YkrYvb6lc%7hxYA#5*6znN#%^}DXtr@RT;Hf5YnBjbw*!ZnJAtkZ0c&v7JuB5iS z(Y_&-?%gqQhg!SKe;xvlgN+Ppbj5JHyZ*xG7%>s54TlG{g8>vk-XxyZX@R(f=wc+p zBSSx3@G9BTz$f_4+3?aa6GQ~8F*4S-)`s3EY#Bx&i)E%YRvifn?b6+J3vmd41P2``^~`-@3)g$|(QaDo*ZS zK@r}T*6C?pDM@jDm<@h^6oK^wgN<}w<^n3t6%Ed-E<$Ff&-na9|CtoAAiymK&FCT#8k`gZ&J2R6sQ5;#v)4!++UzH(GGrM4Fy&oTIE#3xJM`gLtz*0j0Lt`na@sJS|mO@AOWx!9wx30BmWjA|E$9vKRW{A`d#puzZ=O`wc` z%KH?qZKHLmos>Q`*y_Ys!$r`yd(?C%tZq6Q>-Z_*9AbaBY?V~FQUle+yy&VeL)Qrr z=#^LL1fn+kc^M-y`H~Zq7bQ1cXRNb}XHJRiw{ot&f)I9HB(}gS-ZDc$fPGr2hKqXr z`Y|X*D6;?bYE}-m{lW~o6FVU4OHQaBBm{mYEOzj39&pA6QV6YId78RS4V<8qoxdoI zwh;{kv%(T%^O!M66H7%w%oNQ4BOHYZG4Fq&QwL@Q7Rok9vag}E5r5dP z$G?7An(3R<{`VTvV)AA-f4K-c{rmkEKPinxj~o;uCMpU}GIIx~)NZcV3r^miNArsx zlYC4RBe9cl|3}CuTUssOo|tP?6-Dg{&<%j77f@E-X(OMZYF+D{i>Ifj*I|gyvk!pd zO>1-}DaA^qK}@dKVhY8AW;&s0JijUE5hGP*S;Y+3JWv*31RVnVvb@o;J=I>1X`SOI!^I?(iN86GyLgB( zgIp_W?d0pwjgj$L1b-@59Sv`S`dn1=)Uuml368{^H-lo=H5__bF$F60xK?Ud76zP< z_f!ZudASzKtz(aa*{e{+nS>f0wv&)$M|#);Vk+8Nl{`DPTO4ML6e-a&c=d6&^dXo4 zqa$~wSo%E8B~J7Uv&qdC#%do0k9<7$Wg%DljsLEwAf}GlmGe8ZWp21z9_B3e*#H!Y zH9V_Chv){yE#hqmA}vz0L(3E^=l z@{rbXKKh52O>)l&01_AY7Cwdv+RPPE5Dd|>Xq7Ra2%9*==uT0D)j(bZZa*Vhd&q?2 z5Bjmw10&CJ4gQR*D^bpLrwc{u2aZOMXls>L7Oi?xxE4Za(Pg8#r_FF!HRoaYaCu(B zdN^&$6J=HcEp&E*)}6?Gq9YupnW z-waLHUbSOIR7n*e(;CwlR4TuyvDebJtF%h@`Vv*3osT|utq06RGn6jOD|g&jKj;OK zH0f{bFi%Axn#-3tj(FVf0=FTaGNo!+ygZdi;gM(ro|JFQXhy@KX*(r0&LDw-zT3oN zs0l^GOa>OFDYeuECI>Q5Ww8YU>S!~-kE8+Gv~*v2s5>>7kD>89y4RX197U6$L0QBN z%R03sX*N3Mrs(+kY6O?e#Hs4o35)o=e{CSf?m8(JR7pU32u#wD`@`LQuT2W*XiMR-7~8t~#DZ1BQ^fYc(ToYeIr9FMO6mp2Tw z6$_fYw)zH7VD}~1;a0A0Xq#++j^g71Zltac(NhsfXh7H_CTHjmj{qmzqA4k@X`%d- z@YtBT-d*ip%SDLFMjV`-+Zm0c z$@s>SGQ-OFMzb_Sg3+qeHp9!xGq}Aj%+2)*`2aoR4`!xxwZ>p&#_~mYhI)6H%Oiq; z-c$5|x_3UqDP*r~&{4Laa|VB0bliN#)km=Z9D{#d63RE9L*{`30GJ^F0FeIev!P&Q z?O?K!9@N$iZ8;7uLm=Oe*i6< zbny2U`x@J5Erpq~&0a`E7ZE{0%N|fS?WM# zC~HZ^v*sDq+nfL0^`qodoZa>t|T$4??@NDE0)qeO=asF$JPRs(bq1P(-uu< z&O{C1#74-MVK&vN2+CdM0|GC^=Vg{UFgItEg#@J3T`SiHyg`_YWMEiI^fH}>e_J)4 zA$wUy9mOPHna)e3KiUrLY0KKIsjF9GATVm?3O6u7^b@8jC1nw`x1>3Y6XdR&kwD)y zns@zD*{&%1_Ji4F)>ynWH|L+lU{=iDe=r*80Lg2wyMklOs;T($zAK#(2SEj&=i<4Rg;XH66G8@ zrS0sXN;If-1;xR6TFRQQm))dkQrvMsns}2os_I|JpsXJh2}U;@l%nPqM7q)+F0NW9 zypFnfLVH7r0LE8)i_D$(TTX&LJ&De%B#EqX06shzm14e_qS3s4GsO?^<% z#|fAAmwR+ehlZd6_J(#y#x%jQ{Yar1te8zc^^RIMfq~XCO2yq1hcbHtvu#e@!mm!Q z)`;Jyb&;&IWD1K!htwE0^>?rlE^3;3x403{YMMrNQG-rQ;<8sx?D8L?Szm2Mm1)!Q zbOawNmF6`K`?#vDWouoWtTSG@O^s%n(M2dO?U>`Fn}(BURVIH=Y(|BP}>YmOiBM;RODR$iLD`=10KuT^w;{#b*6jDU` zrNJl&(L#zqpX46tXG4H0l^A!|!lwBeo}_-f1X zc7u0SGm2|Z($SgQXh29!1NC|RiLPdbXtNR)sGV?cdTd|R3s_Uj6{g4Rm!8F1I}K2o zO%rD0na*+ZG^mv!<0y?l_;wIPYJ6){<|O8C(p?~@98Q0783rNcOhCkP5=Qe7>5qtmV)#pALa{R|Kx(q?cKL0j-ylEaUxA-hbi=gTjY&Op2mNqiGe{m`OTGiZ+UX-2>CZ_MIQm5_rjo_aU(Mz8>$l?p3U8A?2fU!!E!dnexm3R&|W*$W7aS};HW z$Ot|`T*CsmF031e+jG|D?>6s`Qs4`Ns2jitx-O*KPJW9ExGtgl25!mghl5`ekm_G4 z4aGtXVp#$}Ie~sb=ZBL!AOdlL?uYZU1_{_XzDL>!vWb*>r3SfX7tm60NY@1Xf{KJk zME4lt0?<#3xJCllnO&jgPlN7rp>GtjZaxEOySVN$*{u^`{xv*N4IKD|0APC(`O0_B zd%i-?(099IP{RrQ1VQqd*uz6qGYxS81^5=<(=~={sij_%hg?$&XsJ1*yA8k6ocO{C z_?Feb|>hY zVLuPcVhC^UX9gvSHls%#l0)p@VG}n%M;m@XCmo_E3f`b94qfpi zQG`t827@HQjR8cSx0f6=mHcVNLaM-?Ax&aKgVJd4AA7Q9auW3g^q*7iuVydE@y#Xp z8{wCKqrktPVNi1XM*5C!|D0j)k{y@s`*r{aN}^EyRe}mGJuK^98sjs*uf5a)>_2OvzYr zw1lDDKzf)u-5$O+jOsEJeJJC&C|(Vc1K&F<+0~7(vtrrjW-M@@f3S;)%|sBpPfA>3>F1fM(OR z<-frS)Au+E#ovMzF-If&??%tr=pVk{|J=Q}eF75)z1-EVBqTdz-BDa`;>eIh&yxvNmT&U6iQ4GazR7lx)L zD}y!ZdNEisZMD-OAF*BwS9|KsaC~GNUOgeW5B4ErGsB%=t*H9ojDjmgcGP3Gp?oIk zz03&&LzCWBFmzm(gZQu>wgVygY)8FzaMG@}a{&st8BaSHa8s@~6=2h?c1uymAmV+Q ze2cN|{Ngp_d1+u^WE0tm_O%<55m0xcZCplvVj4nHK{$bLIst9}sXfC*l3gtrXjx{Zi zLzm+;p6jfp(rSf~X<=6r?J~c)N_O|CqT{OKTM}xe1fvS%0aj5( z`lC8q*>5JisNs3@u}!e%F}aAj@_JgCl;Et6aKP45sGmC$6)C>Qp9}~l8To3nO4KFJ z2^U^jfu(f4NpwficO=k=4y0*a%G5>8Faot;7n_i9ExCv1r9zA!sE`cV0XEm8>%oZYZ=9ZaAjeZ-WC_TaN*0#8-M6 zo6%VqJ0_c?G}{Mil6D!^FxEG)*Go+;f$69Nn=T=vTX;cjw!%9yZ6#gdYRb*0k2XXht=)eyq)5t=aq z(@J1j8fJC(oJm@^@TM{jRC|rIN%`u32rOFz5}&f*KgJs4i>3gKhHwbHRD@}o0~S76 z-)=qDqqvfQltK_9ghp#G0NqMTs%(p=cU8^`FvYe~O(1d8bdMgoe z13Fx;@-yB1U`AX3eg9E*6|Qo6ffe3LfVi#Qwph-wC-Z}w(ve!RsC5I&F??Ap_S&v( z-9)-aN_Wn;A}uOy3qPGq~BQ{0xiY7VfF|@(tF0DK|nsr$v}*h?t`!U z;HuP_DMRbQ_{QrBZZrzbUPaFvRRrh{gDaOQHrr znwyvse%Ktb!}QphbK*RhFpd|rTioC@&|=+7P-sd-g?+6OP3>5ra_a;|ipF8MD>>f{ zqhL##y2%JliKgm3h+xz`X&pK?v~;i~s7lm6=>{||C~d&Cdxisy9yKWfjW3eUJevJO_aGKm`^{a8RC>QAb-^1+Qp+sc4RigqezXlU$(eVb^L=1}TBWan3 zxcx;+EY{!+DR6P3ZiyX>93(e3Q?MBW+HkS@Jnf%IGbC15Igc)CGsa8GGd@uSzFy7p zqF)GM4S06VTTI0~OGIEhLqHzRqzad7kk{$3*5v|>)h}=w3Mv~~tqwX9P_5BAYuZoa zHUySBPkIzqM7n7l=bEp)1M&Ca8~>bQxxzzA?*UBl53)b(auK$GN8xUgRmCq4&)C6` z@(4k*j=WJ~4_RU7T5*Tl*g|jbvU&GFyhkd$fE3?S7Ru-|UaP08$$W|3pf0$TpQ`NU zO$FC_YM5VEJu^;FWiUsM31YsM0DCdGno2?_U#o^&*8EJh60i>vty+s`T1%LyC3p=K zty=wdr2JW0NAQ{3Ssh_y=u*UFgQTau7QY>gjGkRF3|oq~-js5RN&prg;Gz%~Wh`)3d@1EpoHlC3)A zJr&5YYf!i7u8sUl2=eD-1$>RtNE7mr2IT5Kav*T?2w&ESQ0>TcMa`meuMzozI%L%? zLx%2()y{RgDq-i4eW)J8+i^;Ce8KNe*nf`Z8Q`XXnEZ?xG?&r znCSlYWD>GAurV~UCl<3dG;%ewHu*m+lcLu5?Fce=zjga%9V*!jpucaP^|*)--|Uh) zF$t3yajvSB=US75nr4$>JIIHMd>(pK@LxH$Q?jCA11mfenGVMrjK@<`5C349sPw48 zG2j%b_HzC0KqM$YYbHX5JrBhI^pf@4LE zv#?gI(F7zrlpTSMms3wRs zz`pYbW&C_lO)0#?G&&8vOE%~-ze(q)+hefSOGjNqkp*+(k zi7i{Xv==)La|{t)GP^2nv&$ysG|$~~q&#XH^s=y814LW2P0*RLgE8xnjnxbN>TU`) zt1xc~Nx>ARA2NAn4y3Oj=nEmk6Q+}NxiANEw4-p|Bw!S9ugGtmyvtI%9l06cm7=3^ z!7Xoj89nE@ThtO`wck7rMPZD1SOGm*{ll2Q!TXDTE_&7(dpAyXfqaH{2rjxN5}(u- z3OXUsTH%1V5#$Mk+a#6;LI3yOn!Z)|%e+4;`6sEnpfb$(ZS_qi-_d&(^{8g7wE$mc_P7b{HE-e&Y2+Pz@?Tvnm@aYTXBKEOTvkK z)g~H0+-@MI)~{nFc72I630(n|a$$DT8adrVjguLO?@+cEWS@=^8)4{ipu_0@&v0e>_FMYo7xe z0D$3d>tEK!#mHXJ%)!y#OyB7*DqdF4+Q{;s2rWrT!{wV&`jk#!ns;227T{~p6vD^J zIfV(|2xL)=AXk=;AXNW38Vfr)IU1;bK&t(#m269^>oh@TOx=DKOh;2<`3~;|>m7nd z>x$8VbTV=j5wGrpY=?c~?u0ES>-Y%7 zTH5wP2siWKh{Rg^$T&J(h1gV+Xwt=q*syhZ-42o+;vNwiqL_qAbVPzoluVpVj7-8+ z$)7xzus2>d$yT_J(4>o0FYK*euLF0em2QerG^mxITx0Sa+A^L%^LKp%la7`2*{Zo` zt>u6WhVkH@+?Hr|^m+{C?I_08Geg4_V|cKWF9CY`MLG$q_84L(r5W;L{vy9Rs|j|m zXO<5J1h$ALfb z#f^;WT-7KJx5%Bg^di@*L$oRzN>oq3NOqqIl*-KHM8bZa1!|l|f>D}#G-fPPHH+eq zON>)Vni;zvd>(CGR08*cURV5GFVA=!+&rW;(}9HLlP+27L)Z}kK8mkkY%toV6jh($64 z4wYUt_|QHD*+~sKZNTs3+z9l+LGcp4OYgcsT!&wxe%hT$X_)lDfNtuJzyxpV4#0>q zQ~gmHvW^Ya-1cUGwYPlx!axj$iE1u>&@VKMHbW^JvE8S3E8EM{8ho+m3rlf2+fGeg zW`vp#J0+(Nl#)(czO!3%Iw1R~b-WQ~Y3Q(1{yCER6VhB@{j!1^X?wCc zKBReE%3uR$uLS;9vPvE-eD|^{U_(z!Z@L=qvR34`>@~8DyDxp-F0~5vF>P!b!_)Px z^h0Kk@E_hQpnz~xLASU0q^onB+IpkEWto^ZgGe&(fjo`AEE{dl9TVv*>ec@{#MR=j42R zsX3I!!DJ^61bmO!EwjkIz{=*{p~SUKvK5 zYjpOQGhcwI<6D-~`=SjwWTMp!B)!P4H9 zlsUS`NtMkV3gPC*TUBY;(06)Mb4cLTAwlu-vJS@k{Exh`?@b>+$0Mbj*L@5@jb?&6989L+D!r^!F1R zf;LY2mPQITmPXb#W`_Tk1AX6oS%1rcxYN@UcIKE0nW$5emzcy#Yknzm`NGSa6@(YW zfkVQ1t*xXRBkfl%Ip2Z3Lr(h!!t;N8C(O}X2r1qm6HgyTnoOBGJNtb8@rKxefE{ZI zdqfN`Ng7$Fvz_mw2C~L-8t&7AT89piwjnjJS=dF3zCki^CdkZPkhARg1v@lFnFI|u ztKbKo^pME|hu9m-&Z$Sn^9+bF_5vc%G<(5#5S=K)o3hS;Ts->bH)F$&!l<}Dw$GPs zVRpmSvJlbAnmgs7c~vUtkw*ff`q6&fPoHhC&jZ`}ONfE%I@Gnm6Y81jV#U^WTNq>6 z@*>wd-;cDvh};ecH>#3=NK$Ad%bT#_3WG_&E#?rBWqTfbaOX$cjv2& zs?ZDL4u7*!?Wv&fA<|;I#b!Y9L{zcqG(73#8|_YFci)of8-!gr@#Dpkz`6c`xwsQ~ zg<{B_O!)}cta?LeT_&f3pU~lp&?N}UF6juwQWe2vzL>MWFWIMu9W}0%90*GE_J=%$ z9u=nuazQn6{3H{vDuO5%1U;w`c8@3!uO(Dd41b_ls(G{DXZ`P!9H?ViN$(rU`h3s$ z{QZUcx5@f{he_KY%6*4Px7Un2OK4Oe|EZ%zDM@aU*I|-^DUAazgb=rUZ}nc!S3MlG(1ha{lhR8hEHg$2lC1^)LfOB&Yy|a z0$Xhvfn~(H#z96T&`P+!$k$u*fdXcn7hd)m(_5lv!XxYQShIY!Asz4@u~DU?Wl#4RPWx zpsFKGFh!Gw9oMG_=T7}M+RAW=pJ@l=xR8d3L1|9`cw*MkE_~XV#KA1 zwn=`DbDlFz5j_xx8VR@-MmoFkt#N)#p0xFr-M8AzZBE*mn}?%tj75xVeoE^hWFBnnI5U{`Xy0dHNeNEg zkNVmcI77iukMgL~SVWLUI>*z?YqcR)SV}yd-BP<#j5#!((1WqTLqV!`60}lU340hA z)|il`GMKg7e$UX%BBu6U_#yDe7Pa0NfXH;~SwHTo3{);7c>y}@0;X3mlF{dNo)c9P zBx@?Ii*o?UA4i&%sjfR|^s|VQU>>kTwe&}-^g*4)lHZ#y<-%!*_1Nv>II-W){P;Y%9KA@gw zIr~UF!;rqFNNW;S5T?~BhV7&+yI*A2Yg{~$!C+vnpDoM~N54(rR0~(9%PjUedU!lk zx_vZeX4j2-SjsvGco_27W)7B~>#34)2Szy5rFh8m7Q#=twB1O2V$A*NrHq)+&E`xxxBl ze4CspQ5;vu{;E`2r=2SQ`0edQ+@Y z$p<^SBNudYbMlKD(!bwsRA7Aiw^s)wJYPbBzrFb}x58mz1X|?#yT36v?@M*?*RB)H zu$wu4F2NA-lwqt`d?>(^c?;&UDL;4$=>`)Du3P~Gtpg9}N)QmH^S-YPvPB;)U>X@h z8mV|#e^eyGff~EW|OTb?T|9err?02T{x-nE}!2#DV$k-7U?#c zq@7)|JVBDlQgS_E=3Yl6VxQ!iR+QHSp^1igk^waub~V+Z*_B3PN`@pJxkHbd z>=a6Q|3nUJpCEM+LuNvQM+of(_UXkzOUl3+_VpT|5`hV_bYVBmRAGo4xp6K?<-?s1 z6z_R$^3gf={UcKh+Yy$jx87FAB>lGNy|X0;pHIC(*N-I4@UZHGD}v#OgOfdRG7*Yk z`-|j#&$&Wz=?5z&4_w?ofCJ~|!UWNM%#hD=u37wYn{uuqyZIz8DT8le&tyEmJmdBx zusei1QeNlefFVZmUl{fx+Qv*4BlGtl%q9y3&rfJMWIZX!Nbg5d)WZkW4!$t&Jc!h` zrMfT=v?4v*BZ*DaoAfzpQheZsa>rF&Tf8V@=7{%mYm2Im$Q75O^3TxA&X0H$JfXL~ zN5&J6pnr!E=A|HA`UPt%=E6Ccj*l1EAr5U-2wM$l(%R9CJ|Y~Gf)xO0eg(_;;zq&IiGNfWSXX`k~W?qLcZ$J{E-fW3}^hg}?^^ z)fNEkO(M$G8=~axH1qwyt^}CMMB1AP5ZtYh!%aq%blOBWUW(jJ^o)JOzDioVN+KkI zQ0JnwY@Xxx} z#KoTGJR6iC(r(!thc1$+P4joN-t2lSRdtz~d_>m=_Qw`oM>YLM>$`QEc_y`erpneJ zR?V=HdU`xtc3|2wLr{C_hs#b0uP9>z`Cu=C-dZs(6p@=}pi~%xr;b3V%v|Q1zCwt@ zZ6FRPJ`|UBLwba}{S1)GWh(Z3C`sU9<_qDera3NdQvoDRU=kw%9~7MtJFuf0UA=eAab* z$))gUNWc2oFz+8#I36ObKGN+X=6H32SbL0Y=+Qdgfzf*1*`CFn5KsR`hp~?ifuuW7gszCibF2QyN&whwb7mi-ovtO(Q5Z0nO z4Dbv?uxE>bEkbODz?Dg56_nf}RZ4 zHRJV%3n)Hctd5cMH-dXJoMO5THYUz4=kjaDP}F8mwExhvLkhY^tw3w$;76~Oikh+G zCKEs>$mgx#KM5)xP?>B#AUJ&?XiLv9P3iYufjn+w2oJx7wFp%NAG@cSWsZLi5!dg7d4)We7-Ole+EF$`PF zxqdC^W(gi19@E^<8_Vl>yxpGPR?Wp?C1jYYL*c>fFwZarvhhQ6aV%tJVgo=p^>Zms zhJ`*Qy9fbybDKsp=UKxzvrZTj!SGexhwL9+>n3E(o0~I#Zn88yHmwvN&KE&nmaAd z%Sa2yPZ&FZq6s1powt5)XawEEL*NX0NF)S(Z-^vU#s30A1$%1|Dr6HC+4hcc%UFVl zht;n`WRaC`i^H17g@dm)DjUqtnnPVpl|^Xx9%CPM5a&oG^qb4^+w-30fEtFd`dj*N z8CjIU&&$UE3C#>yl-Cm}((AZ~B{b&yR9gv4XVkn8B)R@mci88MxdcLXkQ*@@;8_0her@z>s8%nvBqi;4S?z=vj{+6W|v;H2Suy?X`6xFjfv^268 zcCt43i>&`=BbE6tR_L6~PG6EXH_^f`88w4zKyi;yG%-aSA&#)bR59#lLs+vBkqM5~ z1>q+ot}IFH%U_gGI+L8lPOsN(Mrx*m@lgBy`SWu&KvtiNTn`XfIt`U&QtYq**gC8; zHkba*nm9x!+U>1sBu03p;v*6UC8*2GuIW|BMJOE%Pn4nUw~rh>S$rqojB?lv2M$Sf zDfYmxw{2Q93ab1PAjYXYnX zzl$4fo@gu5vzy~cBh#naj5Lop=AGCOY01SOq1NgA)PwqQXhDAo`{bE;^+3g58yC>` zKrjTA;okMFUk?dw7_+zQ1N5fUJOts;Qionuud=bgK_6p;2?W0fy* zV0LA1c_fpDSYKGV#=misYbI{?;-~v&@H}kof^w6k0`v~AmrlhQpK8bP-z%o^&tWg- zDp%7RY(dlo&DSF(mWZbNln%h>Wim1VuE}EJs8wWo%XoD=tLqdFx_UpwXR(z}Em+W1 z1EQ!CA>0%|tK^_tyb0=HSD;yK9kg#zbJtr0MiwmMP3)FBBzsB*ipr9QGNrP8D;hX0mHb+wgmIFpA`9`*32f4IHb*WAB(sgz1|BtYD46Y^I+O@N? zk`=Gm&Wdf@wv83rwlibfwr$(CZ98A~yZ5QH&#v0LMv9VBXHqiSe!JJs5KVC{_K3I-v z-{j*CI*%6C*O9}5X5PYu^H?y|oeKSeYL?%d1l^+Ew)to2_E+q;p_m8qBz@1MbjXoO z;UM!ox-UkDic{*NSMdkT;AqeN;GBX7TqE!t*dgp8^ zzDAh>i=nu)x&~q<%B8IcD1P7U3lEn}@Gh^DzyXf;Dv|-VFhU!2f}$=kS(`d!)^ElT z1uM81Q@6IW2u~F&a)$Nwl}DDyez2aNnqfVIMjv*OpHFO~F5NXg!C1%!rOUdiFJJ5? zxlp`zNG@K`YBIrCkX$ovby6CX0~+rtP~(=&6WkHzLsl$K9qaU5C;%MTJ|+eTA=fZA z>NqO-M-22=pOr!9YT<`{OnM#CiEP2f5XzOb;hB17827+hOgb$4WU$<0aQBk4lWbOzu>L0w;UDa&sM_)E>~ zX9D2)#ng);L1#d}*V`>qhgGWtyTTd_v|VbU85!UD>puz(^htBAC=?J7-}h)1-2c9C zWX1l~rKJMlfn|vN<-KCSoFos zmOBG%huhN!5Ht8f6tkvUnAEcknRJhcs>gg()DAhQ%G(WuM=UP)!0ueT6BXc0)g$Pr z(%AMVVCuC7mZi2i6xaH2h6cTM}Z6Ymf;N-=$6X$Pf%E>W@jS#LZ4N{sI!vE;za2)(;tSCS@Z;)2wcFM z%cAm^2-v`%%frQbmy!`DWWED6F`|s{D_s=u3-Up(qS*w@^o1#_lh3l^47tJ{evw&b z{V?``?wcKLPs%wrJk$C}%x}jfub8g2%F#w;iu|y~^@5h}R5JVoWW&7w;ZxE=Q3l2| zPcF6OR7$Y^n3inU*nQSg8bi?D)pmcPek2#yjq9P_p0fb4lww?RzTV2I*7axVNNFz@ zrv|;NFE2XP1B{b}0oGXw%bOybb2*njhJu^*E|Be1)|!>1B;@?`em07P@B{Tpt)=?> zt!lQeUbpDji@I=HnALj8!k(6nL?Vp)d+u`{N(_4Ak^Jcu8F)%5r+AbN1Nl?-P^L#Og zs~QLwg;ut5AyAKWlpu$SWr0njkDqRWB&QD9`iDz6p?~#Lij9beam|{`L_XK*f*E?!<`snfn!~8YQ$)jsJN+Fz zWMAtX!~qxvp6YHqY+8{cr_eOjhW>GbtOsE-kq2H`F*uCGyB6*z#dI^+xD1T7x^%{W zaR6cQ(le83rIT65^LxZYQ z30gwMp)ATQw2x{B2~bSuP8^LS!x3nMc&RY7ZBBsFOIxZbdF$1UI}NYr~`N;Gt(DZymw)b zIh~%3SE2ayPRlzxmAwliu>U5VRTFfX<0li#7e)Kq^ ze*`cQqaxUnRzx>KZy~%xN)&QmUB05T*r+m~t>BCQJbB%#E@ZH< zO_tshq>^LX>8bvAMKt-8w;q3QuNrA}9T%h#9Ln8pH5| zI#Mc-lU#!hws`TncyU|e7k_R=+UNp@U+Dd%ei4^{t{I3wj<)Dut0r?jaJ=9(3Ef9- zJnv!Fvica357>@@&ehSb)j&8UyW6mRgVWK=pn$xfeni1tYm02xrK8h;xcK>yKrGvU z;5Zp+HUe#f{2+mN_7K_Lm<&e+_VDq6MYzTn*=9kNm=_9UbHXP&6^aaXbD|3$2t-Rl z7&QEi2JCJV89^sqzL7rSSXX>(ZJNq=U=?Iul9nm7PyxE=8B(4mj9wXE9I-fJ@wl|D znNGsAAS-T>6Nj_Q!Ed?~%g&^6q~s7e(-_-Gw3PjhqnM?I%o>&oW|G@@=~lj-;$D4! zo(HZ>mDY3HiaxEwWvyo?rDjJhRvCo!V=1;}DW>;qWQRp|qFF8$TCKE}unA$LBX(ao zZJ#t^gS5mVdj)*ZB9>-0oxjWSVLw?4hpc0)O4tViq=Qf9d%{r7j3)#6ez=Er%MA8C z;}l*!$985>6F)F^&MmV*3~LzVc97|XbMt$^(&8J7}SjK9gjjP;^f?ge@wN?5= zckMYJHtcIiRmVJrlFEUt7jG9#*D0KC=kK`hnupX8z)fKz6So`nOL_25>993omNk;j zZnsfkR=mEDkmqVF?+o;i8*EBiDK8m>c&jRgZ7%wm>BEvO3Fa~9JL}_(Vh$;uS==KI zA5S@G8f5*21%Q(ml|aFt?G#cDgrk3SgwhKW#$jW}Gw9CqXO!PRhKum9bNE4|Rf5%# zAne8Op;6<9Mg6x4Aq<=iWxolvPgNtNCY5%PRlhy&7*o;!e^~4~^g(D-mpa~>)~{8D zuDOuESpmGV0(_mrve|h@AJfXSGjQULC7c0Qzbwx&X?tVkj;Q5G!-|5nYvbmXFea5&0<>>n zB>;6eIj~^}ZjQP%QhSQ86}dCSQQp*n*!A|$XW3ngQ=#i^oX?b(K_CGa=d z4%;C7N8w4!QRa|y=F`-cPS=lhKH&kjaEj)l+#gSU$NfJKiIX}1-iC}ABp}6&bLr6+ z=&A<>rNG5{OxC(ZwiHPozO-gW-q;6j1qLe)THGbm5OnMjDuxyY?+vz)8Ex@8h#lTnl% zF|<;>XrugEhnfXRs|7&y+rO3=!(E^8W*XvS3V+k2<|nxotKfjXqIcP zt!toz2VR>1Oaeng8b z4iH4GiG=n(4&gBVQ&AybQ0*NhhWd( zR=*`8B1@e}oHN^R^oSbX=%ZX7y!ZkV6>a`P;A^A~$mbcsdOfzx@b7kg<#73ZAFi}( z8Yb9w(&!7+A(zdw*#QN=CD3Q)ff~UBAM(YU-4KA66+y)4NmBOf9*!#tZw5+`W*0ig zA*LQS>DVA6IB2XH*hQ1(#01gx$0%LVv?wl|(J>#SEl`Eq^5lmGr;U?Itk zrD?#KYpllm|1~E!yHK~#zDrc?_d)SrpR50Y3o+9Ze%t2%mn{?_JN8|uzI`UUjALsad(A@Nc*2gG$8@il;jY;fhcV0AP!9KhiY1e408! z_4!lYVxl|KQ|piX%Y9!)X|VfO{uR09mdZN2Le1zDItE9ZK#&m+xcuUWg~K zyzT2}-MYyP`eqif7~xy~lp5`gt*j809lc+cU}ex6Ul@baOmvk(@55Dnq2YEx4?KCx zK0wta2?K~O0osl~?2i*a0ukJg;o9cw zssmi>y?^}24c=OjF8$t}==@(hyA<^-tgRH}RsUJJ5){Y2=@&>`*m}ePJ9;5_1R-d; z^qj&t+sQl-+o5&Ppr^a_Gid%H#%DId4jBQljM^|*jI=F@e zH|cl5{*uh&-TYV)eEpwIA1~+-6InE+WI?plYXNv@1HmAi9#-PNlB3PNcv2dX2UE23 zB`5vFE%D}dL5bl9*A2Iu%umeWmTB}e;b|=AQhjy(@6NT8G^#{Fo6sy{uY5DJxT@MC zs4TyR(oCUJ{g`#oWNtM-$Ap~BRp?RDjI$N! zK`KOE?+y1OG(sNN%f$C+=jDThqPL<@?T-yN47xcLgbb>nF;XyJmuYc#x8)g=_~9Ed zB*eEJ)e=iws6G1K8loK=qih340nO#jL+G#Gq3dbRq_V#**%Eox(m25t6ol|}v{7p? zdl9$*N{5g}PYjM`l zCzEyu#2DF49S%K^{;B222%1L+>Y*y$KQ@`0C3zF+ns!@@iZS2gkk=NKKb$uBx* zhIXQ*U5D8t$)&OwJqK%pIUSqp$UU)+A)%75gIqU~qY%!)Cg{0KG$g0ZY2_BHBX9pE z_v{7w!HoU5d@|KJ6fmEO&8MN@4*n6xB~piKA{g>szxeP=5`d2+pam@ty@N)8OuA~$ zs5D*9q%xhWG>yR}#axP=Q{l)jD8hOdwirAu)Cj9r`%yfEcagITj1VG_XOip{0B_bH zmtGY1sNn8O?R|6S`*L(hva-)p_{ z`$bLk|65Gx{<+vQ6t2wYc+tEnrP3OWs3%J{9IWhZ&5M{D7jsF?Ru<(fSgPp*JzEQ# z9#$#Q#aey6BX!=({X&L6fxbv@I%G+E;WUT2rrtC+ai2D|ygoi{e`SZ+{bq@tA^@~d zs@;ii&f7|af`T?7Q=Y2M+6M0wEU+cS%vs+VNZboAp48O;{tG8OYG>%ID@KFR^TS!t zWC2^GnczAKL`u!N*_jj#;Y})N+L|bD~bF?$fAzaW%6H%h@*Tc8PJoN&`ZIX0(E7!=g;8_j}K=IX+ zL-}#Dxh@Ro&m>(mQvHo?u65&N75qjCs0Qcv$>9^0d>eNSzHP8yIHXOnz?f&yfcZ`- zsWscT$7WA=&2{oQ{?tqoKbWN89B}k;vD=MHURL6Z4$AxzA#r@wNzHTi-;vSoTq9bnRr zc=tJACFWZ=rejc?={+rL`L`XAf9&jH%pofxf9G3pzRm3ao;()Nv;2-8D;U~2eTTgM zwWuNzH7t;n(1yN(ot#_8fFxQP)@dl}RaND}2#~~+EXlrMnzKU1cylXrPV93j>>O+I zeAmEX&T#GRrv3dae+C%)(e!g=xX~XLoDn@)X8NB!*ES~QRagH$e(`kKciv?%9HpnM zWPQFpQu|~)6NYcNum`Z8L&%xZ7{vK`Lcgh{s{O96ukKg-T}!B{uC}WByQaPl>-Qcw zJFB5_i1_zz7qw%JLmg+I9b-6Bq^+h*h`8zZf7r&ZiQf>o5n8t!tf34@xf4bM#H37P zwme>iY$%I}!a-;m-1B+iT>3abWCWTVR~biTcwt1igS_L)eR)zCmhk4sDYm4jnhWqz`ogB*Fz3$ogfEr-^!)o7}!(t*`aGhUr15 zs`Glw^eLE^ahG%zQ@N?9zeSeH>kl!;14lv0WagwWio178)-0LOP=*@xPRz(oBE_BG zqM1wOHUla&q!+8f*b7*W{~}ER5w$qp+pf4(T~y(+9eud75dq8Zn`3`xwI$Q@C^thCaG!bxgw(? zY3>#;DKXm2V>ajRN+mX_ZW_6QsUWov$z7E#kIJdoN)3QfF4;=?sPG7v;hwRqmk$w* z9b<+iP)j%j`>a~6%|>XbGgH(7!+$lly$0n=gX!*_ha#=RscM9$tzIsBu4%Cu_Q*|) z-l(RXp1O13Y??-O^V^$g>{ZTlihV3iZHm~ghwGUue`?N@L?PK>#j8y@4zfwqkY7%J zoW1l*gvtFn$f&F!o0sOnS;>qUpO;h~w+Mrs?X?}d<(IhGNzQyPMTarf2Al+#8#!S* zKzID@He)bc9tcGplD|us`$IWyFp{yDDs~dVR=Hy3K6|l5s+Uvc2Mfx~X~Ja8IiEIm zG0$aNf30K$*i)6SGj%>%_BCe0)AIF6skXo0Co>wgKS4i8%{Pz$#Z5>*oc;UMRerc7 z@NiJbRrg1V(8LMnQo4SoW3oY{n{&pVVB(Hzb#b=2EarFf%B)j7=BlQpX3r4t8BY9J zW|Lk0I+jH4qs?ii1+L{H7XQyf{3*@k@?wV9pj z5BE70;q%u32s~@j=SDwkV=zk|eV1?#FxeVRWJSMbPq5uf=bg1=mL8P>LUM|>&ip13 z9RGkHxX8WPQAz<}QTV;&xP1XJvBxjtL_6g6V(-9*(Nj<0t&Z?gdc z8$moS9>l_-li}Yfu2M+L1O-DW& zrU8`s4I;Dj7wy{LrtMPL0&bP3-+j##XJgKXtaJIk!x^?XmM(s$M+aYGenuU4&HOVN zu+jTiL|W86nwTb)5ie{Py>ai`J7lxmua*Ua>~?~s$1ff0$gNO;Sk4VSjw{fhktO(8zmKHqon_d8v z$rnr-kbdCKWD_)SJuL6BeeUD#WNou8?j3P3xHHqR*4R&WY`uMKe*doCCf&a}Y!SP? z+7n?VyxXr@pTfFS&yA^ z(0i&B+S7Z=6keILR_&m}Oqo6V1|1=p#X3zoo=awBFeBe*YEC-DqUXudLP0*1bXMl< z#BFGm`~d@N4QiG7jf=~f4|m07IF1$?9+M`SuQ@a-ohqrB7zFC8i2X(f(u4HV63_Sx%gE08V<`{H3EQxC$G^ZlU)s0pwp_25}?Pw^H z4k&>MDnVvAHdV^-W%Q-w{B8E#pF%7;4oi4MfJlQw%`M|TBW7#%APonX!k_@YHrvM3|$lUPWeUjYqW*L z;P23^@Epc&>Ld9*Q`K1R0tR&sba)2+(8i>kt)j^)rOU9}yIL4E3i zEFu;+I&I6t?(hzt8Mm3aF1b%5_xugX`s@uGmho=VRka<%V|~i;gE|FZ zMR&2Sv2Ri(j>-Vzvsc31(!DiV<@rsX=;seFTvq-4+4_bN9@iu7ws5)EC9t*os&3sg0nPaf^TyELz$R3_O)7t~T-T?N}pZ^bckY~W#%aF1!?XDgX3_9Ll zkvqJ!R4|U8&)K}U)or$)NJ~%l0Rc`Mh<9*D;7vZ-9;x;}O?#&U{e7CmbJOZ#jc`It zj?j0Ci#uBRg-7FZ-r72$$#2l@AUP4bGl9IAePF?=S$sTwXFt%ctrgQuE03ABTEPeW zEw6SH8eN1q+e1d-A{z$&R6tFmz)|feajI6RhA}}JqvizLmJ6?}3TYlD^%EftE28z(_&ntOC|h*UIxIjc6nxW;sR>9 zCZrJVCgMk@J$xH^NO0moKaYwDtfXxK+bkBWy`&B2sGhCE_r%`SV&jS;<6z?L!;M5DJuIinA__`z@8hG=Z@Tb2T&E8|5B>15GS` zt|OM6+hDWbDz=GT3P;aJ4w+w)s4w0Qq29tO$D!uu=Pb4gFuRHDzD@H6=O$|HdABYq zT)thUBsVOMzpqN}o`aK+-sH%9X&#^|-#HT&NY|7Co7|AHQ1_bIeQBl(Vh1>CZanMF zSxfZkJ}zAtAFca0MP^C*?<>+p@z)Hr`(cR5;Eu@oRyReF7d)W6jc`1Oh9^iwv-(u% zp8i7s9WE$EKYbfV^540u??GVyg^{bEXK7>c@7$$?gfV9%A*8{sNy)<*CrMyJesEg2 zXgJ!RAq0d$BK*C_(fyL(aJb8HWU+qVLlIj^@V9@$M@{X$xuhQtMx5^-&m`~p1xiGE z`)H`P*;}_e7aAkjr~X+{+_+NS&{0~dX!U%`+PVZ{^*Li-wV@5ObRiBCV8!A~inQXy z6w{~W~ex=I?1HWVx*#ok4OruV$|Eh zY$DdMJ z;bu9eXI_hK1dc(ohE1XJX-AG9vo(O^NV@ha>ffWy#Ozf@OkHgz2_t(r>2C?M=0 zfs2Y^A22b?Pv<@eDS+1OBL>5TEPsHh0yb+?53I_bvOplM2uCq#-;myi{M%Ts0gS#t zuj^|dnZEAkGiH;oM{V5FStLMVbm`b4^H!;e9}{8>p_Ij(Ju;gE!JE~nH`iQW$|j(b zus8Y_^=_;$$us2NmX)Xsy?toaYM6c76(3+J2Nb0!IggJd-b#!;)Ou{?Kk$eaCUM@Y?gFnmM zlP+59o(r-31>xixw9ecDBU?8L5+aHnN^w_`tAmtL28B<`uk|R9KbT+fO^bJS zg_Q#=N*(7L<4%dYggZ8GDC#4(X^LNB6k(j?-bjJxtpuXM<-#uU4C9RrSRQ3@_eu6* ze!Jx#%Yc_dOy)U3WM9 z=z%8yg8mqIeitn0iDwL9H;G!?1gwNQV zhauExFToTS0Ni2GHMz7Q+@PLB2w_3qvL6&H+gaY`s*m-xPaYD4n;}`BE#}@6G)~)$ z19aWZZEdUDCwZCtWJqM$GcZHs%8of99pqJHMTlBs!tUHkhbx+;RbHvsOE4WQHwzgz z1YtLOfHnv4Hv7;vhgi9JF>vK?zCy^~hmdX{CSK#`jpw~0t8PF$hmx8js%T|Se}_F| z+cyKOuSq%wxICIDDV{pYu}EF-7ZYC-4<{ya8YbdXip0@9Q>}=qgDA0wW>CX+;ZMQ% zXa3!I|A)SL6EzzS|28ARz6~Ur|5`i$PhORf-_gOr+UnofKnfZPbG%5OiG&>ive`)0 z;4T7|kj%M0Nr?c0NJsYD=~eVW)Hwt*6VYVGo*f-A^nsa~ofX^z7bhz4KYPoZ>2=0a z&fiAS#AQ^LPUp|$K07S>%i`gl5CZIh@-VOUy+iJ)@d4WG*sP--erU2w+fTeMFbyX4?IU@Zxfc=sw`;uPi%1NQ&iTE`%+Dc<>&$QZ60 zUscEmtt%=JmZk?yM>r`_^d|4jndFd9|C&;>XuhV*g;x>xWi>_X{U|uVHK}v&KGj6D z8w25%{&3Fzu?jaNLt8JG6xjP>4+s4SjGHxe3+@au(3DC$rW!4|&y*hS>64K4|3~Y}H z7n_CO4VD#}rx+uc6`U_3B@h?vlp}38$+R4{G&z7Nh!A{%JKw%1RLtq-O)TU%NgJrY zW)Ou0;R0G8*cN|9{l6~zKNhxpoxe&11Q1XP;{Vp(`^^gYr&6y_Hn+i4LFZCYH&qFX z55{azDrXHdXK6HCAcP^VkPzEvED66DgpDoyvEI;b%N#>gr_Ltjiqgx$tEDauRnJI8 z6@^4vFI{wz|L&K=Kui0+2Rq&k4L#m{UB_VA*W%1ldoD`IlN@vD<&L|>b<}qBcG-C| zNr4J<-VY^rzpVDA%7JX@`XCiztMHywY6TMqUBBl0I*n<*OjqZ`5RP$p9+C!6@2R}__^ibg!4(+umc3a;1F2n4E>CY^tYc}jGmTSKTAD6QX|0}DNkKQc{yaAG<{V&6>HOba@9&yk$tb%=i5(ZU^N&P zI^*t~w&d1InrF#Z=Z4;HIeu~MkN)s=v{ztQ^wX+-93N*@4lEPO#IdTAXmoGm6f1Kku$en0x5Jw+AW(l z6~P8j`)S#&F;yBQk{k6jj1l>YF2!hOc3rxINfADS|xB)=s3lc;c%I;0f+AF9r~@P)Q)+!C{!LeBAQEd^hw0+ zAy%rf(&-O$jOmX4N}6RCOzAka`;=+cXKQ>8}@L9=pd{S zNthkTmoR2iME#8+yRNw+8@K8%9pUnz` z9Jkt)Y!2vzxeCse=JOB_N)@UfSLCgKAv?zPBlrDYN9mI~2JC1pt2tSgb|N*954>*YIX8w>+Rt1lgNAM@&^jZo`maGU!*|+T z$b;%;-7xxqFUW<3>KNCOXizHD>Y9gADkjy4o+95M7u$;t9}Qm$j!KbPxGW1M?!%>O zW|eId95O?9++CEnTMe@iD-Dv2?3LPB|G;(?O~z=6wH?^C(i@`yI>xLv9A@ZEhpw?Y zY0_}}uLa&iPIPF_jc7sKR3zJWiLVAO=+gV{1UKdnA~J1>jMv+4VwAMnmXq={jU|s1 zwNzQ;td-8}MAqC-DAF^DeomTcL>`(nsB+3SN+@b&q{W|0D|9Lq?HfpEF;Z;0xt{VQ zG6w5ELu4k2d?^rX&Y2DIZ@7$)1*fa!jIMq+Y4E4x+#q_!0n;ct z!X};s5A^q_@p;a58v(Ry+9tyU{6pp^_v)<@GkQECvzZL-U~NE#8@&^OwN?j@KURM> zPi%4abzvcnVFoA-QH`pNW8P<2CMXSQkS^L}_H>HnGFZVBWp=NQ)4)pwF-U}9iJR1_ zT)D#k5c8kf)~8Qbmpp|KBVWZ8H_?nqptwIrSi};qKB9EEU^D5lzsFQmU0uMrI@0bV zWcLHPB$%PwP3g9h)aUt4p1y~Zh;bs;9<|4>=8j})da#VDxQO@0IJp_#QO|$R6UI>; zHHE}=UR1CrJ$WAR$jq`3(>3fG6lsMmhW}-8`~G8QgCEpr7*;Y}nqSi`$Tx&5^0_Po z*GkPD=SMMobH>^l`J2fsyF>w8Z&Zc~1(%B10NljEWVgB$2+c0 zwvo`QB@co5qVA2T{nyjvLKtA+s+1(Mh%b%NGL6sZxfKLb@R`XzX%8siL6LGvfvv?} zwEY-P`q+;8(94$0OH;I2s^-tk4&WV6?WUJXX+Ohr-`Iqn5QLigD|AYJ@+kl05x&kG z9=!g6tPi0b+?eAT7dyv?bsM9Tt#RT)DwMNzO}=VI+Vo7SG0TWFUr}Z3P1MqWYt^#D z$*#SmtzZ}PdLlO494+;te~;H>E3v(F|Me^H88h*AtG4qq63=@I;W?Py5qcpTc43|_ zpzY%w?RKFCFz`i7C4-FtoMAg~fRi=W~r)C~|7g1*3 zrxUVQwg1ktN#{*6>uk1;ZI{%b2e~wFC=A{+`EZf$ z27-G(^0hK`Qc^~crDhv_`--lG-&Y>L)96K&CifJ!$Q!-caQmC3BSadWw+VdL2!4=S zPghWouIJ1$K%<$x z@hho(eGv~_e3u|JdbuC3K1aoZuWLDMO^D++V6ydGvlvvD54%Kmaiig!5pFle?c`-g z;)JXat-Uz?giI#Ml5`o@>S75|Z#PApsF&eYP4FOY`rga`RPva~l~@46AJ`K*XS+q$ zn-E?M%{a!$`Y(jmiXba|%hMsrfi6MrM%yy3>*a2iba2DmzUvK{Wy(0l zpfg>)ROMtao(NznPo;9|f_{D~A{5%ZQ9f0zCVC?Mb}K4%eB=@6aDW2|592TMn?V{!eL*`*MIa&h#1Yf{G&HW z`dgy>cYf*r0JZ-ozDy`(?O<*9ZyH7MpVQqWs+^bhC}nd%L4F8Xjzxv}^mFIuoT)s6@?TlvF^PgDieG)>Ym=!Xeu08Uu_eDH3Jk5| zUZ3JEmfRNB%hW%E)ErGj;M2`DpacJ!4sp^lM4l`%2yd@haiyJ>OO)>~NETVVGLu+4 zM{C+o?bdWHo93optny{z+lt-k(aG>W{0Y)>p2$A2AIuLaZb_Y^h9!Ct{=^yz zTU#G<%;lD`W9&13WinqlY<2(4pRm)$UV28xnu!@w00j-Y|C&2X?v9OIb15_c@AGgJ z5rO{6zPnD?jNT6HLskn+h4V8?E}mnS-_>9kQpBf`3_31u#i>G5-TtVCkM7v zF~$(V!$*bTuex62X&Uxuh^f{AVmNW1#BHT}N1rT=~WjexbKjh&(W z_XwPS3YiF{H3dvVB%U;=mTDv^GSm_(6m@>`2;K^HYAOgJzaKMr%O(R-PGTs`ZMHOc zN^j?Bdw?l!j!9C6S>YjD4;zo`+id{*Ctc)`hg$4JZ4KxC)5Xd+L*BlV>*(!vtZVB7 z2xw`C4=FQf0X#ie1!6Jx8lzoWriHYZy$2HnbAOr8C2pIVFLRs9uL zR~B3#hOwVkwBE{@A7WH5dSn@*#|k_iPLVZ4sWD8wpj09#=S0GfoE!m6Gsxe@uq-ze zg+T!;fLx@>Kj#HL0>f zriFQ?z{kX*cy6hIsrV))=^z+au`2V`SWR*o$V5NW%6A#j$#_5;nA7$^Vz;K+oRpYF zDB5*cwdWtIP9+!^rGzl6P$HeWwj^4~@MUaO0@s!r`#Of({3{rRQ-5Z4nd?peL zRZw@QzT{~Xv;nLl%zf!Ha>&CQU8e)doaQzHMN5v zXgfRT%}BrrU@)bengRGYn?EyvE3dCP*SC9s;=lm9kdH3Q!B4KNcz47-j6Kjjls#BI zRDNqVxMe29hkEFPw&z##Lz%%xx&$D&*Vp(S0mwK}pR%5huE_xqSkpt;b&dFJVnWX1 zv^H-FoA{88o>>iCE9pS{p-v?2YKDBa`#RbK93{cOcu|mEI`_*d;bbCmnsC$F@GR%h z4jF~ynbb5*wV~0b7wG3701#8>x?^XHWjQzjM_+z3cAPReH@cjCm41tHd#;B0q*l*J zeZig;>PF&y8{jTI_k%K-VehIqBxjtTdAerT{!zkEUq&8`))oUheGRA|tY#s3CL4WE z+?rqrQ9cqjBHI$sUTz>>{TLvTcrL@mw!+W^zXgB{2}oxmfIp7W4Y-McA(|n(GcyPF zu_TzRiduc?uqt;1Vc2o_ic7Ez&mq8fz+*9VqUsh{n-`~>t;`(=fno8_m6LlQjj8&x6}#&UC?sn=XSh3kbzul}m>JoZ-%Ok+}7uONRZ7kG45a@S|hpyRBo@Z1uOX^xiX*gNa$dom~Gc9S8+L>8UU|x{-@Tm zSKYZ%TJ=XfsmXPhCUOhxRDQBqhQ{KrlZ^-15Ka6%xUY3ctB2Jr8#aQ||D)FE^g7Z$jW zI>inRZ-Mpjc=3FJe()Rd;{o%lBK4vW`3Umb^x&h%;*StcN~*@UF31;LI{r*3RkAGu zjfcypcC2!=u4r5^Ye-vM{Zy`i9RA99+ms|80jd7Nb-B7cN_TH`zjVFpWr^Yx7DNn> zg_idKq**^?uV?akAK|(_Gk0zX9C!o=dyhM}zEH!av~TRU6|Cd;J&9gumuwi{eh~BM z-pWXN$+~%)-AenmjP

    ;KOQ-!nV0aNm|~0&orIbCT(hS&AR8@J^Y}5GRDE^jS`w8Js*G103d&)?b#2Xaf2X34(R9PpZYvhPM*FB_ng0GlPng{QwKQV6XEoO=b8k10= zzJ&zYJ?S5R74oE#S>6J1mIMv)IYsos+hlUYH~B=#k=tTzkD_@ue^7D_ZO{D!CMBJd zOAuNX__e%Fi$AX;S(?k zV36>pp9(5W#1B%sDm5=yz;2M)Un$yyY-%>88kfG{w2CN=hQ~=d)>3K!6(}ebs)K_n z0oKiGf}KXfwN3?7oWe>Ho0S@ZSLaJ+wNI7DIO}DG$q@IGN)K+?rA*XzlqsYfTZ3^> zfm~0aT{Fn4>Lj_vl&fM*jmIePFtN!S7H~SX7n+qSg0&U-Ov`P{*oV~@B>oWUt5cj? zUKa~@DlD%NPE?QhgBaD7s0)G|C6f~vDr(ckp^oa7wJ)Zab(AmTMMThhRF+J}4HBDr z3@IK7z%GDVIp%0+_5W20>gy2|GQh)t5l*4UFapi(8JLJcLsX$RRALOytKnsBq?}&H zU<}c0(w7o&JYL_OUDJYrw{}FahL4rlex-N9twr$(CZQHilW!pxVZC7>K zwr%^?#GG^H&WV_NA9uulTe)-pnJe@ASNl@LYf0gumKYCdEnr3jW%^9=&COkm>`mD> zu%QM80frX*`qp~e`7Mm_wbj<@Of9j`98C6ElVoP(Ikwn*=UQR*$DMN%x`(PNv4m#d zLIO(g6WJhiU8oTumjP8hnb9@SqUcd*!Izp-s_h_>t06=R7|K~fRcmOfde_ABG^hJN zx@9Ug3G++%jg4HKtcpm@gQmZj9yZH_SCrKK=F+G;k*hHJw|3ThR3c;F(<{4 z#Otd#(fpl|*%SJuwI$!q4j&0ZWFS5E2WptI zse4)fsH}itq=cs$5~l4rP@cWDw#mYUey^6ek`uMe0-!Y8^}2*#Xa=>pnXDwMV2q*s z?<1{wH3Ty)l(1m^oW_-9G_$Bk8%r>It2!~dxnplM?HMdJ3sB1d1Ha9z^hHS5dJ)G; zL~x@KQaP0>9^w=fc$qGugyD^Uq9QRZ0bs}pmuu5hdTt_dUV6N^exW$dd;@0FgW2%u z)poiFmeyWytON*t$Z0t0F|q4ry16ctjXDw}6i~+qk+CXQ)-n8iUXILk6>TWEmX_u2 z8s`8@#4xpyWaMhn5zZ)2axz+|lud;3uVpN%z!Q5au z#Up+L3C2R1QP8h$5}Hgb3)}i#3(a-{45vT*UL=4+n)LcQ-lmK(b=#0(Pvzt+{A~Ek z3z5L5SD+Oa1QT*vcoor$LL}!w`R$&yL+bO0E|pSgZ^Ymc<3fq^L{~}FZY&mV@tS_v z3Gbv2iky3EMyn}&eDKvMj}l1yC%E2k@%$#79bk85nP`3XnwmH(kwlX;ed5-I`#h#- zIEh`Q!mMUG^w^p0ijC_iOQoe4kTn*~aC41$QGqi=)I)#doek`HqO6LweBd^6Q6a+& znewdc|HiLOEU7aUp;eTFH?Dx$>MF36(?wS|`!Mw$lD*d;?~B^lRms4I)#;2-qYFv}ytsga|2}r|y#k?`qf=F|h>~piHSMDy+jOjQ|O#Y-5Lb52F;@ zFNo=;lTwjrzFt4AL#VPno-lJ#frQ%0R6}&kT?B!hRP&;oV?TGLTkOTJZVf2b))OFC zyHs8mx-weE>BSxk=S#zXBg0m=!1V$01U}+KN+UJMq_s9oCRMEKxYaTHUL4>WPy<(} zUJfqp$AlDBG|}|63l}kerCpTWXV``rAMbwP9uP;t@7EIcl^nVBvCndphwGZ!QQPuO zCAiPyB-b8kL-g(_rksY0XsR0JS-9Bb!Ou})$JQ2>-G!6Znm?}T%UD;0>Noe^uXWFw z!w5)3h3<%=&vULLcy-VX>|_k{<51HuAzBCHX`^v#q!^28sTC?>RKwWD;gg)c6~u>o zT~qYOboh~f6lb?E!AdFKFS;((gSpB0IEimZPgt--$J9KnWH7Q3A1mb^uzUQm9xVuR z4!3xj9k7g)JKm>uNnhJj<*QvdJcE?dDX(^{tfX;?ZbvPdOI~i!6pC&lG*q*4c4;g2 zEvs%=c;xO?WGlm>aY2d&$P}VE%xhuUfVb7f6J4~_Tvt@n#fxl8N=?~2nLTeNY^3EO zkSAhWI#s~w(Z~wLskBLH*Vr^H*IINfK^U=D*E|zrJ#5i9bG0=YyOL}!zLHnl>6Jrh z(99a@3P#AJc{E!6n|($b3Feeje5J}o?GoFL0JgFs`a3AUZ+|=nj|=vDSnEs|qg!s% zt{iMZj#xfUN7Gt=fLoI1M3t{;LAGgJu>(+nrwG>+b0rZ)!!ovgNzq2oPMqg_$op-n%1P>DK+N~aoVFe&A&*mHL8RomjW z+!>%NzV}Tf#Z#gST7m}RPpp=Cd9m&;;7m?Yw`8!I{A$!7_Aj99Vd}?&0S zs>qr=IqFBN$IxP5q8heEtzNY?WFRv?Dxn@Eko+*YcO6ds^5+FSn#b-pqKhuAP(WlZ)yo6xK!ldJUPV7ezvh+6lA#oOqHFPI zzuvUP4eX!{5Y39fy0@b>^K0kFRO`p(E!)Qy>rflNGG4^|kIg;kC;ymgcBzI}M(M8= z#c%m<$I9=zh0?QaR5QbMZ_wODou%LO(3Cxmo~i+xDX3HXYiH|3G65n6tQA=uK^8Z86a z^DLBg!FUf1p@zL;ufQ-9Xg9zb`xJLKF91653I$?m+Nb@pf}D6_D&`9lM4#92MkjjQ!EEi^c`?~olI45CSZnt1C zj^DJ&xFXL^l;Efo9o^T?zds@VgYA;dB_?%G4K1vqN$Bm(IZ&phtAz%>8ngfH+ih5+ z;SH2)j&T~g&L~YZ@Uss{s&1(6;IfFGryt$Nzrt9*0~f8^*_K$Cv$;Vz!Qu(EV{N~3 z0z9x6zUzYJLsOU=Z{(1CqUcvQE4?vlNk|}*Z*o!{m2qUR&a}k{iVjRew2W?i3&bvn zJGO(5^E+@_Kqw(o#Zro!1S0B+{*dgTdn)eB6Ku#BE5L zhWRwLG-n64`q_gdLow}H&R|+1s^k&3Lr{yF#D%&=>1vS>B4%=ZZa?z!LNzbTy=%k{kc`xu>e@ZN3QtTZ=A21f9-_Bw^1xXUoyz0z&21#9( z<+930#gewJI}-JLWbaWjC*bb0m|Qk#gnZGPfQiIr9V35@6hkJ{WfkX4=WcM@vYqjy z?8@o~AnBG!U&*=Fxm%r%1E(}3+{igg%SD_a71e*UU7_gM;y75Utqo3&fUHfW6@g7# zz<}>>)S2S^l0$G7k+}oTUwYD?UrLmhJC+chkgX z^J*Je0xN(D!ZJ(%niDb8k&w?I=x}vZ*SO89OVqd|8KtNqhk(UiZ^GN4=7~UYa}yvX zuWo60hHuAFEMZyME$bk_jcvzt=FeEt7b`LiLP{vHH<)VqRkEKjT3rSwTtT3X{r7j4 z{@6reVs0?xODsdVmPR>Ul7&nB(NYSn>1<)uIkW&iB8(+m(w(F>MY%z`A)YVKLBs9DgXmzW?$ooqy;a;nhn|A?9577D~ zf>H@Nl=pe(jxLMbXa1=(ZSqUtNGK?w@Ngr1a zb#$xl%Z;H;PSnYE2Zq2(hu$1}!DGp+hQjU^>^WF$?a_kp>}1%H)=}GTN1T;ugd^f} zEhf^)fRYB1Su1_P-=LVxV8_~IanhAa7E|9uRh&7JCR}SoxP@C0g<*RfcprtgX_qV0 zIAH#lsG%;?6mF5UQK1noI)U}bw^Gac7Q^vr9@J#Pfak^;SwNQzpo*uis>oujt&PO! zHn!GHi_BHv==$HM(S7#W?2c~Y_3^Ussc-iUC@yz5PhzjQ39V0T%>K=1oHBB^ho$pq zHNbKz^vNxsRR?QYo>0miccZe}Yby@i2XWgL~DW(V;0FOm(x@ox-^kE5GJ z)xCgr&+bXRGL|HMePgSZW{Hw_R<{wTxAPxwR0h@oJOz_$GQP>+(6sCZ>Cl+l+Q#i% z4ION<16)L<;ou2FU8YlfXv;wznjw8}=0)HAwHk58s{&_cRo$lrH2t~j7-_^id5b@u zrB{4FKrm6F{S4wIDDfMM9Xio7|At!&o&QSuqTy33oW3bCS~@0oI*lyC_?F<0$ql-M4O&iPkt-)ITV{JsAFhsRAP@yj z>BOFHpxWIMxtJp8vjH9cgNPO9&8S|_=HRr#lCL7wQ^GAg!y4D)nXmgZ;j6%=@Pz^5 z3v0U53?ujscfyDxe^)pyplVO1cF-C{RrcKaU!Eskz#i@In^@*F0r%m34i~<3{*>Lv zMg>w-b@DZGE3%3%)EC@!*|uAVE`~j(u`CC>>ulX=S-a*qGxNL9M0$N(6a|uOezJLM zO@B?4ssfS5j15PKM(3702bO7-w=gTrcVH7uBIQ6EW19gj=qf@sLp>%4iXET5Kn@zn=% zubNv3pdxM>w#zz+(_vz_7%s9;SjsV(afj68%(fCYXDk$(;s>0CO5)|Hnzq47F4!Io z!iC1!G_o@Fr_;H2YO>iS&#?k{kMiH3@=(zQPJiVPGWZ!XM9xpG*Z4EdiEK)oP8k=f zg}ktI$~>5Wv(|)x+u$cqn_9X0iaR`tj^+T`C878MuR^#Z#Dr)*ooUewLLx`>OF}fB z)EShe7mU!0y?XK$UFYH14t<1pPay6EFoTzt4_*`IdcE}mU+oHLCj6XhZNNK5QwKkE zRfeOyzm42x=>2@Pi$C-$__k+n&!nJlj&tlx*Y>GjZhnaW;OqyF` zGLuq(k&#G?;ie>dqA81a|GwL1oQ1guG;P>OGdfB4old$GCK#ot=otcy@)`Sn5i>1c z`b}^#j0F2vIBjydVRtWW8|X`kZ)FlBN)aTE_w`Yklj}%~6lTdT&uKgep|83uh%XBX zvdx4zBOTPEbgiGDCb{kS&}~Y3nR7MG+cf50&D3iGU#CiiTrBh6JD$~8kuIe;LPRY@ zt8_K}k?yTox|0G<0pUh%a^BGyE#`*JfK??s_$V`i0mi>o@GofmWtMo#BYaBOQe!bF zP`|Ao@5S0Hu{%DpGpY40%j2KZo+P!cROM6(n0W?~u08BmHsu6H*D6tki!4+Vdf zY7W5fPmUSDI6TiZNau*bmhdI6UOkE+R8Q1IP!b4*uMkmF65Jd)8w|HJu!O*%!|j@; zga1)@8P6TW((RO50nL@$ux$qH2;TtjB6w%*bQ3doh`Z=M#jsMKS=MuK_7;+xr`grR z)Y@s)%4zndfxJ-TUMFnJy%lBgwtshvedkvU>HIo#@>kxg(JK0(Rc!-Q;@qd?7ymkQ z&Q;kiS{}?XrJhbFzsz&fY}PxA1wBH+pGw~Kd$pu#KD@Mh>@haLdouEG!Ol~Xq}=)1 zNGtkfk%8`4+Ocltk1EdxJsBh1+`v0P%odU1u=$tgB0nw}U)eW2hpIPo!ZG!?m*>=i z&Xr>xf%n(2=u@tfQr>Ir&Gz+>rAyvx?#*@zm@2%t&U+UtDNfDpdk?vVDjD0xrT5O{ zb`;iG$k$FLm-7qj^!B-99tk$N(Udl__s#}qC)H-@oTK}kKba#YW_cQW_p~#U{nl_9 zLf%`Dn-il`!VN9cS|+)Yt4j~u2#1PVSvwqkB+kA^>~h8T${f=aw`OcK8*Q1WyBbl) z$lOvl%5KR|x$eL|e=|>vy5qh^Q)f!ODSY};=TmX!jw(Gu2f;Phgvz!FZbI(ZrM@5M z{L;b9O9=dC0+3#W#rU>EL5ih{>N90Sd}(z6c+^9ky!mMK02S$d=(3yVk9B56sn$;) zD082ob-0{Dr@c~iG7s)N)K1S<)np|TL%u$+)nqfMFR(4@1W1`n*h&?6v-Zu^x7?@l zEWr7WolN)OL0Pz!#JEYVy-?Nk!wL;%3#K6vcEn!~ftlSf1?M@|wvLtPUWb5-Io4pQ zCf)A2FPwSRIJv4~wF;c<`};tM0kmicRtJ=c9yL2~txH)DYuG0_F)HLRO6yt@hq4FB z3LpNesezq8=E=gQ3;rr4_*KfTcnJMG>Tx#xe3;raulYXnMSQw~O{@)Yz&uqf{Zi4* zjXsA>9G^F=2A!snG*FxY=TDm(+Qf!22IYZJHd>^uo5kMmnfNB!xkB+oumnd;yK9*# zJOHe3FXWwiZD4uB+N?0Int>Zj+m9$vxVO?ZzmFMW1Hu_P16SEu#a!0KSzN6IAu% zFYenH@7hVh;Seka;sY zlSu85SMKh~h74#$#F=2o{30rKic7g+QXT+H(3Y!08eq)rGvj=Sb;8#5teX{Ob9T@k zlh(}6X?&wLa{)I*US>4p+iWGY?PTL1u4MK+oS}^-DePJ`?kx3=1v)!W0RB zAw@8b-BIEEJ4M8nI|)dDXs*U(4jj{SL1gaZ!CzmCPH@+pP%RGmw=h(}j)i*{zK%Sg zC{~qzsY&H+_{d=f15-yv()p{)*$M9CgI^8E*(f%m8nvnVBoMY8wJ`*%Fv4MC3-K9Y zOKXU%dDeAZs&O{9;=_DvDIZz4uas0NBSR3RB1^QQT%r>vInM~$UiKFb2>hJ@&Ld;Z zE+^PKGugBus+S$u2UmN=;6@R0K)Sz$W7k$DKV)&}!+v#K$^(E!)l@EcQRo#=s}j^s zHSRBa&|mhbziQ9QfXd_$`3q5dF>TKvHaB_lpa6A%XIOAivMonwbm)B|c$RRFi_FIHXcklNCEF;=mE~UrDvIi!+_qXhh{VaI`@c_E; zw^5mraWQM0luePe3+-W+Ca0|N0YhjBdrt-J-*_iQgDOK*sADlwAD(U|Pauv7 z*kOF}PzSc2H?)|PnNc<06sSifO|!CpQf!XfbMkaZ8Jrq!h{{+gd9Q3bVICoXIC3FQw3UU^aF(w`8mt+W&m73U{uu<HiRBVc!7FpZ*H?zXU$l~zG45$K&2s0*#vK#wEAZ%Ly*0lpRs-A}w zsAi3wyLTl5VM9vR}`@?^sG!skwONk=xS=*VZ|BG=j!`dsKzuDB{K zKMM$+G9#+TKG=vbBYonUpZzLlXMZT$GNHf-D^s?+A)3WX-LlOoL#$gWcIL26-tueX zwPC$$oANbEBYnqd%w1D`v8NjwpT@0EeM;$w5HV>!Y;VUj=Xz9l$Db2pu0y(5gg^u% zfp(7TrY6_PEF3uGO#-Z+2L4UWSL8x&J|dpsI>|axlcw7VWVgJ^KF;N^n7S-_$*Scf zZVxv|3P!rJrk7V%+P7pzF2p0{v*^UE%#*8c5t^8)sDs@ib1mPBz*C{2DK3c!Bep|q z#cR8F-|^n!^Y-FxY_K88*>KJB(z3j}?dzia%}VU+y(iqp|K1|g8n$-Q%>G3)eQRf! z@_zea?GeVbUaYaGb{zbsR81RQq;zRhdxisk4_7p;4Ic7I0Z|4Ri5aGmV?iLX zMW`*&;>~vNqGwuxo@1?LWRnQ?SHntAm}_|SJIirGvdqauo&l$jGWfNUcs3*OnUe6Y z@6Ze%P^d5LoNqq)Cc4qmZpjGP4~UGp))7)~gMJj9IU>4JZ!TTT zD5&%T>VZ7K(DU!X@#|Yt|HOgPF^AY?dqg4!;fpixqKKBHE#nl}6s;rb`tRTv?fM2g zq)(rP5TBPWR!?ZODvB>&Z$rGd)Xlrs_Zgd2tP9YO>wSptcVRK%&QxDm)7IYZtplQ0 zS$4(LLVR`#AN%<3UrtB;aPa|=ZSgXvqImRwrB+4xFf9*ezzg}J89^1( z7A6nFLt+Y*Z=s7K7_m2DhB!AdP)f`!6Qg^=`00hML{v*U&Hz*F!<($ba*l8~J2uq+ z5!mcuF{OH?x1sWHN10(FNj`qIwJ0RhG28E^6LWX9z~W({;33o56s^{2vk;Z_#NyGp zLd7^}w}JQ@mUaAKF6(KS|BR6>L`CBfc(-=C>L^!zYyf#xa@IjkwLJ0IIP3J|L!N8Z zJbQoH*qrTKhYdiSKhvm^u)2x?L~aE3I*YZ`HL!PQzMvr7ycnO@%e}+qRCf~MIBgpN z8K~!afaOd{n-hT}Q8Z2JarArka_rH60&V@I*xfNdTDO@?&!SKb2?iUo=JKpHtESL< zZd>FPt?$rc+i>h^~OY-moQ|6G(-r}2v=4g8s@{1?r6^Ao+yIAG}*XD?C zuIYn!vmbAU=)+9=fUl_ZmFO*suVnfaX==x>K8)}1>%$JWH`fW!uWw*Q7F-tstp{kC zT0+#r{+ihxYJw{0iPSRAL|aY%Jzxo?T&Fq+tz4&1?QG%3zFU%PrJg;kX4o9l)##Sx z4QtGtvv;{*S_bJ9Pjgy&P0j^2ru3Bhi$G5dx5|sE?3rLJ6?mLBFC?rCS}Ijb58*J1 zSG?>Pr)bo+I|p@_#O+b~9V@~ekm8~uCYN4fcPKO&P^Bxt&RJ1IZpByN@SH?+N9@)+{Q*0aSC1B>(&r(xptWaIVA^i2 zyr-vf{K;#(F>I^eiPiVo?(*q+?{a(nvgMLGdE3jo&iSI);;9tb>mfVD_nL`h#+M7> z;Q6cX%5V8~s~;&#51+_Sis2%m@reR#P~)1b;GF{AYL98<*&J z(c0HRJXi;UC>vR<-fx|}*Y2(G?0!x<5AKWSwzbnB9AxP$p2=$_=j(!lEe+SV3puDy z3di4DeCtQLh-8I&x4LiRuw#_Ar9D^q`J65#C)C<~2rl~?HB#%EdMVQkouQ~ZfgK6U zf=*ca(b3MdSJ7JR(0*&u%lR9_G|qTQCVXNi6vEdvj!|0!Lp#8Omw5N0Z)kg~z}~o- z;PIe@*gxxk`|b7+?+(t%1zCSHJy5^><&MTZ5UektyHkQ{6X5m2P_!7Vu=Ix6?rFTS zwuf5oyS%}!k8nD3uXjggJ#+95mS0LgK(7zn+|g{GJCge@=|gBr>j9M{FUBy3qWfw7M{o~uX}qof+K4H z`BaZ~{8xv%AT2phOKrBrx?pDl2iU<}@W-iKrf7U?OZ{XXk%kXoaWWE>a&iPnSK#G( zqi0#A;2*ZvP6xtH7IZk*E?;y;1@w7-)i}XBTh9YtO|Il(Uz2|7sG4Td-yU+m4r+^6 zMj4U&L2pMYJ_f$W-66STy_tD}(!Nm@+eEQOL=%pw6khU+pv317ml+<;H#t~#Vm|l$ zYmMz6fLumr2n~>*;b+euSloZMH~GJYpBer+(Uh#HV~6+yM+Am~a;8$ZDt?4oUlgp` zH2*_~S!f|O2W|r-<8v}!D{Y{^NiZNd-}5sBYH1k7@Co=uzMoA4@uIwWvE?;2(e-?h z-PYs#-3oAntqa>CKS3CINS%)&WVhaG^jF8|3d3nzbaa?7 zQ>i>GULe5waU;~S++1zE&iFExZLtQ=^O`7i>gZYJe>Aelq;sM=|F{TPeDcu3|3kL)oozWF$-VNsv!o2*dS^ z@T{Uangy#mNKD<09&AJa0|gAreWKP-vC}^c=bE2I%(sP7WM*q#(*i7$^x`*zRvG;t z#cf=d^C2Iv#O|*2?p#LpcLVYV+1@ZA24iyRbG&BH{#bNLwPb^pRz-`W;07jko}<3M zC!U965|`VRokc>IYE6)Z8SKS=8y`K|TBps>9`Jf}o6j32RiPKo_vJcZtH7=8_QLPB~=T2X=$JrNnvIDG7ht z31P79m5FQ++bLk*;7>`!Ve*7PQ_$}2X8!NtIJVn6*2f=!DdSHl5&g$iUqusZ0}o=x z{~9J%+?GQUfd6XldRp@o7a0U1)R!|yX$vm^`Ep#qf=u)FwGd!pfJx(3k(I7%c2XXl~3u=r> zqfDXJRa+*tPlf)t$C-@CV*4#T`Fi&`1(_kH2TqHJnwZ=jS?9zXcnG`DshqRw?*#-( zadVfjufa;N@;_7Pulfjr?Zf z1VO+w#n$>_9K7@gY0sdol*`2)JuHg1{wQ9{6?;KX8K6UU)wp9vrsaFbw{K!W@)@Xi z5d#k#nY@~1PfR-d8Zy^eFP@Q2`hoK1+s3Ya@(MlnWL=7bF&lsVFbUN4XUS4gft!ZzWhAuNirMG1$s5nQY|-!N1sakfbM%N@nJmo`y)egnT5 zLMLNTg>>l32^Ctn1B6>H-8bmJ63{=U&;y1l2v2@+(osJE zte?rs{{+|gFMsxbhE2BWsT-0C^0!Q)>)Jzd2}KHFBuYe)05nh_Bq6i)Y$G{^$hjif zXd?#a=-@;V3YxY(7~00O4;so80=4hW%P1V~H*xHU*S2&@XfxRx!F89%HEoaA_4Q^d z-}mby8-SJrtv@fZ2Rg)#CALN3A~~Gc&kML$u=>!?H}-UR8_N;z!002ul!|~SX*-D$ zyrXyejr-^&D=DL39JqJZ!+ZHN5nvv)^+}UdWWww*_s0X2xDfg*xGJ}45lED{YBMQV za%N55x@;)q4j_FStv2bNTa1igP2R%`C}nL9Vp6x3I)c+l1xz4BoCe4?VQMAuoT$ko zuFSms_pl(@IimfwI6O6IDAv}(4b-xzny#201FOZocrkEMbI1*hzw($24jy+EX^YXs zw8is-lb0qGs?2X%T29@5xDk1FfTa?2{C9<_fp)MX#bogfj3o0;1^Du{5waXeU%v}v z6X_-baU{f~eyndmrpu?7aE7^t!(>!*?l?p{5<8_Z8?Wdu1QMN%voIVvs?tg3Is=Up zII2!A7B8&F<|5ML_d(Y5Fmc7P=S!N($`8p3B}&Z?$RM1sN{5{=VcC=sLl-Pl6?Jj6 zM)S?|d0x%`lwB4JiaL!^Ts7kWWzm;B7K-v3O+t^p1zV3$F4$EwH)&HAK28_T_DJ-} z8xd&d{LaW0DmU_6TP0B1Hq$7~AOj&>nHT^KXgWc2ha>~ZIhr=B6&Pv&n%?yYK)WgE<$O@;9v4;4LS&ClRqp(w zfB#`%#=_M8{bRc2W~fTLe2u-d>8~y8yxoyFqvZ$cx;Hz^1^4-bg*-8lh<* z?pCild}ZAyCa|$pzGoC5cT?VL_M$DI#*$rRaHgrd1GQ10|G38{-^IBz)nlDkrx{MV;M% zMa35F0+m`z?X^ztaYjh)CQrm+$-Y`YdUUgcUwE>6Zf#z2TdTWdpwRL-`x^QU&%LQg zlen7bDw$!V!2kQ^@FI2ut<^5FM5#IMOBB6Qf3e>X?3wr^6!kGMsy4*4+PYo9_K#Dc z-ue$C(-P$|i=`@d!pDY{WkHd08ivTc^h(Esga@=fwNY;A%2A*!nr`24IFu5Zro~yJ zQoxr{GR6(6to>eD-&&vApY9f=XG(7#C1o1G$udDNLSsi&fo?X*gd@`reo zxcZWEdEQQqrhg7#3s_rh-R89^%-~}Zsn?m5OSU4X3o7eK-byQaQ@p$?g?<5Yf*fnzW^4v1+%gHbE$O%D>Td0gF zso7{|(1SkB#)R~9^TmBg!U!3EZ5=tX2h^VROQV@kjI#g;F>H*X#fHzgwI_of(o|9n>H%} zm+azl$U@Pr_>}Vd#3S+^LwTDU*2TH8ccOH8VB1AVDVkzizzru+FW@*;L4Npukv`jL z2^NC?(w&%^^FmxoHqNv{QQC&|+Bz#~zQYsUdy!!8Vm|Izr+P}_*~|rLmJ21Sf!%c) zqDq~g$K`QC)5wQqQn*(GcP-?!P2ORdy8yTCSr2JOZty7vRW3FZ$^SC>^y1Nc5T-2% zv)c7L8Jt477JT%B>AAKhaYS1OHkPRDTiVw^cJ{55{%}1lJ+-4&ab>FCM6NxzC=6Rb zv*c3)W7GnkQv>7>|Lvmk?8N~k%&MKYraf41IhPU#Dv#gHEe=7snA8gM}y&^b>qmv}k(NH>*nlRLx{V&zV%buO$>Ww`YQmtdGX!h~JH zsKt#|DrNSlFCs``j|J*c#2c-S5b+g-Dgf%_4jX~%GqrXs))H6nj+9%(UalbVD^6GB zTdZ>GjZ$EciucLGEpPo%Vf^jwp_|`SEXtj(wcJ6BIC#M_K7YIr zbUUJCEh-Q0`{5k6j95NDKOF$~5M7vO`yNO&x@%ce=1YGoF2IQDG=wvoQsz5u8h|Mj6pqA{xgnV9k z(W^}G$zUR-X;ac7Qrh@uroD^T)9^avgsHEPKjg= z+%fBfLEa^wMqq1wCVrGA00K_H9K%S1$q?a;%zbk@jL9KmH3^(+^~@Cj9cOgbvYGI) z$UDJ8k^EV|kZxn}w_)*)Dvyk@qeb1|Up7W;| zP__u4$(`vpQEBa!rAZ@1EUEz)ULH&{dMwJS#orS}GFUci>5!N3R*l+j*&;8fKyy;T zCFBVp&VGS9AJsl$yO~@=csHG&bT?bawbHdo12yFE(~PR}f>4>vrHBk0q@nfu2D$QN z9sG0n5Ia5(rz0~u57)9^OM^OdxOD)r;u#0`yMmOB)8p=UwvTxKiiv-eZ_w*C(EC3z zLHwh+3I3yc`Z449Z^fOgxM}$Vwf`dZ%N(rIDQuEBmusq&uykN(bk7f$*90fEA(#X8 zWLd?@lo;8h?^y2+sM%|RBqa0!*d9iMpQi59O$zMK%DuLqa$|Rzn%>@?2DH}iida|w zlNaR~(is{cg_;7>YP6sO^-TST-nu=ADg9-iH@BToe6yk4d0PU9Y*@*W+2I-PhfgxY z2>Dhnd7vzjkKrh$6M845H!4qBgML@_1Sn)c1^H{hTQ1a)&4&;1jRub*V!<0adSx8T$4m$Ro5JM~=1Pm2-&HnbUD9W-m zx9Gemluam!(jEmau2;t_{^JOjVwt|yx%j#|lZD)jv3iLHPsYr+>7!|br|A-G&?byf zehYG}5dsrCT9#Mg?;E7h;p9hXD>Wy*FR^3CGUqWB%Qw%eCxz?nQQa9-S=LbK^KUg{ z5zaUQwN=E9&>|-0x78Vqe5i^U5r$G*-ZgjRItH;P&V0DPiD2B{psrtqZy;^cM~6KH z@+}}WG}Hy*oT?VlBFwXWq^sOVzgv@LzXOFh#Tl>we*CX3&o!Y4jF+vIk@%G#?2L9i>-9cwtx!wAhHk z|E*;(@ps1+-L0q#YnaF4+A3|4zSJNG{?1j#%|0UTZ-gR^ORHVUSjoQUT*E}auBD9n z@GLgjRA%#OF@#T{4ATfJctEkG1pHb<2~E!O7IN@?Ke>9;VEtl&fem^L#Xcx{95VP@ zgbkG0D5JKT{mS~Eu^ncnIXLJ_(iB%1FR>)>w(r|JV+^*Yg0V@H=O|zzliPxY_T#jt zDG6e|6(o@#I|x<;#xBmDe5XsP8@0iB>sx6+L3st9&jy9aWfba6{>%#p%zT?orikRM zy6qXVdfh4xkvi)N{zpEF7J~pL*V&48Z6dPHO-qRZU>pnTlh*LG7=Hn{IGxn04s>-dTu)+I~IMc>y=A7wDBo}v3DlfbuQjZ%vPS)A5i3M|aG&8F(!-khS-l03tR&ushM3b~54 z2EZt&5%e<;#1+~cB5L-z12S}CL>h>XYIocZ_QeE^&RB$nv2-q6>Z0<@lw_lBn2Euci%O<=4 z!3}H$3P~E_ZfS_hCjG}~V34#KJ;gb^u+{I1IY@Q;5?eCAGl(8q5GlrWeMx>!eo4L$ zbO2JOFW=8CRLOo=$^Oe?n3f@pWgBg`d#@|!gh4&gQ0%hWo+$Lg&)85s_ew;`twfrK zWv8O%+y*Ve?9nQiw{)`;0hguQW0IZ-oafYuMcct9sf4=#Qs@rlQ3=z@V*-UrjBd6l zb@Y!&7pe_GG>7^io5ZJR7B#;&SjSuXXT%EH=THwpJo{Vl;Ca4uytHhQ03%DhMZ&PK zsdxz)qtqOxho2}U2K5eYg1Rtn<)BsLo!MZ=icsP$9%%Z?fBWa^d;z+&rKFl&I~~yj zGZ||x8BTX|zx!-GuU`8;zwZ0_ePRK??N}0>#m&}P-z+oK!o|QY_re+aD>lH-3b%%1xCSS??jsI(_ag@Z~GQs<(K{0%O|mAZ*KSba+o#)5p%^OwHlR%EHWA zkx$cRUZq|abvQ9X+Ld)V0cUBB>zdtZ#<7)@OaTr9(~McN+C@ci1X*{l!R0zNb;z?i zzS0m`cbmmd<`|g94RbPX#$&}Q^zo^36LT}w(MA$7Hlp}-(unQQQRmHS^fSFw!-8FA zNU)M2pP2xdm6>@Ik_!I0xxB8HI1+E*7ITv=v5rvQfA{Ba_7kvq&cmOFxwK@M;aQ?) zBQG(Qh36+3iO-G3t&csfzQWy{t*Y88CdPUks;^zKHm+UwhvNRF zU|~y$T%$o6@@+~$F=YGTHer44eN7eUVHDaaZ2YUVbJO5MWzi|}185Uc#?!GK%05~0 z6^J8|H5cy4bZ^Co?n*x>?>x{K;?N`MT@gM8E>?^;#{DxJC$>V}Fq6R~0|6%PuV zZ1qKZ_jj$l`oMrJpKq1|74RXOH)R-9GeRo5J>I^ZX0VBWTa}z8%23 z2EunK$gAiGt6Ab&Icf8?UIjbuPxWc__pCZNj@Zi$#=kr~;8-uLFXD?0=V%V*2yMq# zG^MT{x*UUk`(7;9K9`{M4tm|_si;P5)>h_P5g4*X*l-F07 z>}9^B#Mm`RtBTU8r>lD#rX4!0=;&VEk_zjFP(cAoDXprHxJi4XZ5KjkN(KFX-hb!x z)!#$uwA^F)m>G<{*(a<&aF*8Ymt)>&W5}g6X56p7bSFeBK`vh$pRqaaz^Rs!D3ONV zEhY6O_2L`J_{|{yEs@3QpfQ!*H$Ymwq_WQFEkIUMwxbNbbZ-$ax$66qOkK5tP(`w6+v00tu!TR&R)!A zFGF*dA%*E}2G-*?7Y^z>kcN8wP9^$nR{%l(VlrAUoLsY%?j-u|YJT)nqWUox% zML7k#%A1m6yrcm8&uAA*x1})aaR?i&qsPx(Z;#fOmtGa~n3#dA@ed40P*YgV8(*|G zHP`d~#R0t!cOyvG{A9lj7KYxK!LUaL75s4=v%vS=9uF4LgHH?(U-ir7185Cz#v9mW zep%sL${bryB?Y$5Mu2A>L6{*z)jK@5U?*y6%mlT*cY!c_=7np<4=4T$YlUG__5t(Z zt2vZy)*VLlyJn$hs}{DQsq#yvu@gb@BH!T#QOvv&h2mnE0+e+Mo;T{*Vd%kTUjQX( z7}1G+r%MeJ7g2?8iy4UFzzE=4_e(!J4X0fuo(87SAuL-bKFaC1X zXS|EKI;9bz@8QcVoc_ArQx(mG<|kP4MZ0X!iDVv}rqa&?>k&ie6V}(+uMp+OE;= zaW+q%8BF%d$ChTXsbnX5uy_Eub2CR}5`0J!UUjeg4vAd?DteCEFd9%)l`D0HD}KMP_pizq zaL3uKphlkxQ7Cn3X zA)5kEgHpkUQYBTWA)6mmnoldV_EjBcuMv@l!2V&jN473V(TxnjHIbFY;l!GFojXkj zz@^?4*DsAJF`=0@(D@q#DUvh=Jppcc(%+zvFeCo{gFGAS6wDyYqkh&g#^;sz!}71t zswxqTb4G*V11VN8uS1iJix7l1}J^nhPexdnIvsvro_qw>z zSmJxYEP0rNl6nmkJm7r?EVop3m8vq~2DIK+6eV%pdgOoJv zAex9cM66QdY$rtq2#kUn>1XJ5kk|SlRcz>V8AeLjLV`>Q?D;WDQHsguwWm6uGa4z% z7(9t-XO>r|nCP^f{V)6lrRJwsPL7JRmabvTDopfMMzBa3QkA8CPS{Iy|2ocpv^*M4 zr-Cq1008)D{$JRlf8ALB^W>^DpuDwJ(!X=LuEj_##QTX)iHh?RrS%%+*B-K2Z4who zNPPImiDVNkI46xsv(uR=>XG3^oJ~|JI)4r_uRbriWT+yqvNf`-qg!5{Ujf-$z{N$S z_WgUR%ZVwSG;R~`)n#hGVa86kJh3INGx-WuKkcsiDKQMArA3?yOpntQqp zyP7;sHMf%==i^P+;%&EtVwa_r${PycRt9Tq|G#%?p{U<{Bj$Br+m9D|FOtp2}d; z?Hp=+UtC{11`3-!7lv>b%i*o1iucl8M%7udrac!}LAH;aX|q>-&GD<@&#uRYpN5^n zH1|gX+(q;2c(#~Y_093?^z8@}Cr8QCR~q~Rwi>GRPaQ)lx>H`ZR`eNLeBJTme;*>A zE<6eIwN;>oB)FU^v!Y2Ix(+7<6=f&ub<*UFkvjek`n^FALg8_Cv~rWux6!LV)wQOW zBj|xwjuZ6hwUWS@tIxesynE|fOV-kW|=<0p(xMT=6rK%J~YAMh*k`SwcF zs@7jGD#(U3h1Nqe*}s(|JIWM}uvLRxIedc_QbSZnXI~!jxZMS*N@XqQ*N~i=ee9)F zg7TI;O9G#9de9_80b2``urMh7XJYoLz^Sebr6aREMGD1zxpoVa1d*(A4UUcm=aeWh zWs+iDpL7JezE_Bn$PiR(Dw}gI%qgBFrs9^>< z%_uWEN*T@LTA}mkv8Z4KRIiGSfZ~@l=t-K25Qh)V>R9(Y(c1b?rWEZph*Gc~Gj)zX z4BX}vP*>kp7ck?aXz0W+4hXPSh#}gn?k$3M=t?oOyxAOCJOXiUZUZ7h)<)|}XHioh zVto4_7vibnZRM@V96@y5?C~7%MUOOXSYEPn81Y#@w7nGg6=34sW%$>#r4Z64>2Pt^ zpGFXeG080hA=jPK#mZ9y{?)fV{OkrJ+3x!jFc&3~@ZI4L68he7Y4 zd&FQ%WB4#$C==T3igmOa8OK=3ON4Tng(6wa#CB$k;+Qg_h!qqoB_5~YfG^S}vEW!( zH_-pCR1Yq4c%*?TMYlHJSx=I`g>iG+Aoo1VylHH5yvt;gKkRcj7Xwo^MkTX)vSa@N z=JR9_=mx!Ldgc_{PFh+$*b?X=LeDBrmnF5K-XiG=xu|oajO@OvB8;Kp9l%X*_J+w- zX6NZ3L{$5tVR;3=r!A-^5W!rN=ql8U6llei1G~p*5?G!})})XTH1mP>iJ|)Mwt*OR zg-F$R4{sShu(0+zm6GD5JER6$O}iNU?5CpX&2irN9uhs4gl}nd%0)CqCRkqq zZ!Cy0rm870+$1)wtAEXeM=Rz`PaR8@hl6^mFAuk$Civ`Dt?MyiO88Bg_*0tPLn-MN z?~OBTTk78X57x}BiaF#A5ycE?qR%O+q?OSfYn$%s1N~14qEdnZ6~~lRf<^o0%wPiDv=ko=J3Vx|)sCB!#7b;vA(RHt;D% z?N8##^?ICw_5*@*feI9xuR%$&zloN)U}_xreD{V{`=p~85{wHplZ9tOoHb2z=>E{- zdI)OUm9LKwiohb8ZP&1#{cbhUcJZ)jCky|ntO6;9%o!g$m)Cr|F*x`wI`sW8+Y1gk zU2zIlRSUwi*Lhc4qm);6Kx1#)sa+Z@_@?4XA38UM`?pdFqJ+XnXB*;S&vL`79ezD# zqFz;#xTa&CyIn}CZM=h+d4U?9O``hOipq~F_33|6UGi7$LSJDE+V8IF{#{q*_mwTX zP|fzo7lN(C23$)Lv7+L1JKRtjjStuxO0EbwCsH2ni-e)q*l!{*7X7MnFcR4#iv70v z7S!wkbJLb@*M@vV-JN^0Lzxh4ogH+Xn~6{9l_6_)?Nrxct@5kV^~KPyCsp)69aCilUZ*bC#$|K zbJ)L)rZH8dD_J8u>HmIY5k!}7qW>Yy7F(^pqZv{92(!%LY1TW6hzgEy$RbGzm%2yoApn@&LbH)Cay4NOuc(5RK3|1TCR>5e!F5C#}$}5Alj%DPu(#abPWio>Fdip=DPBHh0qpebL=edNt|<#%hy_dFsVel`F*V zA2P@upZCwHTz4(gE3$5v*>biWTo8D^&h_sWFt!Y^cn9Lmg9vudtD*AYnJRaH(mpw- zW9Y>`rGeOWOo$#}8pbT40SWtzF-HQy4Vqs>p7F(pNPUG>DBH@bFR|M;R{Z zeq@oA5-qy%bcy0`O|UlLZx12()DS0}*_55#C~Z^~l@E+?vyzR$4xG=!2-=afhQMUm z|2ACXhRGobFz5NeL3z_93(N4)hyD{K*f;8q4tOaHKHMB6on@7&ouun$b%i(vRTQ#< z2oy;CiL+991cRM5<71$<=5z%iN;H>3h+r#2(lkhnrxmA8u^MN zBBMgKH0_k+RBN}BBu8z3lz%3R?_ToWHRW1ZE2W8!_RahS;A*77wZum|;$5tuaj0-g zDuYukwNkCXmDOlUvZ2LYWX~!wGpx%9KRm;)RC`=0C0(h+h1&oQq_l(QHuqNtj**p_ zUQ)-+fNO|Xv7Ic4Xt%|!EJ_h8Nk!1r)1d*deTM3r%~HMGI+!2|4=68}jAQh*a_%LUn0OyEHp%6m6(t zOAKCefemj70KF!P6DJT=js|qAr_KWGY*=Zw^o}d%S-t{RPi~s z9M>H0wF!Gy~X#QaoL@e^yt*0e=?@a)5PiTTT@V!m3r&2X8;&|1mO;P*4K(b8Ce zrZ4_-nZgdGE0Uf1(;nv|j*seQ4TcX!O@mBX9*S)pBPn+^LvyZBVoI~+@@k{|3Onr* zCuno+N;)=1OUb+C5QA%;ZnCT8c8&c>nmo0?gsiQ&@r)w~-|RpRdDeVz119_F83N@! zj$n4AGEA^A?lu@4a5M%vAzdzm51;9? zNC66#`#y~&Fd_2w|Kz?Vp-CIdZ#~O4- z!#l14x+mWx|M1V(nfT}2YdSGc`_X%j8PnUZMjKixnHJ~dCHlgvEVwI{bw}2|3R*29 zDV6vI@tlolmge-MKB84B3KcmE1TtD({q{m!rrSC@^V}%%`(u2T>LJqg`*^YD%Q%2i zQ@U*tsVmQ>GSDn8Usuk?;1to6eTrYAxl7R$tgtK7o&dK`qwb>&T)dm}5?i)#zWJf< zZvZH231ECsixF9KEeELP9C=4+sf^`9e-8V{ed>SW!i&wX#Llmf%&*9~f!$;@+a*9K z{xPMhEvRX#1EcGpt8K3Vo2s-Lx;obcYp`aKlP9W`B@BD8v`#r-V7%8C5ZcbkoMx(B zp1AL*g10a2nO~`41-^k}gotGC_JR$B!~eiizuUB|+7&O^ z9UvTtjY8>tlz_Ekmv&553Nao==LaP1dji3jaFRWSxI1>LsoC$0o8xbq@;Yx;nSD8BbAQa6_o?0iR(SW49?v{9D-F*$(wJ^0-Hq4oSX8B{a@dz_%oV|6 z^QC#)972ZI?qug$-4>YAhed*-#9{CvSq55>;iHQ*&FKdyjd`k>)s1>Jqe+Z^RI|WM z#1Ayzgg%}}&H?$FZq&sw?t+gOg#AyN4^r(>od(pW7!T!+Xnh^rAUSWc=LW9&R*}|f z%f)0Q=r$zqT>VhSqukolw3;CvmDGIb;uU0H?%2P*(`@h_|5JzU;ylyz0IRA3sm=2f ziQ2kkOlD-o*CvLx4}g~N@Xxm9nZzLER`Rjr!sYktf3>R!d9`V(xu6S=X*{PZqiotVN&K4Yhvnh-%q)+Lz${l!J^Bvf=w+_8aF? zDUzH%<9!ROM%wrx{IPg5=Imq4L18e|RliOUjUQOS-LL_c>R6aZ?Y?f_`qG`bApUZ{ zfA55K|H|yS$??6$K(o^?9E)E6>4axS9wTMLj`ocu>DLprTg(nB+Y}6mA=(>dpFLUt zC5Z*9L=%3p^y)K&@lj$_x_6q5Z;4Q`YUCo;&7_PEaT4fDiH)K4*f^8tCD7lWXLuxbP|AaPoM2g$d#4 z^!w39ZZ7ncC$o@$_W9YrhZ3S2c@I=`JRzeGUpSO~%h!2@x!{<}*=HQysAKpY zJDM9BeL2&jq9Tf*qlS_$MeGbj!cz+nT49N_rlG2LN16meskV?TPWAy8^|#(KTs*+9o<-@K7rE$Y?E1oQ8j0#gFX3HMda9omCB`N zGXQO1L-m!D9$rsqyuY3el%3$lXpQzbeDR7kk4)L74{`g~YA~@3k0_l(oTfSnZo;t0 z{jtj~;1Mh6qAytcG(G%%Kq$OHx!Qz?rWtnRb3+qP%n{bmfkG(+X=wT{jaC_mXyJEj={GJ!%bmC3TRVR7tJ}q>TpD~TF6E> zf~iw4bG=rVNi8C<*)XkgOfjplt60%>3!zlGQk;QM*NNiMSFtf6CJIO0svz6ToolWm zfmZ&3CT^-)^WO(_XlL&I3HAPeWB0lJu1+tBD>-{{9L@z>nZj zabYnl_)Z?EH~Rl|*yZhAEX^!UoyZlP?7x&6 z|Ml*o)n!!h)zCi}*<{&76N5Bh!haUPA|$3Mu^9atBo1N@LhhFdm$31|wKzG&@%FlN z+V4+RqghTdP3CJUmL{}H{?hNme@0qY=$3AuUID0w&@;V3T~GYo&LDU1qn4iTPn6z@ zXX;=(S&Pvk#n5o_cIL8OGq}fHGwBqadf5plofI6ct3u{Tp1RCbQ{m=F)P394?nLai z=dlslZ#)Llv%A&0-Rogb4otyMby?USN6SLpYp?I&nm%~|@xU^Yni*A1Mo;m1+SHPW zqhb*=tASQ~6T0q8lc@r0b^d9m_sW3@C%2`7E1YVkW({=ZVAGb9^@`?0nk=D}`I|_{ z^~o3r(&N{qjKkSSO~9&`X1%~bOXO9jUM>1Unn-*VJ-_dlHPQC6F(3@O9LwnSy*1TfFD2aK zeK07kC4f}^K0Ao|fhYrxH)jN%7qpiZ!~W`OBE}cX#_Kg(0+1WwwIRSWw1I{ssJ0MC zIHTSbB_JH<4KX=4RumNC75uq_S~1hxiYdg5*3**##*?QzSd{38sJG72m;x0)%uBXaG-s`R*#i7iLQ$-;`rz1h0KG ziiyk0FB_3kj>BOFvKOBAkxA5Jx7{C|C)P``4$1XE{)u139kI_HE+243ImiaFIFXy? zr(3*;E!-tGu}=ciIf)0cMuFMKv&(@Xp@?Ncrhb{g(i{!cP`KQ~=89gos4lY0N5f_x zGnDgyw8dUYEfA274~kia6~1+`U>eeSOIA*@O)$b^K>uNDvH50$b=ibaMm%Sl!ig@n zB$`WI-;bdiz31EK!7>hjia?_fzjKx_Fw#AvQQ_?f+*d-$SA!1zAdtV2WaPezo2(;t zW^#m={sH9fKgu=&dNKFi<5PJhPG$7twKmmk?RKRg-kYVhZXpzu5tc7Aqki9{oPjv} z{ZkV+;xp?s!SiXX(|z{E5>MXluiC8Ju>T8gwCH0}_M?!1X$}-39a@wC-YBvymm?Tk zXV-w#q!X+2!3DomZEqVr6tx2MJI;zIPwyEB@*UqW`n?mQlc4lp=AV7sb|dLTsyx7j zLdY?eiM>Y)%}^a1?iOQC#beXj$UDB)9{F{C`X`^fq31R^9~rwVHqsK_AgQ3Mk1tew z$;!Q!X83{7fB(a|252_?{OZ8|jro5QwF!%9%CfO@7^o;p{TFGj3G0KehV!XVKW4+J z(k{m|t^_6rNR(?&ND-0BKd?CIr>v5)$xuf~+>~OSGIP()w$(;13)uMs7qJIRN*VxH zH1p*x>1<6BRpnQ_?N;c-i2dYhSlwjoV2|5oy6(Cr*uMRYc`_sVcir^_t_iddtQ>Kr z72FYp6x0M45EVIn2Q8#RT=WbaDS;qSe9~b!GbQ#O)(n|1v=J35wuETZ_oin=QfT9 zjvacU2;*i0N%!wLp251Q4^j(XoE}5avxG2^US zU#YBa$#d@ZtVQ@Qhn9;zLn7?UJtT%&RDE>*V9JvtRIpW-%u8thStE>Xx#pas?FROe zkwL;!Hj|gMj>J6S7@Mte(nCsX_H}|xNNvwyy(~NKZIkvYeM{im90wV}rI0#<7=Se3E@i zJewh8W=0}r=i=cTHr~VXe@A|hQOJCV7>9Tx2xQmc%j-kl-@~`P6GBG9UEo}C?E%3h z)>1Zu=XJt{_xjTv`Vpzza8i7^i3c{*xrJr1rgBoH){jmIA=MHGPLs-ZR>Dvwf{K;R zEEXE)nxpoPMnTAsO|z1T1I>b{T-#CM$tcad$=a^G%oK0Eic8l}e80{Ad3D)mDIa7Fc4o zi^Fzd8-uII$a3Je4$It8$-c>%2n*Tg^oo(ULJYfgLD70Pl1wbeNDunvvSEK?KAk+N6R8FiZ14> zwJH|>V|$)C3Z7$SRPi4eChlKDV8pfc^Y@&2Lz1f9(C7FNqKOl#xi{5}-0�*c0?0 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 LFr7P8IOgF@MQSCryt*PYbgF%wOV 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 diff --git a/build/jars/cscore.jar b/build/jars/cscore.jar deleted file mode 100644 index c7dab5cb453850bb8161c8ba1c872751a84bd6ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24524 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 diff --git a/build/jars/niVisionWPI.jar b/build/jars/niVisionWPI.jar deleted file mode 100644 index d3d6a8fe01331ad72efe042d72a3423625c48f3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 725034 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 X`}gG*nm)<F7LOm1huqtDuRJ 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%0D(Ll0rK9pZdXl7>xdZ_qH(v$XQ) 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

      wDy`I~cQgUUMW3Oe?x> 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

      t*R&-f$QLi!yoP=P29@#6Q)A_t zg>aTU93ty(jyrr}!qD$n@$|F(?qmD?B28}e;y8IHaWOA`lF!oW^&-&w&dw1Kf?Vvj zo&-PcCyw3w2!=0=!&pzDwj2p`I35I zzrkbvi(MqE^M&u|D-->zAkw#Z=sTiYcr}MrJC5?)VS3cJ691>blW*5z-=6&f#Fgv| z-O0a^WLOp2A2A&;3VzDO(*Z&uloz!L%7{lDff4Ih^W)z2GLKK?Dv7##O{A=7#b#*F z!5F1~`_&T&g!rHLm2Q2cort7z<6<*m968&+9y*gOzY^%t8HB1%dR|03=CLfJL}}&vNlk^ z{M@~p99|fA0VC7x}JE~Ppi$-B~wke+gl}Ayy0kjN2;yew7n)d;vo7;KXH%7G>sC0S#2C!P=%yU_9Q6vDJYY`fVb2CZCZpQ@13-?*- zujPrME)dcZf~Ia$?jRL1Q3Yx>PI4RVp@yJq7eCp_WfW+DHn{z-!t3vy9a@a~=%W2L zsWRe$56mawO zDvso67cXj@uX<9J&k11rlOUI$hpkdY5f0-}*-1p1y*YcMiME`a9j8%)76oKgOIfX% zb6rLWE4Z#~45Vti!Y}ZYVe~v*!!!fRv-B(@y9c%hlhpe|ZqmLF%>v$rYELCingr73 zt5{Pmm6FjQ;R-twYH!uXDfSQ=jwe@H4&;|E(kyW*=rdZ4phsbt!^#w7X0kVt$Df|L z^;QxFq6459OAa8vvE&Nmh53^fFcujGbwKDD$1FU8+V6k`g_;A@9;(7MYU58sL9O{1z`MF)R(erkbctwGYs7sxphH#NerZ{Iq7(O&Q>peTbX@JhoV{ z*;Zg5 zY8US56j{3_P~@kMmUl??sA-AdaA_wyja47beCqeAc1Dlvj%xWpQ1qYx#*<>_5t{gH zAy91~oD#AxY9AbyxsJl6tN_HX)&c5Q+W`5i8@quz_m`G}OLGpm6eb@*%x;mDXK2QK zYZuJzo#Y$ZA2C-Z!#7$g?8MGGgrZJ5MQme^DLje$T%M#ODYuAuy#sW^;E5|#h2*ao zrunOZJ>tF3-!pHDWcU@F%gf@ff2W)fdx(@CfuV1JMS-Ozi9axZ)XSNo_nBe(3C%uZ zBJQUFVCTF56k<2!lL#g7hx<)uB@o6}kjtCIV4K7tkHKMWXv1}2U#)=NKCc}ET(8;C z+MTgiiZ02eF7~3cE5h^Dz(+o!4Pi7@r1q4_5fG*8KVY(0V(slpv13yJyeFrx=ZN)>=jDkHZkD=%zDvgK5fZ2#%#i0_)LL6eofG= zNZ;QT)_5m3$s10FPURR;%U9p!`0J0zv=N4vp^>olU3Hyhy3`fLmHvJ1gt)vNft&8` zxbyg}BgszB?T+IEnaQ#6xsV8?IW=4-ot6RedKU#fN>Ld3%}GnnEVQ~!Tekp%Ym6a~ z|Na0HxmW8c0*Ou!km&qF=e+X&`vFukb#}G+pSdhXWnB))cXZ2`bCk!wsp2&22`a7? z0zWbqsHk9+OVS|-F%bt%IsFD1eJ7&Vsp%ds-}QZN`q1+v50GN~0{D08o{KM;Q6*tx z_$G6Cy_Yo2>s%ivm+|p?zHvm@AaErLHtmQYo011}1o_1(-x?BxqsT$*j$mTW-`-S* zqWJ`Ax?FsUlsLDWH~nwTl_QwZ>zLN;?*}CpF_X zv35$-vhcdRRJ34+>6hb=i)vHt6hVLk2{*Y_5JvX%tkMupC0bNz7G9hjWBGtwpNYkU zR*Pp1S03}GWCFFKsrS-Y)O@l7?aO=TC`|_wY@{*`)3X!j4`XRNqS{HVMIVd)Onr(B z;!w=HQq9^_3B9I-?4E+b!uIA9os`Ghnbifmn1bfo`Pyk|9NSqYMZ_0x^`W3;q7iU_ zz+8jqn3n_`H6kSwM?*S0I#rW+#y-&q!a&52T$a-sdfEt|C@9QV6A7ks%ji;B^6bhi zc5zxuor&Qpz4oeDTn3ZlrFz^8V2ojeaY(^k9z;zM>bgtxUV{#QDKW9+u%qaRq6@Rj zS6QnIQ|@QtFY~=+XJ@lqsS9n52E~Vfq{iC2d_L$-Y{@d=EJkX~tmj1uGO2|IXX|pD zRi7=Iv`(amknH&zV4xlYYx+(!dtWUjbe4|fSc#ZL+ni*c0gP`kAHzvzTEeD_Izx5fx`GM*`_l~fGosrj>dKIW;mi7|dY%WuD6!wd{73Wm;~e#3Re zETltl{awN#dX|7ksLyr7p1x&-^m6sYDhsdL`Xip}&!bk;x?o)t?>X3TDiuZHBn=S> z8bTVpLTw(Q9*=0k8?dB3%1b3a;#@=a8cfiUZ+no&@DDk|jOQiMMfj5E1AebF@klrV z5Id$hD#m(l;Z1J{{j@lxs8k*0Sb!_?1c#qF`{Cmh3_||m@ZT*8Exv1p2+oKIq^&I@ zl9Xkp@d}qjt0jWofar9IG#Z|_U@x<{fz${h5`9j%7^BkcePVkaY3VP}Pa|z+& z=0bo7#O5auo236VoOqf3Ka9OolxAHPwV4^V%?#UihHcw6GK>t{wr$&vH*DLs(eZWl z=&q`Z`up;Xb9?q#YtOajGyi=?{x6TZi3^~~m;wS7gde25Ntoi7D{yR>Ft+M1+W*(1 zzUwUc1AiXfClWq{EpO)f{Chl(iKY-UU^C0XbaeaersJ5~^6B~lq7MTnAjg0;gjrI~ zkhf=wFj?OPSleL2&oSoi${^5qa*Zas{F5bGNH~GuoiIAiw=^e;hAdgz<6xFVl9eAlZHn9@;if!IFj=3p$f*(?rYh123c5< zq8MhDC0F2$5bkuPJBKZrW09q!5Wb52c-)}%*KdUjcH!L4^t+h~@>IyOSG5(B;ReN_dBAeMp^qc(4jaE&(CyW{o0|3rvR&X#5qfAw+c=@MM4>WN>9>LCt=U6L?D^29YzsvwE6q|Bk&2oh< z!4yibBrzzT1Tfb{J7c_+n2F3Vstm`);;|?#qf>HxIA=X?X>cI#W&S9P``}aYNj`#n zIn+%-#xK}deEi78q{4{BV%uc62e@WKd3F9FH<0IhI}_)Mc8IauPKv|u?hFx#1l2Q@ zcb9WpAU50cN=Lf?d8SyMr{3wm&y>yg4C#NlVJwZUjGg{7_3vNsy?^Kr7fr^k%H$4; zLf`ZUR1nngkxH?`>49%??;E}c1bsofVgva}hTl?x5IJP}6&K`cqL#*bJ58F&boA(T zl#!abmAvH*l+q*dgE0&A21k+7U5VJwte;s|$6-n;CP|gjdBqZYGbLQ<)}im^c@VP1pwg;la)ELVpd8-{xDI|BP~_9{+2XymO8(i7;fMVN5j zgXt*rBU)`!fiysk3Y`tsRC|j$Mi|vD)jCLsxU(4l^v2KTVxYdtP=hPfYy%{>A#(|u zV}pUC3Y=EceP+As>u+ha`5fa0X3!+It755H)a-_KJQl3c1g@kD08TUlLRN3BHoUc5 zd}u_;B{hOf>1Ki>>XX6P8dEg2E`24d8L+5A;g-M#r!`g#5_;G_o$%-3{jMbLR=6kC$C*rF{8=io0^+e_osOijQN zWfEr4Y2U(hbV3k8$BZ4eHkSL0=u*`t|MfUHmca2e!l5J?=W%(dbu6t*m!77QqX)6Z zg13p|)JXfh>hqxjCTV%~-{)f_wv9mzPB_=Oh0sHj;bSV>{3n6bi(M9A;{L4j{kRHd z(45Bfsdy)RAW!1&B<$56;-Ao2eqO@;bYjB=4C|<|`|)3Lo_v>XH^^oPn7uJL?SF5f z8KZ4WLh*AtolyhdFi^a)C@XRFF_9Le5Nl&M9iI)nbaS$l=+j1_g?(jja^>YgRZ={0 z?A7l3T{?&$5o1vcUkxyBPS<`xN5g6LZ1H$!m<;D32sh9u%QGVdf+?Gq$(7vugoqOI z{*~ut9;jZ`P#EpI#xTT_&M4@K^a^?{bq10su>cBFZN%Sm-6gq-OZ-CX7TkmYB{{)~ zG@TAuBnAjrqG^QZK~ye0`752EXgCY<7P5H?aukw1!JHR3Xb|u!ztE)}NZupyN675D ziy)_<+)}I#mQJ7fp|`NCJ^a_s7n1OF`O9~j&+Yf&qxc`i%+A)*nDIZFOvN=DBz}y~ zAZ_Op=f=NH0zCIZiGCMoyV{ZHm1!|Ctmd%d)#E<|H`+ExJbt}0>$tYC$%`}J{PZN> z<5P5}|9LjyllGmI%yf75^pyPrFW01Zpe_(bMXEw$+Ri785WYZ}wbmrBkDjJY)Sw!_ z-4~x>d5X4!vlVs=eJ5%-Uu^osq8>Sez3U8SJp^IWCciLZ)_4)kpLIJcl=24twb!zi z?v)>7>8rOJ<~#mu`C;Q3QZRR&`w&b`qUI8{v*IY`J!N$o~sEL86NX=Pcu^~ zwL^{n`5l8J|9+nN(9c0Vo}OHtCqh^tiUTXaBd+ zj9-j$Y=Rc-3)={nP?~3s8YZFg%g>9NGT2-n;kH}Q6I*&-sxj#}x8ol^@R>fpqkM#X zefp>ek7STzXn%}R8sJ4(9N3vE9a88s&x#asg0zpAPjftTC7Rx#*k=v*Xs3#*Kh@-5 z=_-wrNX6?Ec{3;I&HP;wpZe{+i)0hqMT2a_^xxX??(G3G?)SID{eSpz|MUI)7iQq! zsHsiVpitjntY2c92|#{f!qmxm(v&O|%mlnKh14z6m;Zt7F*Wm)|L%{rBDSQ^XDQ(~ zj9g5*032H{CMJBJZg+S+?0B!g4A-L}*HxxVx2y1_Q}(kx){*b#OeK1~=+a)C(y;Me zXNHDb{4j%(?r#-HIkMHXC8|l$Um^%%R%)9b-1-+Cqx4f@EM}Sic+gg(hP%h=(5lCJ&O%fD`z3OwvgvGu^wT9vqsNmxRVCyM?qD5 zP@iUPr-iP?+UPgw_4PA8ilU!6!#pU;(KUY5E@?K?6b$mgI6_*{QG)fKA&qT+6V!?W z8Ie(0tJDxO<+F*Erbia@(nF`ysJQL828m;5$}-@D%f?UWL*HziUBl+BwrLOQ&gL{q zk}j~XA#t-*YjZ&mtjw;?k61qmN|7arT{`14Lb=ZI)vvb{OO_~@BPR^bdzMRi+(4$6 zyZ^Uz3#EIk+)OYiD*AL)9`uIOxrH^zR7X)BW+mn7v_x`&25#n=)+S@=dXrp>fSbE@ z__Mge+lw-zl+tBai(&0uls*eCIQP|jK>dw;+nV&fOU$13Kk=-ryo4ixz!MuCfelr` z(Jnt>(9IV_iG1FJ^{VBce$Mh%Vz>(tzwFDRY=ukOytAJQ1@V!K%51;PN7}vPm$eAve-* z3Dr*~mB{aj>0`f$xi(aUrGNX9}`UcbprQ{b+zUz?SB~(@^w5QG zJ#_I~5B)#=rT;?;O;q-9L{>)mvc6j;-UzrhyFiwph_i`>Amo*xqCteb_iaEEZb@Th zb6R6gU)eypk!0UPw-b30M6^>{&C8FHH5oXHz#qmOcC=|SFNz=kZQ^k0mc7Mubbi_Y z)%6M2V_z{a9aW35N{>h4kR~293XqzlcMBX#ZCn%;?3mn>J$ySFnx0(V0OTD{*9*b=pS7vjz8P))JORk|ZY?w1--%3QhgU(2o*r zMun<0$sMzbD;$F`%n*2sHIDTXLuFucVL8fm+_1j$+c=QL7aj98hJBQyrDJ0qP9~0b z!n5aTHRuk5tr>>3=T!cidBT_xsdb&y#Q+_aonDia(+vozXJS>n1v~D<2@|Gh$9QVP z3n^*p0~JRU!{T9ESBDM-aKk%94($iX8Sn743e^1;@q7i zbF5=Qb9FK?{4FEAocn@UTLY1!TUMo^+r0mCglHkDJcWi;Q=-}kAPY%jJ|X*IK7@8MQ84!g-M-#v!FGY6 z^mcx&L}F*IfS$D+oI5r8m|$kP9v0y68W?K*c;Lr525lAY>8_ zL)9`xB2=Eh89&47@q;i_g+lQMS6S5-tx~k(fVw+Xw+c z(Rx}vzRs@I6HttxAugeeA;jusmMrmJ*wf>%4OWF>zkXBj3aNPpq_n6fmo?HZ=<_Ym+(u2O z-YWj7CeVAVATWEZA~13WSwdjt>bIPpVD*BHt>pZ`A>%FL%+66>7f|pFW3|WL*oAux zZ)YdwRcxFRIC}TCK5Q{f+ikI=3ES%eMH$Y7ri}7HSHW?SCA&b#y0xE*8Thn!ED4Sk z#b()o78*#VAK(EksK$~5MmjRp_!+uq4jKTB^8h`rU>+1p|MWom)&M(zrJU2Z%e%W< z-Ubz_5eO2sgQ-lwuM038#VSZ1Jw%;+Qw@1lHQSKD+p7w(h4^g#6Pn*RFoShp0962tpSN^)EbS;?L_iKKGn8zb&wi% zRocjxBlsTTze|RL%x9?e?q`0JV{=41?|k`!)z$7~-=wX49fB~hPZAg{W~V475)x#g z5NGC!%cVYxuP2L20e!Zte0NHKr61Z0c8d0(nl>xw6uK3I)V&w*3{12uD;3&pC;YAr z{#*wC4Eh?J^AS#=&>f4 z)l~j5*Z5kjO;hNR?Qvv+#1z>0>Rm12X1(eH}}SPI{F<)ZgNeknD;Dr zI!E)H+xp!>Y%ColIi@ZJ&FVCx35lo>by~BTGW#GAhe~5()Tc5=_2+HIijp4g9)^@F zEljD>MT(JBX-kxao7zml)12|CR+pDiv^sg!Qe=u8;8k7cufF6!5JB?vNa!YfsQ9thGs$vNVCzd zXV#+~a&c9{(BUtq;bJ%|HXeyEXnSa|q)f89$CnZtUxrHSNX84Fz)9xBjjHZ9H>;r5O=rZ(c zO%<8&#-=UT1Xp`%Xy$ooGA;*5Wwgy@tQH~k2wWT=;9Ya#h%lH3PCQ0e*mzE9KB5xQBC4E9Zf1C!Y<2vP)-*+T|4wOj1r*6B#fZ)bnS;bpPI z>jb+r8rJ5f-qt682OT;V?Dnl(Hp#&b2PM_&wge?jg4D<;2piYHt!$O*%G@Osge3|( zA)p-C**VrQEbAUhIN@=yX!*S)5xJ;Um2Wz(55cz}o9aYMajc;dB2u z>)UhUyghq3YK*rdM<@w$nPfm>UzOQc)@5Btc)81#&)HPkI$j3xfT0@K$evoes%*6) zR0fuM1#qGl9C7nMU&%RNFX4D+Uik@IyYqg4@xgWbxU)Er1}IYI9$9<&Rh-CiqhIOi zgO~R!FQSnuHIL0m{#LWy2{BEY!v=ly}5tE(GR zzMWj23s^)dk%LqU2X4$(k;h8e{>^d?S7i69$nk_lXR5P@o$$94UXh|-YxeFqC_L;InVh?Z~D+8YsZ%8%4PKjfS0ZZgVe$EoT{e;KQ zL-ZxZxR*TpBoYiI`p_K8HOvV6i9WKyK+EOh%UU5z`=)SQ{)jM0FH-v3m?!d0gZZ ziAs|^x%K%AXO=&tP%A{A;qKAp1j+rydWx;5M=kD zz7TiC@;t|TLir@i?xn3$!MsFZkY%GX%$kmP8B}@luM_E_P#s7Lj3p1Ey@ZVbR0nll z(p&@Y{T;g5Nw-i;_cil$@ep*!{C8Dvt#2B+E5cr;Fd{MUk*bUP9_07f^nlI1>&AOT zC@tyWrl}@2f57R7-GZISr^OFSRdMKOTRCX+UQ%^W{7LSrsYw3 zM0p5FXPsBR{DJCIIGeL1pcUc>&{5goDZ+0Ajkp+;&T7qaYaFvjX|Acr6yK9JgvKzP zf@*0M4atJCxaKQ)5(Gt;YnI_5#95ENiMZ&jINch|k{fvBT-FKX@vX^J|M>vLwXG)# zi>eJ04aUCC{{+jQttRxuam*XYJM;bI&#NHZek>2?GTlgU93OU^=3hl|FCO4s&O`N! z6{Az;`{jB@JkEWOaV3f;V=8I;1vXuder7lV#%~OOegOUS#v4Oy+Z*obrOSz-I|}l? zM+)uMFm3@|0=`}$Hyj0D01028|E=NaIr1`@>@MtV^vE1L316?U8<_4${c|ICFyEN$ z4Z2$v=Nrx^4KyL~n^5C9y5a#SgQgD3)0m_I>IwFNDIo=2c;>BRt>~u`H<=G9+-P<< z@-6h~F`Y8HcG25xTz?*fnTEhFr)hg^5=+kjnef9X=^>&8M zd#sco+?G!L+!5WSy}JVoS4W5Y;rszT-lrW)@t)fE)7~fzulv_Q($EF*2l3U9uO&6C z31Vz?hN=X>$LdOya0xlIaHwe2)TQ9o5wRaNzZ&h4nn!MjoTW|+#Ib7jiel|An4z5S=CIVe>Z%PTqr7p_n#`dubu}b>n-Iu< zBBdmyKISqFOg7A2_ech#2aN*5^xr39>bUu0hH;o)HCAARI|n6i)E^yjc|3ZytG;e@ z^R@icW7A=}7K2!`^9zm#lezKajJR-RmYOxBmcG9JgEwoH31bM7NW^ELwqCzF9uyAi_Y*Rz8#yL9wi*hAX{JE!eb0P@ zHVVXT#<=kvkO^aQJ#_Hl>>#0LQ#RJ*{!zQ5%u}AC({1Zz?0yQ;>XN`CbijxQETuxj zT;TY4P5hoRv$A^Y^-Y>J_$+KmbQ~QI2_N&JT!Ha< zfzJr9ah(x#iB2GwrHZ_<$R;%Qo>X|KeM@v5j*+i^!~PxnROuV(XsS_GL&i*wz5OC{ z{}-z!v$>U!g1>n9oTGYP-d|HF`G|ENy^CwD+X*ej!bcsI$G?Sxi!T)TgqH{N6y!TUt$Im4*c0i{86Wk7-Q=2`7qvah z!0^zQUokHjYk{9qo(V4r`aG+KQbUOJ4d5r!k44}mWv{OjLVqSb@~5@@Etcl?Hh?g&M{&I?Vpn-L;=gRki)=jw=1mGZ={PFo%gqQ#3MF#e_sfjE1@ zNi5MCO;gbBhd(NnDUq9o$j(HDt+DD8J@`1XpYm%lG`50;kD6_B0a**J7*%T4N@@rE zU|~XHb|Mv=u-V#}yW_JNoo+LXK4VWfFS+?4Jm=_m@04)PU##a?8F`b|_0U`* z3a#h~g?QE1S|0Qqq*u5#^)&tGIKtMXI+3A9&iTwXjLg!;vU1U*b+HO7xUMuQx}{bH z_?W68vWxTg-!6G4Y%wHHf_W*e;+0`)yFa z5faM5AM80{D}qORr0g=*`<24TnpY7lVWH(OEU`w3;+u#yH=SzNC-8%}XbD&?5T$tANV% zZF?v)RS6QN%7~;8Rw6lhl0d?7G}MQ)j1f7*P^cdyz^>Zg*e)+8o!ktw);W>9;z789 zcP>mVC|#_X5WmkSkHRXI>RDiHK`!sLFhq@UjRMi-w<0ciP9kT`?+c!AclF=()Op%T z(_E)S2djHV5TCr0?-9Yo z$_z_OA;`n`^pH7`1c{>$2!3n3J(T>QFjmOkz(jr{&+x=5ZiW)7g%?KF%X2Dc6mQ2^ zmV=a;+_hTFBqv`tfXLo`92T@e}*B_M+uG4#z9(jafCImq6YD`2J<_!_#$bh)Nv!yZ=(V; zQkKcCdDkP|@jd*=R*a|EoZ}@e^i2)|Z^m%v(VwZS_4eJZueT$wAEGx=VWxzxFiZJz zcK#%p;wr*XZoFas^m)XnYBY?grUs0yqx)#_NNY6owJFOu)(l}3+<<{l12|*SMDo6t zUZYs)vX1rvqtsDH`Sl^(q)Ufs{F)8;RHc2U=a` z$1Kz$Kgh#mC0i@`~kKCcp%n?sSV zT;qs~P~K)|j=S>w8k98^?_*Ubz`|WfH^y78ma7DaQr}5Rp5O`+3LhfUV5St@Cm0S- zDk;$GWiaF8G*`{cU@%~ms%<32*%2&%ZuOh2TrJ(fkuk#%(GW!1z=F%w?9HM{E8oG$ z(yP`rV-Hotg4+uL>n#Wtr;Fz$jou?)>+IQ2#u`#{599F;)U|Yl?4G&S?5NmrdF~97 z?6`r_S-8g1S-J*)mmkE&+8oGc?g-?wJU-GGZdvT!wuWVD$0E5V!Yvc zJP~YK^9g1C+#&?md13S#|LglLSxgnGIMf#P=t-3rE%)Z$w@2d1Eu$)G-)SL)?dBTU zmNc{qrxHHK8JHmMuhOX@xvBzwE=5h)Z&-d^S>k;Ga@1##9jtkHQ#G0|YR$ZHFQQ@fdM0!5>z|qw!B^ilM2>R+5#3b$GN!;zhG;>}QtrwPE0^@{D~V0LRO2x_2k0pj406&62IN2s z2J`|82JA`|40;F^P8}_Oh4P1shw6tbhM$-}Omd53iG~-px!jc^r?b#UTJPd8GY|sK zop9e74d1l@jD{GwO45wIPaPnN_kxrou?ik|;^XAy%U$Y0FoXsu4EFkhK`q$?QFkLF zF!m9nMbqs2W2a*8~sJq0;wISYIOV?GRn}0V?esI$vzHR>49?)vLL2 zurt>XwUAVtok`BFeno=B0;M$VLQ%@J@_R{=LrT*EB$vdyKMl9rHSf%$zzSIH!I^@k za8Ei;9g$9^`;BZ2%PXw}Pp1IP#(VRv2wp_(4EzcyT{)euX|H27TTkxV zIq-W==E>eU@gKr|^`R#4%b`WpBPOQBCdWwnkJu7);cAk6M6oN$9SdKF6fNsx3+S9=csU~Tc)Vs)kMB#!Z1 z`#f*?S>S=%HJ~m0;)jO{I@fZ(k<~x&0tAA@YpvxvSia?hLBbRAyRf3 z`U(0G`WZVvgOFiBgCK*zF-b9H9R3Dl;F+)wwuvIKM~WgZ`wgqPXY4>0fk`TMRFBZ( z_DjLkBkel>(I2Rrr~{#(Baml>ZDw~_Ph~Z%A+{n{(&|skEQgVvN(<~EN5+7b|M`g)B4b1luka=GtmNi&gO5$dzAJO)&=uXobu&?up>v+Sko$e?5vXwpQf zAH^%zHTSeo@AY)}*_c7oYt(yjTNHb>%~We5^||`tf^Y=EZROQZjgAdg{h45(pU`vU6HE%7%8F3)D-N{1fjn1H-1Ddy1n!b7_?$?wq1otO_jB7)0A|a#*S$j zWx|wyUPXkTXd1J_l94wyT11XUG5QseR!a&kqZX@l;AR>meqceJs%}=fg3EvHV=k$u zFiR+Nda#w+ysRZtZ09IGkop5nKjCXvxSKZYlkcz;G0Av;wlZGmLh{r4Tee!M@vuRz zG(!1S-bXdfej~64;zi;H`bkyN*lKO=mM%Wq`gI*YS9jh@d9Uu5Xme%re8E#&WGWQZ zj-N>Uz|M&y>I6K1+r?D4iJa%QV01iyhTqKC*5WKo-l2#eps=cf#fXFmHU*SCupuup z+vG;uP2%S%W$SCa-5KEig;P_7|ysd;zDb^*y znL~ixKY&R~w)CS4Y*sQbldJSLEXcG1E4;!J9V1CwS({QDgu_Eo0` zhz6LEb%)&XNcb83gm~gmi4S90`FHU~AqhQ^0tilOD;E8oI9|9@(2vcnm6BB!j(BTe1b4Tkyruk_4V_WV8FJou0;mrIfY zDSt1HBd)F6w?#*r+qLc`n;&X{s$R>Ozky#pmj~bG_?h$g#O7^^9b`Dm4fxz85kV8aLM3z?4`-}Y=o&S-pUJ6|uE_8L~~%9)55k~ExJBrfJy4C+cRF9s>(9z0HB!eV8mB)&u76 z1X%}ptC{OF7u879ZPCqArE#^ap~l;z_Ks1O?W4yfso2+E?KB!^Fae0BsdW0J@M|ah zPz3Q32h?SOA<(XQJa1|^V(D%k>#JE9q~7p1Ormp(KW5&g<$D2wM0*K^d z#UQ9tH`AQ-8*E?cm1R}w!NDNPs~W_u6geq&6ms+NPXUT>vT258bi5JrDWdhxS(*v; z(VAuL35s^pV=l3Qi2w?;!u;Yov{8SrQ~_3V>!#Mq+_l04EoS^E2Z zMQh2rI>vz&jH4o^6=RxNSJlHEwJ~VQHF+XCdANF%OPuHu9LqvCjVqolU$Qu$CT3Fi z54hcjp=3TAXIximY>r;(k0=2s#v-)IuKKND)6Z8Q`&7pbzA}D~tqd2UAyg&X+U-Ce9>#>`m3gwr`vlL0-*F5%iLOD00jv#Fs_>{k zm)id(*4nv3Wi6w0xCp9WkD>TE)PR)LfmkF$H)dBbqoxBdjPEo`g;%B_1>unP^p_+M zp=^}^Sv$dK%N4bd%ZzI!LDl6`U2vY}BcBBuOoT5d+7^`zm;4ab8?g%Ymz&`a(S<$u z6(D+Da;DdKrib2vLtbV88{V(a0Qx0`2L&-=AFw}z1g|U%udL?ZI3|d?D4)tAa86xx z9gr^2BTZlj&Mn5ZZx8h)1ZkH8fkPgIXD5jMKFiUw>jK3iR;O#o_v<)a=zx>7p`5LIc62TIvNcu726u6S3( z!7Xz^Mh})7Sm!PEYbYy zj++~-t{3fW=iTh(v8lRjHS^Gu|>ulF`5(vgFL_XyCiI=Le@av zhJ}LK3#A37W_RwY%0N|nWM%s|RiKLK-2I3-R2Zs#bPx_(;*HgHdFnL4ySOy{BuG#v zr>HAB&$ngrG3@1 z*z%GF=n}Q)aBa=P9zJ`dm zsuqiDA|5erPE;9_W{oTw_69ZlY3$Dw8WB0kn2&U-welN-EDl5w38N`zTp+_tBN!15N@5nRPPS+ zQnqrjkIUs_^mJYoU#*PgP*2b66S|Y}OKWa(*Taxz$z>7Hz91oODAq-Bxuf#otFm4- zZ^;=JH7G zvbJm)FC1I*032jc^t#N>cx&BnegHY*tRcA)8oIksW!``tWC`t=O?-@jEBU-hkkgf9 zJ^ZMGK^w7CtyBjq@dRgW!JW58GkpD8^?O`QcE9Js8H)^Ahj?z_fKg&R@)}KR>A7_G zTvPVUtJ=F}@q+7(=c3e{=LRAe35c04$b5ro9G@+c%-i1raQn^(luF%c@n^;A%`4WI zk|rX?Os2b@TfdZQ0C%C?YpFq^DJSETZZGJ^VGHr(u5lFBDHI-~RyIWT9wnZ=RzKSC z+wjFyrMhIN5+wc?>=-bWYNlY|43_$Tg#echLW*}k8yV1KO5vWE$xlt_M zWokGglOG`@`(U=w02RRedFo5(ury1DFgfuBcCdm#B%*T-*7t6iv9l#s0rCQ}`)4J3 zIW!8Wg`oacX-j(j_RKO)SV&YyK$-?mb)}Y?n0O5?Le5hZWlL~}4~7Eem1b8F6F*nP z+^ofMRz;iuy5ID9{ab-cX!#D)d%s--8IOewcrR04A4K=Qoiaj|eUk-AzcKrD4P=_- zFKNw*k)R=EVJb*aIw5w^X{TmkUz(|iQaVxQ6N`oM_iSSO2SX<&mY#@h5O~O$wDDi{ z502&f9ZhNZ#CzEQjIG~kwuHlHEdc!70YHDMcPI%(vb}tla9ejx7XkD=2ahi}Zau$A#YfjRYYmIkAiV=%v|%c3Ial-1SD?1<>aT z#)S* zer(;D{tzxxzoFL!d^#5+kI*a8`iZ*$i{JG5@|oFw6|;{Y-oIrIpj5?-*9q=3$hI-S82pqx ztr!Y@I%XXXOES+Ate<4~^HZMGJA|;V?>Bz}lH4H3d?UnIeg$);BjWr5Q$a-`Q$gh^ zCL?-@;|M~TcuBGx3Tlc0Sp9CDKywfTBB$kgXA$$IkAyk5FUm&6uKR%3Z?uK5xCJ$X z$MY7Es$X=6`XQjgjoeZpr4sLdQI#RtP*9OQkq|oy+#Jk}&)gT78y)wD7^wNtl@kUU zK?FHW$oEK9Pz5n9TM9Kw25Gn>HKy~?Zqc_vFEuOVUf7U&++iw)3(w?F?pp_`&`wc* zS|&Y!-_K{0UmK`RQSekcF;zzlWKpiys1^EF>g%lcm6ed_^k}>TRivB@hm=-@h#{!o zfDZ~0e)Q7c5i?mu#<7?=H`kIc$|GY#*11b9_FRNmWy(YqO5H8Rigu@pNy92mSbwsG zDWuQjPff!`Zi&RjicJoTPPB}g3;;$8XQr&B7zg>39gtN|vpskgy!@nnX{ri4+rpm_uZJpWh zwB}_cKv77$G~gr0Qn1$GrEDl%g^x{`ChR5r)knIL5Xh{_CN7`-M)tfL4&QN|2R|;h zHWRCA`VNh=S$>7*w(4^CmOl(Xkz;|7UfujDXAyXXRl8AT8lIecbLllw0A{tG_(3c)F(jg z4kF6gw$$iOXMQRrF-1hCXpLieCYYYiiCwR-{>%3V*i>!8QunhF>I{_~T@4kgXBwFh znMDSffe+qk5}&D2nsK_Q9%7M)ZRyiys?hb@26sT|KM4Bo#p!HBvB;BG? zDR0}XONMyTg36hIM61}tMpGoyQiF+i=Hlp=!VXC%uP~x}rAc{6bhXuq5&Y3akn+4N z<~!U>B_)jgA`-K27Va2vKK7e&fn3Z?IB!x|$1!764RZ({rZM$s%TK`}>2(83jiQxb zM^H&5O2#Q_u{Q+Nm~^#Yh|Vc`!C0q^SZawkV4DdHfxNzZU(LYB8*2fRSdFOhKzD!2 z<%zqO!^3!JR)6Qzv*4hz88?f$q(2hm2dn{g&Qq;8N3t8Z=>659)vV--d5_bm6{}{q zb8>y=TXnol-K*JSPv)67u`$#r6kt+cGKG~q(rQ<*_TtJ?q*EiQ5*WB}I+{;)CsT}%cJS+r$&E+;0q@I0XodIx-*VFLiIGQ8CuhCnYLfC zPTVa&ZQX&pOz9b1ArDnS61EUjytlwmSHS*^1aeBt<2~Btf@SCL>wWO6`4Hy48yo)N z{G>&b%%J;&3tt|dR*Wo6n1-i>xwI9wD>!zKXmntU-LwR0)+h4fp*I(`tK1)9LQ z(F+Q4EG2f5^>LH4{5xj>HX2bO>sJ}~hO=OWn;;A(%o^JOypZAWzt*--NSn~x!@Vkm#2JKi&Gv?nD`h1+Pp)Uw%I0)& zwtk&zD7dW^A>-lQ|Harl23Oi|Yroy;pkvP1wr$(&*tVUHof)HJ+jb`%+qTV)dFDF% z-L>~xb>62=)&24QI{rh~xPHKwu7ZGI{k9-92oIDGdqR3L--sT_{mufePT+C6ekDYp zd(KCXPZ#?ZD^n=8pk(rN9^_0_C}VCYQ=vFx@#t`w5^aKyT+G_DEJ`0T^*z(>CBWfkXHSO{NPT|F&7C>N{ZI*AcbI4Lv(eg;r^fh7 ztRwflGortN`Hn==bU7#(WOZ!?)@MZ_AIDqewv!2(l+IrsI$stP#;#bBS*nU(NRZ~+ z%^J(2@`@{mOUx$+k~_`HMH)Yyblq%YOaP&4r8j=tqIV&v`b7S$TAz;QS>&b5(&s0r zd~2jz-h#`vLTB0A9P53(yug)xu=LIfu)-LUSk$E4763MQ{CXh0Sn@GUYAxIA{m%+a zevJl=>0cEXXpBhxe}AM^O+8$MY%I;~{&(@EtuiNw_K{+f-W(dJ7D-4+EUc33)r&*u zM59>c61q6a$RC12xLhos&is_)BiOlpe0+U=Ampp4|3(EgPaQ@($on;t&DV0pb97El z;P=}T(ct@|@OCRQD8gqQl=~zxC77sF*8Z@d7assaZwT{^c!;7Ch5CatVe)l{E#avk zv!y2XvC{u87IP@oYh=|Qc))qBf?QO}P1GyYlk)^rDw7g{S?jeGZUa)2C9qC&?u53% zM2yMlQzht_^C5TVxL+%9%*xD|YFUF8HPVK8B@Zwm@!8=h|CWK1*s*5zmr#%OuO!sr zS$C`J)vtH9sS-z#&wywJeK+InZHDAB#SQ7>p4AtXK+Kq336|u1P3p92Is;#u%QRD& zr;olOdT~&bG>Ey1m?u{f16Jg1&EAAHiX3yYpc8w4-F$1RxLcq5*2%y5&Pa9SdntnK;sw$Wa8AK zeZGhbfa%nfNN}<`m>HzTB^h<7R(6hBjHXLV|Aa(<;l<0^waS@i3etpkhVzZ-IXxEA z8sb`Ca0J8SZl9h&vUhps+fC2eDMEup|`A*udFYMhMi%i7ugaQ7ffxELssvhkF<|z0;;+9VW;rPo` z(HA=N@l2aEDjcCpy!P*?dZ_J)u~|1*Af6g<$wTrCue#6g zH#*$jvd0j?ziXwP*oJvvK{v#IL9Nd}1)hbIsk4Q>jmiI@L}FBB>~TPTigvsYPfYSq zVQKx1q``%*I$Cq&w*HMFq=Vb@asl8_+&1J7oWFL*ldyQc`hBtX`%W8YLG0QKgr^}D z+@<=8LfC}D5Rn>;bQDd2x>Qew{&C6m$lLul?F{j=>z?0VvlCYWCU(#f5kCr#c`xzrTwp?`_ zlR^|{(KaZZ8Gx8TWSc6shSp(#inq{I+dCa}mHsXJ_)u*+FWD{5erqG4>Wce}doVLk*nz3|$yF5AX)wFrQfiPr zT3zFaHrbc?U-8b~xCsiT?;q{NlgE<Bv3Vc_oBED!nxR_`^U_>o1tQJ=BsJ+fid9xrE9 z_PUH0Me+Bk%9Q6gcz?FeV<~juH?bI$&~I`?(dUK^T^S$l*cSxD7C(tA-b4PbZsFZI ze|^WwygyNx8EK9y@7}oA`#AXy-z2gC@qv0L^7q3VdM-V-a}Mw(B;mmMogbqy>(P_z z$Aw=RU*L$}W*?Upoj@wmJ6{r`_?hgCX3B2ssJD8-e>PkbFASJKP%eK5<#O78$mRe2 zq{x}NSlFBV*C-`f)z%qX4Kyolt%co)Lz|mN%5NV0E*e!;wFqgfOgeE2mRvN>=;y#* zE7knR&RmoEKIaMXPQ+X`e6>Ys4@2Oo02eeaEiOF##@xsE*vWSUGG_1i`T6(U{mYW! zVDF73SjCfUFB!xcv`&w0T~hGTUvN582pnp&fd?R?UAZJ|Sw$MgEi3?w=(lPeVPRhG zABXNbO@@q&t)ysgvjUx^3U|z6?2hh@t^4+@NW60|JV-fr-8BZ+D!;8u7L%CfC7M=w z!>JRVZ0*uhxi(E7GRF`itliX#7_SSvC_`pe)zO%CJufW9GBwIUpApF#l$?Y*y9By+ zb5|(#Z*y2l1BdO7HL{EAOM8FArNDQ)Gv5U)JNI2nFOzm!-CU>F>fb|~7RaKAZ>-kf z1}Yu5RvTb+$2O?a02n=2C9WdnWHV< z>m<$w>4s^=WK06BA-?GoniWxWUwC&N-Y}+)u<|R2V?DTW{%{DcUC`?>c$ou$QLMW9Uy2;F_x=~u{%oSN0+0SY5{ zo|HJwQ6sS<=iyTl|IYM`{^7TSK?y~HDRmntAQmmq$MvCOG?Ab{*v;^Y%rm0|u3@4c z@Z{@XLG&A4Q`F@Rdj77-H|Ro!SZT%0q_Cerb@w~W=ikC$;ZN%)#lfL6C2VXv+?J-i zxR4zZAKVnGxTMzSoIGAHQ?Q>gvV_?6>W-*6!6RFVYH#gRz1n4>q_>zy2zgSr3C?9? zMeKkWX0 zKc&L|Y(QdEb)Dxxmhc=2bYn`H^Mz99pKs~9JuRD;sUYN^0TSa_sFw~U>@Pp^>x#)=Be|57nU*$1uY$6PNh$zM`-GuJ{lAL|WXc-{Q2sXN9!#CPc_9&CJ5_M3L6h zcLziv;`aFZBOZ7ho))dHtLjoDQ9VoZA5?PLh5ZxnUoReG$!nRJ10;XA!nt3|rM=;3 zK6~CF&YLk;Q`Rs(qlC^EgKBu_GC2ui<&5}MikZ^+gw@}L)ZZ}gi@62!H>2SgRqVx~ zBp3CCJ2A7jaam60B#)(NPaB3${{C1%?OXAUQlt7^Ajwbn^11Ep)BelrKOEff+J36r zgMzge6s-Rs(o~fa7ZclT%ODyR zS^3p}LpGItfJvv}ibkBadr@LT zE6zApk0z9GAPr8HQo%h6c4Kv+p4Z&$S74ETprvNuRG>o*=zOTQcjpEk*{yGYZh7m^ zR{io!UAf&Pwrz?|nw+Z>*PJ=YHRzTW%={#81N}Rj^>mQKH(E8j)Tq=o*wrB#r^e2} z^7twiNPL8fj{n{tj85cJIb24~T=&6*oQ@W;kQ9#wwurqA(EzPAyf5U|wrbh6O=bXQ zw%UX_)$7d;-eND(; zvt|G)AE6)*$<`ckTqN}Q>@obAVkr+ueDlp@c7R`URV^(_h2n6)wuYQ7#r6O=L+bUN zft{q{L7SVw$r=v!&@xErDW~PtTv!abd}h#16`hvM{tB?1XSZLQpm*iu>$C_M3tAHP zO@ZyBKT+a_#C6MJzJG&wA(EYCAkS2A0!8kMAo;gnMiJnk$d$Ya=K7|TjR?L;cp;bY z*8hU^)9{?D(RUVng)7157AI05=9%yVWl&X|mZ%{X$qQlR##mx^E5FMTDWv5Fcsmzt zX&S6%p~@p>GBwU8%ISTpaQukKw7VbjhHUtZ3LMD+EV4dhGF80n;JFv>M2~XI+-LPY z=XOJCa&o_XkDniSk6hLW307TO{W8EHdPC##yhaovZ;x9`IQD z{w*C>DkS6m+e_D{?Dk^-bZ}rfNo(|D(0c?ry)ILC%Gn=_1=2>OiRWMEjAR;p>C-B+Be>cPlr z2$i}oJ>)kZg0+D=wh(wSmCI-*%9-wq5S|CN+N~-$W<|u*F!j!2<}BvgZFChzTyAzm zzo|Kb;DH6fVkxE?s!v`AW}5xAm4pomIoa7>x5B-WH1p((!MJrcV=73K*;++?Nzo0) zll23_t__6ifQDM3^hppc#jY~Fdca&C>!w;eNgV2%f;Ns(-8u5*9Ex=<=}R-y;qSt2 zEB2q$PH#EjTos$=>+sHFq!<(&o^z;)3(8Wh1)kkefbm_56kjR1|CWr-Huu>vcyRKEOlj}=KtMZ_Hv0rXz z^*j6iOgjMGxkHUx%Xf4uEj0hQv6%&tr zm%>XeZxYUIs?%}QcJavy95pZF?}mBTnB-d@fD7l`17q`y|r3 zsx*nW3N~6{Czj(?zp;h+Q;#sHD3dV>7ZOQ1fO_~mFDDDC_vM+!;&Y^BcwkU-gg!E@ZixhH_Yb*r@LDUlR3y%^`{mcaNBiwzz~TH}oamKgggW}x zJ>}EwC?yd{nFv`GA2uwhwRuH+P*H$5qgHU#N6-D^rv!ok)U-r$*bUB!pG4{n6l9D9 zT7M2E%SSn^$vWab*^3wwHm~Svs$(x=M8~lDPNQ4JP5{Vt3#B@skm3pFyyNf<3Z=-e z#GZrmr`{1Rd?o{A(eQKU`J3$CoXxK6V}UX-Poq1O^8HG)XJ@SIZpr+sgyluyJ@`GB z$eA`Wpn~_y$-{q6>uH8HC3`{d(>w?bMf49HzP-K8f3@`?pauX{4b!igYs79=uH80o zd3Ll#PRqi=GOw|SJqayerrB-ILU6$LyQxfj0BIGFI|yO&=^Kbzs^hT-0S*wC2*tYU zyr=Nk(Z7cA-Aa@zF$g={^_~2i{m6SY#I+)j{dtQ9q7*@k956;9H=ol&}^+6AwVT)tRU?)U#ux6U*EHI9OIJ%ex6+38q>7kB;+SufnW7zU6 z)z+MS$Cha(l@^?19@>3qdw2jf2&={Rlm=RrfMGRiQwXoYztRiO^(qy~Rxps`My7lx zZ6k6mhw7as?1`yS1-N`wgk~iZcRuvSroO+1^OHvoeNfn0RvLc;>6CP+y=QE={;2bt zzF7OtFvDWBh(3&Gq-1qF*cwu0btjGLS%?+Yub4W6jHz|%D#t#wv}KzRBs8tHcaLSL zvt-oilSy3ZO93QBl?UjEcH9Rs31DO*B;3-j^d+_sHToN-*hHSugKmu3%XI4F8r3SH z2y^$+D>3)U%4|oKNh1Z)$Y-H}Gp%ihHrylidsXBYUJLi?C8!<4ZoiWARVI1VQWt!r zcDT;SHeYja7kKx)?0nUGyYcExnIm}dYPMX;%4#pFz2tohMk5{DP`j0?DvvT6xFxG~ zBURV|;H7-nt-2tTGd)ksJ51Ap^2QQ$KPs!MZSju>SQ4lrX}b#g3){-6PUa8XW5?Yb-vLk!GAe6W`;AN3k4T zD^<@mVwN<4nW17cxFTE2HE{@+A;oUKBD=%+E~IxJi*Hz`b5nZ9chldzS(V(RTql2V zf38y(7;%9?^*J)f(^Y^mSGO&XNEn}kQ&c0C$#0eA+_lai=<#O=nIMrr`_6HGh>1Yq zne%clIJU%>cW&4#TZN~QtmIs{%MC#kV5XSK7}a= zGpLu}B3suz%Sp!o0pW{R^gO+r?F#?f_uoHhbbJKKFL#W0>Dvb|jxqFizf{FWcxywr zsAxsOY|lc~4U-J;Oa$hTR1)V>dVdnZL&(&=8zltuhHfK~ee4u*`F7dL3;pJR=c466 zqCuJ5v@(aFuD6P$65R(Tqi& zCEcJnu@1Fj4e}ej#YBe7xKgChO85sqm%f+*=XZNWjDK#=fOn}>6eKoI{{ zip=IR5-ar)ip-LqfQXIvJDy@%utOIK{-p;H2=B5SqWCS#O~^KPjot$Oya^Vv?EyKi zCe=Ul75Wc69MUuizu@#{4-r^b015aEBoMhD8?%u>$g}mnbE+>FgcD4ooQbJ1l3edE zbf_a-j6-cvL^GWa4)e|rwC}fF$8f)voWJfU-BYNG_7v(h#!B#VVSxVQ(veF}cP7j0qrlHMXal4(N0;q)&eix>WLZX8W;9GYMp-6VmUWZX z0meSYF~%W>48v^0fV~aF*0I{*W^c#!p>L4A&4`%z;Ay-MECzuje*?@-Ur4P=& z2OC4Rt!b*1EF51Q4so1=dL_IB>v*!Rr{TsFfQj3NXx@cWo0(!;-g!T9M?Y-?oodveYhp+8I`s?gQL)jNP#E}kYGAI)fKsS2oG#o3+z^&LW2VWm;jt;_fI~Xb z*z^#iKXYGXq~Rj{&ct_FK!rzPejppb7*oR${vG)TO#P=jA&l4KGPm90;xo+DVnqz` zJ!{h(()ehd%Q+LXR&8h@U#KW~X=c&zQo8%-x zH(mpX{6c^H*2(+a`mW`W!Z;4e6zyDCaY^jdN_pUa^@MP7*c6!G)JaIH0l{Nt7-Tm**FcFl}nF2Am?|BEQG*SB`6{~R2QU0W+EtLI#f5L1!iO@ zCOTACq$OsiFsI>uyizUl9l|nGRVXUDM3?DuQ)PtNHP0AgInM*C8femf(%F3f=+*!d zBbcE9R{5w5P8vHy!SU_-v;j4yFza1*@&R7E2ngD6p8Av{yKX(Y${RR9*$tX@;h-~| zWDEsX6801`DO4N!SV;VkL0f@b;n& z{ZDU&i(4aE8!c;bmqgT;A^=1a!;R`7{T~TiowT$OEhdIOJ*HRwT-5$!(w4dsb9(WgJu~xAb`&S z#(t+v46YCwE!8znX>Nbh3oIEN7_WJleNKMFO7c@yz?V`@H6fE~-;XAxO3h3yTp$ZdVAVY~><<4^_*|7Q$17Y@x}E={ zAj&$A&}JQQMj3^ugsR4i%JxQh`lQ5q-LTvPTeot@i1%sOea2C?WIao>LIQR=mj|&z z8n}%vB>^qMuL9l2FM}%X;}*ww+Q9xNZHgOukN=EZ_Ng*V@m@29@uYzzm?|fW!sdR3 z&@g>vGKDV>_8FPGU&Ul#sFjqzxAh5)Wfu!Sa>^iL>PFQk;Hp2>gTDKZ!mhQ|633H_ z&)R&whToX@@z}23as#O+T^#KEBTWDSvvlXzTyFd z7>*n}iA0%P43E4=ZAa_g4Y417*IfP}oJQU^hW=~J!2;6BhSnaVzyVSThWa!krit!f znDjdXm_UP+0aJGUU5k`~%)rb*2fwo<*TO>f$ z3COzlwlyHi>y)i2E9oKN+S>K;S<%WjqI#LqT{UOK!_p-ZLkEBfWywBBt1qwVven`s zb79jF&1i&$SjyFt(S+WaUxz6XquXFeb#ZCUzk&I?h1SQ#3@z9G5$87m4a9~WIK;^UuKSaCr3 zaufWCS4yszyMSvgW4+2>c*n10g#;b^eHVdvm)>Z%kGr&)yR`SqsqQGuTnmFg_KFy# zuNQ`s);V#e{Afq`e64o`VZTK1JJV{vuSH|2%=u2*^5a=_a$O*IrK13;{vNRL3Hy5GQPQ!Bw$g-w!QqSHBh2BVD2~b;UwH-k;#yx&k95frAmY?3<8sB zg!mOdOA%|G-Wa3%-~WTvnwnKF`py9zaO7Z8BPl zX~-BN>lW*HLZIj;iH^KtBJwNcVNP5iaW0lN=E!vnau7kBIY~71MZDo7t&XRLvJ1IS z=Xpbt7~NkkeI^0?9u?m7S*WtW<`K|_qO5JCn@&*T0_G|kxsfTZnle=kLK^R+>18VgixB$L(o_6z19Z*_3>|e}5zyw~ii3 zSieL4`(tGn>`KNBn(4d1{qtz>zaOjrtz8BYP&H6BKujbl<~BH_nOr74q?yoMaK#%i zE1`KvB~?mQ`6>j%zyhLPo!Zsaj60)?g##G^>80BuhKnHUh2hfyf@%Hf1%a8R&B_gL zGt5A;g;eK*@}(Vep&-eU<|3M#BoTj4}+jjDPwlwe@fJ zzE3_eg)`v?6QJlF?$F}s-R$8`HWWTH0ZC<0af=&dBEzH>b+>;6!DDdkq99sMG7X4` z3#s=uf={_D4x`ov>3p;jx}qyq_5$u&jqTDZq{cIq z!f~zg3P*{oKxcJAMo0VQbFx(*g*M%=TAo7IOVRP=AHeCYNo(u`3awa&Ict&Uj2;%t zpUth{28hvI>_96}56?|JBT8BT`Nt;30>|JaQa7?KRR){($w*kFrdL#{YgD*U>h^#S zv2`n{GcbeE{G5LAckhK$dLzfEq_Ocaoph9|+VV?3Y?0W4MQ~$dWxlWCnn$X@u0z=* zvoi@9<~jL|bp{@IjWv0d3MS((70a;$;zmIy$7pHGosM!GQ^8ZN$_#gk!P!$8)YPlV zqbDYhh^A3(g?|0peWiN270G2vf|D89qa~4$HtI9MbkwUtV`lw7sBay_#5iPlZZab^ z9MuNcI*WH*bwLGb{-{rPzeuW|!lo2oilkOhG>Zk{Zh+YtQUb7N2sNA?Co9Q>C>I7}k|Fv4$8-UATQ7NeV*A%79JDO5;`;>UHll1z9yozWS1?9VJX#3hWVCSK9DSdgKKI5d#` zfS&bL9oQ#$e}6?L=jw<6C2M{}ZllhJe}JBvz3P|MaJY=7YCw^k#> zZ9kM#CSI^>*fKb3MaTt15$H(bpOv+FTCMH2GFBA@@4~I$r(^uD2`SM~8+&0Ig*1)i zNmY#0%PE1`SUfXGRm;D*7wds4o+)MN{9Ag+{?zmJ;0yABR(>Pn;0wzk@;tqEJiUy( zI+RvMI7?7!Cts5enCJgc1eT)Hj55!2Vp-Kfc~8KxEr-$9w?ADpu;4bdY=b^s@W(m0 zy2w$)GJA|{L?p*6x@yO=K+lw?~AJ2w?2P3AHl)Zp5-9gu;SFR4AA8D4DH+QX!+Ki%3vEDBQi;%D{ zlnK1^+>MNNnmn9}Rfr)xQz3(!>dn*0Ilb~YX&huwK>-vCMHVGbUwU&nP zuvW670F6|Gn&?>#dR4JIbcMu3gYlJTrJ=)fo-z=RTy1&B)fPHl2};oI3)%y*zt|#A z*#%KE5ovRQ5)unBu#5CD(k&AOkCVnt5QE22^ZXC|OvIWI$6-Hy34z93Gh!NTXhdC* z8OH2`Ef7&#_wBo()Ju>a6Ep*%A;*VXdYk(}?n}(vExvk0b^W7Qb8aBt8;e2M;6=%( zT&m+ni%igv9}TPQ6`<4u@N7!nkJ;`qZ1GoZH$|XbnC1dmoCPTC`xNL16SLTZBmDxt8pV>*~UD z>xir5{r%{b;fwJPIHAEGn0p@Oxw^d#jOmOc1XG?S)UvUb5DbA9hih1uK3JmBH4QMc zaHppkP07!9R)@aypD7tY^OJOI+O-VGUz%ggna>I8Wtf1_k4(E%m6Ttr95ltYMe6lp zbte_o=|&cvV7jC9^i1FnO$ibXv}3tG|&j6D#fN)K_TY%xUR?BSqT0qR zu)ud*D`QY-)A_HqbF;avIx|#z-H|dIK(Y`%ORsm~4smQXTY;w4w$;y>Dm#}1PX3H6 z2cFBKJEEK%Ym7!=iFF&!6%NB@Y9odi5#UPJ=1T6QTyw%UV!vCMG%( zpSH9$Mje26Ogdu)2+(*aw-Aqt#MHthUivkoyC~Bv);G8tLB04KqbuSbp?EgI!W^xU z)8SE2Y}f9$wC328aVe9}$s=6jfa(jrzko{EZbQd3MJafXfmJ*z(0D(Lcx4|(+<+$|*G z7>5ul(31O8SPq{@7b@td6C6aLe`6CYk?mI_-w7p6ifB?JKdMykRcs`Vo^ z7MUv3A5S-H90CFr*%Cvy@Tmx$1QT$E%I#Xs@5{^>pxuD?pGy^s;DmQiP*fp+l-U2I z*l@T1m#L+qy^W!hrHkkPR&3}xuZpAbS)-GNN9*o#vJKiMa8nsjSgp6p!8-QP_p`zj z#*e|xg@JU^Ch& zSj=2XGWEFhN5UOaazOerR*IgHG-rNX>%Di*YK2iUfoPqN&yi6!47ucG+_Fbg`fmCZp%hi!STP0ULHQav z;_x?YggZhC%_!I08MXM9&OY{Z3KM9(1l6UxwpHiWVWLE8W}K6k#FniYma^Hj4zz>p z-gAR#8!7)UsiX!)C%*KQKzUlrJgb-6@zDPnad{q?~R z?c_(6b7U6oe5sV>Ul)Q@y$~zu-Q~9i$hn-7U3> zev%Y561M+KDA|Sy5=y52mrznJ%JKgQCC3VNNvN{>km@Q!dWfF+*L zxed|pfsFCQ7r~~$AK;;Ki_FtY8K})HQ}V&zcTxLaI!U(qyVbg0pec!x6c4jjoXKH30iR_vkdVPsx`Ae5#{Q^Q$WP(wZ!Yy>^ zRvj&m|7g$*4ve3zL1BCjN{;`a-B5EjbyBpqv~yAMv^DzgH7SUFXpaio49IuZ?Maw|Q_-Q}SWDXZNRHxVk43R)F4 zD+}$05t;!xGLlVYe6KUPoS)4OGaCFpKEiUoWD1E%pi{V*I55lYqD9Tw@bvA{MmgKO ziVl@)>{V77DhqYj9Ie`slF3awaFE`_HBaEZOWjm=qUM%WS9B|v8ShP~} zYN@nJr0oN=n6b%?H9X^EH*Mo&Acb~66g?(e^Yo4mS}oYZV44oaZyL?r`bvEbk)F_{ z<8rf{c(7ff+Mvyl{&gvti7KhL?M4rMhcRk;X;G=zW?!Y5bdiG24%Rkp#ahTw;!{?x z_PXeH34MNoE$U!burubrlXB@Gy;=w6E$64%r9es>zoF}Hl6A+kUoh-Oo=8H+{8;1d z)|2@1AW|ktynE-(oK~~Mck((a%Ba-6$Sa z*mVgPtQHVr=N^c&BftLC_n_5jUN+4qI>Rx|Lij%j%_nEoA}RgynYP**^4Q=@X>IW) z3YgKu+y3GUrTJp@LYQVd3yvy(M7UxB?Xo4;f_0F$^+@f3I6{guPEeQXQgG4FA6>yh zK&GcU4X!bcrHwQ|cXuIZ5>FVO6VLiH!0rP(2s>IxE?5y{-nLsu6Fh29tdzMN-29Cb zF6PTmlAbLl3x2UlpJKt1)d(U=Yu-vl?ASF4PtS8i*sAH6J(huA(DVyiRcA+-jGz9X z=`dhe6oUCpR4oARxfvGsJM22~Evq=S{N)su5$uQ^K#$nATX@h1uOcpn+QbnlOf`hI z*fFgW+ZShzgf@(%un$?8XPY~V@w4#ZGxBQ*$+pY97q^Y>_MSz~7}`X4ozV>wB#J`Z zAzf{@a{D6Jz*hf^04CdKjIBHEsvQy72Qm00jSfn1)s}h>DQmZj@TbInXK(8>J7iXD zZfriL@YL)`x9FtD{Eg4nfHLaE{5tRFui&zx>*rfk%(rTiXDQk?0qN`*aq19Pu9f3A zhj!A$&(;JoqwgkC(`RkrN?M{RlT&PXQJs0~J^vB3Mpw1N=U|}mFKDSp_kR~OsGB-j zntA@~2=U*Tx2kK(s6t45i8h$^nuOp%{w?9(rI1kQcSHPP0?7e+(xp#5-qEgV1d{6_KndJfET4AUvktiIWY(Zl?uwVy^obs3I5{er9|xA9 zmlkd+HK)*q$tWxxrq0F6lxYtpx73NOTkE+pv@tj>t?zT$bf-XL6yg*%Y3+GNr6$}8QWV&eOzXS% zEG{YDi&Lv^WrOef(upQ^k!l^%q*G{-ql*bj^`*5T3JwGRtQ}#z` zPL25L(zaOPVO(|cTk%~3#&FzDHde|zu&D|{sxl55bG@Wl@e1Hw^bnFkQ!3e^6B+Wv zTY%YY9V8CIF#@0x^)yw$Ij%RBH3Vp?Xq z^$h;;LxNaGo(GiYtKxQnH?<$Q0j9;Wxs0nR7--2hEp)l70oRc^bocgv5Ns&6ujSVb)-wjRxTIo@zD?yP4 zIf(Ns#uhSC3H{d#IDHa_p{k*2jHId;YiG^MiI5>E5($H!Fzh2HH_w46e$~Ooxy8XG zr_}N4;{%?I$BV6D^z9-h5XW1W)NidcDnS#!|HC&W9IpF_8Iq-)97auT$UR967?hTWfYZBVCZp<9EhH z{OZvP58@*$2@Ja@ZVWbKzqgF}iMIJx=J#xmrP3tdf=0CqE;lJ(GCLgy>|0(`;3NGFC+eKE$yCgf%vicMAywL0nyxdFxn^2lnrDJ__{ zH?!4s=7p!BU0JibL-j3l5q_S3ipa$(LX90gVnv!`LPw@PdP}OAQ*7I0;AZge28{Bh z4=#aXwooqlOzX{k$a}k_wFj&?3wt+{Dy8~O(WeQzja)-ao9GvE&cD~)#@6RoAODaSIs4f#9vQ?K&Vqa0xFNmp@FT{%lieyCb z<}++d%&LE6Ivy+Z;tnk^_UcFe#a6!-9Z(5f0a4y{gq8YOvn?_ET0^B|nfgE7X*+Mz zLm9={M4wOwC`FE4`tGpjPvtTSWBXBc`zY0k+ z|4Ge!0l$BT77v%tlkF|h>B)6cG7vkCCeg!qzs9?g6xLBClhj9H$?kTIygu(ienV|R zkUkgut|Ypqj4_~=A1dZVe}MPv5z=1;uq& zyD(P%{Nnx7N!yTLjVv;bIaJCNSE@ZifJLh(zt)|R*e-;h%fsJ!6MI~#;N|RO z15uwc+g`cJZy=oYZ#TakcJFpU*%&g7R8W@J0z}UyRbGL*Ht5(uZM9qzfCb>}#&u0o z+a5{Zg;zVf?1u_t>ooEd9VKJ^LivR*9q7(hSHr=pY+IdKjiTXXUW%k4b3*FSC3Z#( zf~Z1AyM=N-KhR*)4hd(nLvQ8*?bx&8+F`;uV}Y1zaa4Uly{=lYYl3!2_8xZETG2mO z#g+12(2H5(k6Mc)=OZ1Lns=M#$l9hZjec>~HyOKL>LU=?WMvDEeGyL>WrFKru`MJS zn?ml^<99B@iPG^k8PHd=x5|b6mHgnxkK>vpp?*fRK>kd<)mnBsWmlHJ3fK=m4XX8B zQJVZ3Z4UCuTC9yFC`E@U(yke&DAHT4L*!ZuR-73R(tbhfTe-gO6;>)M$=)vF>9#WE z5$4+KF?3Uw*Zr03l=E~Ii&R(&ah2>bz-}{+YP6_q-I_5vCmdQ&_N=oCyE&TWD11l zr91Io5nT_lA=8&xYeTFd@%JJE#C%M)xj_uYqIloLZfeZ4wGpq0sjPt`w-=Qol$A9Hz;H78bz#;*u-nq1;gj}C$bLb_w>I2VF%Uy^uR5*kM3 ztQNp+yH>h@aj66K*3W*&Zn52iZjbGu))Q`bhV3kgzQw6ouUKM|Td^YOQSY<}S9m{! z^7TU;5;kX%y;4aOJ&+<)JkSrM_b4^eCEI|{XRSZ^cWPL(8WD{AkACfAB^2*Nzxxp~ z`@_vJ+V6k-(eB5&5Xl_iYRkUD_7hz7VYe7m;ZYpNgF9~zClaLp5a)aZ^SaEz*9hXP zrhlsTqqq>#+IrB%vn4Vh*Z!V9M;AOUdhH2o$bwuf#ui3QCpu141u=oUs6FjokUsrY z=nJ?neE*kSVt*oJQRQGp>OW~{)XcTKZ?-*T)zb%V)Y+D_hEAH6rSRLE8ZQHgw zwmY_McWnEu|GDSBGxi?u?)%pFjI}ph+lx489X9h<0}~~WZen8XlF1%X*h&+k?CoM5V8BpNf{B6YAJH)F&5qCm^x9GUW3ej(VUtuQ^zFj&2SURdHrbNb!~PdTu7laee@L@q-GL zB)pMR49o%lZVy~l1omlAGHI|p2c_Cc+^rjK4~cMqCEOo+my?PNnnX|+`XfTvnu*S8 zUtXNr1{uM2zOi{1S)~ItQ=~lurXYjyguqu4v)MlF2}eUfD05ene5h=99~%XYlX@-< zBQXt)B4rR=kUJ0o5G`&1xgGHnX~2|kpz`(ycAB?8#+vRQHbRDelP&?Cht2V;khBYX zG_#Iy-Cf2^+l-s-Xk>)r_$ys^r_XZ$qH}bO>p0L7qTYUQ5z7+EkZW4XBk;St50TJ) zX@lRw2GhqO-Jc@ov?cWne-sUAK>{RqgZ=ogZ~yuzD-3Q7I|FG^JCGL9{s&rQ{?Eyk zq>YK~{|xb>mA7rzm4T)THE5LSnJK?5GiRa+&weHJ_6!Cq6ntr0q6oq5$fKW_z-AIwVB1?AUbgHKwI-HLyy@gweTB2tz1`}2%w!gF^h2=N@X13qcDH`@v4eb?o?x_9aT1$? zF7_xHXUe;R19$OaZ7OA}%nG-O8>Qb$lq34Vy6c9pT-8>!MWzd*ypFVEp3*`LqhefU z^ZmC4;Gichjf(-KY|WsX$vs8!<|)j1$ceXf>FSb8uz%|!PBhu>!8^oZtJ9KjwK(R2 zAn7-gU00xkzCl3LNy~-oJffCAo1Yc2 zr#}t-K19fObBP;B?>3H{qa^7R42j`ED15xo=Wih`M;nz-{jZynvUJR39hf& zK`h=!j#Prm_q*G3GnhSN=aw3* zSI_3|(0u^cRO$+x0uF$LRf)erB4SbCX_Mi*5%6S#UVpA}&1(|TFhU z4n!XH1itQolgj8^^CKVm?!kXa8%!q35n&qh?@2oi*o&HUNj`K1S1NeZ*M}V+7?L?G z$I7_S!G(`Dzd#Rei`*b7f4&C^6}JSn7<-{E1Le=&D@!3#m?5rZAH*`@MFaFca1WU` zFjQVfpmk-Z;5K`kR4s_f#uRQTn^p+VTX1u^ zcvSih^z5iS@P^U{jd8MKT{TRfvc_al_3M1E- ze3LYC3WCr<&roxMhn+aZMm0OZ#!QPe6_FKYtx%V?O zo0E3MwK1o%M&GR(#c&FXcXujObA>c$Om_KJv5q1$;g>3BR<7XT6(fX%ssFB~%yKZ0 z=AxJzk{uW^^jCt{mJwxsQC|9qiT#?9gjGK(#L(n4`}40Nym+SPSX%md4)p?l(imN_ zgSw&3^u|1Xo7Ew+^xddd0`Urd3gAfTq$}WJ+bbq@BQImAaT?Sxu@5xW*@rrnoa!#VH~EtKvB>t88UT zufJ$%Y-&yO3Jztg8tFoAyF5lxm#OW1{*X}nLCGS+tnD)PfWtKj28$=gD!2RKI>uTt zO;hv3#k+xmS*&QVMWeF%$TbCra&h;~NE03wVRFV~@nWw-`jM?g-MdQJRf#5^Dm#u( z`*$mELO?~1wFT>;Rka*p^Eo`mqvqnIMqQ&kX4BgDwj6XEu&~Ili|}s@`_2fqOi=_3 z_TSLlSp1Ic$o;4cKzO1P1NaC9u)#p!VF6?VwaBDGQLq4tfmUP`_!-enek|<;gW^;9 zTyc`wl5`eYHR(aF$vICuPx#WzX~oa&Qp9$ZxAE{Gs7-$}AC~}~Ok`e%ss=#-iU8;F zUR-29Lrg2@>0VmoK7$x|fixZL&W8ce5A8a<%AZ)!DopL^#XJuvjW3RC$i<6TbeH|yo-{L^_+U>_?4EF&Pg0?GO8n9*h3>9(0ghx| zafGm?VF0OW1ePnV4|FbMa9vIhHB>)cf(;9dP#vUP6zsN_m7HtF(j2p0L{rDd+WJ<+P8pcUfv?4xVE8Ab#N_KeHq7fFrM`&x50lCj5L0(0LbJx4uN zZ}~=J9jed>r9|avUfZ@vP5_s0+2~SWRjPv4Glq)StTXx;od`}E5LNy*m3bU9h8UdX zuh0@$WJHI6Gxn9L%}9*GNRUtJwHMRIv$L?9Y5Ndgf6-5JhMSt&p`IbncTKOKsVB35 zX;N}~km19@f>ad7-SX9cPp%CaH+`A~GKWIo4)8xnQPuQajIE5Fg!FBU9REe&rMzi_ zr-J;sr1Mpyy-r?^hT0BCy}Hs^()eCNe*iTvBLgcVk%uLL_tt7wMjlu(g1d1g= z7T>x9;ug6@45A1p;RlYvGMpI=(;P%Mo&JO6&fC#sYV|7D>y5y#@|h|URcEvyOpS$1 z$MA+Ll4GTAWDhs;tkab=lH&$5k{olKPIaYYZ0`bnOLDg)K>5zZan)rVHYo&j@#zsv zkzP?#CsldTK07C%wXIfkC}J5Cc8Zli?e`PmIkfNm*2$b~+ey>;Wy%G&RcNNg66H88PCe$%8eXFgrxDSmM?#J?mbR<2j~`h+iqiQlym_13W5|ZKUW&FSDvzgF|&4jSoOLK{pY;1niehI zDBuo}dJ8d(Be|Q`uRhYO_%_O)&#kGg>zZVaB!_N4GlX|V;Ed8Rmsg%bd9WbqmG9@<^ zbs=J4yY!dhCzuXC$1|#9)UBFi@^x5H@DbPe3Z(i3O&4A%__&l;SOG7F~4q)oXLe?!=ea-P+*b?`y*f=*aG;2A|E3mdt!&dngj@1sZ>%Hj$q(%i*I zgWrmw&Wpj`iFq7jrp?l~qT8<$t62+(GW$SVd;Sqszu(58j!C)G*W1R z9&&7fqD{aU;)G>xtlMek^Kw;bn-rqBAGolG>O0Z5;NkXw#yZ@mR=PFWpMM~dV^m69Qv2&Mk>-?J}0q|!jX0hx(1keU34 zzT&@Mhku>+sAxK_D+4!+=f6_uxMSu^BopUQX$PFmWb);Sx(*cs(KtZx@u3e%h8^VX z$zthB(R?8I!M~^FBld&E@?1;18HTuojKc?OtE((T@lFOlov)5RUF7hJe?E-L0UL{m zi~#s8Ri+4t^Z{o~jun^0L3+%V)#frim~mKH{op3<-x%tip@SXxY6f*Q`E6OJDsw@B zEtV?oq!v#iq6kohd1h^YiA#fI_Hmc&IPtL(Wc)4Pu+l1 zA9GauG0GLQHWBfVwj<>|C`CZs*@TZ0Q7X6O1Fcr!FO;;2wXk z4e|y(%JZ(>%vIX{^WK4Bi#DulkZkl)p#5!&*0PE8n`}?f(QDrIH3^$OdN|H=Eu-SI zT~-!r04HW7e!HKkQ$*_a;g{809v&3dcb5I!vVE#92(EQHu2C-QEGSluyVwV6G%mxd zfC!2svRro0^fMJe;FEIJU{VAiO99|7+1xcHwtP=mS;cCX6ob%EbC9yN zV(&Yj$_);m+6@;_n2w-?+KrsXJ1Y-4T$Of_vdMmmv3znqvs)a4XOhD&c*=i-aB}Vk zlAsj8VCP?=i0edNO~*9wi||_pJ%RhEgQo~9Xxr|Jr%Kl<@#PQZ?DO~mnBtX2XTs8z zhG(Wa)lzXldZ7o@Mja=_3pBbaK05nW559l6VAsCrYnsvVJPUa5Qy^=vTF?^s>hao) zPln4~PN>heXYY~3&`R6~0b^YCV-}~JU*{BfI0uhezlGI1C`@;F~W zf;WDER8U?$-vVz$%v{Dz{$E0pglX?P~U%kI@di17x^( zZOD`PeHjR_Lc<>PXF`Z9QOKIi!iX`Lip;1OJ>jXf`i!saUq_W?r0q~4F3jb`H$aj^TzGjdu2CUtmU*VJ4te&s+);5^2|nt{{KY&bC!IKIt}rCuUD@LTKQDrC=#U zZffHE@V0WU(QVJkXbUh93f|c(!o=(Kk&JhT4LAR1X>G_uSpbq-$jS59zqUB${iB!+ zK$;N<98duM&jX78en|e`!aMUrBrVHM%~rxg#K7_`@Dtcz|3 zf9e}r(`GUjtIgxV&zipG=;P>&E?$T&+MiiY#q{QxSg+fu(RIx-;lj5#V3g)GP9Ef} zG7)g6Pp1qTb!tE2_ZR!(u(SzPBu&=XRAGf>5!aS#$`}}^LmGExjq%E0;ZWqdjx5mY zl?{~t>YUg5$Btk;y*b`?sRf~>$X3%x0o*KqEH2_u=fu-vZtg;({CP07qX?4oh0`4#J&EzMB1I8_pn0#KnBnWN+0RdV%u z8^G3o7a3<@zqYsIHF&EM?|-UgMJ%~K`RXMe%z*6Jdd#{R5fAvGf0g?ziCAe6_eCR2 zlTuf(1LzllI;I(lQ?-Y{!8l^dGr%T=ulurwo$jnCAT(7Gu}>j((4fx#h&WtPc4Eb} zJrUA>OIEm%SP^*Bz`1P9fx2;=YU0lMXNS|_h|b6;GmkMVo*LE3Ix!Am7Ilk)i-mX} zdo4ECjz_!&!IV|Hh=Kcp#s~fuR!tc9XgYi3r8< zu{@rmXcO#YjI>K%ZHWFZw@6}sCwPt88JX~jxrh`36>44((nk>`h%m{Or@9}CN4_Ec zd0n#mx9)e85N10!;AEc69KALCNq*~N(O*m&3e;y&P%8a4ad~tsx4b5fqp6n6TWA_Z zx$ZRCxGn;`dsdMvNMj=j35EK*KS9>{L|qV8m>HK?`M$3QAQ}g-Rib^gSy~DHWM^Xj z%<-?_dl*-%836)s2AGyc^?wJSyWRf|uuchAOIpSW^(ACs!om)rCCT&)JC_ty1t@}* zDJv!|5R(;BaKeMZBeHP9LtlEXH%6ayUwLLWd&m^XWDGQ)q+D9J+kQ#PZ9jcfJJvpA zF&{m9UOGNq`LJMZKR-#=fF2L@IP4Cp-CnDBO@@|wKZ|`w+|R_HwjXb~rRu)ucSVn} zyWvvXlII*_h1LHn6AbhB4i@Dv9BkqQ7DmB@CaluLI_&(!70m>bu3{KKS2fMpM{XDU z4kMWJP9^xqUrSh+zXZW#cWd)?>m@FOI_ z0-?_O$Yx=nN_ z+I&^76HQ9m)@o<-YGg=ayqyVz_i-|1>57uGxS9)?z9!E-8vFi^iAiWS4o-}0T z;YBMHpFkKYLEF7Ih%mKENZBY?cCeY?{UcVPvHqRlbhF-~?o*kjlQ}6ZiXoP+M7#tt zAu@b4xNAKA*ee5a{u@$uRA7J}7ygfCejeLgDH-v37i&2smM*?UyzuqVeAqRerwY+W z3d|#q<@z4&Mm-&-wzLQlD8o+K-c1`#cXs}*N!NpUpLY!3yWJ~9i?6RDAFY1=_h;nK zlVR=~2L7$UCoVIMGnDHQq&Iu;eINWoXvd#+BAgUI3h6lo_u$^f4R!Fvn@is?Tc9s*6&e()ivGr8%WeL6?|vmoiMRlmeGx zJ}x>=K8}_$o3(t_5+pvFLO!v#H%>nNC#(Y8%WO})ih_^VT1Rd61p3$u^`-%MdXzv$rcCud@h`q` zIms_AuM8xFTzf*x8F4m5zR2lSV~ucT+wr?=-X~qkI4x(;RhMPh++nPZ-kjyK6uulw z#(q4Su{$>#;xCGK0|=d(Ujo0GxHW<4bK|2Zw5Xa_ci|Y3*78!nMSd$EnYGxayR|)< zx3~sBi&ZtQ_b7Hs9i3|3Slq~P$sL6+huJQ@aOrlcdPP23_PAxcbur99>>=z$bLD~U z$?Q$G%VR~fgz@K{kbdSpYuhA8?0N5fcoc3?@ey@vs+~&R z@a}m!Cs(5qqWfl6FD>r94TRoPbV*&dJosM-TrYgm*^(?Uir#M+|X* zj|d>n6|`q6f|m*)mQgVVuc#!FHzp@u&dU&Z5=9{1&P&^tlnD|F#0+3} zi>sZ|qs<@D!_)5) z_EKK_NKJ-G;gk4&*><$$=<7SRnd!^d=>et(Nefe!CbNg?GZVjfql7BlI?<1RH9=|K ziaHF4f$O|=#3#ka+Lv(DnzL8YD^qOxz3yV&PqW>;{M$m3$Z;O7xerP$d+5W2`y5ge zWBTc0N_ZQCsX}n4In~?LbA1yttr=Ip65DN%z;+!jaL=NNffDTt4&WN+U|inZNfLLe zPLoV4eWofSux|g(U>{N8$EToMzck+bXHZjoH%gLDktcJU5Jo^7u|*=%+}*!p&Dy&C zBBNoHV3z!Ljlf@Os{QDkQ*;|9L$qW5G2pM(CzTd8tre%wrn%=&l$$dDc?b6^e*6QQ zEx699fIs2FWXhE^0ZHT}x&T`7G%d<-zOR+Am@Zsuz?u^+s~JJ=xzQP*)m^VS_fj(Z%AcP1j4 z{x+}J`KC!vn?m9C`B3TIj$`UnMw`ppt1}`3ud@3(zW$uGTpZkdsTt15xhB5RR@aaTo80Vs2O=41=zuie( zH`h2ER$5G$Q%4Gsc&i+9f2a_4&s%^Iy>}ozP*u*MmK0n!yB(j6o7w%_WPv~5)K{3U zkncqWC6>P%jZPu>2q<{M}X+66j{-bo^7KmFh;Z!cloOg=Q= zHU}8_laC#~J7PTpEAl>U>fOFLPf34^Iqa?#hPa)~=Qp=4&!Gq->h6EQaz8#H&z6ob zVkI9rIuX@XqP!~F)0KZYSGYOjGCIc+R{G|eVE|?V5%`y_UR~7x@=S@c)Lvl-hk4vp z+?V1RrF?Lr=U<8IPYrAG5g=5DfWv8y|Nl^x(04L4`xmTk|KlwBY4cnMw>eWQHdhok zfQwOvIbTwjfh`Oj)P$Z?Y%~)(5n^?$`ipBEbzS_6kPx+^SxLNf`V-*76|?_bkmK19 zJurl0Z2Fkv>EmTWOQqu9%K@OFac0L0lCRTBZl$VIw*D#k zdQ2@7IAWAbE~Ei&V59tWip>$V&&gdpBy5Diz_0@|n+Ak$b%*$77NdHz`lYLjOsUDa zLm#<9d;N56GTkN{V${#|T1}iyXS$B21YDS(^v;=L9X6bp!`FWA&9i{ED{|xv+r@f% z*XU=SLMR#OMe5BiLlh9=O^el#byv5+qU)f?Y@1S_iAUyiF^hBs2M=iOGtMEf$t{*E zwO1Qs-$2Uy+o#OGyr~un0kLj|*vr}#uH&so2-GbJRH0Y3~kVbWZu6KtQM*qgud6e&GoV!nR;&32OIRwifLm zbdJWo*MQ$lLRFb}7?YZ--QnFM^Mn{-&tb0&^1AWJ82c9_f;#~Yf; z_1bwqSE9HMkE!S0nse%0|E{4|(bX-Iwu-2hbob7P{T3JH$-FzNE;r@wkRx4|MW<&F zLI`pq7{uwQ=N8#0P4TJhj)~KlYy4F7+DLEk;vm*=!!o-lEXCsw>J@2 z5$?}1atHkdBkfWj+J)UQZNOc<1joLlK0D02y2Ydx0T|x>hu!lWd$nND;svcZnx3i}wja;z7#v zCuj>AG4B+?+)uKL7zufvFn}N%|A9^>_LxPaU>YU%Gr;LyZ6oY6MCjgi;aEa9?t^$K z=pCA6&+TML7;*k={@<_H=;wK2L4mXB1K{KEAGYTI%MMG_1(==qKcbgp6-~8&l0*E4?2(&gdfJpaNYnEQ=AFvU^3Bc=Qo6x1V#@C23GQ$lqjj}u~6MW)sy z#^LxgX$*D9WmNpQ7Jm%Bx`woE1jjzHCg9s zts6WNh-9}Wdda1#t4U{#eJ?5ePKz$p=2U|C%A=M0g0Qk(9D686GdH|U*e(6EbGq6P zoVX{rmASY-jUkZ|b5$o!=zVt)Ai`pRJd;-TO)WCO)8YGMPS0sEZGkx`Tx2r9J- zhNcC=$d+iz9_Mie&xOZ7C)rF|HvFWwL#49ZRh0ALex=z}ZuYyV-uhz4>q}isR9v9Y z;@IToLQ3zfTfkpKEnv7)i60+XbEq4%K0uF&N7^b$o+lo1h4R<~+D9a6H=(hJ z?UQYFdgsTs52p4UDJlZlccN!x5dCfEJ|Ez9VF?DqzI&Ujrih|QE2J!Mf~bMVGoMg+ zd~E)P_26-_%C#=aUQd4J7lR?fOh(vq!MS*6cnoK?R1NwfM`-H%t5gxn(k_&Is7VaG z3mF{DShKrk1V7bauKcrZ6*}z4-<$eIBtt=XgcB3ZaaeO~%=nx6u$$4=@Yp=B=MnHv zn@oY38jV5JdKuFtQH>j~7aY)Hv!J`T<8COK`Wyj)dY#eN0KrkG(eH4_@4D+|J0bTr{diDEKg z!WelfeytlO*+4md*%;xd?hd$9>=Fa_jUd-gxoIcg?d8pe*Q1Y0j&D33`X1~3(bqd;XhA<(;KoyXI?`QXT`@5) zIt8|^`CB!8mAzK(&wAVa)S*FZ>Xef=M| zQ2$jX*6c1DqYPFZ zI^~kotk@=>0$E4uJXEz_wEW##slqjjp>dP*$7!hh%BHog0`K=>mPtR-lF4tI8#I@$ zJymI&e$y3XO}LGWVb`zzVj7c=Kekga@K?f`RKLijY<;ej(gDM|a2qC-yu#Hmyj)1jk&(@_fT7zr^B0RGQzr*ddH~`@_GEsYIXt{e#9XM#h z5*gTkje}Cr6Yj~Lq)It{l`nyzIx-nv&{Vd1Y*(^M+Bx_lfSS4@Nqf_eIUIZp$c=Uun^}z)80MB z{~*uiG+DMZTa0o76yhmARYV0F|Hpwk7;D`Z8#J~ zgOuW1@B7_>8#tQIWUs9sr^=N-nvRSewF(4o*xaaRDLvBSD+(9)piS)Tc%72|D{jlq zbZ^suxTOVh0LuScgP>&Y@!!pRu(GA?x)Hk11}7G`>}gYDqjtZ>R+F?=GZXf*jiL4M zAMGXY;{{1HR0lLuHzyZkO8R}4?YM8@ncxykFl3iZ=EbOl&miwq13zqemLpIvgr__i zuH17R-Lrka-rfkm9ocCQQ{~Jn4Bg>|JJRXs-H<@(7~C*Ns;xX##29Cp+WUKBsduIf zOMS0|O?o;uoxjQn5L&Qz<>-3ShNw95B!Eb_u#Svs$`kFL4LRz-+w54kaqC~*BA)(5 zYR1K_DSKQ;z`Z!dty3h>bMjK9*8^p`(tQhweaP+&#`lBuf(HBLw?&y z%jT3+B}TgfnKpP~vvBI(tH}&P<|RgKsG`Th9!~Y707NPRk3S3;MGOwMAz-Q?U|GFW zKW}Ue|L>jKykE34nA$9p9j+<-0w8{v4dN~~yD%V_*pQO6CB=)Xx9Ixb3Le$I^NH_|QB=a!h4RMJChlk)#L)DyQvK!FN zzrSXgqlKxKh{a-v#s-jXP#pFQkM|PMl>rbB%J7FuDN;v9@Xqhwa4a9cRjB+Bc!YLF zRTuh5lIIsz@IqAb@`t%87HRQ-2K*DDOu}~QD`LUp55M_)M`WT)@}CIhCf4!uHo<7G z;DBe`kY_Q)$p=)_3RHeANtM3&ga{aspLT(NM~joI&@krZ5#tF5uIX8C2&DFWBJ#7C zlI&6867r)&vl8f)6EUlY=*{fmf=TVN-!Qk8Uigdrn!tZaOD*rsVJswI^pNYK)S9Uy z29TkdX))4Q3{U z2fdCk!I3psJtTg}HoSqc?8zw)2BNFe6KnRd09MVpexv}Rb>F^!^ebDGq*_#8_sC~y z#1eX^xR|{!rM?T&{KzC*PNX;kFjA(z^0$DDqWh|jHE_xv!K)|_k#n)V_A%;UD1p!ZBrB6Ozb~DeSB@eCs{cB@4C!feW1S9HscBHg$ zgY&OA3*j&Z8Me@<2t{H}h8MG|FMD$9FtU%4hWp#gM!lig3r>gL=^4DmT0K0a`ivBL z;lNDd?1jMw^M0ktXk*p0G8ZMq=GPG-fYnHeC46;2>(sBmr2=CN5=@$fYO_t`uRhKA z%v&qXiUx?#;=O3WqVbp{x7;}b&OCF;*dRoI`aC8qa8rD6PtyO3tf8RF;wHd^ez2k1 zP(xaHwnCy0M{^nW$0XoKvpA8a#_Ue_*PrrS{dwk1g^(rE*7*~&n7K{kL|jCpNpfk& zaYXSbXgR&vy2v(OmA4UPmGYpBCe-) zsZLuD0oDqmlksN3p!0CFA(x7p^x|q`c3rn*Ve1@D3w1m{he2Yw1ZOv%ziGcgzS@uM zTX$;t4VmzfOyEJ`uD3-sR*U*oehZmzJS~Xl@1?J;DSLr14^)LGAW86=gNwKtz+v=3 zW+NfRPBHAb{s@@Zw?rJwEpBVa3U=gVd@myP{?X?xp-d|};KAi0k9YPCYJB&NR76Lj zMuE0VF#BFruPH8;)FsmAIm(r67uc4I0DZLwDs6MKvNN~cc3W@2JCZZ#YfWI75Q{r zGXKXm@pNclLStaNb(w(*gCnts__@FgpQ$id{8-;}1iw*C>{A@=m3IQ7HT*_c$tc zubu-U#rfwhM2GsH*WB^bLi9;D;kbhwi=b{ zO=;lR11mbJFJNM|jj@>`k{#BZ=V)aY%Ue&>c^N6ZeW{uHX5OHT^r$8dO`<`C%?4=} zp(9SNV+16}b#EijYA{>qcQ5T4u?nYAt2X?ZrQ=CpKaE_sF1MU-V~8l_2L zKUHDSYS(WRH=cOLbg(8^;g?UAp;swx-Qpu6=Z#dWG`C$LfuC9}*c13hxmaLDOkT*^Q76noKyeGR|Sc*LpLqtDYk7HW%9wqv7y(I8Co zlnC|nVc4G=hFzSeeufy7@1b6~k*Jr7+I)6v-RWK8H$Bq`W1g%EzX` znl5kww?c1WCKqUrX1StOF2K2%cL5>aK7k}BL%l3=Pof0)JFL;}Y&;gUYqmDqN(B)r zs9uX=Yd;cW)}$U2b%zlL@`N-*U%Favc7nNSH?(OM|^j41fBp2O0g&Grn%_V!Ko z(8A?1G-z(9NpH+aZ*Y_}b6de0zGBm#w+Bq42acF-?y$W;0vQdi$>F=BdexYoX&`m` zcg{=>c*D6TM>>dR7=ylj^X`wjC+`mL=??B~0X!o@ZV&EwVs8ZZKB4?Ux?V<_92spK zh-JDQHhIdvzq28|K~w4=x>0JVOnb(G_s}8a6r!R8U+fMjGiT3f&w6s9$!i9x{Ms0#GZholnEvA>Vn&V82BLO5Lo^L+PtuQ z5hWpU!{}5yuCxOW(3bgk%ZjWeZLQG1Xw#Lld$nrztH8und{6c>c_>OV`hZ=@Q;ONd z#j^3(h15N(oEOX>&wu6wNwl$m^}O2 z@<{Q7J=*o0Ey{J#ud9YVilX%9<$%r)e9njUKm$Lpe+to9FQY@wW8*V*m`8V(8 z;jBvf67=mzu{Z!eI>(~kxj!E4;H!srP)wH5UDhkj`$#7lmTH!-eYX32vj%+c^*p8| z_{J7|q&2gK^@b!ce_q5Q7xu*VQ5onNGDY@gt-f$%*kK1I;JDM*e_%A8T1FqB=*i?^ zfTt3Ze!+ubv&7~HkBK>KE$nk%5{etrh}B!1Qb&!>r9qIoXP4KMZtUpEvm`hxZU4Nn z(yKKiivq>lZjs1pkMu#&!kUrc%A>~*T z+1_m6+UUAmzYR^I+sS5~jbIr+JmEIwKA~sAKc2NAaMFPk=^y#>9J7 zm+OYmpB4b7S-ANE`Y|BHpD!e4_cEnekr1<%9(YzT}V`IHPLmuZu|;HS8S>!uS^0R{5ej zhAtO*Jvx!SXA>i5)c4DV*T65iD)C9f{6d1?3hT|BxYV81vK`u?7rU)0=@xMOD2?x2 zU9i00?_qMw#G#(qupQnZ!0w!nIxySlh&t$y`KVio7*-V7G9@?`(*g#m=4 z8K6=QkjaLPK4r$6&MmAnJ^RJK=autAsqg*xgBq`p;nETR9#_5{<}@^#cP5LTzCEyG z*;tQ+HyWGvI?mKjX&xVoI~tq*N?Yea5b1^GxEfP}LJkvqu_V4_!XDTDx5q%<+>6sZ)w|A#f?ADSAxlZz` zQ0vnf{*pCeo9O{*&I5XglaSJ$Pu6Ex!Uu~&K~LfNIVZjo&WI}Ii;Vuu8{W=B_H*Xk z1ET6)TSG-8< z?sH6H%kp%)f3BtQ*RO)vo}nF%v}+c4pP1a9!5vqVWy|>Lnv%5lEs4+Gg)5Ms?OPIt zpJrrVMyEYPX_@8|xzPu@KR=$Z?^JQ`)JR`Al)hMoHiFs*WXhzyl9t|GN!@eHx8>Gd zdgA9MVh|@=ssOjFxL|!6U z*O(L)8VtciTxZm|F<2B!R_lV5(c_EnC^dQw zNmQ|L%Z4^yVn?gnx@?82OwCOrh*=b_+9T3;!URrYTLBa`Cu4L5IT&@GJ1e|bUF_7V!7%Gu@)V!cxq1}EF>8@c^8qYO--kM;-Ll~$7 zZ-*$Styjdr%3Yn0&^2=Yi6R?^m3RC~eNhn^y%0Ewi02f!AUqNCV}_pVe1Y8LNto(< z6I;uoh=GOsZ#;RZ9|`s2iXRvVF%0Go+Ks*Zg;<&_znK!!HDz$ zya2nF6$d*mgm+wmcm4dCz`-4bgQTY0=k z`l|UH599F8Hj^6!B>Tirs1C>_Y0qLaLH3Kv9>C zTU<%EKeh(1oZB#bU1>XvoGw$puVY94`pr;2a@_4}&c}5%C zi!hK-?^+n%C#W|T(25tBt9Ly=HN5Tn^}%#k;uDg~&!Jdbk}bU%NZ1q9Byy_ue6}@m z@uV1y&$_x$132Zte#bQ8pnv9u_lfN#WO^or^zGZ3#(p1^_)uB?ZB=Z*4R+{NWwPvK z?Rm2zUktG2erflvRc@>-TrAMeY_yDa&|Xeho$dZ$6>qkg#w+hRS!2gtR;%GIP8Zvp zQZ=cZ^6J*9=-c_|s4g~t75MItm^#)R-!8Yz?rG>Pdb!*LoSXeo{u02brPb?O2(ZSA zZY;6HGd~qMNz=}unN&G97_455YGlZhT_oV<=eOfT3LaniM!K1AsR8S+Djiwhb){+IHn10@aenIYW4a@^s4%L{>f&0b52PtFGK}``NP3_k@f4ytGuxiOJ$L~PY4Cn2XB5o3L`+3JO8 zC&gv z)yeTJk2wLGQ*Ag?cD=FS#hho@Fm$Z$V9Y1%$k=TRBNetclki?)v# zyLjwzBzBKoowtDn3c=*{llE+>Vv|hnxIC47kHYT~v?^G*riLvjw3#FiRLfN-(9qL> zcB0s{4Wt9{Fl^`R4aY~rQ@#0EdTrRL&JQ%4MHk&ogD{8+K%7E7Uzsbr2^pF&0xcAA z8))26xm;SPxzX!s^gziecmS;DJ>sh`O&T_JIKLo>zZpAZVsQ9^^DpktI|X1^e`Z1j z!5Wx(6zUT(o5`47s3ILEs-;R@)U^?rk;IHwupNSbJ@Em4*@j5~&8`$ng+@8=c*~_B zakNzQMs0$q{!$I)Vr9;oumSNzu~w~k87%|(@!Q)|>mZJZimB4|BI8ye`Ue`ddUgH^ zdr7p*np&tHu?4TBr%E`0hKh5dbbK=J$*^^}R4Gn7`AQ9CJ9f1@6t^^`iKG-loUT^O z7Xb-J7|mC2W*`rYVmk;!#9@6tPBGFM-Xta`jPyFlh@}oe=IT)v zt!pMogbAlQ3k1YAR_j2XBI0bM*8?3%1mx^PMxF$A2FbSpGEUiZ^MD@G+(>VPPMfmJ zP)NuroG6@9-binPYF%QAYU2dCNqeE{Kuw#WCYaS41sGA#=|g23frEgZJ`5x5aJ5_< z%-8d}7A0KT=M;?e7KA}r9$^4!Jrt)gCQ^=9v6c0pz#zH5k+0N2kntSbfMh%lt25Hu zA%=+xGHQ(UaZrx8k(WCjTF>Kv4k+1_ubFgF|-8CqpP5}T1YB1U1Ae>s7pQ)CO^r^bm%{uKgXv+X-3`?TK z>A-vg)v8m(3D*|X>ow93f_g(zjC2nIp(vAj+)rc#D0v37%M)Xy&m^EKHPX4jYJ&V5 z{0z>Cd6upj14Iuw2BVOODUbR@ib2%g5{%zDCqK`NoecyTC|7HCQBd?8M2-v!p6Og5 z(V&w*>g$P}Sdxw@p6@*9WELf|ozI5ej6)Eiq7LAB;t)@QGbh~CQVq4pbT7c`cdAEg z0v>R3KWI8A+>G=tpc#I#DZofy0IZ7<6ni6mA$||+amNl5>6F43L2BQzQjKGOF;Eaj z2*oDVM5zaZd}^8qUC@Y<5C=*8$~%3)z#vM23J=k>E{gOe0A>WzDj{Hu^lq3!XsSyd zk$5RqGcd>`2viz_FOJ@2&>Hv@2*rpLr!Bo4#G+qX3YZTCWCu$%n7Efl^9u_gLyYvp zAa1xsh%EB;L2t9dyvBa0k;-}cJpkx=M3s>qgfWZ}Bh>%xzt6)>t5gjjHZptvU%9Yocn;`L9K!gDZm;4S|w7h0Dgp& zsfB#Ojb@BQ`36Sg2y{cZWP-#|SPglFOJ8v@4AYUWw>mZdpL3sqV9D=b6>_Ukru)dN^uN)Z>eHAE!qzOT7vx$lim+7S<$JJcH zZ3*iUME~+uS*`>L|GgUVs?Pliun?wG^ z*r`I*v5|lw>kK3PC|x_fxyA{{UI?-;tX2Zm!yHqpKn7kV%=Oy>SqMm>V!0Lc6$%Z| ziN!QNgL*bh-#{3rbWG5$03)Bt&E7$Za1mz+)TBiwXk0gmG19X@YocFJiR0z>IiwO{ z6IiYmoYF$Q3iHijWJ(gtx}*f)8Q-v&YXLPD<1KlF$PBhvU|Gv#EyUuyndg~U_Qq9E zhVo^Tk%sZLj!lNx7Pe3^(hEel4q+eQ{_6mHmXYc{4lEES@+D_{7Wy<_F56`?H9$;F z0IX5@;!72YbvB!bhz8EIRi|RRc@|OH+jHXkC{R|kTErg1xfjQ*zd1_?j}Tl$T@S=z z1Qv0R_6SzWBQPJwxZs7RKL$Hah-Zj+EYz2+)D{BW{x~#Wi0Hm@X|6I)ObCyM6=XXD z7(hP(MBl!Np*_9lop&CpdQGA)?XoUs=qCb|-PkD@6@|kBsV9MWaT7UHc+q|`&YEs< zSP!`>a9?(GkCQJ79opJIIZ!Q%sqiT<&}d8;;HLtaXsQROk$xJGiADQSeL5~lVEGEe zxsLOxk$whb^~MOqe6gZmo(V1SPiF%5v!Ih1rqI-BSX#iCSSK{se*18Ku~cmENXxnE>=$U`7f^=w5Lj^3MaPED64D@bTO(BmI2T zlOX~Y_aIeqf~`S2YfZchS#Jc{*u465dF%yYt5cp#bfQYptMI&#OnfxXh4P}NRgIhW zVqo}oX1`vapr-ZlEJpezxPl||2b)(cqDzWCeQBG+3P|!YnPdaqdef+#uYn}sjS-6S z%XRHR?af!vmv@Mf{y$+_qJ~ZoW29;Vx(UF| zkWUoDnt0uPm3(=r=B@<)i}N8U%68dEzl}&g_#Uh_W^iHoc5Jmkg(*JoK#({P=>pBG z>O(IPP|S=>TYB!jlf|^>;hE457)K-%(Go1irG>f3j27;8K0&F)?EiYB7^N`3}w!uxL zW=M+adw_lMd+53b-P1|m!t^gP-d(1Fa#IUsQIZmS9?(42%VFJ0wdwhVCI*XwHqTV~ z_u^!MnW)vlNWTwdB}Pzn7-Ie#fRj{85mdyC^!uTlC(=mYMyw=Ij#p!(KfuN!w4U)3 zT5@By@q&;gB0m+H-QEn_ik!Peo28{*o$+I}+(-G2Hk4h4Izgp!TmYS#}}VOISd z&~^;%W#!WKzJ$*Mt1)RRGy@9i3qB1I6+++*n)F2!%r4O}62$eF&}=OVjFylkX#Oul zC(((gKVLX9=TsY&;$E^lQC~t1{7Mr=sBS?^e-)=Qk;+-pNPi7UE8>R+28{IAp(3x| zJ6|orJmc;g-ig~V!HU?<-8WDbW16p#{-!S{H*V0J-$KhBUo?`{pppJI$j3uyM)B{~ z(E{HAV9h&uH0`_4y>#~inH_r1Mjky zM*R>n`;`mM0zU%!ip+!^X_J2JF8(NpyM1fusm4s5ME?YM%OwZVc4^aoit8?-Az)`x z_Wl{h(aBcO^XD+cgY1F*!norXfXDtxGI%H+_W&L)!npgIufZt&B~?wDrgvKCS7dfB zGm8OGjGOIh)pCOh?0a?XL^0ctX#+T(HV9W9b$brD?$?khs5=J6f|33WWNOy!1m!74 zzlC=3p+_Qq2aD^`szv1g`X} zHiIRH(#J^uiR}>u#{Hk0%Fs<5QsytvRoJCxMdDKpMd+&o4(ax@V;l7&w^@ zvZkd6CP_U9M z+?{bVCqrwl0DZ$Q59jAgWoXR~R2@+n5@a|9@DUxcYtYD?3UtBweowwJXLCrWp+yfg z1K_P%wKCkOuzouosKfR+%G$)&D z5N(9O9G=m72&YjNMe)mU;ww42v9D{LgyS9#NVA0_?&?a;N9kHOkyg0y zb~kP)*WhmZ;XEDzgI|;Rqr~=~xf)tLzL3AJVbenyM&=Q0e-$?sXdJYKu)ni3QUyJ_ zsB1c)vsGv^v_?g_AF`|JH=L9)!B_i1-2)GR@Zi@b61E-t}$5t(Y`Bl*@5w~soccSWNsuo2E#$mVy-S+46$7OqZ0shbYgO7Y6{ad zJjlh;CdT&U_8;gQ$xdGdNgcoR6vG_>o(81v8yNv8W7FdYCZ{^@hyS4WG44=yY;gP# zpxQmPH#-bm*V#8Rjn#mb(={+XIf7!aZ(=GpGCptx#-j!@IzHGpk{itSjf}&{Tz_C{ zD95W6H4^AkeWMd2NC@&Z-oI~XV0sGo2oRgSeUp6y(?gR;r@pbP+z4IkxEgoR`$i`A z_Vo`Uk3M4Z!ekd5192^?RjuK?|WU=aXdxx&< z3q~3feVBg?mn`Fx14Fr~iM|2ciXR)#O#;fG{Erl>^E)f0opdd}b1X|m*{L{2fd^8U zb9@?leUOznRa(M54h03HP;g>AI|e0Akd+{#6vaKyn;RY(@0-T0bX5sre!vj`#m0w+ zr-q13+0&n!p6nZg7ETUfttU(IWVWK+IEtav@?5RKhie<68AVf**bV7Vf(&`Y;J0LG7J1WGBmbldM~msaCYR<5=_W2 zKXvw;aS%C>m@SF&LJ!eS=ZSG{9a)SX1o?^IEV8S9xKzV4B;hTBhQv$r`Rka>f&4xD zu#)u^`)IRd+1j%&dj=i#l~Q%5n*?BVDBRY7FwEi>p`6XGlT(;-(<-P(cpWb>qW@bQrkhCFH zgDKSZw)oue>atQYM5?p1HI(vQHL@en31o$^T$+b8AZiZlkFvHw%6Z`xT-`6PqO({7 z_|b(1htXMc3czo3>|`kIsc^iJP9~HT8MjF?5-u?Eoa{0>gm(rM?SvUa*B&M-CK+G; zsgD4P)Yvrmpf(HX+U3iv)jI`~I!|jWC(s9nPG1G)!bkSViV&4x_i9qfpfB3k=~8h> za{@*+P@M~QpZEoHMl>hTjP&f=M|zeFdb-j9CVj>lVlPW=US_fGCTPRtR-o81mC7h^ zWY1a#L;#cXwbVcYWU-=+7(Y^-!&Ss!X_hIFuy)T$5~3JCmPazia_(=!17lT()0zB? z;IDD`VdVHPQvAvarqbf{Hz|IlTb%q{M{#ac#5rFWf;(DtQuYi`^SeuwT#16mq6Mp} zh_jd@Bhr8$RP%mqvmyU)O-&;kQYr!|mN z1-A4u7N5x7 z8t6U_&d4PY!!RAeyjJkns%sBkDZaoro_+wroY8g*01sffQD5n_7Z~Nx?rSSKXVEY~ zU)~tjTQxF@v-`+gM%dDSeBuIKd;hBBnY2NYBc4)l;m10p*_8z#!||`OC%y zh*Ra8$UB#b7_f^|1*SPpg(1ooRvQr(D5=>u_Mc%C_$X`Y7Ly2HHUlN8xT!4K$M!bL zWuhyrqSJ^>PvwF@al#`>n~0X1ufY1WR&%ZFy7tgjRg0iE=VY+EduUq|m;v`+_Eri1 zCUb#^6#W*rOLXnpRiQOJEEN|`cUW*WG+(Mr=8GjfV66}1cm5dv?r;`$?abvsOXr$e z1M+p>@bEsOeUj-F&DOoE?{gR}2|j5sZj9%=72tfIb@|P;X6f1s*F@M&AWlcv-#taGzvP4 zMI2dO*DsT-QQN83s8melf~XL6i{71b$L{I|;4;yp%2yBtN;6nSQVFVS&s`nOqU~#e-PSv?1%g0H+j|UMY8Uom4DztxLryVt1FZl-gNt2;ok`K8s|~4U)7(JA z_yAXKe7!}47;3eAJrcN5tZTQgkTFr;mRmbQH*=Mp&o<*hacU20ud5*zc?G(5-f~fb zp~8-Ox9Dn)AB_H5ozE=iE*IAgxzJ7!bIm?Be^F#t{#-y7`+?eQW}R|nv{>B zup8-Q7@JY1!jWS`gVku#s_D=;XPJ0YB_>E!Vp`c3q&h#- zqiauJ6QS+d>}exQc9@u-9KMarY>u(IU8}R-DUmo}Q_H!Dsr)12u;o&00l1!20Lwpe zy~N-o%YFKyF@W6ACf9_gA<8*BsgBW^$^f*yNXmb0k=V`*0 za5lnAjtOo+W}HM63UP=NXB5cv)fF<4dhMi64ICt0-3lzkRm|=)hC!XE)$@3}snf=N zM`Brt%O|8+@j5Kqtuhz-D^=LV0uZTHiPMAH(>>Bu*X~*i68W!Yv?H+|Aay6i_vX*~WyAxS3!S^uhQ4FA`kA!J!mS;6Cwu>3X|J&A98Dh|?=;D_j{2R!&3&UIHV|;3|y2Z(0*(<#)|irO=b@8|mJqr~<}p z#Xd@`qzCC?GAd`9n#$zmusBJEImi_jk>xdOLJcBZR!k~!$%Yc7yN2I*qPk^%en_ji zoy4#M!$**U+}%SDDg)K|86XiYtFpU7tQwX#evO`1Y&0h zaYd_ZlP$VHZXA_4w%x5*?5YaU#cn8)Ja< z8C29!O{8ost|}l;Nccr=VHE$PCr|qU_|cZGjg!O^u+%@HsmMm`RbzWP2aVAf*j<+ zp&8mnH`?vK-geHeALN2Oq;z)=J;O;P;gna7rE|?uEXFhLPHA~c-Bq^yCGq$>O=M|a zW?reanvM{nz~w@~5*>;l*no@i;}7H-ZrS(!)M>IR(8ltakk%ZwvMOKrb`pkKvs}soE_v z^Q$rxGlJwOSxClm?r)1qjT-S(qHE7ut5sRE=ZV%U{V1#&4$%cC?!)e7YfkB&X;>wk z;oT+@lRMsKw^w^0P;n&Gy)56lnUP}*o5<5v$=}YFLsoxVH{&K4<00m?j$$^jaz% z)1C;D;Xq}UGjl6Nsx4_qYwNas%QeL)j{p(orYX-PhQSr9I~P}z9jS1SRijooOr9D@&$Q55`bQ^d)PZHAE){{|vOkgJeEP*(iPdtI zU%JoansG>oDEj>X>TX_?lDR-V8S#ydE>>E%oE}V6x|(aCF1P-PF%kv3`@uEn4IP%DQM28JfCohv9e&*Gpch;I9*nL%<^k)ez#B8|^{BM=AT(d=T=dd2|F94((K`JmMFq*N8><9*wtk^bYtw zaZ6FW7@}*9)i&J!-iNy7yju0SxFAUPKB5QjIExt}mgUN7Tj6>7M%@I=s5(OsfF+h} z98-(U^?meU@eS%>+V=V92PO-iQHqc=O6Q|7zfwG(fA`YwUao$)Er|9AMMc=8y-(8V z+6Vr%+Ne;?Lf+Ebt+<3OE#X?;{geUvs(V>5`vB32^dh+-b3Xsk>(MgZ3fFT( zGOjsl{M5!f{%>@bPeNKHUlTUuLR*&P_H6o!qOQH@AJMyKD_}B_{wk(v6pL)#)GDGwmKK|HPVD^W3L6*Ema7oNR*0(tRRK>PgZA z5~kZZ$F@BWd(OaO-hKTqC!ttI#1E0}8N!SO&o_5XkqgPVUc`x4M?pn^hdTwXSu|~S!)bI_#8c4s@r0^lKOUTAvFemr0K# z(v``HM0(1fD$@0J^3BVj+vK%5hpWCVMqCG}4nj&EZBm?gZ}o5!aootacI6%kny3S$ zFC(^mv!&(~_%uP|D=J^Mys2~)j_?BU`TQ|=mA7fWRLK@?e5{+j@4+6COV(&JgsfAz z1qi2?uAP)?#Vndd7rlI=`V=;aH{~4lA}zOzw9jEOtfieSd&7eq$BW@LD)Ol~C@2R3 zQZCn4%ZZ-ipK6})&zhXwX_YE6ezb@w%bn9!cbIy(jg#MI*8DsIw6cw6O3xOAL4=k&DA}pU9r_dL)4fnVidyx$ zTu6h7xF2TZBCFp+c{G$9wu_!zvFoc9ewLK3K*MrTZ=3EbDomD~D|heN^x_H~Use98 zIH(y?7M;qF15ab9emkgzY|Mq@1WK^a^v2&x(6!I@DBPU74=Su^Li)#dS2soJwv}#L<9Z?Is@YlOmuA<$8a$9rqx;OJlq$y?ZN{v+kP~uE`Xf5bn zexDSLT`DU!)2)|*N1{}NI>fb(4ljLIMNNR0LDORhpr@~i)#-~oR`BpWLsDgH&NZa z!rp2E^)KD8*l9`!X8xw=+V)U-a-wZ!hOg$m?|myJXA{N;`8W)%XA4WA7sov)>e|az zh=T7SAo<#S#a*B}Wah6MS8GUlc5-NIPTpAVGz)+qU*ZQJQDY*PaHgv;)07WY9bA0N zt@Z7gpj+q!9uFLBoth^0WS0zR4ko5cPsD~`9(t_pgj|cJP-o5if^8N#rmO4@(gue| z`Rd&g79Co5Gsvy7&S+z9Y?G(R(UCb{96xd*shEg3PZVTx-|%fURW9dLO*AjSZqKPI zJt>d~v#EH2l9?W^TcZo%;ZI)D!(h^FF=;V;Dxp%eVXbp=u)!g1I=MMZK#6F5wMeeI z$R2_QBzJ@$*HrV4usr_9omX+^QTkLgpm$0rdcmrL)EmIpI0|({-kE0-ujQS_gCWES z14I_2;;Ex0uy1nSPsFK12>fmHl4XM;Wi-gM(JAJ z2Jt?P#B?5M8oS*g+jr3qM}sYD#|OJS;LDni!`3hYwc z=*J?_h4cz{Q{2~|l>=KY-WUXC`jYO6dn*D4T?AdKNctq5Yii6k9@EtNUR^(Z4WzkS zkLMNmHgfazRH?P4#Vv&AdX|x!c<*ZM(OVP{T$EXG&?AXGTyxDWGfXicL+_ zwF_578JzaqrniNQmsBvCYhGF?tcEh`@inG|wYU?3d~srM_=58<7W}wU3y_NCc&&pJ zMLJWc?EXHST-T2^QCzVD7gm{qe)8%z9x&mD2a19R-3B=5!Q$u*$f{>gR*D#c(K zgOnC%XMnPt?F~+vSq#i5dK_^U@#2_N8}K(!VP}xGQDLBMZl;2F!dl7|15YD$9-rK>9$rN{$AxWVvG^thvR3YlOQo7Y>+OpR?>pAf)55 za*=xViW=P3f%z;yR~M|4`tI>yG`?Va4)5o}VntR^?L_3ID?*;ScgW(IR`!rnfAyHR zUT+oaStMzbh`nqTR3ki)3kAy?i5NE1!xy`aN4hV}v$S5-foUaOJdf2QlG}5tI_NQN z+>KvlZxHoA%N*fM;yax&`c^Xe-GN)8>0DD~{MM3)I7wMMsX^TM@s3H7vfiJ-7WVR2 z9Mx+Uarc?L_UwhYAs1RvQ}yI@(TU3H$<@LpaHL=W96O^hxWd+Wq3mw1lR+o!Fp6%o zIBn&=u}FRNuz#dzm+Sc}`H!o3U;7}D8_Mq8cIKX|-HsQx`UBs=wX~3X2;}{O6ME#FL>{J1<^m-;d&C?D9RX4OUO~27%{NN1$mg#Ruqij5 zHAFpGwlh4UPPN2Kx%(&4o(cf#IWCRg^aQRjEMjUCoRZM0L#V zm-xLQ!;M zWEGE!WYw2(L>29MJ8ubwdGnLIa0%2W6xKjMp)C33? zr|&)v(jA8cUGC163WxG|BYth%9Wv+Qv`SEOs!owhMNi$tp##fA`kEX%ue+$P?hRz= zTG-FCM7<=ZGVw*#HVe^bBPUrYlNQILR)+aG-VwppP@jJ8_ew9&X4#bwN;q`-G{$zM zsl!F~ler9Z>x+>~9<&ru9_WjV;*t6vu5@db0BGm%pm&y+Wg=D>@u+7@_faYZ($_xM zVO$}AuWAoC*fh|lYhef~_7TDxq)>9g(WXjHpv%1PxKign5c%U3_9KJvFWZs4g|3fr zJBYEu+T7f_)-SvUEA+kaD(IbZBT=cSt^BM!7XOzeKWUq5bS?XERqQJV8l~u>uzJ$D zChBf*V^F6hkIX{!&sMtj;V}MXDetz@ZbfJRoG(hMnp>Uy(go?q-Z+kx$qR8c}mp=QI`7yRSPZ9W|P)N4`HVuVb}*U?X7`kx@=YLGt564=AZe&)K)!0PEYzT7K{AT?2RT?j-Ir= zW)+8MRgm2qY76Lj*s18+<*NmCY7+@Un?$T*?%}lwUVqD%5@g~o2+F%jDBVAmmg0uC z5Dd49c+oFY?^a%&)85nt;n{pCba+i|( z*ybO}66EV%U6;ECTMfaK5){B zuDu2?7azA-+j9!`@HkQ5$MidrlNdD?%66~>G~_KSy~!>Cxr)A&V(Fgym}gnUxRDQH z8GeeHr%fzQ$+bh+Q~6OGSsv=p`cR0A{$+ToS2VMmx$KX7j$slrrTC({>uI_6FlF1b zv-m_NwjE(Ve{F1itX@)$YERRHi)Z&LUn!FF!L=;3_w@EEp?dy+uV~r}iPB23R%^z^ zh(E;Lo%WH<=@19tuYsR!(O0QG=fLLRJYrrx#e znR-_{GxaX7BZ!b`e5I}_JqtnUCfEbE5|pcL?ou#LY)#^M#?@8l^8^t>HQXv0WY-Zh zg7z-SS88H!W4*GRQLxN)b!*;l;yjf%ttMO*t40;NZPv0YuoV*M65{!70GGexi}(`m z60ppiQ*A7WIe>gY-?CVo1E^y*e<^WbQN*-zWZfb)RGzy>6-71NtvHLAaL}h$o!p3P z=`*Q)HBb0}=(i8&7fV%#EZgf%v5FHQp&*2d@DTLbg^v5+s@ zb-eGjqcsR-$;HJr>b|Tf+2oBMaUUo5wu(OYr-n|Yrc5> zI+P}zdBjfsE*h&I8dqe1_z78W>oT5*{!)D&9ZuEP4DSm^2ZHYEjZdkeubU2H77@z-l6w6>0{Zbd-#>Eui80ywZhSu&NX4V$rIx{ z*WXHBthzr!G2EP!;X@zNYNGWxd9Zk;huoA;!M4vjXY}iu-XEYZ#mqZQx!bD`t&X&9 z$YNFbsipauYFV1+K+Sf1`ND^Mfl28|jbu~Y0QLfd<#PkzPq8vmIs}p6Z{V>lJD;54 zRE^Wo7{Vje!&urgFg=(oA{9 zFLpad{%Sf0W>jjrPZlhod`5M~K(QU5aEG-Y*p zE@9gBL9caqoj;<*%dTM{U6%}^VZwPXa_cT#?_BATMc(KY$SPiatJO9j4MU`WZq_Sv zZDgKW$QL|0mDI=j=_&GE#M=nch#M=FZhQT*AhQreP;n+Mv_07IKD-ru+}uX5<6zpO z{N8>gKhH+yMXg6pxXfHvv5#UFB7(W>w7ikPV*WhjkWMa$!3HMx#G4y5`n1-Fv3F`} zfsz|@;SfpNVR2om;5T6V$yKs<2xV5n@vG%zBtjwB6S0EZ4T(ZnA9yKYGXG%i()yt7 zlxEqiwbJt#a@n^c6Pk;X`&O5IYys3LyGY^k#wY#Jz^uW1NQUK9L`mi)iu*XU5TBoT zK<0&iwqV2yt-;BKlGXDVwP-UrA}yTk(bb#2aSe1>e;tD*ho1kG6S!Kb&@Aw)R!3&9 z%dhMBp-+M8qK4k$6ps_C+uAmI zE_K|C)miGuREm&?8DY}zH3S>O;`d~y2fZBuza<^@Wj_q<%36-J$&Uv?BZiE z?FlJGUdycUa*6}Pl8S&*_H`Avd`wgUGT&1j3OoL^lAny*J&^;|`Gp23>@7?Q&S+M1Nmz`ZM+}3vQ%KW#)5Zy zh`u+dU_3DCi6W2W31ou(?>BcrgW0SHr#8RGQ4uK=SuUjQk) zxlyy}0dw5Z_qwi5I35Jx`|RalO6T)QKZJ}ABJID6SJ))O+7#&g5c^r+TvT zZRn69*UE3Ih{FQD;y5m-eyVr{Pa+i3a~z~tLSM4->Zt_Z(*$xuuofc0t&{knz1BqW zsyV}@I^C}sYcY1@j=cPkT#-xOPMFLWOO0AUDG-%*_v{!o~|LPC+`*m%EsyiqTg$avV83$HT*D0!cV<>~B}VC&ZkS|i0k?RH;PZK@k^tr^NJSeTeuV}DyUo}R(c0@ywaoWFf|TOOM0%KO=q>(qd~do^oiE`o z)%0rhIv+fNb2ob{d23EyHR(U}&xbvWkDLz`=g{BlrZw^2-R3(*ZD$N3-fDGC*%wIA z(&`w5EQl&ylgV%qH?ZAmTi(F-V943OxsRyhcoJW&5WhL40_#1wkEwsT-t(c}vj2R! z+wMnSDbbVCcRA&F!6+_BP*6QeBEy(RE*7l&T9PUjvutLuDKNgsP2_2l0STjjvVW^LYoBup!}L*3(9BRCp73a zZM4Y3N_^0sCENMW{18Cr8GjsZyncTFzA6UYH_p(k5m>W_rHUMbZSa zbYc4j`V@VjnWOG|pm|G9N(4?UiUxCuQ#&$UB?ksp{1l{sAy!=S`v6T@xpy3a2Hgo8 z&k841D}5qZ?PO0>;JQ=x)R|xr(^bSw*B-G79Hh2wMpk^r7HZ|4YnCt?537{%QHcs} z0|>V^9+Wa{uZX>DHlFQOy}`9MGrH?MGJptu1qLl5tXD@{9k$9Uv~d@Z>&2VgXd#!3 zI<5xziTV7ovBvyC;B#^yDpjft9jg;-6V9VGD$++pA&Zyy?!0*srvA9H!qDxP{(OlR zj3oky_!t&KC6BM;=-Q)Kx>wh>cp_cgWa7S>jP*>7ph19fGk4q*hhm3%2cQ&0o1M1= z(#TvSNmMFjeA&sO+V~0=KA{ANu@~JD9p*Kdthu?}O4nZg4gvgg z+uiICQxliTUl4D`iLm1KoC@4le(Xr3xYk4Y<%H&{+MpB%EP88OPEq;xrZkE&HN6&= zMFqLhEfl<%x-VL3!Q+}+=EeSao(e+MakGd8mfWth9Ks`TcLAnQMt%8C$hAO@BR^*6 z9Z>Ve(39az)lHW>lwSt&;lNd{jie<+gJcMw%+iTDu28m{+6>eE;Rm8o$~pw^T)MjA zJ92F_XA?i1ne8Dq>j&Nc=U)jw-hgK{Qy(5t3RJ_6tQV{Ds42l5M96MBQqZ zuX2agA%ZG=|2~Ol*}Qs9lt-{*Z>|P&TuzD1$?SNViZx#S0IVaM;ZHbr(~(5^#p(=Mu)jrjIf*c8TLas%vJH%&aV0})UzdU5i;vJ2C79wnzc89V z)~oAsHSu4`Fy7WhbJD8TN1`xS@SKuLE2Wfjmkz|CpSzu%D0r(?Jf-DF50BJ@V4^xP z7lyca^Fj0|)zk;@VQ9zRQ!N+m3U_;_YhU;$yr0`5wNhK4XZ8BZrMZgI%l=h(tA;6|V(x;42<1aY+VK)6a=p)l&#wWo2|^!*#_TMv)Ys(;^+vu-KgY!e3gQZ%b3d^RU`eED!tq=4Zyu@7ZE0@t`CoaUS%Y_tA(>UUaghdT4<5C~% z98!{<*Q5%TN^z7G!uxj3=&(i;-!wdqH^mpZEx;*#h3gtnA-(Ap>0vK9ns|S!RB2T4 zIBt@EeR`zqNUW;(8vsyq9E1u4K4wIVXZ#w6>L91aclt421* z*XP2}plA{(8+lh$7yO-z_3ZNM{nm}n<^r-k5 z0>jP6CO2X`owVmlwYu%Nvsxf}9T(8~q8r)WLs@%$E-V%08uf(lfhh2($*6#KE{tB0N>!E~-#>e@(KKBwD>A=2KeHD;g^-o(Tl zF#b^-NzC&NO@;x$5>V%1C9vUfksrTK&b7v$pIbR7M2nYuk=)2Q3%1Uzlxs9!ivz8 z5H21qRZ8=XdD78goa0TG7bm@|C{EJl#fMuIAC?u*A5$amNtYLwBkxI<7ndXNNk1WE zL{th6Il52KJ27m`_;RQ~5EPXlvaPTfZV6)8GlZvtLSl2+fFPn%sB6I@IPqsa)7?~1 zT!g~hCxe-lpf@Z9H7El`iXeI<$Cl;{Tt4)KfeoLcK#nE3+QLry*Kyz_Le;}{9fccah8X#Uab{kXvUaUm_;>&9H{ zO@1(b#9ff^6}_}j#;XCBqhmLh8V4%1e7#hgE!oA9Qsu~y}f`8GD?zVyt?ah{&4Hk^XZHqJSv&&9l!vDG*MgKZd`jKOi1 zvDw&SMgA7~yJbWS!;0J&x!;QXKJo`E^1jG_!_wWYgudEqWFBc{uF2$#%%kvc-pI^Y znL?%rx?{*H&B)kRW;QctS(juE>)Poqv`KrG_&dQZa&}K;=vcvKe%MZPGm6+O{3Ew5 zV3p<&+5w`Ok`?(t<Xt4)Qq}iEaI=n8IOm-E`iH08;Z9O5#&=W_F(F93bZw_1vwNun+QG>ejYlnAJFnehHBoLOa9`$mnH#L=HtaN6qdZ-u&g5zN^R4KK z(UU;=lx_2r@Pr?2J4NO+MBxV_-*T<$WM*Cj*UIy*ht| zy~LR>dM%99=sX6Ffj&c3Rz5t8je`ZG#|uDuL>G-Sb?prK(F9TmZ-?;89u4(mUYL22 z6@465cAV-AhZTJyV)Ycv*nMDn_?!n@#=6Xlb?sCljbTcFsjsnsRI`gil|r?M7es|b zHZ~gTaa_K{irx@?KB$9IzB!7_D}%9ljp*UK?@W%MR1`WlRT0|=_pIMOq9QB0wXkAaW819Q39%F9(;HB&zf{AyzA{I>W)Kp@ zPQ{k?#J1_$$t}+ZS+Sj%QAQG|VzgBB0^fxgov%2FV>=6WrC1_2@x28v#<3|At5}fS zDjw%P)p@bq$hWdt$y3Z*)k8r?hz+7BJ6C!}s}6Wp@stwDq$j*ndd{2Lp^UsJJZ zD|RS$rF@u@;f(|5WmYT~JJE{G0N=+-stJ%Btle7zAvEXY=h?IqyDsKfu_wfysA~_F zNy-My@(_tm{sF?2J%@`lqTz8MPXnHhJrmeH_Pp2)R_sRPgqOu$ZpB`S39pO2-ip0B z_7*w&jiRHUKBr*C-i||0HWiaM-7qUB+q9*4mR7@UN`Y3Avcc@|C?GL@$rI_nf>xXh+H%=IDEnR7qcpO%l2UOhBw!fxsmP?VMtVGk0Utffe70pi59E>g0+4Lxi_Mo1N1L+q4wm_H?ELMDV=tC@ z6LJd9>LxBk%(o!#$y7A%@Y3_NxMkjK{+E212Bn+%PMq{)?1-{E@ANIg=$f-@miZp+ zPZ>L6W_BUnGT)1niVW=jM!r%n%`R~qZZkgsijz#R9Cqy5;cB@^6e08D<|i!kGv*zZ z`6V35UpMcx%)4+EA)^sp)%aJ1=G|DL#X5-U1)|73SVX2L(IQ9zk^i@tU#20@{Mg~- zxinrVuE$}Cvs*6dTD~lA#SNtVrEP$aKFV&z-@n=Corj~iR6@Ov;MOOT!nD5^(;dP*X#Zj8Y--r@Yw%B2=tgZNef<%qK z4PtZpkJ7j*-nURy2rFQKR^-213yrBM}>+S`JTJ}qmzb)2qUsLn5OTPa`Ngt~}? zF0eW+>r_zwtRCwO)heUeqoQS)z>wsllW92NXfWligrUQkXJy#**PzSuN{LI5l3Pux_-tx^G!G<622ZN7>bMXkBd4 zvfc#~j)k^6>o%CIt=o}JWwcdZuC=U>BG27{N`}+`;J-X+Szm?;%R<|r^-ZM0Lsmcq zPK56nWy|^jw&q6&?eL2Yw~?VK9QVjwdFp#6d*yN(}Oe z87nbIGs9;I^Of=Qi1h+1QB4f!+NN+MtV9j+8S9MozFkqe!;M(HLDw`ZaTGzwW+VT8 zx0P7J>K~24V=;I<22aG`$rwBpgQsKgObnil!SfO~Scw4~0{uxr$w^kVA%QjDYR!{5-5Vppr6uURP$4 zl%5Hc%RO3Tq*?=+S~z0YX$9&Y$W|bE0Ube6o}*=C!jD}6ShO8HV{6mQYMK&b{A`|{ ztr#xn$;EkP31Ua1hl$mA1Wq2SdukBoH{AY#7>c$!`*@=cD-L4+r_j|z@6RuRI#Zsj z0$C2v%NN9++``$qTI@|!7KRqd6?U2W5q@;Py}{wR;~`%;@Cs^_63V?{_h~wrNuXLS z9|Co}den6Yt&&vmqYuqn9Lsb)*WlVmsWFOr%D6+{a54=n(-#TRcDqUW{6tE;}lWVek(^^>4dgbj6$=z}j zg0w~6A-=~=vfrs5t$95#$@0194CKoU_t=6W&%hqn(VZku-!X2PllNqwQ=ohy zHFgIL^rBkX?iGFWLk5pNTN4IPHr3G*ZeO${^2op-n@JSJflLCBOpEZJgA>_hOfXog zEr5_5%`YsFgTnITY{cN#lAT$_ybEP5aV=r$19vT_Kg@(@Zr$Sw3cjgS8s&z97=GKi z9DB6g^E|SBS#IBNZK-c5jKkitluLl7$1LSsD)H7LU)U@BA;=9*VH<5+!xDurUPj@m z!=>4JOL^aSFiYt#ono>>S6=mS<_KJoX(T_xGRgXS?^L#Bj)N_8jIbOE>r!yG>y@ur z#k)Z*8OD9wM`V?4L{fK7fi1lzMp)K{V9Po~OEuLgKg;DW$aGPu^1G-1z(p6Zj*zX8 z6|N{oqg&mb(AmzL5EMGf7 zaXR+qlb%%K8~E}`lxe=$C+s|h>Ue0#fa;Y~oB^Z@McH2FM84#V&*B-la@j7Evp5h_ z6UZngFkcB#Ky}PVWRj}nRi|RRu%z0UJty+WI8*ef$f?-=t=0WqAjOY9SH-i*7=$sX z$k*P90Yz83YEQ4c9Zh};6~?q?4~X)^KkZBd3e5%G)AXKq-g&rwZ<;)0?BzBJw09MwB`rd| z0m^xo(ExXT z)%7k%E$nO5tKwj3OVyLu1Iew7IdTDz5J}OEq=-^Od5oq{-$h zb{dbpT*i;(@=}V0DBG%}OVT{C6!uJI|Cc2RetY@k-?rn7dFIu*+qp?I;N}Tt+RWLif+5!l*jG;Lu}~G^31?{u?z^ zno4B_aYshGeAKQVt`_C2G=}G7%BAalnPu{T&2K_yRUfKwNrqR`n6GceH0$yyX6#km zvk`ztOE?E7TQ#Z&MXoO>?(|D?+3!C-M#r49F4p zu4w10MbK*8gDlefK|#dXF%RidiQOA)2O{4%pb({7o7`4O42kmDRr0)v9Fg#Moa94` z{z2J@Bdb?+RDx>YbO1_sfqk#{wR84(s4@qGmga70*;NDeFA4ZCmGPngN<h`+? z#iLXCT3xx&X;RQBaQV#|&#O#)H?>wRH>mn{Q7cuFsMjD}DZ$a=Q@8PnR$0NI51oMA zl^1MYsS1vyEtJuiPa7nY%nq%7m|JhH(M(jnE>cg~MN^&W$x;;OAxG_Id$(PD%btRyqwPC6e3miPgtuTb= zk8qdl6a$%-uzxbBf3-4z1qHYK8ah3xtDaRT^LQ9SdhXC;di8RgY$n)0>C=*=SD+{T z)3CfXjNMDNYBk2>nOe8mKiRB+$RJLl+-<4r(O&fGRq}QWmVo*3w_<~I4~Y8(e&1By z5ONb2O_UzFqPlY?)=QrLR`>vE%vapQBCVR`Rb6EobYNSV&->ETVvTwo7Ln8h(Q;Rw z&l_rfXR`&$ANBA-^~{}oT3*Umb2)XY>`sF169^h6*LLw_Agx$+@QL-I9L#XJw1Dew z`QmgK#ub^@6&D+DiOsYxwQcr>-Ec#SiD_OXVen5y|sFlbl{+ zVC)){^AN6G_v9OMb}PkofIO#Gs#Pn)jS3rYGEQR0=2|t@&*f5E7|y1xR_f^8Wv)_n zTC6*eGsc|~pRilHVNnmO{;E^7#mJW`sPsJPFj`rd!Yf0MW#tF=+VbzC)@LLSM70I^ zK&4byER^{%6m{>Bu4!Rhs1jRl1s@8anxfRAmma=xM%mB4$4U7fIn z@Mh{@i$$o%mN%Z2%f*8>>OQb!w2#$28~oB8+9Rl+yOKki&-c2OLdyHAl^*I3E@)+h z#MA#xmNMCS;%VZ~RGaX6cfFwQlHjsSmXH47<_I}a=o*$>|52L`+PqLh zvmvSTMQBl}pqQQe&|ulf^GjYb?w@u*I*VK~U;$wu70}E0a#} zsp9c`gZTR%pVhVXJ^Q?m5nwVtmgI4#4C>e%J_oW1-<)ZR#}^*lNQb(2-YL!)qt+O& z*hjM!y41(_5WFs|sR;AEhrptAZJp1v^f>Ac2rN&$N7JuOJ!gzG=Yq0l^@PQr5&EQ% zu5IzY3`&H}-_IXrHb{p%d6+KAk=I&PsQ=G>qvNXQUQv;D^qjz{2qMdX2qR951tNXKAX`Tgq{wo4Gvp8YlV`umV65a;I@2x%Z zq9zn_pBsS>#?#4sxr{m%lYvMuDU28t_)aVj@>cb;?YsJp!)qyH(wXd#?ZO5PIaE~%V~<|sl*C!clfh* zXI$M+n6zKUU?%}LNuN5Sy?G*JQRhHX^ebL45A!dz8~y#)U=Z={^GP2O?~`1f+*^9C z&PwvD9#U^|{(^m4$m7)<`qWQ2w=aJP>{NAH=p$MewqF8c#gjl=iTnzGm%{5~gZMcH zq67C9M{up+ECqzEr(kNq!3nmWFC2k&3X0J#`xpw_uIZ~LhG0qyd1k?Y#mpFamFl!G zs9_H?pmehfpxKZsp6(>KtEc%L2QPq-nGwJx@GV91P(g_aOd=@Lo?6&!b508ceUsB} z^6VOWl`u+vk*7n*dtc=5Abe{lcka~Unx>thMbU={{4(+R2ThN>AAWa4ZiDX+L_P?= zw?=M&p7c+__ooBjpYeR(0pI@<`2JtdH`e!A z&-drx`}2YNzu@`)B7A=-0Po9z@2>>DzZ&@dTHyQZkvj<;zQO)}ll}b``}=M7_dD$G zciG?XvA=h*zu%Aifc*VoGe}`}_0AFUa3}*xz5WzrSLC?`3~~ z&Hny|{r#;6@85OY3gPb~e}I@jLd;H0hku&ZedeuN>>VV_pCF8o$P*)fhR~uJB7cee zRnv46UkD*=abM(q2IP5=zYG4J{Z7s7{(u(0s`G^RYSz?MUB|swOHAFOB|oI4-m9f= z(K2rzd%w2+s&j7DHr!62o~-TA)@hxj&P`f3gb&uXYY)**fWJGmOSDt8-2{h|v`+XP zGc*H~8LY|ZFz_$_>VoEV7~K@>83W*%_<#w+?P{$9{%KnLo!Z7TZ_zg0JQBN^RBdQc zZ8NJnNr3i2OurV>21u2gpjZq5Yetmhj~g+=gkr3sy#|zy8F9m672OOlBJlS@sAbFL z5Ny4u>&)%9Xxk2*x&63D-J)$j1aZevGF;Mq=J6zDV;3fD?S8wU{0=}u)Aj-_vM><$ zX&LPbZL2n-ou-XyXK7WsIN2DGt?gsDcG#z5p}@&ID*?*oq*%<6i4`UQKTI;1qe(7a~#k%Xa}Lw4iU62 zpnwEg#~T}f%XRWALD0fqNrF~H+e{Gb0%SI}gUkt1WUdBaj{syI3CLUn$mAr*Y-$4; z6Cc81$n0j^V_;97_|%&N1LPNiQy`0|#$a7x;sZMj&=mj}he+(q?I%6s7VV@%?pQNP z@q3})e=T?&G74}p(X%mQJ8*pm0el<-Tmi6{f7{ug)DmZI??l*d)RJdzKl{C!A!?#* zzK)>qI|zRdEdNK~t3P>a+$L(=CTiSf91n4HbaiPRNt4ulLd&{u(M}Gn`>zoG4eGuR z>b}2a-6t9+HPwA`8+Gppt6T5Ty7W#hsdsBz^++3a@9@z9t6L1@~a1ab?7EOEkyeGEaU9|N8NkC zM^SB$<7Z~e)Ibu_mL&90Qb-JtkWdnO?==+DHhp)KpopL-2!f)5T~x#_c0nYp22l~g z_UyfbioN&B@7z0gZ)PXEN$~l;|Ihz@c+N1h%su^{bMCq4vT>@>ND->Vn8(Rzf)qdW zZ5fMVck(X~aq_PaiPtVC|4zqDHU2FhGe*i_W5!4W$(ZymQ_2Dxj((DqO-CQp9+v$q zSQZ0xE*3kC!*WNg()^QSW zoUR=nC!dWoti5s4tmE{+ae8%loZ)Po5$%nWZXKsTj+5HqaYnLn3Zz0d&Uq;9WKQcF zDf=PAm?)j-8oY+$-^~1n)RP^pSj#$Ut5Htf64+6b-Fhms(fu!PG=v_S2Gz0XN zMlneGN~5WU>!{&lh-Jh1HC7snR+ab{HfbEbbs%)(r3nL6>iL z*%7{62L&(*H8V5LLBPy%*%8i@@}vamJ`0=$5K&wRF~y@GrFbl46py2DPDI@C+Z@g; zX)?1!S<)0XQ)Nk0rD+If1oWn`+i|W-qOdz417V*o%|Q1^C1;IM*k?;~4A_NkNLTXx zCF%P|3i58x~Ct4XqP?KnI7xNMs$cBUGEUqJMBA;f57;k zO_5Ia!=PM8GYl?@bJ+L7ke%Gx<{*SnjF1*j2WRmNP>W|mZ1F7URXiK|7SDkpct5gu z9uySMhl#}tU@Bf`6&F!D%*I(T0l74n@B!!X-qJk0BT})1(`Jb@Us^zEvqV}b6(MbG zP$Vs4v-o^zF{RBcbl8><+E5#w1h(V&IY|_+B&?TX zb{s!q78jhph`7iBMRH+)B*i*VZic$-he1+yfb2pCCofJWQk3tKsI;rG>fM~WBM~kr zE(LpW8A!$D5MS(uKE)M~SzHM@cwbOljTEhcImNZGw73rHi#>2U-k(wIgLTFAl*+4! z{6h+*vINP{i&B~Rog28$Zs4=U2B}OcrxLh9a!VCdw>LNWmB@6c|y z3-|?l_@6lGPwdFqI>|#h>y>;=lV>2b1c!(K8_+2qW;JGKpgCD>GG-B+FcF+E5!9Fv zV^%LU&_NodWo(eK#BIQ<9vH+A!>wbi1FiU6lLx8uF?3@L{PHQ%sr1Xs+XR1v_0tz1 z_!o5;{L>itE2PueAQ`ZAjD2UNn(%BTFHPTv!(N?tH#0I9DFq)o0@Ue43#@PuvqcW)0Ib)sHIR=B; z;s+tR_#w1q`(Qxv!=^|qonw&BF-SKkjM~9h&nppgl$pcK{kR@@*lBA8&d6c$E z()rRRgoWs3CWyz8w05Rd&MlJdW3Ztb9Y@fEpHlro&@W)1U)ZL6j~Cz(6`y7u2Sb>Wj)yQeF<#x=-Z;~(<6sC=((w@H z7B~B^?i8Ze!!@kZx}$ke=y>S(ZS$q(4NI41h?yb}2~<6G#Wfj4{Tf zcXvp4(m?ty7D(US9+tDMSe}Gf4(c$L_b@E)ZEu`8)^YN1oM9av=RP*h&i2NcYaM44 zjx(mi*9_K+e&O_*r8Bxrs=rif~Y)#t!9J`S3 zNZTJNo1z#J_+cOu>r5k2Oj@in+vSLrnqVQhZGxipPGP+yTcQ{z4O?<00=mmVA{aYD zzX;W7ahyaPs3o~dGb}A~IpY-c2T#t|Tv|(XNaL51v%p?*Hb^CFAiiWR^eH(9GE3G$ z4&E1(oC{M+Ho%;cjWD<5JSZ+XA8PShU$O~Smt4>)esS{ng?M*sc$BzC+9y3s>9a=K zFFiszzeajgdW_7faHe#C=6WSqDLqc};ZtES_0gOdwPa8qO@eynTPm=c`j!VVrX+Jm zH!^o5gG@t@CnWm}$=<^hydWnINrx#Xo|K+q9RCEPNfJ*^Gn3Lm>6hzdQjmvqEJiw( z#Mch)D}0pFG)_6T!*%6JH(V+53waT zK+lpJAr-HgB{#valAB?2$t{$8OK2iv8Yk5>8q5jw?rG^6N~&qnv(kU4$W4=;qoj&} zLP{V9dWdEe(9X zL43bOe7{4X{~iVYN392DnLZ32wm~oz0_{X45o7UQ#t&p()ZF26#i7{N4&GqyPu?=DZf&sU!-60yWLqH zjKrD0NxxI5|B(JDrPV~|;+!#XRw?4NhTyc4{Bg_%T^fWkDwYPLXZ0ogw-g#8NezXGYYLk0XfYWe{X#L{=uq5=1vp z=DC~%W!XS^V>6srQ7Er6`jLdY*21!M5<<4Z@w>{7!i zs-#*mkE1?Mb}-cE$xgfz>03es8@>BmHr%0kvP?Nk?i9RpA~`0qj9UzhVi~vDlpHFt zIF4Xo6 z;h;#)aT?w(JRghU)1H(#dVRC6*`?IZ_@Xu#k*+rS#)tGJNM42rK3#AO{RcUm# zwfKBI-_LwLM>fg#Q=iX4eLj-zxB7f$k{OdR675QZTvritZ4FGsR|gcr18mb^m0^+D_~CPm9Vt*DsbbqrgST;D7~6eumQ1g zF?Y`aNzC0NDS%a+s;juWw@Px$$#kM#L7hB8xl^f=XNM_#qMpqs>KZ;#ub?W^jU}lQ ziIbOPEE%AaXFD3?;mO_Q9+d1ox{P#W%Xf1Xg?zJFwT09nzB179ElW;M2g&B9zc;uk@m}}6p0izC3Fp} z_aK;Qj5q0W1_Sdtw02~o=@$~rSme=dWNN;}n3`Jw`ZNOi3Zm= zj|19|1KN)R+K&NB-VS7v%%^5KQ_i9wpCo5@AgQ;*54T&=WTkI`Uivml##;#EyX_|R z-14B%NjpS|BkH@YWcm_G^c5uFHL>)Y_Os;j2qQ}_kHlx8 zv*efHe_LnC=~I@nl?#lNtz0ONVxT|5vZ38tvZ3+zpj0RVe~%UTpHWeMK}Go)9Sd_R zv>OM$8wb9d97u(BlgF@BXg7H*PL+0gM-Vbnp@RrQu`LNtk$_GUp<+-Xls>0vP>~=t zP99H@njlYPNZp6h;4t%pq{Wx|9i!fY-z_n`zBHBtJMxNgO4EGxiqF zprgPuw~PfepBwa)Vn>jeBu}PDOp&LC=S*xX&fI53Lxb2d9lGK*xvbMa;>dlqEtuUb~hh zn=ne`7$tIy5~bJVSrns0>eAWh9dYUG^lml@9TBiO@>~koJb69`Olbw!9SGP?0@(co zu-#U`QV_7d2v`aN*1tW#sPzyzhz4K_81~PQ=$wr1wE@l?AgpYF<8>a^yhuJQRxyNz$SOsnv>dbIR!fW@kk*4u`@bP=_ z@p~BKQ;`}5_NhVU9VLeve5uuwpx>}5pp+p{CYPJ$DKZacnB1PJY3THfA{g}`PEJ#< zy&3ivrNxnu-cRBT%LH5I1HG&sqRJXjeHtOPY?;XtWUvWVho00;5in*o>Rv=hhDbVv z+R=&==gmzg(+atg0$C+jGay$ZkmOq_;emWGjV}AzW9^n@-?GyYxRnUpDl}1NLa(yb zrfDOE1Lxwv#W3J{VQ5lAv>HLGH5MA>x)TBEp|BvWLy*=ZNarF*8xf@QP5>ki1If!k z^2zlKq)iN@f#E@FZianDX|}!au#vXg@3LFg`pY&WY+DevixIX

      Nq`kXClN3BG|G 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 Jz-stk{|BAUlr{hW diff --git a/build/jars/opencv.jar b/build/jars/opencv.jar deleted file mode 100644 index 5edacd2e910d20f825dc0e8e841d660648eca56c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132596 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 K=?8NK*#80Y(CA12 diff --git a/build/org/usfirst/frc/team708/robot/AutoConstants.class b/build/org/usfirst/frc/team708/robot/AutoConstants.class deleted file mode 100644 index 6d1b944008ba37d2340d39437ff8884e3cb6b38c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 548 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 diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class deleted file mode 100644 index 9b0893ac60b2b0dcac7c7aae6d636d6d4682a523..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4688 zcmbVQi+3DV8UIaQlT3!BSQ@5qiG-H}co1G1A%BDFd_ulXB{eIu? z`|iEpcXu!S_rgU0yYVLtqnJ@~pN2ZjwBRs4rQ&`Kje+oK89kulGa6cgna`^DoCZA* z9#rv=hW0>sSj8h6B7yLziqC6U9SC1g@kI?+2f~+Bd|AWVK=_J^uWDEy2#=|FT*HPy zIH!@z*QEKnhHu~rX}&4qw=_J7Zwu4!2B3GrosQv zQU1xq55m!_cNyov<{n(G;!d(_IBj)LwHGo6o}ow8!%mg9Od%2>%$G5_NM zE>1hvwCOp9l~Zv2i0w?o@@}wn+)2ee)5z}KaYM|pleQOg^GWw^*E6$jEM8V4i0V$- zwkPJ^Q#(Q;(4l%$#x~NTy|Z@h5nqMMtya!6PMar_Mkb?RPwfc9f!?jutALp>4H8*7 z%x%;oj5cLW+uq3lWd-3J^VLcqYAR!8lPe78P@qE&?bDWP*|{;tPMNN2)1Cg>qjGGi zF5wz7W_qWB?X_c!9Eek|&bAb6d>gGJ!(7>B6z*qB=65XL3c(mXR`+Eams zzK9x#ZNX>ZV%;-cFBIEc#-2tz%k``jJ?T7?H}mE#OE!|zU9v8|xMPWO{@_hX*m);q z9<(Gzn(yfLQ^vHR<1~1YcVEc~&|zX+!P@G&e#+Bv1Y4#agB zNUkKRrEI6;L-??Q=;du48P<_PTE{1l(eZI)R9w(e#LGHiVh2>bi9gR z@N!l^MsLX*IwmlwYaZtD@5I94?Dnv5bhqCJ2SnRHB7q;|>eN9}TU=O;b!xYWWHBb^Q`GMYUVGNx^d^`3{)TSVQ7^QfOk!;74&LyoO{YXJ750k^~E zNc6cLQ#iw3fm6o%a|tU?oJQg_%|q>d32Fh&MYM22n?q|6I!9N{p{xM2pzK(Z)GkL*ASCe{D#(-w*1Y zXl3{!4AnZO`Rf>}9XN@8hAPf-G0IRKXIf7(NEwD>imk_hgbwD*4!UIr4>1(td}IOF z6|k9RdwLhJWgfku^#}t6xM(7thCDhjU4a@Yqk3i3<0aJYUIwe7fWB9;bspO&Y3C8q#q*bhbu5! z%Y@ICp$?Xy+Lus_g%pD$^B5^UUIEpF?gru7Mi6<)%lrovS%ZfGl z^%VVjntnY~0TudnPZ_Ge8J{mDlJ}swOtK+z za}oPakY^_b&*PQ?ZY9}<$WRe+Ub6!Q9Q5Veia11hn4d>(mzf2;Hw@Am{!{_J5Z2%l z@7wFxgEvU%%_@ZIN kOMl~a|2u!M`3HX=`6o8vU+BfZE6n$mkIyHmRfl{32jqnHHvj+t diff --git a/build/org/usfirst/frc/team708/robot/RobotMap.class b/build/org/usfirst/frc/team708/robot/RobotMap.class deleted file mode 100644 index 0eaa2931120b6ebce987872fda3631d2d6fe8207..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1242 zcma)+TW?Z95XWb@T5fHzt)*UCyi`E#sa9>Z#-ud0X#$#n;e9zQu=Q}3>{;-0`DEgQ zAHWY~oIT;PZF%rz!tX!3GxMKwIDh{B`V9cD;W!0RI7-61B)mt+c9a-%bKhV%~^H=@ud^%OO`x%jr=gM-Z0!Qg%-Ko)?}2ghE(QD<=FJ@9MgwD|HrV zuFQ=z!sdblO^=Pk0vUv@dA=cf{p%I7S6a+Z%u3`CGOi~EZLY%RrtLb-FMQ3u@ldKV z&olD&Rr#E=aL65m+)#|AHo~k%5g{LtTXJ&ER2gB_&df%sAf&sTcdSVc5Z2}f&wN)> z_N1W~$yFn7+&pdex+qaK3F9kDz9s`rI~X~3L#`S*PIe~?Ykn8n?VlJmfspLzru3Pj zh4yF@7mX(O14)?pAbg=eB1B8&7DDWlOi=Bb@cHMFS^QVl_DIRsq|3Y(Q^N2>jOo4z z5K1+vdd?{53KeLlt6WEOHaOfra+GXK?KDiRv*9s9swqdx<)4J9nVlx~F4>r6z=3^) z-T$kFuwpJb9`k$7m-Z!hH54I2{|A6OP=FZ3=?zX0MIcFh%i<;Cl*MV{jKx{voW;w; zD;BR3=PkZXyk_w_@rK1_o=uAj#9J2MCBA3zec}feZxioWTqJ&Iv6=so#m4Vri;dqW z7Vi>2wYWrFwzxw4%;M+7FDy3w_AE})rqMh-iZ5y7PRR5&R(=Bh2p_>KiV2bdvT#5# S6aJ3VH|z}&!dr?FIQ$1);Pm7G diff --git a/build/org/usfirst/frc/team708/robot/commands/Climber/ClimbDown.class b/build/org/usfirst/frc/team708/robot/commands/Climber/ClimbDown.class deleted file mode 100644 index 293e50761875ace70e1c1ea512a3a23a56c438a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1251 zcmah|TW=CU7(D|E3(E?%)z)h-RxCHW*m`NKX<|yMO;8gtJovW2w4G)zIJ?_cf0Hlv z0TUnm0sbiCH$Z{Jl)lW&H#6UN&Ufa_pTEC;19*z(1`OOw<31J*q_LF7GFEgvFp$8i zfrrSe?MFJ+bQBnpuY@PU9fo+J*ksUl{SIfy)rH63M{bMDPj<_po!PqIww3)2eNI2+;(47w=C(m{LpIqu4{Xpz}j_$Dmj>I{;9XkU?_ZH zJK`Im==_YgqmWi<*FWKnF6SKvR#Vr4J-QhjsSV=#nMUr>IwQQ0OBr=Tbz(I9NVfT& zP@J=UJcYAn1Ez8A{VTh(h65Z)}%$?T(2j*wC?QlGx8o z+=9ulH9h@u0T}YU6IrKSVGY!yl_Ofm7n)hS1ML`Ar$c;HN|S)?fy4|OS3F7(wSuof z$lcMi&|{<|{}Ktw=}{|%`gCTEivruqILp)Neb^^c`CTsU(3e9Y3F8Wmld=;#{g8*R z&y?e|!hVrVQJoI@e~V-ga$;mV@5o)MOs&|&3jGIz{tl1?`3WYC*C^USj8=eI`UzG# zN34hV4~k>R(wIeDok63!8H#fKsDB?bxK5FV*-@=B#p;ZW3n(yPZX%J566Z#Vb%Ieq zGw0B>9+Gc~$662ixXysc0#anf9Pae%%@aw=8P-eD*$vzzJPq?$pjow7p;)I)0AfzfAMB6j780*N6qqn;GMyZ-=@ C1PS#3 diff --git a/build/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.class b/build/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.class deleted file mode 100644 index c3a35771b3884e3d9b70faff41281ff9b86446aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1245 zcmah|-A)rh6#k~&cH3q75fv3gsfe_tbSo&5U`R{}N>Vkk(hKjl?Eph|yX)*OqR-@w zT-3x1AHat)p6QmhiJ{z_nKL`z&pC7U&);9a0X)N&0R#85Si}PZSv<^Q2{|2)45YAZ z;4xOz@e>`ZI`RzZm!c!WU4~@7&|uK2UYj#a*F=ZEi`*ucAMK_?C$lxLWjhU93YGT{ zweUm)4BItN9$QgxBxDd;N3vyw+;(47wk_#3z0hiTu4{MNfmL;cqKwx=e}}

      cV!! zH`37gId4TF?Xs?S#_K-kZ3ecdt_AyaGdNKPtm`P7uux$rj&~o0!m(c4F8A%WiKp1mv1wAHpPRS~ zlVNK-{Ho#^R(LzIzWBn5`$juQG*2(PWmV&@F)WW4_@H`B&1=QYW!SjpIfAGed<{bG z4jzOaA|v_dNJvi4S<2VOJF8z3?5L4h8gK9Y0gaRAb7_a3?6;9LuJJh9baJO3^YGQV znl&wdP@sXRj2HdCL>dm7!N_*r(qt)`y+Q*y`V$QLYk)LpmS9qxq-+-n+5u+qCs^?U zi7t{qC{JLD;uMk;C!t}QFf$bCW_+Kr8!a7Ly+V4vV=r0B-grQ^hVa!wQU^+jVkR9wA8el^N!H{ucfLizEk< diff --git a/build/org/usfirst/frc/team708/robot/commands/Climber/ManualMoveClimber.class b/build/org/usfirst/frc/team708/robot/commands/Climber/ManualMoveClimber.class deleted file mode 100644 index fbc6ff4ba82b32b6cb0941d35881e0114cb5fa82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1329 zcmah}TTc@~6#k}Nx^!7U0gK`V1d+B}7V(C`;01z^6iuw*!MEvlfWh5v-3y|BL=)pb z@I@Xl@j>5x@&_5?ne9@Vplu({o-=d4bG~z#{`~XpJAhlbXP_5jSzN`q0TUBhT*IV} z>jt_om3i=soamSNkthc8DCj8am}bb_mo*tKGo+)JPuvQ$Y zLRy==7IA0O+ZV~n5`&?5NbbmYluZ{0!j3}HvMza*>q1l+*eXMBIpp@MOFsQe7V+srl9p)B9mEdg<3b#2qnp3wgUPsawH20Z&sXepuaeyVYTVw6% zJ=>tY^XkIqq30*Pq#PYMwsxM_={q8PbfA_}%Wo8DU*_8Z71~EjIhI7qW z(`2hVb`l^H9}KntSreFR0(}aj5{(~1(~gi?pBjSx;S+l4n|=QgU484sZ0ZO-Dsnoe zmZQH0U>MyP!FgOHd4-A`jWgwlK1EA1DUV_DVYoo2#OOCh(v)$8P>m+c&{q*pX`hvh k<2RU3v@lOKnO|x$|8L3p7T`(AmpcPz{{duFo8mS47wfPfOaK4? diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/DoNothing.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/DoNothing.class deleted file mode 100644 index ac4fb7d8481c41b9a70931be13bdc8b77ffa33cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1005 zcmbtS%Wl*#6g{3vCnQZd&9G3Q|(3qH=`oQ3liF1Wbp;u1sW zg~)|@#n8TaYlFdAktt`G8Hk*(7g@~JhbSJ>PIn-aXt)t6Ve`?ZW4486csY=2D=hS; zP}+o>DhUmbvS$yThf2oMgo(_uC{J}56-MSVlZ6gn%XLZYe5=pkTMHr@iZ4{i<)3*{ z7>azM*XTrV^R%@0k&x#UPm0`drHWl+PyF|?PzhfX*5-7rdw(a|ivpa0=i+jJE4b=n zF~Bu=0hTOWhsV(W59bU^JT1acyCSSQr)VhRor8YEm8x%s#pA2Ivs0o*QYH4dQIW_Q zo{X8PE@Hi}4bNzlHH~Jue0-@RX$*nlnw!-;p}(&frkd#^2CvND>?=ug?9h|4UkA)i zm(ZtdnN~*Y#OX0*Zp_5~eUsnL{TB0&hnGz3*uKK)Xbz#EC<> zE>VD4sy#`Fc(TTUdkrFWJo0mjB&&w*j{LORU+H$$O~riJ cV76*zZ+yw84dP+R)8mQ#BZv%VN?)`80MIeV&j0`b diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/DriveInSquare.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/DriveInSquare.class deleted file mode 100644 index b877a021e7940b3334b592a78fc2d04295ed3108..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1766 zcmdT_-A)rh6#k}^ZdlqNwFv(6<4>u`@+%<7UrPyw7-JiZ-fi0f7TaBz-NoP)PvE`Y z_yT&N7Z5e!0gNx;g-_rsi1EyBDNBODt()xGIdkSabLRWbwBP=G*#j_y`3BrYuL=!) z()3F+prQ?f3Wg%n=V%ci7O_NNuxk4!IZ zdodLWj42prh?j)1$#ag-jg?g=x6XNqfn^wCY0I=7-E@}pvdbBok1Wg^6`E^sTwzu* zjdGmfD}r;IK{ZUnG4!(Wik8(SyO$WkX{$s|)1qPWM{cFSMP4tIX(qmC74`CxE)3~c zC&SLFL3w5tEwQ4x_Oc;tM_U#}&Ea}wq;FIcR>5+#qE)HrX35rc*Rf2iV!5`KktbR( za~rNMI2|!EA&Z%mMcG*z+N<)6RMc~_+@x`%VLDt0cioW@HD|e^$g_r5+>va(Yx<_H zU?PeKm{c$o#WdQZn2}~ynpm4kULWt4$O2BWT z@zsDYd?B=@cd{;>3Oz5!Fvb&7u>J$MdH zi5~o-KZD=s3lP6wB|c1uq)$Ap^YskXy{8>RlpiFURCp+W4Aqd`2a?e)QbKwU%l3g| U0U)aZQ>Ozbj{!1opAdTf0^?hh)c^nh diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightForTime.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightForTime.class deleted file mode 100644 index bca43fc469ffba73c92eacc23bbcaa3607c8adfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1328 zcmb_b-A)rh7(LV7vUJ%3R>XoofPl0svM3;EjWMACO{y1`aKYWS9q3@YTW5Dsd=W2v z0B^j}2qs?m06vuQn{6qT5WI0WnfYeEnRCwfGrxZS_z7Sc1rrvgQn-a_69bq@(J-rq z+a~6aQ$t=kY-Qb1*1Unc1{N4nP5*$GTb$PzSdqbyk+&t9oT2Zr@I?58A(<-{^Vfwejm7W5Fsq_f9A>I?GmQ#`p{*G6p zkk+OMHpm~;RUqWtVMv!lxBB{p+v+INxJSML;e}kvs1>S{X4#Kqm2U_Y$Jlwq3;XVY zYhf5!1CE77+_P{WOBT`?v@nE01IrdxkhSmts}|Pq(843Nyn!qO$^ReWGtBZ@1J5@M~#B05*!90ZwBqs#8sk#^h^FG5|UGy z=X0ft^_5RB3aV~P7mGZXkb0GXfqZs{DDkRod-P zr1lL$zlAAkev2MWf_|!CY*7(u?gOJLU!pNXs~R*UX&$w|gV|q^IEH4=9YMGAM@W8& z?_E~@_|!0Tx;20iLbyWzC|STHVW<;ot-jHik;Rtc)ace#WIK#2G%KGGll7fam?RY# zCxO>uSgU=k1FK`K3sH!J0MZ0ue}g`#9m6;aG(quC_5h{3K;uNvj((GrDJ>cM82yBl z{O}Qm{t3GFnRYd($W^|8nI5D}2kAQPCy^L_N=a9*pac4MfT^>(@`Pyjpc!3VH@gr^ b1f^J$q{}=D;1Jtl4?wa5z%W5q5}5o0!4nO2 diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistance.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistance.class deleted file mode 100644 index 3a4aa414a2d4fa723b64073a1f0d2593fc7f0107..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1913 zcmb7ET~ixn6n>W7%_d<36r^8TrB<4-wrnenMWLmZ0BsFe3ByJ2Hpv#YhHTv36zd<+ zj^lN2ywMSu@uEM#AEiF$%@^%Bam-B4d)|-poacP)pMU-F8o({=SokE1F)WC{qsSyfVdgQmaLKB)T9j#q8)WU?IAyvD8<1+woR8p(bTYuGM_(Vp9mp9WE!xKE>+ zoA}_io9?q}Q!&s6YSQt+7Uma?&>B>*KJ;|X_+l?1d$fjajb|xaT?=?czB%BV8iCY8(UjCLM2Zm^g)6&1T< z+NEOP<38*X-wJGwP|okjjOoW19{_gBSR~luDWF^*=o+rmTsome*8=1cCHoTR6txL% z(m(tJ%XkGt|7CFY(qC0ClpmNd{Y|0L(6c#>C6) G-24aS@^Ehe diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.class deleted file mode 100644 index 83cca8ea4c2921177dbb5f75e8e0bfe91a89728e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2074 zcmbVM-%}e^6#kY?Sh6gE(qa+&16ym7ZDFZUi>9<#Qd(MC+Jdp7J}k)=wkBEJ-IUfR z{|jZt@wG2~(Gi&O!9T$9Z&JT=vn0qk=$M(Dd+xpGe&;*qes_QS1fmQsv3;C`(nkfGc>av z%m?9?8*)`!CB`+s;m6k*nlF_KWeushpvt)ZMZe)aXx7)faK&A#ab<8ZsJOMV8~QR& z7E|$tA8B~97=-IiGkWTWQS3YoD^BdW^{W%pP8h5Ou~P}^b+=KCoNDMl_u|m?8%{~w zW%1WH;+5c5qr$}DeuYb+@GWZSskUqGCPl^3ptGvHzUA1he0ks9RD9S*4W<<2yEXr7 zlGgK5li|JaDoyE>=|}V2k2a($+++uIuR*`pZ^T|0HaBD0F_(j8Sn=k4DZKDsn2tYl zpSv1zNB3d>o+1mQ$crh68M82qlLi(o+{Xh8OL%DE4V<)aO3WFYweSd!4J=z&k?4=b zlrg5Ee00M9+jt9~;E9D#v1;KnOj!6_GG3O97rbiI+1m7-)@9SH`D@Siuh^MuUA2bu zM>BgY!eFO6iqLT7Ut|e0d^b;V{UDeMtRE zn~SXr&339A%Y@52@uE3g7(|BOsl-^D-& zuyy0p1S=i@>T3fznBZ|y%{NRfKr=)!w{b>MJH|=Rx8Jk1yBOStk$Q!c{<^dE-4BPh z2+-<%mLqV3f|(`!%>&72lH}5}UKpqJSq&$|q~t4u4B!fo>0MZG7#*2{mH}w}JN0CJU diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToIRDistance.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToIRDistance.class deleted file mode 100644 index 496332be08240fdfaf80e31508c2c26055ca908b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1443 zcmb_cTTc^F5dIEr*>+h9q9TfjfZUeLf?O3)luAN^J^&$+w{3fXgKf9&1;O9oyNQ3m z7hg0K6CeBm{wU+j?m~$ge6dOA%sDgt=9~G>>5re^z5|%X6CGI$WH5*!9nBcdkTKbe zuo-1DrehoydlT$UvboR6QyQi<%m`$C+uf6XPI^3f{it--`XhS*r3~vi0SDYdxwXCa(d=ZrM(%rK2B|2$acM5iC z+jbT2yEo;1>UZ5J>S}O3zjeK^4!F{9!@Pk9cxa#ntp?iITxD|& ztr`{#EMm#P6+U@{#|DxRQ#r zHbRi#?PPDz?i~`y(AsN$g)qOM;S>pTu!f}Bq1BKwhihmwJ5n`hpF@levUi}7y@e!h zqltE{=q9|o=p;5hbRTX~beb3uDrI%j${w>5p~rj@p~sA(Jm#u}h+Q$W5z63vQ7_EY zfq}4q5e4G{NuqJ~!0sI zP-gJFOgHrzO)f`lnNADAX0q=;Kudl^GVzIy65ugKY$q?kw8Sty6eYo$m+2pe-%pG< zLn|X{p$tuRVmgTm%o5_<1vKrPRNpzoR1A?aPhtEHut?RGE&!xr0D*f1-+=yKs*@T{ diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToUltrasonic.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToUltrasonic.class deleted file mode 100644 index 5cc26d35696df3d5dcd68eb9418449b2458ed6c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1525 zcmb_c-EI>{6#m9ud+lXor!=G~e6GOO&kFVH^|yEXU>`V&Ub#s??1eK2jDzzTc~2Dj0#Sd z@hi?)q`ADEWpS3pITmvk9iC_H0&5E_F7n|^CN7(}B4919tlVGubN&9kMFDX~V5AWS zvGxPK=64dAr*L_JiuR*NQhSO$ElDRmfpRz8l&d`{+obETBcse$>Z%~UEKutDPX}u8 zstT08E@0O0c%C=CCSWweHepqlRUq#r-KLBl_{|Pk_AiGmzq95?iuVJfp*K`4u(%vX zkK81FsG?ZA52Kc=rQcncz34_^Gt_P?>~{U29lPyFZAu;aDsVkkAB4YmXd8!tYH{LB zNBJG~4+YHEnU5)-%2uLjZ>e~R{P70oM$UDr%c}NUf8F(a13GybkZ+#~w2Y#pr}?C{ z8YWRoE-6l8{EMh(9{ZcVjf0r7F^V5dT(xlx*KORuO&eo4VB;qi6D)ql0TaL3xP^v| zakh9^w6VmOYnT#fe1|#+oRsav{kx~!te&KGRP*ttD!PrVngYl7j<&+JrveO%E-?R% zPQ^(xeim!ljk5-&y`s*PBKagyk)&pyt}pM+Z}k(#6>i|%-Xy;oP+*kj_|~)GbnuMQ zhRq1^cv7g%snp@iC@FRWH%v7hwr7QI{U8%L{ zO5LTkNOun65Xr-|`ww}PXstVMAe>?!Ip;O<+c2C%|MpRECdgED>V25bgwaRoRf=?k z4_0>2hXN%I=qCB=xqOZ7(avxUauqu@D zz9D>tssfy(Oit0Swku3+C(H@*XZ$>3%XF#)YgPV#4%2u6Bma_2c`8Cya$sf`OmzTr zio6BnMsCs{6Th$l;ykU4Xr{fehs3P3T(eZ5v%ApD9a8ljh`9ko!P&;h=KvQd+QKe? N!T>;Enxf|5d;~NhELQ*k diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveWithOpticalSensor.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveWithOpticalSensor.class deleted file mode 100644 index e46da873730b500167d8107638ad226ae36c15c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1290 zcmb_c+iuf95Ivil8^>*+rR5T?Ev0FCaUm@&DuRcm6`%-EgHow4$Vs+jtHci8b-8>K zFCeu@Jn#X04PStmb=)MXs_=p(uV-gGXU@(U``4czKLM=bk%p0ev+yY09QX*Yav#Fg&|*Dh&uPpIarjuM1i z;jZ-jO$JjF5>88ermFG0CS~xCydG%ErjR=nmrdRXgLHy8cgfBOS8?ADI!Z^(iWm5G zz9TgA-1()J51k{&!US>_EQ}ghv2Y&`EEKV7;UdNvp8c<5G0Y8zIu%PAShMgD>lQXN zv0KP7%<@KHf9MFi+h4L;qIP)NReP)3U51(AHFmWY)SJEt3~T>TP6jpkNh;o!UBN=_ zNTd;;zYm1ZN&Llpc{snyDaNMOvN)XNxdj>0O{e9BI?~AIOQr6tO67HMhdzP~O?C|9 zT1T4jv2d3q52;9YihL8eMC&B&_7SHDFje>tR>&SBR``ba2@-|eF_K@y+$kMLlGaHi z2s4e#xPYs)yGE9dg$TGpK7CDvmFVlCcrL25Kz^q0KBOiB+zcVCZZLvK;Ce4{BP0x% zL@PT+%trbMW>|Qd2+a(jm_3vmgx)>oB0Y7rSp17#iDI`Az}!G)td~iX7GajB(q9`1=R8?1Xy?Xt+e*OOO6Tp33^U%bZHqPRlhx54Lp@BIU7hPOp zXg-yxG|w37i%UZWXC;dT!|Xt&;&na>g<1>3gfg8$76r*LP|}_!NyltS&G2H7srNkB zn^I}RH&w)q2u6?YJ?1J4GsB~7Gz!vK^H|AUVN@Vf{xVDAzSI`%&8z+s2G8=4K_WlX zG*^5SQEn*mq+X?p-V$-aaf7T#DV~w35lZDd##X#{S*{|nDlOOU-{5z*gWbS~ia>P4@a3dQi? zAL{Bn)St8wBhCAzz9i`K(W4G+V`yt(*0uc;T871qr6GE>E=^h_kfonNi)@=t%j6mP z#;xyQUn!`;BkPd|d^k9cnIbAKQRWz(Y<3^uA>FjK);HAZd#E48=+Llk1*27B%$69p zso!E$2w0Y&WuFdbW#b8)q^f0qhrGR4tADY!pg!)Lt8~`NPFj>nXO*^d2<>^I-K$_s dX?IJEsdjsC4!-*asdTdf(3p^5I8{(R{RctE!4v=h diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/JoystickDrive.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/JoystickDrive.class deleted file mode 100644 index 6bd630f1d623cfc54484d6250e2fa2ae7b79253e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1236 zcmah|U2hUW6g>kg3(M9jDyUUkZL2`BQ@^4~O-)m*sUezJ!$aQ|n3kz5i?h3J^*8xq zA29L3AK;HN-dQMMQkQ+WbMMTad(S<0=J%hUzW_YNV+$GF$lxaCETnNOgWI@cV&1|9 zELgaUdnOi5EHR{B%B~DH7?QvUT_Zz*{s0_Dgqf9rkm1KIpk z)m!TfmZl+{j{Hi+OmQNbVL+ZG{cSq&+oBaw+#@Tx z$-R2$962^DWKAsFxQ_=miYS>V+gL$`p&U;>3}lDDaa_@JS~ebH)daV(hDQvq;*nF^ zW>^-jkRSIXA4o@DM>Y=61mjx+;TRUu**Nd%BM*5k^D|^0yAVU zB1v`@1}+mKM=||5_@8z!Q8YLiaF#1T* zV$yP)?86+Vvxpby)#ouck+LvKc?DOgpzfguZ_t3w~M6- S;JAzYbYSTmAVVSIb^R~Jh7iaA diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToTarget.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToTarget.class deleted file mode 100644 index 189eb406c7f1b8a8c0d81c97aecad00569b6254e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1167 zcmb_b%Wl&^6g`ud6W8~&2Fg*?$UPUnP%juVrRv5JrM;9`skT0 zgI1tyH|TU6-wSO|iXK>5kb5BI)vdp_ShnPqlUC^c)LUP&BY^p@a?@DN1{izqT2{IBgXtZ^^0KXirN_lj0+(K@?u$lmKa#jrY=vaWrleGUy}*tz5s z!l)H~3Kj2!cIisehHSUTH!Sf@>%y@S9X;`WeD$e$cO_A*_BgfyfZ#rGrn#4ldwE!dRiK z2~z1VI+9wTPx)$OGBu#2o0v@QB$Gz$LUyRwj5qp*U}_@}#sK2x0Af3V$d=EM`xoGl RoT-lhWD@}Tm13n!e*w(#@Kpc+ diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/ToggleBrakeMode.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/ToggleBrakeMode.class deleted file mode 100644 index a0dc8e7dbfc212f59e64f8eb9615dcd6a3e9d015..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 958 zcmbtSTTc`*7(HEe9;F@ zeDDYOql{nKbr=Z31M|?HukHEH>FNCb^Ya&g=V%8Q#;prA^< zhM@-!cNyxPJXQ>?uFlkEk%r3b$S|RmiEbXrWLFyP>%n5(?Q6@>>E@;<3cII`bz;v% z!YP@)c=l45Jj|Vl@-&rMY(;GJk#a`rOzh;nUZU2Ge6QY;OO!-IeK7M=e68SY=KwdK>ItDMBduyRSZwg~Mf>r`sR zn=)NWbNOPab7}PM?)0;ujXM1|{%e4K7H}G`QMF7nqj~tz53sKUY8at0pc!ZqsYTeM z<3kuF1X{gbHh4_6->ZeQZW98&{^#%GC5so!OIpcj1keB re==xMtAC-Y@4PQQUt!it=6EUoU)Svl@x=AS<;10Ph>Sw;z9#Go)!ETZ?p)r|>Ju@Kwh*nvy z*|^aXta9N8_)(U(CkX_~!i7oAoxa_-&pG!ozkdJt319`;C=5(Qa37OV#4r^hGp$TA ziW#JonN=pO%mWoNr(<5n0zz+D^793xe__hcVxWc$_XdPJw z`jF6J8d$`VfrnT&(2X7gz39=gVjzQrfmN&-SjQs+kCl5D35KWtnJ~jNFZHS3%VqK;|rdYrDx8drDx9&{u11~rOtz> z0cf;}AwdYYF^CZi(AhX)sE9#&)Nd$YWWh>thUnHX-Dxmp=&jE5fUNV9B1%$$F%oz$ zfHfLnO<0WxTM+v}5aaqJB}fu?vW0f>J4j)8~j@2gnlJ QMjJr53BafuYK+GJ08?QT!vFvP diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_In.class b/build/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_In.class deleted file mode 100644 index 1b0c4f64be30de4767dc442c29ff4f9de3975d02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1131 zcma)5+iuf95Ivil6UQ{rLb;SnFSJS1fRQK#si+bJRjL$tpr{YLRCcnZTYL%Lb-8>K zFYpi~9{2!03NafyPN-1eWjwPx=gire@y}o1e*oCT9TOE?t>79KOq6lmzzq{OaZ8&; zeX?X=*}w`z>9Gie+F{5y)(;p8?XbrgY8?^q7qRd1=#}GobTZosyN-9@L_){uVL=@W z$O5d3KVH|b&uFzuV{v^M9 z;+#4bOjHfrwy=sd3w1OY>eF?%!$2x0P}0D{#4Yt+j zOjo!+BH7l{AX>4@{{Td6UbbKq{T~- v4^pHte0}L`@kQ#`@&tvEQOsu)_fv{ua{%Kk!5THGK0#1S2^cO9m0tM`Jtyn9 diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.class b/build/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.class deleted file mode 100644 index 044f801e69a499e939bc28e9abe13f3e2a0ac96a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1383 zcma)*%~BIV5Xb+Mgsd#fhcQaT4?w;`Ko;dwK`4R3qAEz0u{e04CdmK;NjC1zBKjg8 zd<8FZh*ci+?o;>(K7nP=W(g_E3g*!1-s%4Jf2L=C{`vMDz${iw^kA?Z4=`k+8^i4w z!Ki^T6KzPxSAS6w{S1u9fBdfdCNh}NW>ObCG%#hrW{5A#ic~8M(e(H(Lu}nC3Wn~i ztcaI>IWOGTJYS+OiL6uLrCshy9fu!d>QH(N8(GIauzhb|x}LK4-GZ$IFE30l+OCs# zlwEMjWnL+IwyY?AEcWueRI<0~{u=pvJHA?CFtrlNOY#HtGsLMV_=>#FoZ^M!ZC(wV zn$p{(Oz%(>1J!THiVFE1gcq*sSCw8dbB^y8#HQ5hlb57M>wt;T{qUYprYl z=lmE(MA5h3Ri#}Y19>HxKRQ2rd%ZpchN0HYUg?q55A%Fh4D(k^*z@z=dryh7*F0C6 z=`~lp^`$H5mQ1Fztrh0ZAxruu4z!lJvqd+f=*kn}hI60}SEy{B8fh~QgnE9eFK{fq zHNL?x+q&hyH_6amc22~$qa0V0HiBp5DW{4-dT2et>x+Zw%SQGF#Vd%A2UwY}V3{*S zYKVTJID#bEE=2VjV&ruY;bss8`M8B%iegALSQ8ZMHFg2e%|MMV3R$D@cB3#y7@e0o zLo8lHJPG6DCs?E=39|-E^P)|HdPz=-+V?eaQz5r6$Ys5Ryo0-h)w`Uef88Jw{j6<( zs!Qu{LPQ$U=p}@eb77?s98KrN&P>7p!-!+F31Ku4_Zx_r5Yd*Yq3bdrLpmp#0Bs?F Jp+8VM@E2y$G7A6z diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.class b/build/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.class deleted file mode 100644 index 7e455772b102ec0a3609bd805862c579da44efd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1578 zcma)6NmCO+6#hC188QsA7*Rw4StJBx*py8{7D1|lR)NLA3)M*)8J*0;nI2qzhgBZD zc=O^#4zbFE-u)H+1b={K`FavUTq-z+p11V--uL>w?yo;TeFiX%yE@u2n7~yG>1abL zfnlUIjOb{ZR(KD1)+S4P#?5himwT4dE5?{SuzZH~jO#rz1ApK0d};1`Ia3N= zm>HinJvZx0Gv^ix+{yc<}9!an_JuoxV>4ntdM1aL04QXZd)%Yqb8niCPt*kgXk4V*<%!wmy7m^Cnmc?}B&ZsHb0x_-5Rv}|*O7etZg4J=~G zz-=ru4Al=?bsb-FNBSC846I_!z#Xg`*g(?26(kwf>I3}WDKiX;d|*B+T4uRjB-vK> z@o|&P)pD~K`s=6LR;{J^v0YAmVVF2&2>c-Hzwo6f_+};yp?)`d;%Q(}OBqH}nfknT zj^h{9oc7iycYl+nBkx&FPA^L&z2s&szgQ)T$hGsO8c0Sa?{kVWm(qgz+#Tp@9`Pd0SJTxS0 z0$DY%s~Y%)e1;^I zF&a|thDLHH66hwvJ(R7F9>IQ0(mF?Pqbi}JoUOtnfeBo~Wn$V*zD7iU-~#K66Q>^Z zl2skkDE(Dwk?4E1hMCH>U8|`rQmu_HXC?A_B~l}%CA6FzjUJMiL>yB!5Ly+YuL?0$ afoMpV(E2C9Eb*MH0cfZI&}9vo4*UYyA7g3& diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.class deleted file mode 100644 index 4d05efa1f2f49f4c729a5fead66ff26be5364d93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1221 zcma)*-%b-z5XQgLmM+~cMUg5fpnymz$f8Iz!EjTAm=t5E;lh}Z?e+i%+TFV6Y*8P@ z7x2a#y}-l^z4vK+0^^+Br6tBxx5;$QpZU$VGqXQ_efz-4B5xR6KaDYU0T><$W;6WXBe&uk3S1rbsoHM>P^}i zsrs(d+;ak<*U4r^9SO>*2~HJMinivR%K`a=eDLg{Pbo zzJJJ_zT!QR#V6=x+#x%Ba;1+ zEceLI6Q2h`*jD<)todQ!@-3m|7ynGReC%`_3qvRvSg=sWqJ<^gHLz^K#u&qV|97hR zo>Y#fq=gmSvv3~;3*#s-RQd=0S1}mocq6n=+ro~EN?udckIzeKSK^W~%=XW=s~bSI zXp4@oqQWz*{i9tntjo7j@s_loM`5~0)SkhBzYayfspCtfYJYvTbH=)!s@47?|C&&@ zQ||Ik?NliDh#}YVJAB7ien3-N+Kh%(D!)w=ou|>)PZl&RD3Bed)do`J0ap17Sot$j zXGnjdbqbfr7LX>JLxw(#JpC@~oAG^&;0moW811qaX{}kT2hhnhrWZ&bNfKD>2EL*+ z`rbs8Kl2{LH9-uN&tUdy U6a%J7=gbAbKmuU&ep>0oZ;DR;uK)l5 diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.class deleted file mode 100644 index d9a523244d086fefe3f2726abbc2acfce4ba3e68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1381 zcma)5T~8BH5IwiuvUJ%}Y!w7VseF}!EXt?BXiN=;q!=TH2Vcmxy}*Tbx9;A>kDuZn z@WmH>sEH5$0DqKm?(Wjo#8h79o|(OK=IqSeU%!9+1h9^W1~Ryv#vM!>Fi}wGu7MfM z>X=jKyfO<0iV77KGO?(mq+^L;;E`~Ie9Vw6E*>&yWw*{5vK8U*7eTYiz1McNL6Ka= zt=Wx3+Y`!b@l$X`l0> z6K;FfUWA_$KH7737z`yu*bVWK%IW+)uLY7&=0MuD^L@J&*EEE`OE>*fUJpgTA!i5dss1HVb#QaJkYUbQd7qn7W)5G z*>!wrJJL6?flU)zif!A(1hNcI`{!PvAq;c89$4>M!iw5Ts3EFnm(8@wQBxUa`qz4; zMi6!9viA&||CyK{RQ(UW;3=r-?C|&PHkT?Fr=IA1>bk2OIRyD3s>HkZi`{<%G6y&D9}^N&?^K6 zz|=yK9U*TI2|_@=^c}494T(0AbZB&ZrEmh*$mXDt&5#|&5T)iQHAfLMN<|*m$pF diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.class deleted file mode 100644 index 363ee9bbf5447e9e8ad4658803a2d0bcc9f55477..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1145 zcma)4OK;Oa5dJnVH;&Un2~Zvd`l3l1Y9tC&D(Zn&MMwc8ihAHuImx!&65C;ST^_%Q z3mk&P0q*=7egR_ENt`G`0UyRQJNtd#?9BZ9{p~w|4Y)Q6xR%Ft%-gVW!@|wnk6)Cc z&&Dk*7_(?nOBR+btT5yri9qOWhIF}dz>wJqTbyC0E&~2M@*7;f@)~VAnXQLSuYKT2 zVdDN_MxO}9uv-u1u^Xu)A(eKIWYg8$^B>;bbY<8Gwc8AR-wRsG6@m8N@WW&7N%v{b ze?tD@i%4%V*rpQUwZ%u$v-o@7j5K++P1NH+PN zFx8gE*w;_JGtYs8qJ`TIR#A3PL6u>3a^*W=ptKigWns-h4R;)@qv+r=iVTk@WB=#X z3@f}9x$io{?KO|QwrHFVTITNbTF0<7S?r~0bgw0Y4l_LX$6Qp@P#=`$z8akdO=3#& zw~>&XW?L)QCs(*XAlWkevoX2Mzbi82{qT%G3w0=I1mr1*yPxdz=(ma z41p{GmJ;A5$(VaK>6ei0!WuHzR0?QM@|YW8u@jbyxI|dfECz`t7!p&1niONK^1ut(ZZB}5-L1QKLH!f` z0bh90hno1{2l!FOxw}hS6H`r-*_qp!b7s!W&tKnv0Jx8P1`JH)a0Al@a=2;W7H;d9 zQQui*=G5~Y9rHRC7_yIqE94eKy1cZ@pjEvlXDHN!%U^`;2KQgvjTXI(*F48=?b^Oj zaq_6iBM~rEYo32-g~5UF18E)jjwQL>ez5k?^1X&9EyruOZMPX%!j<+3-#_HGZ#|Fw zr{wRy>1;9>su5wg#0R3&`8)1}lDvFf+Rn+2-AOnN5o}XtaKxKY(|csOOa3UKbKeg; zQvGApz0h~~wouI%|0G*Iwoh#nqcC+WnkZw*LeNpz-x^g5WKLpJE>fh?#9CfPhiTS$=yn3Zo}m9I#3k^Vw)3S(r) zkS1$DqY711P?>Q)F5xmo8peBA%M>dt)(22zpt61;>lGGzg?mJ!@=6iE_6d1%3SDGB zBNsjC3NanEG)|Nt(j1EPo4|EU4xpD3^edF3Ayv$fouG_(*k|-rJPN)G?ISYUdHTEu z9Zy>#=qZ|ZdH^;*086co5-Qzrg1V8Q>it$@^$b!Gq0+d> UUJNi#YzqSbnFN5*>}pY^-=O0DEdT%j diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.class deleted file mode 100644 index 1d107a47add0942f3e99443ea2cbd1ff75c5cb71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1495 zcma)6OH&g;5dJ0!*|2PgAcBa3fJg|D= zkzdLQ_bJa6$ZGJaraE$+qGOzn!9e^l!BKs<8!9#$q&WOp5U&z$!(t(H>#F(vdlB+ii^dI)+@@WiDQxXB}r}BovnSxFBXJb zc7^AO0t0)-5Z{tKf4IrZH9ETGtr3E^uNR4gfwmm$@-T3=d4bDft&nHLP)1JyO$IAX=IJ;`n9 zX;?6DABzSa;Guyfv>E6{8^da2fd4ySh9Ob#%@<|Mtagf|qLn*1?T@)q?GwXb<8)6{ zSF5Lb+D?Yq3x>e+bKXl&ijrsk-t?F&p8FQ{l_8zXHfFeW3No*T^=4z5k2h#U3a)h| z+*&&*!v!qQH;)?EyeH(cFQsGC)ktoriJESl^xtI?Qpq_In~ro`g|w>ZYXrV@tS*p( zUZtNWoih6AdM1L~8U<5hNNYRkiwKbf7^zQSsS|`M2!A9!gv+$HBCPfhK^!flbp%@A zk1OaTErPB()+p&}kDURiWT3FKKvoaDS`U0pFd_2GoFEdb(Cg6?d51WWNmLMfj{!0_ zRnXk}<}DIr?SLNGb&^|2Qt840-(F}WcOymv9!DQ>>!*io049boi)28fvzn?#BSw4O zxJER4C^Cld4|K7vC=t4j8)Q{yl%~HbBNYCi)*w^0u=KgYLiNJva@8VdYLQxSu*TWB p=mCidL@{{|LaRgc)gh*85KXBH;(r2Ui09lnfTkJ%O>w}q{};#rO3MHM diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualPivot_Gear.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualPivot_Gear.class deleted file mode 100644 index f5970adcbfe90625ca7c373810aff17c2b872abb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1494 zcma)6%Tg0T6g`~`88S>rL{Jfwmq-Z6pol!h5)_ImP)jTpZm3SuKtnPUXL|7QHM(-+ zMiyA*Lic`+KcMC9NeD<;!KAAD-tNBVp8J{~zrTJ1a2F3Ow4y(W0o<^V!eA0NF=QfZ zp$Wq#au!A~n)v>c9@9^2xAeO)6OM^-hQz#drCMN!XNNZ#j3uuq7}9If6;Hx)UidF~ zzC*r`Bc^+0K^YL=5VOEXGz%SoOrf&nIwpwU0c hm05@AsY6WEAewSVu+IX_5YO3D08KRj>fwlK-yf24N*e$G diff --git a/build/org/usfirst/frc/team708/robot/commands/led_out/LED_out.class b/build/org/usfirst/frc/team708/robot/commands/led_out/LED_out.class deleted file mode 100644 index d1f48aef9732691e0d68e522d1802c915613b951..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1107 zcmbVKOK;Oa5dJoC;>0m6gl8$Cq@|D-F{lWFTJ_RWsZzv&q8xe&jua*iK)l7a0rcpAw#F@2XCw>JQ6`Dt)sxPB)3OTA9k$3ANbO8{L#qvhN0#1Vc(CW)qTFJ)=dUO zp$pp;p9n+eAGi}q$_x?i(MfpBhZAOp6uC!vNqCY6L3AqBNny)zWBSH{9|aEI6N;=E z1GG=x+Sep;5bfYWQVYTfyi4$hl5)r+_0 z^ZFBs9w4N5=u5v(M2T)~zurTYK39Q0AR}MNS;}7X&hgk5 z-b(FZSesqpwKbDEmb%Dr|39|txT8O5BL+Hioa`q+GGE$6L#)ySmT6FdInX;)D0-CbAxAsFYkUW5d_!)8{8!3z zI7hLHJjDwrV1W>el+(-fJ?3$qvI51fHdhD&{C!%9#a|nu0-{# zBNR{ZE(rma;b3Koqcq`I#KnxGNvq|^<-gdN$WN=UPa$&?Bn?=Ge3T)bXw^+nC8WTDpf1==5|_G4W`gZ0k8ffF ziy*P!1NbP!^<Vf znu9wI)*0sZWFXBxL%vo&WGJ-4zF?@fWguQh!>&+o{qBHH7TRIY9~}Bh+B`Wdm}99K z_S&I(&m(;#l{WlH^|%rK@afJouEK6;crP3d{h+V;AoTk}@pim)MlyIA>@v7kf%FIR z3)OMNC((-x?Odr3=tduleyr{tMG?@xA_F6oiblrXxScRkJ#iqd%K0?){S*Jx_u!)9 zV8g>E?t0iljbSTWZYvD5@dKkB)IBt??V*W^hb2@Po@ZmTzRIvE`Vs#)l6>M6?FO=Y zGWCbICO$E&XBT;6U8UAd>|}WGAOCgK)t|KyL!DSprk9lX5J@Gdea%`sTUTd_-?byc zv&H>Wj9Nt9kNm-_@RV9qsJ(~>O`C9pH5$b-O)M}6dWQ-{kFtH_Xa{(WA7G8|$c>Tz zMtKewC|*RK;yemiB*YTs^m6hZRa~O1K(|w_ZOSbdJ0q~gfaMgBMm_;9%z#g*jD1(4 z`qeRtXLy%{04s2?n&K$UI2Li4koF@@S}jK||JBA={-pXw3YnWBX~q)d;{@r%zn?o_ myiSfaQWVaN;>wKTVM0-CjNzOo;AGNHilCSfFkFq5Ui%AGIpClG diff --git a/build/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.class b/build/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.class deleted file mode 100644 index dd8de0c402c777c8f35b7ceb13e909a311e5a2ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1115 zcmah{%Wl&^6g`ud8^>uOlsAQzwlqmYrw9<00^JmKm4ZZ27wnv5N~dz{;2D?4H?e_5 zkXXQ;ui*<2cO1u!ie$XFo;x$=oIB^JfHf~$EQ~LRvj_9+o zj1?2^nxj<8OP^)5rc-Z*3^>;(hCu+Wjdco7YIB7E)kJld&sg1+k=x}h|A zvRTl_QZYR11mRmAsUsOG&5y!9*TNk>+1}w{&a8xV$$Mg-`2>^tA}XXr#@F-3_9!FZN|prjbav zw@%zs*MWnog?kP*PIFe%(RN)JmtH{(F$;y z-@uw*ksBlbh4LI0D9$5K@gfSS5&9A?n46RPv|FRBK)X|}P09@yJ0mb+!1Wm*OM#0i zaED~fJ)86wQ5?fMW3Z_dU4j%Vk_4ta(a{{)Q!&|7>FXfQkOv3^JD@Y0MJj u;{<8N@1Hv_-arY>844?aLSCI-1PHnI3$6jXO7P zWPw#KwA}hNeu3rbBn&C7inHjxr>F0|=f3*q@2}qgEa19>5u6;vDNHyR#_2&!qGV&r z!2rrOrX9>+HuwD(FY`0#jJfC8n6oi2kX!NtUoQ(}OH+>ptd+2?1PT>DQ1_E&RYi|v zwZW6!m9Qook7eW=+P3qKZEs)W&VFNxRvDAwM3RP(fw&5Lu3UKCbC?bX6&QwH_e zYlO0{B5zd&iELEb;EI4_82GZ`zo#Ety;ZeDQ_A0HMJkR}T|hh|e3HWa(^MQ@)3Wwz zRkpf}96!E8bMXtK#*nC(RRQH8KhP?Ql9o1qoV75CYU++}Lfh5L=gdpFAzc(uv~kwO zIV`w1j|(;~x>&>|fpY&?6YV#=yRxZTvhLzC7~f=njg>HnwG4D@W68x;EW5adqKjiF z3S925+b^>M6RMtgZ(6?BDGa5CUwye<4sWGX7J-xfojf!}WT$khCoun?a>q$Eeiv)i zjJ>qR`AEG^eAZK7rc~+AYi(Qqis{Jl{^TCqW4DGa6-gaN-MrJse<=1=i4_`ruJp}B z>oDL1l{Cr0)Zdz@{(8g8(stkSLaIK?__;W!6wq&BLp<4IZg%ctFZK~x*q_>(CN{RjjsfEg80}FMsp4p= z_=9dN-n+dC%i7|5z&*$PDtDXv@|g7j!z5SOLjEJh4-*y$_hPVpP&mQ^hX*5s#(B2Q zzRb4`eBPS=(GXiCE}KL?%rHr>v`azN=}s3o*2l sM~7yBOUQAYcZy)ACdN|}=ei~a%3E;%HgJtRulE=j=o%3055x4tAIkkd-T(jq diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class deleted file mode 100644 index 20393390d8727489759440eacd7b2965fef67856..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1061 zcmbtSOK;Oa5dJnVCtE|C@@RP!XiH0)L~JP_Dg}C}R23<3AgG7loMhW<6=#FjE|1^D z1r9;tzz^WWFG9>Fu4@%39Jq{UJUibv^UeJH{rv}kC#Z20u~@a2-DL#l!17qPvySW-FFF z7bS29D=t=X-^Ci%9XxPR!G?<}xQnac42}PofMHE`Bk_Ky#6$t|`l@|$Hn-TF%+Iho zo#l;Hixh}uV%YkJuqJAok0zA95v_@|q-HUY?;;gQT1>stoZeaM44`3`zd60VzuAb) zk5@^jQ+YYQAQS2#mg&Zdbca9z%x-|}3`IN0kO#QcZ(!B0$c&KvLU9Hz*~`e1y^b6f z==CBl*_V^|l$)g}hq(l+MzO_W=Kz)rSV|SLq_CV6ZpTe<;x9YDM#!BbaLR$&FJUEx z!V{EvTpF$qe*lm7)G7b~ diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class deleted file mode 100644 index 1c63ac75c012e8e224d79cc91382f23ecd58029e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1057 zcmbVKT~8B16g|_gZI@LlegG;eAXwVQLDXP`@Ipc~sXkc4gKxX-V25-&b!HdT-{gxv z)WipWfIrH3r(Ko}CN=Tp?!9~Go^$TUuirm@0(gRki!v4}Sj0^i4sN-)jU{XD*zm4{ zdk&TvO1p9(qdkUvZR3!ku&=s;VYVd);&mJbLcjHcKK+?%sgB=2^tH5c^0N^2q+!@? zDgBgk?_Oq&1YPzKt;Tx!q6Xd4L3cdBBA*!bs}CU)orQM9R}AbkbYl& zCLTw86rDIC&z0tYGNvcGV|DMyiUIjEazG$D9!56fwpFY<;y_xJ)eQ2(WB){$)hUfpUpJ7dOV}3f6e9}I7eHk2|HO==Y%`>b{CwXH> zMg1o;V%Yk}R81V1PbLzf;qA#>X_jRzKEzTB+Dfz5ny##U2C!o{zd2pr-)uw{CVQm2 zsl6PZkBQU}%XDC6IzpfXW*0zqhN3;>$OF9kcd+_5}BN1-arBK^m+l8 z?90h}%FR+#KsCi`P;9Z-Ie;YtmNJDbExeKzZYLrt#9v(;p>Pi1QVOKLjFk*XB?Xzo zRidz+H0f)}a``XTj`dII*E5y5w34nYseGDLI^*_>7s(qmvStRtNg=MM5RVgxVts_t UMSw>%rL7D=F#%vSS*vvZ4_95%dH?_b diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class b/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class deleted file mode 100644 index de08455e8dda9833e9d3e15885b0060d82e027f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1158 zcmai!OH&g;5Xb+Mgx#>L5D5xCP!R(mAj7k?2!&LkIi)-p3#+_sk^zQFcH_>huP@`( zgBLu+Di5AKaquHq_9UA}X;r-RcF#=z`aeBgd-?nO4*)yZaWIKH2gr>8pmEJO&l+#^qEu)`{f`!<&ip(q0;;$tZ^;8=A(_rJPfLV=Cz>N z^!&Qw>MRJf2zjL?{Yuv_GB`$o^cwOb)v?8UQHwNrj#MSuQD>swQTLjx@X4Q$K0(5$ zrOl3038JtjO46vz43XE*y|$*??H^-o~*UNJ0=F7m>3mf97!lws>XkD#Ke z`k=IEDn4j^Iuvgr847yDwS0NBvPut7G=s7+THe3a=-p@tBCk7a!Ln$F422wR{*M275DiVu(=4{!_LzzScHXd`(+aRSq1Cy^w39VyIW0&~ck zlil-}!8M9fwA*8?Qfydk05HXX`JqJCPn_*1KBF?`T$bw3Ak~J|anfx#15{T_4&zuN zZL34bY#%v?8w4`<%I9 fKH^p%u^l7E3T?Q51NNwA#Ua303}Cq3Q9Azzq6hHH diff --git a/build/org/usfirst/frc/team708/robot/commands/visionProcessor/FindTarget.class b/build/org/usfirst/frc/team708/robot/commands/visionProcessor/FindTarget.class deleted file mode 100644 index e5cc4b897922bbae3b08528ad1373b3bd8a7b795..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1043 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 IsbmSwPgl2ewEzGB diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.class b/build/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.class deleted file mode 100644 index 2f7cb63530321e715526be737f88a32d34c17f7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 922 zcmaKqZ)+1l5XPU)zw^?VrqNcd+S)%hF@h^nte^-rK`5ksVMD=JvUl0ESMP4a?Ow%? zC8z}jKY$-foV_MZz?wJ9%(3+p727d)VsoRxd~T$OcAmcAiSm@;I`#Bt zZDgeRUPkocjR->;UbnM5av;*sv{e*|xX<85>TJwhXm%`BQ4gi0E7l=GZPbtmwT$~c z)e-u{QzD_u@}Wu-U%m}2Zf$DNlT&df7#g!7+bY&Z#70+8!F7g(f81i&nl16pZo4mr zR^edbK75m0ZPBiH(g{QKJKIf~y<`a;zl=IN}`Hv*REeu1RvODWi1rZbx1fdjVQLc%`K)TU1DLha@qAzB;9blo|X?CUOk1J?cIG|k^Wv0JZ}M6l0G6*@^5q{}M@Jn&54I*jOJPcf_)WN>8H)u9(C zZ65}%tp%@cEN|L@EJzFG8Z#aI*Fi_OoJ>B88wkM@!jS?u~m-nT^)p1GkfWYyhtOu@m z=9xIDE+b1P{ERcq_YRShzS7*+DuEP+7>53uCc|8Biaj$8a%vcs6G&n(frl8k@F;;5 ztXf!0U>zF_tG#)yo+l*`<+}a4=Go0fP*w3tCpH;1leLTOHPD(fc{A6r5}IMAw_3wB zjjtSdXF>7}5}4=$vP<9?5jL%ClZ+9HWxpaie-5id5GN`ZH#^g_7%2NppGF8}}l diff --git a/build/org/usfirst/frc/team708/robot/subsystems/LED.class b/build/org/usfirst/frc/team708/robot/subsystems/LED.class deleted file mode 100644 index c3690d286604818272dc63629ae5bf64e8362ef4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2276 zcmb7G?^6?36g>+Gn}h`+iWRjIQA(oLMIwb3ikKiZZTQiKf`Tn>l1&ICyXo$Wj^F&& z>Bs&l4Kv8tPXB=ZQJtQ*Nq|af>`Z3wdw1_U_niCQyPLoMe)}hY`}j%4bO@I)6U0?~ z9>hoZLd9$lbNDidc{~Wgj|J&|7(@a|IbD>~NAj^0!dG}KeJT0)I)HCNNMkvGl@Q@p z}JY?Xyy=b_*S=(^pr~ONB@KIsvLa*}p;!?Swu*fX zWmFpcBl6J5cuRwgs)n1mq2SK@<@~$iRNr1iv*LQDwLuET+DD$8WA6xZ)ApC2to2Mwy@rnm+tvT@Tuh!Nus=gp08)1s9@ismQf0y5nuuo<)mo;X1z= zm-v0^K~S~@j)Jncc$WRZvuqBYhOF-g<+sI=TY&qPGsMyL5V1#zew*m`FhL7w zjSRShPdQ_6hu+No3)ghh7r%0VzB>Aj(7!CvpT&L8e_i(yYQ969+vM;N1K~mWGXC=s z!kZ`QuTcUa2z4L5n8FaI*%D_+W)72h;8BP)(ljZ^=m{2yJ(5)KF|v!}$>XBTdUK#J ze4bS}#Dyaaok|$uYw%mIA$dw)-?6^7VM@CWO!4TPk*D4`Uu?){#qs}z2XLPp4HitoDc8Ry_G`1lXQkB=9ISqMKiY3FIT LX%n>17l!`<+L=2B diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Loader.class b/build/org/usfirst/frc/team708/robot/subsystems/Loader.class deleted file mode 100644 index e7373eac27d9ed0f4a6764f69d038f5f1480ea87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1000 zcmaJg>w`USTbd z^*mlPc%c%#V`Y_Qc+l*sh?+@VUwK;aVZ!!?&elkv9Thy#)pr4J_?x6W5Y)kOX<*#ZY5Q) z(sD$6)UcVymXB?`Vc>V8-#~3<5q>i@Y%CTyWZr(}1_eS}`o%*cWZdNXszS zmo{aSu8oA*yB*X-LfhV0Cf;)4lxp4}vBM=Zl&ejr7Y{|;=Pj#)xPQ>7ea0$1Fpu6G zL&j-CUXFZ{iq0ZMdt{l*ZvH^#8#x&)&{-f0EF+5*+$YZ;Ucw?u6wzax0Bof(<*tio z)61(gy>;Ic4LGK&S*|JR%r|#}gj= z1m*@w;flAwRSB*(#c2%3@MHpVI07k_a*ov%W`838>3?F|bbogWsW_SLDG|uv**}Dc B$j<-( diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class b/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class deleted file mode 100644 index b9cf38b8408aadb0d538b7bc4d16aee18b0c187c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1488 zcmaJ=YflqF6g>l#ZOc-yC_Vr!@+zP%F9odcHX4&+3?&%(LZLl~B#49^Ia82E8M)aYp81Cd{ zaNyL`z8fg*><1-B3+}Bgt~-G&O6{mxQN34Mc*=QY2<<%=JfPW0Gdd^sd99+e((|}q zW{7#RE}E1h>6{^TPF01VBbH+rC}>`Kx5=wb3jMBnc2q7Lxw>>1ir8hK-j=AhdJ&~% zl_V+Qm$zk(tHYw?0l~!!vKExYGuP-FJY{zKEw6Ki*|SAurLQ#iwX$&m7a7j~w_S#r zvmv(3c1Vgr$k<3?*us4q4{+7S1a8=vG~pq}Z9FpBW87f45E4!8%ixGqq*SQf!V?=$ zk!>FbqAmg@n#T+)XEW*Q5UoIzYtB*CbsEl6R&k4O9a3t%atbY9>D{DX7^f!B9uo>~ zJ^kw=ri-?*5C+Po3c|(4K{cH#OXq!E~>hAaLfA24J zy+74n+Zw4c^JAR?8wBE^kVQnX)BzG}lbCLUY|=js$Y^q)DdRg5uakp~!ZyXJD-B!M TF@Oy+G1CD(+J>G9w=nw`MhY=_ diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class b/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class deleted file mode 100644 index 19df7c07826d73c70819373cddafe2a2c1c33490..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2454 zcmai0TXz#x6#k}7b7LrNzzP&-tw7U&3__JlD=j8es%a^t6pIR-B&X@XWKNu!1W{4E z;tj9A!be#$xO6R-&p!I#i1urL@ACk>k3|$osayrva|-H@af9XBk)J*A*CJ+eTzva&1`Y{?szn5|cf!k*WQCP`9xS<=k~ z-8PsHg%Nkfa17Z$S*_|8q1{AVT{jCgA&85lbBw9W30NhkAnpivs-hc|0A-3a99PyzT9plP){i%m zp7!tPR)t|J(-e#&tn$3f>CQ?~>NXip7G&Kni7A6s)DY95YkEUhaTKEpdfPI}2U!&w z4y%wDjiIK(fvcj9hKd__L&Z&2coT1_c$=47%)Wzh74PzL8{-Q4A5jbyPvb}o@2U6z zAFB8WAFH^-H$UNt z0(Vt>iL8R2GggVpZV%2$$8Zg4srU+a6>M(G{d%bQ8sD@iF9=hX4ELsrZ&~^9qXD+} z0L8R%HYoSp4O*euHq@oU3fge6tuTA1s8@=5>3U8yj1twed%ZxNwk%<1O-=~qXVdw* zUJfHuFw{Og>nu{Q_Hx&)bF(k~|2Mf4H`}5iY)2G?^FCW8J-j2 z(j@RkLp0Q$ME}*GCUR|Q&iGG2PrIlqoXfo%M7~~|vsPN6DHIP`9o{HwZFf0AorE<& zOmlv8<4$p^y6u*mbFCGaZ5i_fB`$cx6!fL@Jl~p0khFqp8&+j3H*%R;t0G*Q2mb-2 z6h+Cc&vuiXs?!_^dSpltCV<{bN@J+eoC7>T-;_i2rRbnvdMA8}Mw<2*C?_<{wKD=jXJ&A5w_alOX=%o<0QxHQG zK!!pXCHNBrJx{>raST^*94k118pi06n;;3G2EowD3E~v8*9`Q4&y#G;S=3j~wp>(J zFOFfHPB}y8&`H0*Rz`jgyFKh-YS_cTnyGGIWs1JhFCc|!-((-9p00%^nR*VV$f!bC zo5oLv#{E>1$-y;~{DB1p8^=tGxx}iu1SUgsr&ohKM&`JhL1i977?_(QbLU$EZkki@ zJhEZHSIG#w9!L%K-}wnoUP|qyfOmP==W|T=d)U8*G)3hCE|Td5^x+crV6g@9z$)Sa ziUZIw`ihe9%1bRzonb2yta^|DO)LKe^*S645K! diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.class deleted file mode 100644 index 34f78f2f356f4799221e12c6fbd6f50add7191b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2960 zcmai0-E$LF6#s3LCTY4&X(oUQ6p*2mAS@OHY>^gPpg>!Y*7BizY?E!WknG0Y4N$*O z@mpsc9X~)t-{iqh9DM=eEE7 z`@@d_HsY-)j>hnK99?*#3HRVwq|f65KhciMa3YG6k-pr`npGF;gbbNT-$vi;@6Ja0 zQZt$n!(<#eYNHdu|}v@8^2D9V}@g&oIIlp?)Lq@i&oh_N# zr0KYx%nIhjDa|sxv$k{E(R`wh!893!is z(R8cN z#&yROFjZsN%bTu(?jhUBX=OK{V$#WIo}m{vuiv5xYo6woC)_F5Gm5S@Zn~yz9dPW7 z;kvd%QkqMFGN5}p@$&NSIk>Ho>fgQ3m>RLY0b`PJW_O;;7$uK>>8@qe(=(@s^^(7h z^+4K5_`xb%q9mj7tT{PJ)~$@t$>m}D3}@k@FPcqva3)ba!Bn-nhLs(&2Xr?-Ve1al zl@#6>fL<-6{PHA+EYRS<}fTuk!*2%W8C~=*KfE zwqTQrhtaKKE4me|xx2&dWzViTRq=?N+a^P=41F?e7dMeJer}?8R>gBTuVMo>D%f&& z=X0l4K||)8is$iy%%)U4giUl;zis|MwJKi3Kol2Lyo8rk>_B%Euc&wxuc_E9o?C

      i{bJBK7$T0ysR+NkH4R<1|dV|{%Ob9X)4 zk>%yrqJmxZyv|YVbGwv>gg%4rRIs3q(*Y^+))K?^{B{^~bgA_8-E&#?%z`$odwF)Q zg8O*KsF}0+3udWgWDgjuYs=f|IJU!{=^WrEwo0jg>>eu4!k#3eAAXAFbhv`{D+EA9B8S#o$Fi%w^DZ*Hl(;3#4)OsEBY_bt#yEpIgta)r z@K12pF@|@Xtex~jTfpl#A&h+(^8NHwgB+%ZCWP09cSJD~=F)x~;3)L|&V>-=3C7ia z3HvEx5@K#p!fp{Yh2<%%xPg@wbga68RkXETyo`Cmc88$oyn@v90+IQMXp58b)w1Op zI=UPFY72W!ZFL5%reQSp8v>!wioo5<~zQM44+q_CF223J!}5mQTIPymIi zX`yUP46d39K8-j%zRlp@VLfBO0JjGZf)13mHzlq#nHEDv}FUJ~gE{DZ`kg^3nk6#e`S4_p%?2vDX<-1yH z=(BoXoNGan1Wi;Rw1=eNHrK+KjiK{S4A<*o7_W8MW+E1>O-U`e{staAG}F#;E&(^0 k^q*%rX{r%%sODr1_lXl_=5WB^ud@y+wS$MbwE;)|0~r{RN&o-= diff --git a/build/org/usfirst/frc/team708/robot/util/DistanceSensor$Model.class b/build/org/usfirst/frc/team708/robot/util/DistanceSensor$Model.class deleted file mode 100644 index 9d3d736cae1a2ffe3ae9686a58c8068d80feaf91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1394 zcmbVK%Wl&^6g`u~agv%Ow55dit2Bv$x`jZBKx`TzDuss>l)aO>i7VHZY$tpMFM&V; zBo-_{La0)$3Ko0-ABDJgY7mXQ0WZ!yb3NzYduHax&u`xWG|((y3iUh+&>1c;Tx7V! zu*hIAEENcrRa{Zg5Xd;*qppBx2`EE*FeJ{Y-%E6r$42(?OOLnTRqEvX!dyTblW3Q*Ys^($H`1Mv;%576LKbOQAdL>izuvDaYcw#A@Uq-SZBe{@~jL1k{WF$Kj^T@C#2+Yyy6BNn- zEBY>kUX75_>k-m=MTwBnD{2HquU7{Vvb3luL{wehA=p9Ii;&xvl@Ajx$U2Xy`V(SL zX{u+`=Q)nz1x@`DI$oiP*Qn6m26d&LID+F8nXwlk8M{eK#(wtpu_IN^eIlN_O+9#5 zSufJJi@aW{?w_Y9|Gz;FZ|QR1$-Z-RTBP~Yw~UjrufQpsjw>6qhbK|k<`*I~r1)!sIEAXblNyduEYM99aG4&N_6zlh(((WR diff --git a/build/org/usfirst/frc/team708/robot/util/DistanceSensor.class b/build/org/usfirst/frc/team708/robot/util/DistanceSensor.class deleted file mode 100644 index 0c4e120055af1ac75bf0d8b0764cbeed2f285bec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2276 zcmbtVT~8ZF6g^{mZ7>_a=F32nmL{$3EzRbuC0`H-F2SuyP>7I<`m)#?vvk?D*6Z-r zv{D}W4@#A`uYE}sMJho`r1rhPraz#ndS-XA38AfMLEM?SbLXBr=bl-9`}4&w04`xU zjSOazzy8h@f4b3+8`8{5Gnc~6G*XzCi;^@SrD+zVxh2h_+$~GwW;B>{Twe;(%vEGmO3ORdwGqwx-Tq);)LK_4Sr-*?P%p`i4_AR|1GLK>^IsXS>_?JgZ(e zy_;^!sR@XZK>vnS-+0xXwVVg0=SR-FhEq2gyT+ogTaM+=2uv5s|GALjsz73%*I`8! z%Q0`aw$@GWp0RGzldZT_!(KH!ORghl!r!n+*~Q~S^46*9hC$}p0a51PmcZ=)D85u$ zll7-NR0{MQV34c2>F+l{AYLev<1Br1q|~UJoh|8{x2;CQtaY4SwWxOjCsur;`uUR4 zh*%iy#J`p+&AnCE_6Z=6>7ccJJytVnr^&vvDt0p=u_%D1x!>wQ7E+vr=$?b263p7G zT9Bnz4vT4k&c)ZXlwNULUe#Q%WOoPlFB&TI?56R+P;m;kRg7Xx#ke$Y;H1FBzdj0i z?v9Ef467JHPA=b6@g62syf4iKX)a6BGPUWcY1S5R zLDAy7NNO*U`gD8`UAySkCU=p3#^4wxXixFW1SU$5=N{6WW%>~&JW-T4m5{PxrQQ^v&uRZUuN`^*5O$@@~!?3AL2ba+}z}Rwhw^2;t!**}_(3NF(PR8T2 z0z>@c%jLmP4kiJl*fLV8ik6pp9im7wpnQr12#c@Ku1R1v<&JRhkK&tK>K% zzgvMeGq^%UDg?XQW?PTCrARUkQ~l@w)k?cn*N!}_96tQ@5r<<`u~fq}c?0X`{~q38 G0P0^~masDb diff --git a/build/org/usfirst/frc/team708/robot/util/EncoderRotationSensor.class b/build/org/usfirst/frc/team708/robot/util/EncoderRotationSensor.class deleted file mode 100644 index 83fc5188c9438112026fccd12309f5aadf52ae10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1059 zcmbVL!EVz)5PfSqapJm3DKt$>OKE{7aZ3#n5*46IErwIdp+&tr$;R2rv5~!j&q7E9 z5C=Yhk3!6DLLe84kmZ@#^~}8YX4l_;eEkOC5qt+_Y?V>MZDqEV*>P|OcOBfru8JBq znl@Sti&@%9Wgx;Kmpo%&0fQCuzGT>H^WMmR_eS`Ak>yfFvFKd-FOqKB9~}Bxpg)o#{>A((m7x@Aa?X=HRXR!$m&Zw@FwAC)Ca{!q zc{V>7tEtJAdb3d#GEQl_gjhT0=_u>+mqK+}pU!9=>EJSa8@i}s!-b1Q7Zqh3EZFc| z>|xc$zKi=faB&kG42S5{~X6642V68Wd0959q+ z8t^FNoK8axE5J70yE5HK6NXYrk)d>JPtwU-pmW9&*=w|lDYHQShW8oF+Z)61_Qx>2 z))>|YUA0WMrgK)Pwnp7oX^3@P#~QtWN4r!{&kA`JDLkelg=pwVaWQGPM%5GK6U_vu zdmmwZLV=t~E+TKGUr>Bcbp{lAQFq(XXs(XyQ#3|A)~5ZAsK2SQy~Z4OM>E(Z1r6Py yrq{(8-y+tD8~ugq0!(`y>oriFaI+`e?B4^aXebXhU7-s0|DaZ#QQOo4Zv6yFY}jQ0 diff --git a/build/org/usfirst/frc/team708/robot/util/Gamepad.class b/build/org/usfirst/frc/team708/robot/util/Gamepad.class deleted file mode 100644 index 31fac58578163b7d4c691fdb5b1969ffcd4fb494..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2549 zcma)7ZF3V<7(JVp%{E;^Ut)o_VyUQ`2rN0_iq0B_qRU)9L9PY z1DNhY5~VbUnKZ6pHihf*sXxd3KM}nlhPf2x(@5h31s{s}BQboeU_s2Eq+y_(Mg>&` zrh-KUwG@^lbl1&Ax8z!t<%Js(q=JNPXYEGIH5%@$QTNO^RbWfnoCrx0dRj}iSFf7R zncG&YNEQ)~N$8Enr>)wOzYv$8Is$~XL~>$l%qLDtP^wL%Do90+OkDO{*KRDF={!z! z9;tdWVUESa+~PthRM&}3M`GP!-h@$E7G+YD5{62y;rNmj_P9y6X_Cn8icq#Y5({aX zXHfS-)ikPQqfw=ylM)h5+i@kxC#;6$o+Q=^xmiwU?W!qZd(mo`m%Np->C71AIwO5W zyJFO54aX8V3?|$qt0iGy(ROOO*IKlkma8v172P$Bm7@ob>5g5tUEOo7x_-e}F=^p( z38|Xt3MYf2LW|HRA--zVDVD8PmZywnSR=#i(k;($Oy7P9T?|b4<_84x>>_X^puXZa z7T0n-Hr;}G%3d|A*P0TNT46rN^yG?&&<8&Ex6B5K&DM-PX|$Hgw&8GvZ_|u)$@ZLz zdEOERs9^&KZW^nGieq?3#Zl~3Vc~QNH&rZy>hmw|go+iMS8)obCF~HSdfjN$^pfjX zjoO4~iBl}IQ9&OZTCww9(D3oxQ=!lUo|s`C&i`3fTst6#k62BI~uM@u!!Gd3lV8Ne@V8Ne{V8Q=p z1PlIs5iI!kNALk+J%SGszZJoUh{q!MFdcXsN7{bK^n`bf-lQ1g)#Er$bb;|0=kEN_ zBS`t7UlIG+H}E*e48-T}5G@|#Z_QzxAQ}kL@h(mh@kO7OUjlIrL((si;6E^$AKE~? zpgl$+3;CNLkjy+BQhtOol(+|3TYIQIWL6xa)*xh#Cpn%%FPZvrh8uPcBa|rWj`&(e z+jU2|F1B07Fecb&3}>08ApQ^f<6SYXOt$rSp`O7|Pv-0Ikk+*2!cR~*tra3V2G}id zmAoaWn4ykY)|rcF7;I}8Y-`9yG^7v{8WNOn4(B-vpT|R=Wg$U%z(~w*Tjn}Yj#w+V z>1DPqT9oh}3L%f~V<4IT1+gb-YCet16eff;5-#HX@Z}195IdS3{uaGLNEf$-UL+F_ z;({yKiD1{4(Sthr_@V5$pKVLahMkiOMNEb6$07Bx)FoUF3;xZ5Ld^Z&k)C^m?ml$` z+l2BBWcs%Ac>_K96m=vYqxUiTu0JcUKg?5}la~$i;?K!@Da=bm@;Yb!2)0r18qeNs v?B%Rso!j^+yIjW=+~F_IXZ(4%!`0966~4gtobTao#QFPe=dX|{hO7SpL@w^) diff --git a/build/org/usfirst/frc/team708/robot/util/GyroRotationSensor.class b/build/org/usfirst/frc/team708/robot/util/GyroRotationSensor.class deleted file mode 100644 index 99caeadb06a55296a1e1cdc547dfb9edea1c834a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 731 zcmbVJ%SyvQ6g`vHK4P?LeN=4)5usKvD!xDwibXfYMJwV?(mK|Wn32gu@vB7e0WSOi zKT5nw3M#rNZf5SebM84Ox$hsZZvfUXVK z_U*N>&xP`JSh=EgX;*6}jpo|=^63H5wi!}8!V`LzpQ}WpJB5uRmTqeIL^6h+nPI9o6B3ak}aw2KnvFnLp7v! zw2)qtd%jc@G1K9?>UBbcM0ugc(5JZ1b%ZF5*_455^L-H#CVnd{T{<_8g)H(G(#WJy zvM_{U3nR!gtp6(&!%7cxKfi=wu7{Oime!i0H8U7tT&faOXJOLWPiUX|2Hj@m1+238 z1ml5_0gKK-;sSXjF-j9-7$7trv*|5Ih~^?yMr!mEx|*xRVf2=%Ji>TJ;-2bQF%|U- jk&+d2x=OTda*8u;(EV*b`IX3w+>7K{`cq>xavJ*t3l*Fx diff --git a/build/org/usfirst/frc/team708/robot/util/HatterDrive.class b/build/org/usfirst/frc/team708/robot/util/HatterDrive.class deleted file mode 100644 index 95195bf9adfa7eff1b228d4039e34b5fc3f70785..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2402 zcmb_dS#KLv6#mA`II$<=ByHSD(=}acP5oCR4O4&HRmJC*KM{ zspiaI%a@jIyTY`5&#l#L@5nQ53-avl#8;4h#)D+^5j+Kn@{(;gZUz|%gA)@i2CuuT z228l216thWYbr6 zJ3yu;d#_ommWJ&(r(pmo4O?W` zia`Z?pRaQ?%wbG}fkAP1K86b#F5$MFfn9tJHuI`R z5EAAng@n9dCJCJTg-2fHp+L6{U6i+D2gjY%e1I^|0=siV+wMZiZANGf5l+!H#B$*^ zbmhW#5YKI2L*kpj!!XAkh;i(LN^d=ocSvW9e(E>jMXq+ynrr#R3)INBo4=PBRiu|G zg#t-1h66w-oS|swi`BBJQIc~z4UuS0 zF-~CC#4Kk_EobO=&}-^BLz7w7BK1ir!x-lH9x0NNgjo`mh0%~k5*ZdV$41&i>PFZu zuaLw%t^4pQUgHgV9i#kPo5X$;aR3*nc^8LZ^IEOoFmB)o-p5gVh-3JOJHNmfzTyr1 z7UQ^&3H-#94>1)K!fxG!X*!K^dm@+4 zvc!qI=zrAk@t`@1j4~ad9u9CNI;ayJ)QL7~g$2|T1) zyE@sb^1jlC!kQj$`>OJ~3w;CnNx1-o6XV2AkETy%zowzpZvDZl;L_m=-w%)PMf0(& e2Rb1J@K%s@h&#rEtfiDp>kn)a1}3-)Ve)S>`@q=% diff --git a/build/org/usfirst/frc/team708/robot/util/IRSensor.class b/build/org/usfirst/frc/team708/robot/util/IRSensor.class deleted file mode 100644 index c93267b57ec374d7deb6e041b0b149a00041e328..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1342 zcmbVLOHUI~6#i~0Gi4Z3kr6_OJOs5Zj}8?Ccy4D3E;Om!rstgb&b{Zm_dEA~`t|MufC+3$=)=tx z^kPbajA?FWxVgp6tVD@93G-MG7K5ALpY@(>aVRNbQAmD$!N*I=?AL~ne6oe7Us97o z^3Y518Yy1b8za%0p;tqqnvXR(TQ)*&&OHk>6(uT+c*!%W6@3h`=X-*hT&eBa5(T|+NTsnc=C-m~3!)iten+N`*GId5zm z<%;bL)hf-NG9<=524T)Do9+U`d_+5U)o6|(xI|lJ2xrW)v0g3h8P1NrXAyESW9M}% zr#mM9_Q9ZAH0dCtjZkV^-Vtc?V!o)85~K*z=wD)JEf{Y7qzp}wXqp%aOC1=FUNFv5 zp}D-}AC+d&hNW%0>g0`OlW(%EPBQjDKhR}d#Wfkr7?iOBRmLhe8aH>jS%WGfBO{A- z8TX(vOr5hKoM}TwKW7@kAj5D2h3b1{7;j*9T>?);x>F_ZPKl&a#(qpn_z@`=B5c(x z6bY<{gi3_wY|AA*8Db4kW_7nnw~;P|WjK$hRwT^_?@jwzZ%#{!wRALx0eT93^hg5e z=8{m<%~c^E1mis+d!4>CG|>+bV?86sV6Q0*AVO9m4|G6)f+$7(-ZaE8OkcDBBN(M3 zJQ}0I0gB^L{jxjsTzM`Qj=e?T2u+>~dal`XLhK0Q2|@~59@?*Hw#O{gR(91`{VF~y zb?N^ZTK~n+^B0B?61d@?K_dKdaKnI&3Jb+1DAurJknYuFo`8WKcFQfnf diff --git a/build/org/usfirst/frc/team708/robot/util/Math708.class b/build/org/usfirst/frc/team708/robot/util/Math708.class deleted file mode 100644 index bfd10dbbf0db873b7578881e37f730ac6ae6e734..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2595 zcma)8U2has7=CAWc6N3<-L^}+Yzsv|+|E{H0W04hixjlb0=lIYP;quTolf^-mf6`- zy!65vNw_fvB7Q|;^umM~65V*=5Aaub>2ENE_`GMP+Z73Mo1A&iIq!L%=lwV*{o~1R zzZ1~})smE^x0T{9%H^A zDbem}*Ru<)=Az>@{lcPW7JSR79o&1U;JIbjFSLB8T9`5XB`h5UN7eEg5~=zm|MHU( zMOODoB(ZS|Mr3tATNu>U>z>tYRegzKp4+M~;Hytg@e!#G$qSARYYLFQRfiCzYSnFj zNq7lhX%+joBlxLNUnpJXa-~e+ne-&OO-!LmPMk5R_Su-luyn`U& zq_A9Oj#k~9U|e!+5G9)ea^6@$j&|zP)kVxQ?tCIlUJD}=JQ0N z(dYU~lyK{OtYn$68=kc?XH;7tk$}->TmB`>Gp)LR#`9dDX=cmwFb$m&w#&s52QqLz zU3D4_YvJE#;-UZ?l2$_#)LOOhgjO?FyQU)m;6yzWL~e={4j86sp{|B+&AO$A#Yt8H z6Phuxjo_QXR-ftCS1ixAF4jX2Sq}>4;N1Eq0yVs{<9mj8D`-ZE2ApP4k=Z4*#*$kF zQBWG>CE;%@CQEJ$89M85_iADH?O8Tf42?F?V4TVtnUvRPHxCOmrIE$fBIV;`YqUg; zM$0s)(NSLBOZzmcuveAPaO3~K<0a~6)x~h4@!)_Fr zvTDxGD!N_C$~oKB&4*a*1{x7S6BJ`- z+DfDNvb7CXL|8Atl7+P$mLjYjuv8H4q!&ZNdH68K&>%&&uC+-%m&;cMDQ4bT%exz- zNdY>Bqq-p8PEkHYy8y_)A$o~&@JS%HF|0*}XFeo34ic7<$mwm0w@KXq4$?9qKr@0Q zLE|B4f?kHjplGEK>KGznC^eU>=z8Tpc{$mIq;`>MCq$YFMWu3jC3W{c#pNGJ zj{XGfXjj3`cj2Wvc&QMt0Ph$@v?8tucX9|l1(BTao~*3r+LUNh^67}LbfvMUgWE&< zMZ`Etufmc6J3+67ux_Y$c>EXY8H3~j7~1F;>(WOz#HU4)7I1u#ddUWv(?vK;2k0R5 z5&G{CXt-U6=`bBZ=p2$l(IJF{)3~A``H_%Z$?3M<)fqtn{jM}AbPSmMQ|Pz|CqXCZ zWQcPat19+-xfgn~a#m?m>gnu!B;dwH5WO9^-VhFlsVK6;)+tyDq`uyvcmx8zL`6Z- zroO{!R!!aek}~U@Y9*^=)e19X=kC|f+!3mRUKjxb(Z@ht!yWqsZT~4c;5Nd#Ba{aB zu-H*r>?kdEloms!NhJR?G^--jaf&>qUD07=XR?#)4-t4AgqhUgST>e7dE|O4V{CD< z0$CYxbw9)Gb0pv{_0v5(MEARrmkHk(V9^`_Dz}! zYjqnsIPh($se$NU2ju91*idXpen6=lf2(ViDg9w?Lr;*VZ*XP5h5ql5st0)6zQ^|O=DLUntCYmgpyH7`WsLQnxPA!uxp{Pw4Sru u)Ss2_eYJiGI>`wd^N}D9o~v}HKIu+<(sU8T0Ud5~e~};WO8|+`TmJy(X`6rm diff --git a/build/org/usfirst/frc/team708/robot/util/Potentiometer.class b/build/org/usfirst/frc/team708/robot/util/Potentiometer.class deleted file mode 100644 index 4af6282891cdf3c2478b29ffcb81a2a21da282bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1101 zcmb7CYflqF6ur~ewq+?$sJsNNh_s8ch$s+^p@D)mr6t%j`iX4Ic3s%+)a@+zQGby! zv65)w5Aa7B&#V8& z&;K?!{wHXmvRejZrft05|6OOnwH%XC?2+x-;xVIWuC$%6Gm32SBjkt5wrf`WcEj{) zMniU{%e-kgb;Gk|+)qZtOS{WxrOZ7`_q#t9Zh1{zm_~bTd0qE-gA3gkwxeI7#|bE% zv-Ups1oka48gT=%YU_Xt1BdAXHg1`suQQy>%R}ixg6MpJMcwQ|ZGVOVkx-fDGC zU?nkA|CvobEjI#f{KRLIq(lCvvG$}`x z|95|t@-)wASgOz+!?pBk-RDT}8!gj za$W&TV$NtENKILg!k@rRe5BOV)JAk6e=-qmzC%NZq=0mweU=6QJ__I~fRvI}amEx?A+sZb7H6j_{qpME8fLlp0G{$h%ugD@-6)xeMU(HYpJp2hFUn$*Yu diff --git a/build/org/usfirst/frc/team708/robot/util/RotationSensor.class b/build/org/usfirst/frc/team708/robot/util/RotationSensor.class deleted file mode 100644 index 0504eec117704bb18220dd4c2ab20a89fd8c612e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmb7AO-lno41MW-)wSB%;t%kq9vnqMK@mjpv?y5VeRiF$Q?@fOJL~`QBzW)#_@l&3 z_2SVS@{*Ulgyi$<{R6-WCOIOEGHhiS6VeN9w7(=oyL&T2d~Kf;VOVIR?z&~E+@mZT zX2ylBWHXaahy0g}{j+Wf$AxvZ=-RnrV$^IMYm4hBK_UVe;MxW!sPXpGF12JKpnSdKS1YFx(sfORa Cbyt1> diff --git a/build/org/usfirst/frc/team708/robot/util/UltrasonicSensor.class b/build/org/usfirst/frc/team708/robot/util/UltrasonicSensor.class deleted file mode 100644 index 885fa3a4717c8b6f70d6e2e7223659317a238b7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1258 zcmbtTQE$>v6#j03ma$HR4JYEIV!JlC~mv&+n9>{FdbI&>Vp6{IVo!jrfPrm`EU^|8c@-bXSVS>cn z7@}C_;vN?(d_$2?6nEZXb^q7TEccf9$yIUZ{oDGF)6NHOl_gXptTBjtk4wc;ks-2Y zztT+xxo%myvumoZtGf&v4cqA|eYaycuBUVyP4RTKS1qn9j@`CBrSBQ0QZrmnwKTn{ zTdwUa4Ujf{>~e*$#Vx}!yoU_ix%!3i@-2q&E)~fTZy1*Ttlw+v&c50<$&+l@nrgOG z$KZD040{I#wXil$$`_{RsIF}pn%@MKFKGuVaY3B0I(d$-hJZBhhO{(qh}H-gXOLu?tU5yU0#YHf zd;<1~Q~}pW#%KkmAz}s@(iZ$fgc5PfUAacdk}LR$(HXn~@{Ahw4JkU$7T1&Wk%X;les>%=u%k~p&0l%K+d zGZ!vMEl3>T&adE?Af7+q!X?lgNxO|T=H-kR~p}c z66EJ%&BeNa8>>+?Q3HWny(Eogo*n2kGx8wqOB1Ql-OYP4O~S;;+~}cvR%PE8aMW9! z35c#hk_;k&`JNs}&+}0jrF$wIa;Mcx`f9kZQeDLLrej_e zq<5yFF{zH@D9z+!4!WHjjX8AFs5FjDtwO-7;vz%9CPLfpykz38QT^9DYElz>yGfq* zqo=wUt@)?p?L+lO`Do&*k2!cgPQiC^&Bt|Y2y9Jpp8pIfun`S%c{I_ox(Iqh9UjUs zHzpZpa<7tA4$AWjrXcw%*QLTrtJCgwwz1A}zfdt|q5GYdGO-m)%jT6^QN#e*J1AoGT z4`9OvsRfAzAHY}eC5YpPSg;DVbm!hV_ug~Q%>4ZQ{Re;@T=y`IOEYk>TA0fouHb6p z;V**xT&%fR7jR=WjK-=jaI>4FvCOk0on}TJr9EjPHN3NZSEfmr7?~SAkk6~^djgJn zuQLJB5op}kBW)fCY`6ZWN2h(rHcyg%BrxCAqi8Q5hEaN;!U1=h-K3`mhbq-YTyHw& zbwRo_35`j097ky;A9K(bV~#v$R2oO7)*#?jae)iiL}**>S4`YDs`qABjcZzOKgrWx z^h_6n%~t(x9jmv>#~e0%%)s+83*W`2k89WxxIMvH{xhJ!R@BesyRnwl70?^#@K}bq zG07;C2bG|5NS<6U0mWabF4a{!omQv)6zhBd(|iUNe@B#JoUdtiSzll) y!3h~oV1I?Ph^Y@B;X0q-*q@2nWB?jv-crfoS2Z=q3ehQ8%a8adae;w_i+=$32d+N= diff --git a/dist/FRCUserProgram.jar b/dist/FRCUserProgram.jar deleted file mode 100644 index e5d50f79801e4c09dc3f9fdc26ea6c1f8d2ab73a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1302117 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 z z;q;rH>=ARYn{S+;%hQNKWux4pnQ(hrt|a$Jqi!9KgWNn&e1(;Z5sr$boAj0ffqsr* z_tVGG1batD-3v3XPk>_3*a4cp~e~`w9p5w0$aK6>k~rR5l!5?@uN*Qh*a~w zD<_yL1@mB0;546QX3L@(99k|$n^=&f^N0B+=x}vf?>x5KYAH)Eo|bsIUz>PQ;b=ElyOPNkNLzR8DGPky zJPPZHrE@>;0II7u=NdGh02ePKuPgvzU}4#6rrEkqJ%!g8JuF7 z5Ei_NwqpcS)V^vs8M&hR|FHIs|9Nif`ga@SjvCvx-NtBaHclGbY@FON8#GB{+qP{x zX>9wsr`BF;t{1;O_viTs#+&Oq&T;BEu3ioYs)Ba$K(vD;*qVv{ur?RMC9l1E*9y7n zfQ)QR1LvQZyb~w^;^|C)iSoi=$Adc2*OfXttHGh%We#_S%9&W0uVctBN<`v?NBCfy ziSM$f<&zED|FyFF--|7*|ND4qX6*=ypSlM6mX?3pY`N{UO(zCjLJLqL@ecy@zaJ?1 z$KgVt!*wP96kO!SYW(iY@|HRrYKXHmWgnjnZ8gQFNA_8erU*hbfd-O*>JXeUA*>z$B*+^E<>6dV|%~4$mgX$r5(+LhCMmWi_Hdf7Cw@IPs0I z5$?-Lep*7R!4ZyJVLnh}I#;iOOoouj%K5*)Hh5 z3plm7mAhY6+8e3V%QD}n3sfo5D9G-V&se#$#*)~D_>7}oKhYBuh*5;`OWxS^a(#WI zVyLe)QN|AdZJb5xjQzQ=ST0uGD+?NS^JTX3%J;=OQ^ehn_At>N zvx-tN5Bp$f(t$di^iiL}0r`t=)>l4deG%MQ*Tj-cWql;6ngaCwe2Bb$@u{q3MEjig zs#mz`SG4wCJM9zv!SH1H(UfLc0+lLN(gy>AeC7=jU*AttTlnjo818*jG)NjFt75aG zkXgxMSyIb;to;bwd!R`BNzTlap&zf*N5_DGP0v%y`2CGf)r&YTS&DUU>JTX?S?uyA z_hKt7Kx2$39E~}HNo&t&g z8`l3$p`6p7iEM7%?<$J^x9P+(y5Zp5&!P&^<%-dw56Z}-$NTNH(cRE3Mh8ufU?3$OoOtBIS|Npmwp>wMfSA*p9g(>gX4~6F8rC$#rArHKJ7y zT$hUiMV&US6mwh#hJ6n?jocER5xX4bZ!8o?_aXaTq&$@heq868Pm9lm8gK9@;+O#V zdPu>mlct$$^xlU78s}&)a|@Cf=~CxQs(i`$Ot5UyDo>U9%~W#pH$#1mOR!vl@xJeK zu;yNU-mt{n7CF~v0~R}?)lhn~uZ%t**8sXp!&(*VDwFqWu`tTG^v4<9&-e$e7>mNj zu2Y8BAG>xPrShsC=HTG>qK%zUp|#Xj7PC?noO@wix*dMPsTG8$v%V7pBf>W2_$%AMcG>K#_aoaC<280@?kJEc`W1yu5E z=@t+Qr&wZcnIpnp@`Tuu?n7QQgnl$f9bnUlyDsK-elGz9-Wnq^C*3kDO(!omYCIM# zF&85({B#csRVXQ3-YwtaDk4uBc%U`h~FP zBCzF-1}AG)u%}_tP8ULo!LVWon#%O7QW$WE)a)MaHvt9|_KhGWFu<^=m16w=J}Z&Y zEHy;|rN}g(&EVf0>VETN`^$0dHy^dXoYDU9IQy6W?%$*EA8L$$y9Iw_%B9M~iobPZ z(*gk4LHQ_xp6Bwu=U6(I%JIQeDuTrw2Ae^LWC#FhlPzhak8RyFnAR(ecBEnIyFz!~ zff*an>WTHi$Rw(e!z?NXZFkNY4&x_n)4D$1j{rR|B*&T!cQDS0;%sa$*lW^UeF1R< zC>2+U?g~UyQW_SV_A7)<#@F4an9R98G)L|3fS^>sg;t{Bpj(is?i+=$<=`l6P+!e% zNU-2X(w2TcL!}(@6O+c)L4K)+Ts`Si&5zxmmu{R#I@as>bW@gf=HmVK^2PFG#zz~b zMw%Y@T(!!2!qAcpClWBimgl5M=6f7s5Xdw}kF;=`t@ZW- z)XoFW!tlU7y5!r5-JE?QFhAQn4(k#_`KVd_bT^e!<}#XBFxYex6f8pb>PBcOQLjYH zyFtS5_IUn=%N3jxBnhsR#KGjRf#3jTy~!b5iv$bZTa=PX1B1QqLy2CpxQNlBs>vCaEKgT*X1;rq z6T9Nu0z@(4J`+4rblL=42gx9?LmYLpU0t?_axAXSgWs)vn{t!aLeIOQl_I3K-7bHj5W_Pm5_T#EhoGUn2zW!3 zvT+a<%^?f(9}YAlyKj2eWTySXVn}R++Ap75fEDBekkNiC0UT3->&9Say4@mI=DEfY z{ES@CnjsXjpd-0JoTrl2=MQa~x0#T*AUo_vPdkRHQtmTNx`1QDS&ktpey>KY#mVo- zkCkl~v?i9Db3>&iDG8R{5HOsx3+GlF@+yF95fztLyiZ4sm!nY_C9oiW|dY*R6va~(T{W5atr_0 z!}I?~KK0dD|L?k0cypH`3(!l}3(BYd!8XC4H~IGi|GdNEpu=_lN5WbfrvNH!ko(`3 z6A4-gL}O^Eetwgn9>|nn>pTZDkOnf(oa;#s+%$Cvd1%?(0Us5f!P@S#kdp3yo_XVZ z^0m8lj}L;D4*%}x?CkvOE~9zz_4x&)7=c!=+tlL=hFz(N>8HnyOR8c@d%1wWFa)cQ zNM_!1p&QYpVm2ZS6WC`Dax}9JCaz{U`k`Mz0`|&hKIeKrRm@Jsq8!sUzi=U>e=Et9 zjTB(usu;7`hFi#wLUVE&*jC&)@7ZuYfM6_RKL33*4|67g7VHH7V%6(3@U%MeE&h2G z!40p3Wg!oJlfB2oKZl5Tj$eYVwJD*uh9|)@^w)AK+^gM9zq<9*T`*tSOl9gav11%#=mT^ zWZ`|l>O$9K#X7C}b?|j;0hqoulANode6K^PuTuH1W zAnTPZO=MTO6?uxsaMNsx&VL+ELm3;mY;>lh#qRlDSTE zviU1{=vb5^B1m0_BxNor!?0Q9o?uUWda;W6?(e){zfC?Rk5qp8>x%r*!ZDDhc^3*I z+8C6Z{qqXpzli=|wJ&@&z6W*uCMAnPN%y%zTck&MW#CjFf z!pYboJnzNyDhNe-ediN@G3LCeN;t8>;c=Fn>@m*G%ldM0we0eaw!wxZEERjDD*zTA zGQv7FsVCmoEbXgf61&1oK|xF)H#j-?6@VWpfObYW$jHt*gSd8gmP@#dPWzS4RJq}8 zs&K}PLie^v)@%JDkU%_++KG;=TXpd&>R5mPPM79sq8!vyjJU}~SiYl4uPWBb-fUnu zgID9uf8Ge;ZEKzGlY=EZZb${>agh9Ia+Mo_@)<7nC5c~ElD%=9Hxo z$uy$#te}-no3Kq|rjKrcF~`0f6sWL+MeueP#3X&Csn>1>*E}jzz(7N}*P26U5;PcA ztFynbmgYbmRNMX|2|#n1rrbi@Y&A)I^Z4vU@NNJs}ntF^6{h<7{ z`Sq%TK32Ce+^R{YKhiQ=x|?^qIsFnQA1K#F%a|~4q}~=lind=KAL#AgaUGb&C6J9z z2J_xOw_GomQKBX~CqC;sIS;i#h&c+am#)|QTEQY+^NP)|R_nke!5(hjV9Cw>2InaH zTBJ8k41*J~Hv(_awiH=Y(nlaspbT=G6soIGhedoloI*CJM_3}5*wP+mMj09SN@(g$>Fd9q(?WQBwKGv$4`~vE%iSHvS zCKp5~_{syDCsQ za;3`;C5)oRNPn>lPWTig=2$b4_)ZHANXB2>0w_6cUhV1UclxX8WXq%&&go)hf@%Ue00&yzfSK~`^{ zh+ob{3+k~fr$f(|wn#JSU(-2-MQEzW^0NNJx zrn9E56GI7$u)YJPWSkJ^pxldI9h}8C@@`E4(klxlI>!ujuA4adQZVOm>*;oxYSec@*mMl z9w7?}rZNU)^?^HNQxrh}GssKrkdl2q27{DafQi8zju%DW*!#u-<~Ru>I|FLjl^hld z6Q!3ARs8CE5UI`+yn}`ef|Z6t6+>%@SN@e`CQfC40B{{@dnf$IHXNJH*JrRoa7KocKRAXZ{Puzq|!< zWB*hfnbm)3vMf}5PoD(_mP-^Sm<1cuqbDC{5U#?|K)ehJzM$R25x+-@N3b>9?0@+S zI1ekfc7SG(4r3!fuAau8AAXO$cee9>ffsmXhFwC4oOHj9Amf(g%vekFZBmn%nTMmj zsFs9ES#yT3mH~Z1>l=W;B2y5H#bf?z)~%AP-74!2smsnTk97Wz0X94zd z5Q^L$zI#-sb*GGK1>D z%xj`YW)_vMQkhH5uCseeVsvUeHIgf-xqC33jS`=PBZx}z1N7ow!M^>Rfo0UM40VqC z1kD^!`l(6P3VkgRa2V2bOAY=CL5*Q|)tmLX_RF7_)cp(%vFjq37XVSOPefQIuB48j z+&z>Uja~HRyd<%Qbezena!$(X0FP&DK`rJ(_aR8n5ajeAOS2X`7FHn5DXPYbe9oB( z!?k*2(CBXGQ_I?y;w?w}MpRI)Xr0bxPATLD4QNdC8L9W&odzm+;AvVXf+uxDu%(3z=4tE5)E@w0WVQtBqv1x(2Pb)h!qp3 zbE_I6Z}4(`sho^DJMySV?sw%ENKAd4%ZfA<^|Mc73Ax_Lv!6Q6XuQ+12Ir606Mn zn7G}{U1?JIBeLB!9RHludgDVZ4h4d={!$0Pgna~5(S8YX+_v^ILmzR{K_gG+v_+bk zm){OY@4qFh2X%nje4#=9A;?hxI%2b*(2_y3Z+0C3f0DCQMyW)N_avoy#z?Z$q2ff? zP&nT`ispt2(^UP~J{`4Q=1{r+%J@#;&hYu%40FVGZZoc-icFaNuq0Q;(bsF@?ayXh=K8=yQBCTsjSfl_Xky;kiSu}LcYw!IpD#td&pM`J&N_Zl-FHrxPrh5P;@OD6#Y7TU%{*Q&{ zAD2qr%-P0K_uuc7j1s8u^ok3h)4=$Eq73nX2K!zEEn2P;A}|YX=0li2rg(0j#vaSbBLu-TJCPdEUaR#RM$74o_DcoIM1H)Kw@A^(~DmEd5W(DxsuxZP8p~=tAXWe z=kLI-W4b}z#%3Xni)+=RkK5+yh8oEb6V(6=%!)!3? zqE!5%7eO7*jP7hSq)P!(|qvAA@u}Pi~fRK2btc9h`5fh^!fu*|(T}6oXiS zrg#=S!-{$BM`-j?-}XUt{q^WHmH&b!+A#sJeK6YhSSQDg;WT{9DSPke&qI1PSan`B zFM!Q}tl?vpLtn`_BU!F6oX_b@lM7(5Xm0VJ{6WG9bd zB3vP4CHFDll%sllGR6_ecs-* zo{TT-;E`jJ)51K2NhyMu>E0ak{a3~N-%X)^U}R=#Y@}=B^!Hy-Kt7bbqXpedB~T9c z4@{x{I!szr#l&+>fzvYrxXBi0e zmy#qeL!JICs&jFoJ8I~Uc6c6$16T$Vw=?h&b7EE1xaVWx+vkJzpYd za8x{fj6AtL7AWwtFBtSfVR3BoJ|6>i@uLJxEy3eS*?U|cEA+!X`!dq^6Gm9tU}-WC z-o8j^u3~Bpl`~@%{b>#L8p<29bI7%lC*3d}Tv^3w)F^Hz=^6_y=t!lKS8>`9>S;J1 z1r}@rpF1oKSA%qnR2TX|8lRTpblW!+=a2%((KFuXk8ladhla!(XQU{$DPqNQ{903| zu&y#PEjNq_rtgSHGZ|mnilKhaIv?^YA2^`zgR>mcIwg{%865H~!q+Sd1d()DdO};^ zk+O>2hTLM0#H0x)9)DnatRq)uDz}zB-6mm(nU|MsOtHh)RPyumluvtKh33i)X-!Tt z)IU*Ezy31@5w3qAEm1MMe+G8_hdy0?xSB1yzGaMBWBBb&eBv#DC5{Ah%%|s2m(Y$L zvW$YE^GWvZaPQu#Iq(pgkRvwBM2vR^trU!Rg`yPXSGWf#so1l1b7 z_njIYwJJSUk4{(?#B^NS?xj63-UfJMeo>Sn7G%k~aay0yYYGbfA!5jzEIf=0 zvsj*6?|5UuxCG=TFfM&HgedGw*SD(c!ZkEAAblSc?9=FsUOP*f>!wRSI^l##?n4MW zXl6dDY2mCZZung0hJE@8IB6R~e)-&ezQUKVG<@$xjgMF%#8?4wh2AleG{A#)LM%+% zVFn`EQ`jWrSPjV9AX4W?w@5pX`8mW5Xtrni>6dM?XJnCK8U3S7#1~|=t)4B2=-du- zIM2^4d8%YDL&y*CEiwe^eu2BNkp@G|QN^(0aV>?$Rl0dI^OVuaXpPZDpCqGIJs-Pj zT+>W(P|;LB+tKH`#>?;E3ad{;Fj%do6Ae&80Oq&TIR9=_22q(1jtv4%1_YeI{}DJP zTQlpwI*)0J|HB+{4S5S(O)kC6)VDBKplU0cN)Z|t@(eg9<>FK+9`AA4@HVHNuW&Ti zIru$jYrEgB6c5-D`_OT{%6LC?3RaBjr6LCGg^i1t zT|~7InpsboXV4rbA#I(m#qPc@Ehd@J9x~05={*gKIll7J$4MDhT>o?-%MZ;_gfWL# zvR&qnz=p*!X5+#Lh`$9ZrDMadsW|usND*zmMA~zC>b)|Kf?S`!lqKR}> zepTn!-Kni)YYK(x_HSQl2f81|O?ei?dhbsS$F@fW?69>tXFGW7u2Oq1^P$`k_L_?H zd~kamKA&kx?hCumq{fe|5R$6|xfgegMT4No{vArN;IFH2axtbcL`5a-@i@7N8< zmRXyze_&)iw7@oE5S>%H>4%*H%IT({+kB9r71qy1Q&R*6!-`h22eC_SOwE-71euBT z8gR~9ZvUo|aeLwv`fW2t3xwT2aQgZ)X8sZ9e#7p6T7XJ2HmJUKpioYHWek`z(Tg zEu+2N3;O)sN-tj-x*a|(gZ7H8ZT0y!=GNvGhH7b}m68SG9KIzJ8o{tY3V)DguKPgr zGE%djekC>d1>a$Pp!;sU2O2eJcjP+nbwbS%SrThMNIPH_bchgj9Rt!1kj`$3-M@(Q zHfsl-Oq_#4-jkr(mCn9P;MV9uEfk9@N-~tcg;cb+oHv=QcnfCQ01WONbo^w07Vh`E zloA-zkBs1?@j$3PlND90!bq-Y$z-LKWy;sWvrgf`PJE=)0@ngi&~tO{eA53JL5Ovt zH!O_r!f%-ka9VC5VABcaz`b&Xo$e7nc*s#EQ@li zk4H)a(m-w58$t>R%8zd=C9Vmk=1OR?pY6DF8#3f~EQHa%!g5)yCX;}|UbuDNY0Kl^ z_`@cm`f&;3Zw6G*{qwN*M=kdUg?~P^fB7=fuU36A6+}a$p(4rE#(>zN`AHO%V@eWK zU^DIft=Ac}3A433fB!3t@$y?J5{~W*`zzR1vXur7!Dq*~G>2sF^~MqItEcNHq<5_9 z)02^%swly-Za&VvaRL`TENJSbf`{-iYqw*)qqHaVXfOnR~v|FUQgXCXWXg zge_O8VS|*{s(O{$6_HQjb*SROD$8f&CzhALAUBf^7ML6hIF3MO5#i>L!MW{Xz%LOHzAFe-=HR z@-yI=J(N+H`GUr1*_n*7ZSmKvyGYZn)rTK0KRKw$S;FB`?{kc$Hk-UvitxSqFIKY_ zYT{+Y4f#-mpF?m#hW?xBzGfp>Nxfd6f&Z_{j%bVYV#d;{hX6H^gzo@4ze`+e>&nxG z^qsnEHac9_Z|LB~61e-~Df$<0w8KnfpW7bF%#+z2wuV$U&qqS=pyTx`8sqlNb7iUL z_464Tt;ZQ%3HhjL(y`aVh;y=e~qPEDb(|*Y}y|*+%&~S zNeNlDkORw{bO*%S;v;4F(^eI~7`_@t&L}1Pyk8!RNeMp|W0FmGENT!1pC=g6#gneZ zD8(l$B@)8Z+iCON1^J)|UegYuI8H4^Qk9zZ>|4gNsm%;7xjAmqOk$M{p8`1G7@Yiiz5=delSnGzOMOXZ z#o^M>PRMBXCOh0B*KmF!!5R(B%3M#tCv--;r|l!)WNP4K>k#%sQTV@es3kglPhnaP zJx|@kCbN#PMM4&p{k?%Iv*ki-?(@UVBqj*g}8f94`~6nvT)T>hUOoBz&% z|3OvfU}|II_+LpdRb)LIoynR%B^lf#rGW?`;^Iu z7B?8s_+=IyP%XoaT%Prl{u;M^H9xH}@9_RbSXZh!lG8z74krjxCO4{e08i3N=uE<; zMgG3Cdelm;xDKv05)RB~f<66!8XfKgzd)(7T-imJ;0_0{l1TK@_ADYT?und6h333` z9MgX-;-bB#Rb?P>h0RR_j10=WIZp&SiXTgADR4)4yKZGXGJM`ZRMjroY71j8;dR}} z@vBkXF07SfTz3)!h7h8MEyrytZxiNm)k={L#6$_dTt8S@F?(bhNuOjLYte<)w1(m>|)BM{!*y@yPeN2rvxDS>%H z?>I(?PRpD{WMKneIpnN3R5KDA@XmCCVptp=h;5C;!=Q3U`EI#GmhM^2_RE%Be|EqA zqcb8^IA@}wP$JB5s4XvppVDj9l|{e`x9>CzO?yBBS|DXSw{`@z6HX~(+zVfV4}b0m z+0X;o+qC*Y_;^N!tPZI(f1vG$o?3_tF0q|rQnbAHQB;n!kOTei#7b*p;Q#I{&8zC! z0|4Ph{LfP0zvCut)$lG^-5oz z1z%*=_CZULf9QLbj2ExLNI|S|JB&U3U?u$h7XlmD<_th}Dt(mtFI)}VTMUUMjbB%v z5DB5+X>0R@x3>f|7%d!#EWtK0KzaA5IQg3fI1@#gymXZ1-v}Bn0W# zXI?`SBpVjW3`9Al26rLVaq8NZYSQdjp+k7L8#Wx!pu>$K%@(@mD(7d8Ib&%r`(Aro z!V}|PNY-S_FBm%rpiHBuDY%>s0zZ!C8)Xpj-~@1Naj4`hZwV{~4N+fiqrT1D$@?AY z^>)(`fPUB7+X) zB_C~n{UgGB^Q^=NOCc1jH9U)bx-d=8@EingN(iwNjul

      ^cnJ=fd@uz0X%yaZ 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πN^#-8z8n`RxR6tjLa*{7(#Um`+}Ii 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

      LG393!lntSKB4EZ}#+T->N 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 kY1tb7jv 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 z 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μq6UwluO>t?!_)-Oe1IJM=pZ*lYq$JES4X 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 diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index cf7c5ab..29101ef 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -22,46 +22,37 @@ import org.usfirst.frc.team708.robot.subsystems.Drivetrain; import org.usfirst.frc.team708.robot.subsystems.Shooter; import org.usfirst.frc.team708.robot.subsystems.Loader; +import org.usfirst.frc.team708.robot.subsystems.Feeder; import org.usfirst.frc.team708.robot.subsystems.Intake_Ball; import org.usfirst.frc.team708.robot.subsystems.Intake_Gear; import org.usfirst.frc.team708.robot.subsystems.Pivot_Gear; import org.usfirst.frc.team708.robot.subsystems.Climber; - +import org.usfirst.frc.team708.robot.subsystems.VisionProcessor; import org.usfirst.frc.team708.robot.subsystems.LED; -//import org.usfirst.frc.team.708.robot.subsystems.Intake_Gear; - import org.usfirst.frc.team708.robot.OI; -import org.usfirst.frc.team708.robot.subsystems.VisionProcessor; +import org.usfirst.frc.team708.robot.commands.feeder.*; import org.usfirst.frc.team708.robot.commands.drivetrain.*; import org.usfirst.frc.team708.robot.commands.intake_ball.*; import org.usfirst.frc.team708.robot.commands.intake_gear.*; - import org.usfirst.frc.team708.robot.commands.autonomous.*; -import org.usfirst.frc.team708.robot.commands.led_out.*; -import org.usfirst.frc.team708.robot.commands.feeder.*; +import org.usfirst.frc.team708.robot.commands.Climber.*; +import org.usfirst.frc.team708.robot.commands.loader.*; +import org.usfirst.frc.team708.robot.commands.shooter.*; +import org.usfirst.frc.team708.robot.commands.visionProcessor.*; -//sue's comment -/** - * The VM is configured to automatically run this class, and to call the - * functions corresponding to each mode, as described in the IterativeRobot - * documentation. If you change the name of this class or the package after - * creating this project, you must also update the manifest file in the resource - * directory. - * - * @author omn0mn0m - */ public class Robot extends IterativeRobot { Timer statsTimer; // Timer used for Smart Dash statistics public static Drivetrain drivetrain; public static Shooter shooter; - public static Loader feeder; + public static Feeder feeder; public static Intake_Ball intake_ball; public static Intake_Gear intake_gear; public static Pivot_Gear pivot_gear; + public static Loader loader; public static Climber climber; @@ -94,7 +85,8 @@ public void robotInit() { intake_ball = new Intake_Ball(); intake_gear = new Intake_Gear(); pivot_gear = new Pivot_Gear(); - feeder = new Loader(); + feeder = new Feeder(); + loader = new Loader(); led1 = new LED(); climber = new Climber(); @@ -183,6 +175,7 @@ private void sendStatistics() { // Various debug information drivetrain.sendToDashboard(); feeder.sendToDashboard(); + loader.sendToDashboard(); shooter.sendToDashboard(); led1.sendToDashboard(); climber.sendToDashboard(); @@ -212,6 +205,7 @@ private void queueAutonomousModes() { private void sendDashboardSubsystems() { SmartDashboard.putData(shooter); SmartDashboard.putData(feeder); + SmartDashboard.putData(loader); SmartDashboard.putData(drivetrain); SmartDashboard.putData(led1); SmartDashboard.putData(intake_ball); diff --git a/src/org/usfirst/frc/team708/robot/commands/feeder/ManualLoader.java b/src/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.java similarity index 95% rename from src/org/usfirst/frc/team708/robot/commands/feeder/ManualLoader.java rename to src/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.java index 13d8e6b..ace1fab 100644 --- a/src/org/usfirst/frc/team708/robot/commands/feeder/ManualLoader.java +++ b/src/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.java @@ -10,10 +10,10 @@ /** * */ -public class ManualLoader extends Command { +public class ManualFeeder extends Command { - public ManualLoader() { + public ManualFeeder() { requires(Robot.feeder); } diff --git a/src/org/usfirst/frc/team708/robot/commands/loader/LoaderOff.java.txt b/src/org/usfirst/frc/team708/robot/commands/loader/LoaderOff.java.txt new file mode 100644 index 0000000..56d0097 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/loader/LoaderOff.java.txt @@ -0,0 +1,32 @@ +package org.usfirst.frc.team708.robot.commands.loader; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.OI; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.subsystems.Loader; +import org.usfirst.frc.team708.robot.util.Gamepad; + +import edu.wpi.first.wpilibj.command.Command; + +/** + * + */ +public class LoaderOff extends Command { + + + public LoaderOff() { + requires(Robot.loader); + } + + + // Called just before this Command runs the first time + protected void initialize() { + + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + Robot.loader.manualMove(Constants.LOADER_OFF); + + + } \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinIn.java.txt b/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinIn.java.txt new file mode 100644 index 0000000..438f00b --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinIn.java.txt @@ -0,0 +1,49 @@ +package org.usfirst.frc.team708.robot.commands.loader; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.OI; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.subsystems.Loader; +import org.usfirst.frc.team708.robot.util.Gamepad; + +import edu.wpi.first.wpilibj.command.Command; + +/** + * + */ +public class LoaderSpinIn extends Command { + + + public LoaderSpinIn() { + + requires(Robot.loader); + + } + + + // Called just before this Command runs the first time + protected void initialize() { + + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + Robot.loader.manualMove(Constants.LOADER_MOTOR_FORWARD); + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return(false); + } + + // Called once after isFinished returns true + protected void end() { + Robot.loader.stop(); + } + + // Called when another command which requires one or more of the same + // subsystems are scheduled to run + protected void interrupted() { + end(); + } +} \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.java.txt b/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.java.txt new file mode 100644 index 0000000..8580843 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.java.txt @@ -0,0 +1,49 @@ +package org.usfirst.frc.team708.robot.commands.loader; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.OI; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.subsystems.Loader; +import org.usfirst.frc.team708.robot.util.Gamepad; + +import edu.wpi.first.wpilibj.command.Command; + +/** + * + */ +public class LoaderSpinOut extends Command { + + + public LoaderSpinOut() { + requires(Robot.loader); + } + + + // Called just before this Command runs the first time + protected void initialize() { + + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + Robot.loader.manualMove(Constants.LOADER_MOTOR_REVERSE); + + + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return(false); + } + + // Called once after isFinished returns true + protected void end() { + Robot.loader.stop(); + } + + // Called when another command which requires one or more of the same + // subsystems are scheduled to run + protected void interrupted() { + end(); + } +} \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.txt b/src/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.txt new file mode 100644 index 0000000..63506f6 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.txt @@ -0,0 +1,61 @@ +package org.usfirst.frc.team708.robot.commands.loader; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.OI; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.util.Gamepad; + +import edu.wpi.first.wpilibj.command.Command; + +/** + * + */ +public class ManualLoader extends Command { + + + public ManualLoader() { + requires(Robot.loader); + } + + + // Called just before this Command runs the first time + protected void initialize() { + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + + boolean Apressed = OI.operatorGamepad.getButton(Gamepad.button_A); + boolean Xpressed = OI.operatorGamepad.getButton(Gamepad.button_X); + boolean Ypressed = OI.operatorGamepad.getButton(Gamepad.button_Y); + + if (Ypressed == true){ + Robot.loader.manualMove(Constants.MOTOR_FORWARD); + } + else + if (Apressed == true){ + Robot.loader.manualMove(Constants.MOTOR_REVERSE); + } + else + if (Xpressed == true){ + Robot.loader.manualMove(Constants.MOTOR_OFF); + } + + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return(false); + } + + // Called once after isFinished returns true + protected void end() { + Robot.loader.stop(); + } + + // Called when another command which requires one or more of the same + // subsystems are scheduled to run + protected void interrupted() { + end(); + } +} \ No newline at end of file From 256ee4a3882814643e62d04c92456909b58c46c4 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sun, 12 Feb 2017 20:03:07 -0500 Subject: [PATCH 16/69] added loader and hood adjustments --- .../frc/team708/robot/AutoConstants.class | Bin 0 -> 548 bytes .../usfirst/frc/team708/robot/Constants.class | Bin 0 -> 1940 bytes build/org/usfirst/frc/team708/robot/OI.class | Bin 0 -> 3805 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 0 -> 4891 bytes .../usfirst/frc/team708/robot/RobotMap.class | Bin 0 -> 1277 bytes .../robot/commands/Climber/ClimbDown.class | Bin 0 -> 1251 bytes .../robot/commands/Climber/ClimbUp.class | Bin 0 -> 1245 bytes .../commands/Climber/ManualMoveClimber.class | Bin 0 -> 1329 bytes .../robot/commands/autonomous/DoNothing.class | Bin 0 -> 1005 bytes .../commands/autonomous/DriveInSquare.class | Bin 0 -> 1766 bytes .../drivetrain/DriveStraightForTime.class | Bin 0 -> 1328 bytes .../DriveStraightToEncoderDistance.class | Bin 0 -> 1913 bytes ...DriveStraightToEncoderDistanceOrTime.class | Bin 0 -> 2074 bytes .../drivetrain/DriveToIRDistance.class | Bin 0 -> 1443 bytes .../drivetrain/DriveToUltrasonic.class | Bin 0 -> 1525 bytes .../drivetrain/DriveWithOpticalSensor.class | Bin 0 -> 1290 bytes .../commands/drivetrain/HoldDisablePID.class | Bin 0 -> 986 bytes .../commands/drivetrain/JoystickDrive.class | Bin 0 -> 1236 bytes .../commands/drivetrain/LoaderSpinIn.class | Bin 0 -> 1109 bytes .../drivetrain/RotateAndDriveToTarget.class | Bin 0 -> 1167 bytes .../commands/drivetrain/ToggleBrakeMode.class | Bin 0 -> 958 bytes .../commands/drivetrain/TurnToDegrees.class | Bin 0 -> 1389 bytes .../robot/commands/feeder/FeederOff.class | Bin 0 -> 1092 bytes .../robot/commands/feeder/ManualFeeder.class | Bin 0 -> 1492 bytes .../robot/commands/feeder/SpinFeeder.class | Bin 0 -> 1095 bytes .../commands/feeder/SpinFeederBack.class | Bin 0 -> 1118 bytes .../commands/intake_ball/Intake_Ball_In.class | Bin 0 -> 1131 bytes .../intake_ball/Intake_Ball_Out.class | Bin 0 -> 1383 bytes .../intake_ball/ManualIntake_Ball.class | Bin 0 -> 1428 bytes .../intake_gear/Intake_Gear_Down.class | Bin 0 -> 1221 bytes .../commands/intake_gear/Intake_Gear_In.class | Bin 0 -> 1381 bytes .../intake_gear/Intake_Gear_Out.class | Bin 0 -> 1145 bytes .../commands/intake_gear/Intake_Gear_Up.class | Bin 0 -> 1232 bytes .../intake_gear/ManualIntake_Gear.class | Bin 0 -> 1495 bytes .../intake_gear/ManualPivot_Gear.class | Bin 0 -> 1494 bytes .../robot/commands/led_out/LED_out.class | Bin 0 -> 1107 bytes .../robot/commands/loader/LoaderOff.class | Bin 0 -> 913 bytes .../robot/commands/loader/LoaderSpin.class | Bin 0 -> 1190 bytes .../robot/commands/loader/LoaderSpinIn.class | Bin 0 -> 1101 bytes .../robot/commands/loader/LoaderSpinOut.class | Bin 0 -> 1115 bytes .../robot/commands/loader/ManualLoader.class | Bin 0 -> 1492 bytes .../robot/commands/shooter/HoodAdjust.class | Bin 0 -> 1281 bytes .../robot/commands/shooter/ManualShoot.class | Bin 0 -> 1367 bytes .../robot/commands/shooter/MoveHoodHigh.class | Bin 0 -> 1106 bytes .../robot/commands/shooter/MoveHoodLow.class | Bin 0 -> 1102 bytes .../robot/commands/shooter/SpinShooter.class | Bin 0 -> 1158 bytes .../commands/shooter/SpinShooterBack.class | Bin 0 -> 1127 bytes .../commands/visionProcessor/FindTarget.class | Bin 0 -> 1043 bytes .../visionProcessor/SonarOverride.class | Bin 0 -> 1042 bytes .../team708/robot/subsystems/Climber.class | Bin 0 -> 1074 bytes .../team708/robot/subsystems/Drivetrain.class | Bin 0 -> 6832 bytes .../frc/team708/robot/subsystems/Feeder.class | Bin 0 -> 1078 bytes .../frc/team708/robot/subsystems/Hanger.class | Bin 0 -> 550 bytes .../robot/subsystems/Intake_Ball.class | Bin 0 -> 922 bytes .../robot/subsystems/Intake_Gear.class | Bin 0 -> 1269 bytes .../frc/team708/robot/subsystems/LED.class | Bin 0 -> 2276 bytes .../frc/team708/robot/subsystems/Loader.class | Bin 0 -> 1171 bytes .../team708/robot/subsystems/Pivot_Gear.class | Bin 0 -> 1488 bytes .../team708/robot/subsystems/Shooter.class | Bin 0 -> 2873 bytes .../robot/subsystems/VisionProcessor.class | Bin 0 -> 2960 bytes .../robot/util/DistanceSensor$Model.class | Bin 0 -> 1394 bytes .../team708/robot/util/DistanceSensor.class | Bin 0 -> 2276 bytes .../robot/util/EncoderRotationSensor.class | Bin 0 -> 1059 bytes .../frc/team708/robot/util/Gamepad.class | Bin 0 -> 2549 bytes .../robot/util/GyroRotationSensor.class | Bin 0 -> 731 bytes .../frc/team708/robot/util/HatterDrive.class | Bin 0 -> 2402 bytes .../frc/team708/robot/util/IRSensor.class | Bin 0 -> 1342 bytes .../frc/team708/robot/util/Math708.class | Bin 0 -> 2595 bytes .../team708/robot/util/Potentiometer.class | Bin 0 -> 1101 bytes .../team708/robot/util/RotationSensor.class | Bin 0 -> 378 bytes .../team708/robot/util/UltrasonicSensor.class | Bin 0 -> 1258 bytes .../robot/util/triggers/AxisDown.class | Bin 0 -> 787 bytes .../team708/robot/util/triggers/AxisUp.class | Bin 0 -> 781 bytes .../usfirst/frc/team708/robot/Constants.java | 9 ++- src/org/usfirst/frc/team708/robot/OI.java | 30 +++++----- .../usfirst/frc/team708/robot/RobotMap.java | 6 +- .../commands/drivetrain/LoaderSpinIn.java | 49 ++++++++++++++++ .../{LoaderOff.java.txt => LoaderOff.java} | 12 +++- .../robot/commands/loader/LoaderSpin.java | 54 ++++++++++++++++++ ...oaderSpinIn.java.txt => LoaderSpinIn.java} | 0 ...derSpinOut.java.txt => LoaderSpinOut.java} | 0 .../{ManualLoader.txt => ManualLoader.java} | 0 .../robot/commands/shooter/HoodAdjust.java | 51 +++++++++++++++++ .../robot/commands/shooter/MoveHoodHigh.java | 2 +- .../robot/commands/shooter/MoveHoodLow.java | 2 +- .../frc/team708/robot/subsystems/Loader.java | 16 +++++- .../frc/team708/robot/subsystems/Shooter.java | 27 +++++++-- sysProps.xml | Bin 6190 -> 6190 bytes 88 files changed, 230 insertions(+), 28 deletions(-) create mode 100644 build/org/usfirst/frc/team708/robot/AutoConstants.class create mode 100644 build/org/usfirst/frc/team708/robot/Constants.class create mode 100644 build/org/usfirst/frc/team708/robot/OI.class create mode 100644 build/org/usfirst/frc/team708/robot/Robot.class create mode 100644 build/org/usfirst/frc/team708/robot/RobotMap.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/Climber/ClimbDown.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/Climber/ManualMoveClimber.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/autonomous/DoNothing.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/autonomous/DriveInSquare.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightForTime.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistance.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToIRDistance.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToUltrasonic.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveWithOpticalSensor.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/HoldDisablePID.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/JoystickDrive.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/LoaderSpinIn.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToTarget.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/ToggleBrakeMode.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegrees.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/feeder/FeederOff.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/feeder/SpinFeederBack.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_In.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualPivot_Gear.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/led_out/LED_out.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/loader/LoaderOff.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/loader/LoaderSpin.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinIn.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/shooter/HoodAdjust.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/visionProcessor/FindTarget.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/visionProcessor/SonarOverride.class create mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Climber.class create mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Drivetrain.class create mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Feeder.class create mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Hanger.class create mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.class create mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.class create mode 100644 build/org/usfirst/frc/team708/robot/subsystems/LED.class create mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Loader.class create mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class create mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Shooter.class create mode 100644 build/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.class create mode 100644 build/org/usfirst/frc/team708/robot/util/DistanceSensor$Model.class create mode 100644 build/org/usfirst/frc/team708/robot/util/DistanceSensor.class create mode 100644 build/org/usfirst/frc/team708/robot/util/EncoderRotationSensor.class create mode 100644 build/org/usfirst/frc/team708/robot/util/Gamepad.class create mode 100644 build/org/usfirst/frc/team708/robot/util/GyroRotationSensor.class create mode 100644 build/org/usfirst/frc/team708/robot/util/HatterDrive.class create mode 100644 build/org/usfirst/frc/team708/robot/util/IRSensor.class create mode 100644 build/org/usfirst/frc/team708/robot/util/Math708.class create mode 100644 build/org/usfirst/frc/team708/robot/util/Potentiometer.class create mode 100644 build/org/usfirst/frc/team708/robot/util/RotationSensor.class create mode 100644 build/org/usfirst/frc/team708/robot/util/UltrasonicSensor.class create mode 100644 build/org/usfirst/frc/team708/robot/util/triggers/AxisDown.class create mode 100644 build/org/usfirst/frc/team708/robot/util/triggers/AxisUp.class create mode 100644 src/org/usfirst/frc/team708/robot/commands/drivetrain/LoaderSpinIn.java rename src/org/usfirst/frc/team708/robot/commands/loader/{LoaderOff.java.txt => LoaderOff.java} (86%) create mode 100644 src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpin.java rename src/org/usfirst/frc/team708/robot/commands/loader/{LoaderSpinIn.java.txt => LoaderSpinIn.java} (100%) rename src/org/usfirst/frc/team708/robot/commands/loader/{LoaderSpinOut.java.txt => LoaderSpinOut.java} (100%) rename src/org/usfirst/frc/team708/robot/commands/loader/{ManualLoader.txt => ManualLoader.java} (100%) create mode 100644 src/org/usfirst/frc/team708/robot/commands/shooter/HoodAdjust.java diff --git a/build/org/usfirst/frc/team708/robot/AutoConstants.class b/build/org/usfirst/frc/team708/robot/AutoConstants.class new file mode 100644 index 0000000000000000000000000000000000000000..6d1b944008ba37d2340d39437ff8884e3cb6b38c GIT binary patch literal 548 zcmb7=OH0E*6ot?9k!o$R)MtIW^MOX8prA-Y8(Sf?r42<_WfIexk|vN$T>FFw~V^Q`H$*gP~aW+(2+w47d|o zQf>T6Zvch`y4UKd{Z>b7NVVnIjqLlRU7gvb#$8`m+I4lPcZN+>=}EQrEGs9oR;Sxl zDdjJ5%phIct}SjD(g%kFhD_aiv=|mO+qK%^)UbS=8xA>T%`>?(;JzL4ubB}~cEE6= zdHz@qgOTkALLT|1EG#~~IJ=a6&+vq-guSbJ=@?ZM+|XJ%|C0jZhwI$d2P!p2@v?(C=U9gIPAx*us7}+xxX zyY2Bsd!jwPXe(I7+TTa{`caH{&M|U`#S+gu;`M;*5ee|%K)k0<~G|!hOB_iL{qdJyWm*?wx8^K0#5qU zEomQb%GWpw(ra0ck^3X569-|nBn!<7=DkmPA>bunxt6Dkj>0j@@62>-6LZ<}jC?RN zW^7MaEnin8MwD#a#4Tdb=FGn(-J+tKDySe(b=^?DO{EEVyW&~*sfpVmm?3Mfdz2p;+O{O&PEZf!Xs+0~EWYr}eSipJa zJA6L@Tazho`cnIMnwBR^*sex1ptfM2&axDwab!7|)h=ME_Jo#*7VP=PlW0%JgI;$S z_B&kx#z#>3*lUHuhCw68%A@eh za2*Du8Xs!V0Wncj#qVf)w%^<23R*;|=6v zj7h)AnDoaPll}x_(w{uQ8OEp3zr~pJXBbodEMv<5GGo%8WlZ{47?b{0#-x9ZG5OCi zruf$xpGSV<0KdujE%aYtd=dE)T%Py$9prZzUqLn*Uq!yg;;$p$fcNL|A0Xdk{#(c& zGQN%cG2j48g#nDjQQ=M&@_W2(<#dfKmkfZYSE7^m>0g2o$H p4=2)07-03%4VxU#Jz3XYY^asu5~=)O_9 zFSMn5X{TX^%;1?$pZm~X&|lDB(5Ftnd*vizI)niAgO0v?&;8E1=iGCy{QEywe+94| zKdTtjun$AiaW_t>IIW=?LmD2%V`AiS6;EiW38tS^@sx%c0eD))Ga70G@T`jGG|UzY zpT`Sg;TaWYHOvd9UsUmuhJ^umS;Z?FmIOv#6}qpfcwNJaVEPReZ)#W_fVWhGlRCEv*# z741d^v)lpOvwU})pf=H#iX4olW6?-QI?<*;Nzh8OTPXTg!9Q%}OLi3#Fjc{*W>X}Y zq^201M#k`ZvnwTrr;HCv<;rlCg1WGFi+Mz{DC6AHi>`JBS~A*_Zt6;YL5+M*nnx7ONSYC0pfhFC<1s{EMG&e<;}m@Bq#d&@FHumiHfiTd#?XLc z1li(S-pTYCnUe1_-bRy@%+k#9b!N#|uDdL}ZY~xk()l;<$pQ+w_TtT*Y@fz8B#-aSM$9 zagB^RGGdc^C+S;}hnR(9hyth-k&bS`uzQjWLCqM+u{zT6gV<1yAlY>*B&=ruuL`wJEq!Yq{pu^}m zDG1h1Owb`N&O;XKB#$3;+=Kl(?gg9Brit740rzy#cd{pgHm+dh#AeKdFmOr1wu$xR z4ekdWzGy^FIYm*zdHkd!i{m|#;eQq>I! zLACaJc4KzI_MB`y(b6atw=~?~BDm&LiA%7GUtjxplh8wZVllWaXf?*#0Nt7AaOE;W3+Q9goS=v2n%~=2n+u95El0D4`H#sBZP&$ z&Jb>1f!GAb}1>cbnet`PC>|}h{#--%FASIiyl)Ss7TX7MHPv zVCfYs8^-c7RuHU|U{x8b3GS4jzKk^lYb97$Mgzfm2{x3mkzkXg-aHO|k(+Y)Y(gEM zC-|o)!~ZW?EN9_wWZm!P-4f;1(81o8#sIhf2u`DjGw^W^C0xKDE@22)IXXZFJqQW4 zJfa$Ej)tp;-25pFjdHYl1jc1-5wBC_>((;19UaD&nh|WjEMmDsAkOW)3`R-L)lHL= zjG&w(;v}OcC#lMXB$tT%L=3z{!8*oDpsj%k23W9c4NUB+%vDV6u1p3d_EaWSNy=nM znt+tqkSH+73`i6>!xTspG)PC8gS{2=jhC@mgkFINeH-TTxs-n>mtj5=QO}CsCM!P5 wI&9@PP>jKkGr)&%mfGhzdXW`5%qskiiTQ)o^(QOpFILgttQ>`@5ofjZFGa@qJpcdz literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class new file mode 100644 index 0000000000000000000000000000000000000000..316a36d855d4988d9de1df10da878af14711ad84 GIT binary patch literal 4891 zcmbVQ`F9)D75>KC*yF*9T_>g_PGu5^<3QvrB#=NBEDSD+l|zwk+L%ZlonrEW4hM(c*g7z=O27amHS3-G8Lj?B;aYnrso(|R>4&<+nI>uTz~4glZ<$#k=Z_Yb;Pj~wij`83HLVF zGc#@^S}`Mt>Q36WCzjh>KSJEMp?S-=X{Lnrruwair3sDOt*mDpGmj*UbXvi-`VmHa zyX$FJ1v6n9B(ijv8)-)vZOWRqy(2!#65Kf^&B`DxY1>$;KVs5^4Af-W$|RN;iy_~J z=AmiJwe0MeV<%15wdso;^}F=oLR-Q$rOnhP1sm(fh}{sSU4v~Yxby?8_K$F8hmrH_ ztevrQ?mjzZirCdY@ovU&yp-WiCTzn=MdD^QWhBz(5Raj2ir94qNJDleV`Nhb)-3{- z^e05h6KUN%<(T8Hf;Ed+jPYaBF|%|lXSZByWi4-)g2w*!2kE9ENj(&^vgT+`gztdh zrl2ckCyn$$!?A>39&GX^Ev|Ig2e{`Jac8+!o4mXuTu;HWl;sMf)R^g5cFIaFaG*cu zqPS-ykL@$2<~am@39K~FOq=$UZ=uhl`f7*&Suk1mOxFw44wt^?BA(@XR+2mEKAtmk z=H3N?Nt(l!@R24ry78znZRl`7!>t!`0(7L2QLwVMt<0A? z4&dWD{v_7easjDQ$3fhxV6bk}a*ot-2#2|?y6viRn~qQ6(-&YXa*>YD;K)+88l*8D zpM{|yQa5Ekq3ierKDiV#Kkw;CfJga?x>sYC(J=`onfilKPLeuO;He9rf35u^I*#I) zjxWO1aSvP-&+GUzUeNKP7`a=Fyd*|m)-i?SI{t!Jc&BThzW1dY9a-2q{wgs3rsMB; zm6_`Ne1_~Sp9NWuOTQ-8e_fp69$Cf1aZ&y!CcW^u?SwtP8x#zmAFa&CjRda;|3xql zMSF2$#C?22$D4SI*EDK}M{TCA?1X}yb>au9Cla;G);iu6cp;y>l?}&_=M0CWcV7Ug zc*cxm=MlPt92AZ-!6iM`LKW}m_y^t<;yot#^RFV4k%G0g13AK167$})S)SI+pg7FS z>uOJ*k9#~h$q8vu)!QdbZ$!p2$t`c_U%yDb`9D)uf<`CDS6*N3wW})VP#YHiAapyTV|UNjP9viUL3Bk48laZ8K6Se?@w;zlsKrB#+$As*y4=VWrV3YK|MZG{Lvj zruY7bgLp?&5m2XcR6QoUt7(}Wu}xZvzTnhF(F%KL)kKGv4yCHvSq4~Et3>m9g3*2 zlpeKRXk-sqHZTiipoE6QvuK<_(^-x+AV(>_u>e=1341Zkp0MY9oWSSUD!8qJ_3tv) zDdIE}r)37}z&WTzw3g7u0j+@c5_I-1Dxjl;5PQoC=q#a&y$==8UBYtqRus@v!o}=; zxPVJaSjpb10(whW&E7`}2$#^u-lYYsDPb*pmlbe1cd(BC{Q>n|(#B-2NeASbU!IRPz4oQNUwt^rz)5mNKMdF0#Yq<;K3>cr9$S;ieVl5 zdW8FWl>2(D3M$ywT@|Pu<$blzVT*`uK*jgZZi?}Y2HAU>oqqB(Jd2|=C zCy$;Y_6E+~%=-vDMdzO3PY_S@M~bt|F?p;*fp_*CwqOR=faaLR4Vc5tC{^)|RRy6L z%76HAgLvwcsh>ovq%O!dbzNV=&|$LgMsya#McgPyZz^Gg7x1G++${B23Hzvz^7F3! zVq^|uf$LWAM-}k-y#mkkCcc1ec!|_ruA;Q3;zGW=$~^96D_pppzL~?v=q)LGrQ{Lj zNLb2FDZ8cYk#Y@Xu>1hy4!p_}@EZO0I+Ma1{B7q={-E;~e@A*719*qY;a$>tuZq(4 N%0auA)(!a5{{Zr+Ih+6h literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/RobotMap.class b/build/org/usfirst/frc/team708/robot/RobotMap.class new file mode 100644 index 0000000000000000000000000000000000000000..f2d3e7c6a17fd4a86a596289d710d56a70f4daf7 GIT binary patch literal 1277 zcma*mTTfF#5CGtrUWHz`2ncwAdO<+tprD|DNlTEB6ir&g`}TC(E*{P{d$#p=`DEgQ zKfoVloIPpFaCz`$bH16~*`3|?&);9a0bm;r#vutGvapwheS|{OsJ=AE;zD*s69G>s zcBsS1iqM{kpeK{G3K1rBR~ljUaH1y~`iujPr2*s}IYwH4|8YP73h`Oatt~IrWFvT;YqpTz3T2eOINwz2yXu(4V z2s4*GABDcAY`JFL3E{R}rDhT4ZZ2{6eOsd960Ta3`W+l}xXq17#Z64p4GiwE{#{wW zQ+Ck|Lbhq^IuwTPxJ{RHQme}_(!|WZ3YGnckX&6mLr5J`6I8pZLixGp-r}oh1QeOB zYF`9r!YJoKFl9R`LRhV8)Ao8%OPR=eE#rGuii@4iUC-!-wqDJRr=q)uFkaU^3)2eNI2+;(47w=C(m{LpIqu4{Xpz}j_$Dmj>I{;9XkU?_ZH zJK`Im==_YgqmWi<*FWKnF6SKvR#Vr4J-QhjsSV=#nMUr>IwQQ0OBr=Tbz(I9NVfT& zP@J=UJcYAn1Ez8A{VTh(h65Z)}%$?T(2j*wC?QlGx8o z+=9ulH9h@u0T}YU6IrKSVGY!yl_Ofm7n)hS1ML`Ar$c;HN|S)?fy4|OS3F7(wSuof z$lcMi&|{<|{}Ktw=}{|%`gCTEivruqILp)Neb^^c`CTsU(3e9Y3F8Wmld=;#{g8*R z&y?e|!hVrVQJoI@e~V-ga$;mV@5o)MOs&|&3jGIz{tl1?`3WYC*C^USj8=eI`UzG# zN34hV4~k>R(wIeDok63!8H#fKsDB?bxK5FV*-@=B#p;ZW3n(yPZX%J566Z#Vb%Ieq zGw0B>9+Gc~$662ixXysc0#anf9Pae%%@aw=8P-eD*$vzzJPq?$pjow7p;)I)0AfzfAMB6j780*N6qqn;GMyZ-=@ C1PS#3 literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.class b/build/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.class new file mode 100644 index 0000000000000000000000000000000000000000..c3a35771b3884e3d9b70faff41281ff9b86446aa GIT binary patch literal 1245 zcmah|-A)rh6#k~&cH3q75fv3gsfe_tbSo&5U`R{}N>Vkk(hKjl?Eph|yX)*OqR-@w zT-3x1AHat)p6QmhiJ{z_nKL`z&pC7U&);9a0X)N&0R#85Si}PZSv<^Q2{|2)45YAZ z;4xOz@e>`ZI`RzZm!c!WU4~@7&|uK2UYj#a*F=ZEi`*ucAMK_?C$lxLWjhU93YGT{ zweUm)4BItN9$QgxBxDd;N3vyw+;(47wk_#3z0hiTu4{MNfmL;cqKwx=e}}

      cV!! zH`37gId4TF?Xs?S#_K-kZ3ecdt_AyaGdNKPtm`P7uux$rj&~o0!m(c4F8A%WiKp1mv1wAHpPRS~ zlVNK-{Ho#^R(LzIzWBn5`$juQG*2(PWmV&@F)WW4_@H`B&1=QYW!SjpIfAGed<{bG z4jzOaA|v_dNJvi4S<2VOJF8z3?5L4h8gK9Y0gaRAb7_a3?6;9LuJJh9baJO3^YGQV znl&wdP@sXRj2HdCL>dm7!N_*r(qt)`y+Q*y`V$QLYk)LpmS9qxq-+-n+5u+qCs^?U zi7t{qC{JLD;uMk;C!t}QFf$bCW_+Kr8!a7Ly+V4vV=r0B-grQ^hVa!wQU^+jVkR9wA8el^N!H{ucfLizEk< literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/Climber/ManualMoveClimber.class b/build/org/usfirst/frc/team708/robot/commands/Climber/ManualMoveClimber.class new file mode 100644 index 0000000000000000000000000000000000000000..fbc6ff4ba82b32b6cb0941d35881e0114cb5fa82 GIT binary patch literal 1329 zcmah}TTc@~6#k}Nx^!7U0gK`V1d+B}7V(C`;01z^6iuw*!MEvlfWh5v-3y|BL=)pb z@I@Xl@j>5x@&_5?ne9@Vplu({o-=d4bG~z#{`~XpJAhlbXP_5jSzN`q0TUBhT*IV} z>jt_om3i=soamSNkthc8DCj8am}bb_mo*tKGo+)JPuvQ$Y zLRy==7IA0O+ZV~n5`&?5NbbmYluZ{0!j3}HvMza*>q1l+*eXMBIpp@MOFsQe7V+srl9p)B9mEdg<3b#2qnp3wgUPsawH20Z&sXepuaeyVYTVw6% zJ=>tY^XkIqq30*Pq#PYMwsxM_={q8PbfA_}%Wo8DU*_8Z71~EjIhI7qW z(`2hVb`l^H9}KntSreFR0(}aj5{(~1(~gi?pBjSx;S+l4n|=QgU484sZ0ZO-Dsnoe zmZQH0U>MyP!FgOHd4-A`jWgwlK1EA1DUV_DVYoo2#OOCh(v)$8P>m+c&{q*pX`hvh k<2RU3v@lOKnO|x$|8L3p7T`(AmpcPz{{duFo8mS47wfPfOaK4? literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/DoNothing.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/DoNothing.class new file mode 100644 index 0000000000000000000000000000000000000000..ac4fb7d8481c41b9a70931be13bdc8b77ffa33cf GIT binary patch literal 1005 zcmbtS%Wl*#6g{3vCnQZd&9G3Q|(3qH=`oQ3liF1Wbp;u1sW zg~)|@#n8TaYlFdAktt`G8Hk*(7g@~JhbSJ>PIn-aXt)t6Ve`?ZW4486csY=2D=hS; zP}+o>DhUmbvS$yThf2oMgo(_uC{J}56-MSVlZ6gn%XLZYe5=pkTMHr@iZ4{i<)3*{ z7>azM*XTrV^R%@0k&x#UPm0`drHWl+PyF|?PzhfX*5-7rdw(a|ivpa0=i+jJE4b=n zF~Bu=0hTOWhsV(W59bU^JT1acyCSSQr)VhRor8YEm8x%s#pA2Ivs0o*QYH4dQIW_Q zo{X8PE@Hi}4bNzlHH~Jue0-@RX$*nlnw!-;p}(&frkd#^2CvND>?=ug?9h|4UkA)i zm(ZtdnN~*Y#OX0*Zp_5~eUsnL{TB0&hnGz3*uKK)Xbz#EC<> zE>VD4sy#`Fc(TTUdkrFWJo0mjB&&w*j{LORU+H$$O~riJ cV76*zZ+yw84dP+R)8mQ#BZv%VN?)`80MIeV&j0`b literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/DriveInSquare.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/DriveInSquare.class new file mode 100644 index 0000000000000000000000000000000000000000..b877a021e7940b3334b592a78fc2d04295ed3108 GIT binary patch literal 1766 zcmdT_-A)rh6#k}^ZdlqNwFv(6<4>u`@+%<7UrPyw7-JiZ-fi0f7TaBz-NoP)PvE`Y z_yT&N7Z5e!0gNx;g-_rsi1EyBDNBODt()xGIdkSabLRWbwBP=G*#j_y`3BrYuL=!) z()3F+prQ?f3Wg%n=V%ci7O_NNuxk4!IZ zdodLWj42prh?j)1$#ag-jg?g=x6XNqfn^wCY0I=7-E@}pvdbBok1Wg^6`E^sTwzu* zjdGmfD}r;IK{ZUnG4!(Wik8(SyO$WkX{$s|)1qPWM{cFSMP4tIX(qmC74`CxE)3~c zC&SLFL3w5tEwQ4x_Oc;tM_U#}&Ea}wq;FIcR>5+#qE)HrX35rc*Rf2iV!5`KktbR( za~rNMI2|!EA&Z%mMcG*z+N<)6RMc~_+@x`%VLDt0cioW@HD|e^$g_r5+>va(Yx<_H zU?PeKm{c$o#WdQZn2}~ynpm4kULWt4$O2BWT z@zsDYd?B=@cd{;>3Oz5!Fvb&7u>J$MdH zi5~o-KZD=s3lP6wB|c1uq)$Ap^YskXy{8>RlpiFURCp+W4Aqd`2a?e)QbKwU%l3g| U0U)aZQ>Ozbj{!1opAdTf0^?hh)c^nh literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightForTime.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightForTime.class new file mode 100644 index 0000000000000000000000000000000000000000..bca43fc469ffba73c92eacc23bbcaa3607c8adfc GIT binary patch literal 1328 zcmb_b-A)rh7(LV7vUJ%3R>XoofPl0svM3;EjWMACO{y1`aKYWS9q3@YTW5Dsd=W2v z0B^j}2qs?m06vuQn{6qT5WI0WnfYeEnRCwfGrxZS_z7Sc1rrvgQn-a_69bq@(J-rq z+a~6aQ$t=kY-Qb1*1Unc1{N4nP5*$GTb$PzSdqbyk+&t9oT2Zr@I?58A(<-{^Vfwejm7W5Fsq_f9A>I?GmQ#`p{*G6p zkk+OMHpm~;RUqWtVMv!lxBB{p+v+INxJSML;e}kvs1>S{X4#Kqm2U_Y$Jlwq3;XVY zYhf5!1CE77+_P{WOBT`?v@nE01IrdxkhSmts}|Pq(843Nyn!qO$^ReWGtBZ@1J5@M~#B05*!90ZwBqs#8sk#^h^FG5|UGy z=X0ft^_5RB3aV~P7mGZXkb0GXfqZs{DDkRod-P zr1lL$zlAAkev2MWf_|!CY*7(u?gOJLU!pNXs~R*UX&$w|gV|q^IEH4=9YMGAM@W8& z?_E~@_|!0Tx;20iLbyWzC|STHVW<;ot-jHik;Rtc)ace#WIK#2G%KGGll7fam?RY# zCxO>uSgU=k1FK`K3sH!J0MZ0ue}g`#9m6;aG(quC_5h{3K;uNvj((GrDJ>cM82yBl z{O}Qm{t3GFnRYd($W^|8nI5D}2kAQPCy^L_N=a9*pac4MfT^>(@`Pyjpc!3VH@gr^ b1f^J$q{}=D;1Jtl4?wa5z%W5q5}5o0!4nO2 literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistance.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistance.class new file mode 100644 index 0000000000000000000000000000000000000000..3a4aa414a2d4fa723b64073a1f0d2593fc7f0107 GIT binary patch literal 1913 zcmb7ET~ixn6n>W7%_d<36r^8TrB<4-wrnenMWLmZ0BsFe3ByJ2Hpv#YhHTv36zd<+ zj^lN2ywMSu@uEM#AEiF$%@^%Bam-B4d)|-poacP)pMU-F8o({=SokE1F)WC{qsSyfVdgQmaLKB)T9j#q8)WU?IAyvD8<1+woR8p(bTYuGM_(Vp9mp9WE!xKE>+ zoA}_io9?q}Q!&s6YSQt+7Uma?&>B>*KJ;|X_+l?1d$fjajb|xaT?=?czB%BV8iCY8(UjCLM2Zm^g)6&1T< z+NEOP<38*X-wJGwP|okjjOoW19{_gBSR~luDWF^*=o+rmTsome*8=1cCHoTR6txL% z(m(tJ%XkGt|7CFY(qC0ClpmNd{Y|0L(6c#>C6) G-24aS@^Ehe literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.class new file mode 100644 index 0000000000000000000000000000000000000000..83cca8ea4c2921177dbb5f75e8e0bfe91a89728e GIT binary patch literal 2074 zcmbVM-%}e^6#kY?Sh6gE(qa+&16ym7ZDFZUi>9<#Qd(MC+Jdp7J}k)=wkBEJ-IUfR z{|jZt@wG2~(Gi&O!9T$9Z&JT=vn0qk=$M(Dd+xpGe&;*qes_QS1fmQsv3;C`(nkfGc>av z%m?9?8*)`!CB`+s;m6k*nlF_KWeushpvt)ZMZe)aXx7)faK&A#ab<8ZsJOMV8~QR& z7E|$tA8B~97=-IiGkWTWQS3YoD^BdW^{W%pP8h5Ou~P}^b+=KCoNDMl_u|m?8%{~w zW%1WH;+5c5qr$}DeuYb+@GWZSskUqGCPl^3ptGvHzUA1he0ks9RD9S*4W<<2yEXr7 zlGgK5li|JaDoyE>=|}V2k2a($+++uIuR*`pZ^T|0HaBD0F_(j8Sn=k4DZKDsn2tYl zpSv1zNB3d>o+1mQ$crh68M82qlLi(o+{Xh8OL%DE4V<)aO3WFYweSd!4J=z&k?4=b zlrg5Ee00M9+jt9~;E9D#v1;KnOj!6_GG3O97rbiI+1m7-)@9SH`D@Siuh^MuUA2bu zM>BgY!eFO6iqLT7Ut|e0d^b;V{UDeMtRE zn~SXr&339A%Y@52@uE3g7(|BOsl-^D-& zuyy0p1S=i@>T3fznBZ|y%{NRfKr=)!w{b>MJH|=Rx8Jk1yBOStk$Q!c{<^dE-4BPh z2+-<%mLqV3f|(`!%>&72lH}5}UKpqJSq&$|q~t4u4B!fo>0MZG7#*2{mH}w}JN0CJU literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToIRDistance.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToIRDistance.class new file mode 100644 index 0000000000000000000000000000000000000000..496332be08240fdfaf80e31508c2c26055ca908b GIT binary patch literal 1443 zcmb_cTTc^F5dIEr*>+h9q9TfjfZUeLf?O3)luAN^J^&$+w{3fXgKf9&1;O9oyNQ3m z7hg0K6CeBm{wU+j?m~$ge6dOA%sDgt=9~G>>5re^z5|%X6CGI$WH5*!9nBcdkTKbe zuo-1DrehoydlT$UvboR6QyQi<%m`$C+uf6XPI^3f{it--`XhS*r3~vi0SDYdxwXCa(d=ZrM(%rK2B|2$acM5iC z+jbT2yEo;1>UZ5J>S}O3zjeK^4!F{9!@Pk9cxa#ntp?iITxD|& ztr`{#EMm#P6+U@{#|DxRQ#r zHbRi#?PPDz?i~`y(AsN$g)qOM;S>pTu!f}Bq1BKwhihmwJ5n`hpF@levUi}7y@e!h zqltE{=q9|o=p;5hbRTX~beb3uDrI%j${w>5p~rj@p~sA(Jm#u}h+Q$W5z63vQ7_EY zfq}4q5e4G{NuqJ~!0sI zP-gJFOgHrzO)f`lnNADAX0q=;Kudl^GVzIy65ugKY$q?kw8Sty6eYo$m+2pe-%pG< zLn|X{p$tuRVmgTm%o5_<1vKrPRNpzoR1A?aPhtEHut?RGE&!xr0D*f1-+=yKs*@T{ literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToUltrasonic.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToUltrasonic.class new file mode 100644 index 0000000000000000000000000000000000000000..5cc26d35696df3d5dcd68eb9418449b2458ed6c0 GIT binary patch literal 1525 zcmb_c-EI>{6#m9ud+lXor!=G~e6GOO&kFVH^|yEXU>`V&Ub#s??1eK2jDzzTc~2Dj0#Sd z@hi?)q`ADEWpS3pITmvk9iC_H0&5E_F7n|^CN7(}B4919tlVGubN&9kMFDX~V5AWS zvGxPK=64dAr*L_JiuR*NQhSO$ElDRmfpRz8l&d`{+obETBcse$>Z%~UEKutDPX}u8 zstT08E@0O0c%C=CCSWweHepqlRUq#r-KLBl_{|Pk_AiGmzq95?iuVJfp*K`4u(%vX zkK81FsG?ZA52Kc=rQcncz34_^Gt_P?>~{U29lPyFZAu;aDsVkkAB4YmXd8!tYH{LB zNBJG~4+YHEnU5)-%2uLjZ>e~R{P70oM$UDr%c}NUf8F(a13GybkZ+#~w2Y#pr}?C{ z8YWRoE-6l8{EMh(9{ZcVjf0r7F^V5dT(xlx*KORuO&eo4VB;qi6D)ql0TaL3xP^v| zakh9^w6VmOYnT#fe1|#+oRsav{kx~!te&KGRP*ttD!PrVngYl7j<&+JrveO%E-?R% zPQ^(xeim!ljk5-&y`s*PBKagyk)&pyt}pM+Z}k(#6>i|%-Xy;oP+*kj_|~)GbnuMQ zhRq1^cv7g%snp@iC@FRWH%v7hwr7QI{U8%L{ zO5LTkNOun65Xr-|`ww}PXstVMAe>?!Ip;O<+c2C%|MpRECdgED>V25bgwaRoRf=?k z4_0>2hXN%I=qCB=xqOZ7(avxUauqu@D zz9D>tssfy(Oit0Swku3+C(H@*XZ$>3%XF#)YgPV#4%2u6Bma_2c`8Cya$sf`OmzTr zio6BnMsCs{6Th$l;ykU4Xr{fehs3P3T(eZ5v%ApD9a8ljh`9ko!P&;h=KvQd+QKe? N!T>;Enxf|5d;~NhELQ*k literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveWithOpticalSensor.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveWithOpticalSensor.class new file mode 100644 index 0000000000000000000000000000000000000000..e46da873730b500167d8107638ad226ae36c15c1 GIT binary patch literal 1290 zcmb_c+iuf95Ivil8^>*+rR5T?Ev0FCaUm@&DuRcm6`%-EgHow4$Vs+jtHci8b-8>K zFCeu@Jn#X04PStmb=)MXs_=p(uV-gGXU@(U``4czKLM=bk%p0ev+yY09QX*Yav#Fg&|*Dh&uPpIarjuM1i z;jZ-jO$JjF5>88ermFG0CS~xCydG%ErjR=nmrdRXgLHy8cgfBOS8?ADI!Z^(iWm5G zz9TgA-1()J51k{&!US>_EQ}ghv2Y&`EEKV7;UdNvp8c<5G0Y8zIu%PAShMgD>lQXN zv0KP7%<@KHf9MFi+h4L;qIP)NReP)3U51(AHFmWY)SJEt3~T>TP6jpkNh;o!UBN=_ zNTd;;zYm1ZN&Llpc{snyDaNMOvN)XNxdj>0O{e9BI?~AIOQr6tO67HMhdzP~O?C|9 zT1T4jv2d3q52;9YihL8eMC&B&_7SHDFje>tR>&SBR``ba2@-|eF_K@y+$kMLlGaHi z2s4e#xPYs)yGE9dg$TGpK7CDvmFVlCcrL25Kz^q0KBOiB+zcVCZZLvK;Ce4{BP0x% zL@PT+%trbMW>|Qd2+a(jm_3vmgx)>oB0Y7rSp17#iDI`Az}!G)td~iX7GajB(q9`1=R8?1Xy?Xt+e*OOO6Tp33^U%bZHqPRlhx54Lp@BIU7hPOp zXg-yxG|w37i%UZWXC;dT!|Xt&;&na>g<1>3gfg8$76r*LP|}_!NyltS&G2H7srNkB zn^I}RH&w)q2u6?YJ?1J4GsB~7Gz!vK^H|AUVN@Vf{xVDAzSI`%&8z+s2G8=4K_WlX zG*^5SQEn*mq+X?p-V$-aaf7T#DV~w35lZDd##X#{S*{|nDlOOU-{5z*gWbS~ia>P4@a3dQi? zAL{Bn)St8wBhCAzz9i`K(W4G+V`yt(*0uc;T871qr6GE>E=^h_kfonNi)@=t%j6mP z#;xyQUn!`;BkPd|d^k9cnIbAKQRWz(Y<3^uA>FjK);HAZd#E48=+Llk1*27B%$69p zso!E$2w0Y&WuFdbW#b8)q^f0qhrGR4tADY!pg!)Lt8~`NPFj>nXO*^d2<>^I-K$_s dX?IJEsdjsC4!-*asdTdf(3p^5I8{(R{RctE!4v=h literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/JoystickDrive.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/JoystickDrive.class new file mode 100644 index 0000000000000000000000000000000000000000..6bd630f1d623cfc54484d6250e2fa2ae7b79253e GIT binary patch literal 1236 zcmah|U2hUW6g>kg3(M9jDyUUkZL2`BQ@^4~O-)m*sUezJ!$aQ|n3kz5i?h3J^*8xq zA29L3AK;HN-dQMMQkQ+WbMMTad(S<0=J%hUzW_YNV+$GF$lxaCETnNOgWI@cV&1|9 zELgaUdnOi5EHR{B%B~DH7?QvUT_Zz*{s0_Dgqf9rkm1KIpk z)m!TfmZl+{j{Hi+OmQNbVL+ZG{cSq&+oBaw+#@Tx z$-R2$962^DWKAsFxQ_=miYS>V+gL$`p&U;>3}lDDaa_@JS~ebH)daV(hDQvq;*nF^ zW>^-jkRSIXA4o@DM>Y=61mjx+;TRUu**Nd%BM*5k^D|^0yAVU zB1v`@1}+mKM=||5_@8z!Q8YLiaF#1T* zV$yP)?86+Vvxpby)#ouck+LvKc?DOgpzfguZ_t3w~M6- S;JAzYbYSTmAVVSIb^R~Jh7iaA literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/LoaderSpinIn.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/LoaderSpinIn.class new file mode 100644 index 0000000000000000000000000000000000000000..f71cf37b085bb4943aa88c769615dd2a80d987ec GIT binary patch literal 1109 zcmah{%We}f6g|$PlS~FeTgt0ITiVhj4NMVFsVG7Us)Q6+5Yz>`NyeqFCNshIgvU3r zfklv5@Bw@j;(9VkM@33E*S@yTxyR?;KYxGy2Ji^?Y?N`mj2l?BQNm3Nw`|dDA2Jl$kY6g~`*yf<6|C z;YBBsAKX|S38}PuB>S%B-r(upGgn5vNW1-LFz`ZOxxN%5uB9hJw-b3jm))TVUxoV& zwoxIxKzyZI7XQrqv8J6Z)B)Y7W9}yk-&5ov?JFYGT*`Q;&5hlSV%g^h!YEzLQr|!E zMxFy36$@JqwsF_N4r&ZL^Ch>VP-!pJ%0k^i1G^5Is5n?bg`qVcd){{$wz(g>pN7Jn zI7Yib^iHNex$TKx44d-{y*2Jq3xmWQ3?dW>nny;{Gc}ZK5fNz2J2;qBa$3FOz{&IvQewMzTzk3oL-%p+eE2tc4uy0H^U2 ztnmZ6G4kIj&*1{ai^x-4L;=f$SfQL=PTr%6OOzGpcFMI&x#41`1g03UngP=2r@*Bd z@ClVM?@Cm^I!5snZ<7#U4Hnij9Hkk@GA~&2Fg*?$UPUnP%juVrRv5JrM;9`skT0 zgI1tyH|TU6-wSO|iXK>5kb5BI)vdp_ShnPqlUC^c)LUP&BY^p@a?@DN1{izqT2{IBgXtZ^^0KXirN_lj0+(K@?u$lmKa#jrY=vaWrleGUy}*tz5s z!l)H~3Kj2!cIisehHSUTH!Sf@>%y@S9X;`WeD$e$cO_A*_BgfyfZ#rGrn#4ldwE!dRiK z2~z1VI+9wTPx)$OGBu#2o0v@QB$Gz$LUyRwj5qp*U}_@}#sK2x0Af3V$d=EM`xoGl RoT-lhWD@}Tm13n!e*w(#@Kpc+ literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/ToggleBrakeMode.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/ToggleBrakeMode.class new file mode 100644 index 0000000000000000000000000000000000000000..a0dc8e7dbfc212f59e64f8eb9615dcd6a3e9d015 GIT binary patch literal 958 zcmbtSTTc`*7(HEe9;F@ zeDDYOql{nKbr=Z31M|?HukHEH>FNCb^Ya&g=V%8Q#;prA^< zhM@-!cNyxPJXQ>?uFlkEk%r3b$S|RmiEbXrWLFyP>%n5(?Q6@>>E@;<3cII`bz;v% z!YP@)c=l45Jj|Vl@-&rMY(;GJk#a`rOzh;nUZU2Ge6QY;OO!-IeK7M=e68SY=KwdK>ItDMBduyRSZwg~Mf>r`sR zn=)NWbNOPab7}PM?)0;ujXM1|{%e4K7H}G`QMF7nqj~tz53sKUY8at0pc!ZqsYTeM z<3kuF1X{gbHh4_6->ZeQZW98&{^#%GC5so!OIpcj1keB re==xMtAC-Y@4PQQUt!it=6EUoU)Svl@x=AS<;10Ph>Sw;z9#Go)!ETZ?p)r|>Ju@Kwh*nvy z*|^aXta9N8_)(U(CkX_~!i7oAoxa_-&pG!ozkdJt319`;C=5(Qa37OV#4r^hGp$TA ziW#JonN=pO%mWoNr(<5n0zz+D^793xe__hcVxWc$_XdPJw z`jF6J8d$`VfrnT&(2X7gz39=gVjzQrfmN&-SjQs+kCl5D35KWtnJ~jNFZHS3%VqK;|rdYrDx8drDx9&{u11~rOtz> z0cf;}AwdYYF^CZi(AhX)sE9#&)Nd$YWWh>thUnHX-Dxmp=&jE5fUNV9B1%$$F%oz$ zfHfLnO<0WxTM+v}5aaqJB}fu?vW0f>J4j)8~j@2gnlJ QMjJr53BafuYK+GJ08?QT!vFvP literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/feeder/FeederOff.class b/build/org/usfirst/frc/team708/robot/commands/feeder/FeederOff.class new file mode 100644 index 0000000000000000000000000000000000000000..2ef968ac9578b5c3197d1d2e1f40bb681fabe138 GIT binary patch literal 1092 zcmah|%We}f6g|$PlT3ybT3!VTw523X(;CF1prUSqvI-zk)CIdq;!sz~Ot3xW@l9-C z5hNCT03U_8o|!yUMA%&W+CJypIrq-5-#>l=c!(VrMXVHY4cA>1aKpi>i<`J*!)<%A z=3w2y2E)QL8Ax-$kgaYVG2|LyS1>HLWFTHfgSJp_{C1yCmRe!Q?;rU}+B`kXnPaIL zp0+~ujz_vDl{UPmI@}0$-x~D zo4D(tf+|C0exZ#p(8dppcCh84hHVdZlssHQiD7R(_MacguqnC`|1gw1F^G13**+QD z!W)S_3>)(mURyJ%V~L9l_y1$Nj@tT@He#St$I0%367M6a1a+-mZOyOiaE#x#lfmZ~ z_m>zohngPw{TJaWH78en9?zFH;Sg&yfkhfrU;*?FC5j$p2guM4@M_<|YTu9-STSH_21t{h0xe}y#AA}N?+T<} z9w9%)yHp6U3Wxrpsd!<+v5bo;N1ay7k;#6sF)lw*U!Or{CP*5v6!|DcI`P*poE5K- kW7Qc7XF_p#Lh&G_$k#@2&Jyg9NxL%y`ILa+N?hsHKj3oQfdBvi literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.class b/build/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.class new file mode 100644 index 0000000000000000000000000000000000000000..f909657856f4e21315a74a383b3e862928db6b3e GIT binary patch literal 1492 zcmah}%Tg0T6g`~`nJ^3_;saDr6p;{t0l^m{K0qw1K&!-})ZHX$U@)19Gd=kD8h38o z=mM);Xu0)k`~u6!nqhMmf zLKliAE?JnwROb6HUgoFKw7%zb;{MQ@)YqSW(K}t%ov-WJN%{Abggu$xy0vO+TXN~2+kCf}H$i$+JTUfGj8+jXN zkr!C#tlKHG0%NigJFn}W(<}_7s#n@QD2KD$EQ`QsXD3f|5!ort>IuyLr`%Coirz*_ z)*>gVaW<5%VvqF{m@KSy=CyI4e^YnlNM~}7AF^A6x(rF;0;R>Nv-N>ubzk24sso*CWJBNKpdp z;unbGXQcL#{zRNYKi58_x#nT;ZVyk6>YL5`IELdy22LclE)i>6;?RJ01`M<*ibQcB zQT#zS2JhYf48z#xd%!)z{T6qV`_i!S9=#-&+eh{TMotsv2#=w=agZD0fyIM9LhU@= zU|-~00}LUHVY)hlLB3GK7}Kv4-=GQ3(jE9R^Lgag>IZO}DoKAArVW-j`_1fUlOvHR!B2q~rIAtx(D=kg4QHY+y tJX$mZ+(3rod{_iCF)@;um}{BnD(=Jn+rVw|ywhf&t7Sm2KQzHRc<11It4S>-4h?*+XR^f~ADx%b!aA3p&+#(ftB+$i8CR$b(A%fW3Icd%x|x;@!& zaM!^mL+*tPq&Z|rmn+8%nR?h245g+F#H(n~7V3@P?$gOqGwk^NV_!*ICx;nxA~nPF zW~korNcW`DhWAv58{rS0?d@|FwnM`^;b7ngUCnz!bcN!rp$r;vdcfdXed+h*XHs#* zN70E4Wv`lC-oH}35%MG;V5lz|aSMMGo%xUDc!9np}s$I^`W!Kr`ddvH;7u;pPJ z_dM*N%&@b#)p{6c;|E4NsCcMi*Fz0O4=X4#>@UXt`eq8srKL&?V;QP!93(}^>@ zK6Z#n9CuY$U_O|2VIsw*I7z7-&8z2NGd^ttCgFJ`)W<_2X;C5;^zJm zqw&z(BfozXp3!(R<(Kh_X%h~yK}%SmT?KNWdni)$s5(T7GQg{T2djQVYJ~Jxs#CZ? z@gmX`FC&9xLab0tH^=u;!X>IQ^moFwOSR=_XP iN8wBfgc5Ph33H;&UnTD~c?w53TJx>Vcc%Z0MH64qm%_{3b4N z2oeXl^K1A8h*>*vLy?RRcjjl5QY;KO6`8#_W2b?})b4buRx+ zzI$Sy+7>L74cxV`jjDwj>I~cICAU0R1-2U~13MNPxMyJ(WeZnOW;jg8rnk$mCHf(M zH}QHISR%WKEZK|5p+e|oT+lD$_jFpJC`YF=t{sXs7ds=+$$)EfK$ZYk z65u|i(eF&kzk>V(#uK zFYpi~9{2!03NafyPN-1eWjwPx=gire@y}o1e*oCT9TOE?t>79KOq6lmzzq{OaZ8&; zeX?X=*}w`z>9Gie+F{5y)(;p8?XbrgY8?^q7qRd1=#}GobTZosyN-9@L_){uVL=@W z$O5d3KVH|b&uFzuV{v^M9 z;+#4bOjHfrwy=sd3w1OY>eF?%!$2x0P}0D{#4Yt+j zOjo!+BH7l{AX>4@{{Td6UbbKq{T~- v4^pHte0}L`@kQ#`@&tvEQOsu)_fv{ua{%Kk!5THGK0#1S2^cO9m0tM`Jtyn9 literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.class b/build/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.class new file mode 100644 index 0000000000000000000000000000000000000000..044f801e69a499e939bc28e9abe13f3e2a0ac96a GIT binary patch literal 1383 zcma)*%~BIV5Xb+Mgsd#fhcQaT4?w;`Ko;dwK`4R3qAEz0u{e04CdmK;NjC1zBKjg8 zd<8FZh*ci+?o;>(K7nP=W(g_E3g*!1-s%4Jf2L=C{`vMDz${iw^kA?Z4=`k+8^i4w z!Ki^T6KzPxSAS6w{S1u9fBdfdCNh}NW>ObCG%#hrW{5A#ic~8M(e(H(Lu}nC3Wn~i ztcaI>IWOGTJYS+OiL6uLrCshy9fu!d>QH(N8(GIauzhb|x}LK4-GZ$IFE30l+OCs# zlwEMjWnL+IwyY?AEcWueRI<0~{u=pvJHA?CFtrlNOY#HtGsLMV_=>#FoZ^M!ZC(wV zn$p{(Oz%(>1J!THiVFE1gcq*sSCw8dbB^y8#HQ5hlb57M>wt;T{qUYprYl z=lmE(MA5h3Ri#}Y19>HxKRQ2rd%ZpchN0HYUg?q55A%Fh4D(k^*z@z=dryh7*F0C6 z=`~lp^`$H5mQ1Fztrh0ZAxruu4z!lJvqd+f=*kn}hI60}SEy{B8fh~QgnE9eFK{fq zHNL?x+q&hyH_6amc22~$qa0V0HiBp5DW{4-dT2et>x+Zw%SQGF#Vd%A2UwY}V3{*S zYKVTJID#bEE=2VjV&ruY;bss8`M8B%iegALSQ8ZMHFg2e%|MMV3R$D@cB3#y7@e0o zLo8lHJPG6DCs?E=39|-E^P)|HdPz=-+V?eaQz5r6$Ys5Ryo0-h)w`Uef88Jw{j6<( zs!Qu{LPQ$U=p}@eb77?s98KrN&P>7p!-!+F31Ku4_Zx_r5Yd*Yq3bdrLpmp#0Bs?F Jp+8VM@E2y$G7A6z literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.class b/build/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.class new file mode 100644 index 0000000000000000000000000000000000000000..d3d5c35d80964872ebcd27ec6dfb86984bcaa4e8 GIT binary patch literal 1428 zcma)6%Tg0T6g^Esh71FNfCwVU`z^!!Ehtb}RDo83#lj8MNg5cK%%o;|5d99TT)1)P z#*Hkn%7yOz3O~UQuq+=@?Q+TMO4&8C|pjShmjtKhW z7{H*0AsxdQQJVX)mGAVJzS!3vp`h+YbtGVF7}GG$5L>bwOD;1+1_t*SqHAtOFeJ7t zM?49#Dd9ciDVsFOEjP{WJ?>fRTu?^kk>xXNY`NZ{8Tbd5=S%azOPf;g?CjW_>A5La znrSziJXe6DTmA-l@Q>63;zLg&!Xdeu0t?Rza#G#syKdm6#fGJL zHT{KS^q8M=1NBI1m@qJjDTbl)1OsW==3|}}Ii4{vjTsHI2Ier&&|lti&2@aq9qDUW zFtCUv0}rrlUa+s}qNu^Gyp(^0Cfue|6wO5k!*o`6CC0J5qM^i)TDoA^QZ#%` zZd8zkb5zvDE)ZR6jlM(8IVuwu(B7km^rWt8MEuQLBuL+g>imsPaxF;;ZX^%49U95a zh@%a)XeX%?edxjjdNEJGAVr}mj8;Gr$2jhwm5|=0yDCI}qM5bC2vZx`hq)P{T~Vuu zd{ApXQpjzjgj+?C8;wT6a=Kut5z-6PT+iz`Vg&6fuUgSXN72PqVJ=X6-N7v3oGWoq MS#ZFJw?f+W8?7ZZoB#j- literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.class new file mode 100644 index 0000000000000000000000000000000000000000..4d05efa1f2f49f4c729a5fead66ff26be5364d93 GIT binary patch literal 1221 zcma)*-%b-z5XQgLmM+~cMUg5fpnymz$f8Iz!EjTAm=t5E;lh}Z?e+i%+TFV6Y*8P@ z7x2a#y}-l^z4vK+0^^+Br6tBxx5;$QpZU$VGqXQ_efz-4B5xR6KaDYU0T><$W;6WXBe&uk3S1rbsoHM>P^}i zsrs(d+;ak<*U4r^9SO>*2~HJMinivR%K`a=eDLg{Pbo zzJJJ_zT!QR#V6=x+#x%Ba;1+ zEceLI6Q2h`*jD<)todQ!@-3m|7ynGReC%`_3qvRvSg=sWqJ<^gHLz^K#u&qV|97hR zo>Y#fq=gmSvv3~;3*#s-RQd=0S1}mocq6n=+ro~EN?udckIzeKSK^W~%=XW=s~bSI zXp4@oqQWz*{i9tntjo7j@s_loM`5~0)SkhBzYayfspCtfYJYvTbH=)!s@47?|C&&@ zQ||Ik?NliDh#}YVJAB7ien3-N+Kh%(D!)w=ou|>)PZl&RD3Bed)do`J0ap17Sot$j zXGnjdbqbfr7LX>JLxw(#JpC@~oAG^&;0moW811qaX{}kT2hhnhrWZ&bNfKD>2EL*+ z`rbs8Kl2{LH9-uN&tUdy U6a%J7=gbAbKmuU&ep>0oZ;DR;uK)l5 literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.class new file mode 100644 index 0000000000000000000000000000000000000000..d9a523244d086fefe3f2726abbc2acfce4ba3e68 GIT binary patch literal 1381 zcma)5T~8BH5IwiuvUJ%}Y!w7VseF}!EXt?BXiN=;q!=TH2Vcmxy}*Tbx9;A>kDuZn z@WmH>sEH5$0DqKm?(Wjo#8h79o|(OK=IqSeU%!9+1h9^W1~Ryv#vM!>Fi}wGu7MfM z>X=jKyfO<0iV77KGO?(mq+^L;;E`~Ie9Vw6E*>&yWw*{5vK8U*7eTYiz1McNL6Ka= zt=Wx3+Y`!b@l$X`l0> z6K;FfUWA_$KH7737z`yu*bVWK%IW+)uLY7&=0MuD^L@J&*EEE`OE>*fUJpgTA!i5dss1HVb#QaJkYUbQd7qn7W)5G z*>!wrJJL6?flU)zif!A(1hNcI`{!PvAq;c89$4>M!iw5Ts3EFnm(8@wQBxUa`qz4; zMi6!9viA&||CyK{RQ(UW;3=r-?C|&PHkT?Fr=IA1>bk2OIRyD3s>HkZi`{<%G6y&D9}^N&?^K6 zz|=yK9U*TI2|_@=^c}494T(0AbZB&ZrEmh*$mXDt&5#|&5T)iQHAfLMN<|*m$pF literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.class new file mode 100644 index 0000000000000000000000000000000000000000..363ee9bbf5447e9e8ad4658803a2d0bcc9f55477 GIT binary patch literal 1145 zcma)4OK;Oa5dJnVH;&Un2~Zvd`l3l1Y9tC&D(Zn&MMwc8ihAHuImx!&65C;ST^_%Q z3mk&P0q*=7egR_ENt`G`0UyRQJNtd#?9BZ9{p~w|4Y)Q6xR%Ft%-gVW!@|wnk6)Cc z&&Dk*7_(?nOBR+btT5yri9qOWhIF}dz>wJqTbyC0E&~2M@*7;f@)~VAnXQLSuYKT2 zVdDN_MxO}9uv-u1u^Xu)A(eKIWYg8$^B>;bbY<8Gwc8AR-wRsG6@m8N@WW&7N%v{b ze?tD@i%4%V*rpQUwZ%u$v-o@7j5K++P1NH+PN zFx8gE*w;_JGtYs8qJ`TIR#A3PL6u>3a^*W=ptKigWns-h4R;)@qv+r=iVTk@WB=#X z3@f}9x$io{?KO|QwrHFVTITNbTF0<7S?r~0bgw0Y4l_LX$6Qp@P#=`$z8akdO=3#& zw~>&XW?L)QCs(*XAlWkevoX2Mzbi82{qT%G3w0=I1mr1*yPxdz=(ma z41p{GmJ;A5$(VaK>6ei0!WuHzR0?QM@|YW8u@jbyxI|dfECz`t7!p&1niONK^1ut(ZZB}5-L1QKLH!f` z0bh90hno1{2l!FOxw}hS6H`r-*_qp!b7s!W&tKnv0Jx8P1`JH)a0Al@a=2;W7H;d9 zQQui*=G5~Y9rHRC7_yIqE94eKy1cZ@pjEvlXDHN!%U^`;2KQgvjTXI(*F48=?b^Oj zaq_6iBM~rEYo32-g~5UF18E)jjwQL>ez5k?^1X&9EyruOZMPX%!j<+3-#_HGZ#|Fw zr{wRy>1;9>su5wg#0R3&`8)1}lDvFf+Rn+2-AOnN5o}XtaKxKY(|csOOa3UKbKeg; zQvGApz0h~~wouI%|0G*Iwoh#nqcC+WnkZw*LeNpz-x^g5WKLpJE>fh?#9CfPhiTS$=yn3Zo}m9I#3k^Vw)3S(r) zkS1$DqY711P?>Q)F5xmo8peBA%M>dt)(22zpt61;>lGGzg?mJ!@=6iE_6d1%3SDGB zBNsjC3NanEG)|Nt(j1EPo4|EU4xpD3^edF3Ayv$fouG_(*k|-rJPN)G?ISYUdHTEu z9Zy>#=qZ|ZdH^;*086co5-Qzrg1V8Q>it$@^$b!Gq0+d> UUJNi#YzqSbnFN5*>}pY^-=O0DEdT%j literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.class new file mode 100644 index 0000000000000000000000000000000000000000..1d107a47add0942f3e99443ea2cbd1ff75c5cb71 GIT binary patch literal 1495 zcma)6OH&g;5dJ0!*|2PgAcBa3fJg|D= zkzdLQ_bJa6$ZGJaraE$+qGOzn!9e^l!BKs<8!9#$q&WOp5U&z$!(t(H>#F(vdlB+ii^dI)+@@WiDQxXB}r}BovnSxFBXJb zc7^AO0t0)-5Z{tKf4IrZH9ETGtr3E^uNR4gfwmm$@-T3=d4bDft&nHLP)1JyO$IAX=IJ;`n9 zX;?6DABzSa;Guyfv>E6{8^da2fd4ySh9Ob#%@<|Mtagf|qLn*1?T@)q?GwXb<8)6{ zSF5Lb+D?Yq3x>e+bKXl&ijrsk-t?F&p8FQ{l_8zXHfFeW3No*T^=4z5k2h#U3a)h| z+*&&*!v!qQH;)?EyeH(cFQsGC)ktoriJESl^xtI?Qpq_In~ro`g|w>ZYXrV@tS*p( zUZtNWoih6AdM1L~8U<5hNNYRkiwKbf7^zQSsS|`M2!A9!gv+$HBCPfhK^!flbp%@A zk1OaTErPB()+p&}kDURiWT3FKKvoaDS`U0pFd_2GoFEdb(Cg6?d51WWNmLMfj{!0_ zRnXk}<}DIr?SLNGb&^|2Qt840-(F}WcOymv9!DQ>>!*io049boi)28fvzn?#BSw4O zxJER4C^Cld4|K7vC=t4j8)Q{yl%~HbBNYCi)*w^0u=KgYLiNJva@8VdYLQxSu*TWB p=mCidL@{{|LaRgc)gh*85KXBH;(r2Ui09lnfTkJ%O>w}q{};#rO3MHM literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualPivot_Gear.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualPivot_Gear.class new file mode 100644 index 0000000000000000000000000000000000000000..f5970adcbfe90625ca7c373810aff17c2b872abb GIT binary patch literal 1494 zcma)6%Tg0T6g`~`88S>rL{Jfwmq-Z6pol!h5)_ImP)jTpZm3SuKtnPUXL|7QHM(-+ zMiyA*Lic`+KcMC9NeD<;!KAAD-tNBVp8J{~zrTJ1a2F3Ow4y(W0o<^V!eA0NF=QfZ zp$Wq#au!A~n)v>c9@9^2xAeO)6OM^-hQz#drCMN!XNNZ#j3uuq7}9If6;Hx)UidF~ zzC*r`Bc^+0K^YL=5VOEXGz%SoOrf&nIwpwU0c hm05@AsY6WEAewSVu+IX_5YO3D08KRj>fwlK-yf24N*e$G literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/led_out/LED_out.class b/build/org/usfirst/frc/team708/robot/commands/led_out/LED_out.class new file mode 100644 index 0000000000000000000000000000000000000000..d1f48aef9732691e0d68e522d1802c915613b951 GIT binary patch literal 1107 zcmbVKOK;Oa5dJoC;>0m6gl8$Cq@|D-F{lWFTJ_RWsZzv&q8xe&jua*iK)l7a0rcpAw#F@2XCw>JQ6`Dt)sxPB)3OTA9k$3ANbO8{L#qvhN0#1Vc(CW)qTFJ)=dUO zp$pp;p9n+eAGi}q$_x?i(MfpBhZAOp6uC!vNqCY6L3AqBNny)zWBSH{9|aEI6N;=E z1GG=x+Sep;5bfYWQVYTfyi4$hl5)r+_0 z^ZFBs9w4N5=u5v(M2T)~zurTYK39Q0AR}MNS;}W_aSI*;`)d ziOO`&Ct1LADdO$>k9n5*Y0iT*jztn`9;G6b8TZQNG=n&aM~I1(Y>qoUeh8sEq-3sek_%XHM}B2?3T#`pOJPx8_(NQPo4XXf+&G>x+q{{Hpt4 O25C)^4Cl*R7ybazz0H3B literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/loader/LoaderSpin.class b/build/org/usfirst/frc/team708/robot/commands/loader/LoaderSpin.class new file mode 100644 index 0000000000000000000000000000000000000000..109dc905d39d22d1fb92d62fa442841d63b98e0a GIT binary patch literal 1190 zcmah|!BP`J5Pg#@*|01L0tzZo5s(m&1wp06;)2B~crX@LS><7p3^2IajkB|${)u1U z#fu(dl?T21HGY9*PqHK_EyEsqx_7(Zd(++f^Y^#!05-AVz(rvgH*nLz2yQu;#cdmN z=A6&`_(e(dm}tR#zhh(3Mv)=&SO!w>FrmH0OInt0(-FyBI~z#*&K?mR+piu8ma}9;O)<2VY?~3?j_~9l2P;x{G_5 zc5xLshONPc|GzuKf~d#dSyOtQ#*ydC>dAS#yxmUQ80H33JTpzENp`x+uztZfqPQBp zi?nD&$s}kBStZ`YQVE*oO0hgxSLM8Z+iZ+CSlmBkG_i;#zZa@AuFS+}HDd1Xho>|# ztN6rVIyyW$@`c$DTG$cVZ1ZG5Yk?fuJViT5kq5Y?uVAGwNVSmuOmPZhWOGQ99fO5S zR6kCZGCTPcO;BWEvWvA$vB6?J07C{$^%c@TkQ83-7QP}HlUHc-TOTk=PQHcAN4Vro z!Y1EBun zQeBa>oJr+_q%zwUIsBq`Nr!NNRoL_o^g5L7VqEKDY$O;%r52pO0X9kK{XT%91c1?1 HjntVxFZ=VZ literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinIn.class b/build/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinIn.class new file mode 100644 index 0000000000000000000000000000000000000000..949987e5ae4aa022801e8a02abf7f349481ac2fa GIT binary patch literal 1101 zcmah{%We}f6g|$PlS~FeTgt0ITiVhj4Y-J>Xw^+nC8WTDpf1==5|_G4W`gZ0k8ffF ziy*P!1NbP!^<Vf znu9wI)*0sZWFXBxL%vo&WGJ-4zF?@fWguQh!>&+o{qBHH7TRIY9~}Bh+B`Wdm}99K z_S&I(&m(;#l{WlH^|%rK@afJouEK6;crP3d{h+V;AoTk}@pim)MlyIA>@v7kf%FIR z3)OMNC((-x?Odr3=tduleyr{tMG?@xA_F6oiblrXxScRkJ#iqd%K0?){S*Jx_u!)9 zV8g>E?t0iljbSTWZYvD5@dKkB)IBt??V*W^hb2@Po@ZmTzRIvE`Vs#)l6>M6?FO=Y zGWCbICO$E&XBT;6U8UAd>|}WGAOCgK)t|KyL!DSprk9lX5J@Gdea%`sTUTd_-?byc zv&H>Wj9Nt9kNm-_@RV9qsJ(~>O`C9pH5$b-O)M}6dWQ-{kFtH_Xa{(WA7G8|$c>Tz zMtKewC|*RK;yemiB*YTs^m6hZRa~O1K(|w_ZOSbdJ0q~gfaMgBMm_;9%z#g*jD1(4 z`qeRtXLy%{04s2?n&K$UI2Li4koF@@S}jK||JBA={-pXw3YnWBX~q)d;{@r%zn?o_ myiSfaQWVaN;>wKTVM0-CjNzOo;AGNHilCSfFkFq5Ui%AGIpClG literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.class b/build/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.class new file mode 100644 index 0000000000000000000000000000000000000000..dd8de0c402c777c8f35b7ceb13e909a311e5a2ad GIT binary patch literal 1115 zcmah{%Wl&^6g`ud8^>uOlsAQzwlqmYrw9<00^JmKm4ZZ27wnv5N~dz{;2D?4H?e_5 zkXXQ;ui*<2cO1u!ie$XFo;x$=oIB^JfHf~$EQ~LRvj_9+o zj1?2^nxj<8OP^)5rc-Z*3^>;(hCu+Wjdco7YIB7E)kJld&sg1+k=x}h|A zvRTl_QZYR11mRmAsUsOG&5y!9*TNk>+1}w{&a8xV$$Mg-`2>^tA}XXr#@F-3_9!FZN|prjbav zw@%zs*MWnog?kP*PIFe%(RN)JmtH{(F$;y z-@uw*ksBlbh4LI0D9$5K@gfSS5&9A?n46RPv|FRBK)X|}P09@yJ0mb+!1Wm*OM#0i zaED~fJ)86wQ5?fMW3Z_dU4j%Vk_4ta(a{{)Q!&|7>FXfQkOv3^JD@Y0MJj u;{<8N@1Hv_-arY>844?2YH2qM(S`F(;piuDxbvJ2NRrEks z8$8)n32URXqF(fKxRX};j544J+q@~RtXCq9an!4?q&_;XtoP8l*OBV$cZJc*; z0T*4&Vcy0i7ngBGpxi&!MEeczj%=!yth-nMWjbS@K!rz5jfG`$$e8qc1ovu0_S!pcbrt?cd=H@ z*h_1ikJPKgXFUaGN|pY+HvZ}_nvR_4Pww6tyESa7Na`@^=AAxvpx9d_R%q~<(l-*V z!+;Y|S~Fea^>_PUjO;1)INN$Xe9fM+N;li%6zi~sV;s1V_Wb2QwkUEPC0;>>65y7< zLX^KCvx)3y;tY0i9YL0B5f<+b@npBT*}0EB*h^$#Uux?#v9Tq#4H##@{vJh3TnmT_34ypsQ7bhS4}Eju1r{aQbiHnAzo{?f zA(i^j59mi#opnqSwUY6}c*i?)=FFM#?>|3(0a(YjjUhbE;Ta}v*qF-UIi@Yl*ciYI z8?%@*X5QQtEG$?kG7P>JO`&%g(uIXnhRnY7IYYiIn*2@JsB-n*tJdkuSXtJ*`l+Xc z@#BvfeIWvdow8KtZWx>i6=?TN)m+WJ#^&;tt7KJbw2_4k_RrZ_t=VZk9q1{d6q$bKNpn{*x$O~O=ROPd?J zB12Wp z;RInd_!4N|2;53%JT#N6;vYkyI1RT{C?_+k+yLyD1)55x_x6OQB3oQ}TB=x1s&Na) ze({N&b!9#|1Hvj9Wzz~jC| z)=j+EO)OIxQ)u)WnQR+_$HZg44XcOKAu@?9HIm14gf~GXDJRCu(%m@Gq`ryh1A3eG zO7u1iQt5BTMoo1%&Gm6gbve<($C(>(rWI+D?NPC#vWui+sSm>HLOkk1ti=!m#Wr&P T0;~|v)joiM7=V#lhUt^PjQAqc0T$ccW@px4|BT-B z-~|pf@!-i52mc~teA6za!K7Sf-n^Ojz3<7Aom$OC1|;! zd&u8%3w=l#$XHmwBEw|+f;K!?D()(2V9CNgWDP7^xQ`Wv>GqLoj@^)gtg=%$JQcv+Xb8bD-ag55EgNYO>cx<` zKw%ja$g-^Q9wNLVY3`0T+wYkq7mpU>1SU2Qodyr>a)T~}r_*{8@c&`jI z7tn20fruveg?bby<<-+}=??0ohSe=v6}op~Qh8O3(Yxubzoj^+J&~gE60H|#W;Az9 ze+N4vBZ7V!O`3rL#Bddt$+8-U$a95O+ItGHjA(t&JVvA+u^Qs%QHGJkNDGSDL>X+N z_=KV}jvd2D)R4>##Xh5_4r$h4eSwDWCQE}y>l6pjp#$ij7)KZVC4=-mj3Ql6G|&JG z6D4Tx8it7GFhv-M{J|iLQxzk)PELIdGc@aKh(y2Xv7SI*l-@b3Khk7Q-5y3Rg^>mk ptfA|C@$-ly(*j{MAx4`JXByPdeI6i7JeOMlIzj+OrE8`){{a_~Cx-w4 literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class new file mode 100644 index 0000000000000000000000000000000000000000..f2b71eb98f60763a783ef1757b2ddd09fbfd118d GIT binary patch literal 1106 zcmah{O>fgc5Ph4Ex^WC81xooS(3ZAo5^yOXDg}CpRJBszKu{0doMhW<6?=nsT|Ryj z7dQlo13!QhzX&m#xUN+sa~bdK`n@;vW`6zo@e{yPJhV~5%@S_mwvAcbv9M(0F7BCd z-`p%)Sh29mF!MqLLhmxeR40q;-BdqWhKxr?~%EG3D8tM)jC_A{0GD9;Po7pSF8t+H$hmmln zUeReNx+iB2xvi;F46E5HZ;Y?xRct83_J2m8qOSU+H20O;nGS(`pAGr@NQ9h5*r>L% zE9;yQG|if9WtaD_8j1Pw&}qr42a{b>T8^+x+gPHd1!h3QM46&P*)DQ)0-V}+u-Z4| z#>juAJcmmZFC$NJ0R`M3#3JSN=k$Nf;RmtEpvS~X-P>cx}*=j0X{0mT@<9q-B literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class new file mode 100644 index 0000000000000000000000000000000000000000..37ab9fb9d80d0198dfa00d900f651adcae57a90c GIT binary patch literal 1102 zcmah{O-~a+7=ET-OSh|3R0I_j5GZYR5j7YgT$&I`st0R0c-yvv9n#&YJF}qvCNFxZ zi3fjxKg#${yDS?_*2}x|&g}Cs&%D3?{QL#r86MdvW3i0exMO1mcP%X0xQF|uJTN=U z7FH~*GL-g2AoM;%zP5S9P-w|MXP9k^fWL|SE)U;%-68GFwPnv69(kcKeY{!F1ECo9 z+A{p$M(S9EO1sBl&(+-XceY-*q3lZS_N4E7L0`FQAf@J^`&ypzS5o%d@@$vEHV%Y0 z6kkZk;-7dg(zLRLI-nCZ;Qfia_f&a6>xu}7B#cJdoY);1g*|>CjLT|@`SFQ&>N&7c zvGCBr8rB_bpvJI~?Y1QYrM*Ba3!4t=XgFx1;@~DK3@@{>SvO@^o#c?!+d_q+eYe zqj*7J(-9`_S5hS9gycGIkc7EOlfFhQm;Y+&#Q#)&J%!9ANSd-3`8-Bilk1l*i#I5; jW{Sc}DCQH2r!hsbK8AIf;0dL)ogyg41dLKOP8a?H-#_8Z literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class b/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class new file mode 100644 index 0000000000000000000000000000000000000000..82802afa426f5c5af04f297e12094955678e1dec GIT binary patch literal 1158 zcmaiyOK;Oa5Xb+Ums7{IAt|)H`=D)_hB{4)K(s2AQgVto5L6^?PO@#bO6=fW^ZGJe zIdCb5AaUTtsRuq1Vm5Ie0x4X^Gv1ls{C9RPe}Df0U=MpHW^s20_poH*3YHD5B%c1d z_*uGq_1VNK?kA2u9Z@Erqcv^Tb>fDBoPkY-#DQ>yI%J6EHcuF0Wv|H@=BmQw&x1~# z`!Ah(oBm{~Uc+ghIKI$v_%o(jLNXjwJ^#!O;9RD5jvUfol6!|QY$ zw<&Ge@;t?TyVezMZQ$=Sm|B5w+TtViG5CAl2o!mykQF+SE#B;_drg+R1xZKE0yCaX~4En#EylMHoHh$ zxQR5wlj(qI*JW7a&A@)w74~3S3>hvZr^kivV;Yb-u|9J!%)a3`M zct_gf(Ie1hQPK^P;% dtr223M8xwwSbqa{XlA7eKs*F68k1If=MM`U@Qwfg literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.class b/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.class new file mode 100644 index 0000000000000000000000000000000000000000..bd86d277ea4e8579fb7a64bb52db7461202f86a0 GIT binary patch literal 1127 zcmaiyO>fgc5Qg8)mm9}vp#&%&1=>)OrfFTZASx9_h@hS#4g~eU&2hG5OJWD_ny=r) z1r9;t0C#>3zW_07yKWSuG>6HIcjuXRXXf|cA3p&+gl(dPTSeT)stFT!4BRdJ`a?(b zGjR`V+N|rNs)73kHW&&|geO#sAzR-(X2`YuK4)0!2#>!AM?D_Aa(YAhvfS}qXL#%c zLdVI+oEiwp@U-IxZ|qQ>h(Id)ByerTozdgn13U10zOr3^G;+MYwB^9}6%Xw0Sa{vo zf9AMv4;f6YLO4V5nQ9sQBX>hZo+;!JoyY<2M+#q)Fbf&>Ai0jv;GBar= xZCjH0D9JRU_b<#AZ=!(hDTI+CR#L=%g2*=}D9!@*s7?D*fP4aAxDhG6`41v!>L&mI literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/visionProcessor/FindTarget.class b/build/org/usfirst/frc/team708/robot/commands/visionProcessor/FindTarget.class new file mode 100644 index 0000000000000000000000000000000000000000..e5cc4b897922bbae3b08528ad1373b3bd8a7b795 GIT binary patch literal 1043 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 literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Hanger.class b/build/org/usfirst/frc/team708/robot/subsystems/Hanger.class new file mode 100644 index 0000000000000000000000000000000000000000..583115502cdaa8d82976b35f420b4b8fe6098205 GIT binary patch literal 550 zcmah_!Ab)$5Pj*kU2Ut?DjvLuC$)l66ciLME#jegY3V(?o3<&t8%eT?pXEvL;0O3o z;;h@Epwt{P^Ir1i&CL79>l=VGZ2DNMp^SAOEgu^U)hm@Mcg^7K9}F4F9UV!AW>2N^ zE=vMw1|o=wY4vm{;-N4q$1}3*Cdx9L^t2iC%#M_?j*m>pofOIW@dY z#PVB_j-|Pzdbw>^jzku_j!qJhMr3Pc8Vz(;*h!#;A*R;XnF-~M%6q66>Z7T65Da^Z zO*=ZZPNdE@P(hV}FaG|kM>3F6#vkt$FXo~wR>72qMYp^^p9;J1Xr=k_z;ZXbeL|-c z8O2Kb1*K<7N?4-1MiJN|$u^cLYZRY|uM=W~=LHVGFmd1F{0Z3kA*3bEge(6G+kXmI IsbmSwPgl2ewEzGB literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.class b/build/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.class new file mode 100644 index 0000000000000000000000000000000000000000..2f7cb63530321e715526be737f88a32d34c17f7a GIT binary patch literal 922 zcmaKqZ)+1l5XPU)zw^?VrqNcd+S)%hF@h^nte^-rK`5ksVMD=JvUl0ESMP4a?Ow%? zC8z}jKY$-foV_MZz?wJ9%(3+p727d)VsoRxd~T$OcAmcAiSm@;I`#Bt zZDgeRUPkocjR->;UbnM5av;*sv{e*|xX<85>TJwhXm%`BQ4gi0E7l=GZPbtmwT$~c z)e-u{QzD_u@}Wu-U%m}2Zf$DNlT&df7#g!7+bY&Z#70+8!F7g(f81i&nl16pZo4mr zR^edbK75m0ZPBiH(g{QKJKIf~y<`a;zl=IN}`Hv*REeu1RvODWi1rZbx1fdjVQLc%`K)TU1DLha@qAzB;9blo|X?CUOk1J?cIG|k^Wv0JZ}M6l0G6*@^5q{}M@Jn&54I*jOJPcf_)WN>8H)u9(C zZ65}%tp%@cEN|L@EJzFG8Z#aI*Fi_OoJ>B88wkM@!jS?u~m-nT^)p1GkfWYyhtOu@m z=9xIDE+b1P{ERcq_YRShzS7*+DuEP+7>53uCc|8Biaj$8a%vcs6G&n(frl8k@F;;5 ztXf!0U>zF_tG#)yo+l*`<+}a4=Go0fP*w3tCpH;1leLTOHPD(fc{A6r5}IMAw_3wB zjjtSdXF>7}5}4=$vP<9?5jL%ClZ+9HWxpaie-5id5GN`ZH#^g_7%2NppGF8}}l literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/LED.class b/build/org/usfirst/frc/team708/robot/subsystems/LED.class new file mode 100644 index 0000000000000000000000000000000000000000..c3690d286604818272dc63629ae5bf64e8362ef4 GIT binary patch literal 2276 zcmb7G?^6?36g>+Gn}h`+iWRjIQA(oLMIwb3ikKiZZTQiKf`Tn>l1&ICyXo$Wj^F&& z>Bs&l4Kv8tPXB=ZQJtQ*Nq|af>`Z3wdw1_U_niCQyPLoMe)}hY`}j%4bO@I)6U0?~ z9>hoZLd9$lbNDidc{~Wgj|J&|7(@a|IbD>~NAj^0!dG}KeJT0)I)HCNNMkvGl@Q@p z}JY?Xyy=b_*S=(^pr~ONB@KIsvLa*}p;!?Swu*fX zWmFpcBl6J5cuRwgs)n1mq2SK@<@~$iRNr1iv*LQDwLuET+DD$8WA6xZ)ApC2to2Mwy@rnm+tvT@Tuh!Nus=gp08)1s9@ismQf0y5nuuo<)mo;X1z= zm-v0^K~S~@j)Jncc$WRZvuqBYhOF-g<+sI=TY&qPGsMyL5V1#zew*m`FhL7w zjSRShPdQ_6hu+No3)ghh7r%0VzB>Aj(7!CvpT&L8e_i(yYQ969+vM;N1K~mWGXC=s z!kZ`QuTcUa2z4L5n8FaI*%D_+W)72h;8BP)(ljZ^=m{2yJ(5)KF|v!}$>XBTdUK#J ze4bS}#Dyaaok|$uYw%mIA$dw)-?6^7VM@CWO!4TPk*D4`Uu?){#qs}z2XLPp4HitoDc8Ry_G`1lXQkB=9ISqMKiY3FIT LX%n>17l!`<+L=2B literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Loader.class b/build/org/usfirst/frc/team708/robot/subsystems/Loader.class new file mode 100644 index 0000000000000000000000000000000000000000..a2d0e61bd1c56bc4dd7f4266b1e949260198a8f9 GIT binary patch literal 1171 zcmaJpy#Fick(s?8fFki4{aa403=T!zqe`x#8p1mgfot<#F=0+z&G5LQf@2=)mK$ip zTS0>xDcZZ+Pk5l}%5WXl^#^TaTk{GrlmRix*|BBW5}{{Gs@)bo5z5dK3a_fpXkwyJ zwv3XxBc&xfrn01!d`hURM`pViG*V15xo=}EfS&TlS z5bcNstq$lBV3Oh#WmP0-2h0~Q5i9;c{LSQxOC&FlD#kD1e2E%!6mxVDSfsc_jmwy$ z5z|!3cH1$7S;`pI`_LOvPPHqLRCIZDsF4jC=dnPimeU@+{5Y-Y;#Z{d-!O6okRdrh z9wR73AahZk?txGXZs9h;Fx(mN*d;J4F@hWa2iyk1Z4Pnj!!g{&y&k7`G{}O?7KxPe z5l-S064oJ`ex`#sIRvuY^5ZmndkAp0$8V9&W)Q15So%X-Mk`_zEZ^n9C{CFjmFz>u fBIvGnJ43L^fp;qdvHvyw=}_a9>Gx?)3=jSSDv8c+ literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class b/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class new file mode 100644 index 0000000000000000000000000000000000000000..b9cf38b8408aadb0d538b7bc4d16aee18b0c187c GIT binary patch literal 1488 zcmaJ=YflqF6g>l#ZOc-yC_Vr!@+zP%F9odcHX4&+3?&%(LZLl~B#49^Ia82E8M)aYp81Cd{ zaNyL`z8fg*><1-B3+}Bgt~-G&O6{mxQN34Mc*=QY2<<%=JfPW0Gdd^sd99+e((|}q zW{7#RE}E1h>6{^TPF01VBbH+rC}>`Kx5=wb3jMBnc2q7Lxw>>1ir8hK-j=AhdJ&~% zl_V+Qm$zk(tHYw?0l~!!vKExYGuP-FJY{zKEw6Ki*|SAurLQ#iwX$&m7a7j~w_S#r zvmv(3c1Vgr$k<3?*us4q4{+7S1a8=vG~pq}Z9FpBW87f45E4!8%ixGqq*SQf!V?=$ zk!>FbqAmg@n#T+)XEW*Q5UoIzYtB*CbsEl6R&k4O9a3t%atbY9>D{DX7^f!B9uo>~ zJ^kw=ri-?*5C+Po3c|(4K{cH#OXq!E~>hAaLfA24J zy+74n+Zw4c^JAR?8wBE^kVQnX)BzG}lbCLUY|=js$Y^q)DdRg5uakp~!ZyXJD-B!M TF@Oy+G1CD(+J>G9w=nw`MhY=_ literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class b/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class new file mode 100644 index 0000000000000000000000000000000000000000..957921e44b725e47b6ebb027ecdc951c56359daf GIT binary patch literal 2873 zcmai0%U2s^6#oqgd3BmXKw6+w+R_qI?ew92Da3nCrFcmzH?9>zXQFm*1B^O$66ikAz#JQ27;7x~BBlYzblmka#r5iEX+ zm!|{0e;;&yf!^Q#`AfQ1US#of5NZT%uA2<|%Ca~YhQJI{d0u8i&?1<_dnPw_H|A zN(j3OW23_qu~{lg2wB1&%&QvbGe~zV+bEH=Xe@|R4k-TkkYh#F^PEV8G3d|Dl`UJs z#bUD*qN@0_}zO6Xoc?Eyo#Y*n`{ z8AotbLgT8JldyYz6Jv}Yg~t|7%Q%38GM>ZHATG&x0WZq9f|q2xj8|m5$_lUHbs1NA zd4t(E@s@=4b!tMUrg>1tAsm+RHu{5jN5(b0C*ys5Amc;yQ`AoJbe2@h61h%IKh_z< zM>0OfC-fTb*_e7!#;3S0;|6;j!fAR*_s9di+2!U8Dg!M$-?^X`%7kabNj*#TW_FGm zmc}(H<1<{RXIYXvg&^Z|d{Lu3AqqxTvlnIDWaWM9L%6#5=;79egx-hCP)RS|%_RHPXypQKpOvXo79r9d9ibzu$^7&>Z`4QI=0&dW@~j@6C4!XhFvrA#gf{nR#3*XIS~yd- zOJ#e)DA;PAva63Loo?LhDvb(teuYMaf*m!D8K+eO%nVV-M(AELIh1so&__~AeKnTO zAftw{O`|aEjG%_qqIz#GbgcovN^J%&J4@v!?y}mw7I>@fGERPmUc$k(OT{Xxrkz_F z6H1!dnyC>ccu|v(>jNQ=XVJtGYABNQ8bhbX!wb7wqr4m`JTZv~wU(A|ckj>og~ zCu9sUq-%^fRgE{{q-T7vYJ6p^+gHXqL9w2zF;^Swqn^1_Rm=`k7+e-k>d`e)pCWS? zYVcb!C-Kbp@S7zg3{zKZNBh+uvGZK4ixS>i!7hhOPziLfpuK|K%i*@5p6*POeHAUp zq8&Nxr2kO-$S%xXRV2Fb7}YexoT?)6EtLG+AY|6EXHpUAM>edY{YP?_jsrWfbRV8Lk-F t0~QgbPH4v^>YmFr&yw&WsKXi3s>3Lrr#(j0dGdL=ua$uH;oZL0{{ZrDgOdON literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.class new file mode 100644 index 0000000000000000000000000000000000000000..34f78f2f356f4799221e12c6fbd6f50add7191b1 GIT binary patch literal 2960 zcmai0-E$LF6#s3LCTY4&X(oUQ6p*2mAS@OHY>^gPpg>!Y*7BizY?E!WknG0Y4N$*O z@mpsc9X~)t-{iqh9DM=eEE7 z`@@d_HsY-)j>hnK99?*#3HRVwq|f65KhciMa3YG6k-pr`npGF;gbbNT-$vi;@6Ja0 zQZt$n!(<#eYNHdu|}v@8^2D9V}@g&oIIlp?)Lq@i&oh_N# zr0KYx%nIhjDa|sxv$k{E(R`wh!893!is z(R8cN z#&yROFjZsN%bTu(?jhUBX=OK{V$#WIo}m{vuiv5xYo6woC)_F5Gm5S@Zn~yz9dPW7 z;kvd%QkqMFGN5}p@$&NSIk>Ho>fgQ3m>RLY0b`PJW_O;;7$uK>>8@qe(=(@s^^(7h z^+4K5_`xb%q9mj7tT{PJ)~$@t$>m}D3}@k@FPcqva3)ba!Bn-nhLs(&2Xr?-Ve1al zl@#6>fL<-6{PHA+EYRS<}fTuk!*2%W8C~=*KfE zwqTQrhtaKKE4me|xx2&dWzViTRq=?N+a^P=41F?e7dMeJer}?8R>gBTuVMo>D%f&& z=X0l4K||)8is$iy%%)U4giUl;zis|MwJKi3Kol2Lyo8rk>_B%Euc&wxuc_E9o?C

      i{bJBK7$T0ysR+NkH4R<1|dV|{%Ob9X)4 zk>%yrqJmxZyv|YVbGwv>gg%4rRIs3q(*Y^+))K?^{B{^~bgA_8-E&#?%z`$odwF)Q zg8O*KsF}0+3udWgWDgjuYs=f|IJU!{=^WrEwo0jg>>eu4!k#3eAAXAFbhv`{D+EA9B8S#o$Fi%w^DZ*Hl(;3#4)OsEBY_bt#yEpIgta)r z@K12pF@|@Xtex~jTfpl#A&h+(^8NHwgB+%ZCWP09cSJD~=F)x~;3)L|&V>-=3C7ia z3HvEx5@K#p!fp{Yh2<%%xPg@wbga68RkXETyo`Cmc88$oyn@v90+IQMXp58b)w1Op zI=UPFY72W!ZFL5%reQSp8v>!wioo5<~zQM44+q_CF223J!}5mQTIPymIi zX`yUP46d39K8-j%zRlp@VLfBO0JjGZf)13mHzlq#nHEDv}FUJ~gE{DZ`kg^3nk6#e`S4_p%?2vDX<-1yH z=(BoXoNGan1Wi;Rw1=eNHrK+KjiK{S4A<*o7_W8MW+E1>O-U`e{staAG}F#;E&(^0 k^q*%rX{r%%sODr1_lXl_=5WB^ud@y+wS$MbwE;)|0~r{RN&o-= literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/util/DistanceSensor$Model.class b/build/org/usfirst/frc/team708/robot/util/DistanceSensor$Model.class new file mode 100644 index 0000000000000000000000000000000000000000..9d3d736cae1a2ffe3ae9686a58c8068d80feaf91 GIT binary patch literal 1394 zcmbVK%Wl&^6g`u~agv%Ow55dit2Bv$x`jZBKx`TzDuss>l)aO>i7VHZY$tpMFM&V; zBo-_{La0)$3Ko0-ABDJgY7mXQ0WZ!yb3NzYduHax&u`xWG|((y3iUh+&>1c;Tx7V! zu*hIAEENcrRa{Zg5Xd;*qppBx2`EE*FeJ{Y-%E6r$42(?OOLnTRqEvX!dyTblW3Q*Ys^($H`1Mv;%576LKbOQAdL>izuvDaYcw#A@Uq-SZBe{@~jL1k{WF$Kj^T@C#2+Yyy6BNn- zEBY>kUX75_>k-m=MTwBnD{2HquU7{Vvb3luL{wehA=p9Ii;&xvl@Ajx$U2Xy`V(SL zX{u+`=Q)nz1x@`DI$oiP*Qn6m26d&LID+F8nXwlk8M{eK#(wtpu_IN^eIlN_O+9#5 zSufJJi@aW{?w_Y9|Gz;FZ|QR1$-Z-RTBP~Yw~UjrufQpsjw>6qhbK|k<`*I~r1)!sIEAXblNyduEYM99aG4&N_6zlh(((WR literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/util/DistanceSensor.class b/build/org/usfirst/frc/team708/robot/util/DistanceSensor.class new file mode 100644 index 0000000000000000000000000000000000000000..0c4e120055af1ac75bf0d8b0764cbeed2f285bec GIT binary patch literal 2276 zcmbtVT~8ZF6g^{mZ7>_a=F32nmL{$3EzRbuC0`H-F2SuyP>7I<`m)#?vvk?D*6Z-r zv{D}W4@#A`uYE}sMJho`r1rhPraz#ndS-XA38AfMLEM?SbLXBr=bl-9`}4&w04`xU zjSOazzy8h@f4b3+8`8{5Gnc~6G*XzCi;^@SrD+zVxh2h_+$~GwW;B>{Twe;(%vEGmO3ORdwGqwx-Tq);)LK_4Sr-*?P%p`i4_AR|1GLK>^IsXS>_?JgZ(e zy_;^!sR@XZK>vnS-+0xXwVVg0=SR-FhEq2gyT+ogTaM+=2uv5s|GALjsz73%*I`8! z%Q0`aw$@GWp0RGzldZT_!(KH!ORghl!r!n+*~Q~S^46*9hC$}p0a51PmcZ=)D85u$ zll7-NR0{MQV34c2>F+l{AYLev<1Br1q|~UJoh|8{x2;CQtaY4SwWxOjCsur;`uUR4 zh*%iy#J`p+&AnCE_6Z=6>7ccJJytVnr^&vvDt0p=u_%D1x!>wQ7E+vr=$?b263p7G zT9Bnz4vT4k&c)ZXlwNULUe#Q%WOoPlFB&TI?56R+P;m;kRg7Xx#ke$Y;H1FBzdj0i z?v9Ef467JHPA=b6@g62syf4iKX)a6BGPUWcY1S5R zLDAy7NNO*U`gD8`UAySkCU=p3#^4wxXixFW1SU$5=N{6WW%>~&JW-T4m5{PxrQQ^v&uRZUuN`^*5O$@@~!?3AL2ba+}z}Rwhw^2;t!**}_(3NF(PR8T2 z0z>@c%jLmP4kiJl*fLV8ik6pp9im7wpnQr12#c@Ku1R1v<&JRhkK&tK>K% zzgvMeGq^%UDg?XQW?PTCrARUkQ~l@w)k?cn*N!}_96tQ@5r<<`u~fq}c?0X`{~q38 G0P0^~masDb literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/util/EncoderRotationSensor.class b/build/org/usfirst/frc/team708/robot/util/EncoderRotationSensor.class new file mode 100644 index 0000000000000000000000000000000000000000..83fc5188c9438112026fccd12309f5aadf52ae10 GIT binary patch literal 1059 zcmbVL!EVz)5PfSqapJm3DKt$>OKE{7aZ3#n5*46IErwIdp+&tr$;R2rv5~!j&q7E9 z5C=Yhk3!6DLLe84kmZ@#^~}8YX4l_;eEkOC5qt+_Y?V>MZDqEV*>P|OcOBfru8JBq znl@Sti&@%9Wgx;Kmpo%&0fQCuzGT>H^WMmR_eS`Ak>yfFvFKd-FOqKB9~}Bxpg)o#{>A((m7x@Aa?X=HRXR!$m&Zw@FwAC)Ca{!q zc{V>7tEtJAdb3d#GEQl_gjhT0=_u>+mqK+}pU!9=>EJSa8@i}s!-b1Q7Zqh3EZFc| z>|xc$zKi=faB&kG42S5{~X6642V68Wd0959q+ z8t^FNoK8axE5J70yE5HK6NXYrk)d>JPtwU-pmW9&*=w|lDYHQShW8oF+Z)61_Qx>2 z))>|YUA0WMrgK)Pwnp7oX^3@P#~QtWN4r!{&kA`JDLkelg=pwVaWQGPM%5GK6U_vu zdmmwZLV=t~E+TKGUr>Bcbp{lAQFq(XXs(XyQ#3|A)~5ZAsK2SQy~Z4OM>E(Z1r6Py yrq{(8-y+tD8~ugq0!(`y>oriFaI+`e?B4^aXebXhU7-s0|DaZ#QQOo4Zv6yFY}jQ0 literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/util/Gamepad.class b/build/org/usfirst/frc/team708/robot/util/Gamepad.class new file mode 100644 index 0000000000000000000000000000000000000000..31fac58578163b7d4c691fdb5b1969ffcd4fb494 GIT binary patch literal 2549 zcma)7ZF3V<7(JVp%{E;^Ut)o_VyUQ`2rN0_iq0B_qRU)9L9PY z1DNhY5~VbUnKZ6pHihf*sXxd3KM}nlhPf2x(@5h31s{s}BQboeU_s2Eq+y_(Mg>&` zrh-KUwG@^lbl1&Ax8z!t<%Js(q=JNPXYEGIH5%@$QTNO^RbWfnoCrx0dRj}iSFf7R zncG&YNEQ)~N$8Enr>)wOzYv$8Is$~XL~>$l%qLDtP^wL%Do90+OkDO{*KRDF={!z! z9;tdWVUESa+~PthRM&}3M`GP!-h@$E7G+YD5{62y;rNmj_P9y6X_Cn8icq#Y5({aX zXHfS-)ikPQqfw=ylM)h5+i@kxC#;6$o+Q=^xmiwU?W!qZd(mo`m%Np->C71AIwO5W zyJFO54aX8V3?|$qt0iGy(ROOO*IKlkma8v172P$Bm7@ob>5g5tUEOo7x_-e}F=^p( z38|Xt3MYf2LW|HRA--zVDVD8PmZywnSR=#i(k;($Oy7P9T?|b4<_84x>>_X^puXZa z7T0n-Hr;}G%3d|A*P0TNT46rN^yG?&&<8&Ex6B5K&DM-PX|$Hgw&8GvZ_|u)$@ZLz zdEOERs9^&KZW^nGieq?3#Zl~3Vc~QNH&rZy>hmw|go+iMS8)obCF~HSdfjN$^pfjX zjoO4~iBl}IQ9&OZTCww9(D3oxQ=!lUo|s`C&i`3fTst6#k62BI~uM@u!!Gd3lV8Ne@V8Ne{V8Q=p z1PlIs5iI!kNALk+J%SGszZJoUh{q!MFdcXsN7{bK^n`bf-lQ1g)#Er$bb;|0=kEN_ zBS`t7UlIG+H}E*e48-T}5G@|#Z_QzxAQ}kL@h(mh@kO7OUjlIrL((si;6E^$AKE~? zpgl$+3;CNLkjy+BQhtOol(+|3TYIQIWL6xa)*xh#Cpn%%FPZvrh8uPcBa|rWj`&(e z+jU2|F1B07Fecb&3}>08ApQ^f<6SYXOt$rSp`O7|Pv-0Ikk+*2!cR~*tra3V2G}id zmAoaWn4ykY)|rcF7;I}8Y-`9yG^7v{8WNOn4(B-vpT|R=Wg$U%z(~w*Tjn}Yj#w+V z>1DPqT9oh}3L%f~V<4IT1+gb-YCet16eff;5-#HX@Z}195IdS3{uaGLNEf$-UL+F_ z;({yKiD1{4(Sthr_@V5$pKVLahMkiOMNEb6$07Bx)FoUF3;xZ5Ld^Z&k)C^m?ml$` z+l2BBWcs%Ac>_K96m=vYqxUiTu0JcUKg?5}la~$i;?K!@Da=bm@;Yb!2)0r18qeNs v?B%Rso!j^+yIjW=+~F_IXZ(4%!`0966~4gtobTao#QFPe=dX|{hO7SpL@w^) literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/util/GyroRotationSensor.class b/build/org/usfirst/frc/team708/robot/util/GyroRotationSensor.class new file mode 100644 index 0000000000000000000000000000000000000000..99caeadb06a55296a1e1cdc547dfb9edea1c834a GIT binary patch literal 731 zcmbVJ%SyvQ6g`vHK4P?LeN=4)5usKvD!xDwibXfYMJwV?(mK|Wn32gu@vB7e0WSOi zKT5nw3M#rNZf5SebM84Ox$hsZZvfUXVK z_U*N>&xP`JSh=EgX;*6}jpo|=^63H5wi!}8!V`LzpQ}WpJB5uRmTqeIL^6h+nPI9o6B3ak}aw2KnvFnLp7v! zw2)qtd%jc@G1K9?>UBbcM0ugc(5JZ1b%ZF5*_455^L-H#CVnd{T{<_8g)H(G(#WJy zvM_{U3nR!gtp6(&!%7cxKfi=wu7{Oime!i0H8U7tT&faOXJOLWPiUX|2Hj@m1+238 z1ml5_0gKK-;sSXjF-j9-7$7trv*|5Ih~^?yMr!mEx|*xRVf2=%Ji>TJ;-2bQF%|U- jk&+d2x=OTda*8u;(EV*b`IX3w+>7K{`cq>xavJ*t3l*Fx literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/util/HatterDrive.class b/build/org/usfirst/frc/team708/robot/util/HatterDrive.class new file mode 100644 index 0000000000000000000000000000000000000000..95195bf9adfa7eff1b228d4039e34b5fc3f70785 GIT binary patch literal 2402 zcmb_dS#KLv6#mA`II$<=ByHSD(=}acP5oCR4O4&HRmJC*KM{ zspiaI%a@jIyTY`5&#l#L@5nQ53-avl#8;4h#)D+^5j+Kn@{(;gZUz|%gA)@i2CuuT z228l216thWYbr6 zJ3yu;d#_ommWJ&(r(pmo4O?W` zia`Z?pRaQ?%wbG}fkAP1K86b#F5$MFfn9tJHuI`R z5EAAng@n9dCJCJTg-2fHp+L6{U6i+D2gjY%e1I^|0=siV+wMZiZANGf5l+!H#B$*^ zbmhW#5YKI2L*kpj!!XAkh;i(LN^d=ocSvW9e(E>jMXq+ynrr#R3)INBo4=PBRiu|G zg#t-1h66w-oS|swi`BBJQIc~z4UuS0 zF-~CC#4Kk_EobO=&}-^BLz7w7BK1ir!x-lH9x0NNgjo`mh0%~k5*ZdV$41&i>PFZu zuaLw%t^4pQUgHgV9i#kPo5X$;aR3*nc^8LZ^IEOoFmB)o-p5gVh-3JOJHNmfzTyr1 z7UQ^&3H-#94>1)K!fxG!X*!K^dm@+4 zvc!qI=zrAk@t`@1j4~ad9u9CNI;ayJ)QL7~g$2|T1) zyE@sb^1jlC!kQj$`>OJ~3w;CnNx1-o6XV2AkETy%zowzpZvDZl;L_m=-w%)PMf0(& e2Rb1J@K%s@h&#rEtfiDp>kn)a1}3-)Ve)S>`@q=% literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/util/IRSensor.class b/build/org/usfirst/frc/team708/robot/util/IRSensor.class new file mode 100644 index 0000000000000000000000000000000000000000..c93267b57ec374d7deb6e041b0b149a00041e328 GIT binary patch literal 1342 zcmbVLOHUI~6#i~0Gi4Z3kr6_OJOs5Zj}8?Ccy4D3E;Om!rstgb&b{Zm_dEA~`t|MufC+3$=)=tx z^kPbajA?FWxVgp6tVD@93G-MG7K5ALpY@(>aVRNbQAmD$!N*I=?AL~ne6oe7Us97o z^3Y518Yy1b8za%0p;tqqnvXR(TQ)*&&OHk>6(uT+c*!%W6@3h`=X-*hT&eBa5(T|+NTsnc=C-m~3!)iten+N`*GId5zm z<%;bL)hf-NG9<=524T)Do9+U`d_+5U)o6|(xI|lJ2xrW)v0g3h8P1NrXAyESW9M}% zr#mM9_Q9ZAH0dCtjZkV^-Vtc?V!o)85~K*z=wD)JEf{Y7qzp}wXqp%aOC1=FUNFv5 zp}D-}AC+d&hNW%0>g0`OlW(%EPBQjDKhR}d#Wfkr7?iOBRmLhe8aH>jS%WGfBO{A- z8TX(vOr5hKoM}TwKW7@kAj5D2h3b1{7;j*9T>?);x>F_ZPKl&a#(qpn_z@`=B5c(x z6bY<{gi3_wY|AA*8Db4kW_7nnw~;P|WjK$hRwT^_?@jwzZ%#{!wRALx0eT93^hg5e z=8{m<%~c^E1mis+d!4>CG|>+bV?86sV6Q0*AVO9m4|G6)f+$7(-ZaE8OkcDBBN(M3 zJQ}0I0gB^L{jxjsTzM`Qj=e?T2u+>~dal`XLhK0Q2|@~59@?*Hw#O{gR(91`{VF~y zb?N^ZTK~n+^B0B?61d@?K_dKdaKnI&3Jb+1DAurJknYuFo`8WKcFQfnf literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/util/Math708.class b/build/org/usfirst/frc/team708/robot/util/Math708.class new file mode 100644 index 0000000000000000000000000000000000000000..bfd10dbbf0db873b7578881e37f730ac6ae6e734 GIT binary patch literal 2595 zcma)8U2has7=CAWc6N3<-L^}+Yzsv|+|E{H0W04hixjlb0=lIYP;quTolf^-mf6`- zy!65vNw_fvB7Q|;^umM~65V*=5Aaub>2ENE_`GMP+Z73Mo1A&iIq!L%=lwV*{o~1R zzZ1~})smE^x0T{9%H^A zDbem}*Ru<)=Az>@{lcPW7JSR79o&1U;JIbjFSLB8T9`5XB`h5UN7eEg5~=zm|MHU( zMOODoB(ZS|Mr3tATNu>U>z>tYRegzKp4+M~;Hytg@e!#G$qSARYYLFQRfiCzYSnFj zNq7lhX%+joBlxLNUnpJXa-~e+ne-&OO-!LmPMk5R_Su-luyn`U& zq_A9Oj#k~9U|e!+5G9)ea^6@$j&|zP)kVxQ?tCIlUJD}=JQ0N z(dYU~lyK{OtYn$68=kc?XH;7tk$}->TmB`>Gp)LR#`9dDX=cmwFb$m&w#&s52QqLz zU3D4_YvJE#;-UZ?l2$_#)LOOhgjO?FyQU)m;6yzWL~e={4j86sp{|B+&AO$A#Yt8H z6Phuxjo_QXR-ftCS1ixAF4jX2Sq}>4;N1Eq0yVs{<9mj8D`-ZE2ApP4k=Z4*#*$kF zQBWG>CE;%@CQEJ$89M85_iADH?O8Tf42?F?V4TVtnUvRPHxCOmrIE$fBIV;`YqUg; zM$0s)(NSLBOZzmcuveAPaO3~K<0a~6)x~h4@!)_Fr zvTDxGD!N_C$~oKB&4*a*1{x7S6BJ`- z+DfDNvb7CXL|8Atl7+P$mLjYjuv8H4q!&ZNdH68K&>%&&uC+-%m&;cMDQ4bT%exz- zNdY>Bqq-p8PEkHYy8y_)A$o~&@JS%HF|0*}XFeo34ic7<$mwm0w@KXq4$?9qKr@0Q zLE|B4f?kHjplGEK>KGznC^eU>=z8Tpc{$mIq;`>MCq$YFMWu3jC3W{c#pNGJ zj{XGfXjj3`cj2Wvc&QMt0Ph$@v?8tucX9|l1(BTao~*3r+LUNh^67}LbfvMUgWE&< zMZ`Etufmc6J3+67ux_Y$c>EXY8H3~j7~1F;>(WOz#HU4)7I1u#ddUWv(?vK;2k0R5 z5&G{CXt-U6=`bBZ=p2$l(IJF{)3~A``H_%Z$?3M<)fqtn{jM}AbPSmMQ|Pz|CqXCZ zWQcPat19+-xfgn~a#m?m>gnu!B;dwH5WO9^-VhFlsVK6;)+tyDq`uyvcmx8zL`6Z- zroO{!R!!aek}~U@Y9*^=)e19X=kC|f+!3mRUKjxb(Z@ht!yWqsZT~4c;5Nd#Ba{aB zu-H*r>?kdEloms!NhJR?G^--jaf&>qUD07=XR?#)4-t4AgqhUgST>e7dE|O4V{CD< z0$CYxbw9)Gb0pv{_0v5(MEARrmkHk(V9^`_Dz}! zYjqnsIPh($se$NU2ju91*idXpen6=lf2(ViDg9w?Lr;*VZ*XP5h5ql5st0)6zQ^|O=DLUntCYmgpyH7`WsLQnxPA!uxp{Pw4Sru u)Ss2_eYJiGI>`wd^N}D9o~v}HKIu+<(sU8T0Ud5~e~};WO8|+`TmJy(X`6rm literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/util/Potentiometer.class b/build/org/usfirst/frc/team708/robot/util/Potentiometer.class new file mode 100644 index 0000000000000000000000000000000000000000..4af6282891cdf3c2478b29ffcb81a2a21da282bc GIT binary patch literal 1101 zcmb7CYflqF6ur~ewq+?$sJsNNh_s8ch$s+^p@D)mr6t%j`iX4Ic3s%+)a@+zQGby! zv65)w5Aa7B&#V8& z&;K?!{wHXmvRejZrft05|6OOnwH%XC?2+x-;xVIWuC$%6Gm32SBjkt5wrf`WcEj{) zMniU{%e-kgb;Gk|+)qZtOS{WxrOZ7`_q#t9Zh1{zm_~bTd0qE-gA3gkwxeI7#|bE% zv-Ups1oka48gT=%YU_Xt1BdAXHg1`suQQy>%R}ixg6MpJMcwQ|ZGVOVkx-fDGC zU?nkA|CvobEjI#f{KRLIq(lCvvG$}`x z|95|t@-)wASgOz+!?pBk-RDT}8!gj za$W&TV$NtENKILg!k@rRe5BOV)JAk6e=-qmzC%NZq=0mweU=6QJ__I~fRvI}amEx?A+sZb7H6j_{qpME8fLlp0G{$h%ugD@-6)xeMU(HYpJp2hFUn$*Yu literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/util/RotationSensor.class b/build/org/usfirst/frc/team708/robot/util/RotationSensor.class new file mode 100644 index 0000000000000000000000000000000000000000..0504eec117704bb18220dd4c2ab20a89fd8c612e GIT binary patch literal 378 zcmb7AO-lno41MW-)wSB%;t%kq9vnqMK@mjpv?y5VeRiF$Q?@fOJL~`QBzW)#_@l&3 z_2SVS@{*Ulgyi$<{R6-WCOIOEGHhiS6VeN9w7(=oyL&T2d~Kf;VOVIR?z&~E+@mZT zX2ylBWHXaahy0g}{j+Wf$AxvZ=-RnrV$^IMYm4hBK_UVe;MxW!sPXpGF12JKpnSdKS1YFx(sfORa Cbyt1> literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/util/UltrasonicSensor.class b/build/org/usfirst/frc/team708/robot/util/UltrasonicSensor.class new file mode 100644 index 0000000000000000000000000000000000000000..885fa3a4717c8b6f70d6e2e7223659317a238b7a GIT binary patch literal 1258 zcmbtTQE$>v6#j03ma$HR4JYEIV!JlC~mv&+n9>{FdbI&>Vp6{IVo!jrfPrm`EU^|8c@-bXSVS>cn z7@}C_;vN?(d_$2?6nEZXb^q7TEccf9$yIUZ{oDGF)6NHOl_gXptTBjtk4wc;ks-2Y zztT+xxo%myvumoZtGf&v4cqA|eYaycuBUVyP4RTKS1qn9j@`CBrSBQ0QZrmnwKTn{ zTdwUa4Ujf{>~e*$#Vx}!yoU_ix%!3i@-2q&E)~fTZy1*Ttlw+v&c50<$&+l@nrgOG z$KZD040{I#wXil$$`_{RsIF}pn%@MKFKGuVaY3B0I(d$-hJZBhhO{(qh}H-gXOLu?tU5yU0#YHf zd;<1~Q~}pW#%KkmAz}s@(iZ$fgc5PfUAacdk}LR$(HXn~@{Ahw4JkU$7T1&Wk%X;les>%=u%k~p&0l%K+d zGZ!vMEl3>T&adE?Af7+q!X?lgNxO|T=H-kR~p}c z66EJ%&BeNa8>>+?Q3HWny(Eogo*n2kGx8wqOB1Ql-OYP4O~S;;+~}cvR%PE8aMW9! z35c#hk_;k&`JNs}&+}0jrF$wIa;Mcx`f9kZQeDLLrej_e zq<5yFF{zH@D9z+!4!WHjjX8AFs5FjDtwO-7;vz%9CPLfpykz38QT^9DYElz>yGfq* zqo=wUt@)?p?L+lO`Do&*k2!cgPQiC^&Bt|Y2y9Jpp8pIfun`S%c{I_ox(Iqh9UjUs zHzpZpa<7tA4$AWjrXcw%*QLTrtJCgwwz1A}zfdt|q5GYdGO-m)%jT6^QN#e*J1AoGT z4`9OvsRfAzAHY}eC5YpPSg;DVbm!hV_ug~Q%>4ZQ{Re;@T=y`IOEYk>TA0fouHb6p z;V**xT&%fR7jR=WjK-=jaI>4FvCOk0on}TJr9EjPHN3NZSEfmr7?~SAkk6~^djgJn zuQLJB5op}kBW)fCY`6ZWN2h(rHcyg%BrxCAqi8Q5hEaN;!U1=h-K3`mhbq-YTyHw& zbwRo_35`j097ky;A9K(bV~#v$R2oO7)*#?jae)iiL}**>S4`YDs`qABjcZzOKgrWx z^h_6n%~t(x9jmv>#~e0%%)s+83*W`2k89WxxIMvH{xhJ!R@BesyRnwl70?^#@K}bq zG07;C2bG|5NS<6U0mWabF4a{!omQv)6zhBd(|iUNe@B#JoUdtiSzll) y!3h~oV1I?Ph^Y@B;X0q-*q@2nWB?jv-crfoS2Z=q3ehQ8%a8adae;w_i+=$32d+N= literal 0 HcmV?d00001 diff --git a/src/org/usfirst/frc/team708/robot/Constants.java b/src/org/usfirst/frc/team708/robot/Constants.java index 49bfec5..a35d907 100644 --- a/src/org/usfirst/frc/team708/robot/Constants.java +++ b/src/org/usfirst/frc/team708/robot/Constants.java @@ -22,6 +22,10 @@ public final class Constants { public static final double FEEDER_MOTOR_REVERSE = -1.0; public static final double FEEDER_OFF = 0.0; + public static final double LOADER_MOTOR_FORWARD = 1.0; + public static final double LOADER_MOTOR_REVERSE = -1.0; + public static final double LOADER_OFF = 0.0; + public static final double SHOOTER_MOTOR_FORWARD = 1.0; public static final double SHOOTER_MOTOR_OFF = 0.0; public static final double SHOOTER_MOTOR_BACKWARD = -1.0; @@ -30,7 +34,10 @@ public final class Constants { public static final double SHOOTER_F_HIGH = .17126; public static final double SHOOTER_F_LOW = .2398; - + public static final int HOOD_MAX = 2000; + public static final int HOOD_MIN = 30; + public static final int HOOD_CALIBRATION = 10; + /* * Smart Dashboard */ diff --git a/src/org/usfirst/frc/team708/robot/OI.java b/src/org/usfirst/frc/team708/robot/OI.java index 6327915..4a80824 100644 --- a/src/org/usfirst/frc/team708/robot/OI.java +++ b/src/org/usfirst/frc/team708/robot/OI.java @@ -10,6 +10,7 @@ import org.usfirst.frc.team708.robot.commands.led_out.*; import org.usfirst.frc.team708.robot.commands.intake_ball.*; import org.usfirst.frc.team708.robot.commands.intake_gear.*; +import org.usfirst.frc.team708.robot.commands.loader.*; import org.usfirst.frc.team708.robot.commands.visionProcessor.*; @@ -38,26 +39,27 @@ public class OI { private static final int INTAKE_BALL_IN = Gamepad.button_R_Shoulder; private static final int INTAKE_GEAR_OUT = Gamepad.shoulderAxisLeft; private static final int INTAKE_BALL_OUT = Gamepad.shoulderAxisRight; - private static final int INTAKE_GEAR_UP = Gamepad.button_B; private static final int INTAKE_GEAR_DOWN = Gamepad.button_A; + private static final int INTAKE_GEAR_UP = Gamepad.button_B; + public static final int LED_BUTTON = Gamepad.button_X; + /* * Operator Button Assignment */ - // Shooter private static final int SPIN_SHOOTER_BUTTON = Gamepad.button_L_Shoulder; private static final int SPIN_SHOOTER_BACK_BUTTON = Gamepad.shoulderAxisLeft; private static final int SPIN_FEEDER_BUTTON = Gamepad.button_R_Shoulder; private static final int SPIN_FEEDER_BACK_BUTTON = Gamepad.shoulderAxisRight; - // HANGER private static final int OPERATE_HANGER = Gamepad.leftStick_Y; + private static final int OPERATE_HOOD = Gamepad.rightStick_Y; public static final int HOOD_HIGH = Gamepad.button_A; public static final int HOOD_LOW = Gamepad.button_B; - public static final int LED_BUTTON = Gamepad.button_X; - + private static final int LOADER_STOP = Gamepad.button_X; + private static final int LOADER_SPIN = Gamepad.button_Y; /* * Driver Button Commands */ @@ -67,21 +69,22 @@ public class OI { public static final Trigger intakeBallOut = new AxisUp(driverGamepad, INTAKE_BALL_OUT); public static final Button intakeGearUp = new JoystickButton(driverGamepad, INTAKE_GEAR_UP); public static final Button intakeGearDown = new JoystickButton(driverGamepad, INTAKE_GEAR_DOWN); + public static final Button led = new JoystickButton(driverGamepad, LED_BUTTON); /* * Operator Button Commands */ public static final Button spinShooter = new JoystickButton(operatorGamepad, SPIN_SHOOTER_BUTTON); - public static final Trigger spinShooterBack = new AxisDown(operatorGamepad, SPIN_SHOOTER_BACK_BUTTON); + public static final Trigger spinShooterBack = new AxisUp(operatorGamepad, SPIN_SHOOTER_BACK_BUTTON); public static final Button spinFeeder = new JoystickButton(operatorGamepad, SPIN_FEEDER_BUTTON); public static final Trigger spinFeederBack = new AxisUp(operatorGamepad, SPIN_FEEDER_BACK_BUTTON); -// public static final Button loaderSpinIn = new JoystickButton(operatorGamepad, LOADER_IN_BUTTON); -// public static final Button loaderSpinOut = new JoystickButton(operatorGamepad, LOADER_OUT_BUTTON); -// public static final Button loaderOff = new JoystickButton(operatorGamepad, LOADER_OFF_BUTTON); + public static final Button loaderSpin = new JoystickButton(operatorGamepad, LOADER_SPIN); + public static final Button loaderOff = new JoystickButton(operatorGamepad, LOADER_STOP); - public static final Button led = new JoystickButton(operatorGamepad, LED_BUTTON); public static final Button hoodHigh = new JoystickButton(operatorGamepad, HOOD_HIGH); public static final Button hoodLow = new JoystickButton(operatorGamepad, HOOD_LOW); + public static final Trigger hoodAdjust = new AxisUp(operatorGamepad, OPERATE_HOOD); + public static final Trigger hoodAdjustDown = new AxisDown(operatorGamepad, OPERATE_HOOD); /** * Constructor @@ -106,13 +109,14 @@ public OI() { // spinFeeder.whenPressed(new SpinFeeder()); // spinFeederBack.whileActive(new SpinShooterBack()); // -// loaderSpinIn.whenPressed(new LoaderSpinIn()); -// loaderSpinOut.whenPressed(new LoaderSpinOut()); -// loaderOff.whenPressed(new LoaderOff()); + loaderSpin.whenPressed(new LoaderSpin()); + loaderOff.whenPressed(new LoaderOff()); led.whenPressed(new LED_out()); hoodHigh.whenPressed(new MoveHoodHigh()); hoodLow.whenPressed(new MoveHoodLow()); + hoodAdjust.whileActive(new HoodAdjust()); + hoodAdjustDown.whileActive(new HoodAdjust()); } } diff --git a/src/org/usfirst/frc/team708/robot/RobotMap.java b/src/org/usfirst/frc/team708/robot/RobotMap.java index c8749b7..6b1c83e 100644 --- a/src/org/usfirst/frc/team708/robot/RobotMap.java +++ b/src/org/usfirst/frc/team708/robot/RobotMap.java @@ -17,11 +17,11 @@ public class RobotMap { public static final int operatorGamepad = 2; // PWM Ports - public static final int hoodAngle = 0; +// public static final int = 0; // public static final int = 1; // public static final int = 2; // public static final int = 3; -// public static final int = 4; + public static final int hoodAngle = 4; // public static final int = 5; // public static final int = 6; // public static final int = 7; @@ -49,6 +49,8 @@ public class RobotMap { // Shooter CAN Device ID public static final int feederMotor = 51; + public static final int loaderMotor = 61; + // Digital IO public static final int drivetrainEncoderARt = 0; public static final int drivetrainEncoderBRt = 1; diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/LoaderSpinIn.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/LoaderSpinIn.java new file mode 100644 index 0000000..4b725d7 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/LoaderSpinIn.java @@ -0,0 +1,49 @@ +package org.usfirst.frc.team708.robot.commands.drivetrain; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.OI; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.subsystems.Loader; +import org.usfirst.frc.team708.robot.util.Gamepad; + +import edu.wpi.first.wpilibj.command.Command; + +/** + * + */ +public class LoaderSpinIn extends Command { + + + public LoaderSpinIn() { + + requires(Robot.loader); + + } + + + // Called just before this Command runs the first time + protected void initialize() { + + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + Robot.loader.manualMove(Constants.LOADER_MOTOR_FORWARD); + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return(false); + } + + // Called once after isFinished returns true + protected void end() { + Robot.loader.stop(); + } + + // Called when another command which requires one or more of the same + // subsystems are scheduled to run + protected void interrupted() { + end(); + } +} \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/commands/loader/LoaderOff.java.txt b/src/org/usfirst/frc/team708/robot/commands/loader/LoaderOff.java similarity index 86% rename from src/org/usfirst/frc/team708/robot/commands/loader/LoaderOff.java.txt rename to src/org/usfirst/frc/team708/robot/commands/loader/LoaderOff.java index 56d0097..b376f96 100644 --- a/src/org/usfirst/frc/team708/robot/commands/loader/LoaderOff.java.txt +++ b/src/org/usfirst/frc/team708/robot/commands/loader/LoaderOff.java @@ -13,7 +13,6 @@ */ public class LoaderOff extends Command { - public LoaderOff() { requires(Robot.loader); } @@ -27,6 +26,13 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { Robot.loader.manualMove(Constants.LOADER_OFF); + } + - - } \ No newline at end of file + @Override + protected boolean isFinished() { + // TODO Auto-generated method stub + return false; + } + +} \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpin.java b/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpin.java new file mode 100644 index 0000000..7033b33 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpin.java @@ -0,0 +1,54 @@ +package org.usfirst.frc.team708.robot.commands.loader; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.OI; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.subsystems.Loader; +import org.usfirst.frc.team708.robot.util.Gamepad; + +import edu.wpi.first.wpilibj.command.Command; + +/** + * + */ +public class LoaderSpin extends Command { + + public LoaderSpin() { + requires(Robot.loader); + } + + + // Called just before this Command runs the first time + protected void initialize() { + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + if (Robot.loader.spinForward()) + { + Robot.loader.manualMove(Constants.LOADER_MOTOR_FORWARD); + } + else + { + Robot.loader.manualMove(Constants.LOADER_MOTOR_REVERSE); + } + + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return(true); + } + + // Called once after isFinished returns true + protected void end() { +// Robot.loader.stop(); //runs till you hit the off button + Robot.loader.toggleSpin(); + } + + // Called when another command which requires one or more of the same + // subsystems are scheduled to run + protected void interrupted() { + end(); + } +} \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinIn.java.txt b/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinIn.java similarity index 100% rename from src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinIn.java.txt rename to src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinIn.java diff --git a/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.java.txt b/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.java similarity index 100% rename from src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.java.txt rename to src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.java diff --git a/src/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.txt b/src/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.java similarity index 100% rename from src/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.txt rename to src/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.java diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/HoodAdjust.java b/src/org/usfirst/frc/team708/robot/commands/shooter/HoodAdjust.java new file mode 100644 index 0000000..328e808 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/HoodAdjust.java @@ -0,0 +1,51 @@ +package org.usfirst.frc.team708.robot.commands.shooter; +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.RobotMap; +import org.usfirst.frc.team708.robot.util.Gamepad; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.OI; + +//import org.team708.robot.OI; +//import org.team708.robot.subsystems.Loader; +//import org.team708.robot.util.Gamepad; +//import org.team708.robot.commands.shooter.Fire; + +import edu.wpi.first.wpilibj.command.Command; +import edu.wpi.first.wpilibj.command.WaitCommand; + +/** + * + */ +public class HoodAdjust extends Command { + + public HoodAdjust() { + requires(Robot.shooter); + } + +// Called just before this Command runs the first time + protected void initialize() { + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + double hoodAngle = OI.operatorGamepad.getAxis(Gamepad.rightStick_Y); //Gets Input from operator's controller + + Robot.shooter.hoodAdjust(hoodAngle); //Defines move speed from the operator's controller + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return false; + } + + // Called once after isFinished returns true + protected void end() { + Robot.shooter.stop(); + } + + // Called when another command which requires one or more of the same + // subsystems are scheduled to run + protected void interrupted() { + end(); + } +} diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java index b20e59e..7a1b432 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java @@ -30,7 +30,7 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.shooter.moveHood(2000); // 2000 is upper bounds + Robot.shooter.moveHood(Constants.HOOD_MAX); // 2000 is upper bounds } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java index 5165e73..2d3a426 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java @@ -30,7 +30,7 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.shooter.moveHood(25); // 25 is the lower bounds + Robot.shooter.moveHood(Constants.HOOD_MIN); // 25 is the lower bounds } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Loader.java b/src/org/usfirst/frc/team708/robot/subsystems/Loader.java index 4ddb3ad..43b465d 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Loader.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Loader.java @@ -22,11 +22,14 @@ public class Loader extends Subsystem { private CANTalon loadMotor; + private boolean spinforward; + /** * Constructor */ public Loader() { -// loadMotor = new CANTalon(RobotMap.loaderMotor); //initializes the loading motor + loadMotor = new CANTalon(RobotMap.loaderMotor); //initializes the loading motor + spinforward = false; } public void initDefaultCommand() { @@ -40,9 +43,16 @@ public void stop(){ loadMotor.set(Constants.MOTOR_OFF); } + public boolean toggleSpin() { + spinforward = !spinforward; + return(spinforward); + } + + public boolean spinForward() { + return(spinforward); + } + public void sendToDashboard() { - SmartDashboard.putNumber("Loader Motor Speed", loadMotor.getSpeed()); - if (Constants.DEBUG) { } } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java index c244559..2965766 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java @@ -33,6 +33,8 @@ public class Shooter extends Subsystem { private CANTalon shooter; // Motor Controllers private Servo hood; + private int hoodLocation; + /** * Constructor */ @@ -62,7 +64,7 @@ public Shooter() { hood = new Servo(RobotMap.hoodAngle); // hood.setBounds(2455.0, 8.0, 0.0, 8.0, 553.0); // defines HS-805MG Servo - + hoodLocation = 25; } public void initDefaultCommand() { @@ -90,15 +92,32 @@ public void stop(){ public void moveHood(int angle) { - SmartDashboard.putNumber("Servo passed in: ", angle); - SmartDashboard.putNumber("Servo Raw", hood.getRaw()); + if (Constants.DEBUG) { + SmartDashboard.putNumber("Servo passed in: ", angle); + SmartDashboard.putNumber("Servo Raw", hood.getRaw()); + } + hoodLocation = angle; hood.setRaw(angle); - + } + + public void hoodAdjust(double angle) { + + if ((angle > 0.0) && (hoodLocation<2000)) hoodLocation+=Constants.HOOD_CALIBRATION; + else if ((angle < 0.0) && (hoodLocation>25)) hoodLocation-=Constants.HOOD_CALIBRATION; + + moveHood(hoodLocation); + if (Constants.DEBUG) { + SmartDashboard.putNumber("Servo angle",hoodLocation); + SmartDashboard.putNumber("Servo joystick value", angle); + } + } /** * Sends data to the Smart Dashboard */ public void sendToDashboard() { + if (Constants.DEBUG) { + } SmartDashboard.putNumber("Encoder Position", shooter.getEncPosition()); SmartDashboard.putNumber("Encoder Speed", shooter.getSpeed()); SmartDashboard.putNumber("Encoder Velocity", shooter.getEncVelocity()); diff --git a/sysProps.xml b/sysProps.xml index 4dd708197d9ededecf0426c9f6bc24556793a5ce..a0557e0fbc2f6f60a75944a8bf9afab09c99d75d 100644 GIT binary patch delta 83 zcmZ2yu+CsZ37@GegBybpgE504g9U>D5GpV@F}MK5Oo6l$g9(tO0OXr6I5U_5RhRj*07(M|1qN3j+Yty&8H|8(&Oi|t1``G+Am0S6)|EkF bav+QK<|llInAuGkj2X-rOg66-YGeffXP6IG From 398d3e96c4e05c4fb1b584046f977560aec68074 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Tue, 14 Feb 2017 20:36:14 -0500 Subject: [PATCH 17/69] cleaned up baseline before vision merge --- .../usfirst/frc/team708/robot/Constants.java | 38 +++++++++++--- src/org/usfirst/frc/team708/robot/OI.java | 1 + src/org/usfirst/frc/team708/robot/Robot.java | 33 +++++++++---- .../commands/Climber/ManualMoveClimber.java | 3 +- .../DriveStraightToEncoderDistanceOrTime.java | 4 +- .../commands/drivetrain/LoaderSpinIn.java | 49 ------------------- .../commands/intake_ball/Intake_Ball_Out.java | 2 +- .../intake_ball/ManualIntake_Ball.java | 2 +- .../robot/commands/led_out/LED_out.java | 9 ++-- .../robot/commands/shooter/ManualShoot.java | 6 +-- .../robot/commands/shooter/SpinShooter.java | 5 +- .../commands/shooter/SpinShooterBack.java | 2 - .../frc/team708/robot/subsystems/Climber.java | 1 + .../team708/robot/subsystems/Drivetrain.java | 4 +- .../frc/team708/robot/subsystems/LED.java | 27 +++------- .../team708/robot/subsystems/Pivot_Gear.java | 2 +- .../frc/team708/robot/subsystems/Shooter.java | 42 ++++++++-------- 17 files changed, 100 insertions(+), 130 deletions(-) delete mode 100644 src/org/usfirst/frc/team708/robot/commands/drivetrain/LoaderSpinIn.java diff --git a/src/org/usfirst/frc/team708/robot/Constants.java b/src/org/usfirst/frc/team708/robot/Constants.java index a35d907..b1a7c49 100644 --- a/src/org/usfirst/frc/team708/robot/Constants.java +++ b/src/org/usfirst/frc/team708/robot/Constants.java @@ -29,20 +29,32 @@ public final class Constants { public static final double SHOOTER_MOTOR_FORWARD = 1.0; public static final double SHOOTER_MOTOR_OFF = 0.0; public static final double SHOOTER_MOTOR_BACKWARD = -1.0; + public static final double SHOOTER_MOTOR_SPEED_LOW = 5200; public static final double SHOOTER_MOTOR_SPEED_HIGH = 5200; - public static final double SHOOTER_F_HIGH = .17126; - public static final double SHOOTER_F_LOW = .2398; + + public static final int SHOOTER_ENCODER_PULSES = 128; + + public static final double SHOOTER_P = 0.06; + public static final double SHOOTER_I = 0.001; + public static final double SHOOTER_D = 2.0; + public static final int SHOOTER_F = 0; + public static final int SHOOTER_IZONE = 10; + public static final double SHOOTER_RAMPRATE = 0.0; + public static final int SHOOTER_PROFILE = 0; + public static final int HOOD_MAX = 2000; public static final int HOOD_MIN = 30; public static final int HOOD_CALIBRATION = 10; + public static final double AXIS_DEAD_ZONE = 0.3; + /* * Smart Dashboard */ public static final double SEND_STATS_INTERVAL = .5; // Interval for reporting in seconds - public static final boolean DEBUG = true; + public static final boolean DEBUG = true; /* @@ -50,8 +62,8 @@ public final class Constants { */ public static final double SONAR_CLOSE = 30.0; public static final double SONAR_FAR = 80.0; - public static final double IR_HAS_GEAR_DISTANCE = 4.0; - public static final double ENCODER_BOTTOM_POSITION = 0.0; + public static final double IR_HAS_GEAR_DISTANCE = 4.0; + public static final double ENCODER_BOTTOM_POSITION = 0.0; public static final double GRAYHILL_ENCODER_PULSES_PER_REVOLUTION = 128.0; @@ -59,11 +71,15 @@ public final class Constants { * Drivetrain */ public static final double TANK_STICK_TOLERANCE = .30; - public static final double DRIVETRAIN_WHEEL_DIAMETER = 4.0; - public static final double DRIVETRAIN_ENCODER_PULSES_PER_REV = 128.0; + public static final double DRIVETRAIN_WHEEL_DIAMETER = 4.0; + public static final int DRIVETRAIN_ENCODER_PULSES_PER_REV = 128; public static final boolean DRIVE_USE_SQUARED_INPUT = false; public static final boolean DRIVETRAIN_USE_LEFT_ENCODER = true; // variable to determine which side encoder is on - + public static final double PEAK_POS = 4.0; + public static final double PEAK_NEG = -4.0; + public static final double NOMINAL_POS = 0.0; + public static final double NOMINAL_NEG = -0.0; + // PID Tuning parameters public static final double Kp = 0.0; // Proportional gain @@ -72,6 +88,12 @@ public final class Constants { public static final double pid_tolerance = 1; + // LED CONTROLS + + public static final byte SET_ALLIANCE_INVALID = 0x00; + public static final byte SET_ALLIANCE_BLUE = 0x01; + public static final byte SET_ALLIANCE_RED = 0x02; + public static final byte MAX_LED_CODE = 0x10; /* * Vision Processor diff --git a/src/org/usfirst/frc/team708/robot/OI.java b/src/org/usfirst/frc/team708/robot/OI.java index 4a80824..b6c9223 100644 --- a/src/org/usfirst/frc/team708/robot/OI.java +++ b/src/org/usfirst/frc/team708/robot/OI.java @@ -60,6 +60,7 @@ public class OI { public static final int HOOD_LOW = Gamepad.button_B; private static final int LOADER_STOP = Gamepad.button_X; private static final int LOADER_SPIN = Gamepad.button_Y; + /* * Driver Button Commands */ diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index 29101ef..ca33d08 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -14,6 +14,8 @@ //import edu.wpi.first.wpilibj.networktables.NetworkTable; import edu.wpi.first.wpilibj.SerialPort; +import edu.wpi.first.wpilibj.DriverStation; +import edu.wpi.first.wpilibj.DriverStation.Alliance; import edu.wpi.first.wpilibj.SerialPort.Port; import edu.wpi.cscore.UsbCamera; import edu.wpi.cscore.AxisCamera; @@ -41,6 +43,7 @@ import org.usfirst.frc.team708.robot.commands.loader.*; import org.usfirst.frc.team708.robot.commands.shooter.*; import org.usfirst.frc.team708.robot.commands.visionProcessor.*; +import org.usfirst.frc.team708.robot.commands.led_out.*; public class Robot extends IterativeRobot { @@ -56,13 +59,16 @@ public class Robot extends IterativeRobot { public static Climber climber; - public static VisionProcessor visionProcessor; + public static VisionProcessor visionProcessor; public static LED led1; - public static OI oi; + public static OI oi; + public static int AllianceColor; + public static DriverStation ds; + public static DriverStation.Alliance alliance; - SendableChooser autonomousMode = new SendableChooser<>(); + SendableChooser autonomousMode = new SendableChooser<>(); Command autonomousCommand; Preferences prefs; @@ -90,8 +96,8 @@ public void robotInit() { led1 = new LED(); climber = new Climber(); - oi = new OI(); // Initializes the OI. - // This MUST BE LAST or a NullPointerException will be thrown + oi = new OI(); // Initializes the OI. + // This MUST BE LAST or a NullPointerException will be thrown // UsbCamera ucamera=CameraServer.getInstance().startAutomaticCapture("cam0", 0); // AxisCamera camera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); @@ -107,6 +113,17 @@ public void disabledPeriodic() { Scheduler.getInstance().run(); sendStatistics(); prefs = Preferences.getInstance(); + + if (ds.isFMSAttached()) + { + alliance = ds.getAlliance(); + if (ds.getAlliance() == Alliance.Blue) + led1.send_to_led(Constants.SET_ALLIANCE_BLUE); + else if (ds.getAlliance() == Alliance.Red) + led1.send_to_led(Constants.SET_ALLIANCE_RED); + else + led1.send_to_led(Constants.SET_ALLIANCE_INVALID); + } } /** @@ -119,7 +136,6 @@ public void autonomousInit() { // schedule the autonomous command (example) autonomousCommand = (Command)autonomousMode.getSelected(); if (autonomousCommand != null) autonomousCommand.start(); - } /** @@ -146,7 +162,6 @@ public void teleopInit() { * You can use it to reset subsystems before shutting down. */ public void disabledInit() { - } /** @@ -214,6 +229,4 @@ private void sendDashboardSubsystems() { // SmartDashboard.putData(visionProcessor); SmartDashboard.putData(climber); } -} - - +} \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/commands/Climber/ManualMoveClimber.java b/src/org/usfirst/frc/team708/robot/commands/Climber/ManualMoveClimber.java index 358c515..206e99c 100644 --- a/src/org/usfirst/frc/team708/robot/commands/Climber/ManualMoveClimber.java +++ b/src/org/usfirst/frc/team708/robot/commands/Climber/ManualMoveClimber.java @@ -3,6 +3,7 @@ import org.usfirst.frc.team708.robot.OI; import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.util.Gamepad; +import org.usfirst.frc.team708.robot.Constants; import edu.wpi.first.wpilibj.command.Command; /** @@ -23,7 +24,7 @@ protected void execute() { double moveSpeed = OI.operatorGamepad.getAxis(Gamepad.leftStick_Y); //check if joystick axis is in deadzone. Change movespeed to 0 if it is - if(moveSpeed <= .25 && moveSpeed >= -.25){ + if(moveSpeed <= Constants.AXIS_DEAD_ZONE && moveSpeed >= -Constants.AXIS_DEAD_ZONE){ moveSpeed = 0.0; } diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.java index 28afd0d..02b9b2a 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.java @@ -10,9 +10,9 @@ */ public class DriveStraightToEncoderDistanceOrTime extends Command { - private double targetDistance; + private double targetDistance; private final double rotate = 0.0; - private double speed; + private double speed; private double maxTime; diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/LoaderSpinIn.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/LoaderSpinIn.java deleted file mode 100644 index 4b725d7..0000000 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/LoaderSpinIn.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.usfirst.frc.team708.robot.commands.drivetrain; - -import org.usfirst.frc.team708.robot.Constants; -import org.usfirst.frc.team708.robot.OI; -import org.usfirst.frc.team708.robot.Robot; -import org.usfirst.frc.team708.robot.subsystems.Loader; -import org.usfirst.frc.team708.robot.util.Gamepad; - -import edu.wpi.first.wpilibj.command.Command; - -/** - * - */ -public class LoaderSpinIn extends Command { - - - public LoaderSpinIn() { - - requires(Robot.loader); - - } - - - // Called just before this Command runs the first time - protected void initialize() { - - } - - // Called repeatedly when this Command is scheduled to run - protected void execute() { - Robot.loader.manualMove(Constants.LOADER_MOTOR_FORWARD); - } - - // Make this return true when this Command no longer needs to run execute() - protected boolean isFinished() { - return(false); - } - - // Called once after isFinished returns true - protected void end() { - Robot.loader.stop(); - } - - // Called when another command which requires one or more of the same - // subsystems are scheduled to run - protected void interrupted() { - end(); - } -} \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.java b/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.java index 63dc5a7..056b65b 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.java @@ -20,7 +20,7 @@ protected void initialize() { protected void execute() { - if (OI.driverGamepad.getAxis(Gamepad.shoulderAxisRight) >=.5){ + if (OI.driverGamepad.getAxis(Gamepad.shoulderAxisRight) >= Constants.AXIS_DEAD_ZONE){ Robot.intake_ball.moveMotor(Constants.INTAKE_REVERSE); } } diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java b/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java index aa55205..00f9125 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java @@ -30,7 +30,7 @@ protected void execute() { Robot.intake_ball.moveMotor(Constants.INTAKE_FORWARD); } else - if (OI.driverGamepad.getAxis(Gamepad.shoulderAxisRight) >=.5){ + if (OI.driverGamepad.getAxis(Gamepad.shoulderAxisRight) >= Constants.AXIS_DEAD_ZONE){ Robot.intake_ball.moveMotor(Constants.INTAKE_REVERSE); } else { diff --git a/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java b/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java index 0b3f826..3ec3479 100644 --- a/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java +++ b/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java @@ -22,7 +22,7 @@ */ public class LED_out extends Command { -static public int count = 0; +static public byte count = 0x00; public LED_out() { requires(Robot.led1); @@ -33,13 +33,10 @@ protected void initialize() { } // Called repeatedly when this Command is scheduled to run - protected void execute() { -// boolean Bpressed = OI.operatorGamepad.getButton(Gamepad.button_B); -// -// if (Bpressed == true){ + protected void execute() { count++; + if (count > Constants.MAX_LED_CODE) count = 0x00; Robot.led1.send_to_led(count); -// } } // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java b/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java index 5a7b2c1..09398ef 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java @@ -25,7 +25,7 @@ public ManualShoot() { // Called just before this Command runs the first time protected void initialize() { - Robot.shooter.setFgain(Constants.SHOOTER_F_LOW); + Robot.shooter.setFgain(Constants.SHOOTER_F); } // Called repeatedly when this Command is scheduled to run @@ -33,10 +33,10 @@ protected void execute() { boolean L_Shoulderpressed = OI.operatorGamepad.getButton(Gamepad.button_L_Shoulder); if (L_Shoulderpressed == true){ - Robot.shooter.manualSpeed(2000); + Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_SPEED_HIGH); } else - Robot.shooter.manualSpeed(0); + Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_OFF); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java index f3f5600..ef7dc5c 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java @@ -29,8 +29,9 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.shooter.setFgain(Constants.SHOOTER_F_LOW); - Robot.shooter.manualSpeed(2000); + Robot.shooter.setFgain(Constants.SHOOTER_F); + Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_HIGH); + // Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_SPEED_HIGH); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.java b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.java index bd19e63..0c82228 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.java @@ -25,12 +25,10 @@ public SpinShooterBack() { // Called just before this Command runs the first time protected void initialize() { -// Robot.shooter.setFgain(Constants.SHOOTER_F_LOW); } // Called repeatedly when this Command is scheduled to run protected void execute() { -// if (OI.operatorGamepad.getAxis(Gamepad.shoulderAxisLeft) <= -.5) Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_BACKWARD); } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Climber.java b/src/org/usfirst/frc/team708/robot/subsystems/Climber.java index 9dac615..5b0a067 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Climber.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Climber.java @@ -39,6 +39,7 @@ public void initDefaultCommand() { public void manualMove(double speed) { climberMotor.set(speed); } + public void stop(){ climberMotor.set(Constants.MOTOR_OFF); } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java index 794787b..51827e3 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java @@ -331,8 +331,8 @@ public void sendToDashboard() { SmartDashboard.putNumber("Gyro angle", ( (int)gyro.getAngle())); // Gyro angle SmartDashboard.putNumber("DT Sonar Distance", getSonarDistance()); // Sonar distance reading -// SmartDashboard.putNumber("DT Encoder Distance", encoder.getDistance()); // Encoder reading -// SmartDashboard.putNumber("DT Encoder 2 Distance", encoder2.getDistance()); // Encoder reading + SmartDashboard.putNumber("DT Encoder Distance", encoder.getDistance()); // Encoder reading + SmartDashboard.putNumber("DT Encoder 2 Distance", encoder2.getDistance()); // Encoder reading // SmartDashboard.putNumber("Sonar Mode", sonarOverride); } } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/LED.java b/src/org/usfirst/frc/team708/robot/subsystems/LED.java index b44a493..a22f439 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/LED.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/LED.java @@ -25,45 +25,30 @@ public class LED extends Subsystem { public static SerialPort led_out; public static Port port; - public static int buttonvalue = 0; - public static byte[] msg = new byte[8]; - public static byte[] msgread = new byte[10]; + public static byte[] msg = new byte[10]; public static String messageback; public LED() { -// port = Port.kOnboard; - port = Port.kMXP; +// port = Port.kOnboard; //on board serial - bits were reversed 0x55 = 0xAA to arduino + port = Port.kMXP; //expansion board serial led_out = new SerialPort(9600, port, 8, Parity.kNone, StopBits.kOne); led_out.setWriteBufferMode(WriteBufferMode.kFlushOnAccess); msg[0] = 0x00; -// msg[1] = 0x55; -// msg[2] = 0x00; -// msg[3] = 0x64; -// msg[4] = 0x00; -// msg[5] = 0x0A; -// msg[6] = 0x00; } - public void send_to_led(int command){ - buttonvalue = command; - String message = Integer.toString(buttonvalue); - msg[0]++; + public void send_to_led(byte command){ + msg[0] = command; // led_out.writeString(message.toString()); led_out.write(msg, 1); led_out.flush(); -// if (led_out.getBytesReceived() > 0) -// msgread = led_out.read(1); - SmartDashboard.putNumber("LED sent to", msg[0]); -// SmartDashboard.putNumber("LED sent to", buttonvalue); -// SmartDashboard.putNumber("LED read from arduio", msgread[0]); } public void sendToDashboard() { - SmartDashboard.putString("LED port", port.toString()); + SmartDashboard.putNumber("LED code sent", msg[0]); } public void initDefaultCommand() { diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java index d1fbda9..1934973 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java @@ -32,7 +32,7 @@ public void moveMotor(double speed) { if (!(Robot.pivot_gear.isFwdSwitch() || Robot.pivot_gear.isRevSwitch())) pivotMotor.set(speed); else - pivotMotor.set(0); + pivotMotor.set(Constants.INTAKE_OFF); } public boolean isFwdSwitch() { diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java index 2965766..bb0a14c 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java @@ -31,9 +31,9 @@ public class Shooter extends Subsystem { // Put methods for controlling this subsystem here. Call these // from Commands. - private CANTalon shooter; // Motor Controllers + private CANTalon shooter, shooterSlave; // Motor Controllers private Servo hood; - private int hoodLocation; + private int hoodLocation; /** * Constructor @@ -44,27 +44,25 @@ public Shooter() { // Initializes the motor - shooter = new CANTalon(RobotMap.shooterMotorMaster); + shooter = new CANTalon(RobotMap.shooterMotorMaster); + shooterSlave = new CANTalon(RobotMap.shooterMotorSlave); + + shooterSlave.changeControlMode(CANTalon.TalonControlMode.Follower); + shooterSlave.set(shooter.getDeviceID()); + shooter.enable(); + shooter.reverseSensor(false); shooter.setFeedbackDevice(FeedbackDevice.QuadEncoder); - shooter.reverseSensor(false); - shooter.configEncoderCodesPerRev(256); -// shooter.changeControlMode(TalonControlMode.PercentVbus); - shooter.configNominalOutputVoltage(+0.0, -0.0); - shooter.configPeakOutputVoltage(+4.0, -4.0); - /* set closed loop gains in slot1 */ - shooter.setProfile(0); - -// shooter.setP(0.6); -// shooter.setI(0.002); -// shooter.setD(0); - - shooter.setPID(0.6, 0.0, 0.0, Constants.SHOOTER_F_HIGH, 0, 4.0, 0); + shooter.changeControlMode(TalonControlMode.PercentVbus); + + shooter.configNominalOutputVoltage(Constants.NOMINAL_POS, Constants.NOMINAL_NEG); + shooter.configPeakOutputVoltage(Constants.PEAK_POS, Constants.PEAK_NEG); + shooter.configEncoderCodesPerRev(Constants.SHOOTER_ENCODER_PULSES); + + shooter.setPID(Constants.SHOOTER_P, Constants.SHOOTER_I, Constants.SHOOTER_D, Constants.SHOOTER_F, Constants.SHOOTER_IZONE, Constants.SHOOTER_RAMPRATE, Constants.SHOOTER_PROFILE); hood = new Servo(RobotMap.hoodAngle); - -// hood.setBounds(2455.0, 8.0, 0.0, 8.0, 553.0); // defines HS-805MG Servo - hoodLocation = 25; + hoodLocation = Constants.HOOD_MIN; } public void initDefaultCommand() { @@ -73,8 +71,9 @@ public void initDefaultCommand() { public void manualSpeed(double speed) { // shooter.changeControlMode(TalonControlMode.Speed); + shooter.changeControlMode(TalonControlMode.PercentVbus); + shooter.set(speed); -// shooter.set(.2); } public void manualRPM(double rpm) { @@ -87,6 +86,7 @@ public void setFgain(double F){ } public void stop(){ + shooter.changeControlMode(TalonControlMode.PercentVbus); shooter.set(Constants.MOTOR_OFF); } @@ -97,7 +97,7 @@ public void moveHood(int angle) { SmartDashboard.putNumber("Servo Raw", hood.getRaw()); } hoodLocation = angle; - hood.setRaw(angle); + hood.setRaw(angle); } public void hoodAdjust(double angle) { From 6b480b3e394bf470b86d912682597a918397b7db Mon Sep 17 00:00:00 2001 From: jpiergal Date: Tue, 14 Feb 2017 23:18:31 -0500 Subject: [PATCH 18/69] after vision merge --- .../frc/team708/robot/AutoConstants.class | Bin 548 -> 1759 bytes .../usfirst/frc/team708/robot/Constants.class | Bin 1940 -> 2463 bytes build/org/usfirst/frc/team708/robot/OI.class | Bin 3805 -> 3805 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 4891 -> 5656 bytes .../commands/Climber/ManualMoveClimber.class | Bin 1329 -> 1374 bytes .../commands/drivetrain/LoaderSpinIn.class | Bin 1109 -> 0 bytes .../drivetrain/RotateAndDriveToBoiler.class | Bin 0 -> 1919 bytes .../drivetrain/RotateAndDriveToGear.class | Bin 0 -> 1925 bytes .../drivetrain/RotateAndDriveToLift.class | Bin 0 -> 1925 bytes .../intake_ball/Intake_Ball_Out.class | Bin 1383 -> 1383 bytes .../intake_ball/ManualIntake_Ball.class | Bin 1428 -> 1428 bytes .../robot/commands/led_out/LED_out.class | Bin 1107 -> 1194 bytes .../robot/commands/shooter/ManualShoot.class | Bin 1367 -> 1356 bytes .../robot/commands/shooter/MoveHoodLow.class | Bin 1102 -> 1102 bytes .../robot/commands/shooter/SpinShooter.class | Bin 1158 -> 1158 bytes .../commands/shooter/SpinShooterBack.class | Bin 1127 -> 1127 bytes .../commands/visionProcessor/FindTarget.class | Bin 1043 -> 738 bytes .../visionProcessor/GripPipelineBoiler.class | Bin 0 -> 5930 bytes .../visionProcessor/GripPipelineGear.class | Bin 0 -> 5952 bytes .../visionProcessor/GripPipelineLift.class | Bin 0 -> 5952 bytes .../team708/robot/subsystems/Climber.class | Bin 1074 -> 1074 bytes .../team708/robot/subsystems/Drivetrain.class | Bin 6832 -> 6918 bytes .../frc/team708/robot/subsystems/LED.class | Bin 2276 -> 1961 bytes .../team708/robot/subsystems/Shooter.class | Bin 2873 -> 3042 bytes .../robot/subsystems/VisionBoiler.class | Bin 0 -> 8786 bytes .../team708/robot/subsystems/VisionGear.class | Bin 0 -> 8472 bytes .../team708/robot/subsystems/VisionLift.class | Bin 0 -> 8470 bytes .../robot/subsystems/VisionProcessor.class | Bin 2960 -> 2443 bytes .../frc/team708/robot/AutoConstants.java | 60 ++- src/org/usfirst/frc/team708/robot/Robot.java | 63 ++- .../drivetrain/RotateAndDriveToBoiler.java | 84 ++++ .../drivetrain/RotateAndDriveToGear.java | 83 ++++ .../drivetrain/RotateAndDriveToLift.java | 84 ++++ .../robot/commands/shooter/SpinShooter.java | 5 +- .../commands/visionProcessor/FindTarget.java | 4 +- .../visionProcessor/GripPipelineBoiler.java | 187 ++++++++ .../visionProcessor/GripPipelineGear.java | 187 ++++++++ .../visionProcessor/GripPipelineLift.java | 187 ++++++++ .../robot/subsystems/VisionBoiler.java | 454 ++++++++++++++++++ .../team708/robot/subsystems/VisionGear.java | 426 ++++++++++++++++ .../team708/robot/subsystems/VisionLift.java | 426 ++++++++++++++++ .../robot/subsystems/VisionProcessor.java | 60 +-- sysProps.xml | Bin 6190 -> 6190 bytes 43 files changed, 2249 insertions(+), 61 deletions(-) delete mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/LoaderSpinIn.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineGear.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.class create mode 100644 build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class create mode 100644 build/org/usfirst/frc/team708/robot/subsystems/VisionGear.class create mode 100644 build/org/usfirst/frc/team708/robot/subsystems/VisionLift.class create mode 100644 src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineGear.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java create mode 100644 src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java create mode 100644 src/org/usfirst/frc/team708/robot/subsystems/VisionGear.java create mode 100644 src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java diff --git a/build/org/usfirst/frc/team708/robot/AutoConstants.class b/build/org/usfirst/frc/team708/robot/AutoConstants.class index 6d1b944008ba37d2340d39437ff8884e3cb6b38c..4e47393239d82783d4983abc99c1da398bc9ccf1 100644 GIT binary patch literal 1759 zcmb7^+fvg|6o%KP5XMe9l_G+89v#l1fZ_q6q1|nxX;afsdY1`Mune>_ZR)j;;H{1? z;gvI9INa*3FX9uZYo(;D*73qU(@ekr|Fiba-Yfb3>&sUFScknZguotz-9ab`m`dqI zTgxYA5wpt^0DWZDk>#vx#$*RyD~G@TF-X`7a5YqnIj zf2{cfpDAVOCF!(vnp)ZZ_MXOvzdWrhV7ML6nRt)?%v}N{qK2NvEovWKd&6i60|Lgl zv!|!*EE!<|lb0uMIxIwX44-+&)D3BM*Ay_`Eq4kI3z*>rFJgw7)M&@zRP`fov!1}J zf&qWf4s?3abTU%IhRO$Cl(=_MV_fu?gge5EWX(c>`qF(HOre$aqLVgDPD*AhDT_)% zo?m#wzNhChPVjUhAz-AVUT*JCly{3eybiu8q;&4a!wa~5p8#dETB~|n0z$KM_~!K| z>xbBxBSy7W$+yn-D-GM-KSd>K)DPU#lG~^fUx@wQ>uOWLl2LCQtF7iywbAs{qsD>i zRot_UmB(tMzF+rLt>x8&H@5kVdb-|f98}U(zi^kkeB!=wBk&Ro0So_870-$8R8QU7 zv1;z0R1Q3dLmz%r0PevQ^uqwYlyt0pFo=AGaTqz$!$XXR(H~_@`7wxg>Ww4E7*8Ny zWju*|jqw!nG~?^YGmLK_-(-9X`8MM_$amR#==tt5etKSkbTd8+rEG1c2*`E6v4@eXo|I~`4@~cc(Q_85U)Ax7}aO|e$9Ud@yTx?`T{5@12&k6*NFdr01EI5Nq~jdJ}CYH D^G7iO delta 221 zcmcc5yM#sI)W2Q(7#J8#7!J~Q8RXd+6c`yeBI83GgWO$1CK`(Aryl^SU|?Wm z;0B6%1i1!#`1`o9If#HoLBbKp!X}evGpSB~$s{|uiFq2cD1+E!X%;U=*2!rs`dPdT zk_`L|tUx_%K+Q}H0zkeH5?>f7!^i;C10=$E$_+U@SL+hS9zBhacSyo9U#l``#WL{Pyqj7XX-m7u^tp z)g(Mm!rI2*57s*5&p1v|cv9Fo$G}gwWck8pz|0s{tTWix&T#e2ht1jFFNZdXH1&+T zQ274m{a+#t{RY;mhsbHw4@GagpILG2Nug{vgH+pkyx@AgC>Zp$mFqdvriG>pXEkJj zmxD2FU~~wpLXqQ^nZ+8@u^AlTWz(02;D*HhLeFfEhfi=<`x%H>C3qJ**6MNv&r8?A zeeS&4;->yJr3O?Z?zf$SX>)5QBO;Zw9;T=yE#Fk3p+XI})oj${+R9RWb$)rV&S1b7 zMaeD8goDF6Tf delta 589 zcmYk)J4?e*6bJDCO-xe7s8Bj|5M6xLN43@mzG}3sjjfF~(bg&iu?~W$hz?GE0~O-# z>RKEG2PbtXD1sn}AHiJ^L_En*Z-zsD|9j8P<&aDNMPs1ydwT~UiuF2(SXEF|uvQLy zu#*NeWf)c>XD98HK9`bX51;Ss^yrvD{a?u#c{%o6zK>M$R}4Pth}#QVfr05FpuAKw zJxfNAp~>4bt7Y_=oM!2UmzNm)W+EH6O-r*(ThCev=UaHHm1D1i-s3!qMaew@PHRnT zvyk3r5YpRjp~3y3KQ-s#B9@#pDapF7-=qXPk-#8Rw}3VT(Sd(= zl0)dOuJ@38IrovnocqZGTz`Zd#Za|>m^{L*kCMkGxL}-uNzPN`Y0fHH<2>VhDJ`12 zE5)Z|o%`%OInCL%Dgg%UB^XfQpWe%Ep3#iv)v;0c^+?zDT6OxGEe#4?yTGXh{roRGh#Q zuovJ2l>W^Wlgy;WwD^0HKa1tuD|k@ysN%_~XXi$`#$uDeS5t4kB<9}z_^|S6Yqq(} vN11kASwl5MHIXY#Ll<7OLe}ve%)+&$8|yILx%H=KukT>s=uRf=$x8kKaR49u delta 150 zcmWN}y-h-406@|62rV%T02Lh_l?{ao4-!$qh*oOCj}}^B0LfcG2O#tmwj>5RD<)t9 z-U3WO>DS)m+_aDueou1MCs{pteMJLhL#JNUy}I@0*~q&OiLoyeb5l#7R%ZSrn^rE4 tF3*)*sHiy$@J8%WBj9FWSH4|ag!-dxtz#R;J9qZF4(=U2h{BqT=|5*BAKL%` diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index 316a36d855d4988d9de1df10da878af14711ad84..f25087d9920974f067e10a7ee7bb20fa0187502c 100644 GIT binary patch literal 5656 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 delta 2067 zcma)->vt1X6vcm&w3+E-Xdo1D39V&SK|-+=Dv$Ci6e>syh^R#cojco$cMOW3 z|NH21pp4&49->X>brT2Hj~>tvR&u>xJiGHeW0_$q`)IPb#|Ey^vG_V4^8g$$Va9)`&hvz zCZDoL!Cpo8nS93Q%J&zlgZ(;RDssT2gbfM~ntY{}X7jbqp}@pHq;2A$GKW=H3FSQ~Vo)qdHwCHMALgYjTX^ z3ck}hq4T|l8EbFX#`^L?t#z@wrpDRLO-rJ&SW~k`d9}U5EHVDg*vGP-YCo18^7)&I z*%$ROfqEJ=`rBJVeZzC>8lue>b9va}Br%N<_6lQ&z0k1ykMOA7Xxta5Wu8Wvo4&)Z zTay>n*IPWn{B$yyZLxrbc0tZ)|C21TH|G=wtD@1RO8GG!7hV=v%o2@arD9Z1onr9} zb)sGzs;sYTSgaNUgE_q$X|ni9t^C>I7cOWFR^q)Yn;K&+iyB)*=b{q3BtzLBj2g{c zwz$GoyPs9#zb5f%t08#Z;#Y1cxM}}x)wD0@QR*8fyE;eCJF>B;$qD8l({iIs%Z<{v z8)Z;#l=-M=p9qx{f$V@V5R-0{CL~&D$Q}u{*vonj9QB;!)LDRGWHE`>?lsVp=XpVx z#*5y1`Ti$<;c_hPlRaDGkxmB7=kCLj@u8F^xPGe%%8?3-{{iBCkhm`u@8#lt3bo7> z_qDQTi^YAtIB#VMD`jg|6V0d|PgP%;syhdmFaubX zp`PEZ{*t>`8z639PL&xiOt}ww?v?qpYfp5IxLzx+*JWr1Q;t`sq^evgxf?>am>ixq z>22voa@mxj6}r`5uE@kwqC>@-@~5R;1>D5e3mojVUMCMY%y1LcUDODlDGS20R3^#n^iKAbmk4tE_T`j3 zkf#~RS@Cu*!&60Sh;k!#8(A+=85t$hN%Ek~%f);bgUxOzbg`F-JyteWhC&nL2bkC_CKMLh z+uGau6UKOE!Ij21$(*@!@0@eb9oKv}k6*u@o&jv)z(g4N5DHi@VWSwrB9;s|CIVPC zP|^?I>fX{{MuCYkDh8?sR@_EJq$8L#P_wX#H4E$5Fi^KByd_ZXxk|QoDZ=_Tb_5)G zjWteN?aoQ7(>AbcVGsKPN3w8rUwHfw7b0rYkX$+hs7;*eovWGdG;?97L>n3_6Rbsf zv-m<{3^P16#D^Tl6>eD*EdI8QG}Nho%jnH=P)|!J9kS49x3W z1j5Ze6lVZSN~@l9oIeI65k#6ehZN?KN6u>%XM4(xS_N54VwP4?%+k^)QYu@f$>Oxk wRe4IIiuNE;>UT%pi(}pu-+RXQ{^!u8G2-vg+5d?(kC+(#^AA&SI_WI;4KWEcuK)l5 delta 554 zcmaiwOHKko5Qe{=8D?Z?Km`F&L_q}w#0S1sE=&xUal-{T1Pe`!H_!!`uyCPkUFiip zi7{5UfNYGD^xrkr{XeQd!hU%E`t|q(v^Wikvl?ZMQi!G;Wu1+H&5#Hc|LjdJ$>%?h zijXQ>0owt!{zX#d5+noang%m#P_SaTsu0XNXzcA@WYY1Cd-_uzJP-f@NFYCMO2K5nF+BYGRCMh z!1IRq?Mj+%aD7W$is;o1kwkldQyCI7(yo=x$YVg38S>;<5?ql7D_X0J*o)lA%G}7x z9mS$_CDJE(S1j|wl4+$^m)#_HygP$NzdOoap33e_vM*1v|2cGZiugNp;eTSo60_PS M8Z(tlXOb1a0pyA(7XSbN diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/LoaderSpinIn.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/LoaderSpinIn.class deleted file mode 100644 index f71cf37b085bb4943aa88c769615dd2a80d987ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1109 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 F#$WPCtycg5 literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.class new file mode 100644 index 0000000000000000000000000000000000000000..3487272c930134b4a076c47ae6e3206780163ba4 GIT binary patch literal 1925 zcmb7FT~`}b6x~A-0>h9ZSfps{M~jBgcChpVrNz>u2sTtDh>D++(JdRRcuPKSXR#*!j+mmDlFZ!|@bxU- z&SJyDXwyGbm9|oK3s%X(aNrxyC=PDwmNu&v()rT-E?v>DGkmJ7Tk3w)tg2wgt2P*! zEc-RDvFim|zPrJ+Inbenjj|s+aHDWv2cdEIgPLoU*SxW~>;`_-H*U>uHoaCobnAgW zR3`9r%iWF%thMSTiS77hy>C`5P?&IAo-gEFiwjET&?1=dQyAD3YSqC3s&cVmnbMQQ79eg6AGnmcd zQwN{na|d7GOA8BwH*763e$j8q9+=R9hrENTn3|Znlqg`%!unvC|GV!N=2Sg$ziDeX zIYN#ay87_=;M`(zfELaVF1Rhn&He42vxRH_(Hvn^4ZjPGYKCsy3UPa|6Gj5{b)*Bu z{<@ei59U`n##oX5un%>p{g!mpQ99{|Iy8P8FY_gu;oCRF zKVF4+#LGcH42yT{EbTddRXCrbpDO$ctMD_1I!Mu_=^n>PFVapTO*=z7i!t7@Nv6NV z$TX9g%3`n3%ji5;a654UbKL?}!dslXK+seNnZykzE}OU!x?BgNy^6D>3F2mnoFnRK zBJyG2=+(HglVEl$rx`u2SC0h(i3mG!V^82Dqwy!mQDxy5tjS$wyL-;i*Uej6KU(>L_)@ z+!SP=&rvUM9S)YM`WEZ1QvVu%!0s@5w~xnim&ZKUXOPNGO>xutJasAE?otw|9h@cu z3LWVQ&BbSak3!2B$5tP3?nL0i3EC1-MPR1T!E_JAj!%D^g)4mknJxfd5T*>_(qG;{ Bt-l8I##D-0PghAe)D8~yr9oKJ3r_Ec9AW}~C z$z%Q8X0SB7aNFV&ahUuA_aa5!L`}Kgn?v_BA+m%#piFtpTd~p?WVuiNxbPJZ!{}7$ zH`yJpowQ@sf++O(fzaaZgmC@DedpS+F=3))V-;l^YpB?;FwU?tx{Lk5m&)~(G;!C) zIvg9Y#w1I5M-$o+jw8u)RI$Bcg9K5aXN@cXJf0<}ik~Y>*L4$;n+|u4^9Ywm9 zIl8@!EbV|ilYH6_*-46aks=SU%Rj)%XGnFC{zh>MQ)DNRCOZcM^MqYMUT605aS78D z8Mxf9wMMb7#Rdh&;)CK4koAFA`oNcoh{72RCG2|GLuk^L!oI?R zfPMGybpI$I2BXX8(a&|O0Mpt7UdYXv72nW#(LMl1zCRoEN zMv5^Nh}H486(lvj)lecfA?c-p087kFg~4U4@Rslw9L6z^`4evhi)5fYe+Uaikr7uj z;uWh6(Vsxd+bQG(R>F7&JC|B`Y14JY&T&D~&m`ASr%;trUEW60lCK5}W=;!CD`Rpw zDKniS`9DUlz|6Zb;Q#Vtyx>DV?9x_Z?^rl76xYRVx7ikp|xfv$pr`>l|vfbAS+}qe$);eM< ze~UW4MzOEgS?+aekyalgksE{QuUJ7s6>5qJQeLFED1v0xFZMwNw?l~T4| zMk#$JF;QmG-KTr{>%aTme43-T@8=g_gKE6q7GZ%DJCS=21m4q8>JgN&wRS!P8sSv~azs^_Y;W7V=oSyQpBv!N)4 zm7SRFv23zs*`{pSA!8XNqu6lu%lpD(mv^Er(xT6OJ_;Eiwo_iq;+6Q8;uESSfk#%X z5f9zO>7`2|TmMNiJ@RtdUqFReSThfJS>gfye@cNQ{TwziCc@+*%$Z=^$l(WcA|Sby zk6)7xnI^#A;P@$t96d(1x*yM9IAnLdt$|FCqmR5ODo9P^eUVeX2<~Sqfk(~fkb36k^~S)?{VJ{#db9#gX$N%Z8eLEK=MN?q^#b~w1)N*CAPk5I4Wrp~^zvq!rkGPv`(-eQ zBhAmho$7c)cOfZhnKauf7_q5SpbV=8ii&AUe;(~STK3I6NgOP|LZOl{n%KA%8}C%c z=0(pq;R08oG$ylPO}o6p3RqA@sNqppfrk2OCg4#FFY85k@6w*Uvoxmmz|E5Xwbt{z5*!LN& Z)$2yhgZ>X_QrFx7z*qqUHHxEVe*w4kEy@4@ diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.class b/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.class index bd86d277ea4e8579fb7a64bb52db7461202f86a0..a3b2615d96b211b88f607765fa0c4d896c074f1d 100644 GIT binary patch delta 49 zcmaFP@tk9W8#ANKWOrsqRs{x52F1y}%$AI*laDjov1&1}F=$WbVzFU0U|?Y|ob1ga F0{|!v3M2pk delta 49 zcmaFP@tk9W8#ANqWOrsqRwV{b2Ia}U%$AJmlaDjovFb3eG3ZX_VzFU0Vqjq~p6tyc F0{|&a3Nruz diff --git a/build/org/usfirst/frc/team708/robot/commands/visionProcessor/FindTarget.class b/build/org/usfirst/frc/team708/robot/commands/visionProcessor/FindTarget.class index e5cc4b897922bbae3b08528ad1373b3bd8a7b795..9576cb6062951852365a896f0a615050583cfb68 100644 GIT binary patch literal 738 zcmbtQyGlbr5IvixUZc?%Ei42P!56Nepr8m6unHn57IvF^R~$J4JP^~ssYE2WX_NB5E^6z57-;xt(G>yHHnY$+Iyu7xt^jdZHw)dqqE#qZuIvtfJ zPTrFvlb%@fUUw>s&Gyke_UjwdMf z+S;t^!%uW>G8^j?3Sz6jgSYO~y{e#qqQLRLWeTk5B$E$alKo{lYE$d(XGPiQuZkt) z_{!mxz*j|)ZHcoT_JVzJ{T1ScgB;3iBlf@~H%?=Wqe{OCfdd0j z9|DR2ureCB@F#E*Q#>|E-eeyLa{1?AdwTnni$loVfU-K8a(M{&t95!baP<$Mz)Vk9 F?F-aPeG~uy literal 1043 zcmbtS%Wl&^6g`u;aq7CHlvgQG9-&ew6~h8VMNuUb)K!EKt+HS@wx{h>u^nc{fK7fxx+^HKUAet_)YaOi2CthZlA+a8nS5EKk<_~)8qm&SFOS8bFSK&`$);xylws)ha=p(B zv!}GNd{4*RN|8Q!xWRQE<(9{Jnu;tj{74yp5faCC0oEzi%;p5E)VbBomfWfQ~G zGYmFGWIh-xQ^WgzT1>t+wR~GBEoo5eo!)e%J0qe^cNsRO%RRj-4QE&m`Gv58{GOp3 z=$-~>v}n>gOW77`6anGdH?XxYsC`BKGvze|w4Otq)_HhnVGaxQQe|0B-+9VBsu^+J zr`&O|F@b9aT$}*13fQWEkEzPl`N#deF+3n0z!GU*o}ln6iUph}pgYI<2}P~`iLz3C h*?eUJS*wtXRr6C-ww{1h7Q%2XH?2%J_T$F6{MV6&{xHNB~}Y@Tj2d^EDVRaW&v;7l?%yg6jbp2Lm`0V=~4An2SRJJdVTD@C3df$WO}nVgS|HD=1Hi$CqS$Sld_MAZ0VeR`s|$w;J(VKX_gcvEyF8XivR@o=MQMz^%+NwL`9q4y`EsbN!-u(&11nq|49 zwDqku^hBzDIXM*f>G70iW()K!(-V4XxdeAbWv2vBlhI2N1uc3)TQfY^qnYcXJ#kV_ zX)$8acxTkq#n>TwQUiKY!bO(s;bfm~CR5=)GZs#1(ZQt)&k37GkCEb`2M42x-eh=0 zPwGZut!c!xWYRFh7nu6cT75{1Q`!nck836sm51zk2}(t-L)8mCW@Ij15g+DJ3o{+#a8xpBt43+aL^R%(h;NY~ZICc? zvT@T!rt>FHwCagQQ;TvF)hU@Ww^lRtL5<9(aOB4IdT(lA>O^$ZnV2<&-G!RoKfnmg zo{5g8XR`F}FyeZzp5md@EN0QsPR&f|^xM=qJuxwt#gJ;ZM^n0yOYQW;DbJ%#@nRMVl0Wc`>JmFq*S>vT_XQni(}?1N5qo!8Kq| zxdmD4PHLd(9jRz+b8B?S%6#4v5-xaW%AbU_I9mSXV3QE8$kMNVrS;csJ+tQ=+xKdt zwEB=Jc+9U&tPze~B$VdzS-Lo~IP~-|K&Px}*J7gddZJdw%7ezxg~RbUWh6zK@NL?m zE$I@bTfU#jdwDRO=|Q55yw2m$N!Yx>W4Y@mHJy`wlG8ZP5@ls%KFK1_w9zJGSR65* zdnOSCYbU7$YX|xmcveyL3|QKiOgSg7qqe?gUK6}Ud2P!0g>|L9D5G1#=4@A-#GfZ{ z)Jb*J@IQ!Ee_Ac!`sl~9!9h7ICEFjtCl6pA2LFAJ@3HJHX^RK(d;B4YSMbNllG9y+6QV)<39r&ELHrq8gZPVh{1vY;u5&WB z?)*i4LHrG`3$^|p#6R%QApV7a3xWTU@rGa$lksK{{}s%R;Hc2ztsvfJb&(`0CAlPb zQ1VD#S@H!XS;~{pETsKkZh00e%PsL}qCec$vx$i&p<3%54qq{(hwV0kD6aQxa(aev zr`vt*?4yfpWl~JITU1U)RBR;GWW)_#sS9!!tX%m}-z=ihSHWl&V2ZFNws9;l zBHt4IM3=rp)^@DaPZ4=My66Z$w%pJwY!o}_*y6=t``|vql)f4@;X_w@bovxx&?`o%fdatni7T?d?4jP}9of1!io};uhjjUro#2{|!+_-pAN7Ew4WQ?~_iZowEv+Yp< zDn)ziw#vNBVfRYmU5{y8!FJ6Z?d4?^a_V@di!0f=7OiPq*W9^kV@vaj_Qv+EjcXcP zSBY+aB0oD)CS!nFXXI?hmSjpBlrSxBM0;EG9ySFXU1M+`fQQga=sN&;0_Htx z@oeYw6nOY7<+BV0I1MG#rGu29%?;~tF-H&HPci)M zYphW*ra9v}k3*QACU~pn%~w6Dw`xB;V<-@>I-k2%u2Ov=nIm}&GsLSduNZ|9e=&+8 z(~1#_OfSZ)NI@~wNMSK%M~X7Up4wg)Dn?mkW`0D;kCYUnJW^Vv<|%$F<2oPz4`Cy9V8cO5l!1`PQ5Sj;gP(e>Lod-Z zYS+e54AZIOYV;8mP}5cDCn}`A4HzIQqSiIg$ty(N=W$nzmbd|x*i5AG9CHyTDxps0 z7$ho1f+rC{Vaso&e2IZ-*g-+Nv7zJ&%eRjZxGV$vEMjX$M0t-z)M_5dWyNmhW;uKF z#W^}XCah#=k4`XiEJa^4}ca7?C z*Nov^7Qs_9-$Q~&5LE9tDkc&tpS}d`DAR%qX*CfC%WbB|;-H2;5ph647^X#C78)TE zduwn7kx0uLjB=fq^K8EyW4*w!%(-eO$Ll=v522Ec&aLpfYrT8m^VE91wZ3YmTF4vn zjiX8^=dt{8I^6~`^OIcxwlWaj4;9zYy&q)$e+X6BW+~jxbu+2V`?$s{gdJ18`k3m~ z+EzW+S*7G|?=54{e1Keh#{x)jyNdGMlqW*Ubp)!6ZAair*SZgr zD_c$bz;2Cu&tM4}IgDynvUzoiI?Fn-yH*XU)rT-&!ft6pbx1vg1ui^=a9xR7GLD6H zv(?%AQL|m~?bsQvtDgaiml!t=MrJ*W!)CSkk4I z9K_jUsP&9vsp7FGUQ$a`WgO=mMwp64>gK3(ROKM*_M`qf&ps?Wh;!YwWuda|X)3oh zs7k2JeGtptHP_XiW>qq^By<`n=ecWGDANN^O?zFrI)`i3@`GqtzpYH#^Y&OVPE|@b zt8=KJ5h+v3)O>f%j-6O9kf+AdAFG9`joXz%PAqqDfjt$rjbNYGh?FbkN)cBne2456 z)74pO$sw$8Vf{8$+Vj?(6S1?2#3yhq^;#sI%R+V?W`n<@;CicI?Z&e# zY1d*7C0&LaNh_nAQ>j~wT#BR~mbtBz!N^KSH_=UuWU?T-nd_LCM4usIIuhMN#QH$A zgNV6AbSqK7LZ2lHT4*OV&9~5Pq!n1`b3}y}+C@}kq1%Z<7P^CSXTdKG(we(jfBzr{*<$N-2hl7mZ`u$%iXs_zNkUn$ybn#|SSeybvg(NV2^{=Y*oU)7 Kd63wJhyDjKDCBei literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineGear.class b/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineGear.class new file mode 100644 index 0000000000000000000000000000000000000000..0cde728eed92f2e4c6a2091491297ac6da37d479 GIT binary patch literal 5952 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 bnZQ~Z3j*@yls}9E3uue;NO^=f2ao;_pZn}$ literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.class b/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.class new file mode 100644 index 0000000000000000000000000000000000000000..0e8f92547d9ab86e51ad137938b11a04c3849eda GIT binary patch literal 5952 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 Bfp7o- diff --git a/build/org/usfirst/frc/team708/robot/subsystems/LED.class b/build/org/usfirst/frc/team708/robot/subsystems/LED.class index c3690d286604818272dc63629ae5bf64e8362ef4..780cc6643250db3d576c569ffe2b675c9418d873 100644 GIT binary patch delta 687 zcmYk4%}!HM6otRjA8v1RDs9z5L1>GjU=@KDq~cF0;4k7IQiPEK;;4{_Vd8+HW74P4 zi4hV)jPU_{0f$a_0H46P&IOUlUi<8Q*4k^Idk<0{TNi))`T89wv*a-lC(SjV41+!? zhCGISN|b#@7>yI?UWKCTlrM){t)&BKcX5yO#Sr@OWsM;jyKg zS<7k8cs#K@!3xkAoc~~^wPscidW_d5>qN9L`C?vf*9h$ofhtlIPR#pi&+s%h~u6c_f^bc-i-$;wR zM}qiR#uFI}402jeuABMdR+udoOR?VS&Aerq#=e%$>kKTx;LPMw435>*hP?`dTwUgpVJM?Z<#V)bEJ`BaEs`k znY9Gp;4rbraS1&P{bn{5&gZswvPTDwkB*VLU2R_rr!^xLP8gP+(z8@;nG05S#~_uB z!9-~8FQpP5FU2LRkD(#>pB#g-m$&}Z2TJcH-^#xoLM!N^tvAyPS3wb)$x_62Y$UNZ zl5!hqbQ^ooM<{{Os)BTeNV0L< z01YQ-JiSo}Rw)ho;5iEMa|%6Y3L|Hognpr(Rpu4dRd!(ZTp@iL_G;WDz+Nq}A~p-~ zIcYUs_ZRmOxK|Z$L9}8Jt!kpStag&#K~g$tt`Q15aGiY6L%8TilW;NGLaUIlOgKrn LN*E*Dh_?I&uCtiH diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class b/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class index 957921e44b725e47b6ebb027ecdc951c56359daf..d4751f64ab4509b78a1a0d1a34032b5e56143986 100644 GIT binary patch literal 3042 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 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class new file mode 100644 index 0000000000000000000000000000000000000000..3bef51d35afe562e4137ed067102f42911adac70 GIT binary patch literal 8786 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 literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.class index 34f78f2f356f4799221e12c6fbd6f50add7191b1..8d43f75872b000b18d10d05896736bbda0d6d1d3 100644 GIT binary patch literal 2443 zcmah~OLG)e6#jZ^E}5E_C3B*-fh3^Iw4i3y-QdZv3O4Kv+i_Z=Qp zR=IG&%5rJpLU*#U%EB^8x$v=Z;ntNqe~4xIo$g_hq9!F?mMufIqRyGR(;^FT=ZOEM)N>E{Rb|VKI5eiY}+|z8oy2 zu`FkoQ@E1FCR|OP{_{xqOP>Bax|ziX_)zX#OaAiLL-~Cv*7Y=Qq;WF~6V()I8U}r@ z>RqzUX6u4m_cTnDZL4G4Z97KY@dG8Rrc=FTxVF0M`L~r>ZQ6k`A6biHO=-xin8Bjy zH*BRryQ(2~*9@j@SJ}R8X&7*Vv+9b5tkW_Z_OfHC6<#Yb_q68*%5>F|+3eUFQnk?M zvW9f6a?r@c8g;UN6X4jfP54K@Auw84>E1AJc)iZszA}_oV zfZ1uPX|L5XU2bM8UdON5=ba|Q6`m{h;4SkGOB{PKSi_SK zj$4>W;kJ$@S~?C1>~V=W9Kr6D$wH{LrfsF*>hRDeY5kMdBI1q8Glgl`G+q{-ji%`~ zjEeFdw=pHkKGZ+L#*dLthsp?Lq~UzOs2k{XHS|1Kb|4960Z*oGW-5YbL-!7glP1*4cDzFB6xfJxrcqii^eW3>1- zdPu&3UMVt}{p+NSsUIWP(R; z;S@(pj4PnK{)=~|H zN1yS^=fwVXFFdbzgT}ajHcTXiGxR^mh(^v~x?8ouSzruE_;0z0WFRPjM`6gQ%>&(# z8msB&oOs^(`@YWOeVt!@-uX#i=Tc8#$B0u9X7W4pqffDGc}>At9s$21jo;P<$@JjQ b^n%C>k|5feb5!^5>m0S7<9S|<;qCtb_AV4E literal 2960 zcmai0-E$LF6#s3LCTY4&X(oUQ6p*2mAS@OHY>^gPpg>!Y*7BizY?E!WknG0Y4N$*O z@mpsc9X~)t-{iqh9DM=eEE7 z`@@d_HsY-)j>hnK99?*#3HRVwq|f65KhciMa3YG6k-pr`npGF;gbbNT-$vi;@6Ja0 zQZt$n!(<#eYNHdu|}v@8^2D9V}@g&oIIlp?)Lq@i&oh_N# zr0KYx%nIhjDa|sxv$k{E(R`wh!893!is z(R8cN z#&yROFjZsN%bTu(?jhUBX=OK{V$#WIo}m{vuiv5xYo6woC)_F5Gm5S@Zn~yz9dPW7 z;kvd%QkqMFGN5}p@$&NSIk>Ho>fgQ3m>RLY0b`PJW_O;;7$uK>>8@qe(=(@s^^(7h z^+4K5_`xb%q9mj7tT{PJ)~$@t$>m}D3}@k@FPcqva3)ba!Bn-nhLs(&2Xr?-Ve1al zl@#6>fL<-6{PHA+EYRS<}fTuk!*2%W8C~=*KfE zwqTQrhtaKKE4me|xx2&dWzViTRq=?N+a^P=41F?e7dMeJer}?8R>gBTuVMo>D%f&& z=X0l4K||)8is$iy%%)U4giUl;zis|MwJKi3Kol2Lyo8rk>_B%Euc&wxuc_E9o?C

      i{bJBK7$T0ysR+NkH4R<1|dV|{%Ob9X)4 zk>%yrqJmxZyv|YVbGwv>gg%4rRIs3q(*Y^+))K?^{B{^~bgA_8-E&#?%z`$odwF)Q zg8O*KsF}0+3udWgWDgjuYs=f|IJU!{=^WrEwo0jg>>eu4!k#3eAAXAFbhv`{D+EA9B8S#o$Fi%w^DZ*Hl(;3#4)OsEBY_bt#yEpIgta)r z@K12pF@|@Xtex~jTfpl#A&h+(^8NHwgB+%ZCWP09cSJD~=F)x~;3)L|&V>-=3C7ia z3HvEx5@K#p!fp{Yh2<%%xPg@wbga68RkXETyo`Cmc88$oyn@v90+IQMXp58b)w1Op zI=UPFY72W!ZFL5%reQSp8v>!wioo5<~zQM44+q_CF223J!}5mQTIPymIi zX`yUP46d39K8-j%zRlp@VLfBO0JjGZf)13mHzlq#nHEDv}FUJ~gE{DZ`kg^3nk6#e`S4_p%?2vDX<-1yH z=(BoXoNGan1Wi;Rw1=eNHrK+KjiK{S4A<*o7_W8MW+E1>O-U`e{staAG}F#;E&(^0 k^q*%rX{r%%sODr1_lXl_=5WB^ud@y+wS$MbwE;)|0~r{RN&o-= diff --git a/src/org/usfirst/frc/team708/robot/AutoConstants.java b/src/org/usfirst/frc/team708/robot/AutoConstants.java index 5e857d0..cb63dc5 100644 --- a/src/org/usfirst/frc/team708/robot/AutoConstants.java +++ b/src/org/usfirst/frc/team708/robot/AutoConstants.java @@ -1,11 +1,61 @@ package org.usfirst.frc.team708.robot; public final class AutoConstants { + + // Threshold Constants + public static final double DISTANCE_TARGET_THRESHOLD = 5; // threshold for determining the distance to stop in front of the lift + public static final double X_THRESHOLD_CENTER = 20; // threshold for determining center of the target + public static final double X_THRESHOLD_HAS_TARGET_MIN = 20; // threshold for determining min value for whether the robot sees the target + public static final double X_THRESHOLD_HAS_TARGET_MAX = 300; // threshold for determining max value for whether the robot sees the target + public static final double HEIGHT_THRESHOLD = 20; + + // Sweep Constants + public static final int SWEEP1_MIN = 0; + public static final int SWEEP1_MAX = 100; + public static final int SWEEP2_MIN = 101; + public static final int SWEEP2_MAX = 300; + public static final int SWEEP3_MIN = 301; + public static final int SWEEP3_MAX = 400; + public static final int SWEEP_DIRECTION_LEFT = -1; + public static final int SWEEP_DIRECTION_RIGHT = 1; + public static final double SWEEP_ROTATE = .3; - public static final double Y_TARGET = 190; - public static final double Y_THRESHOLD = 5; - public static final double X_THRESHOLD = 20; + // Drivetrain Constants + public static final double DRIVE_ROTATE_MIN = .2; + public static final double DRIVE_ROTATE_MAX = .3; + public static final double DRIVE_MOVE_MIN = .2; + public static final double DRIVE_MOVE_MAX = .3; + + // Lift Constants (Field) + public static final int LIFT_TARGET_HEIGHT = 5; + public static final int LIFT_TARGET_WIDTH = 10; + public static final int DISTANCE_TO_LIFT_TARGET = 20; // Distance to stop at to place gear on lift peg + + + // Boiler Constants (Field) + public static final int BOILER_TARGET_HEIGHT = 10; + public static final int BOILER_TARGET_WIDTH = 14; + public static final int DISTANCE_TO_BOILER_LOCATION1 = 156; // A distance to stop at and shoot for high goal in inches (13 ft) + public static final double DISTANCE_BOILER_LOCATION2 = 0; // A distance to stop at and shoot for high goal in inches + + // Gear Constants (Game piece) + public static final double DISTANCE_TO_GEAR = 60; + public static final int GEAR_TARGET_HEIGHT = 10; + public static final int GEAR_TARGET_WIDTH = 14; - public static final double DISTANCE_TO_GEAR = 60; - public static final double DISTANCE_TO_HOPPER = 140; + + // Hopper Constants (Field) + public static final double DISTANCE_TO_HOPPER = 140; + + + + // Axis Camera constants + public static final double AXIS_FOV_DEGREES = 43.5; // Field of View of the AXIS Camera + public static final int AXIS_IMG_WIDTH = 320; // width of the AXIS image - resolution + public static final int AXIS_IMG_HEIGHT = 240; // height of the AXIS image - resolution + + // USB Camera Constants + public static final double USB_FOV_DEGREES = 43.5; // Field of View of the AXIS Camera + public static final int USB_IMG_WIDTH = 320; // width of the USB image - resolution + public static final int USB_IMG_HEIGHT = 240; // height of the USB image - resolution } diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index ca33d08..15c9f2a 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -29,7 +29,10 @@ import org.usfirst.frc.team708.robot.subsystems.Intake_Gear; import org.usfirst.frc.team708.robot.subsystems.Pivot_Gear; import org.usfirst.frc.team708.robot.subsystems.Climber; -import org.usfirst.frc.team708.robot.subsystems.VisionProcessor; +import org.usfirst.frc.team708.robot.subsystems.VisionLift; +import org.usfirst.frc.team708.robot.subsystems.VisionGear; +import org.usfirst.frc.team708.robot.subsystems.VisionBoiler; +//import org.usfirst.frc.team708.robot.subsystems.VisionProcessor; import org.usfirst.frc.team708.robot.subsystems.LED; import org.usfirst.frc.team708.robot.OI; @@ -59,7 +62,11 @@ public class Robot extends IterativeRobot { public static Climber climber; - public static VisionProcessor visionProcessor; +// public static VisionProcessor visionProcessor; + public static VisionLift visionLift; + public static VisionBoiler visionBoiler; + public static VisionGear visionGear; + public static LED led1; public static OI oi; @@ -86,17 +93,20 @@ public void robotInit() { // Subsystem Initialization - drivetrain = new Drivetrain(); - shooter = new Shooter(); - intake_ball = new Intake_Ball(); - intake_gear = new Intake_Gear(); - pivot_gear = new Pivot_Gear(); - feeder = new Feeder(); - loader = new Loader(); - led1 = new LED(); - climber = new Climber(); + drivetrain = new Drivetrain(); + shooter = new Shooter(); + intake_ball = new Intake_Ball(); + intake_gear = new Intake_Gear(); + pivot_gear = new Pivot_Gear(); + feeder = new Feeder(); + loader = new Loader(); + led1 = new LED(); + climber = new Climber(); + visionLift = new VisionLift(); + visionBoiler = new VisionBoiler(); + visionGear = new VisionGear(); - oi = new OI(); // Initializes the OI. + oi = new OI(); // Initializes the OI. // This MUST BE LAST or a NullPointerException will be thrown // UsbCamera ucamera=CameraServer.getInstance().startAutomaticCapture("cam0", 0); @@ -114,16 +124,19 @@ public void disabledPeriodic() { sendStatistics(); prefs = Preferences.getInstance(); - if (ds.isFMSAttached()) - { - alliance = ds.getAlliance(); - if (ds.getAlliance() == Alliance.Blue) - led1.send_to_led(Constants.SET_ALLIANCE_BLUE); - else if (ds.getAlliance() == Alliance.Red) - led1.send_to_led(Constants.SET_ALLIANCE_RED); - else - led1.send_to_led(Constants.SET_ALLIANCE_INVALID); - } +// try{ +// if (ds.isFMSAttached()) +// { +// alliance = ds.getAlliance(); +// if (ds.getAlliance() == Alliance.Blue) +// led1.send_to_led(Constants.SET_ALLIANCE_BLUE); +// else if (ds.getAlliance() == Alliance.Red) +// led1.send_to_led(Constants.SET_ALLIANCE_RED); +// else +// led1.send_to_led(Constants.SET_ALLIANCE_INVALID); +// } +// } +// catch ( e){} } /** @@ -198,6 +211,9 @@ private void sendStatistics() { intake_gear.sendToDashboard(); pivot_gear.sendToDashboard(); // visionProcessor.sendToDashboard(); + visionLift.sendToDashboard(); + visionBoiler.sendToDashboard(); + visionGear.sendToDashboard(); } } @@ -227,6 +243,9 @@ private void sendDashboardSubsystems() { SmartDashboard.putData(intake_gear); SmartDashboard.putData(pivot_gear); // SmartDashboard.putData(visionProcessor); + SmartDashboard.putData(visionLift); + SmartDashboard.putData(visionBoiler); + SmartDashboard.putData(visionGear); SmartDashboard.putData(climber); } } \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java new file mode 100644 index 0000000..512ee53 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java @@ -0,0 +1,84 @@ +package org.usfirst.frc.team708.robot.commands.drivetrain; + +import org.usfirst.frc.team708.robot.AutoConstants; +import org.usfirst.frc.team708.robot.Robot; +import edu.wpi.first.wpilibj.command.Command; + + + +/** + *RotateAndDriveToBoiler + * this command will utilize the vision data to drive the robot to the center of the boiler + * and stop when it is at the any of the target stop at distances + */ +public class RotateAndDriveToBoiler extends Command { + + private double moveSpeed; + private double rotate; + /** + * Constructor + * @param targetDistance - the distance to stop in front of the target + */ +// VIET ARE WE STILL USING THE TARGET DISTANCE HERE - I THINK WE ARE ACTUALLY CALCULATING IT IN THE SUBSYSTEM +// IN THE METHOD ISATDISTANCE +// BUT WE NEED TO FIGURE OUT HOW WE ARE GOING TO MAKE THIS WORK WITH MULITPLE DISTANCES FOUND + public RotateAndDriveToBoiler(double stopAtHeight) { + // Use requires() here to declare subsystem dependencies + requires(Robot.drivetrain); + requires(Robot.visionBoiler); + + // save the height + Robot.visionBoiler.putStopAtHeight(stopAtHeight); + } + + // Called just before this Command runs the first time + protected void initialize() { + Robot.visionBoiler.putIsCentered(false); + Robot.visionBoiler.putHasTarget(false); + Robot.visionBoiler.putAtDistance(false); + Robot.visionBoiler.putCounter(0); + Robot.visionBoiler.putCurrentCenter(0); + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + + Robot.visionBoiler.processData(); + rotate = Robot.visionBoiler.getRotate(); + moveSpeed = Robot.visionBoiler.getMove(); // was + made - + + + Robot.drivetrain.haloDrive(moveSpeed, rotate, false); + + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + if (Robot.visionBoiler.getCounter() >= AutoConstants.SWEEP3_MAX){ + + return true; + } + //Check if the sonar distance is less then the target Distance, end +// if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.wasCentered()){ + if (Robot.visionBoiler.isAtHeight() && Robot.visionBoiler.isCentered()){ + return true; + } +// else if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.isHasTarget()) { + else { + return false; + } + + } + + // Called once after isFinished returns true + protected void end() { + Robot.drivetrain.stop(); + Robot.visionBoiler.putCounter(0); + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + end(); + } +} diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.java new file mode 100644 index 0000000..37a4880 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.java @@ -0,0 +1,83 @@ +package org.usfirst.frc.team708.robot.commands.drivetrain; + +import org.usfirst.frc.team708.robot.AutoConstants; +import org.usfirst.frc.team708.robot.Robot; +import edu.wpi.first.wpilibj.command.Command; + + + +/** + *RotateAndDriveToGear + * this command will utilize the vision data to drive the robot to the center of the gear + * and stop when it is at the gear stop at target distance + */ +public class RotateAndDriveToGear extends Command { + + private double moveSpeed; + private double rotate; + /** + * Constructor + * @param targetDistance - the distance to stop in front of the target + */ +// VIET ARE WE STILL USING THE TARGET DISTANCE HERE - I THINK WE ARE ACTUALLY CALCULATING IT IN THE SUBSYSTEM + public RotateAndDriveToGear(double targetDistance) { + // Use requires() here to declare subsystem dependencies + requires(Robot.drivetrain); + requires(Robot.visionGear); + + } + + // Called just before this Command runs the first time + protected void initialize() { + Robot.visionGear.putIsCentered(false); + Robot.visionGear.putHasTarget(false); + Robot.visionGear.putAtDistance(false); + Robot.visionGear.putCounter(0); + Robot.visionGear.putCurrentCenter(0); + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + + Robot.visionGear.processData(); + rotate = Robot.visionGear.getRotate(); + moveSpeed = Robot.visionGear.getMove(); // was + made - + + + Robot.drivetrain.haloDrive(moveSpeed, rotate, false); + + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + if (Robot.visionGear.getCounter() >= AutoConstants.SWEEP3_MAX){ + + return true; + } + //Check if the sonar distance is less then the target Distance, end +// if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.wasCentered()){ +// if (Robot.visionProcessor.isAtY() && Robot.visionProcessor.wasCentered()){ + if (Robot.visionGear.isAtDistance() && Robot.visionGear.isCentered()){ + return true; + } +// else if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.isHasTarget()) { + else if (Robot.visionGear.isAtDistance() && Robot.visionGear.isHasTarget()) { + return false; + } + + return false; + + } + + // Called once after isFinished returns true + protected void end() { + Robot.drivetrain.stop(); + Robot.visionGear.putCounter(0); + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + end(); + } +} diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java new file mode 100644 index 0000000..4dc88ff --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java @@ -0,0 +1,84 @@ +package org.usfirst.frc.team708.robot.commands.drivetrain; + +import org.usfirst.frc.team708.robot.AutoConstants; +import org.usfirst.frc.team708.robot.Robot; +import edu.wpi.first.wpilibj.command.Command; + + + +/** + *RotateAndDriveToLift + * this command will utilize the vision data to drive the robot to the center of the lift target + * and stop when it is at the lift stop at target distance + */ +public class RotateAndDriveToLift extends Command { + + private double moveSpeed; + private double rotate; + /** + * Constructor + * @param targetDistance - the distance to stop in front of the target + */ +// VIET ARE WE STILL USING THE TARGET DISTANCE HERE - I THINK WE ARE ACTUALLY CALCULATING IT IN THE SUBSYSTEM +// Mreh mreh mreh, I'm Mrs. P, I want to delete the targetDistance, mreh mreh mreh. + public RotateAndDriveToLift(double targetDistance) { + // Use requires() here to declare subsystem dependencies + requires(Robot.drivetrain); + requires(Robot.visionLift); + + } + + // Called just before this Command runs the first time + protected void initialize() { + Robot.visionLift.putIsCentered(false); + Robot.visionLift.putHasTarget(false); + Robot.visionLift.putAtDistance(false); + Robot.visionLift.putCounter(0); + Robot.visionLift.putCurrentCenter(0); + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + + Robot.visionLift.processData(); + rotate = Robot.visionLift.getRotate(); + moveSpeed = Robot.visionLift.getMove(); // was + made - + + + Robot.drivetrain.haloDrive(moveSpeed, rotate, false); + + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + if (Robot.visionLift.getCounter() >= AutoConstants.SWEEP3_MAX){ + + return true; + } + //Check if the sonar distance is less then the target Distance, end +// if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.wasCentered()){ +// if (Robot.visionProcessor.isAtY() && Robot.visionProcessor.wasCentered()){ + if (Robot.visionLift.isAtDistance() && Robot.visionLift.isCentered()){ + return true; + } +// else if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.isHasTarget()) { + else if (Robot.visionLift.isAtDistance() && Robot.visionLift.isHasTarget()) { + return false; + } + + return false; + + } + + // Called once after isFinished returns true + protected void end() { + Robot.drivetrain.stop(); + Robot.visionLift.putCounter(0); + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + end(); + } +} diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java index ef7dc5c..c8d12bf 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java @@ -30,8 +30,9 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { Robot.shooter.setFgain(Constants.SHOOTER_F); - Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_HIGH); - // Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_SPEED_HIGH); +// Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_HIGH); + Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_SPEED_HIGH); + Robot.shooter.manualSpeed(1.0); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/FindTarget.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/FindTarget.java index 8ae1eaf..70f87cd 100644 --- a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/FindTarget.java +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/FindTarget.java @@ -12,7 +12,7 @@ public class FindTarget extends Command { public FindTarget() { // Use requires() here to declare subsystem dependencies - requires(Robot.visionProcessor); +// requires(Robot.visionProcessor); } // Called just before this Command runs the first time @@ -21,7 +21,7 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.visionProcessor.processData(); +// Robot.visionProcessor.processData(); // Robot.drivetrain.haloDrive(Robot.visionProcessor.getMove(0.5), Robot.visionProcessor.getRotate()); } diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java new file mode 100644 index 0000000..8b8e44c --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java @@ -0,0 +1,187 @@ +package org.usfirst.frc.team708.robot.commands.visionProcessor; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.HashMap; + +import edu.wpi.first.wpilibj.vision.VisionPipeline; + +import org.opencv.core.*; +import org.opencv.core.Core.*; +import org.opencv.features2d.FeatureDetector; +import org.opencv.imgcodecs.Imgcodecs; +import org.opencv.imgproc.*; +import org.opencv.objdetect.*; + +/** +* GripPipelineBoiler class. +* +*

      An OpenCV pipeline generated by GRIP. +* +* @author GRIP +*/ +public class GripPipelineBoiler implements VisionPipeline { + + //Outputs + private Mat rgbThresholdOutput = new Mat(); + private ArrayList findContoursOutput = new ArrayList(); + private ArrayList filterContoursOutput = new ArrayList(); + + static { + System.loadLibrary(Core.NATIVE_LIBRARY_NAME); + } + + /** + * This is the primary method that runs the entire pipeline and updates the outputs. + */ + public void process(Mat source0) { + // Step RGB_Threshold0: + Mat rgbThresholdInput = source0; + double[] rgbThresholdRed = {0.0, 255.0}; + double[] rgbThresholdGreen = {199.50539568345323, 255.0}; + double[] rgbThresholdBlue = {167.40107913669064, 255.0}; + rgbThreshold(rgbThresholdInput, rgbThresholdRed, rgbThresholdGreen, rgbThresholdBlue, rgbThresholdOutput); + + // Step Find_Contours0: + Mat findContoursInput = rgbThresholdOutput; + boolean findContoursExternalOnly = false; + findContours(findContoursInput, findContoursExternalOnly, findContoursOutput); + + // Step Filter_Contours0: + ArrayList filterContoursContours = findContoursOutput; + double filterContoursMinArea = 170.0; + double filterContoursMinPerimeter = 79.0; + double filterContoursMinWidth = 36.0; + double filterContoursMaxWidth = 52.0; + double filterContoursMinHeight = 5.0; + double filterContoursMaxHeight = 23.0; + double[] filterContoursSolidity = {0, 100}; + double filterContoursMaxVertices = 1000000; + double filterContoursMinVertices = 0; + double filterContoursMinRatio = 0; + double filterContoursMaxRatio = 1000; + filterContours(filterContoursContours, filterContoursMinArea, filterContoursMinPerimeter, filterContoursMinWidth, filterContoursMaxWidth, filterContoursMinHeight, filterContoursMaxHeight, filterContoursSolidity, filterContoursMaxVertices, filterContoursMinVertices, filterContoursMinRatio, filterContoursMaxRatio, filterContoursOutput); + + } + + /** + * This method is a generated getter for the output of a RGB_Threshold. + * @return Mat output from RGB_Threshold. + */ + public Mat rgbThresholdOutput() { + return rgbThresholdOutput; + } + + /** + * This method is a generated getter for the output of a Find_Contours. + * @return ArrayList output from Find_Contours. + */ + public ArrayList findContoursOutput() { + return findContoursOutput; + } + + /** + * This method is a generated getter for the output of a Filter_Contours. + * @return ArrayList output from Filter_Contours. + */ + public ArrayList filterContoursOutput() { + return filterContoursOutput; + } + + + /** + * Segment an image based on color ranges. + * @param input The image on which to perform the RGB threshold. + * @param red The min and max red. + * @param green The min and max green. + * @param blue The min and max blue. + * @param output The image in which to store the output. + */ + private void rgbThreshold(Mat input, double[] red, double[] green, double[] blue, + Mat out) { + Imgproc.cvtColor(input, out, Imgproc.COLOR_BGR2RGB); + Core.inRange(out, new Scalar(red[0], green[0], blue[0]), + new Scalar(red[1], green[1], blue[1]), out); + } + + /** + * Sets the values of pixels in a binary image to their distance to the nearest black pixel. + * @param input The image on which to perform the Distance Transform. + * @param type The Transform. + * @param maskSize the size of the mask. + * @param output The image in which to store the output. + */ + private void findContours(Mat input, boolean externalOnly, + List contours) { + Mat hierarchy = new Mat(); + contours.clear(); + int mode; + if (externalOnly) { + mode = Imgproc.RETR_EXTERNAL; + } + else { + mode = Imgproc.RETR_LIST; + } + int method = Imgproc.CHAIN_APPROX_SIMPLE; + Imgproc.findContours(input, contours, hierarchy, mode, method); + } + + + /** + * Filters out contours that do not meet certain criteria. + * @param inputContours is the input list of contours + * @param output is the the output list of contours + * @param minArea is the minimum area of a contour that will be kept + * @param minPerimeter is the minimum perimeter of a contour that will be kept + * @param minWidth minimum width of a contour + * @param maxWidth maximum width + * @param minHeight minimum height + * @param maxHeight maximimum height + * @param Solidity the minimum and maximum solidity of a contour + * @param minVertexCount minimum vertex Count of the contours + * @param maxVertexCount maximum vertex Count + * @param minRatio minimum ratio of width to height + * @param maxRatio maximum ratio of width to height + */ + private void filterContours(List inputContours, double minArea, + double minPerimeter, double minWidth, double maxWidth, double minHeight, double + maxHeight, double[] solidity, double maxVertexCount, double minVertexCount, double + minRatio, double maxRatio, List output) { + final MatOfInt hull = new MatOfInt(); + output.clear(); + //operation + for (int i = 0; i < inputContours.size(); i++) { + final MatOfPoint contour = inputContours.get(i); + final Rect bb = Imgproc.boundingRect(contour); + if (bb.width < minWidth || bb.width > maxWidth) continue; + if (bb.height < minHeight || bb.height > maxHeight) continue; + final double area = Imgproc.contourArea(contour); + if (area < minArea) continue; + if (Imgproc.arcLength(new MatOfPoint2f(contour.toArray()), true) < minPerimeter) continue; + Imgproc.convexHull(contour, hull); + MatOfPoint mopHull = new MatOfPoint(); + mopHull.create((int) hull.size().height, 1, CvType.CV_32SC2); + for (int j = 0; j < hull.size().height; j++) { + int index = (int)hull.get(j, 0)[0]; + double[] point = new double[] { contour.get(index, 0)[0], contour.get(index, 0)[1]}; + mopHull.put(j, 0, point); + } + final double solid = 100 * area / Imgproc.contourArea(mopHull); + if (solid < solidity[0] || solid > solidity[1]) continue; + if (contour.rows() < minVertexCount || contour.rows() > maxVertexCount) continue; + final double ratio = bb.width / (double)bb.height; + if (ratio < minRatio || ratio > maxRatio) continue; + output.add(contour); + } + } + + + + +} + diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineGear.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineGear.java new file mode 100644 index 0000000..2a919af --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineGear.java @@ -0,0 +1,187 @@ +package org.usfirst.frc.team708.robot.commands.visionProcessor; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.HashMap; + +import edu.wpi.first.wpilibj.vision.VisionPipeline; + +import org.opencv.core.*; +import org.opencv.core.Core.*; +import org.opencv.features2d.FeatureDetector; +import org.opencv.imgcodecs.Imgcodecs; +import org.opencv.imgproc.*; +import org.opencv.objdetect.*; + +/** +* GripPipelineLift class. +* +*

      An OpenCV pipeline generated by GRIP. +* +* @author GRIP +*/ +public class GripPipelineGear implements VisionPipeline { + + //Outputs + private Mat hslThresholdOutput = new Mat(); + private ArrayList findContoursOutput = new ArrayList(); + private ArrayList filterContoursOutput = new ArrayList(); + + static { + System.loadLibrary(Core.NATIVE_LIBRARY_NAME); + } + + /** + * This is the primary method that runs the entire pipeline and updates the outputs. + */ + @Override public void process(Mat source0) { + // Step HSL_Threshold0: + Mat hslThresholdInput = source0; + double[] hslThresholdHue = {87.41007194244604, 180.0}; + double[] hslThresholdSaturation = {179.10669303814598, 255.0}; + double[] hslThresholdLuminance = {91.72661870503596, 255.0}; + hslThreshold(hslThresholdInput, hslThresholdHue, hslThresholdSaturation, hslThresholdLuminance, hslThresholdOutput); + + // Step Find_Contours0: + Mat findContoursInput = hslThresholdOutput; + boolean findContoursExternalOnly = false; + findContours(findContoursInput, findContoursExternalOnly, findContoursOutput); + + // Step Filter_Contours0: + ArrayList filterContoursContours = findContoursOutput; + double filterContoursMinArea = 200.0; + double filterContoursMinPerimeter = 50.0; + double filterContoursMinWidth = 10.0; + double filterContoursMaxWidth = 60.0; + double filterContoursMinHeight = 11.0; + double filterContoursMaxHeight = 80.0; + double[] filterContoursSolidity = {0, 100}; + double filterContoursMaxVertices = 1000000; + double filterContoursMinVertices = 0; + double filterContoursMinRatio = 0; + double filterContoursMaxRatio = 1000; + filterContours(filterContoursContours, filterContoursMinArea, filterContoursMinPerimeter, filterContoursMinWidth, filterContoursMaxWidth, filterContoursMinHeight, filterContoursMaxHeight, filterContoursSolidity, filterContoursMaxVertices, filterContoursMinVertices, filterContoursMinRatio, filterContoursMaxRatio, filterContoursOutput); + + } + + /** + * This method is a generated getter for the output of a HSL_Threshold. + * @return Mat output from HSL_Threshold. + */ + public Mat hslThresholdOutput() { + return hslThresholdOutput; + } + + /** + * This method is a generated getter for the output of a Find_Contours. + * @return ArrayList output from Find_Contours. + */ + public ArrayList findContoursOutput() { + return findContoursOutput; + } + + /** + * This method is a generated getter for the output of a Filter_Contours. + * @return ArrayList output from Filter_Contours. + */ + public ArrayList filterContoursOutput() { + return filterContoursOutput; + } + + + /** + * Segment an image based on hue, saturation, and luminance ranges. + * @param input The image on which to perform the HSL threshold. + * @param hue The min and max hue + * @param sat The min and max saturation + * @param lum The min and max luminance + * @param output The image in which to store the output. + */ + private void hslThreshold(Mat input, double[] hue, double[] sat, double[] lum, + Mat out) { + Imgproc.cvtColor(input, out, Imgproc.COLOR_BGR2HLS); + Core.inRange(out, new Scalar(hue[0], lum[0], sat[0]), + new Scalar(hue[1], lum[1], sat[1]), out); + } + + /** + * Sets the values of pixels in a binary image to their distance to the nearest black pixel. + * @param input The image on which to perform the Distance Transform. + * @param type The Transform. + * @param maskSize the size of the mask. + * @param output The image in which to store the output. + */ + private void findContours(Mat input, boolean externalOnly, + List contours) { + Mat hierarchy = new Mat(); + contours.clear(); + int mode; + if (externalOnly) { + mode = Imgproc.RETR_EXTERNAL; + } + else { + mode = Imgproc.RETR_LIST; + } + int method = Imgproc.CHAIN_APPROX_SIMPLE; + Imgproc.findContours(input, contours, hierarchy, mode, method); + } + + + /** + * Filters out contours that do not meet certain criteria. + * @param inputContours is the input list of contours + * @param output is the the output list of contours + * @param minArea is the minimum area of a contour that will be kept + * @param minPerimeter is the minimum perimeter of a contour that will be kept + * @param minWidth minimum width of a contour + * @param maxWidth maximum width + * @param minHeight minimum height + * @param maxHeight maximimum height + * @param Solidity the minimum and maximum solidity of a contour + * @param minVertexCount minimum vertex Count of the contours + * @param maxVertexCount maximum vertex Count + * @param minRatio minimum ratio of width to height + * @param maxRatio maximum ratio of width to height + */ + private void filterContours(List inputContours, double minArea, + double minPerimeter, double minWidth, double maxWidth, double minHeight, double + maxHeight, double[] solidity, double maxVertexCount, double minVertexCount, double + minRatio, double maxRatio, List output) { + final MatOfInt hull = new MatOfInt(); + output.clear(); + //operation + for (int i = 0; i < inputContours.size(); i++) { + final MatOfPoint contour = inputContours.get(i); + final Rect bb = Imgproc.boundingRect(contour); + if (bb.width < minWidth || bb.width > maxWidth) continue; + if (bb.height < minHeight || bb.height > maxHeight) continue; + final double area = Imgproc.contourArea(contour); + if (area < minArea) continue; + if (Imgproc.arcLength(new MatOfPoint2f(contour.toArray()), true) < minPerimeter) continue; + Imgproc.convexHull(contour, hull); + MatOfPoint mopHull = new MatOfPoint(); + mopHull.create((int) hull.size().height, 1, CvType.CV_32SC2); + for (int j = 0; j < hull.size().height; j++) { + int index = (int)hull.get(j, 0)[0]; + double[] point = new double[] { contour.get(index, 0)[0], contour.get(index, 0)[1]}; + mopHull.put(j, 0, point); + } + final double solid = 100 * area / Imgproc.contourArea(mopHull); + if (solid < solidity[0] || solid > solidity[1]) continue; + if (contour.rows() < minVertexCount || contour.rows() > maxVertexCount) continue; + final double ratio = bb.width / (double)bb.height; + if (ratio < minRatio || ratio > maxRatio) continue; + output.add(contour); + } + } + + + + +} + diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java new file mode 100644 index 0000000..0209cdb --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java @@ -0,0 +1,187 @@ +package org.usfirst.frc.team708.robot.commands.visionProcessor; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.HashMap; + +import edu.wpi.first.wpilibj.vision.VisionPipeline; + +import org.opencv.core.*; +import org.opencv.core.Core.*; +import org.opencv.features2d.FeatureDetector; +import org.opencv.imgcodecs.Imgcodecs; +import org.opencv.imgproc.*; +import org.opencv.objdetect.*; + +/** +* GripPipelineLift class. +* +*

      An OpenCV pipeline generated by GRIP. +* +* @author GRIP +*/ +public class GripPipelineLift implements VisionPipeline { + + //Outputs + private Mat hslThresholdOutput = new Mat(); + private ArrayList findContoursOutput = new ArrayList(); + private ArrayList filterContoursOutput = new ArrayList(); + + static { + System.loadLibrary(Core.NATIVE_LIBRARY_NAME); + } + + /** + * This is the primary method that runs the entire pipeline and updates the outputs. + */ + @Override public void process(Mat source0) { + // Step HSL_Threshold0: + Mat hslThresholdInput = source0; + double[] hslThresholdHue = {87.41007194244604, 180.0}; + double[] hslThresholdSaturation = {179.10669303814598, 255.0}; + double[] hslThresholdLuminance = {91.72661870503596, 255.0}; + hslThreshold(hslThresholdInput, hslThresholdHue, hslThresholdSaturation, hslThresholdLuminance, hslThresholdOutput); + + // Step Find_Contours0: + Mat findContoursInput = hslThresholdOutput; + boolean findContoursExternalOnly = false; + findContours(findContoursInput, findContoursExternalOnly, findContoursOutput); + + // Step Filter_Contours0: + ArrayList filterContoursContours = findContoursOutput; + double filterContoursMinArea = 200.0; + double filterContoursMinPerimeter = 50.0; + double filterContoursMinWidth = 10.0; + double filterContoursMaxWidth = 60.0; + double filterContoursMinHeight = 11.0; + double filterContoursMaxHeight = 80.0; + double[] filterContoursSolidity = {0, 100}; + double filterContoursMaxVertices = 1000000; + double filterContoursMinVertices = 0; + double filterContoursMinRatio = 0; + double filterContoursMaxRatio = 1000; + filterContours(filterContoursContours, filterContoursMinArea, filterContoursMinPerimeter, filterContoursMinWidth, filterContoursMaxWidth, filterContoursMinHeight, filterContoursMaxHeight, filterContoursSolidity, filterContoursMaxVertices, filterContoursMinVertices, filterContoursMinRatio, filterContoursMaxRatio, filterContoursOutput); + + } + + /** + * This method is a generated getter for the output of a HSL_Threshold. + * @return Mat output from HSL_Threshold. + */ + public Mat hslThresholdOutput() { + return hslThresholdOutput; + } + + /** + * This method is a generated getter for the output of a Find_Contours. + * @return ArrayList output from Find_Contours. + */ + public ArrayList findContoursOutput() { + return findContoursOutput; + } + + /** + * This method is a generated getter for the output of a Filter_Contours. + * @return ArrayList output from Filter_Contours. + */ + public ArrayList filterContoursOutput() { + return filterContoursOutput; + } + + + /** + * Segment an image based on hue, saturation, and luminance ranges. + * @param input The image on which to perform the HSL threshold. + * @param hue The min and max hue + * @param sat The min and max saturation + * @param lum The min and max luminance + * @param output The image in which to store the output. + */ + private void hslThreshold(Mat input, double[] hue, double[] sat, double[] lum, + Mat out) { + Imgproc.cvtColor(input, out, Imgproc.COLOR_BGR2HLS); + Core.inRange(out, new Scalar(hue[0], lum[0], sat[0]), + new Scalar(hue[1], lum[1], sat[1]), out); + } + + /** + * Sets the values of pixels in a binary image to their distance to the nearest black pixel. + * @param input The image on which to perform the Distance Transform. + * @param type The Transform. + * @param maskSize the size of the mask. + * @param output The image in which to store the output. + */ + private void findContours(Mat input, boolean externalOnly, + List contours) { + Mat hierarchy = new Mat(); + contours.clear(); + int mode; + if (externalOnly) { + mode = Imgproc.RETR_EXTERNAL; + } + else { + mode = Imgproc.RETR_LIST; + } + int method = Imgproc.CHAIN_APPROX_SIMPLE; + Imgproc.findContours(input, contours, hierarchy, mode, method); + } + + + /** + * Filters out contours that do not meet certain criteria. + * @param inputContours is the input list of contours + * @param output is the the output list of contours + * @param minArea is the minimum area of a contour that will be kept + * @param minPerimeter is the minimum perimeter of a contour that will be kept + * @param minWidth minimum width of a contour + * @param maxWidth maximum width + * @param minHeight minimum height + * @param maxHeight maximimum height + * @param Solidity the minimum and maximum solidity of a contour + * @param minVertexCount minimum vertex Count of the contours + * @param maxVertexCount maximum vertex Count + * @param minRatio minimum ratio of width to height + * @param maxRatio maximum ratio of width to height + */ + private void filterContours(List inputContours, double minArea, + double minPerimeter, double minWidth, double maxWidth, double minHeight, double + maxHeight, double[] solidity, double maxVertexCount, double minVertexCount, double + minRatio, double maxRatio, List output) { + final MatOfInt hull = new MatOfInt(); + output.clear(); + //operation + for (int i = 0; i < inputContours.size(); i++) { + final MatOfPoint contour = inputContours.get(i); + final Rect bb = Imgproc.boundingRect(contour); + if (bb.width < minWidth || bb.width > maxWidth) continue; + if (bb.height < minHeight || bb.height > maxHeight) continue; + final double area = Imgproc.contourArea(contour); + if (area < minArea) continue; + if (Imgproc.arcLength(new MatOfPoint2f(contour.toArray()), true) < minPerimeter) continue; + Imgproc.convexHull(contour, hull); + MatOfPoint mopHull = new MatOfPoint(); + mopHull.create((int) hull.size().height, 1, CvType.CV_32SC2); + for (int j = 0; j < hull.size().height; j++) { + int index = (int)hull.get(j, 0)[0]; + double[] point = new double[] { contour.get(index, 0)[0], contour.get(index, 0)[1]}; + mopHull.put(j, 0, point); + } + final double solid = 100 * area / Imgproc.contourArea(mopHull); + if (solid < solidity[0] || solid > solidity[1]) continue; + if (contour.rows() < minVertexCount || contour.rows() > maxVertexCount) continue; + final double ratio = bb.width / (double)bb.height; + if (ratio < minRatio || ratio > maxRatio) continue; + output.add(contour); + } + } + + + + +} + diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java new file mode 100644 index 0000000..6e990de --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java @@ -0,0 +1,454 @@ +package org.usfirst.frc.team708.robot.subsystems; + +import org.opencv.core.Rect; +import org.opencv.imgproc.Imgproc; +import org.usfirst.frc.team708.robot.AutoConstants; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.commands.visionProcessor.GripPipelineBoiler; +import org.usfirst.frc.team708.robot.util.Math708; + +import edu.wpi.cscore.AxisCamera; +import edu.wpi.cscore.CvSource; +import edu.wpi.cscore.UsbCamera; +import edu.wpi.first.wpilibj.CameraServer; +import edu.wpi.first.wpilibj.command.Subsystem; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; +import edu.wpi.first.wpilibj.tables.TableKeyNotDefinedException; +import edu.wpi.first.wpilibj.vision.VisionThread; + +/** + *@authors Viet & Sue + *This subsystem is specific to the 2017 Game FIRST Steamworks Boiler Goal + */ +public class VisionBoiler extends Subsystem { + + // Camera Variables + private double fovDegrees = AutoConstants.AXIS_FOV_DEGREES; // Field of View of the Camera + private double pipelineSize; // Number of Contours in the Pipline- 0 = target not in view + private int imageWidth = AutoConstants.AXIS_IMG_WIDTH; // Width of image + private int imageHeight = AutoConstants.AXIS_IMG_HEIGHT; // Height of image + + // Image OpenCV Image Processing Variables + private VisionThread visionThread; // vision processing thread - processes grip code + private final Object imgLock = new Object(); // vision boiler object + + private AxisCamera axisCamera; // Axis Camera + private UsbCamera usbCamera; // USB Camera + private CvSource outputStream; // Output stream to the Dashboard + + + // Targeting variables + private int rectX = 0; // the 4 values used which define the full rectangle around the target + private int rectY = 0; + private int rectWidth = 0; + private int rectHeight = 0; + + private int minX = 0; // the 4 values used to create maximum rectangle around the target (used when evaluating each of the contour images) + private int minY = 0; + private int maxX = 0; + private int maxY = 0; + + private boolean hasTarget = false; // flag indicating whether the robot sees the target + private boolean isCentered = false; // flag indicating whether the robot sees the center of the target + private boolean isAtDistance = false; // flag indicating whether the robot is at the correct distance from the target + private boolean isAtHeight = false; // Determine if the robot is at height (eyy, that's the name of the boolean!) + + private int TargetHeight = AutoConstants.BOILER_TARGET_HEIGHT; //Target height + private int TargetWidth = AutoConstants.BOILER_TARGET_WIDTH; //Target width + + private double trueCenter = imageWidth/2; // horizontal value of the center of the target +//VIET NEED TO SETUP MULTIPLE BOILER TARGET DISTANCES + private double distanceToStop = AutoConstants.DISTANCE_TO_LIFT_TARGET; // distance to stop at in front of lift target + private double currentCenter = 0.0; // horizontal value of where robot is looking + private double currentDistance = 0.0; // distance robot is from the target + private double stopAtHeight = 0; // distance to stop at based on height + + private double thresholdX = AutoConstants.X_THRESHOLD_CENTER; // threshold for determining center of the target + private double thresholdDistance = AutoConstants.DISTANCE_TARGET_THRESHOLD; // threshold for determining threshold for stopping at the lift peg + private double minThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MIN; // threshold for determining min value for whether the robot sees the target + private double maxThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MAX; // threshold for determining max value for whether the robot sees the target + private double thresholdHeight = AutoConstants.HEIGHT_THRESHOLD; // threshold for determining the height which the robot will stop at + + // Sweep Variables + private boolean inSweep = false; // flag indicating whether the robot is sweeping left and right looking for the target + private double sweepDirection = 0.0; // value indicating the direction of the sweep -1 = right; 1 = left + private int sweepCounter = 0; // value indicating when the sweep will change direction + + + // drive variables + private double RotateDiff = 0; // for smartdashboard - how far away from center + private double MoveDiff = 0; // for smartdashboard - how far away from target + double rotate; // speed of the rotate being returned to the command + double move; // speed of the move forward being returned to the command + + + // Vision Processing + public VisionBoiler() { + super("Vision Processor"); + + + // define the Cameras: + usbCamera=CameraServer.getInstance().startAutomaticCapture("cam0", 0); + axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); + axisCamera.setResolution(imageWidth, imageHeight); + + + // define the output stream on the smart dashboard + outputStream = CameraServer.getInstance().putVideo("Target", imageWidth, imageHeight); + + + // Vision thread which processes the image contours + visionThread = new VisionThread(axisCamera, new GripPipelineBoiler(), pipeline -> { + pipelineSize = pipeline.filterContoursOutput().size(); + + // if the grip pipeline filter "filterContoursOutput" sees the target + // loop through each contour image + // grab the bounding rectangle values of each contour + // to create the biggest rectangle around the 2 vertical retroreflective tapes + // on either side of the lift peg + if (!pipeline.filterContoursOutput().isEmpty()) { + + for (int i = 0; i < pipeline.filterContoursOutput().size(); i++) { + Rect r = Imgproc.boundingRect(pipeline.filterContoursOutput().get(i)); + + // set the min/max values to match the values form the 1st image + if (i == 0) { + minX = r.x; + minY = r.y; + maxX = r.x + r.width; + maxY = r.y + r.height; + } + + // compare each value to the min/max and replace if a better one is found + if (r.x < minX) { + minX = r.x; + } + if (r.y < minY) { + minY = r.y; + } + if (r.x + r.width > maxX) { + maxX = r.x + r.width; + } + if (r.y + r.height> maxY) { + maxY = r.y + r.height; + } + } + +// // this is a second method of looping through the contours in the filterContoursOutput Array of Mat Images +// for (MatOfPoint contour : pipeline.filterContoursOutput()) { +// Rect r = Imgproc.boundingRect(contour); +// if (r.x < minX) { +// minX = r.x; +// } +// } + + + + synchronized (imgLock) { + currentCenter = minX + ((maxX - minX) / 2); + + // set values for the smartdashboard + rectX = minX; + rectY = minY; + rectWidth = maxX - minX; + rectHeight = maxY - minY; + + // note - this formula was pulled from 1640's github code - need to find the specific reference + // from 1640 + //Equation to determine the distance from a target (d) given the width in pixels of a vision target in the camera image (w): + // d = (TARGET_WIDTH*CAMERA_IMAGE_WIDTH)/(2*tan(FOV_ANGLE/2)*w) + // i.e. d and w are inversely related. + // test the fovDegrees values + currentDistance = TargetWidth * imageWidth / (2*(Math.tan(Math.toRadians(fovDegrees))/2)*rectWidth); + + // display the current image on the driver station + + if (Constants.DEBUG){ + outputStream.putFrame(pipeline.rgbThresholdOutput()); + } + } + + } + + // the target is not in the camera (ie, pipeline is empty) + else { + hasTarget = false; + minX = 0; + minY = 0; + maxX = 0; + maxY = 0; + } + + }); + visionThread.start(); + } + + + /* + * ProcessData + * Method to interpret the camera data received above + */ + public void processData() { + try { + + // use the sonar to get the distance from the target (backup plan if camera distance not available) +// currentDistance=Robot.drivetrain.getSonarDistance(); + + // if robot sees the target (current X between its min and max) + if ((currentCenter > minThresholdX) && (currentCenter < maxThresholdX)) { + hasTarget = true; + } + else { + hasTarget = false; + } + + } catch (TableKeyNotDefinedException e) { + e.printStackTrace(); + } + } + + /* + * isCentered + * Method to determine whether the robot sees the center of the target (within the threshold value) + */ + public boolean isCentered() { + + // if the robot sees the target + // determine whether the horizontal value the robot sees is within the threshold defining the center of the target + // set isCentered according to whether the robot is aligned with the center of the target + if (hasTarget) + { + + double difference = trueCenter - (currentCenter); + if (Math.abs(difference) <= thresholdX) { + isCentered = true; + } + else if (Math.abs(difference) > thresholdX) { + isCentered = false; + } + RotateDiff = difference; + } + else{ + isCentered = false; + } + return isCentered; + } + + /* + * getRotate + * Method to determine whether the robot is at the center of the target so it can drive towards target + */ + public double getRotate() { + double difference=0; + + // currently we are only running 1 cycle of the sweep and stopping + // if in the future additional sweeps are required, this is where the reset should occur +// if (sweepCounter > 400){ +// sweepCounter = 0; +// } + + // if robot sees target and is centered - no need to rotate the robot + if (hasTarget && isCentered) + { + rotate = 0.0; + } + + // if the robot sees the target but is not centered + // check to see whether the robot is within the threshold + // rotate based on the math function + else if (hasTarget && !isCentered){ + difference = trueCenter - (currentCenter); + + rotate = Math708.getSignClippedPercentError(currentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); + + + if (Math.abs(difference) > thresholdX) { + if (currentCenter < trueCenter){ + rotate = Math.abs(rotate); + } + else { + rotate = Math.abs(rotate) * -1; + } + } + } + + // if the robot does not have the target + // begin the sweep + // sweep is defined as rotating the robot right, left, right in predefined counts + // if in the sweep the robot does not find the target, it stops after 3 sweeps + // otherwise it will jump back into the hasTarget logic identified above + else if (!hasTarget){ + if (Math.abs(sweepDirection) < .1){ + sweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; + rotate = -AutoConstants.SWEEP_ROTATE; + } + else if (sweepDirection > AutoConstants.SWEEP1_MIN){ + if ((sweepCounter >= AutoConstants.SWEEP1_MIN && sweepCounter <= AutoConstants.SWEEP1_MAX) + || (sweepCounter >= AutoConstants.SWEEP3_MIN && sweepCounter <= AutoConstants.SWEEP3_MAX)){ + + rotate = -AutoConstants.SWEEP_ROTATE; + if (sweepCounter== AutoConstants.SWEEP1_MAX || sweepCounter== AutoConstants.SWEEP3_MAX){ + sweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; + } + } + } + else { + if (sweepCounter >= AutoConstants.SWEEP2_MIN && sweepCounter <= AutoConstants.SWEEP2_MAX) + rotate = AutoConstants.SWEEP_ROTATE; + if (sweepCounter== AutoConstants.SWEEP2_MAX){ + sweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; + } + } + + sweepCounter++; + } + RotateDiff = difference; + return rotate; + } + + /* + * getMove + * Method to determine if the robot is close enough to target so it can stop + */ + + public double getMove() { +//VIET - HOW DO WE WANT TO HANDLE MULTIPLE DISTANCES HERE? + // if the robot sees the target + // Method to determine whether the robot is at the correct distance to the target so stop + if (hasTarget) + { + //maxY is used as height of the target + double difference = distanceToStop - maxY; + move = Math708.getSignClippedPercentError(maxY, stopAtHeight, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); + + //Check if target is at correct distance within threshold + if (Math.abs(difference) <= thresholdDistance) { + move = 0.0; + isAtHeight = true; + } else { + isAtHeight = false; + } + MoveDiff = difference; + } else { + move = 0.0; + } + + return move; + } + + /* + * isAtDistance + * Method to determine whether the robot is at the distance from the target based on the threshold value + */ + //VIET - UPDATE THIS METHOD TO RETURN WHETHER IT IS AT ANY OF THE SHOOTING DISTANCES FROM THE BOILER +// public boolean isAtDistance() { +// double difference = distanceToStop - currentDistance; +// //Check if target is at correct level within threshold +// if (Math.abs(difference) <= thresholdDistance) { +// isAtDistance = true; +// } else { +// isAtDistance = false; +// } +// return isAtDistance; +// } + + /* + * isAtHeight + * Method to determine whether the robot is at the distance from the target based on the threshold value + */ +// VIET update this + public boolean isAtHeight() { + double difference = stopAtHeight - maxY; + //Check if target is at correct level within threshold + if (Math.abs(difference) <= thresholdHeight) { + isAtHeight = true; + } else { + isAtHeight = false; + } + return isAtHeight; + } + + /** + * GETTERS and PUTTERS to return the private variables + * @return + */ + public boolean isHasTarget() { + return hasTarget; + } + + + public void putCurrentCenter(double cc) { + currentCenter = cc; + } + + + public void putHasTarget(boolean ht) { + hasTarget = ht; + } + + public void putStopAtHeight(double sah) { + stopAtHeight = sah; + } + + public double getStopAtHeight() { + return stopAtHeight; + } + + public int getCounter() { + return sweepCounter; + } + + + public void putCounter(int ct) { + sweepCounter = ct; + } + + public void putIsCentered(boolean ic) { + isCentered = ic; + } + + + public void putAtDistance(boolean ad) { + isAtDistance = ad; + } + + public boolean isInSweep() { + if (hasTarget) { + inSweep = false; + sweepCounter=1; + } + else { + inSweep = true; + } + return inSweep; + } + + public void sendToDashboard() { + if (Constants.DEBUG) { + SmartDashboard.putBoolean("Has Target", isHasTarget()); + SmartDashboard.putBoolean("Is At Height", isAtHeight()); + SmartDashboard.putNumber("Current Distance", currentDistance); + SmartDashboard.putNumber("Center of Target", currentCenter); + SmartDashboard.putNumber("Rotation", rotate); + SmartDashboard.putNumber("Rotate Difference", RotateDiff); + SmartDashboard.putNumber("Distance Difference", MoveDiff); + SmartDashboard.putNumber("Sweep Counter", sweepCounter); + SmartDashboard.putNumber("SweepDirection", sweepDirection); + SmartDashboard.putBoolean("isCentered", isCentered()); + SmartDashboard.putNumber("rectX", rectX); + SmartDashboard.putNumber("rectY", rectY); + SmartDashboard.putNumber("rectWidth", rectWidth); + SmartDashboard.putNumber("rectHeight", rectHeight); + SmartDashboard.putNumber("Distance To Target", currentDistance); + SmartDashboard.putNumber("pipelineSize", pipelineSize); + } + } + + public void initDefaultCommand() { + if (Constants.DEBUG) { + } + } +} + diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionGear.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionGear.java new file mode 100644 index 0000000..3cc55e3 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionGear.java @@ -0,0 +1,426 @@ +package org.usfirst.frc.team708.robot.subsystems; + +import org.opencv.core.Rect; +import org.opencv.imgproc.Imgproc; +import org.usfirst.frc.team708.robot.AutoConstants; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.commands.visionProcessor.GripPipelineGear; +import org.usfirst.frc.team708.robot.util.Math708; + +import edu.wpi.cscore.AxisCamera; +import edu.wpi.cscore.CvSource; +import edu.wpi.cscore.UsbCamera; +import edu.wpi.first.wpilibj.CameraServer; +import edu.wpi.first.wpilibj.command.Subsystem; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; +import edu.wpi.first.wpilibj.tables.TableKeyNotDefinedException; +import edu.wpi.first.wpilibj.vision.VisionThread; + +/** + *@authors Viet & Sue + *This subsystem is specific to the 2017 Game FIRST Steamworks Gear + */ +public class VisionGear extends Subsystem { + + // Camera Variables + private double fovDegrees = AutoConstants.AXIS_FOV_DEGREES; // Field of View of the Camera + private double pipelineSize; // Number of Contours in the Pipline- 0 = target not in view + private int imageWidth = AutoConstants.AXIS_IMG_WIDTH; // Width of image + private int imageHeight = AutoConstants.AXIS_IMG_HEIGHT; // Height of image + + // Image OpenCV Image Processing Variables + private VisionThread visionThread; // vision processing thread - processes grip code + private final Object imgLock = new Object(); // vision Gear object + + private AxisCamera axisCamera; // Axis Camera + private UsbCamera usbCamera; // USB Camera + private CvSource outputStream; // Output stream to the Dashboard + + + // Targeting variables + private int rectX = 0; // the 4 values used which define the full rectangle around the target + private int rectY = 0; + private int rectWidth = 0; + private int rectHeight = 0; + + private int minX = 0; // the 4 values used to create maximum rectangle around the target (used when evaluating each of the contour images) + private int minY = 0; + private int maxX = 0; + private int maxY = 0; + + private boolean hasTarget = false; // flag indicating whether the robot sees the target + private boolean isCentered = false; // flag indicating whether the robot sees the center of the target + private boolean isAtDistance = false; // flag indicating whether the robot is at the correct distance from the target + + + private int TargetHeight = AutoConstants.GEAR_TARGET_HEIGHT; //Target height + private int TargetWidth = AutoConstants.GEAR_TARGET_WIDTH; //Target width + + private double trueCenter = imageWidth/2; // horizontal value of the center of the target + private double distanceToStop = AutoConstants.DISTANCE_TO_GEAR; // distance to stop at in front of gear + private double currentCenter = 0.0; // horizontal value of where robot is looking + private double currentDistance = 0.0; // distance robot is from the target + + private double thresholdX = AutoConstants.X_THRESHOLD_CENTER; // threshold for determining center of the target + private double thresholdDistance = AutoConstants.DISTANCE_TARGET_THRESHOLD; // threshold for determining threshold for stopping at the gear +//VIET NEED MIN/MAX FOR GEAR AND CENTER + private double minThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MIN; // threshold for determining min value for whether the robot sees the target + private double maxThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MAX; // threshold for determining max value for whether the robot sees the target + + + // Sweep Variables + private boolean inSweep = false; // flag indicating whether the robot is sweeping left and right looking for the target + private double sweepDirection = 0.0; // value indicating the direction of the sweep -1 = right; 1 = left + private int sweepCounter = 0; // value indicating when the sweep will change direction + + + // drive variables + private double RotateDiff = 0; // for smartdashboard - how far away from center + private double MoveDiff = 0; // for smartdashboard - how far away from target + double rotate; // speed of the rotate being returned to the command + double move; // speed of the move forward being returned to the command + + + // Vision Processing + public VisionGear() { + super("Vision Processor"); + + + // define the Cameras: + usbCamera=CameraServer.getInstance().startAutomaticCapture("cam0", 0); + axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); + axisCamera.setResolution(imageWidth, imageHeight); + + + // define the output stream on the smart dashboard + outputStream = CameraServer.getInstance().putVideo("Target", imageWidth, imageHeight); + + + // Vision thread which processes the image contours + visionThread = new VisionThread(axisCamera, new GripPipelineGear(), pipeline -> { + pipelineSize = pipeline.filterContoursOutput().size(); + + // if the grip pipeline filter "filterContoursOutput" sees the target + // loop through each contour image + // grab the bounding rectangle values of each contour + // to create the biggest rectangle around the gear + if (!pipeline.filterContoursOutput().isEmpty()) { + + for (int i = 0; i < pipeline.filterContoursOutput().size(); i++) { + Rect r = Imgproc.boundingRect(pipeline.filterContoursOutput().get(i)); + + // set the min/max values to match the values form the 1st image + if (i == 0) { + minX = r.x; + minY = r.y; + maxX = r.x + r.width; + maxY = r.y + r.height; + } + + // compare each value to the min/max and replace if a better one is found + if (r.x < minX) { + minX = r.x; + } + if (r.y < minY) { + minY = r.y; + } + if (r.x + r.width > maxX) { + maxX = r.x + r.width; + } + if (r.y + r.height> maxY) { + maxY = r.y + r.height; + } + } + +// // this is a second method of looping through the contours in the filterContoursOutput Array of Mat Images +// for (MatOfPoint contour : pipeline.filterContoursOutput()) { +// Rect r = Imgproc.boundingRect(contour); +// if (r.x < minX) { +// minX = r.x; +// } +// } + + + + synchronized (imgLock) { + currentCenter = minX + ((maxX - minX) / 2); + + // set values for the smartdashboard + rectX = minX; + rectY = minY; + rectWidth = maxX - minX; + rectHeight = maxY - minY; + + // note - this formula was pulled from 1640's github code - need to find the specific reference + // from 1640 + //Equation to determine the distance from a target (d) given the width in pixels of a vision target in the camera image (w): + // d = (TARGET_WIDTH*CAMERA_IMAGE_WIDTH)/(2*tan(FOV_ANGLE/2)*w) + // i.e. d and w are inversely related. + currentDistance = TargetWidth * imageWidth / (2*(Math.tan(Math.toRadians(fovDegrees))/2)*rectWidth); + + // display the current image on the driver station + + if (Constants.DEBUG){ + outputStream.putFrame(pipeline.hslThresholdOutput()); + } + } + + } + + // the target is not in the camera (ie, pipeline is empty) + else { + hasTarget = false; + minX = 0; + minY = 0; + maxX = 0; + maxY = 0; + } + + }); + visionThread.start(); + } + + + /* + * ProcessData + * Method to interpret the camera data received above + */ + public void processData() { + try { + + // use the sonar to get the distance from the target (backup plan if camera distance not available) +// currentDistance=Robot.drivetrain.getSonarDistance(); + + // if robot sees the target (current X between its min and max) + if ((currentCenter > minThresholdX) && (currentCenter < maxThresholdX)) { + hasTarget = true; + } + else { + hasTarget = false; + } + + } catch (TableKeyNotDefinedException e) { + e.printStackTrace(); + } + } + + /* + * isCentered + * Method to determine whether the robot sees the center of the target (within the threshold value) + */ + public boolean isCentered() { + + // if the robot sees the target + // determine whether the horizontal value the robot sees is within the threshold defining the center of the target + // set isCentered according to whether the robot is aligned with the center of the target + if (hasTarget) + { + + double difference = trueCenter - (currentCenter); + if (Math.abs(difference) <= thresholdX) { + isCentered = true; + } + else if (Math.abs(difference) > thresholdX) { + isCentered = false; + } + RotateDiff = difference; + } + else{ + isCentered = false; + } + return isCentered; + } + + /* + * getRotate + * Method to determine whether the robot is at the center of the target so it can drive towards target + */ + public double getRotate() { + double difference=0; + + // currently we are only running 1 cycle of the sweep and stopping + // if in the future additional sweeps are required, this is where the reset should occur +// if (sweepCounter > 400){ +// sweepCounter = 0; +// } + + // if robot sees target and is centered - no need to rotate the robot + if (hasTarget && isCentered) + { + rotate = 0.0; + } + + // if the robot sees the target but is not centered + // check to see whether the robot is within the threshold + // rotate based on the math function + else if (hasTarget && !isCentered){ + difference = trueCenter - (currentCenter); + + rotate = Math708.getSignClippedPercentError(currentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); + + + if (Math.abs(difference) > thresholdX) { + if (currentCenter < trueCenter){ + rotate = Math.abs(rotate); + } + else { + rotate = Math.abs(rotate) * -1; + } + } + } + + // if the robot does not have the target + // begin the sweep + // sweep is defined as rotating the robot right, left, right in predefined counts + // if in the sweep the robot does not find the target, it stops after 3 sweeps + // otherwise it will jump back into the hasTarget logic identified above + else if (!hasTarget){ + if (Math.abs(sweepDirection) < .1){ + sweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; + rotate = -AutoConstants.SWEEP_ROTATE; + } + else if (sweepDirection > AutoConstants.SWEEP1_MIN){ + if ((sweepCounter >= AutoConstants.SWEEP1_MIN && sweepCounter <= AutoConstants.SWEEP1_MAX) + || (sweepCounter >= AutoConstants.SWEEP3_MIN && sweepCounter <= AutoConstants.SWEEP3_MAX)){ + + rotate = -AutoConstants.SWEEP_ROTATE; + if (sweepCounter== AutoConstants.SWEEP1_MAX || sweepCounter== AutoConstants.SWEEP3_MAX){ + sweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; + } + } + } + else { + if (sweepCounter >= AutoConstants.SWEEP2_MIN && sweepCounter <= AutoConstants.SWEEP2_MAX) + rotate = AutoConstants.SWEEP_ROTATE; + if (sweepCounter== AutoConstants.SWEEP2_MAX){ + sweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; + } + } + + sweepCounter++; + } + RotateDiff = difference; + return rotate; + } + + /* + * getMove + * Method to determine if the robot is close enough to target so it can stop + */ + + public double getMove() { + + // if the robot sees the target + // Method to determine whether the robot is at the correct distance to the target so stop + if (hasTarget) + { + double difference = distanceToStop - currentDistance; + move = Math708.getSignClippedPercentError(currentDistance, distanceToStop, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); + + //Check if target is at correct distance within threshold + if (Math.abs(difference) <= thresholdDistance) { + move = 0.0; + isAtDistance = true; + } else { + isAtDistance = false; + } + MoveDiff = difference; + } else { + move = 0.0; + } + + return move; + } + /* + * isAtDistance + * Method to determine whether the robot is at the distance from the target based on the threshold value + */ + public boolean isAtDistance() { + double difference = distanceToStop - currentDistance; + //Check if target is at correct level within threshold + if (Math.abs(difference) <= thresholdDistance) { + isAtDistance = true; + } else { + isAtDistance = false; + } + return isAtDistance; + } + + /** + * GETTERS and PUTTERS to return the private variables + * @return + */ + public boolean isHasTarget() { + return hasTarget; + } + + + public void putCurrentCenter(double cc) { + currentCenter = cc; + } + + + public void putHasTarget(boolean ht) { + hasTarget = ht; + } + + + public int getCounter() { + return sweepCounter; + } + + + public void putCounter(int ct) { + sweepCounter = ct; + } + + public void putIsCentered(boolean ic) { + isCentered = ic; + } + + + public void putAtDistance(boolean ay) { + isAtDistance = ay; + } + + + public boolean isInSweep() { + if (hasTarget) { + inSweep = false; + sweepCounter=1; + } + else { + inSweep = true; + } + return inSweep; + } + + public void sendToDashboard() { + if (Constants.DEBUG) { + SmartDashboard.putBoolean("Has Target", isHasTarget()); + SmartDashboard.putBoolean("Is At Distance", isAtDistance()); + SmartDashboard.putNumber("Current Distance", currentDistance); + SmartDashboard.putNumber("Center of Target", currentCenter); + SmartDashboard.putNumber("Rotation", rotate); + SmartDashboard.putNumber("Rotate Difference", RotateDiff); + SmartDashboard.putNumber("Distance Difference", MoveDiff); + SmartDashboard.putNumber("Sweep Counter", sweepCounter); + SmartDashboard.putNumber("SweepDirection", sweepDirection); + SmartDashboard.putBoolean("isCentered", isCentered()); + SmartDashboard.putNumber("rectX", rectX); + SmartDashboard.putNumber("rectY", rectY); + SmartDashboard.putNumber("rectWidth", rectWidth); + SmartDashboard.putNumber("rectHeight", rectHeight); + SmartDashboard.putNumber("Distance To Target", currentDistance); + SmartDashboard.putNumber("pipelineSize", pipelineSize); + } + } + + public void initDefaultCommand() { + if (Constants.DEBUG) { + } + } +} + diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java new file mode 100644 index 0000000..d82a1a2 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java @@ -0,0 +1,426 @@ +package org.usfirst.frc.team708.robot.subsystems; + +import org.opencv.core.Rect; +import org.opencv.imgproc.Imgproc; +import org.usfirst.frc.team708.robot.AutoConstants; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.commands.visionProcessor.GripPipelineLift; +import org.usfirst.frc.team708.robot.util.Math708; + +import edu.wpi.cscore.AxisCamera; +import edu.wpi.cscore.CvSource; +import edu.wpi.cscore.UsbCamera; +import edu.wpi.first.wpilibj.CameraServer; +import edu.wpi.first.wpilibj.command.Subsystem; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; +import edu.wpi.first.wpilibj.tables.TableKeyNotDefinedException; +import edu.wpi.first.wpilibj.vision.VisionThread; + +/** + *@authors Viet & Sue + *This subsystem is specific to the 2017 Game FIRST Steamworks Lift Peg + */ +public class VisionLift extends Subsystem { + + // Camera Variables + private double fovDegrees = AutoConstants.AXIS_FOV_DEGREES; // Field of View of the Camera + private double pipelineSize; // Number of Contours in the Pipline- 0 = target not in view + private int imageWidth = AutoConstants.AXIS_IMG_WIDTH; // Width of image + private int imageHeight = AutoConstants.AXIS_IMG_HEIGHT; // Height of image + + // Image OpenCV Image Processing Variables + private VisionThread visionThread; // vision processing thread - processes grip code + private final Object imgLock = new Object(); // vision Lift object + + private AxisCamera axisCamera; // Axis Camera + private UsbCamera usbCamera; // USB Camera + private CvSource outputStream; // Output stream to the Dashboard + + + // Targeting variables + private int rectX = 0; // the 4 values used which define the full rectangle around the target + private int rectY = 0; + private int rectWidth = 0; + private int rectHeight = 0; + + private int minX = 0; // the 4 values used to create maximum rectangle around the target (used when evaluating each of the contour images) + private int minY = 0; + private int maxX = 0; + private int maxY = 0; + + private boolean hasTarget = false; // flag indicating whether the robot sees the target + private boolean isCentered = false; // flag indicating whether the robot sees the center of the target + private boolean isAtDistance = false; // flag indicating whether the robot is at the correct distance from the target + + + private int liftTargetHeight = AutoConstants.LIFT_TARGET_HEIGHT; //Target height + private int liftTargetWidth = AutoConstants.LIFT_TARGET_WIDTH; //Target width + + private double trueCenter = imageWidth/2; // horizontal value of the center of the target + private double distanceToStop = AutoConstants.DISTANCE_TO_LIFT_TARGET; // distance to stop at in front of lift target + private double currentCenter = 0.0; // horizontal value of where robot is looking + private double currentDistance = 0.0; // distance robot is from the target + + private double thresholdX = AutoConstants.X_THRESHOLD_CENTER; // threshold for determining center of the target + private double thresholdDistance = AutoConstants.DISTANCE_TARGET_THRESHOLD; // threshold for determining threshold for stopping at the lift peg + private double minThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MIN; // threshold for determining min value for whether the robot sees the target + private double maxThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MAX; // threshold for determining max value for whether the robot sees the target + + + // Sweep Variables + private boolean inSweep = false; // flag indicating whether the robot is sweeping left and right looking for the target + private double sweepDirection = 0.0; // value indicating the direction of the sweep -1 = right; 1 = left + private int sweepCounter = 0; // value indicating when the sweep will change direction + + + // drive variables + private double RotateDiff = 0; // for smartdashboard - how far away from center + private double MoveDiff = 0; // for smartdashboard - how far away from target + double rotate; // speed of the rotate being returned to the command + double move; // speed of the move forward being returned to the command + + + // Vision Processing + public VisionLift() { + super("Vision Processor"); + + + // define the Cameras: + usbCamera=CameraServer.getInstance().startAutomaticCapture("cam0", 0); + axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); + axisCamera.setResolution(imageWidth, imageHeight); + + + // define the output stream on the smart dashboard + outputStream = CameraServer.getInstance().putVideo("Target", imageWidth, imageHeight); + + + // Vision thread which processes the image contours + visionThread = new VisionThread(axisCamera, new GripPipelineLift(), pipeline -> { + pipelineSize = pipeline.filterContoursOutput().size(); + + // if the grip pipeline filter "filterContoursOutput" sees the target + // loop through each contour image + // grab the bounding rectangle values of each contour + // to create the biggest rectangle around the 2 vertical retroreflective tapes + // on either side of the lift peg + if (!pipeline.filterContoursOutput().isEmpty()) { + + for (int i = 0; i < pipeline.filterContoursOutput().size(); i++) { + Rect r = Imgproc.boundingRect(pipeline.filterContoursOutput().get(i)); + + // set the min/max values to match the values form the 1st image + if (i == 0) { + minX = r.x; + minY = r.y; + maxX = r.x + r.width; + maxY = r.y + r.height; + } + + // compare each value to the min/max and replace if a better one is found + if (r.x < minX) { + minX = r.x; + } + if (r.y < minY) { + minY = r.y; + } + if (r.x + r.width > maxX) { + maxX = r.x + r.width; + } + if (r.y + r.height> maxY) { + maxY = r.y + r.height; + } + } + +// // this is a second method of looping through the contours in the filterContoursOutput Array of Mat Images +// for (MatOfPoint contour : pipeline.filterContoursOutput()) { +// Rect r = Imgproc.boundingRect(contour); +// if (r.x < minX) { +// minX = r.x; +// } +// } + + + + synchronized (imgLock) { + currentCenter = minX + ((maxX - minX) / 2); + + // set values for the smartdashboard + rectX = minX; + rectY = minY; + rectWidth = maxX - minX; + rectHeight = maxY - minY; + + // note - this formula was pulled from 1640's github code - need to find the specific reference + // from 1640 + //Equation to determine the distance from a target (d) given the width in pixels of a vision target in the camera image (w): + // d = (TARGET_WIDTH*CAMERA_IMAGE_WIDTH)/(2*tan(FOV_ANGLE/2)*w) + // i.e. d and w are inversely related. + currentDistance = liftTargetWidth * imageWidth / (2*(Math.tan(Math.toRadians(fovDegrees))/2)*rectWidth); + + // display the current image on the driver station + + if (Constants.DEBUG){ + outputStream.putFrame(pipeline.hslThresholdOutput()); + } + } + + } + + // the target is not in the camera (ie, pipeline is empty) + else { + hasTarget = false; + minX = 0; + minY = 0; + maxX = 0; + maxY = 0; + } + + }); + visionThread.start(); + } + + + /* + * ProcessData + * Method to interpret the camera data received above + */ + public void processData() { + try { + + // use the sonar to get the distance from the target (backup plan if camera distance not available) +// currentDistance=Robot.drivetrain.getSonarDistance(); + + // if robot sees the target (current X between its min and max) + if ((currentCenter > minThresholdX) && (currentCenter < maxThresholdX)) { + hasTarget = true; + } + else { + hasTarget = false; + } + + } catch (TableKeyNotDefinedException e) { + e.printStackTrace(); + } + } + + /* + * isCentered + * Method to determine whether the robot sees the center of the target (within the threshold value) + */ + public boolean isCentered() { + + // if the robot sees the target + // determine whether the horizontal value the robot sees is within the threshold defining the center of the target + // set isCentered according to whether the robot is aligned with the center of the target + if (hasTarget) + { + + double difference = trueCenter - (currentCenter); + if (Math.abs(difference) <= thresholdX) { + isCentered = true; + } + else if (Math.abs(difference) > thresholdX) { + isCentered = false; + } + RotateDiff = difference; + } + else{ + isCentered = false; + } + return isCentered; + } + + /* + * getRotate + * Method to determine whether the robot is at the center of the target so it can drive towards target + */ + public double getRotate() { + double difference=0; + + // currently we are only running 1 cycle of the sweep and stopping + // if in the future additional sweeps are required, this is where the reset should occur +// if (sweepCounter > 400){ +// sweepCounter = 0; +// } + + // if robot sees target and is centered - no need to rotate the robot + if (hasTarget && isCentered) + { + rotate = 0.0; + } + + // if the robot sees the target but is not centered + // check to see whether the robot is within the threshold + // rotate based on the math function + else if (hasTarget && !isCentered){ + difference = trueCenter - (currentCenter); + + rotate = Math708.getSignClippedPercentError(currentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); + + + if (Math.abs(difference) > thresholdX) { + if (currentCenter < trueCenter){ + rotate = Math.abs(rotate); + } + else { + rotate = Math.abs(rotate) * -1; + } + } + } + + // if the robot does not have the target + // begin the sweep + // sweep is defined as rotating the robot right, left, right in predefined counts + // if in the sweep the robot does not find the target, it stops after 3 sweeps + // otherwise it will jump back into the hasTarget logic identified above + else if (!hasTarget){ + if (Math.abs(sweepDirection) < .1){ + sweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; + rotate = -AutoConstants.SWEEP_ROTATE; + } + else if (sweepDirection > AutoConstants.SWEEP1_MIN){ + if ((sweepCounter >= AutoConstants.SWEEP1_MIN && sweepCounter <= AutoConstants.SWEEP1_MAX) + || (sweepCounter >= AutoConstants.SWEEP3_MIN && sweepCounter <= AutoConstants.SWEEP3_MAX)){ + + rotate = -AutoConstants.SWEEP_ROTATE; + if (sweepCounter== AutoConstants.SWEEP1_MAX || sweepCounter== AutoConstants.SWEEP3_MAX){ + sweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; + } + } + } + else { + if (sweepCounter >= AutoConstants.SWEEP2_MIN && sweepCounter <= AutoConstants.SWEEP2_MAX) + rotate = AutoConstants.SWEEP_ROTATE; + if (sweepCounter== AutoConstants.SWEEP2_MAX){ + sweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; + } + } + + sweepCounter++; + } + RotateDiff = difference; + return rotate; + } + + /* + * getMove + * Method to determine if the robot is close enough to target so it can stop + */ + + public double getMove() { + + // if the robot sees the target + // Method to determine whether the robot is at the correct distance to the target so stop + if (hasTarget) + { + double difference = distanceToStop - currentDistance; + move = Math708.getSignClippedPercentError(currentDistance, distanceToStop, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); + + //Check if target is at correct distance within threshold + if (Math.abs(difference) <= thresholdDistance) { + move = 0.0; + isAtDistance = true; + } else { + isAtDistance = false; + } + MoveDiff = difference; + } else { + move = 0.0; + } + + return move; + } + /* + * isAtDistance + * Method to determine whether the robot is at the distance from the target based on the threshold value + */ + public boolean isAtDistance() { + double difference = distanceToStop - currentDistance; + //Check if target is at correct level within threshold + if (Math.abs(difference) <= thresholdDistance) { + isAtDistance = true; + } else { + isAtDistance = false; + } + return isAtDistance; + } + + /** + * GETTERS and PUTTERS to return the private variables + * @return + */ + public boolean isHasTarget() { + return hasTarget; + } + + + public void putCurrentCenter(double cc) { + currentCenter = cc; + } + + + public void putHasTarget(boolean ht) { + hasTarget = ht; + } + + + public int getCounter() { + return sweepCounter; + } + + + public void putCounter(int ct) { + sweepCounter = ct; + } + + public void putIsCentered(boolean ic) { + isCentered = ic; + } + + + public void putAtDistance(boolean ay) { + isAtDistance = ay; + } + + + public boolean isInSweep() { + if (hasTarget) { + inSweep = false; + sweepCounter=1; + } + else { + inSweep = true; + } + return inSweep; + } + + public void sendToDashboard() { + if (Constants.DEBUG) { + SmartDashboard.putBoolean("Has Target", isHasTarget()); + SmartDashboard.putBoolean("Is At Distance", isAtDistance()); + SmartDashboard.putNumber("Current Distance", currentDistance); + SmartDashboard.putNumber("Center of Target", currentCenter); + SmartDashboard.putNumber("Rotation", rotate); + SmartDashboard.putNumber("Rotate Difference", RotateDiff); + SmartDashboard.putNumber("Distance Difference", MoveDiff); + SmartDashboard.putNumber("Sweep Counter", sweepCounter); + SmartDashboard.putNumber("SweepDirection", sweepDirection); + SmartDashboard.putBoolean("isCentered", isCentered()); + SmartDashboard.putNumber("rectX", rectX); + SmartDashboard.putNumber("rectY", rectY); + SmartDashboard.putNumber("rectWidth", rectWidth); + SmartDashboard.putNumber("rectHeight", rectHeight); + SmartDashboard.putNumber("Distance To Target", currentDistance); + SmartDashboard.putNumber("pipelineSize", pipelineSize); + } + } + + public void initDefaultCommand() { + if (Constants.DEBUG) { + } + } +} + diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.java index 15a4afb..eb67db8 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.java @@ -30,12 +30,12 @@ public class VisionProcessor extends Subsystem { // private final double targetWidth = 18; //width of target in inches private double centerX = 0.0; - private double targetY = AutoConstants.Y_TARGET; +// private double targetY = AutoConstants.Y_TARGET; private double currentX = 0.0; private double currentY = 0.0; - private double thresholdX = AutoConstants.X_THRESHOLD; - private double thresholdY = AutoConstants.Y_THRESHOLD; +// private double thresholdX = AutoConstants.X_THRESHOLD; +// private double thresholdY = AutoConstants.Y_THRESHOLD; // High goal aspect ratio (11ft6in/3ft1in) in inches (3.729 repeating) // private final double targetAspectRatio = 3.73; @@ -103,13 +103,13 @@ public double getRotate() { double difference = centerX - (currentX); rotate = Math708.getSignClippedPercentError(currentX, centerX, 0.3, 0.5); - if (Math.abs(difference) <= thresholdX) { - rotate = 0.0; - wasCentered = true; - } - else if (Math.abs(difference) > thresholdX) { - wasCentered = false; - } +// if (Math.abs(difference) <= thresholdX) { +// rotate = 0.0; +// wasCentered = true; +// } +// else if (Math.abs(difference) > thresholdX) { +// wasCentered = false; +// } /* @@ -138,22 +138,22 @@ else if (Math.abs(difference) > thresholdX) { //Returns how to move to get to target distance (targetAmount = target ratio) public double getMove() { - double move; + double move = 0.0; if (hasTarget) { - double difference = targetY - currentY; - move = Math708.getSignClippedPercentError(currentY, targetY, 0.4, 0.6); - //Check if target is at correct level within threshold - if (difference <= thresholdY) { - move = 0.0; - isAtY = true; - } else { - isAtY = false; - } - - } else { - move = 0.0; +// double difference = targetY - currentY; +// move = Math708.getSignClippedPercentError(currentY, targetY, 0.4, 0.6); +// //Check if target is at correct level within threshold +// if (difference <= thresholdY) { +// move = 0.0; +// isAtY = true; +// } else { +// isAtY = false; +// } +// +// } else { +// move = 0.0; } return move; @@ -168,13 +168,13 @@ public boolean isHasTarget() { } public boolean isAtY() { - double difference = targetY - currentY; - //Check if target is at correct level within threshold - if (Math.abs(difference) <= thresholdY) { - isAtY = true; - } else { - isAtY = false; - } +// double difference = targetY - currentY; +// //Check if target is at correct level within threshold +// if (Math.abs(difference) <= thresholdY) { +// isAtY = true; +// } else { +// isAtY = false; +// } return isAtY; } diff --git a/sysProps.xml b/sysProps.xml index a0557e0fbc2f6f60a75944a8bf9afab09c99d75d..01ce729274f8ed0733072d7bee269bb43d12e904 100644 GIT binary patch delta 157 zcmZ2yu+Ct^G-gg$1``HH215qp$rqWdH{W6oV&yktFlDe}Z~{tLF}N_8Og_kAy||2% z)z|>Yb7U}LuwXC%LInn6pf*Dw%ZR}l2rYmjK-EB&C4)Iow>gkjm>kGrz4-~>8zxp~ uhERqOAlH2I2O+k}LPAs6O@RiOGMH^%E2PTE3Y27Uo_tWmdb5y-3=04Rp&*(7 delta 153 zcmZ2yu+Ct^G-h@)1``HX2A9c!EVi3(F$b~o8!}ijSTPtf7ywB(2Fu9@Ijk3#ak3h_ zF&Hrz1H~VP6ZL#;PI;d{fx?#d9% n5W-+O`Jjm9WC5XR>?S}(K!Y}~6;fqn1xo^@tTzjZ$gltaU4tJy From cf12fe31196acdbaecda98222e09bde346e32ccd Mon Sep 17 00:00:00 2001 From: jpiergal Date: Thu, 16 Feb 2017 17:38:19 -0500 Subject: [PATCH 19/69] added feeder buttons --- src/org/usfirst/frc/team708/robot/OI.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/org/usfirst/frc/team708/robot/OI.java b/src/org/usfirst/frc/team708/robot/OI.java index b6c9223..14b5df8 100644 --- a/src/org/usfirst/frc/team708/robot/OI.java +++ b/src/org/usfirst/frc/team708/robot/OI.java @@ -7,6 +7,7 @@ import org.usfirst.frc.team708.robot.commands.drivetrain.*; import org.usfirst.frc.team708.robot.commands.shooter.*; +import org.usfirst.frc.team708.robot.commands.feeder.*; import org.usfirst.frc.team708.robot.commands.led_out.*; import org.usfirst.frc.team708.robot.commands.intake_ball.*; import org.usfirst.frc.team708.robot.commands.intake_gear.*; @@ -106,10 +107,10 @@ public OI() { // sonarOverride.whenPressed(new SonarOverride()); // spinShooter.whileHeld(new SpinShooter()); -// spinShooterBack.whileActive(new SpinShooterBack()); -// spinFeeder.whenPressed(new SpinFeeder()); -// spinFeederBack.whileActive(new SpinShooterBack()); -// + spinShooterBack.whileActive(new SpinShooterBack()); + spinFeeder.whenPressed(new SpinFeeder()); + spinFeederBack.whileActive(new SpinShooterBack()); + loaderSpin.whenPressed(new LoaderSpin()); loaderOff.whenPressed(new LoaderOff()); From e7ee33ea54500762fdc4e0d769f4472691160724 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Thu, 16 Feb 2017 18:09:33 -0500 Subject: [PATCH 20/69] mod --- src/org/usfirst/frc/team708/robot/OI.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/usfirst/frc/team708/robot/OI.java b/src/org/usfirst/frc/team708/robot/OI.java index 14b5df8..2a8ac90 100644 --- a/src/org/usfirst/frc/team708/robot/OI.java +++ b/src/org/usfirst/frc/team708/robot/OI.java @@ -77,7 +77,7 @@ public class OI { * Operator Button Commands */ public static final Button spinShooter = new JoystickButton(operatorGamepad, SPIN_SHOOTER_BUTTON); - public static final Trigger spinShooterBack = new AxisUp(operatorGamepad, SPIN_SHOOTER_BACK_BUTTON); + public static final Trigger spinShooterBack = new AxisDown(operatorGamepad, SPIN_SHOOTER_BACK_BUTTON); public static final Button spinFeeder = new JoystickButton(operatorGamepad, SPIN_FEEDER_BUTTON); public static final Trigger spinFeederBack = new AxisUp(operatorGamepad, SPIN_FEEDER_BACK_BUTTON); public static final Button loaderSpin = new JoystickButton(operatorGamepad, LOADER_SPIN); From b72dbc1bad2d01ca845bbb899bc2df96f010d6a3 Mon Sep 17 00:00:00 2001 From: Sueperg Date: Thu, 16 Feb 2017 22:30:05 -0500 Subject: [PATCH 21/69] Updates to Vision @jpiergal @sueperg --- .../frc/team708/robot/AutoConstants.class | Bin 1759 -> 1766 bytes build/org/usfirst/frc/team708/robot/OI.class | Bin 3805 -> 3996 bytes .../drivetrain/DriveToShooterLocation.class | Bin 0 -> 2059 bytes .../robot/subsystems/VisionBoiler.class | Bin 8786 -> 9038 bytes .../team708/robot/subsystems/VisionGear.class | Bin 8472 -> 8240 bytes .../team708/robot/subsystems/VisionLift.class | Bin 8470 -> 8238 bytes .../frc/team708/robot/AutoConstants.java | 4 +- .../drivetrain/DriveToShooterLocation.java | 96 ++++++++++++++++++ .../robot/subsystems/VisionBoiler.java | 41 ++++++-- .../team708/robot/subsystems/VisionGear.java | 14 +-- .../team708/robot/subsystems/VisionLift.java | 14 +-- sysProps.xml | Bin 6190 -> 6190 bytes 12 files changed, 145 insertions(+), 24 deletions(-) create mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToShooterLocation.class create mode 100644 src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToShooterLocation.java diff --git a/build/org/usfirst/frc/team708/robot/AutoConstants.class b/build/org/usfirst/frc/team708/robot/AutoConstants.class index 4e47393239d82783d4983abc99c1da398bc9ccf1..93d51b430bfdc58b6a0a2fd6f3b262807c74e071 100644 GIT binary patch delta 327 zcmcc5`;1rg)W2Q(7#J8#7$UeBm>ELZ8N%2Z!Z(U0F>$g1g~4EQ1d|-A5t~DD!{#|m zHH^$Y48EJCSq?DPvobI;fK)Ltm@-H*m@^>w7C^og65krgw`CB5tJeea?U4A!K)yYa zdIuoi35o9v>yZRJfC8Rq8oZF?K^nY~_#Qx~Ffssr0wn!_UeE{g85mf# mwlgqp1pCP!NU{Ni8Gzvu03><9Y*vOqh9Dr1ks%o3^$-9~-y917 delta 352 zcmaFHd!JYI)W2Q(7#J8#7{a+2m>ELY8A90^!ZwN~F{v^Gh37CbNV<3ihdBBJBE1r`x&tT6>MJ2RKv*T&EUhxpgs9Kv-aiymPw5DLJW)yAXz2`QwB)} zGX_>T-yF!dMB-Zk`8Es)^?E?QEfU`t$hSjMZx7@173u0Xz9J(7SsP{0FC zgC~+aNP`y=-yP^wMh2jVfTSL+AMnLTeZWWm0)4Uk`t(xHKFsOgoLhIFb7udjKegEZ z<=?p<0JPzIg@-lPVkUtOJfiTZMkQu69)oY*Jg)GBM%=2ORCr2bo`t6sp3zuf;h4g4 zjT+~gR^_^Glx zu_1qC%EO2#Rt0&tM)#9+jFE>) zvm4bF%TaDoo$h{P)F~PMQPqi!6XW|lJRn=>j!kh(HSx5YH`{2UQL=6@zb8Mvd8FW> zfTD+W$aq+fjDzOjVns4I7hfGKpcGt+x4Q*==b+7a1#6wE($>UE$M0ZU0gYH_Jh@tE zoGI(D0X?inFV_|5BX5jwKY1X+o5;6Ecr$rRgtO$W5#Gc++YI~V1jb=7Vqg+(kFZIw zBf@3_cSP9u-x*<(@U95=G2z`2&XR}7{^b*z1ouP?Ou&01d>^PC^IFT%=NH&m2Hjha5i%2%bfGpS;BH0Tf*#jb3c9AT*NS2+lf@NXT^LYSpb|A(T z@MqBDP5QM()Q3n8&0_HdEGgpp5Q_-cT>v#VglHf%isr@;O@yTa%R($C+$69fL^I)L zft4Xz2)78V3eiefEz#Qkhx4+lgMiPf*Aj;LeH!JbCdZG)7*=2$DNacb$6%1Xyc<*4 zk35d@7{_>s00(gzhd8!}F^41g84uw%YA<01(~RcX1JdF!DNc*ahaYDi{u~v;8LFIx ze`^WtW?eN4E>j`a3>DEHpG9X0u@GH`sJpF%>awod73KW0l0@Z|WhG7N$mkM=2}rt3 z){i%5bSay{za~W5ARW6)s4FYWIanF9ft1a`(uk*$sH}~UjmqK(*^DfRklhU{B2k!; zJ7q~EA&Ch`+e|4O-Y3eHsOMin5?6DY8+re&9Jh6x<}9aqC;IvE8Q?uLc9&$ zK)I+e!7FN1R8UaKR*@>E%JSIMEQn|E;=a^uwS`v<_T-i?& z*(VWeOvGR64)3PV_uBXM^?TTNJLyKgh6HaUZ%S|*xjn%hraBl>yx1$u)+ zG%sQlgE)#Igc!y+MsOL2agEQ?L8kERZgGfl;Oq3#|No?q$@z0s1gASSiRDGCkZIaX z^AYO0C$J(jiTWZ+BdijlZ*>uV?DGTHc&Ei)61_8GFJrlq*-ai6AnBOwI-ZvJ^0vlo zn{F{03FDWGV~Zfo#kyg&l@tq#{ABk@F&$i TMS=fKQU8OTOgqSgB^de-vYRQi diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToShooterLocation.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToShooterLocation.class new file mode 100644 index 0000000000000000000000000000000000000000..f19c195030b6f02a9ee781e18b5d955efbd47366 GIT binary patch literal 2059 zcma)6T~ixX7=AWc5(rC5fwq=XKY(f)kkC>}EeNGaDbP?WK~(&}O>!VhlWg1%wEO{Y zy>sfFSH0H)+`~lwj2mB?D&$|gpX6hhhc+WZSIr}{C_n-g#{s(|tIEdj2ZuHt*UzLSMti)GV^6>2C{a+EN`2RCFiD6_ez$lVLfX*`zhbuvmDn; z?Ky>%r_9RS^qrJr=WQ=luqzd_T69xI$2wG=V_MZzMz&jau4LPuas*s#n%58$dn~hT z9g#JvzEuT3us!FQg{K>4tw|lT+!elbOX4MM-=S1h?t85&0Uf{Q$xSS0`%XcvSmMK# z|0bO}Fb_=wZ(%fw4Fiwyfq^IZ(7+~gQEVCb2-^le7V(LQPqAa*Gkk8~3rrgL61y5E zPLIH{@7Za)>Uw6?a}B(KHw}D+Q3ED+4ZM!421al-ioAgWiUyRZ_pooEBovlBeHWt| zR!`?Sd!#j7Q$;`ZP0dO*(#Boc${(C0E0t~}O~csfl$(-b2D+VF4YU7K5U!thpShl@ zxQ#jpN`krXcGTBC>ytG#naG}QU+x5BUh393v|QHDeVd7PG|ZjdfbEVCX~OL3-ga2t z`5}9&=6h>yT1oLq;pvH;z%Hs+O?S(5_7$Tfua>=xC52F6MaFne+rE4xpRCCz{i5?7 zhfobTxyi^4Yrah|K)`g_c9rX$bWhL-8MZ*pu?xy|Gp1*99Pr_0a{|nq*}I@sg1iu+ zWR~qf!FiF$WCG8kgx%mgp;=&#tk-hB+I7FhWx8+=Zm{gOwe@ zH3CiAkaCQtHQsAn2a~@+Oa6jT9bqmym!GK)VVrURI^`wG%jhM+04c6fV>CX++jxg3 z9f=lfo(2f)IHAIIbTyVpV~IAFZZ7dUdfGh0G!AUsC=HF%$P2_9p_yZ}qRltn;=A7B z`#W$8I3i{pvFBJ1Hofs5enf9lKStjRbSFbx1AV;V;<;n=CzHRT@4F$Ke|n5T`p@Ga z|NCk6&d&uZMVvMtl-;)mBlgJ9Mj!=A%k`uAXdaub!cvi`4Bw>uY+u4iLe{h6H uIKlfkz}p#%w=y=>LYpC~R7h8{j>~P37)ii!uVc3ZpsNX>A;sGervC+IaL&{K literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class index 3bef51d35afe562e4137ed067102f42911adac70..78391991b7d8da123b72136898cef05b440876e3 100644 GIT binary patch delta 4329 zcmZ`-33yaR68>u@nKzldT$9N`2r#GtG7!R{96}%n1XK<&C?cW^A%rB5U@~~2j3~mo zD2GqwP!v#My+Dl$)E6p1R)Wx`?`e^$Z~&Ne5deVh3^&qml7o&QuPN<`N?KIv*2Mh{iyJh!p{VOr##R; zLPSk2PkGZ`W7C#fAxR-w!J}X)cokB7;*(Ub*ecW1lJ1p^sJ1e-m1T+Fl58J_;A1}^ zoqQN91=`bDwZatXB3*sbO@f~C%B#(yp7N@=Vo7%&#>fdiIZ;m1DMg-<&u`G5jh>OO z4>UhM=^;HmPkmu#!ZY$Q(;waFc`7kL=k@XtioFt2+1n?5q{J(IwNdJoe%kKul>uHE z=#`Vba*9_5d1bH{>vY5rFK+Z=l^3hMSmTwUUPRU9soaqa^T}{2Qy8Hz(votYjFQt* z2FYj{lR_A)P@yo+Qyz~Ix}EU~r>l=Md~&8tuw zRpCf&V}romt9Xnctuhj>s-GBMI5j+bezh|(d9s^Ha&{(nZ#kI!zNAeyezM6XOU`ok zS+hJ3$`nCwXH801r^1^Ny$VZgT#cnRuEA14W?lG_aOwPTLrv-A*>%-b5gQL;hmGs7 z+{TSMY?Z=lg*6Im6>d^+6mC|y1-IH*r?6gOgThAbxJ}`9U2&7b9au8Y#+|BeR@kDj zRpBm$yA|$H*rpz~tM)tfaIb3jVTmPY+fpf01xZ!m1^sL}N6xizJ$_3LPYpLQYqm_2 z^K7id4Nf>^Rq6ChIX}aa8JRd}%LOuvo0G7OYq89h+1O!8l`V6m+LF1p)F9@h`^x6c zQ+ur~by9EReqD6FEeoW<#seD0qlgK7~e*^Loyeoj;ECDoCpa4lJR$^`A|)VyeR^X1Kv>IKcEW7>O%2?lC!uV3wDUU*=Y zjSb7|9ATl0{-9 z>%>Twijk}qBUvy;vSuiuG&Yh9rp!T(Xq7{-lNa)9@KA$fI{O0ejR-voFMm^7aY_t> zLVGZHI-3LcV94}c7#iA*Q-NI=7Q=9whqt2aVS04oA>tkA=^V~k9j(GAs1Yw7lML*J z_S^9V@CaJi5-p7}1K60hF)14ORfB?M!EEa2vgp_g7=K` zT<)ltk+tD5Grw<#Wm1q7OghcNZVjCEOWf(q$P4CFFd-+b--OgqQVhA<5$M^53TI8; zNpm$hAwKTFM_l|9?%`8(!Dn3h3-rgA7=*7e4Bub`zQbsI-yT91XFbj%(*%w05JD=F z4x`AOc?gyU@kBhEPC~j}<>^vheElc`rCbf*$=^U9fD~6I#&lvi0__(8oU55gt2weOU$&^&&^Hh6? zAJKjiz*xz{6v@X->4bVI#8uJ*%cLi6l3rLR#n>Xfai8?T0V&0s(hna>e|#l_Bv}TF zEkh(%hDv8ClOh=@At`UqG&nv^PM4GDW%p% zGK0_2;N$mD{5o@tPjmBdGYr<|0Ks0~BO2D7o%2jUK2CzHN3v|_5QHZY1b8>@GZiTK z1D@8I^fH2TI18Ro=NNL1UVw35o9OF~TA+3Pa^MFXS?XE?KsX}O*nfk zLDLVqly)HK9@gjMWd9Qg$X;}keI3%#HNg$NAClk-DA`|ce@!!an0f@;{O7Rl&TYfA zY5w!5O*h*4WNNStGp6}3pw`W3GpX@Do-r-zzmRHQW4wr3snKRpD_LRGFjd~roIRT! ztBl7vw57$ntEr~P)wxtN;%W`m%(yy_YJBxtYIW-AXv!)O&Egq9%fC*Z-gs7cpF3;>~n`ckj!XA+MlXUd2LwIV_gfv0UE3T6q(<$wAyBZ*|DjwnV0c&u!vs z1HBEAxX{s+^=d#-$wicY hKEE^N2D#9aB5Ne?W?9Q3(Elai@kkEbd`R;o|Nj9tZZQA= delta 4055 zcmZ`+31C#!6+L&7%%4ntAejtV$c_ZbKoY_tAOeX%AVoj}iYOpM7(+-1F$oF?9Tx-@ zQ1OckZWR%#B7$K;1Qpuay42!UwHwx5YOSqStwkz5_stMeD@p#j_ucp2efQsY?t4Fn zs$Lr(e(}3~&j1)In=HKJ!Mk3pzzM`rt)`<2-zpqa_>a57 ze{#fkYC7(&XgO$XY>CbkQE(~5Da0!zD7d|1iN_;}D!pn+@`zpMkz_UWP(x3zq)4hq zd}>Kki{Fx7mZWF?#RVy^^bfJX*uqr@Yn+Aj0RAdi%LWUxnucx0$YhIz0_N1Wlo zIuF)+u)%|yJTlyaRl3*+#w8=Ya;A(@I7?x)C1boYRw@#uQqEQwr!bySBoo{f(F{TZ zu2Pt&J|=mkT7G27WJ}IzAM7fQbJiqGNfRVbZwuBoObIs62+nT|@nxMi6AI(w`WKIH z|0>~KNuFY+q>~etOm*J3=D8o0X@UXHuH-zY&eJn|C05$_F~T;kLRgTpD0q3WtTEVB zS2k__qEKy{jYqM=##)X>nYLUgvjpxL!PJ(zP@63m$;CEqz>R`p zXQQ3&gnJ}A*CsCPGdo4*^t5Dd3SPJ65~*c2WPy#Vag8k@>=2AF!*?b03E6Tfc34tp z%R;HQ@vw%s$d(3awDAa53cQnotpziJW?@q58UoZJMvW z+=y{YTUtU*Z3W}&Tib$7we;UCmpKQ#4RM>W*C|QL=)H<*kQQmRgm17E&)IT0_S$lV zEOX{2RZPJ7l&Gcg3A8R)xKQM^tP7zrn*tZ&S6)sWI1oUvNB1))=*nbsC7x>(zf~~O@f5} z)z!rpIp5i1-=QyoT2;*(ews+ld?}!#7Nv_9;HM#NQ?;a(4SNoTjwFBbW0e1p31TvY46+ zOo@?vO(V%^Be`LeKBcj?ombPc!_gkn*^D5gjU=g!B(IGmwT&dZjU>U1B*%>;&5b0} zjU?HPB;SoB<&7lkjU@4nyeAw}NPlBs1sKU9Fp_m(Bul|aR)di&2qRe&MzSo7WMvr1 z;xLl+K?xns{8bk}4nEV(|%WvSO3MqAt``@1J8`gm{A{ZXnV;&D>Vh2Xd40K|U zZzNkW%b5|33hc*OvvlBojGna@V*>jy7TAl52r6l=?7-Q(xt3^($}&dOjo+=EDB@0!L!5D#2aA^Hk%<>j zfS1_!Dtli>FqoI@D}y(TdB zK6l=Wq(FQG>D%Eyy%Q6hxXiwn>U#uuuL6g;_&Z3&yU4|RT>1l)<3pT*k1+~IFb1D6 z%ul;QNad_f=3ZZ6QnwJ25Pu9saVbY(X%J5`5gNpX%mS%$c4qdgo#;n(CniTwr7>t+ zcie}!DD(Mb-+2#G15~Qm$06JC^of=q=QJ40qwMar8Cxj^a+DuaIms938NtASALnw6 zGdycZyiuC6(hJXF$9DGZK}kyJ0r*u(m4Oe!%i+~J{GqJEaFymZx(kcYoBEf`^M8@Vjn$HkTO|i~NG=|bd^{orI3%ax4e5&`QiLyf z#U{uAv1Op7ONnGlIdA46v<~e`=P*cFEQ>C(Cz@H^QXi6zAv5k<)TEx4nUYPKaLviLD@78SSOH7M!6)Oc#%T!F2X_ziGT@m^)vTMUH{Qibl#>K}roTt2QI3r&{lE#6ADrNwMeEe(c zCK=v+o}E8cd6$j^hSGo}S&R&6LcTPkue5Y62@*Y8IZ4RtmJ0xylt@{q!WsDl( z-0m4!|AQI%6`tb^-K;V*7f8_R*g-?|go~#0mLHt_JP)bp|0n$JxP z`}R|W{UVQdjr!OBpHFp`e$rXg*Io3r`4qlhily^6Cww_hUaw)wis;N&NSu?}F*;Gr7aSpXIqs^sOveu}VP~{28 z+4JZzXgtoREjij@UjjmotZJ~NPneHltQyKqGey~5zx88+3 z+0C=!2@IBY{sY1oCBl=i0~gC)grpPA@+7X5eOM#=u~DAF-SRXZk^|i`wXLfXUp4Gt_zeSObw^F^ec)jGS=0?+fI*`L%}$O5MWi zQ+3XwXr{>*GpPgZ;d9wM+S9i30PZr-p^oR%qMiO&r!hE#BpX|+1Bv=f*6(YmC8 z&7Nx;xK07JQ4Icy4lHv%D;y&`osvH5Okx5&T?g}jmEYnGQY@374{x%R^!Tbfaa>V* z3%_H!^d2cO_lO+BL<_(7`Erhee+kEVoW)uAgM~j@_!Gp!;iGW7GU@Vdvmt+$`IJ7m fWS-n8L3g6uBpJ8L%`AcpcJPQ54wfwGE!qDCs!J~+ diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionGear.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionGear.class index 060c7d0d5f91ea8bf48d5687471eaf23cd2bca3f..8d671d2625439e0b4afd87975367fb0d829712c7 100644 GIT binary patch delta 3405 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 Dbz9?4 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionLift.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionLift.class index a616180e47303ca71c96de42ba2a6db1169263ba..d73989a52c885fb0f888f5d932b3dda2cb127cc2 100644 GIT binary patch delta 3485 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 delta 3560 zcmZ`*3wTu35&ma)v-f7XNp_bd5Aw9gBO5{p1PHHWLlBb!1`!D$AWO2wkdTdeNf2BC zYe2NM+*TnKw1|OLg<{y4LZP(wB~|*67OQRPL;JSXJ}sr%nR9m&KE9HV`_G&?XXebz z`OjI71|FXmIrrhoGXP3xmxhZv-f-bw{6xc>&cID)*$yP43vUVhRN!YCe(r(`mt^n@ zfnN&zO5oQ5ZwtI5@Ed{O3j9vs_X2+q_@ls|1l~=IF#g#YC{bIfz5XH-?+Lsw@Ks}#P|e`r;o{aj7~S|G*+i^I*r$9f=>B5_Q(pqj-5Jo z>3CSjZk-BrY?jR?a$Z#EqDfRFFj=5jqbV+$N+pRjjiw9C5GZ9BOEaATt9g)wX9>)f z7;{`Sm&!CM*C^0$v#qm}ufHzg4N9s|HW#0=M)S-nZLRZJsw5Pc?>lqMb6QGd6S@uD zhb;!SVhh2&A=nixY7VwE6xFQX5UT4i@GSZaJb-NmcFM9{0uKx97I;M9QGrhid`jRk zeA>Vs0aM^JV*9MXocVOjQOR#3w96F(I*d@}wD)N+%T;8&pjnH?SQ$G+JoTB3evvE(^9bggOkm zg=!2ugdQ?q)OY7Danr3S8ZC9>oI$ryE!Rvd4BU^1K`YT`u1=gAT7^E1?l5RItugS7 zq_WnaJ87MPL+B>Bs)Fr#vFI4UagBlot*1Ida&>!NMMvKJ#`cb2OI=8Ma-92I+1b_> zYPrfz^%OEcOl&IIBlF()`n+Y~p}3p54RjYZXmqzhjW}b_1{^o2iJHy*uH2H12DMOF zqY8ssxodQfK$}3jKnG_|odR8SuSS~;>ZZ;8@3|I}Hz`7(|pUbDAL7m7cdq!FiTmpfjgii6IMy)tde|GEWJWgHRe-SlBuC2AGMOq zU?rKvN-~d?WGXAkY*vy94Gw7&QY!=VT1lq1lFV);nczw?$CYH7E6Ge(lF6dxcC<*g7dhe6)_*tps)OpEaoQ{utsBTi0=XiQlFAlND z=T$x|WGAmbC5n8%4~u1=iD^?aMd2lWcl}dH62(K0J&ozSq}tq^mgQI=3wzUU&?}|4 zat1G_g|p+8a|y9}ZB!WR!7;NYJwuCH#hT&t34x(nYGSpF;a0n))*9(|nzWUBoF+Y< zC<8Tf0yXh1FQ!kO9^cY~(xGNAzqZ-sc1Nt){E|wu%|J#5|G2Hn$mKKJoRK-i9x$gY z%DIpe&zvjNV7r1GyPOw4)z*2Th@~8Eg7oxxRxEN`H>iG?#z=_8BqsM@%(;xaCd6|} zd2@1x?}m%RfZyr_eyZcu@v>M5(Y~xmML3C563kpOIxQl%%JOVs&+v6Tzrt^XAp@TU*pF~GWohy0|yxn#<5bb zjkSeiZM{ycm*uBlf_)>_kb5%IrVTe_8@q15j_WsL4f$4#7pF6em=W)0T8vPS5c9xd zgwW0bn@>pa?V%Ub&8H|N=<_b|58&28EUoq4#@aHa-Okj=9mMilZ!K#%N?XAi-%z&6 zds(2gRjf@^+8wOwtfpA%dRE<*TF0uj zdp&C*af!$)B;`^Z(SAj{EhlOJbZ&QGeXji0du z_G|DL4B)N-H1tFfvedhKX_kF%mNkep97La}Sp#T1iw%Qlx+SX@h5o`5XpZtr#&Tnn zA14{}*Rn2(k;=$}Fb{k(!G(Da@)IdKJF(cvCU49n{xZW~i?nOxA%0gJ4CbPoHDg=ZstuxT5bZv+hMRbp($f@C z|2N>fc$K-4&c8*kG1=u(H^eV7Yv=Jj?w4??5F@T2ovz?!4d3^Avo3@GC49s_b`3w! z@Iwu+gEU;Y45uxfL;i@JZ1^!PXX%BFmeKumyEBotQ`$qc0~s`eC-`8=fSr;knNt1- D=j__D diff --git a/src/org/usfirst/frc/team708/robot/AutoConstants.java b/src/org/usfirst/frc/team708/robot/AutoConstants.java index cb63dc5..cf4e8f7 100644 --- a/src/org/usfirst/frc/team708/robot/AutoConstants.java +++ b/src/org/usfirst/frc/team708/robot/AutoConstants.java @@ -35,8 +35,8 @@ public final class AutoConstants { // Boiler Constants (Field) public static final int BOILER_TARGET_HEIGHT = 10; public static final int BOILER_TARGET_WIDTH = 14; - public static final int DISTANCE_TO_BOILER_LOCATION1 = 156; // A distance to stop at and shoot for high goal in inches (13 ft) - public static final double DISTANCE_BOILER_LOCATION2 = 0; // A distance to stop at and shoot for high goal in inches + public static final double DISTANCE_TO_BOILER_LOCATION1 = 0; // A distance to stop at and shoot for high goal in inches + public static final double DISTANCE_TO_BOILER_LOCATION2 = 156; // A distance to stop at and shoot for high goal in inches (13') // Gear Constants (Game piece) public static final double DISTANCE_TO_GEAR = 60; diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToShooterLocation.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToShooterLocation.java new file mode 100644 index 0000000..b4ac996 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToShooterLocation.java @@ -0,0 +1,96 @@ +package org.usfirst.frc.team708.robot.commands.drivetrain; + +import org.usfirst.frc.team708.robot.AutoConstants; +import org.usfirst.frc.team708.robot.Robot; +import edu.wpi.first.wpilibj.command.Command; + + + +/** + * DriveToShooterLocation + * this command will utilize the vision data to drive the robot to the closest shooting location :P + */ +public class DriveToShooterLocation extends Command { + + private double moveSpeed; + private double rotate; + private int moveDirection; + /** + * Constructor + * @param targetDistance - the distance to stop in front of the target + */ + + public DriveToShooterLocation() { + // Use requires() here to declare subsystem dependencies + requires(Robot.drivetrain); + requires(Robot.visionBoiler); + } + + // Called just before this Command runs the first time + protected void initialize() { + Robot.visionBoiler.putIsCentered(false); + Robot.visionBoiler.putHasTarget(false); + Robot.visionBoiler.putAtDistance(false); + Robot.visionBoiler.putCounter(0); + Robot.visionBoiler.putCurrentCenter(0); + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + if(Robot.visionBoiler.isCentered()) { + + if(Robot.visionBoiler.getClosestLocation() == AutoConstants.DISTANCE_TO_BOILER_LOCATION1) { + moveDirection = 1; + } + else { + moveDirection = -1; + } + Robot.visionBoiler.processData(); + rotate = Robot.visionBoiler.getRotate(); + moveSpeed = moveDirection*AutoConstants.DRIVE_MOVE_MAX; + + + Robot.drivetrain.haloDrive(moveSpeed, rotate, false); + + } + else { + + Robot.visionBoiler.processData(); + rotate = Robot.visionBoiler.getRotate(); + moveSpeed = Robot.visionBoiler.getMove(); + + + Robot.drivetrain.haloDrive(moveSpeed, rotate, false); + } + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + if (Robot.visionBoiler.getCounter() >= AutoConstants.SWEEP3_MAX){ + + return true; + } + //Check if the sonar distance is less then the target Distance, end +// if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.wasCentered()){ + if (Robot.visionBoiler.isAtDistance() && Robot.visionBoiler.isCentered()){ + return true; + } +// else if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.isHasTarget()) { + else { + return false; + } + + } + + // Called once after isFinished returns true + protected void end() { + Robot.drivetrain.stop(); + Robot.visionBoiler.putCounter(0); + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + end(); + } +} diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java index 6e990de..1f8bc0f 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java @@ -25,10 +25,10 @@ public class VisionBoiler extends Subsystem { // Camera Variables - private double fovDegrees = AutoConstants.AXIS_FOV_DEGREES; // Field of View of the Camera + private double fovDegrees = AutoConstants.USB_FOV_DEGREES; // Field of View of the Camera private double pipelineSize; // Number of Contours in the Pipline- 0 = target not in view - private int imageWidth = AutoConstants.AXIS_IMG_WIDTH; // Width of image - private int imageHeight = AutoConstants.AXIS_IMG_HEIGHT; // Height of image + private int imageWidth = AutoConstants.USB_IMG_WIDTH; // Width of image + private int imageHeight = AutoConstants.USB_IMG_HEIGHT; // Height of image // Image OpenCV Image Processing Variables private VisionThread visionThread; // vision processing thread - processes grip code @@ -59,7 +59,7 @@ public class VisionBoiler extends Subsystem { private int TargetWidth = AutoConstants.BOILER_TARGET_WIDTH; //Target width private double trueCenter = imageWidth/2; // horizontal value of the center of the target -//VIET NEED TO SETUP MULTIPLE BOILER TARGET DISTANCES + private double distanceToStop = AutoConstants.DISTANCE_TO_LIFT_TARGET; // distance to stop at in front of lift target private double currentCenter = 0.0; // horizontal value of where robot is looking private double currentDistance = 0.0; // distance robot is from the target @@ -91,8 +91,8 @@ public VisionBoiler() { // define the Cameras: usbCamera=CameraServer.getInstance().startAutomaticCapture("cam0", 0); - axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); - axisCamera.setResolution(imageWidth, imageHeight); +// axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); +// axisCamera.setResolution(imageWidth, imageHeight); // define the output stream on the smart dashboard @@ -100,7 +100,7 @@ public VisionBoiler() { // Vision thread which processes the image contours - visionThread = new VisionThread(axisCamera, new GripPipelineBoiler(), pipeline -> { + visionThread = new VisionThread(usbCamera, new GripPipelineBoiler(), pipeline -> { pipelineSize = pipeline.filterContoursOutput().size(); // if the grip pipeline filter "filterContoursOutput" sees the target @@ -185,7 +185,19 @@ public VisionBoiler() { visionThread.start(); } - + /* + * GetClosestLocation + * Determine which shooting location is closer to the robot + */ + public double getClosestLocation() { + if(Robot.drivetrain.getSonarDistance() >= AutoConstants.DISTANCE_TO_BOILER_LOCATION2/2) { + return AutoConstants.DISTANCE_TO_BOILER_LOCATION2; + } + else { + return AutoConstants.DISTANCE_TO_BOILER_LOCATION1; + } + } + /* * ProcessData * Method to interpret the camera data received above @@ -342,6 +354,18 @@ public double getMove() { * isAtDistance * Method to determine whether the robot is at the distance from the target based on the threshold value */ + + public boolean isAtDistance() { + double difference = getClosestLocation() - Robot.drivetrain.getSonarDistance(); + //Check if target is at correct level within threshold + if (Math.abs(difference) <= thresholdDistance) { + isAtDistance = true; + } else { + isAtDistance = false; + } + return isAtDistance; + } + //VIET - UPDATE THIS METHOD TO RETURN WHETHER IT IS AT ANY OF THE SHOOTING DISTANCES FROM THE BOILER // public boolean isAtDistance() { // double difference = distanceToStop - currentDistance; @@ -353,6 +377,7 @@ public double getMove() { // } // return isAtDistance; // } + /* * isAtHeight diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionGear.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionGear.java index 3cc55e3..4867803 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionGear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionGear.java @@ -25,10 +25,10 @@ public class VisionGear extends Subsystem { // Camera Variables - private double fovDegrees = AutoConstants.AXIS_FOV_DEGREES; // Field of View of the Camera + private double fovDegrees = AutoConstants.USB_FOV_DEGREES; // Field of View of the Camera private double pipelineSize; // Number of Contours in the Pipline- 0 = target not in view - private int imageWidth = AutoConstants.AXIS_IMG_WIDTH; // Width of image - private int imageHeight = AutoConstants.AXIS_IMG_HEIGHT; // Height of image + private int imageWidth = AutoConstants.USB_IMG_WIDTH; // Width of image + private int imageHeight = AutoConstants.USB_IMG_HEIGHT; // Height of image // Image OpenCV Image Processing Variables private VisionThread visionThread; // vision processing thread - processes grip code @@ -89,9 +89,9 @@ public VisionGear() { // define the Cameras: - usbCamera=CameraServer.getInstance().startAutomaticCapture("cam0", 0); - axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); - axisCamera.setResolution(imageWidth, imageHeight); + usbCamera=CameraServer.getInstance().startAutomaticCapture("cam3", 0); +// axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); +// axisCamera.setResolution(imageWidth, imageHeight); // define the output stream on the smart dashboard @@ -99,7 +99,7 @@ public VisionGear() { // Vision thread which processes the image contours - visionThread = new VisionThread(axisCamera, new GripPipelineGear(), pipeline -> { + visionThread = new VisionThread(usbCamera, new GripPipelineGear(), pipeline -> { pipelineSize = pipeline.filterContoursOutput().size(); // if the grip pipeline filter "filterContoursOutput" sees the target diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java index d82a1a2..bda4083 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java @@ -25,10 +25,10 @@ public class VisionLift extends Subsystem { // Camera Variables - private double fovDegrees = AutoConstants.AXIS_FOV_DEGREES; // Field of View of the Camera + private double fovDegrees = AutoConstants.USB_FOV_DEGREES; // Field of View of the Camera private double pipelineSize; // Number of Contours in the Pipline- 0 = target not in view - private int imageWidth = AutoConstants.AXIS_IMG_WIDTH; // Width of image - private int imageHeight = AutoConstants.AXIS_IMG_HEIGHT; // Height of image + private int imageWidth = AutoConstants.USB_IMG_WIDTH; // Width of image + private int imageHeight = AutoConstants.USB_IMG_HEIGHT; // Height of image // Image OpenCV Image Processing Variables private VisionThread visionThread; // vision processing thread - processes grip code @@ -88,9 +88,9 @@ public VisionLift() { // define the Cameras: - usbCamera=CameraServer.getInstance().startAutomaticCapture("cam0", 0); - axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); - axisCamera.setResolution(imageWidth, imageHeight); + usbCamera=CameraServer.getInstance().startAutomaticCapture("cam1", 0); +// axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); +// axisCamera.setResolution(imageWidth, imageHeight); // define the output stream on the smart dashboard @@ -98,7 +98,7 @@ public VisionLift() { // Vision thread which processes the image contours - visionThread = new VisionThread(axisCamera, new GripPipelineLift(), pipeline -> { + visionThread = new VisionThread(usbCamera, new GripPipelineLift(), pipeline -> { pipelineSize = pipeline.filterContoursOutput().size(); // if the grip pipeline filter "filterContoursOutput" sees the target diff --git a/sysProps.xml b/sysProps.xml index 01ce729274f8ed0733072d7bee269bb43d12e904..a1f07e33a745f86e5787f4c03fffe2bc6c877d56 100644 GIT binary patch delta 156 zcmZ2yu+Ct^G-h@)1``HX2A9c!EVi3(F$b~o8!}ijSTPtf7ywB(2Fu9@IjlFAasFd5 zbz?ARaAq)OFlDd+N*XXI0BKjCLJ$uo;sP|y8EAkRP{tUjT>)sW_2wshZEgURN#LaL0cU`e2q^=2Uv85RKkA|O-% delta 160 zcmWNJu?@m76hx220n&hErKCth?>I3DaTQDk0KqCOV#F3iNS+`g&{9)UFahH9i~sIU zcY_+#;})kqDs(7N`e$UrD?TPm4TBat1}*le{5ZGalKzD0p=fl_Xh;e Date: Thu, 16 Feb 2017 22:32:51 -0500 Subject: [PATCH 22/69] merge shooter code --- .../usfirst/frc/team708/robot/Constants.class | Bin 2463 -> 2468 bytes build/org/usfirst/frc/team708/robot/OI.class | Bin 3805 -> 4072 bytes .../robot/commands/shooter/ManualShoot.class | Bin 1356 -> 1356 bytes .../robot/commands/shooter/SpinShooter.class | Bin 1158 -> 1147 bytes .../team708/robot/subsystems/Shooter.class | Bin 3042 -> 3041 bytes .../usfirst/frc/team708/robot/Constants.java | 6 +++--- src/org/usfirst/frc/team708/robot/OI.java | 6 ++++++ .../robot/commands/shooter/SpinShooter.java | 2 +- sysProps.xml | Bin 6190 -> 6190 bytes 9 files changed, 10 insertions(+), 4 deletions(-) diff --git a/build/org/usfirst/frc/team708/robot/Constants.class b/build/org/usfirst/frc/team708/robot/Constants.class index 270e5cf42417ed5cc990aed007814fde8e33354d..48640e181a88a8703221859bebba649dc2c0d854 100644 GIT binary patch delta 322 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 literal 3805 zcmb_f*>V#{6g^`b#tefo5cZuIFk8kr>?S0#ElUF7acr3_B+6JC+hb&nGaA{DeTD2B zA^SoSvWKK%s-Oy0rShDId_le-Uy!F%PWQ<6P$`Uo=%H_)zTM~EzTNls==XoF{t93l zepWH8VJ}8z;BK5$aY{oKMl?K%$Hd6vDxT0#9jKpF@sx&{0eD))Ga70F@T`jGG|UkT zpT`Sg;b|3TG|UgwFRFM+!=eDZtl||7O9LaXin*_;cwNKFK>db_H#MvYz*{Qb*044J zXH~qTp*{fTRJ^NUQvlvm@xBHH9|*P&Me~u0k5zo4p%I^|_)NogoEPJti{=Z_e5vAs zhCMj1;wuHSvYs<+dogR!9ICu4ZM*_{%@6%)g9a(TE?L2Y<;t9e+mC==Y$i|!5uS~A+2ZthN{Ou96$t0U2# z?uwgcD%v?dy6D=`NXvn7)m*7+i$+^R^A}z-7@l5Zc0@ZPsc1SLX^%xa73kvwrrD}s z1}(RyYLAC5B&BF?2Ce4U2(3LXj@i?NdA_!Haaq_-(!j9RNm&hwvm$b7*V`RuN zg41Fz=kyF1Jw@MVyp3ilc}lY;)|o|L!TK94OnFXUpY3sF**O7OA04aTa7aN_i<`CSQPRoV z?Zv?!+e=wJIgZRtx*02X$nqS4%Y#*Zzf(}K<^~yJCK$Ksy_sCul-A`Iy^P)F2x8St z+%;egTM9N#J70i))ikR=h130dr`8IvxC0FsCj_*ad9=Zj_ z|F}j*9X(=`d#31HftQ$xV~7MOCy|a`!LVzJ3_;Eq$?-hW@q^eu>zDXy913`t+ zaY7KRo1CCiJe&tD=1C4e>bM8{bleLTq0N(*@BQwng70Kb1Z7;os>#im31Q%(g2u_` z$rs!YDty6+oOB8zg>(2xM+V1rWN}P~E%vqTW{H9#TPq5jk+brBhS@V)DOjdE0X`@kDEroY+u*gNNXnPbDtFYJPp~R$|blD5q`%t zvtNN0;?@w361RnLj5r>`3F7@Be1JF^!ZF%87{X$Hdk71AW(W)Zju001?+;5I(~BeC%X=SjMH~yC5Ztu#|keq~y~hC5w@iEUi-V zDoe@REF~|rlq{T5vi3>IG9)EyiIl7eQZlhAD|jY+d)ejzWi=|<14^tdl3;ZSYY6U?pss|q1nVSNUqU^>1_?Hnu!&%^q~0Gmr+1*+~1fMl1oH>A_iWfU>##6(AK~N11wm!1}1ivb!8K~%F4jR?y^#qq&y5s z6Oi&WBnk}j1SATa;Sop^G)PBz27Aipn=WCC2)zOk`gY7?yNrJ*mtz65y^h)5$e>4< x1%*G4Mz)>E`Z_Knmm`#5&gZ^UH{EZ`I^~qO(;=f~|_+9`2 diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class b/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class index 77b083fa2f0c3dbad5628423a708a85e0ac3e5af..aa6ecc5f80fdeba58ffdd7815355c62ad6794f8c 100644 GIT binary patch delta 13 UcmX@Zb%tw#Hq+*gjk@xz03_!GrvLx| delta 13 UcmX@Zb%tw#Hq(}Xjk@xz03+1|Z~y=R diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class b/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class index 3b3bdb70da646c1f13b169bff0f1b7579f8f30ba..071feb6dd0bd108273ae4cd0bd30f647b57b73ba 100644 GIT binary patch delta 80 zcmZqU{LL{znQ3#!MpZ9nJ7)%F21W)32Ek1XOnloISb>xX1KTzRj*UP;CI$f@$p=)z Zz@Wgu&Y%S3t1t)xc{~tJlXozm0{~5J3*i6& delta 91 zcmey((Z)GJnQ2SFMpZ9nPd^4`21W)328m4!OnloISb>xX1KTzR4j_XcNNohlF);`L hNg)OnAgRE>&Y%S3D>H~Qs4xfuMR*|kC$D8b2LSZ;4TAsx diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class b/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class index d4751f64ab4509b78a1a0d1a34032b5e56143986..66f43c4fcd3145b9fd3a664137d3e2b1768d7c41 100644 GIT binary patch delta 61 zcmaDP{!n~FCp#x611|$30|Ue2$&=X2m;?+ab8}=!S2Nf#Oki+en8V=6u!zA42pJf7 MAj&rPafC1f0Jz2s-T(jq delta 62 zcmaDT{z!a7Cp#w>11|$30|Ud7$&=X2m<1UcCUbFQNY^mfF-&A|V3^C`$gr5f2?!Y& Ncp&OF_i}_V0|3iN4K)A& diff --git a/src/org/usfirst/frc/team708/robot/Constants.java b/src/org/usfirst/frc/team708/robot/Constants.java index b1a7c49..afddbf0 100644 --- a/src/org/usfirst/frc/team708/robot/Constants.java +++ b/src/org/usfirst/frc/team708/robot/Constants.java @@ -30,10 +30,10 @@ public final class Constants { public static final double SHOOTER_MOTOR_OFF = 0.0; public static final double SHOOTER_MOTOR_BACKWARD = -1.0; - public static final double SHOOTER_MOTOR_SPEED_LOW = 5200; - public static final double SHOOTER_MOTOR_SPEED_HIGH = 5200; + public static final double SHOOTER_MOTOR_SPEED_LOW = 5000; + public static final double SHOOTER_MOTOR_SPEED_HIGH = 5000; - public static final int SHOOTER_ENCODER_PULSES = 128; + public static final int SHOOTER_ENCODER_PULSES = 48; public static final double SHOOTER_P = 0.06; public static final double SHOOTER_I = 0.001; diff --git a/src/org/usfirst/frc/team708/robot/OI.java b/src/org/usfirst/frc/team708/robot/OI.java index 2a8ac90..2f56ac7 100644 --- a/src/org/usfirst/frc/team708/robot/OI.java +++ b/src/org/usfirst/frc/team708/robot/OI.java @@ -43,6 +43,9 @@ public class OI { private static final int INTAKE_GEAR_DOWN = Gamepad.button_A; private static final int INTAKE_GEAR_UP = Gamepad.button_B; + private static final int INTAKE_GEAR_ADJUST = Gamepad.dpadAxis; + + public static final int LED_BUTTON = Gamepad.button_X; @@ -62,6 +65,9 @@ public class OI { private static final int LOADER_STOP = Gamepad.button_X; private static final int LOADER_SPIN = Gamepad.button_Y; + private static final int VISION__TRIGGER = Gamepad.button_Start; + + /* * Driver Button Commands */ diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java index c8d12bf..e03a08e 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java @@ -32,7 +32,7 @@ protected void execute() { Robot.shooter.setFgain(Constants.SHOOTER_F); // Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_HIGH); Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_SPEED_HIGH); - Robot.shooter.manualSpeed(1.0); +// Robot.shooter.manualSpeed(1.0); } // Make this return true when this Command no longer needs to run execute() diff --git a/sysProps.xml b/sysProps.xml index 01ce729274f8ed0733072d7bee269bb43d12e904..fd3b076cb84a04703b42aa670e9ca5748d07caf7 100644 GIT binary patch delta 81 zcmZ2yu+CsZ37@Gkg8_pvgC!6f0a*qN3Jk6c=0LVNgA;=(gBybdP{f77guxl81|((< a5}6#xV!inZ-w|e33kEX=lg(>|8d(8DNDlk} delta 81 zcmZ2yu+CsZ37@Geg8_pJgCm0xg9VUfz@Wfj%wPzF20#&KAhZCAxG Date: Thu, 16 Feb 2017 22:37:30 -0500 Subject: [PATCH 23/69] reverse sensor --- src/org/usfirst/frc/team708/robot/subsystems/Shooter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java index bb0a14c..4fc0694 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java @@ -51,7 +51,7 @@ public Shooter() { shooterSlave.set(shooter.getDeviceID()); shooter.enable(); - shooter.reverseSensor(false); + shooter.reverseSensor(true); shooter.setFeedbackDevice(FeedbackDevice.QuadEncoder); shooter.changeControlMode(TalonControlMode.PercentVbus); From b30654cc692d6517018773de704eaa85d256200f Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sat, 18 Feb 2017 00:23:05 -0500 Subject: [PATCH 24/69] gyro is back --- .../usfirst/frc/team708/robot/Constants.class | Bin 2468 -> 2565 bytes build/org/usfirst/frc/team708/robot/OI.class | Bin 4072 -> 4245 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 5656 -> 6107 bytes .../commands/autonomous/DriveInSquare.class | Bin 1766 -> 1495 bytes .../robot/commands/autonomous/turn.class | Bin 0 -> 845 bytes .../robot/commands/shooter/ManualShoot.class | Bin 1356 -> 1367 bytes .../robot/commands/shooter/SpinShooter.class | Bin 1147 -> 1156 bytes .../team708/robot/subsystems/Drivetrain.class | Bin 6918 -> 6795 bytes .../frc/team708/robot/subsystems/Feeder.class | Bin 1078 -> 906 bytes .../frc/team708/robot/subsystems/LED.class | Bin 1961 -> 1961 bytes .../team708/robot/subsystems/Shooter.class | Bin 3041 -> 3037 bytes .../robot/subsystems/VisionBoiler.class | Bin 9038 -> 8927 bytes .../team708/robot/subsystems/VisionGear.class | Bin 8240 -> 8129 bytes .../team708/robot/subsystems/VisionLift.class | Bin 8238 -> 8127 bytes .../usfirst/frc/team708/robot/Constants.java | 18 ++-- src/org/usfirst/frc/team708/robot/OI.java | 15 +++- src/org/usfirst/frc/team708/robot/Robot.java | 45 +++++----- .../commands/autonomous/DriveInSquare.java | 11 +-- .../robot/commands/autonomous/turn.java | 27 ++++++ .../robot/commands/shooter/SpinShooter.java | 5 +- .../team708/robot/subsystems/Drivetrain.java | 85 ++++++++++-------- .../frc/team708/robot/subsystems/Feeder.java | 2 +- .../frc/team708/robot/subsystems/LED.java | 1 - .../frc/team708/robot/subsystems/Shooter.java | 12 +-- .../robot/subsystems/VisionBoiler.java | 2 +- .../team708/robot/subsystems/VisionGear.java | 2 +- .../team708/robot/subsystems/VisionLift.java | 2 +- sysProps.xml | Bin 6190 -> 6190 bytes 28 files changed, 138 insertions(+), 89 deletions(-) create mode 100644 build/org/usfirst/frc/team708/robot/commands/autonomous/turn.class create mode 100644 src/org/usfirst/frc/team708/robot/commands/autonomous/turn.java diff --git a/build/org/usfirst/frc/team708/robot/Constants.class b/build/org/usfirst/frc/team708/robot/Constants.class index 48640e181a88a8703221859bebba649dc2c0d854..ad1b683e881e51aff6df5a6e1762d03ef2acbe74 100644 GIT binary patch delta 841 zcmZY8OD_Xa6bJBghq(iD(y0H}*)NUqH}w?loaPl|A83L0 z8t3p>B$-W_8EG{B?EG6BiN)pfcg?=mTJ(y|(tKPxtov4SHyWnot-vfu44LD-4pcg?OJ0J@8Gsocs z4LSoR;UQKZhE3)aoMz6zW6bJ>tZ^1hAedxU157ci1E$%)Gw>`MNPV$6W;I~ewLix^ zPkxIQSfD0aWL|=onN>aS@`}r=%pUZw(Yo`+)PNhzNy__alLcF7*k<0rRzbKqSod*D lnoB0qn;uBqm#)nLR*9JK*EqylRr;;d5gkKJ- delta 759 zcmZ9~J5Rz;6bJBg+q6U?F3Lbc+zg3}qNwby{a=W9LWj1$|2;iDZEmsSuHE_a{rE&gKDxG(N*6Y|w9!?`SrMXa zy^3I=S5QkjVi=ilDwog$57p#Hv9rp;s2)h25B~N2A*dF$uC}DmIE#}J-@`fjP)$D9B7q!ja(+>SRf15o4nEFJhKh;o3z#V zV{*W4W;tMic?aHQ-lK@X!`K-(A7U5u;3{y{x+^3~wQX^PvtA2TI>vo#y?{>W6cTh+ Ht2+M$j1^8! diff --git a/build/org/usfirst/frc/team708/robot/OI.class b/build/org/usfirst/frc/team708/robot/OI.class index b1703c129df17ff02159de5daf640d503deecabd..cde317625ba56aeda191c80a563848875bd0d238 100644 GIT binary patch literal 4245 zcmb_g-FqBW8UIa^cGAf-gqA`JQa)@;D9|ajLYu_uCcDW_yUE1tCba@Clif)&$z~_a z&L)lG2j2z6FBHEO6+b{hNwk3upj`Pp-gx7!7jWxe;Ej*JbIvB2K0c&rF&Fcm-+4dJ zdCz&@v-#V9F1!QaDBjian1M7N--aGMq2oydEqL6(Q#dDPp4RbxNjv?=hM zj;|SLSK#Y9zG2{Mq4-UFODI0CRWFtAsFAL{s# zfm;;#v5ub@*r#IosWADXj-MImRP3MY_=SNx6nII;FAW@0;8!|+ZQyPNexu`MgUgi5 zdqu}@4QTkCu=c9>yr$##I{sjw8?WnFGH?RRV*Zah{$wDfzmCI35%xXuhDq$Ys*S-qAwAVVpbj!}d@ypLLups^LJ+ zE7z@sIp0!=<*4G1Pg~>lC}L`?UP+nI?dy6@J<@R7B@_#xKRM}z)NFX{bt@I&v0+F+ zX($oU=p3V7_md75DBoQ1c>Ih>2AnES*K73MR-5yy`Kcg?ypSg#fqLE2428u^zvq<& zyL}xrxRt;qCr=q}t^&@)1UHu!%UOSNN`o$jxnO~|#AwxV`#Mm;ZJ+mReo$>JR>RgF zzv@RP7w_2`QDosU^ z7R#1LswmD>(XQ%v!^E4oU}F0JVQ_TL#EdZ1_aP$_88b0;1u>2DtgbFnoLer^!~`Za z^nS>gcms6ACf*X;R!1R)FVsuAW{>N(C*%(_G&f2wG^4tehMPBb%Fy&Q;L$6j7eYmC57N!n- zklz8X>VDkbcJ!Sm>WlVB!BW2`u!_B(R9*vk5Hp?@M6e z|NaC%MSl+@aGv;c2`uav6Ij@LFo9j-@dPeWpB-K9AA6OgY<`lm(@4q&Eh+n}q^wht z@^nkeJ|Zc*fuyYGlCmyK%GxR^%cG>MRFbmXNXnuiDeu0dJo%(e%po5f{C)w@3TWmC zc>mxEnwHQUqvgyBww%Y-CFn6)3ARaK#AqWhCDtozN@Da(mF~(kknta>)>^{_J{c$!cKmt`O~w?Uy%WS5YF+p-9tEr zkY~QebGpD>pJm@zlsok#9>(+dB3{Io@hZN83wQ*7#iRHK9>aS$M-E`BUBs6t!-^;L*_?HcBp9jM3OXaH+cDX@p~ix z0k9X>vgqt%$vMK3lfobzrtkrNXINqunXYpz4KJ`9yu=c)%xnKH?!(`Cz5mH8{4b{R U-*`~d;cB~3qV-2;w+WB_7r~%}aR2}S delta 1744 zcmY+E*>eq*pivcvX{lDMF7RAU`ROVJEp;h07VMm3J(8F}-p!U>JIbw8(YQlremDTU`XW>|PZ;j~7j zB)*83B=Kd1S2Si@_p1tLH0D}(P2qK4V}YeW;SG(2w&j>)zA2Bl6wYcau`zEeyrWTV z;a!FIG?rO-U*Q9dl@>l!IHyr-;Uk5QHR>#UqA;%E;8Q9686S)AxxyC;UurbrD}}E$ zR^uCm35^!9-{x02KRNO1ccj`=>9(%m-=d#`E5)aS-jWMt0~mDi7`h#-51e>Sa4a@= zW-6=jor~{r-bLmbm+t6yu}@xYoQ`%kc_UdDd!unGXo<~^?ZzGl8wzn%GjcBSQn4rc zS|TgU(nH+DeyPxG!oAXXqP>5Aw!PQ$273;+Re+adu{pgqE}f$b5N0v!>S4ef}qW#!^bgQccEE zO~z6-#!@!MQXj89ek9`=zVGQFWoouY{Z|VLO7izQ>f3QL6+Ca(nn*6rp_E1;#0UQkKz!kh3H(9M@7L`5i`#6 zf|Eq&tb&uFOk{Oah7Cx%KsJvjC%#78Vorz_A?B@R|M>-Hp+}YN(P(>cG$vD-s+^4> zTb08xWIJ*ohU{)Q5%~=1$enT|rXy)>9!Z&m!()|6IEkR4qNcV3r+7ogcq_(v6LM7l ZWeWZZMg2Q=;%|!iA5O&K`HO;%{09Z(Q~Uq` diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index f25087d9920974f067e10a7ee7bb20fa0187502c..e32356334257d80cdd93aeb744467fead0b3a9de 100644 GIT binary patch delta 2593 zcmZuz2XvH05dJoIx&80IO*IJ;AchAj#P|YI1XLhFB4`ja$OBuvBxgK0E|FZYdp7JM z_!AL(uLyFHpJ)_OvG<0(_ueate!G9T9PfGW-OSGH?Ci`pv-|HAm2X!ipWb%=MgXJ5 z02{|)wZz>vvamXc7Oat2Ya`ne?$M)l5-A%&PtzrFuMOo1>m^(pd7iLAqT5EHC)_7- zzl~x~=#hB9#?GGbpv1GFNzYAt_f;d_Z6Y&2lCg&!q; zveBrAKil{PziRTE#P1S+bgdPeeB#fpw(O;1qKF6-*Ub+v4p+s(@s_HoCpJae64BQ9 zJ_0%QiEz_`8R53s;l@~mi3;R~I})w&)`hJd?bGAYgfmF4^{qgs^MV{7Sc*#p1~|*} zN(yI37e*E-L@{6CFLVlwa*nr#I}MidEkMkPTVnzX5f>P3)VuhkstLzp3ddtnpE8uK z(2j&t798j6z+z`vurgE|i8O1^t!Se>I&cC`6sXi*th%ZDE1Ze5=)E#;N-VmtQ5&9w zlg;jSRj@94Y(n7_oa)5w34zmadhdifAQGl!5@!gM(^c8*nbQ@{#yJXipi|*?bV_Vh z_#6KyY}1s14fEup>U1H?>m#v9ldicG{gl{Q^w*@+ zd0)+Ns&amGmgNl{BM^$V*Pqm0O}oWx8Q-wshqFPV?X@%Ns}pRK<08$pX^AANW3gyB z-b9-b&J8*JooP8GL)c6Hnpg*Qq4r3;xgpWo5YzVlVKu|&(AlAp=B~2bHj(53XyIi8 z6!FjQAq|2ZV>mm;aMs>%HjClx5yROdhO;LOXXy=R#SLf04QHVZXRjE}N*lfed!K6t zET-YC9y!3qHk|ky&We*O2(a}@FL&nW58h)Xb^0Izqu|HExT4nv$j2&NNlDL2HiW07lIV@Y5?*-cGU@X$mrdV5z#4Henh4zjEHhA)Fp(x$xCYnK zKT|U4CV}fHC}eL%O>v+`;(CkIH>44m%VpYpP({VPU@Fy{P_rIWC`@@Awq`E&Uq=Hk z(p+*7>|8=U5LaguVNfr;dOIJ)Kzh9qoqn>*or?+wCUu_P>KmEoP0aJ=jMbrZac)Y7 zR?D?Iw7eaHnc5eO*9~jvc5Q~Myd49{rH`A@xt|V%&i3G6I~CeZmO(#Y6mEtKk&fn; z-iF#Sg9n(wgUn!K#+tqiZcS$}fu8kdRyS&OZ}sizA+ecAJqCVPGyGV+duQoekgIjj zceCMnc!4@XAzd6$glQ|U!emc6FolqdgHkAU!6qBzVnzzNE)HhHxtN*45ErvjC~$E| z3PmmsO`)HQ`aT@@Vt)Y7636HGMSPJT&6jvlyv%R?EBvaz%JcRb#v{1}lkhsG;td>x z_c9``%K$tZVk@V!^rhY#{8Bch24NPX^%u_W!C~_lei7zuz+4yejP~#z95HVLj&yO9 zk&o^{1Lb43&xd=^n53eKio#}X(v3(Tnx(7<@F`008Fs@L7>h4ai?1;g-(Z};7Jhw7^&z$bvhuY7*}#>dC+ pd~y82x6_||C2hk9{F@QU$aExka%C3o;#t<0o8W_I3oe@6|36=iB=Z0O delta 2201 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 U0U)aZQ>Ozbj{!1opAdTf0^?hh)c^nh diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/turn.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/turn.class new file mode 100644 index 0000000000000000000000000000000000000000..db90ec8779264b77575b579a89d33bd2c58bed20 GIT binary patch literal 845 zcma)3O>Yx15PjZkvh6lBZAn5YpXHPWgpoi{sR)o76%G-XMv>s=WZl+PcAa|dB5~pe zap6KGkl@ah|AQEB(>6jNV#(wAe10?Y?| zJy1ErW>=ei?(#ila?AJ3kXtFzCl5Bc(F1MyP^YQLlAH@?b*5A8a&Dc;wiqf;J%?wW zOTI&Dejt;A%UhB%BYi<-RvP2R)<@!9?aWZ_D9>r$gWNw9$D)cAR2iPn$Rjc8SXv`g z#(M?A*-P~4G8#0x3)JQWHN<7q uC#d)6^*;usk6upkX-riH=ar3fKL2cFb*k{Jkr2)Q7q0!Kkl{+fYxOs052zUc literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class b/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class index aa6ecc5f80fdeba58ffdd7815355c62ad6794f8c..7a155840c4eb2e37a30ec2a80620736d53beeb90 100644 GIT binary patch delta 627 zcmZ9IIZgvX5Jg{)hiSWMY%pdqHv4Y&)n+#l8R7~Y0S*8uDe?u72uL6>NP|Sc0T9Go z1|h1)W{l{ds=BM|)vtOtpXTK4`{fl_=fKd(c!~)oHB&*=e|P7@FwIPgSxTBYLz4NR zdV3`m;8F|DEE+N_X_hrB^`mx`?joyMwXCtOn6909L$wRl-nC)bq^zk}w%AsbqRf86 z_E~n=wd_&0?31+&lT~cH{PjcesmD82ml@ILPJluhi0zi!ns_C?t@MnlOW=_cYs5n@ zKK=AaWE-F4rB80|^%qbf5#`JyUJgGb_)jU4Vvyq&#>AL>j5!yKYdQLePKKm*3;qq6 zh-pIX9gd%t$k7wzYKMN|(jj{rWldy~JOdO&QBiUl?~A+&MDQR(^5`a>7w;za68FwV zs^zTBL+@)X(Dj#=2Hyx2t~`I%bT-jMlzG(*HMA7NM0tfVL(; JF&ecR`vFr;IN1OI delta 604 zcmZ9IyG}wu5Qe`!99US6fZz@BhBp-N7X%d(6AK#(U%?m9sPwe<^v2G{m>>xz7CwNn zxAr}ZahA)Gc#4_bGdth>^M9HTbNc@C`UdQBWQdWCFw2}~-mt)8gd9tnWkZO3=(u?+ z55bmJY*;l6u%=npY&6cIDi$Z9+4R_ATal|jIaBGA%Zr=p`9<|cv*XE>f@aU7NU46W zHj?`scpOsjD3kD*B+>j*cd9lZQtTH(AyA2fa@&!tBnR^^sD>OIk`j$%7{O(Xl$^ZI zBZe53n=6$bV2?n%7JkNwwQ&D4CeWfGMWqJ``;bu|axD-$F#Aj}+(MT#?mclK4k1_b zfa%bUr3XmXD{iJ{b&Yh|y2vnT(VG@M<5JT&-=tMY$#!2S@MvRuS?h?c z{4MJE8pXbDXQA7vMM{fk?&zSNVe{Q$%{yS9^p`|`RunSO3w@1zV E0w!WJX#fBK diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class b/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class index 071feb6dd0bd108273ae4cd0bd30f647b57b73ba..b735ca458213d358442c4834c6b815d58599e0f9 100644 GIT binary patch delta 576 zcmZ9JzfQtX6vn?>N-r(f3KRtu6hy58{sUZGBrzr~CdM~lS1`0eNA6+iw zu!CKN8cQ7sg?S_d_PK6wpL>23ws6ghR{N@Tes+2ypm%$nOBAV*J#KD5fclUohhJL0 zpQ5ieBBZm>kwF|;ICN4}!J5VltvcO~J+!aT%Xi|5L<0jD3gkjY;Tto)@rc@Roil=# zM%05Gp-;P*2PH5XSMDS~|7Og88r1l^_2SnwJ3N%v^kgZdAs(bVc8Ky(5SG$@Xm{{==;G=2a8 delta 555 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 literal 6918 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 delta 538 zcmYjN%}&BV7@RFif2>6i5m6Kbl=5Q{^r9wSIHDI0CSJ6p4PfLarT7qD`xu@`3^6A9 z06v9JV*FZuFS|3lGyBc#D?b)4e*Qkc0i2=2<3NIp1dk+-LkT{lM64n0qKtqecR!Yp zg~}txBR?u?%oo6h^T4jP017hJp~xsA$`Gpcbi=d~H$A&&CF*_CG-RAW<57}vin8;@ z+F=HvY1-Z;gD zyVIDmFE(5_v*c8lCe56T3V5~X^(!jm##cf@?j8Oy#1BY!i@cKz1^SZG(o4!bbDX>! G_WuFayg&Z{ diff --git a/build/org/usfirst/frc/team708/robot/subsystems/LED.class b/build/org/usfirst/frc/team708/robot/subsystems/LED.class index 780cc6643250db3d576c569ffe2b675c9418d873..5f94fa23d214e6d29fd3794944dfcba8eb64b189 100644 GIT binary patch delta 37 tcmZ3pI<;_g-;GH#J#m0?nvb>V5yDi@@a(vjt zNDxVn*IwaOkW{076oc4@{eB#f?H9$21-X6Dk8wW^`EgjnkN8oN@u(j!$#~4f%eskI zuKn?wrf0FzzU|9&XVIzfAleijLYs+K6<)^)g_C$g;Z2-Ucnj+k-o{FWcf_2=856d` zdw5^rEG85_knw=_JAM-(1KM&SZZ*r)ZzIiD(A#3c=ZoK@IA z+|t>1Kw(nyT$Z>e(P`h(+m?QYQyLoDhw{S%R-q*~Vp#(USMa%paAmQ}8XV5=E{-XD zA%_>+7kth3Pg>Nr>i*R03zpqef6J(ML+vF-K~39i74p_lv8#XIsQtBZDbvc!2kPLH z^6B|R0e2*8cO-F+0cfCFw5tGZCK~7gU)pEPRV4=v=^HTW9E4=Nj_D4Wt5HA!% z)Im(#7-q)MrOeCHiZ>(k8I%M*n}uLT+BvF z&ag73cu!zGQ8jF+qW=rLB5DnIi5MPwC((06f9ikGHRdtipCc|_Z^{L$5Www#jpG$?# zo=1WiQW5jli-@GV>4t;7OnU{hQ=y4-Xp-G znmSt#m<5A&51QGUD=>sCMkwQ67GJDknyWI+k*V~-(~RQtY>w0KstVp));k?t!jy(H ziu=8^OWi4!x$-UdCJ(qZ0SsfkwOVdp&>Gi%V1(O8Z{sjA_~cbi72?GXQqKBJ>A&dGcm?} zi@R~(;=aFFWy(xaT4nj{ljYy=$#={0JKa4%0;YuGF6W+e?svX(&TW4C=ciu)T#Ij` zxGRC{aCa2bQOqRJihJVNj(cUeFOK{1fXEKYpvh2@p)5ls4jr?yniIYG$P@G^KO!yYhZEF!D25|3JRHMO(R(C@M`eC2hR0=oB8n%YcuGOkowsdIcNAPO zUbd^bvghczk>R}uG}E?rDp14oqN&w&1#Q%>D7a)?uhepf7meJk;kcfxOrx}rE9y?& z7AsL3x67Jm*p>oiOhM!(!!o>E6trdrrs!zIuF&7cal_L0)~Y4lIiQtHO44FxPHB!I z`%u{C%^R+Qt>d;cm#ewKrL#^s=jmGY`oSGJ$1d4k&aIW)Bd(`c-CQvUi&)ZfZ(g6( zYNj`0SF4)E0M>J=X=ZUz*STxU=D~?J-k0G6 z@%152DCj;n2I1FI@1o|qdZpK}ZtRWX6BVE0GbSfEo74`g z_*^i3As6jKfr$-{!W?u2y9Jw7VU!Q`)-|(6dQ-ctGRx2DE!eIhC92{}yu>Uu<$hhL z_zGXIP@d9FyKHzzRD2`KgXd>-buBWFYqP*~Nmb^G&GJ=n*{T%w`5nnrdyZ{R_|21A zEmFrUOLs<0VT}zF8?{Z-J}m9sx4OMoxn#Grm*>fye%3wxng3%ewZDE&XRFnXvOdNh zVyCn5TiG{kf87fDdxN9bb;s3-hWXp43rAGcIX_9i-MC7y*!34-B0RuQbmjf;V(fi`TSTucvhNkl|-Om+uEh% zRyD_~G+&imQMM}{nK(fPudRa4%(%QRIg|O$6+OqW=62=>W_Ul7$kqyg_=_YZMB3~Y z))fUI9wwPkLycyO@FTRHUs0e9E%KOf)gteSKeOBYnGMf54n_ioO`OGxfo&I@$DpUx-$!}%Sd^YJC;!y$6XaD*-| zU&fp8vE7LnrdGI%FJX-{h5+l{B?foXofOtNM6fhg5iw1yGsJq&3T~T3DDssFxt*s= zA*nCj-+k;1GIym1h;?%VS$~)9W|4@XyMZf~!FOUEZ4MH=hE9~xjS4oiETjMe()*SI z=_6-1`=n1U@$wbROfp*RPrmyxx_Logd-V6u(Vm^=GL<;UTff02{mJ)E;6gb~b$y9s zcvulgB5dHw^i{G5fM4A&_yuGu>k-(52uFjJyui9OSxOe}fX(zdD}WZ4fEEc<7%$R_ zE#K3{^?@bs57Mh}pH1g@C0lhcxb>P~x7FuvTd=v-KU$_MO@F`zT;0z*pBd^Rv8{N0sOw*EZm@I! diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class index 78391991b7d8da123b72136898cef05b440876e3..a0e919361bce0d69e559ceff9380a1b1f8aeb73b 100644 GIT binary patch delta 3731 zcmZ`+33yc175>l6WZs*}n=F&b#)M=7hGjxXO~R^#umpn?5JUkLB!n2U7(x=jusCjQ zL>9$Y1R~I~*Rm5P1gL_xwrX2i>eh|YR=e26*6sx=o^#&|$%l~S{pZ|s@BQyR=l%E2 z2aZy@o${;l)SN_@ls| z1pX}W7lDrj{wnY{flmbfF7OY5e+v9d;NJrO@kAK^EAIc?B}HmIwcsTQT^6_^@PC0% z-6etU5mz}xaF;ZmRWWIifJ4A3;1Y-ta0_T&(#fNfS8S|A42^ub;>2kb@5NAjNH5&c{&Z&DPN~A=ya=21v(Y#*eD~4bga>_R>wLW z>vbBUW0kBply^$QyfmCf2#gfCO{3erG>VEnG@42T#xR6wthnRcC05xWyB;r4DjXBM zbO)7bG*P2F+Y21KoYZ^Qdod2*Bo&J17p>73%@4GB?)@~GkZT_CWtvrbd}IYy8h8{D z1CJp>NT?}aTAp85USE|zb$(4{MYDnZIAGvOJY`^w3|lL(PGG&jvjWcvY!G-}z{FP! zY!rAwV3WXR>DVIBCM&)uuoWxsGq6qE?E+sF_?o~Dft>=o1a=F<9`W`H!#?r8j+Gis zF=#5?#nPEk-dI)HY|u2CZeTT@Aq+G(7%65X&KEahVPj?a0t2mhnlMpiK1j#}fuUfCC!MF=#G5sL?!w%F#|3u2_%6^r?n(7-ojgU4jNx2(J=WN!{H0tUbVRvdc{a3;#K_>^V+Da*xY>levM z+dQ8Xj95J^JvD;Wrz{IlS=OMkEJI~kiORAVm1R9D%aT-Q;+#GTmLua4Bu<$7i2Tou_6eBr2 zvIDmrWkv@MF}9(f8BAFdslY{4;W7))fm1llJ%+UajzC6}NSKiq#}v4v4@t*xdk01Z zP`v3yXaSTQj+2Q_MI6T#cojaphD5yHO^GC%^0*pHiOdystJDsf`KiMb#vN7cIV_N| zLS`;Y?OPT6#c^hKGt|(IW zA<(}Q<4tGUEp*5nkd{BRi#QQsPJE>zF6%)Y3)dCoI1?^G6YA4e70h*MAu2TwrS+?r z5I|Wc?u?>Tm}Rw1+wnfzEPjHUw<0mjPAT{CkbQW$s};bcS{2#P-N|j(&1Mjf3Scr% z@`vN27!(d*DvvRTr5C!CQ=guaJ&8N^ao=&|B~{U3uYe_#wT&wG>>+3qk>9Xtkg7wOHFDv*Bi*&-_4otTc zR#m26T6HjsU)t(maB>$pkFqHZWcJ8MgX0Q9PI+N`mokcMm)pbxd8^s{1X^w0PZV!r zMzElpcc9H1`+43h#mo1%@S1ZoQX+DYtn+C0(0PnaL3jmc>^&57YLc8g+&_w}?qld> zX@fQ+hPEgMk-BhNhfln-N}I$d>a}ZJ4r^2-9E>9Qda`Xyw*4k#-{L!n`1jj4-dOha zTsxR+=S{d?hfhuo;XAfmBE5T7WX}yN@?E^aGvux0tGPgo$oK#Utb55S=Sw%7{3hPA zCl~W*RVb-IUiYpeRy_~#wh!NA+u!4BS9bmV&(~APQo6}3u4ByAeiN=A*yTLe#buhA z$wNdH*4z_3xAP`*e`wGBk*%i-nfWYoUsf<8VpNwfOVHAR990(_0nzn&>&9f&B(S37 zI^65On~%(lPTVuoe=mD8l{bs)8tTOCng09O%TnI`?D2)fu?N^2th_nwE+-|4QTMyBWO1Q~EXbOe;E?YhJe)Py+YpnvJO0Aew$oKMwK+oDk33O zmm8+4>qcSkC-^DXOEi_Iu7A3MJ2d>v@6Wgd{)@TFH;z-o&o%r)!v&CrUtWUSk;ar4 od6EOaqS;M1& delta 3931 zcmZ`+3qVw57XHo*%)Ja37>41EFr=i8A|{A$z$f^&u++*25+R~MFjPu8StjfH?wTm2 z`AWC7)YL)LO|9K_%iY|qw%Xmc+V{(LZQr}DW#{~N23b?|e&_tJ@1Fns-}z_elkpcO z1kQhP>I{GaYSZv*9lvqn5&Txe?;IuL&v8Exg%k7?T)jd39_z_lcBFpKC%6r)Sq&78X%24od!z#Hk}6Pl&@2P zPJ?wS)M<#0HkmP0$9f$bbZpeINvB~t0zx^QcSIwcG?GRM6bTe-RN|!3G$yK$#?rVb zhVcRu1WFwxR*aDClnG1}j!90MOj9(Ps?oG#KHFY9W$(QZX^WYzx)N9z8qF|2)E3xZ zqT9_PePG~GtT6BxRvLI5D+#W}6%SVAEvcxh&YQk)aaE#Kh(j7x8gw63 zX>`9q)d&)XGF6h91}&vJ120OD$7Qy&tfI*qiU((LTBCY{ z8t4InF|o-z+V3r^s;OSYncj}md;(*e8ylgxj891YeD;BgL~ zo)B0?PinNYi|LA6a{n845P372%27hy76(O(BlxvzP z_czwmRgak1*Su=WF!vavv^B)1F|d!hIWpPY6%%7RV`4H|Xe}Y3vc6&2jGBh3B{g+b z)0_Pb&Hg5h)*s7{85M!n4R zHXLExiQeXs#I=FB_z5cUDXK}wNs7ZM$Q;9ZBaY%2w@B*6iU!jVA!A55ilPn_dr;E$ z3^WhM9FFB+VOQj_Y=Ku1gVzv`*RN3`Aw=1s=2EnvFEU2#tE6J zC-*Fnh>|$&zWnY^oK!OgbR&vFgg0W0hEoz67bD|gbAGZnaRP7qmTfx_?TZK^=>R;v zJ2AoBlH7}qm?x9-3d6+l@ZnpWd)Zi7H{xhSTtSZAbs3sazhY&<%uMl8sac$IYh{@S zlR7aah*Dvex3%rW2W+$WN#FJ?;(hFt@)%D!fLFpT52n_to`XD`*p7W{`tvLgrt>1V zFD{7wJ`Zl^Ip!NF`4P&wnv#?~l?M*+*m2~#s&>O8PCWJB3nx#XB-0C1v-Q%@QJC{n z>wAPZ3Cas?%|^MQ?RJ>~R36$<4(HG1iw&aOoROAll=BLDCg)ip zN&}hU*mL!J2azTFw(8U=FQsjWr0v~;aD*6y{WT?A!ng6AE-sr2)e-Qe2a$L^ z*$yV#c@whN`Nkst_uU%@mVG_fZsyu^6Rz(eMoNnCMo3?-9^EtY{0%emCeHH;ImSG- z7Kr2{%9SIs5@MzEg&QvZK7J5dT*R~Gv>cLw+-p$>tb88gun*rP?6>%mmZ&d$HJ?J3 zbdAj7I?7zfZo>7$P&$7U=9+~6i!AwivJ*_!c@wg?LuBuS1Xh=s$7QlJ(<&2nWwRzN zb;|u30h>oE05*JHM?zsK#JGtoY>cp&B?%C|kQQqC0Xm2O(ndQEhy)5O;Wsk2f z?wiNn0OieRFHd<3*voD0oG0TI?DG}I-a=-qRE+m=Urej&tYSCTa_?t1&T^~Sby@Br zcCEM9u(wzig_2`#&6=!k0&9!=yQ=5M;fx1yJSIEIH>%ej|kX^*8Ig`Cs zrPRkN8N|OGKH#qbcBF7Zf6DTgE2lbq#jy7?e8~9{P30o`3R36_N;Ul4?asIi{vUaj zzvS69e5B!H4WEEC{NgekwiKrPB`>n!S2Ulk8#bCt>u8=MiZ)U57TSzdlHa9#u#^Zp JB~db^dBWVBt diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionGear.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionGear.class index 8d671d2625439e0b4afd87975367fb0d829712c7..781ab4fc3ee88c1c33d152cbee7c087e642e07ee 100644 GIT binary patch delta 3319 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 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionLift.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionLift.class index d73989a52c885fb0f888f5d932b3dda2cb127cc2..b78d51d5d30ac70d0b202604e65f5340ad571efc 100644 GIT binary patch delta 3393 zcmZ`*3v^Uh72RhhnKv0;lF2aSLqd{DQ^*7wAmL9)ptOWSfwmM11)2~-2%#BBLIo_2 z&?+jnR-amk<&S{0f*2-5kb>f`DEMg=v}*lTty%^DQl#DIzDdYpNfvMKbI<*qbMC%( zI9zqQGIs9ziI)JBORI(N`|*PSR^f*hUh!4keTIG@1yQ`J@FRsETeuiN0GG7!6NR5D zyr%Fog`X?@Lg96VUn=}c;nxbkQTVOG8w$Tmi4lMAt135JnZ5p?9d9c9QQ=R%s_>1@ zKdb94UscN)cMp-xU5Hz(4R$KmMisZ}t4g!he;oT6jBvGF%E_JVXK* zE*|>Dt5%XF$pMTNUqCGJt2@P4`SLdXYxh;YQfB@F5|BR5BpDEkitU%w0EeXoBwd1j z$ z6>d{_k0k>Ga=R3z$Q?3BVX#6mp-3XWDz`q+fJ+pH=o&)2=(D@9;78@PPMhzw?oPWCC(LJzH`n>kF7?FjW(>Y@i^89f-7ntuPt3!+uTq( zYsrfGx;7g-u+zpmthcdIhiy`LQsF6u4=Q{}VY9-A6+VKG+SsD-F@>kq_l&~Fb+cy` zKB4eQv{c)0)clmfrxiY<@SM)us@680*RIxQ(PGI+TSm!ffp1Q2OGAB|En{S?jTk=Q z9Q6ZCY#Lq_)B-jje69&2{yf z?IBk1t~D(!_07HfGE-(b*HfCxw`hN;dwk)XXwSN>Oi*Ua{gymn%Y!&>%N!iCFP$RXLEU~3dmUdhYc*Uu(E4=lx%-LX% z%!^8cpl@At)w#y8K(XWQ-X%6Lc`DVxXht@*kijJU@!KuCHS1XxpRBJF~M<1O=l4XV=TPb?X2uKFs73-xok0# zupbA^h&vP053(->Nrg$1Eqp$ST@*8M7u`oW+)J)zZ2h)j9H~FQ{D$g5T^LWRaO-yT zi6q65c>v*V-*Y>dvX{Qdpg2knu;HX-rpaz+KxXN@?np8a!3(UOR;s#JBz=%{4MpDI zRahF!i}->Yi@eSt8H<#rC87y&|IBUNJ}r(3&fd&B>MFvh?7}2AdxdgQ1LoI%>+{Hn z(3rr`IphFNb+^Kp++;j2u)AM7_K}J?DvT+d6pEzBQ5*^59^Ge1R#~nZ91;mG-HB8+ zGUVA^7{wuzo%LCHNtHUVJ?l3Agd@yO&){rUbU=6JOd*l4M}{V9aL}2Ronsw#lXarm zgR6RS=`Qs^mO7}pR%^Ypw5+UgmezQPHcZbkRCjNAF}rM3_m&wL(^KrZHy69oo0KRv zUpXzdQ*$eE!9&o$(G^}P6uy61&bvL0@-*7QXh zuBgr3kfpt3oSaxw@I?yF72ZTvO@-&v^d{urxDx>`18GFEtT0Qcs5vaLgj!!Rq7roA zm@ekb?w=LY+vLt{=FI3VX2yB@HRevuwRr2|ha-$w@Z{Mt@^5u9bQ7T2FAT4Yye9EBb@0i=9doWOZ)V$QuRO$f=ud zG4-WHK~5)haVoczig+v6RfPKp<@b_P55$q35i*(}NE=->nnnCM6 zW6h*A3c4_BUT8M0d}G~Di#L?M2WXWT>p@yWj5UW=WOLVI?SF_iZz-+0TydUR@nQN> zHyfuuvuUomfM&XDK0-6-nhR;VyDy@(SSKaw>b#LR-H6^zaet3MzuKJ`N|=-;CO3}4 zRrWzsOLwBU6N4W8+2!zEyaX+L#*#U&AyU$bM>|ooIgZ7yS=%n-ycKzFBUZBq`_;_r z#F8_p>%!8RdF>b)8F~!$alT~aWpO@E+UD0#6Gva;WMerSVeMdI8GHCds?ABHWpsrS zE}gGE{2FTL@4JsLOu~_G7Ssv+mTPY~(Q6#ejQmAKjr3YwXzIesFdCyxY^HB+ipEhu zYZ!xntP{=7h5U(BO=`gwQ_={3QbzEn?d$jkwULd(_$I}!m%5?*64Uw?zRh~+FVj%; zxrS`HhN%`_4u$frg8!1=;r}$e7S37tj)m_+ES$dzpC_A3Uf?7Tz9&`W5IizbmP@5C YMOI4IDtQb!xW*1WpZ{_2b-W{Z7uuMp*Z=?k delta 3460 zcmZ`*33!y%6+L$*nSV0*Lnf2SMnZ@{fDD8H2|HO3lvNgqEFzF0#E=A%kW5%wF?FR@ zX)S+Sfhw{UtWqou6CxC$i?-UuTH9)=7VTc`zL&D}+&2^8(&$;iu_wIZ5zVlvk zy7EX>=c|`aya=F7He2|i7jO8`h96n@v8U>mGxP&VSdX75ys7Y(g`fK1!&zppA>YyPvt8+^=Fr-@{LmSP(P+o$JN#l{6oR z1$>e&L9b+JBhxEc+RpY$j#v76CD$u?Ug_tRd@r`?i2hzY;KhSpJmkg0UMcXRLl?V= z`;q}Z87PAk3Ka%hGQ=lCr6@^4GE8B(LNTFGMtG`Xb%JiVL}8@H80C}EQff(=C1bkI zOO0ESx|SurB`IUohs!)rOU5}>)(ZC?8Sm`1Ms~I%Vq*g~+Sr7R0)Jz8L%3vZxVgS$ z-m1pBT6XTiUK=09JvJWDVGk-ir0}r9R)vo%JfiRkg-7w2jcp2_RQQzo9#{CZF1B64 zQTPlZOKp5s&Ce-3p|C??r_S4@*5`HJlWIMMh$RzjnJAM43AN#MqimThDX98hn|EbO&pwk>nyHXFNj^|`jplleBDMnvG75pFMtuZp8MY{>#! zZkL6EJ~P`3rbG&+HMB><&9!w}hQloF)Q+~cy5?*AQZ08l?usM~Mr3eBER3`@G}lj>S>(Lt z%5%;om%E!}t<&Egleb>h3DRp@S~t&cXsuh@&|EjKBhuOtX}6@MtJU7-PHVMgz3}Y5 ziI*(t5R7Jdi=38}B&W(hMmBbB@OwlyIa|`^bgt)P1QfyrN|Kff%-t~6X_x{v%+n$V zRFkH?1@{`J4h-|~4O6a$saV4ltzqicFr{ml>IFsQQUx0aMQoTlHcTlSrkV{?(1xjL z!<4mQD%&u{ZJ7EtOobb!$PH8HhADN!R6AyB##Fp#q*jc;`FC&bzsN<8`jf)(9fW3BXMSKAV*%BOz?Z$}) z$NMKAHJybRib-%|zjHA-uuLaqGIS9V@C?3aMvRD0f0lhoNGM3S*}`)P?BcB;?sKX$ z3Np&Mvw|H@Avu%~Mdl#{hxDM_c_d?y?01f2lq~KIoQ4p-#Oi1zW?U0E83`9q==Pt7 zrJ;}Dc@51ypW~Wta!H>VTq0v90;J5HT&PbJ6;4^^;M&R{ru1Mco4TlOVkiEA#qT_b}F$8^n4Mk1a95PJei?tm}i_ z$6)v0AlR9BiM|$B%G}%%YUJMBm_}@_11ck?5q%{R;0mfNzJBHL^YdJF)WN{)P&elE z;I_qqxwPgPYd*!&zXuBz2X3d8Z>)v1cxCCUrZvo1chDMctVOg!TYFY$|6aePZTaG*e^da+>~_xq@bF^_8@0bW*%H&W60%<{HFOJa|R2-{?&Y z!l=tN=@{Vx4G%i(<2Ty1>U5;?CvG^`upZmilGMNQ1C-6a#<<$1A2 z=c;`;sAgU_R-Zv#5AL3uw+qFg;$x_f@@XTliSo75Hou0NDAJ9SjYc+t+QG!q_VLYB zo0CXu=nBMLI$wMEHPq0bet>UI+>vhr>I8m`+8d1b8i(^vzvYEZ^jbYw*MsIDnp(7( zy0xh#ivF}px%rlEv^p#EE2x^?`Hz~ChNzO!{KxBMe2d!1=8OMr%AYq!>U*y>tyl0W z>!q41M)Cz@%LPog@SQ*)?>zXMc$xoVxGj9w!uKqEA7bIP^YFN`8S)35(p{ dOp|80#gim$lC?qFk)x-ke;`HR7MHjs;s1OyyX61? diff --git a/src/org/usfirst/frc/team708/robot/Constants.java b/src/org/usfirst/frc/team708/robot/Constants.java index afddbf0..8cf2bea 100644 --- a/src/org/usfirst/frc/team708/robot/Constants.java +++ b/src/org/usfirst/frc/team708/robot/Constants.java @@ -30,19 +30,21 @@ public final class Constants { public static final double SHOOTER_MOTOR_OFF = 0.0; public static final double SHOOTER_MOTOR_BACKWARD = -1.0; - public static final double SHOOTER_MOTOR_SPEED_LOW = 5000; - public static final double SHOOTER_MOTOR_SPEED_HIGH = 5000; + public static final double SHOOTER_MOTOR_SPEED_LOW = 2500; + public static final double SHOOTER_MOTOR_SPEED_HIGH = 2500; - public static final int SHOOTER_ENCODER_PULSES = 48; + public static final int SHOOTER_ENCODER_PULSES = 12; - public static final double SHOOTER_P = 0.06; - public static final double SHOOTER_I = 0.001; - public static final double SHOOTER_D = 2.0; - public static final int SHOOTER_F = 0; - public static final int SHOOTER_IZONE = 10; + public static final double SHOOTER_P = 5.00; + public static final double SHOOTER_I = 0.005; + public static final double SHOOTER_D = 10.0; + public static final double SHOOTER_F = 2.6; + public static final int SHOOTER_IZONE = 00; public static final double SHOOTER_RAMPRATE = 0.0; public static final int SHOOTER_PROFILE = 0; + public static final double SHOOTER_PEAK_POS = 12.0; + public static final double SHOOTER_PEAK_NEG = -12.0; public static final int HOOD_MAX = 2000; public static final int HOOD_MIN = 30; diff --git a/src/org/usfirst/frc/team708/robot/OI.java b/src/org/usfirst/frc/team708/robot/OI.java index 2f56ac7..02ec695 100644 --- a/src/org/usfirst/frc/team708/robot/OI.java +++ b/src/org/usfirst/frc/team708/robot/OI.java @@ -65,7 +65,7 @@ public class OI { private static final int LOADER_STOP = Gamepad.button_X; private static final int LOADER_SPIN = Gamepad.button_Y; - private static final int VISION__TRIGGER = Gamepad.button_Start; + private static final int VISION_TRIGGER = Gamepad.button_Start; /* @@ -79,6 +79,8 @@ public class OI { public static final Button intakeGearDown = new JoystickButton(driverGamepad, INTAKE_GEAR_DOWN); public static final Button led = new JoystickButton(driverGamepad, LED_BUTTON); + public static final Trigger gearAdjust = new AxisUp(driverGamepad, INTAKE_GEAR_ADJUST); + /* * Operator Button Commands */ @@ -93,6 +95,8 @@ public class OI { public static final Button hoodLow = new JoystickButton(operatorGamepad, HOOD_LOW); public static final Trigger hoodAdjust = new AxisUp(operatorGamepad, OPERATE_HOOD); public static final Trigger hoodAdjustDown = new AxisDown(operatorGamepad, OPERATE_HOOD); + + public static final Button visionTrigger = new JoystickButton(operatorGamepad, VISION_TRIGGER); /** * Constructor @@ -111,11 +115,11 @@ public OI() { intakeBallOut.whileActive(new Intake_Ball_Out()); // sonarOverride.whenPressed(new SonarOverride()); -// + spinShooter.whileHeld(new SpinShooter()); spinShooterBack.whileActive(new SpinShooterBack()); - spinFeeder.whenPressed(new SpinFeeder()); - spinFeederBack.whileActive(new SpinShooterBack()); + spinFeeder.whileHeld(new SpinFeeder()); + spinFeederBack.whileActive(new SpinFeederBack()); loaderSpin.whenPressed(new LoaderSpin()); loaderOff.whenPressed(new LoaderOff()); @@ -125,6 +129,9 @@ public OI() { hoodLow.whenPressed(new MoveHoodLow()); hoodAdjust.whileActive(new HoodAdjust()); hoodAdjustDown.whileActive(new HoodAdjust()); + +// gearAdjust.whileActive(new Intake_Gear_Adjust()); +// visionTrigger.whenPressed(new visionTrigger(); } } diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index 15c9f2a..b9cbfd2 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -124,19 +124,23 @@ public void disabledPeriodic() { sendStatistics(); prefs = Preferences.getInstance(); -// try{ -// if (ds.isFMSAttached()) -// { -// alliance = ds.getAlliance(); -// if (ds.getAlliance() == Alliance.Blue) -// led1.send_to_led(Constants.SET_ALLIANCE_BLUE); -// else if (ds.getAlliance() == Alliance.Red) -// led1.send_to_led(Constants.SET_ALLIANCE_RED); -// else -// led1.send_to_led(Constants.SET_ALLIANCE_INVALID); -// } -// } -// catch ( e){} + try { + if (ds.isSysActive()) + if (ds.isFMSAttached()) + { + alliance = ds.getAlliance(); + if (ds.getAlliance() == Alliance.Blue) + led1.send_to_led(Constants.SET_ALLIANCE_BLUE); + else if (ds.getAlliance() == Alliance.Red) + led1.send_to_led(Constants.SET_ALLIANCE_RED); + else + led1.send_to_led(Constants.SET_ALLIANCE_INVALID); + } + } + catch (Exception e) + { + led1.send_to_led(Constants.MAX_LED_CODE); + } } /** @@ -211,9 +215,9 @@ private void sendStatistics() { intake_gear.sendToDashboard(); pivot_gear.sendToDashboard(); // visionProcessor.sendToDashboard(); - visionLift.sendToDashboard(); - visionBoiler.sendToDashboard(); - visionGear.sendToDashboard(); +// visionLift.sendToDashboard(); +// visionBoiler.sendToDashboard(); +// visionGear.sendToDashboard(); } } @@ -226,6 +230,7 @@ private void queueAutonomousModes() { autonomousMode.addDefault("Do Nothing", new DoNothing()); // autonomousMode.addObject("Find Target", new DriveToTarget()); autonomousMode.addObject("Drive in Square", new DriveInSquare()); + autonomousMode.addObject("turn", new turn()); SmartDashboard.putData("Autonomous Selection", autonomousMode); } @@ -235,7 +240,7 @@ private void queueAutonomousModes() { */ private void sendDashboardSubsystems() { SmartDashboard.putData(shooter); - SmartDashboard.putData(feeder); +// SmartDashboard.putData(feeder); SmartDashboard.putData(loader); SmartDashboard.putData(drivetrain); SmartDashboard.putData(led1); @@ -243,9 +248,9 @@ private void sendDashboardSubsystems() { SmartDashboard.putData(intake_gear); SmartDashboard.putData(pivot_gear); // SmartDashboard.putData(visionProcessor); - SmartDashboard.putData(visionLift); - SmartDashboard.putData(visionBoiler); - SmartDashboard.putData(visionGear); +// SmartDashboard.putData(visionLift); +// SmartDashboard.putData(visionBoiler); +// SmartDashboard.putData(visionGear); SmartDashboard.putData(climber); } } \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/DriveInSquare.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/DriveInSquare.java index 50f6a49..b67bc87 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/DriveInSquare.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/DriveInSquare.java @@ -11,22 +11,23 @@ public class DriveInSquare extends CommandGroup { + private static final double driveStraightSpeed = 0.4; private static final double driveStraightTime = 2; - private static final double turnSpeed = 0.4; + private static final double turnSpeed = -0.4; private static final double turnDegrees = 90; // Called just before this Command runs the first time protected void initialize() { - Robot.drivetrain.resetEncoder(); - Robot.drivetrain.resetEncoder2(); - Robot.drivetrain.resetGyro(); +// Robot.drivetrain.resetEncoder(); +// Robot.drivetrain.resetEncoder2(); +// Robot.drivetrain.resetGyro(); } public DriveInSquare() { - + addSequential(new WaitCommand(4.0)); addSequential(new DriveStraightForTime(driveStraightSpeed, driveStraightTime)); addSequential(new WaitCommand(0.1)); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/turn.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/turn.java new file mode 100644 index 0000000..c6631be --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/turn.java @@ -0,0 +1,27 @@ +package org.usfirst.frc.team708.robot.commands.autonomous; + +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightForTime; +import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegrees; + + +import edu.wpi.first.wpilibj.command.CommandGroup; +import edu.wpi.first.wpilibj.command.WaitCommand; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; + +public class turn extends CommandGroup { + + protected void initialize() { + } + public turn() { + addSequential(new TurnToDegrees(-.3, 90)); + } + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return false; + } + protected void end() { + } + protected void interrupted() { + } +} diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java index e03a08e..1172a9e 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java @@ -30,9 +30,8 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { Robot.shooter.setFgain(Constants.SHOOTER_F); -// Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_HIGH); - Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_SPEED_HIGH); -// Robot.shooter.manualSpeed(1.0); + Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_HIGH); +// Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_SPEED_HIGH); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java index 51827e3..7b513eb 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java @@ -29,9 +29,12 @@ public class Drivetrain extends PIDSubsystem { - private boolean usePID = true; + + private ADXRS450_Gyro gyro; + private int count =0; // Variables specific for drivetrain PID loop + private boolean usePID = false; private double moveSpeed = 0.0; private double pidOutput = 0.0; @@ -43,24 +46,22 @@ public class Drivetrain extends PIDSubsystem { private Encoder encoder2; // Encoder for the drivetrain private double distancePerPulse; - private BuiltInAccelerometer accelerometer; // Accelerometer that is built into the roboRIO - private ADXRS450_Gyro gyro; // Gyro that is used for drift correction +// private BuiltInAccelerometer accelerometer; // Accelerometer that is built into the roboRIO - private IRSensor drivetrainIRSensor; // IR Sensor for <=25inches + private IRSensor drivetrainIRSensor; // IR Sensor for <=25inches private UltrasonicSensor drivetrainUltrasonicSensor; // Sonar used for <=21feet - private DigitalInput opticalSensor; + private DigitalInput opticalSensor; public int sonarOverride = 0; //0 = default, 1 = high, 2 = low; Used for overriding sonar - private boolean brake = true; // Whether the talons should be in coast or brake mode - // (this could be important if a jerky robot causes things to topple + private boolean brake = false; // Whether the talons should be in coast or brake mode - /** - * Constructor - */ + public Drivetrain() { // Passes variables from this class into the superclass constructor super("Drivetrain", Constants.Kp, Constants.Ki, Constants.Kd); + gyro = new ADXRS450_Gyro(); // Initializes the gyro + gyro.reset(); // Resets the gyro so that it starts with a 0.0 value // Initializes motor controllers with device IDs from RobotMap leftMaster = new CANTalon(RobotMap.drivetrainLeftMotorMaster); leftSlave = new CANTalon(RobotMap.drivetrainLeftMotorSlave); @@ -71,20 +72,24 @@ public Drivetrain() { setupMasterSlave(); // Sets up master and slave - accelerometer = new BuiltInAccelerometer(); // Initializes the accelerometer from the roboRIO - gyro = new ADXRS450_Gyro(); // Initializes the gyro - gyro.reset(); // Resets the gyro so that it starts with a 0.0 value +// accelerometer = new BuiltInAccelerometer(); // Initializes the accelerometer from the roboRIO + encoder = new Encoder(RobotMap.drivetrainEncoderARt, RobotMap.drivetrainEncoderBRt, Constants.DRIVETRAIN_USE_LEFT_ENCODER); encoder2 = new Encoder(RobotMap.drivetrainEncoderALeft, RobotMap.drivetrainEncoderBLeft, !Constants.DRIVETRAIN_USE_LEFT_ENCODER); // Initializes the encoder distancePerPulse = (Constants.DRIVETRAIN_WHEEL_DIAMETER * Math.PI) / - (Constants.DRIVETRAIN_ENCODER_PULSES_PER_REV); + (Constants.DRIVETRAIN_ENCODER_PULSES_PER_REV); // Sets the distance per pulse of the encoder to read distance properly encoder.setDistancePerPulse(distancePerPulse); encoder.reset(); // Resets the encoder so that it starts with a 0.0 value + encoder2.setDistancePerPulse(distancePerPulse); encoder2.reset(); // Resets the encoder so that it starts with a 0.0 value + leftSlave.enableBrakeMode(brake); + rightMaster.enableBrakeMode(brake); + rightSlave.enableBrakeMode(brake); + drivetrainIRSensor = new IRSensor(RobotMap.gearIRSensor, IRSensor.GP2Y0A21YK0F); drivetrainUltrasonicSensor = new UltrasonicSensor(RobotMap.dtSonar, UltrasonicSensor.MB1010); } @@ -112,36 +117,36 @@ public void haloDrive(double move, double rotate, boolean usePID) { move = move * Constants.DRIVE_MOTOR_MAX_SPEED; rotate = rotate * Constants.ROTATE_MOTOR_MAX_SPEED; - if (usePID) - { - // Enables the PID controller if it is not already - if (!getPIDController().isEnabled()) - { - getPIDController().setPID(Constants.Kp, Constants.Ki, Constants.Kd); - getPIDController().reset(); - gyro.reset(); - enable(); - gyro.reset(); - } - else - { - // Disables the PID controller if it enabled so the drivetrain can move freely - if (getPIDController().isEnabled()) - { - getPIDController().reset(); - } - } - drivetrain.arcadeDrive(move, rotate); - } - else - { +// if (usePID) +// { +// // Enables the PID controller if it is not already +// if (!getPIDController().isEnabled()) +// { +// getPIDController().setPID(Constants.Kp, Constants.Ki, Constants.Kd); +// getPIDController().reset(); +// gyro.reset(); +// enable(); +// gyro.reset(); +// } +// else +// { +// // Disables the PID controller if it enabled so the drivetrain can move freely +// if (getPIDController().isEnabled()) +// { +// getPIDController().reset(); +// } +// } +// drivetrain.arcadeDrive(move, rotate); +// } +// else +// { // Disables the PID controller if it enabled so the drivetrain can move freely if (getPIDController().isEnabled()) { getPIDController().reset(); } drivetrain.arcadeDrive(move, rotate); - } +// } } public void haloDrive(double move, double rotate) { @@ -173,6 +178,8 @@ public double getAngle() { * Resets the gyro reading */ public void resetGyro() { + count++; + SmartDashboard.putNumber("resetgyro: ", count); gyro.reset(); } @@ -320,7 +327,7 @@ public void sendToDashboard() { // SmartDashboard.putNumber("Gyro Rate", gyro.getRate()); // Gyro rate // SmartDashboard.putNumber("PID Output", pidOutput); // PID Info // SmartDashboard.putNumber("DT Encoder Raw", encoder.get()); // Encoder raw count -// SmartDashboard.putBoolean("Brake", brake); // Brake or Coast + SmartDashboard.putBoolean("Brake", brake); // Brake or Coast SmartDashboard.putNumber("DT IR Distance", getIRDistance()); // IR distance reading // // SmartDashboard.putNumber("DT Rt Master", rightMaster.getTemperature()); diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Feeder.java b/src/org/usfirst/frc/team708/robot/subsystems/Feeder.java index 979fed9..1315900 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Feeder.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Feeder.java @@ -41,7 +41,7 @@ public void stop(){ } public void sendToDashboard() { - SmartDashboard.putNumber("Loader Motor Speed", feedMotor.getSpeed()); +// SmartDashboard.putNumber("Loader Motor Speed", feedMotor.getSpeed()); if (Constants.DEBUG) { } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/LED.java b/src/org/usfirst/frc/team708/robot/subsystems/LED.java index a22f439..80aef72 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/LED.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/LED.java @@ -41,7 +41,6 @@ public LED() { public void send_to_led(byte command){ msg[0] = command; -// led_out.writeString(message.toString()); led_out.write(msg, 1); led_out.flush(); diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java index 4fc0694..db2c9fb 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java @@ -50,15 +50,17 @@ public Shooter() { shooterSlave.changeControlMode(CANTalon.TalonControlMode.Follower); shooterSlave.set(shooter.getDeviceID()); + shooter.reset(); shooter.enable(); + shooter.reverseSensor(true); shooter.setFeedbackDevice(FeedbackDevice.QuadEncoder); - shooter.changeControlMode(TalonControlMode.PercentVbus); +// shooter.changeControlMode(TalonControlMode.PercentVbus); + shooter.changeControlMode(TalonControlMode.Speed); shooter.configNominalOutputVoltage(Constants.NOMINAL_POS, Constants.NOMINAL_NEG); - shooter.configPeakOutputVoltage(Constants.PEAK_POS, Constants.PEAK_NEG); + shooter.configPeakOutputVoltage(Constants.SHOOTER_PEAK_POS, Constants.SHOOTER_PEAK_NEG); shooter.configEncoderCodesPerRev(Constants.SHOOTER_ENCODER_PULSES); - shooter.setPID(Constants.SHOOTER_P, Constants.SHOOTER_I, Constants.SHOOTER_D, Constants.SHOOTER_F, Constants.SHOOTER_IZONE, Constants.SHOOTER_RAMPRATE, Constants.SHOOTER_PROFILE); hood = new Servo(RobotMap.hoodAngle); @@ -82,11 +84,11 @@ public void manualRPM(double rpm) { } public void setFgain(double F){ - shooter.setF(F); +// shooter.setF(F); } public void stop(){ - shooter.changeControlMode(TalonControlMode.PercentVbus); +// shooter.changeControlMode(TalonControlMode.PercentVbus); shooter.set(Constants.MOTOR_OFF); } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java index 1f8bc0f..0a14032 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java @@ -90,7 +90,7 @@ public VisionBoiler() { // define the Cameras: - usbCamera=CameraServer.getInstance().startAutomaticCapture("cam0", 0); +// usbCamera=CameraServer.getInstance().startAutomaticCapture("cam0", 0); // axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); // axisCamera.setResolution(imageWidth, imageHeight); diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionGear.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionGear.java index 4867803..d7e30cd 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionGear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionGear.java @@ -89,7 +89,7 @@ public VisionGear() { // define the Cameras: - usbCamera=CameraServer.getInstance().startAutomaticCapture("cam3", 0); +// usbCamera=CameraServer.getInstance().startAutomaticCapture("cam3", 0); // axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); // axisCamera.setResolution(imageWidth, imageHeight); diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java index bda4083..dfd6370 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java @@ -88,7 +88,7 @@ public VisionLift() { // define the Cameras: - usbCamera=CameraServer.getInstance().startAutomaticCapture("cam1", 0); +// usbCamera=CameraServer.getInstance().startAutomaticCapture("cam1", 0); // axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); // axisCamera.setResolution(imageWidth, imageHeight); diff --git a/sysProps.xml b/sysProps.xml index fd3b076cb84a04703b42aa670e9ca5748d07caf7..adeda3ade0022e2f123449a5659035f6f1240cfb 100644 GIT binary patch delta 152 zcmZ2yu+Ct^G-h@)1``HX2A9c!EVi3(F$b~o8!}ijSTPtf7ywB(2Fu9@IjlFAasFd5 zwPbK)aAq(COBn#A6+rrc*n+_rDCW#y1Qc-rn&u3Iu0TT^foc_i=2~xl!uN)W-IXDj lA%wwn@<9>H$pS*tm`xZ=Hm?-YWMl^h6MmS6Crp2 From 294e7de4a3e6d092c827b58bf8cc91e08b6a8744 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sat, 18 Feb 2017 11:39:33 -0500 Subject: [PATCH 25/69] gyro update --- .../frc/team708/robot/subsystems/Drivetrain.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java index 7b513eb..3aa885a 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java @@ -53,8 +53,9 @@ public class Drivetrain extends PIDSubsystem { private DigitalInput opticalSensor; public int sonarOverride = 0; //0 = default, 1 = high, 2 = low; Used for overriding sonar - private boolean brake = false; // Whether the talons should be in coast or brake mode - + private boolean brake = true; // Whether the talons should be in coast or brake mode + private boolean nobrake = false; // Whether the talons should be in coast or brake mode + public Drivetrain() { // Passes variables from this class into the superclass constructor @@ -259,6 +260,12 @@ public void toggleBrakeMode() { rightSlave.enableBrakeMode(brake); } + public void setBrakeMode(Boolean brake) { + leftMaster.enableBrakeMode(brake); + leftSlave.enableBrakeMode(brake); + rightMaster.enableBrakeMode(brake); + rightSlave.enableBrakeMode(brake); + } /** * Sets encoder direction depending on which side of the drivetrain it is on */ From d39270bdf9afc6c6fdecb2411641ae203cf4cae7 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sat, 18 Feb 2017 13:33:51 -0500 Subject: [PATCH 26/69] gryo back in PID --- .../commands/autonomous/DriveInSquare.java | 2 - .../team708/robot/subsystems/Drivetrain.java | 46 +++++++++--------- sysProps.xml | Bin 6190 -> 6190 bytes 3 files changed, 22 insertions(+), 26 deletions(-) diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/DriveInSquare.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/DriveInSquare.java index b67bc87..6682b1e 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/DriveInSquare.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/DriveInSquare.java @@ -44,8 +44,6 @@ public DriveInSquare() { addSequential(new DriveStraightForTime(driveStraightSpeed, driveStraightTime)); addSequential(new WaitCommand(0.1)); addSequential(new TurnToDegrees(turnSpeed, turnDegrees)); - - } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java index 3aa885a..4b735dc 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java @@ -118,36 +118,34 @@ public void haloDrive(double move, double rotate, boolean usePID) { move = move * Constants.DRIVE_MOTOR_MAX_SPEED; rotate = rotate * Constants.ROTATE_MOTOR_MAX_SPEED; -// if (usePID) -// { -// // Enables the PID controller if it is not already -// if (!getPIDController().isEnabled()) -// { -// getPIDController().setPID(Constants.Kp, Constants.Ki, Constants.Kd); -// getPIDController().reset(); -// gyro.reset(); -// enable(); -// gyro.reset(); -// } -// else -// { -// // Disables the PID controller if it enabled so the drivetrain can move freely -// if (getPIDController().isEnabled()) -// { -// getPIDController().reset(); -// } -// } -// drivetrain.arcadeDrive(move, rotate); -// } -// else -// { + if (usePID) + { + // Enables the PID controller if it is not already + if (!getPIDController().isEnabled()) + { + getPIDController().setPID(Constants.Kp, Constants.Ki, Constants.Kd); + getPIDController().reset(); + enable(); + } + else + { + // Disables the PID controller if it enabled so the drivetrain can move freely + if (getPIDController().isEnabled()) + { + getPIDController().reset(); + } + } + drivetrain.arcadeDrive(move, rotate); + } + else + { // Disables the PID controller if it enabled so the drivetrain can move freely if (getPIDController().isEnabled()) { getPIDController().reset(); } drivetrain.arcadeDrive(move, rotate); -// } + } } public void haloDrive(double move, double rotate) { diff --git a/sysProps.xml b/sysProps.xml index adeda3ade0022e2f123449a5659035f6f1240cfb..a9591affdaa377a6092ef7510afeb11daa09449f 100644 GIT binary patch delta 59 zcmZ2yu+CsZ37?`fgCm18gA;=Zg9U>D5GpXZFt`E5jKHEma`RL^K^Asn22%!O2D8m; Hg&J7_U4;ub delta 59 zcmZ2yu+CsZ37?`RgCm18gDHa{g8>*SFt{?f0I>ywF;L8z!D#bTK0y|C69y9oGX|5* IYlRwF0ab?z{r~^~ From 21839825208aa34fae494bbf206922ab26b3cbfd Mon Sep 17 00:00:00 2001 From: jpiergal Date: Mon, 20 Feb 2017 01:07:37 -0500 Subject: [PATCH 27/69] After initial integration testing --- .../usfirst/frc/team708/robot/Constants.class | Bin 2565 -> 2809 bytes build/org/usfirst/frc/team708/robot/OI.class | Bin 4245 -> 3913 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 6107 -> 5666 bytes .../usfirst/frc/team708/robot/RobotMap.class | Bin 1277 -> 1361 bytes .../robot/commands/Climber/ClimbDown.class | Bin 1251 -> 1108 bytes .../robot/commands/Climber/ClimbUp.class | Bin 1245 -> 1091 bytes .../commands/autonomous/DriveInSquare.class | Bin 1495 -> 1495 bytes .../drivetrain/DriveToIRDistance.class | Bin 1443 -> 1382 bytes .../robot/commands/feeder/SpinFeeder.class | Bin 1095 -> 1293 bytes .../commands/intake_gear/GearAdjust.class | Bin 0 -> 1378 bytes .../commands/intake_gear/GearIntake.class | Bin 0 -> 1300 bytes .../commands/intake_gear/Intake_Gear_In.class | Bin 1381 -> 1394 bytes .../intake_gear/Intake_Gear_Out.class | Bin 1145 -> 1145 bytes .../intake_gear/ManualIntake_Gear.class | Bin 1495 -> 1495 bytes .../robot/commands/led_out/LED_out.class | Bin 1194 -> 1194 bytes .../robot/commands/shooter/MoveHoodHigh.class | Bin 1106 -> 1106 bytes .../robot/commands/shooter/MoveHoodLow.class | Bin 1102 -> 1103 bytes .../robot/commands/shooter/SpinShooter.class | Bin 1156 -> 1469 bytes .../team708/robot/subsystems/Climber.class | Bin 1074 -> 909 bytes .../team708/robot/subsystems/Drivetrain.class | Bin 6795 -> 7454 bytes .../robot/subsystems/Intake_Gear.class | Bin 1269 -> 1188 bytes .../team708/robot/subsystems/Pivot_Gear.class | Bin 1488 -> 1632 bytes .../team708/robot/subsystems/Shooter.class | Bin 3037 -> 3037 bytes .../usfirst/frc/team708/robot/Constants.java | 23 +++- src/org/usfirst/frc/team708/robot/OI.java | 61 +++++---- src/org/usfirst/frc/team708/robot/Robot.java | 67 +++++++--- .../usfirst/frc/team708/robot/RobotMap.java | 22 ++-- .../robot/commands/Climber/ClimbDown.java | 9 +- .../robot/commands/Climber/ClimbUp.java | 15 +-- .../drivetrain/DriveToIRDistance.java | 2 +- .../robot/commands/feeder/SpinFeeder.java | 4 + .../commands/intake_gear/GearAdjust.java | 51 ++++++++ .../commands/intake_gear/GearIntake.java | 51 ++++++++ .../commands/intake_gear/Intake_Gear_In.java | 4 +- .../commands/intake_gear/Intake_Gear_Out.java | 2 +- .../intake_gear/ManualIntake_Gear.java | 4 +- .../robot/commands/led_out/LED_out.java | 7 +- .../robot/commands/shooter/MoveHoodHigh.java | 2 +- .../robot/commands/shooter/MoveHoodLow.java | 2 +- .../robot/commands/shooter/SpinShooter.java | 15 ++- .../frc/team708/robot/subsystems/Climber.java | 2 +- .../team708/robot/subsystems/Drivetrain.java | 116 +++++++++++++----- .../team708/robot/subsystems/Intake_Gear.java | 6 +- .../team708/robot/subsystems/Pivot_Gear.java | 19 ++- .../frc/team708/robot/subsystems/Shooter.java | 4 +- sysProps.xml | Bin 6190 -> 6188 bytes 46 files changed, 363 insertions(+), 125 deletions(-) create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.class create mode 100644 src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java diff --git a/build/org/usfirst/frc/team708/robot/Constants.class b/build/org/usfirst/frc/team708/robot/Constants.class index ad1b683e881e51aff6df5a6e1762d03ef2acbe74..1d674d4cc5668ae765efdb1c89a214c2639d1311 100644 GIT binary patch delta 1233 zcmZA1NpI6o5C`yiPGhHOdxD?_f+&R&C>0e@fk2=pP8p3 z=Kq%H!(ko^`h%t2BgKYYbA!ODvER1yu30aemc#wVA)YOWWKRzCjQ>-c_rFK#Z%b{{N`FY6qO?C7 zP5XbMDP{U8ePVPOB`HBsQl#_V8m(Y=gS*&CS{c??u~JYs*sH;DKV_`(B<+DzycR5X z=>^|xk2!_Goo1~jqm55)Ss)_XX>^@C6^vCH5J+Xj!YN5Kxe z3iqqA8{jeaVLB4N_oM7%9yA>1zy+URp8}s|p8?AkIt!K?o&!t&I1DI1wDT~4JRt7^ z1TxXZB^z7JKnPD&>I1n|8U#KYfT{jw+ z>Rst}et~ge;=;HzCa(PrF8Bd#2=ARmd(tj$`;FwS#W_iLq^f-37z z*1B$Heh>9ssE*D|lzl%{)CgH$Elmf0eX1NxI>iM(orhj(yKHB8@#fpFws*>TgcXH? z-n0vP#pzbV`h&9^xyWNDY$!Oav|!vR?9sb~O+F{wPUnR?sNKS*evh!J?@qh}Wg$G^q}xzdPw*veJr_O#IKjf2~l9$Jed@< z@~1@pH1os4XXvw{{v16bT%<>Z&(mY^eEoM@u5vMcy9$$joV0L>4unIxDqN%M!X3Jp z^`hh>k260j@}~ZZXl9O{NAi5L7*~Z&KaJG<1>r^JuL+yQyB>+a4F+xsn}S;@FQt52 z*!)#@a5r8c)8IW})8KvKWqSI72t4Fe1?~urkNM*tX&JBwzC(R&?Sv;B9frY8yvlKV Q>)OT|o>B_WI9hnV1%S3+1poj5 diff --git a/build/org/usfirst/frc/team708/robot/OI.class b/build/org/usfirst/frc/team708/robot/OI.class index cde317625ba56aeda191c80a563848875bd0d238..29deb2f79ce4a36d529cb5f22b1e64ae5e42febf 100644 GIT binary patch literal 3913 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 U-*`~d;cB~3qV-2;w+WB_7r~%}aR2}S diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index e32356334257d80cdd93aeb744467fead0b3a9de..afd200a47273be75e55289e6a7305ae9e9ed60a2 100644 GIT binary patch delta 2199 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 VDNFEeUU`}I1(V!U_{@s&{{?4I#m@i$ diff --git a/build/org/usfirst/frc/team708/robot/RobotMap.class b/build/org/usfirst/frc/team708/robot/RobotMap.class index f2d3e7c6a17fd4a86a596289d710d56a70f4daf7..5c1de8a5a94395a65b8cd0290e2d06a6608e3232 100644 GIT binary patch delta 316 zcmey%d67%>)W2Q(7#J8#7#z76m>KNY8SL2^95#x6ViXiePfaWePR%RMFA6TtEJ@Co zY|o@%$r2DAWWdM(q6{IF5ri^kWZ-mnbqwSH!# zFq{02$(2!Nvk9|3W4$(mB!dnED+40~8&C-ogDQ}(i^OLK^7WATAbEWxK1kjGiO&h- z8zS*FfqWw*J~xnWjNtPDz0C-OKvw}t^T`KT#MCW-4q*fG7#MgNEP*5sn9a&y#b6EO MF*4WyNhStc0EA&DumAu6 delta 257 zcmcb}^_Nrh)W2Q(7#J8#7;L#1m>I0t8LZhEY&MF1Vzl5d&dAR%NiA~COU_S8EplXJ zKofCd25MwwWZ+BA$;?ekEebBrEJ@CAoGihlFu9nihs}_|h><~U@=hkT$=b{^j1rqY znC%(sxfvuGv>8|#7#Y}r+L;)1fP7sfz8;XTkHl96@(qyq>_DB23_!Diq%qJ0eJ~&B p5UuSDj2pp5ngB^QpfCdiFM}zNo;8O#{W8MqmM91E~AO8}z9ClUYv diff --git a/build/org/usfirst/frc/team708/robot/commands/Climber/ClimbDown.class b/build/org/usfirst/frc/team708/robot/commands/Climber/ClimbDown.class index 293e50761875ace70e1c1ea512a3a23a56c438a2..23bfb9576d62cb518d6c9d61e035d309ade43f31 100644 GIT binary patch delta 543 zcmYk2%TB^j5Qe|gf`^tCRI1_y6hx4Vm&8kmTjSnW@CCpG_QXdZ>`Z(EH@INoLietH z025xoCos;TwYEwBGwsa(&77G#pP8$VpVv3woD-KU+YURFTwKbU-KF<$Ny+1~N5x3h zr1mv6&B6Hcar|{t@bEQtj|PVxOJvQ(aT~ji7 zQgd~>hyuG_QltjM{yi0GkzKT1LLqq3+~n3Sjq>t0hb`)pk|;}_W%=@?!srUCa;7MR z9*NuXnw*-7SW*rK3PHlCVq*{+yVAzgxi44&=^1*;=nvrv3W_*vCNOS{Sz}$yIjQN$ zX)u=kY&0=IDdDtYrz|IOUPMkU1I);n`Fo*1>|T|N)DjFGGm0_eEMlZvGo1eogn*_j Qs+9nwBY=`inNhcX0UKm1djJ3c literal 1251 zcmah|TW=CU7(D|E3(E?%)z)h-RxCHW*m`NKX<|yMO;8gtJovW2w4G)zIJ?_cf0Hlv z0TUnm0sbiCH$Z{Jl)lW&H#6UN&Ufa_pTEC;19*z(1`OOw<31J*q_LF7GFEgvFp$8i zfrrSe?MFJ+bQBnpuY@PU9fo+J*ksUl{SIfy)rH63M{bMDPj<_po!PqIww3)2eNI2+;(47w=C(m{LpIqu4{Xpz}j_$Dmj>I{;9XkU?_ZH zJK`Im==_YgqmWi<*FWKnF6SKvR#Vr4J-QhjsSV=#nMUr>IwQQ0OBr=Tbz(I9NVfT& zP@J=UJcYAn1Ez8A{VTh(h65Z)}%$?T(2j*wC?QlGx8o z+=9ulH9h@u0T}YU6IrKSVGY!yl_Ofm7n)hS1ML`Ar$c;HN|S)?fy4|OS3F7(wSuof z$lcMi&|{<|{}Ktw=}{|%`gCTEivruqILp)Neb^^c`CTsU(3e9Y3F8Wmld=;#{g8*R z&y?e|!hVrVQJoI@e~V-ga$;mV@5o)MOs&|&3jGIz{tl1?`3WYC*C^USj8=eI`UzG# zN34hV4~k>R(wIeDok63!8H#fKsDB?bxK5FV*-@=B#p;ZW3n(yPZX%J566Z#Vb%Ieq zGw0B>9+Gc~$662ixXysc0#anf9Pae%%@aw=8P-eD*$vzzJPq?$pjow7p;)I)0AfzfAMB6j780*N6qqn;GMyZ-=@ C1PS#3 diff --git a/build/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.class b/build/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.class index c3a35771b3884e3d9b70faff41281ff9b86446aa..e4c3a1fecc94154a131a0a2b208753aa3fd0f127 100644 GIT binary patch delta 535 zcmYk2J5mBc6h%+Z06m{ZRQ!Mli1JauDlL@_khu$U3#@{iHBgfnxC9dn2n?{BAOzY0eCN28JP_VV6)bvL(x>O0-fR>cSqP4YylY zIvIve8G9+?Dq-aNYxMv7V?bZVG{^w*2|%&`*J|Y# DK`kn{ literal 1245 zcmah|-A)rh6#k~&cH3q75fv3gsfe_tbSo&5U`R{}N>Vkk(hKjl?Eph|yX)*OqR-@w zT-3x1AHat)p6QmhiJ{z_nKL`z&pC7U&);9a0X)N&0R#85Si}PZSv<^Q2{|2)45YAZ z;4xOz@e>`ZI`RzZm!c!WU4~@7&|uK2UYj#a*F=ZEi`*ucAMK_?C$lxLWjhU93YGT{ zweUm)4BItN9$QgxBxDd;N3vyw+;(47wk_#3z0hiTu4{MNfmL;cqKwx=e}}

      cV!! zH`37gId4TF?Xs?S#_K-kZ3ecdt_AyaGdNKPtm`P7uux$rj&~o0!m(c4F8A%WiKp1mv1wAHpPRS~ zlVNK-{Ho#^R(LzIzWBn5`$juQG*2(PWmV&@F)WW4_@H`B&1=QYW!SjpIfAGed<{bG z4jzOaA|v_dNJvi4S<2VOJF8z3?5L4h8gK9Y0gaRAb7_a3?6;9LuJJh9baJO3^YGQV znl&wdP@sXRj2HdCL>dm7!N_*r(qt)`y+Q*y`V$QLYk)LpmS9qxq-+-n+5u+qCs^?U zi7t{qC{JLD;uMk;C!t}QFf$bCW_+Kr8!a7Ly+V4vV=r0B-grQ^hVa!wQU^+jVkR9wA8el^N!H{ucfLizEk< diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/DriveInSquare.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/DriveInSquare.class index 3bbd5c6d2c19fd4dde2b957913b1269541a4b862..9b4deb8906d679fd07cad6de8d3e2c8afcc74979 100644 GIT binary patch delta 31 lcmcc4eVuy)A1kB&WPVmlM&rqztQL$Glbe8~?d098G60C52ps?b delta 31 lcmcc4eVuy)A1kBbWPVmlM$^fjtQL$`lbe8~{p8)OG60DW2qgdj diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToIRDistance.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToIRDistance.class index 496332be08240fdfaf80e31508c2c26055ca908b..dc6005128901b0843c55dd6335d8b554a4173397 100644 GIT binary patch delta 641 zcmZ9IOHaa35QWd}EnX?N)CY=aK?R=$AIM7u42dRgO#Dgwh%QXrx^UwLH7s1XHSveI zcW;a{m!>u>dd{RX{pNHYGGEU1=kMD)fF}A5Tx_SYgIxz2duft=mVl+oQe!!AaEK$8 zW1g!koG3I#H@D&<2VbG7(L!6JgHw$xJdJsl1(rpYId}?Z8t3S0^x$i3!WXy6NwrBU`@iW(5pyAmI>~kk@mwSOavw<@v^CoAR^&A8` z90um>&3zsOx-F=bYL0XH4WT*UE z5i1vSOD@|bpXS78nJa=@z@Fk-p1QDU?cIBP@{uI|+}FFfly|4ZsgF5VwWDjUcAX&l zEo0=asv*7d4VgJjmgxpyPdBh%qWMXx)d`|SXT+%FL&E=rj_eLggvyxUxF&wY^?we6 BIClU5 diff --git a/build/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.class b/build/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.class index fdabbc6ac9a46c258f07b9a87c5fd5f391f57705..fc28b42d5c0b7a5d97ccfc56a75439a659b149a9 100644 GIT binary patch literal 1293 zcma)5+foxj5IvIw7M3MZF5Yj5NC<%e6M+&-OR=b;D)=B4558ENWRStlZrqv0%QyL= z4_M`cAK*t>_Uta3l$Mc~p6=N_r%!iJ|NQm+2Y@=(Z8*3#itD&xV+=Qqcgwi9Vpyhh| zZYWKhUKaGBR16OqLHLG8>Oh7{^MkO(wQxJ@D;qovnt|r6pwn^vw&Djuv_;7Gy3*f{ z-AxAD^c}n(L%++BB~CSukHu0^bT@15>Q@k+Er3ofoWmx^s7*y0$AC(pz#k1~@ zgyLN!LqSulmK%e0?VaK`%}X(JaNmm8P1o}n*3O=LC&4`>9F3n3uJJF;G;(@Nk?ZXS z$29Un`I!+@KQl{Tc81Xok?aOK2#HDQpoS#3Y^Y> zPmquQE0L7a35H1u9afK~NI!tev1sj!nC+u0Wpo!vUs7I`PLnp5|7>hrO(JBz51Gr5 zv;isdaf%#|domKYWb{uNRqEyvwPCrBY&;{ooRQU1vZ2Ze>>i0tihvq*uHHv5loBvp Ii8WvS4ek*ajsO4v delta 546 zcmZ9IIZnes6o$WXmT{bc048jKERYc51OZ|Z6+%Md9$X+niu;^^0;S^&G*ASIf`SH# zO8^%^yfMbHXx_{}^ZxHGH{P3j@c#Y$0vxgHQDC*e8Wj(hbcj{~W>RgVp!*Fm- zL%0Pg4|x=Vm1snr;m8e4@PrB;aVBIQL_5q#oFyZ1o-DpN%AzInH=h!7qO$V)$Lfl< zEHwq>8QGUg%Bd3PLgGA;IyTRh21*lhQ-CL(Kn+bj#c&gb&!RZ(Bt1DT!^zy+81*l+ zjzlz5RwuE_u43zPY}L{H`Tx~Bva=wC&t+(7{y1_orNUPc@qd~wotDT_^0lMSN3$rpL3 zGd}nO{85f)lhAe?r+qoQXLHVXzH`g(KRsi=xh71x|^3@9a{IUWSTp*{&Vi zo=|%HsL4~|GdwT4UeyZx6XE&NI`PVuv8u8FS{O6M2697wvQmE}&ostB+>W#;dbrGLsRA>sEVd7bV9gv>oJ zXh`+NIC2B8%=d-z%eDi}pV{ZOiEGH{cx+-GmWc%{>R2+dj1`7__dEhAYSw}6@P=J6 zv5GYl>)6oo#Kcog+ zR+T@h&Q;wR)_Qcy4@&+QUvkH{4x@gl3R06&9{&^wk5k7Bxng&QM^_-5YO2P&(|mnM zZE_pjv!(0B^`#g+cy@M!*y&X+cP`X8YPrK%H7pHr?#gi37*>0LbtL^Jbc=Id?#}$b zZZx-!d(L0Fl#ODu7cQ1B-3BIT^-Nk=pdU;PBFQXi&yb)SVCH{-@3r`tnT}{{k!$&!rB4z8HYvUdZ(R EUkqL`I{*Lx literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.class new file mode 100644 index 0000000000000000000000000000000000000000..99a88a1662b3620e54712e74bbdb369e71cc322c GIT binary patch literal 1300 zcmah|T~8B16g|@xwp|vADEKW10;N=zZ!jo^K)@zd6EQsaLbmNt2D{xlJB#RV@=I#mlRST(R_ zVI3P5HZf@7E(RH1^v1YG3x;W44eZZNVMl7xsxHcBR~p*8k(LZoz4N@&%16RnNzSl- zO{4sv?0@kUcYQl*&9N4b`jeLYQy?U#W*2g$-V6_~K(_QiP4uSuwn!cFnp`@{ld-gv z;~JjbjUaYLjjNptJ&CDYagOF>wRh70mr3L1dguJLM@%%*Uicn-6fLyelR^h zWQWMxMuJv=mHz>jzeJ*i00j#+oNzW3di^ zP6piX3S{lTTkXISrO}CoFOf>N(Eo~f%(h^3a3Uh(NK+wMOon)4M3Q1+yfmGS5>2X` zh~A;UF0Vj;%^;EdrfpbM#A&9BQ=-j@=0A>HizAItlXQoQ8K#{l9SdC$MjPT@8)7Af Z=*zc|`4?b`crJGV^u+*-)Y42J`~}&l7pVXM literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.class index d9a523244d086fefe3f2726abbc2acfce4ba3e68..c3eebd314220e7b465160a54ea63fcc53ccabc34 100644 GIT binary patch delta 586 zcmYk3yG{Z@7=^#t1vae1Dt8q@R6x0S1@DEiur=`stbGce!E7ZjU}GaD6vjxe&tYL} zukoK{voM?a=j5Mr&YYS3a(~?GkH6PmBwBpjg zu`4fc>QiMsiD5fO5B&%3Z)mJG!>;Ap{MuuBq5R|A^%F# mm~l%*Zso|V8=A#iBT`cnS0X`EBDW?6g&=J_bWl`+)T{r5Ml@{z delta 598 zcmYk2y>=2&6otP#3>g_NKSBfniI70TpFasEYUQ%9^)2!o)G1wbX;awPgse4%g`JIg zj=X@qN%p~619R8i_sltG@4L_a8{frW{@nlk1-#>9Oo_b$FX_d2`WEfS959F&+IeVj z6f?4DWRYhaF^QOd`}(g}rV=spyyCUz4R1ZioJ7pMv|Em&Rjx)TED6gLRjX0eMmC(VuC=Q(M4H$;~a8yWGO+`6y7B1p(zE+{FgBt+k-u5(XTg!(U-a&E2MAg{PVfuIyLD4Py{W0bkU+zRJXfEFRA#2ryal-*hFflXEH-w7%&y)prG84OW-`I7CB&PV v%W?<<%|6s)9d0=)Wn!I7Y@UkcCke$=WFmenPcW9}$(BMsRdBpmyY4;$%vLY) diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.class index 363ee9bbf5447e9e8ad4658803a2d0bcc9f55477..09718df172b86ac10476d0a2d07a89f6f26ae8d4 100644 GIT binary patch delta 19 Ycmey#@sneMEQkHenIJH0qiP5X09sWDr2qf` delta 19 Xcmey#@sneMEXV#23}CQPHG~BKMYsi( diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.class index 1d107a47add0942f3e99443ea2cbd1ff75c5cb71..0a4cce30b0e0b663b78f923afbb2396b22dc482e 100644 GIT binary patch delta 19 Ycmcc4eVu!P35Wg5nIJH0qs?qq09XkK-2eap delta 19 Xcmcc4eVu!P3CI2q3}CR)W;QDTLu>`j diff --git a/build/org/usfirst/frc/team708/robot/commands/led_out/LED_out.class b/build/org/usfirst/frc/team708/robot/commands/led_out/LED_out.class index 37276ae9037073d2d1fdf8ca09ac9a8411372f82..daa1ec40257cce98e25c72c87a72709db613d329 100644 GIT binary patch delta 79 zcmZ3*xr%cGBQvKg0}F#312=>GWG-e4M&-%Q%wfFh44e!a45AF0KpEZ1%b1-Q4JN+? g%9>7AVzFVh0_w1yoXldwEzQ8lAkDzQz{DT}02MO~O8@`> delta 81 zcmZ3*xr%cGBQvKo0}F!;12=>0WG-e4M#ag_%wfE$44e#V45AF`3~~$_lb10&F=|hK k$!szC1vAfNT^2)DQ=lHR$;m7>+>#884AKk?3``6%07*U#djJ3c diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class index f2b71eb98f60763a783ef1757b2ddd09fbfd118d..71d1ef08d6e4a464db872e2ca4a4c9a5e68e298c 100644 GIT binary patch delta 14 Vcmcb_afxF?95WM}!{h|!PXH!91oi*` delta 14 Vcmcb_afxF?95WO9g~({*@rnZbIyG8ojEi6=7pwwyd?=-LrB-wTRa?mn`z1@c69oSaoSuv{VSnp5$Qg~yQCaoi&_@D7FR`R1XU zGktCqmuFW@*U37*nRALo%g%eIckDPmcg;*m*qN%n#-K|E!YYVYlt<$)crNfs>&*C8 z?&+>oswLBfm!^~6G0#`nJ|W3%(mRArpl(p|<&K_l0yoFgLbC2|$TV|eomvJ4FsNb4 zz%o`0+{UVbH6$1&nqOhdu|40ieNV%>fembGNE*0vMRBZ zWHNtlka}+Fog?mN9NThJLOy+t+KFZ)MG1<|DSzNN)ND#@TPA3y_71GV{=;2zdA?J^ zD9u=ZW#m*a*>fa^$lgYTG@v*B6)gS*kuq9nQE2&0?g%cBj6xwfKynZr6c#1#Me-Qc zP+Y=gvJ_kiVW-HJu&fRu^Ma1l16de290tB277!_;IT*loj9?s7n517>9P9LBscx+2v%mh8Z9ykQzISRwXEYKv9TG`8p(F$yFplGV;hKRNPJ z#pHCxYD%pvGY9BpuqnpD%xNNLA#z^GJ=&O+06F3z?s&5l;>}r;FclJ1C0uPGOg2Im zSr?E#tR-JXTK1DF1AWgVPJO{@MOK;I)Ot3xYKV~JJb@=1B|Gv1=A&>UL@7dar-*nX a#2*7%=~)gkVh&Rh@}LUKk>z-LJvOmp#Xp#v zwxjRJSauBP8ZP{s>G?r)SHzF^PvnZG0vlDCq?V+WRc-pus4y-66?G7QoUt{4k<$piIrE?FF){PfJy%gt6(g*<~;cQ(yxjhPv~_^y1y1*R%TVVWrW%@7>xDm6p{XTiw>+ z(RLMq0*V49#GMz`iA9F?sA+esad*^M_A;2pmGi~)vMXHVuNf4oLyD{ja?KEsLn&IP zn7q&#an60|$rfoL@(Lud2Ay7#*rrTS1rWgwcIjq_E_*1hQMG&%<~#V!E7UmxQ_6ji zERAj;Lvyn$9N}?dh|AejQzwoxp+KF%pPNJb3o+<3^9x9H0aaZHbzl$sgkd=FY@NBb pBrWt0tw^-eilrs3DR)bFkOJ9}yRly{{)KS5(#gDK4yn`!{Rc8wJ6iw% diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Drivetrain.class b/build/org/usfirst/frc/team708/robot/subsystems/Drivetrain.class index 14672b970e459e1bd854443407c70c409cf8ccad..23cb924f546953100574097bd7c65c1502303477 100644 GIT binary patch literal 7454 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 aylN+op+>D#`_(E=Za?Aw)ot5*<<9}eK+!$` literal 6795 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 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.class b/build/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.class index 12a551752f4a2a75c0c283a073d1942af4bc6df0..9c71a85a45be6b94631c350752373b9e518655b6 100644 GIT binary patch delta 530 zcmZ{gIZgvX5Jg{)k=s2U2Fzk(7UKomV6z#FoFD;b;RGb4oB>TtMo0oe4iMr1T!VlU zkRtw!7lweO`&X;~t6%ly?%m-1`{fPjb8M;lfb vR2(~vvp$_;pfKiok|!MH`4gw3INcOw631xNWP>vQyN#2S@pl`QB;@7~HTop? delta 601 zcmah_yG{Z@6g|Tt!)|sLL_|oxc5%~(#!APuWtZ~*px^bu#l3NlbAQ4A+5tiMxm^Z z9P$Phu;?lK+0Rd6Nn-i3^l4kwMy-ClTRYpY9h^9=sBkntMq3wRE9S?F2^&5WtB6Rf znJAzrv2J1mrRNXf6GZ{*&}r=KRgTUZwbQyIpk=ZZB%%1F<> zz>{u6QlQyWFn9tp@G`Qp4|Qt2r$P=UF-09gmsn4)%D~Du{seCux_xzvU>62qT;D*t z@8Q-S*r5%jObw-squHG=&ZZH#qGjbUJs7n_rgG>cw!4Y{1kNyUc1W-vSa6ho_f;S< O(%jRYn#OcCm|$lQsR7IAYoHT3T3`}=J1yz7GyMVmQJr4x8sjl8eYv`l_8y&cbyk1>^T%HR9%0u(DTe|U94tCm%3&P$ zvzW#Mn=NPI;i1hwwPD4ERU01J@Hm6d?6{W0IzD&sg@Y#yxwh;ov!jfP7%o+P6?ndh zgje3&-RCV8(kJN+8A|h%VZ5~PnjuwI4Z$!~m7&<}1a%SZ^LmR`3RUIv)@vR~JMS%~ z%%Ri_kE<$bdL4ZrBW=8c$oGuk!P>)hFH&`7Jl(15AGHyI_Vz5Hw=V^c=3Mc8n0371`bi5Uk^U2Nhj7iCmjys&#)xas00iY~rJkzq1sJ10V)t|xM_jc*)$ z>!OMshSl>=9oc=7D;gc|s4czZ)+lSq`a6$Q*?aJ6CwE4kC~ezYNQ*GB!rU3fC={5nbt1ck{yw?sgc8sNCXO3v$fFcOBk%k*HxPo^|FBBAI1c3p0#*xAgy&minx( z!UNgt9cV4C_e4aVAqNpG!%Xa|stlw_Y*cP3Z7oL|^x24wiKZ}nN=qYE82gaCxjMR~ zI^dCMocPeI+3A2Sv+a&ael$l7c=g=6G?rh+ldQoN2d z#aRNmMh9J|>;{UsiTjwN6~IlvY3C!FF?`%VcqyLK+9_B%{`mGlA?p|3Akc*ICOuZ; zR2=h}KgPr5fZ1h0#g?u7o>UUiHez-B4 cm_%g&Dc_SbhI_H-c|4~vM|3>Gd-nX=zsJ#9ZvX%Q literal 1488 zcmaJ=YflqF6g>l#ZOc-yC_Vr!@+zP%F9odcHX4&+3?&%(LZLl~B#49^Ia82E8M)aYp81Cd{ zaNyL`z8fg*><1-B3+}Bgt~-G&O6{mxQN34Mc*=QY2<<%=JfPW0Gdd^sd99+e((|}q zW{7#RE}E1h>6{^TPF01VBbH+rC}>`Kx5=wb3jMBnc2q7Lxw>>1ir8hK-j=AhdJ&~% zl_V+Qm$zk(tHYw?0l~!!vKExYGuP-FJY{zKEw6Ki*|SAurLQ#iwX$&m7a7j~w_S#r zvmv(3c1Vgr$k<3?*us4q4{+7S1a8=vG~pq}Z9FpBW87f45E4!8%ixGqq*SQf!V?=$ zk!>FbqAmg@n#T+)XEW*Q5UoIzYtB*CbsEl6R&k4O9a3t%atbY9>D{DX7^f!B9uo>~ zJ^kw=ri-?*5C+Po3c|(4K{cH#OXq!E~>hAaLfA24J zy+74n+Zw4c^JAR?8wBE^kVQnX)BzG}lbCLUY|=js$Y^q)DdRg5uakp~!ZyXJD-B!M TF@Oy+G1CD(+J>G9w=nw`MhY=_ diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class b/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class index 31162ee335dd2ce71d73f43eeae39697d0867984..ad82d4f0b8806402f37c9fb8611af8fe452a6a19 100644 GIT binary patch delta 14 VcmcaBeph_MO)f^c&9}Ii838Xq1vUTx delta 14 VcmcaBeph_MO)f^s&9}Ii838XM1u*~s diff --git a/src/org/usfirst/frc/team708/robot/Constants.java b/src/org/usfirst/frc/team708/robot/Constants.java index 8cf2bea..01279ca 100644 --- a/src/org/usfirst/frc/team708/robot/Constants.java +++ b/src/org/usfirst/frc/team708/robot/Constants.java @@ -9,12 +9,22 @@ public final class Constants { public static final double INTAKE_REVERSE = -1.0; public static final double INTAKE_OFF = 0.0; + public static final double CLIMB_FORWARD = 1.0; + public static final double CLIMB_REVERSE = -1.0; + public static final double CLIMB_OFF = 0.0; + + public static final double GEAR_FORWARD = -.8; + public static final double GEAR_REVERSE = .8; + public static final double GEAR_OFF = 0.0; + + public static final int PIVOT_GEAR_ENCODER_COUNT = 1024; + public static final double MOTOR_FORWARD = 1.0; public static final double MOTOR_REVERSE = -1.0; public static final double MOTOR_OFF = 0.0; public static final double DRIVE_MOTOR_MAX_SPEED = 1.0; - public static final double ROTATE_MOTOR_MAX_SPEED = 1.0; + public static final double ROTATE_MOTOR_MAX_SPEED = 1.0; public static final double VISION_ROTATE_MOTOR_SPEED = 0.8; @@ -30,7 +40,7 @@ public final class Constants { public static final double SHOOTER_MOTOR_OFF = 0.0; public static final double SHOOTER_MOTOR_BACKWARD = -1.0; - public static final double SHOOTER_MOTOR_SPEED_LOW = 2500; + public static final double SHOOTER_MOTOR_SPEED_LOW = 2100; public static final double SHOOTER_MOTOR_SPEED_HIGH = 2500; public static final int SHOOTER_ENCODER_PULSES = 12; @@ -47,7 +57,10 @@ public final class Constants { public static final double SHOOTER_PEAK_NEG = -12.0; public static final int HOOD_MAX = 2000; - public static final int HOOD_MIN = 30; + public static final int HOOD_MIN = 30; + public static final int HOOD_BUMBER = 1880; + public static final int HOOD_GEAR = 1600; + public static final int HOOD_CALIBRATION = 10; public static final double AXIS_DEAD_ZONE = 0.3; @@ -66,7 +79,7 @@ public final class Constants { public static final double SONAR_FAR = 80.0; public static final double IR_HAS_GEAR_DISTANCE = 4.0; public static final double ENCODER_BOTTOM_POSITION = 0.0; - public static final double GRAYHILL_ENCODER_PULSES_PER_REVOLUTION = 128.0; +// public static final double GRAYHILL_ENCODER_PULSES_PER_REVOLUTION = 1024.0; /* @@ -74,7 +87,7 @@ public final class Constants { */ public static final double TANK_STICK_TOLERANCE = .30; public static final double DRIVETRAIN_WHEEL_DIAMETER = 4.0; - public static final int DRIVETRAIN_ENCODER_PULSES_PER_REV = 128; + public static final int DRIVETRAIN_ENCODER_PULSES_PER_REV = 1024; public static final boolean DRIVE_USE_SQUARED_INPUT = false; public static final boolean DRIVETRAIN_USE_LEFT_ENCODER = true; // variable to determine which side encoder is on public static final double PEAK_POS = 4.0; diff --git a/src/org/usfirst/frc/team708/robot/OI.java b/src/org/usfirst/frc/team708/robot/OI.java index 02ec695..ae157a1 100644 --- a/src/org/usfirst/frc/team708/robot/OI.java +++ b/src/org/usfirst/frc/team708/robot/OI.java @@ -1,5 +1,3 @@ - - package org.usfirst.frc.team708.robot; @@ -12,6 +10,7 @@ import org.usfirst.frc.team708.robot.commands.intake_ball.*; import org.usfirst.frc.team708.robot.commands.intake_gear.*; import org.usfirst.frc.team708.robot.commands.loader.*; +import org.usfirst.frc.team708.robot.commands.Climber.*; import org.usfirst.frc.team708.robot.commands.visionProcessor.*; @@ -36,14 +35,12 @@ public class OI { */ // Drivetrain Buttons - private static final int INTAKE_GEAR_IN = Gamepad.button_L_Shoulder; private static final int INTAKE_BALL_IN = Gamepad.button_R_Shoulder; - private static final int INTAKE_GEAR_OUT = Gamepad.shoulderAxisLeft; private static final int INTAKE_BALL_OUT = Gamepad.shoulderAxisRight; - private static final int INTAKE_GEAR_DOWN = Gamepad.button_A; - private static final int INTAKE_GEAR_UP = Gamepad.button_B; - - private static final int INTAKE_GEAR_ADJUST = Gamepad.dpadAxis; + +// private static final int INTAKE_GEAR_DOWN = Gamepad.button_A; +// private static final int INTAKE_GEAR_UP = Gamepad.button_B; +// private static final int INTAKE_GEAR_ADJUST = Gamepad.dpadAxis; public static final int LED_BUTTON = Gamepad.button_X; @@ -59,27 +56,32 @@ public class OI { private static final int OPERATE_HANGER = Gamepad.leftStick_Y; private static final int OPERATE_HOOD = Gamepad.rightStick_Y; + private static final int OPERATE_GEAR_PIVOT = Gamepad.leftStick_Y; + private static final int OPERATE_GEAR_INTAKE = Gamepad.leftStick_X; public static final int HOOD_HIGH = Gamepad.button_A; public static final int HOOD_LOW = Gamepad.button_B; - private static final int LOADER_STOP = Gamepad.button_X; - private static final int LOADER_SPIN = Gamepad.button_Y; + +// private static final int LOADER_STOP = Gamepad.button_X; +// private static final int LOADER_SPIN = Gamepad.button_Y; + private static final int CLIMB_DOWN = Gamepad.button_X; + private static final int CLIMB_UP = Gamepad.button_Y; private static final int VISION_TRIGGER = Gamepad.button_Start; +// private static final int INTAKE_GEAR_IN = Gamepad.button_L_Shoulder; +// private static final int INTAKE_GEAR_OUT = Gamepad.shoulderAxisLeft; /* * Driver Button Commands */ - public static final Button intakeGearIn = new JoystickButton(driverGamepad, INTAKE_GEAR_IN); - public static final Trigger intakeGearOut = new AxisUp(driverGamepad, INTAKE_GEAR_OUT); +// public static final Button intakeGearIn = new JoystickButton(driverGamepad, INTAKE_GEAR_IN); +// public static final Trigger intakeGearOut = new AxisUp(driverGamepad, INTAKE_GEAR_OUT); public static final Button intakeBallIn = new JoystickButton(driverGamepad, INTAKE_BALL_IN); public static final Trigger intakeBallOut = new AxisUp(driverGamepad, INTAKE_BALL_OUT); - public static final Button intakeGearUp = new JoystickButton(driverGamepad, INTAKE_GEAR_UP); - public static final Button intakeGearDown = new JoystickButton(driverGamepad, INTAKE_GEAR_DOWN); public static final Button led = new JoystickButton(driverGamepad, LED_BUTTON); - public static final Trigger gearAdjust = new AxisUp(driverGamepad, INTAKE_GEAR_ADJUST); +// public static final Trigger gearAdjust = new AxisUp(driverGamepad, INTAKE_GEAR_ADJUST); /* * Operator Button Commands @@ -88,14 +90,20 @@ public class OI { public static final Trigger spinShooterBack = new AxisDown(operatorGamepad, SPIN_SHOOTER_BACK_BUTTON); public static final Button spinFeeder = new JoystickButton(operatorGamepad, SPIN_FEEDER_BUTTON); public static final Trigger spinFeederBack = new AxisUp(operatorGamepad, SPIN_FEEDER_BACK_BUTTON); - public static final Button loaderSpin = new JoystickButton(operatorGamepad, LOADER_SPIN); - public static final Button loaderOff = new JoystickButton(operatorGamepad, LOADER_STOP); +// public static final Button loaderSpin = new JoystickButton(operatorGamepad, LOADER_SPIN); +// public static final Button loaderOff = new JoystickButton(operatorGamepad, LOADER_STOP); + public static final Button climbUp = new JoystickButton(operatorGamepad, CLIMB_UP); + public static final Button climbDown = new JoystickButton(operatorGamepad, CLIMB_DOWN); public static final Button hoodHigh = new JoystickButton(operatorGamepad, HOOD_HIGH); public static final Button hoodLow = new JoystickButton(operatorGamepad, HOOD_LOW); public static final Trigger hoodAdjust = new AxisUp(operatorGamepad, OPERATE_HOOD); public static final Trigger hoodAdjustDown = new AxisDown(operatorGamepad, OPERATE_HOOD); - + public static final Trigger gearUp = new AxisUp(operatorGamepad, OPERATE_GEAR_PIVOT); + public static final Trigger gearDown = new AxisDown(operatorGamepad, OPERATE_GEAR_PIVOT); + public static final Trigger gearIn = new AxisUp(operatorGamepad, OPERATE_GEAR_INTAKE); + public static final Trigger gearOut = new AxisDown(operatorGamepad, OPERATE_GEAR_INTAKE); + public static final Button visionTrigger = new JoystickButton(operatorGamepad, VISION_TRIGGER); /** @@ -107,12 +115,10 @@ public OI() { /* * Driver Commands to be called by button */ - intakeGearIn.whileHeld(new Intake_Gear_In()); - intakeGearUp.whileHeld(new Intake_Gear_Up()); - intakeGearDown.whileHeld(new Intake_Gear_Down()); intakeBallIn.whileHeld(new Intake_Ball_In()); - intakeGearOut.whileActive(new Intake_Gear_Out()); intakeBallOut.whileActive(new Intake_Ball_Out()); +// intakeGearIn.whileHeld(new Intake_Gear_In()); +// intakeGearOut.whileActive(new Intake_Gear_Out()); // sonarOverride.whenPressed(new SonarOverride()); @@ -121,14 +127,21 @@ public OI() { spinFeeder.whileHeld(new SpinFeeder()); spinFeederBack.whileActive(new SpinFeederBack()); - loaderSpin.whenPressed(new LoaderSpin()); - loaderOff.whenPressed(new LoaderOff()); +// loaderSpin.whenPressed(new LoaderSpin()); +// loaderOff.whenPressed(new LoaderOff()); led.whenPressed(new LED_out()); hoodHigh.whenPressed(new MoveHoodHigh()); hoodLow.whenPressed(new MoveHoodLow()); hoodAdjust.whileActive(new HoodAdjust()); hoodAdjustDown.whileActive(new HoodAdjust()); + gearUp.whileActive(new GearAdjust()); + gearDown.whileActive(new GearAdjust()); + gearIn.whileActive(new GearIntake()); + gearOut.whileActive(new GearIntake()); + + climbUp.whileActive(new ClimbUp()); + climbDown.whileActive(new ClimbDown()); // gearAdjust.whileActive(new Intake_Gear_Adjust()); // visionTrigger.whenPressed(new visionTrigger(); diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index b9cbfd2..3c4ed16 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -4,6 +4,7 @@ import edu.wpi.first.wpilibj.IterativeRobot; import edu.wpi.first.wpilibj.CameraServer; import edu.wpi.first.wpilibj.Preferences; +import edu.wpi.first.wpilibj.Solenoid; import edu.wpi.first.wpilibj.Timer; import edu.wpi.first.wpilibj.command.Command; import edu.wpi.first.wpilibj.command.Scheduler; @@ -75,11 +76,18 @@ public class Robot extends IterativeRobot { public static DriverStation ds; public static DriverStation.Alliance alliance; +// public static Solenoid pwr0; +// public static Solenoid pwr1; +// public static Solenoid pwr2; +// public static Solenoid pwr3; +// public static Solenoid gearLight; +// public static Solenoid boilerLight; + SendableChooser autonomousMode = new SendableChooser<>(); + Command autonomousCommand; Preferences prefs; - /** * This function is run when the robot is first started up and should be * used for any initialization code. @@ -111,7 +119,21 @@ public void robotInit() { // UsbCamera ucamera=CameraServer.getInstance().startAutomaticCapture("cam0", 0); // AxisCamera camera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); - + +// pwr0 = new Solenoid(RobotMap.PWR0); +// pwr1 = new Solenoid(RobotMap.PWR1); +// pwr2 = new Solenoid(RobotMap.PWR2); +// pwr3 = new Solenoid(RobotMap.PWR3); +// gearLight = new Solenoid(RobotMap.GEARLIGHT); +// boilerLight = new Solenoid(RobotMap.BOILERLIGHT); +// +// pwr0.set(true); +// pwr1.set(true); +// pwr2.set(true); +// pwr3.set(true); +// gearLight.set(true); +// boilerLight.set(true); + sendDashboardSubsystems(); // Sends each subsystem's currently running command to the Smart Dashboard queueAutonomousModes(); // Adds autonomous modes to the selection box } @@ -124,23 +146,30 @@ public void disabledPeriodic() { sendStatistics(); prefs = Preferences.getInstance(); - try { - if (ds.isSysActive()) - if (ds.isFMSAttached()) - { - alliance = ds.getAlliance(); - if (ds.getAlliance() == Alliance.Blue) - led1.send_to_led(Constants.SET_ALLIANCE_BLUE); - else if (ds.getAlliance() == Alliance.Red) - led1.send_to_led(Constants.SET_ALLIANCE_RED); - else - led1.send_to_led(Constants.SET_ALLIANCE_INVALID); - } - } - catch (Exception e) - { - led1.send_to_led(Constants.MAX_LED_CODE); - } +// try { +// if (ds.isSysActive()){ +// if (ds.isFMSAttached()) +// { +// alliance = ds.getAlliance(); +// if (ds.getAlliance() == Alliance.Blue){ +// led1.send_to_led(Constants.SET_ALLIANCE_BLUE); +// AllianceColor = -1; +// } +// else if (ds.getAlliance() == Alliance.Red){ +// led1.send_to_led(Constants.SET_ALLIANCE_RED); +// AllianceColor = 1; +// } +// else { +// led1.send_to_led(Constants.SET_ALLIANCE_INVALID); +// AllianceColor = 0; +// } +// } +// } +// } +// catch (Exception e) +// { +// led1.send_to_led(Constants.MAX_LED_CODE); +// } } /** diff --git a/src/org/usfirst/frc/team708/robot/RobotMap.java b/src/org/usfirst/frc/team708/robot/RobotMap.java index 6b1c83e..43ac80b 100644 --- a/src/org/usfirst/frc/team708/robot/RobotMap.java +++ b/src/org/usfirst/frc/team708/robot/RobotMap.java @@ -56,9 +56,9 @@ public class RobotMap { public static final int drivetrainEncoderBRt = 1; public static final int drivetrainEncoderALeft = 2; public static final int drivetrainEncoderBLeft = 3; - public static final int shooterEncoderA = 4; - public static final int shooterEncoderB = 5; - public static final int climberSwitchA = 6; +// public static final int shooterEncoderA = 4; +// public static final int shooterEncoderB = 5; + public static final int gearSensorSwitch = 6; // public static final int = 7; // public static final int = 8; // public static final int = 9; @@ -75,14 +75,14 @@ public class RobotMap { // public static final int = 3; // PCM Ports -// public static final int = 0; -// public static final int = 1; -// public static final int = 2; -// public static final int = 3; -// public static final int = 4; -// public static final int = 5; -// public static final int = 6; -// public static final int = 7; + public static final int PWR0 = 0; + public static final int PWR1 = 1; + public static final int PWR2 = 2; + public static final int PWR3 = 3; + public static final int GEARLIGHT = 4; + public static final int BOILERLIGHT = 5; +// public static final int PWR6 = 6; +// public static final int PWR7 = 7; // PDP Board Mappings diff --git a/src/org/usfirst/frc/team708/robot/commands/Climber/ClimbDown.java b/src/org/usfirst/frc/team708/robot/commands/Climber/ClimbDown.java index e5c9de8..53c64b0 100644 --- a/src/org/usfirst/frc/team708/robot/commands/Climber/ClimbDown.java +++ b/src/org/usfirst/frc/team708/robot/commands/Climber/ClimbDown.java @@ -2,6 +2,7 @@ import org.usfirst.frc.team708.robot.OI; import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.util.*; +import org.usfirst.frc.team708.robot.Constants; import edu.wpi.first.wpilibj.command.Command; /** @@ -20,19 +21,17 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { - double moveSpeed = OI.operatorGamepad.getAxis(Gamepad.leftStick_Y); //Gets input from operator's controller - Robot.climber.manualMove(moveSpeed); //Defines speed of the motor from the operator's controller - + Robot.climber.manualMove(Constants.CLIMB_REVERSE); //Defines move speed from the operator's controller } // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { - return true; + return false; } // Called once after isFinished returns true protected void end() { - + Robot.climber.stop(); } diff --git a/src/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.java b/src/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.java index bad71c5..1978408 100644 --- a/src/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.java +++ b/src/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.java @@ -2,7 +2,7 @@ import org.usfirst.frc.team708.robot.OI; import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.util.*; - +import org.usfirst.frc.team708.robot.Constants; import edu.wpi.first.wpilibj.command.Command; /** ** @author James Makovics @@ -10,33 +10,30 @@ public class ClimbUp extends Command { - public ClimbUp(){ - + public ClimbUp(){ requires(Robot.climber); //Gets Climber from IO.Java } // Called just before this Command runs the first time protected void initialize() { - } // Called repeatedly when this Command is scheduled to run protected void execute() { - double moveSpeed = OI.operatorGamepad.getAxis(Gamepad.leftStick_Y); //Gets Input from operator's controller - Robot.climber.manualMove(moveSpeed); //Defines move speed from the operator's controller +// double moveSpeed = OI.operatorGamepad.getAxis(Gamepad.leftStick_Y); //Gets Input from operator's controller + Robot.climber.manualMove(Constants.CLIMB_FORWARD); //Defines move speed from the operator's controller } // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { - return true; + return false; } // Called once after isFinished returns true protected void end() { - - + Robot.climber.stop(); } // Called when another command which requires one or more of the same diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToIRDistance.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToIRDistance.java index f7a4c5e..09252f3 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToIRDistance.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToIRDistance.java @@ -39,7 +39,7 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { - moveSpeed = Robot.drivetrain.moveByIR(targetDistance, minValue, maxValue, tolerance); +// moveSpeed = Robot.drivetrain.moveByIR(targetDistance, minValue, maxValue, tolerance); // if (targetDistance) Robot.drivetrain.haloDrive(moveSpeed, 0.0, false); } diff --git a/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.java b/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.java index eed2110..5924422 100644 --- a/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.java +++ b/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.java @@ -4,6 +4,7 @@ import org.usfirst.frc.team708.robot.OI; import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.subsystems.Feeder; +import org.usfirst.frc.team708.robot.subsystems.Intake_Ball; import org.usfirst.frc.team708.robot.util.Gamepad; import edu.wpi.first.wpilibj.command.Command; @@ -17,6 +18,7 @@ public class SpinFeeder extends Command { public SpinFeeder() { requires(Robot.feeder); + requires(Robot.intake_ball); } @@ -29,6 +31,7 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { Robot.feeder.manualMove(Constants.FEEDER_MOTOR_FORWARD); + Robot.intake_ball.moveMotor(Constants.INTAKE_FORWARD); } // Make this return true when this Command no longer needs to run execute() @@ -39,6 +42,7 @@ protected boolean isFinished() { // Called once after isFinished returns true protected void end() { Robot.feeder.stop(); + Robot.intake_ball.stop(); } // Called when another command which requires one or more of the same diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java new file mode 100644 index 0000000..5bb4148 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java @@ -0,0 +1,51 @@ +package org.usfirst.frc.team708.robot.commands.intake_gear; +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.RobotMap; +import org.usfirst.frc.team708.robot.util.Gamepad; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.OI; + +//import org.team708.robot.OI; +//import org.team708.robot.subsystems.Loader; +//import org.team708.robot.util.Gamepad; +//import org.team708.robot.commands.shooter.Fire; + +import edu.wpi.first.wpilibj.command.Command; +import edu.wpi.first.wpilibj.command.WaitCommand; + +/** + * + */ +public class GearAdjust extends Command { + + public GearAdjust() { + requires(Robot.intake_gear); + } + +// Called just before this Command runs the first time + protected void initialize() { + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + double gearAngle = OI.operatorGamepad.getAxis(Gamepad.leftStick_Y); //Gets Input from operator's controller + + Robot.pivot_gear.moveMotor(gearAngle); //Defines move speed from the operator's controller + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return false; + } + + // Called once after isFinished returns true + protected void end() { + Robot.pivot_gear.stop(); + } + + // Called when another command which requires one or more of the same + // subsystems are scheduled to run + protected void interrupted() { + end(); + } +} diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java new file mode 100644 index 0000000..690f9a3 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java @@ -0,0 +1,51 @@ +package org.usfirst.frc.team708.robot.commands.intake_gear; +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.RobotMap; +import org.usfirst.frc.team708.robot.util.Gamepad; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.OI; + +//import org.team708.robot.OI; +//import org.team708.robot.subsystems.Loader; +//import org.team708.robot.util.Gamepad; +//import org.team708.robot.commands.shooter.Fire; + +import edu.wpi.first.wpilibj.command.Command; +import edu.wpi.first.wpilibj.command.WaitCommand; + +/** + * + */ +public class GearIntake extends Command { + + public GearIntake() { + requires(Robot.intake_gear); + } + +// Called just before this Command runs the first time + protected void initialize() { + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + double gearAngle = OI.operatorGamepad.getAxis(Gamepad.leftStick_X); //Gets Input from operator's controller + + Robot.intake_gear.moveMotor(gearAngle); //Defines move speed from the operator's controller + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return false; + } + + // Called once after isFinished returns true + protected void end() { + Robot.intake_gear.stop(); + } + + // Called when another command which requires one or more of the same + // subsystems are scheduled to run + protected void interrupted() { + end(); + } +} diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java index 6a09ad8..0d75fa2 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java @@ -20,11 +20,11 @@ protected void initialize() { protected void execute() { if (!Robot.intake_gear.hasGear()) - Robot.intake_gear.moveMotor(Constants.INTAKE_FORWARD); + Robot.intake_gear.moveMotor(Constants.GEAR_FORWARD); else { Robot.intake_gear.stop(); - Robot.pivot_gear.moveMotor(Constants.INTAKE_FORWARD); + Robot.pivot_gear.moveMotor(Constants.GEAR_FORWARD); } } diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java index c6ff378..c54e523 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java @@ -20,7 +20,7 @@ protected void initialize() { protected void execute() { - Robot.intake_gear.moveMotor(Constants.INTAKE_REVERSE); + Robot.intake_gear.moveMotor(Constants.GEAR_REVERSE); } diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.java index 3d8065f..3f7f5eb 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.java @@ -31,10 +31,10 @@ protected void execute() { Robot.intake_gear.moveMotor(Constants.INTAKE_FORWARD); } else if (OI.driverGamepad.getAxis(Gamepad.shoulderAxisLeft) != 0.0){ - Robot.intake_gear.moveMotor(Constants.INTAKE_REVERSE); + Robot.intake_gear.moveMotor(Constants.GEAR_REVERSE); } else { - Robot.intake_gear.moveMotor(Constants.INTAKE_OFF); + Robot.intake_gear.moveMotor(Constants.GEAR_OFF); } } diff --git a/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java b/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java index 3ec3479..fc9dfa8 100644 --- a/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java +++ b/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java @@ -5,6 +5,8 @@ import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.OI; import org.usfirst.frc.team708.robot.subsystems.LED; +import org.usfirst.frc.team708.robot.subsystems.Drivetrain; + import edu.wpi.first.wpilibj.SerialPort; import edu.wpi.first.wpilibj.SerialPort.Port; @@ -25,7 +27,7 @@ public class LED_out extends Command { static public byte count = 0x00; public LED_out() { - requires(Robot.led1); + requires(Robot.led1); } // Called just before this Command runs the first time @@ -37,6 +39,9 @@ protected void execute() { count++; if (count > Constants.MAX_LED_CODE) count = 0x00; Robot.led1.send_to_led(count); + +// if (count == 0x02) Robot.drivetrain.setGearLight(false); +// if (count == 0x03) Robot.drivetrain.setBoilerLight(false); } // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java index 7a1b432..cdf4abe 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java @@ -30,7 +30,7 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.shooter.moveHood(Constants.HOOD_MAX); // 2000 is upper bounds + Robot.shooter.moveHood(Constants.HOOD_GEAR); // 2000 is upper bounds } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java index 2d3a426..f45bf66 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java @@ -30,7 +30,7 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.shooter.moveHood(Constants.HOOD_MIN); // 25 is the lower bounds + Robot.shooter.moveHood(Constants.HOOD_BUMBER); // 25 is the lower bounds } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java index 1172a9e..9610ddb 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java @@ -21,6 +21,7 @@ public class SpinShooter extends Command { public SpinShooter() { requires(Robot.shooter); + requires(Robot.drivetrain); } // Called just before this Command runs the first time @@ -29,9 +30,17 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.shooter.setFgain(Constants.SHOOTER_F); - Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_HIGH); -// Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_SPEED_HIGH); + Robot.shooter.setFgain(Constants.SHOOTER_F); + if (Robot.drivetrain.getSonarDistance() > 60) + { + Robot.shooter.moveHood(Constants.HOOD_GEAR); + Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_HIGH); + } + else + { + Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_LOW); + Robot.shooter.moveHood(Constants.HOOD_BUMBER); + } } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Climber.java b/src/org/usfirst/frc/team708/robot/subsystems/Climber.java index 5b0a067..87f6ce2 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Climber.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Climber.java @@ -33,7 +33,7 @@ public Climber() { public void initDefaultCommand() { // Set the default command for a subsystem here. - setDefaultCommand(new ManualMoveClimber()); + // setDefaultCommand(new ManualMoveClimber()); } //Sets the motor speed to the variable speed public void manualMove(double speed) { diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java index 4b735dc..f661cfc 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java @@ -2,6 +2,8 @@ import org.usfirst.frc.team708.robot.Constants; import org.usfirst.frc.team708.robot.OI; +import org.usfirst.frc.team708.robot.Robot; + import org.usfirst.frc.team708.robot.RobotMap; import org.usfirst.frc.team708.robot.commands.drivetrain.JoystickDrive; import org.usfirst.frc.team708.robot.commands.visionProcessor.SonarOverride; @@ -16,6 +18,7 @@ import com.ctre.CanTalonJNI; import edu.wpi.first.wpilibj.DigitalInput; import edu.wpi.first.wpilibj.Encoder; +import edu.wpi.first.wpilibj.Solenoid; //import edu.wpi.first.wpilibj.interfaces.Gyro; //import edu.wpi.first.wpilibj.GyroBase; //import edu.wpi.first.wpilibj.AnalogGyro; @@ -48,21 +51,30 @@ public class Drivetrain extends PIDSubsystem { private double distancePerPulse; // private BuiltInAccelerometer accelerometer; // Accelerometer that is built into the roboRIO - private IRSensor drivetrainIRSensor; // IR Sensor for <=25inches - private UltrasonicSensor drivetrainUltrasonicSensor; // Sonar used for <=21feet - private DigitalInput opticalSensor; +// private IRSensor drivetrainIRSensor; // IR Sensor for <=25inches + private UltrasonicSensor drivetrainUltrasonicSensor; // Sonar used for <=21feet +// private DigitalInput opticalSensor; + private DigitalInput gearSensor; public int sonarOverride = 0; //0 = default, 1 = high, 2 = low; Used for overriding sonar private boolean brake = true; // Whether the talons should be in coast or brake mode private boolean nobrake = false; // Whether the talons should be in coast or brake mode - + public static Solenoid pwr0; + public static Solenoid pwr1; + public static Solenoid pwr2; + public static Solenoid pwr3; + public static Solenoid gearLight; + public static Solenoid boilerLight; + public Drivetrain() { // Passes variables from this class into the superclass constructor super("Drivetrain", Constants.Kp, Constants.Ki, Constants.Kd); - gyro = new ADXRS450_Gyro(); // Initializes the gyro + gyro = new ADXRS450_Gyro(); // Initializes the gyro gyro.reset(); // Resets the gyro so that it starts with a 0.0 value + + // Initializes motor controllers with device IDs from RobotMap leftMaster = new CANTalon(RobotMap.drivetrainLeftMotorMaster); leftSlave = new CANTalon(RobotMap.drivetrainLeftMotorSlave); @@ -74,15 +86,23 @@ public Drivetrain() { setupMasterSlave(); // Sets up master and slave // accelerometer = new BuiltInAccelerometer(); // Initializes the accelerometer from the roboRIO - encoder = new Encoder(RobotMap.drivetrainEncoderARt, RobotMap.drivetrainEncoderBRt, Constants.DRIVETRAIN_USE_LEFT_ENCODER); +// encoder = new Encoder(leftMaster.getPinStateQuadA(), leftMaster.getPinStateQuadB(), Constants.DRIVETRAIN_USE_LEFT_ENCODER); + encoder2 = new Encoder(RobotMap.drivetrainEncoderALeft, RobotMap.drivetrainEncoderBLeft, !Constants.DRIVETRAIN_USE_LEFT_ENCODER); - // Initializes the encoder +// encoder2 = new Encoder(rightMaster.getPinStateQuadA(), rightMaster.getPinStateQuadB(), !Constants.DRIVETRAIN_USE_LEFT_ENCODER); + +// // Initializes the encoder distancePerPulse = (Constants.DRIVETRAIN_WHEEL_DIAMETER * Math.PI) / (Constants.DRIVETRAIN_ENCODER_PULSES_PER_REV); + leftMaster.configEncoderCodesPerRev(Constants.DRIVETRAIN_ENCODER_PULSES_PER_REV); + rightMaster.configEncoderCodesPerRev(Constants.DRIVETRAIN_ENCODER_PULSES_PER_REV); + // Sets the distance per pulse of the encoder to read distance properly encoder.setDistancePerPulse(distancePerPulse); - encoder.reset(); // Resets the encoder so that it starts with a 0.0 value + encoder.reset(); + +// Resets the encoder so that it starts with a 0.0 value encoder2.setDistancePerPulse(distancePerPulse); encoder2.reset(); // Resets the encoder so that it starts with a 0.0 value @@ -91,8 +111,25 @@ public Drivetrain() { rightMaster.enableBrakeMode(brake); rightSlave.enableBrakeMode(brake); - drivetrainIRSensor = new IRSensor(RobotMap.gearIRSensor, IRSensor.GP2Y0A21YK0F); +// drivetrainIRSensor = new IRSensor(RobotMap.gearIRSensor, IRSensor.GP2Y0A21YK0F); drivetrainUltrasonicSensor = new UltrasonicSensor(RobotMap.dtSonar, UltrasonicSensor.MB1010); +// drivetrainUltrasonicSensor = new UltrasonicSensor(RobotMap.dtSonar, UltrasonicSensor.MB1340); + + gearSensor = new DigitalInput(RobotMap.gearSensorSwitch); + + pwr0 = new Solenoid(RobotMap.PWR0); + pwr1 = new Solenoid(RobotMap.PWR1); + pwr2 = new Solenoid(RobotMap.PWR2); + pwr3 = new Solenoid(RobotMap.PWR3); + gearLight = new Solenoid(RobotMap.GEARLIGHT); + boilerLight = new Solenoid(RobotMap.BOILERLIGHT); + + pwr0.set(true); + pwr1.set(true); + pwr2.set(true); + pwr3.set(true); + gearLight.set(true); + boilerLight.set(true); } @@ -152,6 +189,14 @@ public void haloDrive(double move, double rotate) { haloDrive(move, rotate, this.usePID); } + public void setGearLight(boolean on) { + gearLight.set(on); + } + + public void setBoilerLight(boolean on) { + boilerLight.set(on); + } + public boolean getUsePID() { return usePID; } @@ -182,6 +227,10 @@ public void resetGyro() { gyro.reset(); } + public boolean hasGear() { + return gearSensor.get(); + + } public double rotateByGyro(double targetAngle, double tolerance) { double difference = getAngle() - targetAngle; @@ -192,9 +241,9 @@ public double rotateByGyro(double targetAngle, double tolerance) { return difference / targetAngle; } - public double getIRDistance() { - return drivetrainIRSensor.getAverageDistance(); - } +// public double getIRDistance() { +// return drivetrainIRSensor.getAverageDistance(); +// } public double getSonarDistance() { return drivetrainUltrasonicSensor.getClippedAverageDistance(); @@ -206,17 +255,17 @@ public double getSonarDistance() { * @param targetDistance * @return */ - public double moveByIR(double targetDistance, double minSpeed, double maxSpeed, double tolerance) { - double current_location = getIRDistance(); - - double value = Math708.getClippedPercentError(current_location, targetDistance, minSpeed, maxSpeed); - - if (value <= 0.0 || ((Math.abs(current_location - targetDistance)) <= tolerance)) { - - return 0.0; - } - return value; - } +// public double moveByIR(double targetDistance, double minSpeed, double maxSpeed, double tolerance) { +// double current_location = getIRDistance(); +// +// double value = Math708.getClippedPercentError(current_location, targetDistance, minSpeed, maxSpeed); +// +// if (value <= 0.0 || ((Math.abs(current_location - targetDistance)) <= tolerance)) { +// +// return 0.0; +// } +// return value; +// } /** * Returns the move speed of the robot needed to get to a certain Sonar distance reading. @@ -269,10 +318,12 @@ public void setBrakeMode(Boolean brake) { */ public void setEncoderReading() { encoder.setReverseDirection(Constants.DRIVETRAIN_USE_LEFT_ENCODER); + // leftMaster.setInverted(true); } public void setEncoderReading2() { - encoder.setReverseDirection(!Constants.DRIVETRAIN_USE_LEFT_ENCODER); + encoder2.setReverseDirection(!Constants.DRIVETRAIN_USE_LEFT_ENCODER); +// rightMaster.setInverted(true); } /** @@ -281,9 +332,13 @@ public void setEncoderReading2() { */ public double getEncoderDistance() { return encoder.getDistance(); +// return leftMaster.getEncPosition(); + + } public double getEncoderDistance2() { return encoder2.getDistance(); +// return rightMaster.getEncPosition(); } /** * Resets the encoder to 0.0 @@ -298,9 +353,9 @@ public void resetEncoder2() { * Returns if the optical sensor detects the color white * @return */ - public boolean isOpticalSensorWhite() { - return opticalSensor.get(); - } +// public boolean isOpticalSensorWhite() { +// return opticalSensor.get(); +// } /** * Returns a process variable to the PIDSubsystem for correction @@ -333,17 +388,18 @@ public void sendToDashboard() { // SmartDashboard.putNumber("PID Output", pidOutput); // PID Info // SmartDashboard.putNumber("DT Encoder Raw", encoder.get()); // Encoder raw count SmartDashboard.putBoolean("Brake", brake); // Brake or Coast - SmartDashboard.putNumber("DT IR Distance", getIRDistance()); // IR distance reading +// SmartDashboard.putNumber("DT IR Distance", getIRDistance()); // IR distance reading // // SmartDashboard.putNumber("DT Rt Master", rightMaster.getTemperature()); // SmartDashboard.putNumber("DT Rt Slave", rightSlave.getTemperature()); // SmartDashboard.putNumber("DT Lft Master", leftMaster.getTemperature()); // SmartDashboard.putNumber("DT Lft Slave", leftSlave.getTemperature()); } - + SmartDashboard.putNumber("AllianceColor", Robot.AllianceColor); + SmartDashboard.putBoolean("has gear", hasGear()); SmartDashboard.putNumber("Gyro angle", ( (int)gyro.getAngle())); // Gyro angle SmartDashboard.putNumber("DT Sonar Distance", getSonarDistance()); // Sonar distance reading - SmartDashboard.putNumber("DT Encoder Distance", encoder.getDistance()); // Encoder reading + SmartDashboard.putNumber("DT Encoder 1 Distance", encoder.getDistance()); // Encoder reading SmartDashboard.putNumber("DT Encoder 2 Distance", encoder2.getDistance()); // Encoder reading // SmartDashboard.putNumber("Sonar Mode", sonarOverride); } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java index 7e7977f..00b83c4 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java @@ -5,6 +5,7 @@ import org.usfirst.frc.team708.robot.RobotMap; import com.ctre.CANTalon; +import com.ctre.CANTalon.FeedbackDevice; import edu.wpi.first.wpilibj.command.Subsystem; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; @@ -21,7 +22,7 @@ public class Intake_Gear extends Subsystem { //I'm trying to link the right motor to the intake code here public Intake_Gear() { - intakeMotor = new CANTalon (RobotMap.intakeMotorGear); + intakeMotor = new CANTalon (RobotMap.intakeMotorGear); } public void initDefaultCommand() { @@ -33,7 +34,8 @@ public void moveMotor(double speed) { } public boolean hasGear() { - return ((Robot.drivetrain.getIRDistance() > 0) && (Robot.drivetrain.getIRDistance() < Constants.IR_HAS_GEAR_DISTANCE)); +// return ((Robot.drivetrain.getIRDistance() > 0) && (Robot.drivetrain.getIRDistance() < Constants.IR_HAS_GEAR_DISTANCE)); + return (Robot.drivetrain.hasGear()); } //I believe this stops the motor public void stop(){ diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java index 1934973..687d205 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java @@ -5,6 +5,7 @@ import org.usfirst.frc.team708.robot.RobotMap; import com.ctre.CANTalon; +import com.ctre.CANTalon.FeedbackDevice; import edu.wpi.first.wpilibj.command.Subsystem; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; @@ -22,6 +23,12 @@ public class Pivot_Gear extends Subsystem { //I'm trying to link the right motor to the intake code here public Pivot_Gear() { pivotMotor = new CANTalon (RobotMap.pivotGearMotor); + pivotMotor.enable(); + +// pivotMotor.reverseSensor(true); + pivotMotor.setFeedbackDevice(FeedbackDevice.QuadEncoder); + pivotMotor.configEncoderCodesPerRev(Constants.PIVOT_GEAR_ENCODER_COUNT); + } public void initDefaultCommand() { @@ -29,10 +36,10 @@ public void initDefaultCommand() { //I believe this sets the speed of the motor public void moveMotor(double speed) { - if (!(Robot.pivot_gear.isFwdSwitch() || Robot.pivot_gear.isRevSwitch())) + // if (!(Robot.pivot_gear.isFwdSwitch() || Robot.pivot_gear.isRevSwitch())) pivotMotor.set(speed); - else - pivotMotor.set(Constants.INTAKE_OFF); + // else + // pivotMotor.set(Constants.INTAKE_OFF); } public boolean isFwdSwitch() { @@ -53,8 +60,10 @@ public void stop(){ */ public void sendToDashboard() { if (Constants.DEBUG) { - SmartDashboard.putBoolean("Pivot forward switch", pivotMotor.isFwdLimitSwitchClosed()); - SmartDashboard.putBoolean("Pivot reverse switch", pivotMotor.isRevLimitSwitchClosed()); +// SmartDashboard.putBoolean("Pivot forward switch", pivotMotor.isFwdLimitSwitchClosed()); +// SmartDashboard.putBoolean("Pivot reverse switch", pivotMotor.isRevLimitSwitchClosed()); + SmartDashboard.putNumber("Pivot encoder", pivotMotor.getPosition()); +// SmartDashboard.putNumber("Pivot encoder", pivotMotor.); } } } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java index db2c9fb..14d1a95 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java @@ -104,8 +104,8 @@ public void moveHood(int angle) { public void hoodAdjust(double angle) { - if ((angle > 0.0) && (hoodLocation<2000)) hoodLocation+=Constants.HOOD_CALIBRATION; - else if ((angle < 0.0) && (hoodLocation>25)) hoodLocation-=Constants.HOOD_CALIBRATION; + if ((angle > 0.0) && (hoodLocationConstants.HOOD_MIN)) hoodLocation-=Constants.HOOD_CALIBRATION; moveHood(hoodLocation); if (Constants.DEBUG) { diff --git a/sysProps.xml b/sysProps.xml index a9591affdaa377a6092ef7510afeb11daa09449f..dca4f28b7abb6479387db924122014d8f85f1bf2 100644 GIT binary patch delta 158 zcmZ2yu*P7+G-gg$1``HH215qp$rqWdH{W6oV&yktFlDe}Z~{tLF}N_8Og_kAy}69@ zAB(XYkn6(W3dD{K20*9)q)mXdIZ&|$gC&p;RLdX+z s5CY_yPyQgpHd#n$3cD%L9&-kx&1;2J8Cijn49=4eidb(J5|Lp60HXIH_y7O^ delta 156 zcmZ2uu+Ct^G-h@)1``HX2A9c!EVi3(F$b~o8!}ijSTPtf7ywB(2Fu9@IjlFAasFd5 zb!Kp6aAt410Du%gKB~)7XuH(#8yCn^y~|GO~gtfl}6+1w>?60QiI-Qvd(} From a71a859b1c877dfd66164796144cc13268efd811 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Mon, 20 Feb 2017 21:35:13 -0500 Subject: [PATCH 28/69] merged after testing --- .../usfirst/frc/team708/robot/Constants.class | Bin 2809 -> 3100 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 5666 -> 6141 bytes .../usfirst/frc/team708/robot/RobotMap.class | Bin 1361 -> 1356 bytes .../commands/intake_gear/GearAdjust.class | Bin 1378 -> 1508 bytes .../commands/intake_gear/GearIntake.class | Bin 1300 -> 1640 bytes .../commands/intake_gear/Intake_Gear_In.class | Bin 1394 -> 1392 bytes .../intake_gear/Intake_Gear_Out.class | Bin 1145 -> 1145 bytes .../commands/intake_gear/Intake_Gear_Up.class | Bin 1232 -> 1243 bytes .../intake_gear/ManualIntake_Gear.class | Bin 1495 -> 1289 bytes .../robot/commands/shooter/ManualShoot.class | Bin 1367 -> 1367 bytes .../robot/commands/shooter/MoveHoodLow.class | Bin 1103 -> 1103 bytes .../robot/commands/shooter/SpinShooter.class | Bin 1469 -> 1415 bytes .../team708/robot/subsystems/Drivetrain.class | Bin 7454 -> 7453 bytes .../team708/robot/subsystems/Pivot_Gear.class | Bin 1632 -> 1642 bytes .../usfirst/frc/team708/robot/Constants.java | 36 ++++++--- src/org/usfirst/frc/team708/robot/Robot.java | 70 ++++++++++-------- .../usfirst/frc/team708/robot/RobotMap.java | 2 +- .../AllianceSelection/BlueAlliance.java | 28 +++++++ .../AllianceSelection/RedAlliance.java | 28 +++++++ .../robot/commands/feeder/SpinFeeder.java | 1 + .../commands/intake_gear/GearAdjust.java | 12 ++- .../commands/intake_gear/GearIntake.java | 26 ++++++- .../commands/intake_gear/Intake_Gear_In.java | 4 +- .../commands/intake_gear/Intake_Gear_Out.java | 2 +- .../commands/intake_gear/Intake_Gear_Up.java | 2 +- .../intake_gear/ManualIntake_Gear.java | 18 ++--- .../robot/commands/shooter/SpinShooter.java | 4 +- .../team708/robot/subsystems/Drivetrain.java | 2 +- .../team708/robot/subsystems/Pivot_Gear.java | 9 +-- sysProps.xml | Bin 6188 -> 6190 bytes 30 files changed, 176 insertions(+), 68 deletions(-) create mode 100644 src/org/usfirst/frc/team708/robot/commands/AllianceSelection/BlueAlliance.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/AllianceSelection/RedAlliance.java diff --git a/build/org/usfirst/frc/team708/robot/Constants.class b/build/org/usfirst/frc/team708/robot/Constants.class index 1d674d4cc5668ae765efdb1c89a214c2639d1311..14b2dc48c16908725ab354ec206ea495c09ea759 100644 GIT binary patch literal 3100 zcma)-$#WZ35QpD*8OM$t+lk}E1Og#}EI^d42#}Pek>*K$(P&1Q8Ob3~Ov$#ADARanMQr3RjIeimBrPnp8N-nc-E|4 zS(dIR^_v~dP&!PbX8dfk)&Xp3%sI~*x^an@eO|i#Z*~&%CUnk zedweo|Bm-%B8wm>Yh5DU;!Zw8ZR;?h3Cl4ya_thYxwgeoE#8dd__r=Q-YpMpC%a{7 zBa@HDYe%;ttSrFZ>Zz}!=jZe&8;(No_nw{1G{;|>=~mM1;x&@kpEj!@K76QKus z-VrK2*?Ru3+_w`~n9$Ty`);w!>Z!h8==l|0k7KIyjxA{+#2kx-u2CquXs9MeV^Ps{ zvdV&_V^owzJ}5e#o;naO)vdE-PXDQ++l1{l0}Kro8~6<~9(!bHY_RtI}{TcU5#qR?DXW9=~biG0_JPEwh*)$i`8bOK3_$}p7aC5vJ_Q{tk4EU z*K?W%imQ;cCdRu&X{!`YXb+7oY<KVo)3=j!%jg@SZmDu=qfHsEPgmGaB}Syb_C*`o)AZcey&>5=TW3zK}wk z5mWeB^rKbuMe7j*;6cVi;9s@F+Zj)ScQPjXDaI84HpUcx zm$(HK>|L;H5i~l(I3C01qBIY{t zG!I^2`YQM$<4fSnjGqKAF{XO!jA^|FW3pdn`O*A7#nz|&Yci&MR@V8q7_UPA3}agV zS;o(SuP`S43+wpBb^H=znzxt5)z1D~ delta 1070 zcmZA0Nlz3(7zW_4dP27%CK5BF2yST7h(@D$atZb@1p!9T9%OOJ7>$Zs)VSc@?xOKB zsd&(M(7-?7=0W4hgg@ZXgBRx~crm;mCNr-+hsr$PTUGs4&(w$2f3n&6zn{N|$ZmPv zC>ePf$aEmDD%m$3O?@_s%e}+#SQHohuhn<@d2i%jJ+`AZE?K|3TKTrJQr+wZ%#@oq zKfI5VZpLf(W~S%9d#%Qd&;82$Hl58SJ5r8{#r|lh$CmTOBi6`@|7x)D-bvQ=Tgltt?c^QsPN|=C7u;3PUGvgaN&Vb=knXFevLEiI z)d%2+a_uIc%6lj;Anzsj!TmIU03J-JP(TGO))Sv4>jTe`b^atZsQ;|<)PTOh3uH8u$i>tKm&li~;0jqA zxJteTUngsRBjuYZ-y#Px*dkMMyY`B-!#iYsWp~N<;QQnUSZM?o4C5pBb6GBYj63B+ Xg8TmjW7FdI26-yaAS2H)dh%icHPL4A diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index afd200a47273be75e55289e6a7305ae9e9ed60a2..86a0cc070bc9c491a5eb9c474551bea4279fed38 100644 GIT binary patch delta 2406 zcmZuz2~?C-6#gEwyy5W}hD}A#@LD|_|= z=*8Lycu~W#RUisA(U^*D9NPtKCfT7@A&y#sXj8M3W0!z5iOx|c5NDElj@<$YCfUQ$ zAdqa5mpEP)Xl0VU9Q!H-Qcbp>E!UP4$IOo839N*is9gQAJ@Pi8YqXR#2oEI368pVHh;1`Yy0+UeVz^@z^1xnTO zH-X>rhk`#j{^Iz%b~D>=VV7!swnc0Z^DrdmPjk<9XZqa!DVf9OmU_yA-hh7qLu^sd zT{?Y~yS&&v+2^4`8JzA}!GJ$7BQUFCgx?#~QusFe5>zqt(&C*hwCp&Sc9Fa6Phv4c zs-a4EaK|)Em-q)&TBak*?!yd*ZrT|~Cs{N#5D0o^O861bPC0r;=em79iJ7P%)=%3Y zG7}2Dvjf42!#!@YnvFROnd+o7&*Ldm2g`9sqbfh(HdJ#lkD;rw(#}WQ?DygRa5(L> zh1(?V#C$DNWZCb+-3+}AyX{uH7O>iB^Bz>vW)EowycY`?(#fQ4alr_Q2k@Z8i>Q*= zges295?AoAWKfzHNW&OuSd@f@XCxlMqnueJvof1xb_JX{Bp$;e$)d4{p@VYVXGp+b z5p?^56_N=SBk>R(mgI-_6aVK{B#UKEhHH)1X4>P@B%Z?4lEta;F3I9qf@F!55KE$V zSI2l9OIWgGEm%t}QRZ7&D_WGwEpaSGveqnBK^jAb%0wF&+ts2vr!I1ht%bHC_8`kJ zSfMR8iy_8aQ8ce2r!?rDO+#bp*l8?{h_@ndR8dZl24$+JjBKWOf;m2)*X=JQn{FLD z<%iv+q+4@+vq%?H;qjME3(P4``h?I| zN7ix_8;gF+G16G{uf+g!5yHS~#D|b>(=jNj7K1mUW8+S?xntE)Iml{kImysMh8Ba# ze4;KF@g0Sd_aTLv~?k=badO2to-R!*tT9FA$ar45a@M5Qt#^SG;W$!pHV9E&65_GpBwxU2JUl8@(6bv=ot zltLH!RqbHPO_b4kyP-H1;es_~Q~kdc9H$CSPz5I=&NNrBv8jUoEDURvs3;9fLjZN delta 1955 zcmZux3s6*582&DgJ$Db+1y&xF_+ZFkS|~y>QFF9>=Q5HQL6*7-1);kptCh~k*tfgfCBVM%tf=nlM*p#wqp)93OpqdZ;_{YwMpO^3A^RlEU-mFv&gdo&q*X&AV>2yBx`wa9jX9TMkQWT!x&PGW$?S_Rr923cg6fFY4-k#>Qg#Q7H4Ezlv6ZIMoa z7bIL3c~M}G#Dx~=lGH#q!(NG(@G`?IOkb7Qhu65h*SXQUHw5-GJ0MYrO$-Mm-sISL zye06qZQOAh5B;&@5I29A8z30KpfL<$$Ye-la5ALgu!?sCj@ZVlX9V1Mmvg?S;(dV+ zBxa)dB6fVJ;;6teiBdGH=n?oxqMVl>OMHS)8IB8_5IEV|qjbkApSP}yZ%_t1JWKsP zuWylWY3(#`wO>KM62E6bO_68uEYJLfm3o!fZd;9d1qF?cG`%hH**QNt~` zHIz+HiWBh~7UL#;r7W~9L9K!j`YM^HZ-}$eh9665W0>8_vO}#7x!uS9zQ4;%55iU$^GxfJsN)Gpr17Sj9vxVRM?>Y z6MWuUzsKvZ)$j}J{7RD6(_tWm=jtTRk;-cJ>{#0$-PD zsbbSoGh{U=plc>vqjx1|<}{Fxzbbyzar8;uABq8z@Bkhprl2ttpWxi4H0T}98Fi7U z_2DSpilP%!Nlzi`3}Tpp;jVTRxPln53zzI9Zwxr6ld^&IZKN)tBN;7Gxt(Fvhr+65 zA=QB{S6Lh442^dBz@hIxY zl37DyIrL*uB{DRd={OQ4p@ge>?0-8rN*x@d4tk=_L^^mp+`(v4=45IRm-2l@a$1u( zLBl)=fzP6J)KKmiel&ENi*BK7RZ3~$rcnq3V^c70Z4<^@?6Lq73|t<-c?Ko~Fwnrn z02~G;1u(?GBEk1GCJit2$9i{OU9NWt}J|ehqQwY>o)p zacyWcx+{I~oX9&U4iAI=v4l!kL6(P_PfZ4K9W`uXf{8;+Og1sa#B>w02+yS0oSu^t aNs%8;@dSy+U;}O^D=Eb)x|iF=pZg!ae4A_l diff --git a/build/org/usfirst/frc/team708/robot/RobotMap.class b/build/org/usfirst/frc/team708/robot/RobotMap.class index 5c1de8a5a94395a65b8cd0290e2d06a6608e3232..079a1915e1b51a75dd2b5167b8f5e7de9a8800b0 100644 GIT binary patch delta 131 zcmcb}b%smy)W2Q(7#J8#7#z45m>F!@8SK~@>^F+CGcmGGmSysvT*%bNX2M{~$e=cP zCzIM{ZRR_SUfK+dKnN5Cl4d~7`d~f-1FP0{2F8s*0VW1>Ajt+4W?KNY8SL2^95#xwGcmGFmSys1Wd=&JPR?QKV>V?l z+x(Y_m5JAcfe{FSTp(#anV(fm-2$kH4aj3);AOA`l00BGD}xn-HIT>1U;`wX7;FKX CG7mri diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.class index 46dc0df6bb2ac7f6c489ee1f730f7187c5e54733..56835c1341d3a61ced8180ad6ab583a6eaf31893 100644 GIT binary patch delta 690 zcmYk3O-~b16o#KW)ArKobwCQJMa!pF2Sl+21?59=!NwK%1FF%Drkc=we*xH#n@ASM6nBzv_M<%uN)kj-=;Gl=JgaXNFRwqlC9#&7r5vU6Yb;0_+KUW7?v2~OB^Q02qn%* zl$*W#lAV_<$Ay$NBe}B7DL|XSs0cg%l_phIQe{Ut+DQ!LaxsO?TKMK8{rlJP4%$fbpeR2Y} zG};eOoxHj!jpJ*!4BPA&cG=VH8=4#_!cNy+?%cU1FdTAZIOariYB=NEaDi`Fz*k(_ zy7pV}TyZ{CDV|f`zA%P zl%ANEk$**TRN^$pyqtEwhMZQxX}OQ~=&v=fs*bGVBvNv7aqD5+szoLuJ9P2-bL(=G hjS+-S5Tyjsj1lQDYU2GT?1}0A2q7I46pMY;rC-dSET#Ye diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.class index 99a88a1662b3620e54712e74bbdb369e71cc322c..611ab045b514222babbe9c974551a29fd480d15e 100644 GIT binary patch delta 822 zcmYk3&rTCj6vltIQ#y2*4g$5H2)4CSDENcCC2-@p`dxr?~N?v~y4xJxs)8(dHr?*c7;KvSxFF$k!L@yGomniq(9n_)HOeTHY?LmuqD? z`zKeY?#foJl`9IXvbkNZ-FxVj&ENEzuKD_$TV7hDGm7;8bhMKuCf>r{2m&a?h{WOD z=f+rlM6wQs#0Y+d>0^W=a%o;71Zk=gm9%y zr&rEVi3yQ^QmjsplqXG!MG>22!P6BHtCD37h9;!mT0r3TWmck Ym%$E;nsLdAcKD! z1N(9YA+Qj~CI%J}2F}R|ERt%%3{nh|4AKlr46+O&KutUltqh_JVnCiG5VJ5a2~VES M62{0e`5Q|O0LQf#Z2$lO delta 126 zcmeys^@(eOnlRh`moq_N78ipmg9eDu+-UiiSu2x)nSqgkfkAZ>1JgDJ)>#bvK!ykd z`!)v7E)W!qR%pl4j2INTsF$)8e=;XO9 MVT@dpzp&H*09Dx-82|tP diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.class index 09718df172b86ac10476d0a2d07a89f6f26ae8d4..363ee9bbf5447e9e8ad4658803a2d0bcc9f55477 100644 GIT binary patch delta 19 Xcmey#@sneMEXV#23}CQPHG~BKMYsi( delta 19 Ycmey#@sneMEQkHenIJH0qiP5X09sWDr2qf` diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.class index bd759a1f4d4fab0f96fac2b7a1c7a61becea6004..6206c3ffe1ebe0b5897f25cd93a83da12ec90591 100644 GIT binary patch delta 555 zcmYk3yHdhH6o&szLe>o-L2e=!FDR&hctPzPhT78BXVGV1sN@B##Tg0BzvRsScG6wKyBzf!n3z;D?hdgHwg@uOS9lo-so*5hnK%hWu2~{F2Cc-<~ zNM3CUX9jPAc#2!60Dp$HCz$!F5vV(d=I9Dy3@a$|siI^V)RqP%=6G<5DaH+yX%LTp z+%2oG3JF#ARkzd`OU9r3WC}S3JPfPH~#F@7@xqcJ6`}7u;&>JJ9nxcClx%4{Naqt8gLTU!T;K z8W=W}CkF)r8GUAFaJU0(^ad5Zz!@R)%-q2&<18|a9$YF!Q;^C@J?1da%tbL~b(jlF zB>-s#$_g0#D^;v4#mZ~;k-}hXz`cjhO<{!GBh2_n3oRBmmMTq__V{8o3s2O~(k^7>XFhb^j@`@t$*DRnL8Ryt}6&NMG7R z3WdmGpBY&l}>VN2D&M1V0RvNK*|Vg-K!rNlU{#%VJ#$tjKGZs>^HJI*B)W zf4kVdZD_iK6Hg*Hi%PpusSZz}|Ig8q^R;IXI!2UYL?=QdgAwUL)6NkdbF#^qOnN>; MNJa!jIm}%B1=Z^&eEFx7Mj?&(6~oKj8RJ?6E!A=wM)Xn z)VOfxrkl123m5$WegT)R-MTi$`=*o1J@1|K&b{x0^JC=R_rKo`fMsquB*?{> z;(~+6bc`8hHF<|H1x?Xmj*=-ZMykKI&G*Sbm(1aL&1KC(r+nbWANchr&o}B@59^O# zG&;ZUr%#a7EV?YQ?6N{xQ*l}4ilW%vwKCmz%8Oj(nqt}B(HW25OeUn%T-t?)>ppEmsUx6fJzxLc^n((;>I zWW{MhdW8rIu_f_j_f2S`eM&HokVF@oI3rSx29*lpX~tx=NgZ+|pOfG0sa**cM!<+7 zv}2;;hzXq%-k0W z?#rMhA15kPi8CqYvhsL2=9#8UKJYPicvs&?RQAR>D?Zc0j1u}oN~I#SZO$=arXg@i zR?~))}S?cl0I{#&(vbIhkHC3CvdSK6IvXS&;yA(lLL*VzDBs%BmTca SMP|1;q!8{aD9#5~v;P1JhEd7@ diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class b/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class index 7a155840c4eb2e37a30ec2a80620736d53beeb90..42259250897b58b45a35ad9dedd509cc84c9a92c 100644 GIT binary patch delta 13 Ucmcc4b)9R13Dfd|jb@6h040_LtpET3 delta 13 Ucmcc4b)9R13De?^jb@6h044SW!2kdN diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class index 5d44bdb0b3b29cd5a95daa44918241c42d18a28a..d928a34b8beff72045f7f296c200bb25c4506bdc 100644 GIT binary patch delta 13 UcmX@lah_vC3^OD18!XTq5P26~=?h7O(}CA2679SsEy1&8DU3Fr~j zlsp7IVm7vn*YdyP-Tl9r9lzwxbI0$$&#yq8Lze>6S!S4Z$up;;vctUXTOWFSx>TsT zEU;+%M`Dp-`?sf^K<_Qt{>?@FwX7j44yz8e%afnJK0JrIVvTjh2Ahg4w%cb$wbW2F z*>Tua?BOf+*-;$eDaP@h-i&XfeV;1i^HQE3HU%|iFMEl86ltI+b0Q-;%9y^dPAjucZ>H|F zQf$ejTLQ}oh#6NdJ&detk=2p10($;0?g|I_F*fT7gcBolrD673ghg#)i6p|92rS%msWEXu zx^QQVF5I{glUZo=2N3-UCjJJ0fbraRGVM*~+%xCnJ@0w%i}d$&^XT8#AHY1fe6pNN zF-6HIL)my0kE$CuKh62&GtG?8c`mrYJ!z3+LbGo0;bro7(GA``PW~<#q&bgykD9`* zZ|!XDHWYTL{7~Vng&Ug(&wuBK$$2bjE^|e*$dYE6x?-xO>_Y3cN*7l&4OTq@%~h^x z*0`>@!K&saIn5bziX~Hha5VbmuX?W*`?tgW&D&wPA!AB+%(T?@`p(|^lLz>9ZmTgmYQ3wgK`PMgkQjN6!*tzCO$!Uqf5T_WG+hMFzC4N;tlT)9?Sd54@Fi1(a zQ6-Iqr16!&n7YOxRt7hs{}3l4mBD}Wmb^p<-5^3Y+xdZrV;{-3{o~@BwD(BTW~|*F zTfh^4f|Lj`%p~I!g}lzgy(Ka&w;^WPpNwtx>@?d0 zVkJ9??s01^ZuNv-#EGsXzDNT#k!GO>!b>2|CJ=KmL|-Lh$N diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Drivetrain.class b/build/org/usfirst/frc/team708/robot/subsystems/Drivetrain.class index 23cb924f546953100574097bd7c65c1502303477..cb132b01843d9253056f65991d9546880fdf8580 100644 GIT binary patch delta 97 zcmbPdHP>px4gt;t1`Y;B1_s8y%?Aaf7#TSx-xd5}ugFlrsKZdnXwFc@=)_RX=*v*U w7{O4>n9NYmn8nb*Sjf=GSi#W5SkKVR*v8Pp*vrt$(9FQVzymc(M3{>U0F^%#!T%b3DY&zQ~7z*xl4$XLnH#Mr>l%-GJ*!q~^q%FxWfz`z4FOIVnT3jm@J72f~= diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class b/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class index 8f503261f36983f65427a50d51ea17ea8983486d..b82273e979f4a9147280de289c98ee8ed1b97026 100644 GIT binary patch delta 723 zcmaixPfrs;7{-6IyX??9t)Y~EElLHYLO~RZiekG}P^yraV4_D0^guL12=Q9Kg4u&6 z#=;l(Ac`j?NXcnH`|CUaz?KL(Y zt~Pe=Hr5|C!>ZbK2N(?ZRkb$2RYM>Bh6;n4s^J>f4T~%pZrHt>6b#GM6{$O0Pqz08 z&Bq(to6TL#EyHbA-c_6>6~1?O^1X6-P&k$+N{g0bqz;9FS5djJ<&CuRvSVZorWxi~ zFL7B1Qt8q z#;*OvJ^JF+Ke#jh;}+xTe(uV(?5GZtmL=(2hxJ!bCHbSjA)N~nz{X2wdg6c|$lUvL eW))I0*!JMlaX5zw@j6V(u02&T>kBXlhJFJ2$wh1c delta 698 zcmZva+fGwa5Qe|i*6wy^wH%akE?5wevjsWG`5=NKAxZ+o8xz`uoropSz@?8s$bJDI zfE%JQgbN-(4bQ->J_KRbZYev+&8(R<|NqawChMQR)a$>l&dz}WmMz+CDtTtnVbN(5 zq$^4V-6rda(o3Joo|}+1q2Gi76JA6ZH0O}bFe4T(Ek=(%{dG6gPOyrE`$tVKS23n} z$Ro`-35yBMG&7o6<}|NNZ=R&)H7U&kDMf6>+0W&hvtKrIne47+kvA4^HA}ox^t<0w z^80q6RrMvDz4?R8lC$mPKO8vu&8^wbxxH*gA&vLh{r?*7VQ{y;Lf#3AfN><5CAk=t zSnW21CRC04G1RnLD;+I&&`lln9;2avlDyNaMdd`205uZB9=L^DqAC#^NqX`Zp}MaI zYYPY3iHMNFC%igZ#6y%OnuVcwOv*3?llE$ebo?Ov6MZaq{>eSQ$&u3Jmb?7H8-dte zf%Lrst;Nm!e&Dx0B-V$0_#5krC#4;Y$)_;;i&w@Amdj2lU%OpcVF}a3nDZ&ci`E0Q Tc@KQbl$^FG^@c@oa;o+k{@+X0 diff --git a/src/org/usfirst/frc/team708/robot/Constants.java b/src/org/usfirst/frc/team708/robot/Constants.java index 01279ca..bc11275 100644 --- a/src/org/usfirst/frc/team708/robot/Constants.java +++ b/src/org/usfirst/frc/team708/robot/Constants.java @@ -6,18 +6,24 @@ public final class Constants { * Motor Controllers */ public static final double INTAKE_FORWARD = 1.0; - public static final double INTAKE_REVERSE = -1.0; + public static final double INTAKE_REVERSE = -1.0; public static final double INTAKE_OFF = 0.0; public static final double CLIMB_FORWARD = 1.0; public static final double CLIMB_REVERSE = -1.0; public static final double CLIMB_OFF = 0.0; - public static final double GEAR_FORWARD = -.8; - public static final double GEAR_REVERSE = .8; + public static final double GEAR_UP = 0.4; + public static final double GEAR_DOWN = -0.4; public static final double GEAR_OFF = 0.0; + public static final double GEAR_IN = 1.0; + public static final double GEAR_OUT = -1.0; + public static final int PIVOT_GEAR_ENCODER_COUNT = 1024; + public static final int PIVOT_GEAR_ENCODER_HIGH = 50; + public static final int PIVOT_GEAR_ENCODER_LOW = 35; + public static final double MOTOR_FORWARD = 1.0; public static final double MOTOR_REVERSE = -1.0; @@ -40,8 +46,8 @@ public final class Constants { public static final double SHOOTER_MOTOR_OFF = 0.0; public static final double SHOOTER_MOTOR_BACKWARD = -1.0; - public static final double SHOOTER_MOTOR_SPEED_LOW = 2100; - public static final double SHOOTER_MOTOR_SPEED_HIGH = 2500; + public static final double SHOOTER_MOTOR_SPEED_LOW = 2500; + public static final double SHOOTER_MOTOR_SPEED_HIGH = 3000; public static final int SHOOTER_ENCODER_PULSES = 12; @@ -58,7 +64,7 @@ public final class Constants { public static final int HOOD_MAX = 2000; public static final int HOOD_MIN = 30; - public static final int HOOD_BUMBER = 1880; + public static final int HOOD_BUMBER = 1795; public static final int HOOD_GEAR = 1600; public static final int HOOD_CALIBRATION = 10; @@ -106,10 +112,20 @@ public final class Constants { // LED CONTROLS public static final byte SET_ALLIANCE_INVALID = 0x00; - public static final byte SET_ALLIANCE_BLUE = 0x01; - public static final byte SET_ALLIANCE_RED = 0x02; - public static final byte MAX_LED_CODE = 0x10; - + public static final byte SET_ALLIANCE_RED = 0x01; + public static final byte SET_ALLIANCE_BLUE = 0x02; + public static final byte SET_TARGETING = 0x03; + public static final byte SET_TARGET_FOUND = 0x04; + public static final byte SET_HAS_GEAR = 0x05; +// public static final byte = 0x06; +// public static final byte = 0x07; +// public static final byte = 0x08; + public static final byte SET_OFF = 0x09; + public static final byte MAX_LED_CODE = 0x10; + + public static final int ALLIANCE_RED = 1; + public static final int ALLIANCE_BLUE = -1; + /* * Vision Processor */ diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index 3c4ed16..bc730e6 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -48,6 +48,7 @@ import org.usfirst.frc.team708.robot.commands.shooter.*; import org.usfirst.frc.team708.robot.commands.visionProcessor.*; import org.usfirst.frc.team708.robot.commands.led_out.*; +import org.usfirst.frc.team708.robot.commands.AllianceSelection.*; public class Robot extends IterativeRobot { @@ -72,9 +73,9 @@ public class Robot extends IterativeRobot { public static OI oi; - public static int AllianceColor; public static DriverStation ds; public static DriverStation.Alliance alliance; + public static int allianceColor; // public static Solenoid pwr0; // public static Solenoid pwr1; @@ -83,11 +84,13 @@ public class Robot extends IterativeRobot { // public static Solenoid gearLight; // public static Solenoid boilerLight; - SendableChooser autonomousMode = new SendableChooser<>(); - + SendableChooser autonomousMode = new SendableChooser<>(); + SendableChooser AllianceSelection = new SendableChooser<>(); Command autonomousCommand; Preferences prefs; + double AllianceSelectionDouble; + /** * This function is run when the robot is first started up and should be * used for any initialization code. @@ -146,30 +149,30 @@ public void disabledPeriodic() { sendStatistics(); prefs = Preferences.getInstance(); -// try { -// if (ds.isSysActive()){ -// if (ds.isFMSAttached()) -// { -// alliance = ds.getAlliance(); -// if (ds.getAlliance() == Alliance.Blue){ -// led1.send_to_led(Constants.SET_ALLIANCE_BLUE); -// AllianceColor = -1; -// } -// else if (ds.getAlliance() == Alliance.Red){ -// led1.send_to_led(Constants.SET_ALLIANCE_RED); -// AllianceColor = 1; -// } -// else { -// led1.send_to_led(Constants.SET_ALLIANCE_INVALID); -// AllianceColor = 0; -// } -// } -// } -// } -// catch (Exception e) -// { -// led1.send_to_led(Constants.MAX_LED_CODE); -// } + try { + if (ds.isSysActive()){ + if (ds.isFMSAttached()) + { + alliance = ds.getAlliance(); + if (ds.getAlliance() == Alliance.Blue){ + led1.send_to_led(Constants.SET_ALLIANCE_BLUE); + allianceColor = Constants.ALLIANCE_BLUE; + } + else if (ds.getAlliance() == Alliance.Red){ + led1.send_to_led(Constants.SET_ALLIANCE_RED); + allianceColor = Constants.ALLIANCE_RED; + } + else { + led1.send_to_led(Constants.SET_ALLIANCE_INVALID); + allianceColor = 0; + } + } + } + } + catch (Exception e) + { + led1.send_to_led(Constants.MAX_LED_CODE); + } } /** @@ -177,8 +180,8 @@ public void disabledPeriodic() { */ public void autonomousInit() { -// turnDirection = prefs.getDouble("TurnDirection", 4.0); - + AllianceSelectionDouble = (Double)AllianceSelection.getSelected(); + // schedule the autonomous command (example) autonomousCommand = (Command)autonomousMode.getSelected(); if (autonomousCommand != null) autonomousCommand.start(); @@ -249,8 +252,13 @@ private void sendStatistics() { // visionGear.sendToDashboard(); } } - - /** + + private void queueAlliance() { + AllianceSelection.addDefault("RED", new RedAlliance()); + AllianceSelection.addObject("BLUE", new BlueAlliance()); + + SmartDashboard.putData("Alliance Color", AllianceSelection); + } /** * Adds every autonomous mode to the selection box and adds the box to the Smart Dashboard */ private void queueAutonomousModes() { diff --git a/src/org/usfirst/frc/team708/robot/RobotMap.java b/src/org/usfirst/frc/team708/robot/RobotMap.java index 43ac80b..fbe7e1f 100644 --- a/src/org/usfirst/frc/team708/robot/RobotMap.java +++ b/src/org/usfirst/frc/team708/robot/RobotMap.java @@ -58,7 +58,7 @@ public class RobotMap { public static final int drivetrainEncoderBLeft = 3; // public static final int shooterEncoderA = 4; // public static final int shooterEncoderB = 5; - public static final int gearSensorSwitch = 6; + public static final int gearSensorSwitch = 5; // public static final int = 7; // public static final int = 8; // public static final int = 9; diff --git a/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/BlueAlliance.java b/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/BlueAlliance.java new file mode 100644 index 0000000..a4105b4 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/BlueAlliance.java @@ -0,0 +1,28 @@ +package org.usfirst.frc.team708.robot.commands.AllianceSelection; +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.Robot; +import edu.wpi.first.wpilibj.command.Command; + + public class BlueAlliance extends Command { + + public BlueAlliance() { + } + + protected void initialize() { + } + + protected void execute() { + Robot.allianceColor = Constants.ALLIANCE_RED; + } + + protected boolean isFinished() { + return true; + } + + protected void end() { + } + + protected void interrupted() { + end(); + } + } \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/RedAlliance.java b/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/RedAlliance.java new file mode 100644 index 0000000..4537a09 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/RedAlliance.java @@ -0,0 +1,28 @@ +package org.usfirst.frc.team708.robot.commands.AllianceSelection; +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.Robot; +import edu.wpi.first.wpilibj.command.Command; + + public class RedAlliance extends Command { + + public RedAlliance() { + } + + protected void initialize() { + } + + protected void execute() { + Robot.allianceColor = Constants.ALLIANCE_RED; + } + + protected boolean isFinished() { + return true; + } + + protected void end() { + } + + protected void interrupted() { + end(); + } + } \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.java b/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.java index 5924422..d17e8aa 100644 --- a/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.java +++ b/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.java @@ -19,6 +19,7 @@ public SpinFeeder() { requires(Robot.feeder); requires(Robot.intake_ball); + requires(Robot.drivetrain); } diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java index 5bb4148..4880a71 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java @@ -29,10 +29,18 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { double gearAngle = OI.operatorGamepad.getAxis(Gamepad.leftStick_Y); //Gets Input from operator's controller - - Robot.pivot_gear.moveMotor(gearAngle); //Defines move speed from the operator's controller +// Robot.pivot_gear.moveMotor(gearAngle); + if ((gearAngle >0) +// && (!Robot.pivot_gear.isFwdSwitch()) + ) + Robot.pivot_gear.moveMotor(Constants.GEAR_UP); + else if ((gearAngle <0) +// && (!Robot.pivot_gear.isRevSwitch()) + ) + Robot.pivot_gear.moveMotor(Constants.GEAR_DOWN); //Defines move speed from the operator's controller } + // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { return false; diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java index 690f9a3..164ba1f 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java @@ -12,6 +12,7 @@ import edu.wpi.first.wpilibj.command.Command; import edu.wpi.first.wpilibj.command.WaitCommand; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; /** * @@ -30,8 +31,28 @@ protected void initialize() { protected void execute() { double gearAngle = OI.operatorGamepad.getAxis(Gamepad.leftStick_X); //Gets Input from operator's controller - Robot.intake_gear.moveMotor(gearAngle); //Defines move speed from the operator's controller - } +/// Robot.intake_gear.moveMotor(gearAngle); //Defines move speed from the operator's controller + + if ((!Robot.intake_gear.hasGear()) && (gearAngle>0)) + Robot.intake_gear.moveMotor(Constants.GEAR_IN); + else if (gearAngle<0) + Robot.intake_gear.moveMotor(Constants.GEAR_OUT); + else + { + Robot.intake_gear.stop(); + Robot.pivot_gear.moveMotor(Constants.GEAR_UP); + } +// if (gearAngle>0) +// { +// SmartDashboard.putNumber("GEAR IN", gearAngle); +// Robot.intake_gear.moveMotor(Constants.GEAR_IN); +// } +// else if (gearAngle<0) +// { +// SmartDashboard.putNumber("GEAR OUT", gearAngle); +// Robot.intake_gear.moveMotor(Constants.GEAR_OUT); +// } + } // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { @@ -41,6 +62,7 @@ protected boolean isFinished() { // Called once after isFinished returns true protected void end() { Robot.intake_gear.stop(); + Robot.pivot_gear.stop(); } // Called when another command which requires one or more of the same diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java index 0d75fa2..e320606 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java @@ -20,11 +20,11 @@ protected void initialize() { protected void execute() { if (!Robot.intake_gear.hasGear()) - Robot.intake_gear.moveMotor(Constants.GEAR_FORWARD); + Robot.intake_gear.moveMotor(Constants.GEAR_IN); else { Robot.intake_gear.stop(); - Robot.pivot_gear.moveMotor(Constants.GEAR_FORWARD); + Robot.pivot_gear.moveMotor(Constants.GEAR_UP); } } diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java index c54e523..e4a016a 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java @@ -20,7 +20,7 @@ protected void initialize() { protected void execute() { - Robot.intake_gear.moveMotor(Constants.GEAR_REVERSE); + Robot.intake_gear.moveMotor(Constants.GEAR_OUT); } diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java index b3e7e16..438046d 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java @@ -16,7 +16,7 @@ protected void initialize() { protected void execute() { if (!Robot.pivot_gear.isFwdSwitch()) - Robot.pivot_gear.moveMotor(Constants.INTAKE_FORWARD); + Robot.pivot_gear.moveMotor(Constants.GEAR_UP); else Robot.pivot_gear.stop(); } diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.java index 3f7f5eb..efaaedd 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.java @@ -27,15 +27,15 @@ protected void execute() { // LOADER_IN_BUTTON = Gamepad.Button_L_Shoulder; // LOADER_OUT_BUTTON = Gamepad.shoulderAxisLeft; - if (L_Shoulderpressed == true){ - Robot.intake_gear.moveMotor(Constants.INTAKE_FORWARD); - } - else if (OI.driverGamepad.getAxis(Gamepad.shoulderAxisLeft) != 0.0){ - Robot.intake_gear.moveMotor(Constants.GEAR_REVERSE); - } - else { - Robot.intake_gear.moveMotor(Constants.GEAR_OFF); - } +// if (L_Shoulderpressed == true){ +// Robot.intake_gear.moveMotor(Constants.GEAR_IN); +// } +// else if (OI.driverGamepad.getAxis(Gamepad.shoulderAxisLeft) != 0.0){ +// Robot.intake_gear.moveMotor(Constants.GEAR_DOWN); +// } +// else { +// Robot.intake_gear.moveMotor(Constants.GEAR_OFF); +// } } diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java index 9610ddb..97deec3 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java @@ -33,13 +33,13 @@ protected void execute() { Robot.shooter.setFgain(Constants.SHOOTER_F); if (Robot.drivetrain.getSonarDistance() > 60) { - Robot.shooter.moveHood(Constants.HOOD_GEAR); +// Robot.shooter.moveHood(Constants.HOOD_GEAR); Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_HIGH); } else { Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_LOW); - Robot.shooter.moveHood(Constants.HOOD_BUMBER); +// Robot.shooter.moveHood(Constants.HOOD_BUMBER); } } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java index f661cfc..4da3d47 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java @@ -395,7 +395,7 @@ public void sendToDashboard() { // SmartDashboard.putNumber("DT Lft Master", leftMaster.getTemperature()); // SmartDashboard.putNumber("DT Lft Slave", leftSlave.getTemperature()); } - SmartDashboard.putNumber("AllianceColor", Robot.AllianceColor); + SmartDashboard.putNumber("AllianceColor", Robot.allianceColor); SmartDashboard.putBoolean("has gear", hasGear()); SmartDashboard.putNumber("Gyro angle", ( (int)gyro.getAngle())); // Gyro angle SmartDashboard.putNumber("DT Sonar Distance", getSonarDistance()); // Sonar distance reading diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java index 687d205..e8a6f3c 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java @@ -28,7 +28,7 @@ public Pivot_Gear() { // pivotMotor.reverseSensor(true); pivotMotor.setFeedbackDevice(FeedbackDevice.QuadEncoder); pivotMotor.configEncoderCodesPerRev(Constants.PIVOT_GEAR_ENCODER_COUNT); - +// pivotMotor.reset(); } public void initDefaultCommand() { @@ -36,18 +36,15 @@ public void initDefaultCommand() { //I believe this sets the speed of the motor public void moveMotor(double speed) { - // if (!(Robot.pivot_gear.isFwdSwitch() || Robot.pivot_gear.isRevSwitch())) pivotMotor.set(speed); - // else - // pivotMotor.set(Constants.INTAKE_OFF); } public boolean isFwdSwitch() { - return (pivotMotor.isFwdLimitSwitchClosed()); + return (pivotMotor.getPosition()>= Constants.PIVOT_GEAR_ENCODER_HIGH); } public boolean isRevSwitch() { - return (pivotMotor.isRevLimitSwitchClosed()); + return (pivotMotor.getPosition()<= Constants.PIVOT_GEAR_ENCODER_LOW); } //I believe this stops the motor diff --git a/sysProps.xml b/sysProps.xml index dca4f28b7abb6479387db924122014d8f85f1bf2..4a2a90509411e77fdf6ca5cc219c0b63026de592 100644 GIT binary patch delta 79 zcmZ2uu+CsZ37@G6gA0Qx5Lz%8fT03|IfD~}F;K*j!Ii-TD5d~Z0a9fM6g6Qm1FBS* W%*b!M`3c`4W@a-6%grl=nppuO=?-fE delta 77 zcmZ2yu*P6R37@eWg9{M408u From 80c7d682107ff9f470335f004d175cb7e5bd2c1a Mon Sep 17 00:00:00 2001 From: jpiergal Date: Mon, 20 Feb 2017 23:22:17 -0500 Subject: [PATCH 29/69] after practice driving --- .../usfirst/frc/team708/robot/Constants.class | Bin 3100 -> 3214 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 6141 -> 6633 bytes .../AllianceSelection/BlueAlliance.class | Bin 0 -> 890 bytes .../AllianceSelection/RedAlliance.class | Bin 0 -> 887 bytes .../robot/commands/feeder/SpinFeeder.class | Bin 1293 -> 1383 bytes .../commands/intake_gear/GearAdjust.class | Bin 1508 -> 1508 bytes .../robot/commands/led_out/LED_out.class | Bin 1194 -> 1194 bytes .../team708/robot/subsystems/Drivetrain.class | Bin 7453 -> 7469 bytes .../robot/subsystems/Intake_Gear.class | Bin 1188 -> 1400 bytes .../team708/robot/subsystems/Pivot_Gear.class | Bin 1642 -> 1642 bytes .../usfirst/frc/team708/robot/Constants.java | 6 +++--- .../commands/intake_gear/GearAdjust.java | 1 - .../robot/commands/led_out/LED_out.java | 2 +- .../team708/robot/subsystems/Intake_Gear.java | 11 +++++++++++ sysProps.xml | Bin 6190 -> 6190 bytes 15 files changed, 15 insertions(+), 5 deletions(-) create mode 100644 build/org/usfirst/frc/team708/robot/commands/AllianceSelection/BlueAlliance.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/AllianceSelection/RedAlliance.class diff --git a/build/org/usfirst/frc/team708/robot/Constants.class b/build/org/usfirst/frc/team708/robot/Constants.class index 14b2dc48c16908725ab354ec206ea495c09ea759..ea6a4a5fe01a84f258adc87c2146dcb43ff744e0 100644 GIT binary patch delta 244 zcmbOu(I+W->ff$?3=9k=4D-1dm>K4gppBsvKFHh%m4rX|84eQ{J

      F3T2)Xg^8j7?RE$I-{f)6vh_H9pAIg^__5&UNw$ zb!7$`^nY?B+XS}B3{w~x)F&@wQ=crxF2m@%*_eGHi?t*}A43BJBLf@II3|XE21$kq z3^H(jGLSzJi9ZP_!^i+M2}n+ze4krPeHzFaKpq3o7t?_x517r$FoR(xkjKa{3rI3C G%mx6dZ#5kN delta 125 zcmeB^oFgH6>ff$?3=9k=470cxm>H(CGt6LTn7L6@gptu`vKFHh3s6pZvj^h`mdRmk z%9H1^^)dG`^iS4fcVqP0T*|(Xg`1IqkpUCSB0 ziU;0`idQ)*prQy~Tv@tQwju(eqJk%0fT(~MC^smG{@=`Aflb}CzhB<>zW3gDfA4+Y zPVal|_B#Nq5^GdAII7@VD#~!Q8aD2b!?zXOsiMkT`Hr03rQmKAs<(2Fg72!R^^kiN zd{0G#hkReb4^&L{koy$;P(_o6{7Au%RZRDg`xQK(Vy1`uM8Qv0%=VC8^cPctOvPIs8=)f0Ju}uf{<5`2%k?>D?(La;;2v5C_+;amD5^9 z)TyxKv|bW7C}NT#`~s@&=#IV395UhpCxnbhBCv1R3=EiY+mW-V*}psBZm;FxNZcGT zoVaer1XhQv_+TJmdq)T2;ecc4LnkgfDG;~%Ehk_n`t1X@V+`4WV2+GT6nmFtIa1t; z(mC{bG$gMYFpP+#US2wNk4r-08Z+kTdyJj^dNeAqrgRRy9$hEt3fK%9Iu)5Xo6|{0 zHtMiBVmUiKE)#I)7MCo;q$+CZ6ZJ>PC7}jNIBE{{PcRl;9*s0$#I#K-7BUB%3FX7~ z92uEt9+OVXj7mjLEIlY58;>xrjr7ZLXp?bgMbwBa7w9Nmi%@rv!pkgEVDA5++T1Ho zMr?ukg&ro{VrC+Sxn_A%j1Jr*_;F`3wg3`Vc@#$raiE2`VJL4F;j@N3PIlW}d9 zahDaf=r7SLP^TvxD`pK@345azF=S>Je-G>-J?=zwdsn}u$0LD0BNoy7qed4mscp#2 zo|Ki;XGD##w1sPV?p@Z`G<@8WSOpr9bb~JX6)7*R5gigq9WRp>^I~{;=j4wv$KeYzEWKKie_G zG_-ba!blide+o2u_?S%Lv8j?Sm`#bk+}qDbqR&di!$uFUHxbt_9nxS8U&6HltBxnd zG<+6UYPbql3N#mI;MOb+35;l>Q3_gl?0^+5R~q(VzreDRNi%gy!vVaVwv|j*P+v5> z6Yn|>TKRx!csDMZh^hHfqTxMwuRx$=mA#^>;X=G)B4l3e(eOUJUtmee()h}1_&6?^ zNH8*mO2Y^6!HGB}U!F942p?uKDOt_JlBD4yxOn1ny*Pdp9}{Rfw%pCV8a{zfYWOCu z)o=vYDq@Nzn#5F1Op_}qxiVd@%+T<8d_lvf@M%RfYhtE2K@+p&Fk7@}_zW)B#2j4C z2l?0%yR4Y)=rPCE#9T2?!xcEBiB?HCxyT!)iTPpypS}E+_X=xbp=i@^4Zg@iSp4?B zt^jDb8lTg|B56>&CKi)iETM^Fsl3_cTf2h-!DFkQ;b;f4Pg$-s1-2TI?4l+*M1Uos zGjw*hK=*O8?2P8$Oie74JnOPDTHKPWh~=7CAy)F~bc=pVpX{p#cR4KsR=mYwLoU!$ zqWpYY?zP%kR-~8DAYWRsif?bwYT0D5e8mO@)|SXRUta=2D@R@Lscgnt`t~ODI8|MD z9Q@?3g5Fq`Lxq!wvrSktaYi0t{aEu)173Vd^T=~n&?mJ*_V6Qhqo!MBO$JW8Ldp7oMaM;GsHlCqf z*-OB8d|dfsSm!)RRVw7QA|Kgn>~yT1Y^Au^)+xKVa^7N3gcp2?HBv=Ao<~#T9ye4=!8s0>R2~f~cdjcomac zoM#`^mksJ#sY7L3FeqVL+c@dBNgpyI1tgfmk0A~}Ml|t{eHX`S*+03E{g4aUEx3?9 zjtkkZxRA|<3)vR9kR{uNtiLW~DRm+1q6^syxRCYFg{*8YWGQnYD-$7PpXfriiY{aw zaUsj03t5B+YawJe%JIv@Hlmy}pt=1vi1swfcHD;Y!>GtlD{tX;8Ls14$HTyCRNx%c z<6K-%O!LU`6?~PLz}K>@MNNkF)#O!0w#s4n+HZv~h3Yg^F4QEUrBTaST@v+aG;lU4 z34a=sIcrQ}N*Ya^O-*828q+zOkwkMEGdVjUiCJmP=By=&Icd!0Y+e$rY0T$rK@tno zXya^A5){9fvn5F^O{0UeKoZMn?sERE$QySi{4^kf8W^1I;kTjAtEk56 z_9Iwx7$=V6q!dm*gl+ERltVbnovcmbRBtkh)2_p$QOv1KVO?1g>#s*!c4vdPQ^B1I zcc+f$%88Y`m=+@1&_MhahG`NljG>bul7aPXKgiE_m-6e~W!yc48O*17v}OtWk&~E7 z>)2NH;2LaY7VTgLT|mk~TDk`}k<&Nmp&NMvZgy>NqJ0*8T)n|fkNp`h+(=m(Dqlg* zbhT5#O+N14ob?NR?d4)eJJW;)cHN0!3f+g%BNu2F7fwHnGl-mVFH{Lq=#>%ltnf22 z0p<{H=l8}mmf~nZBsvOopq!-?eM?UCX~g6;sL6*UpBY}--$n1-P4C=Oz_TV7-O(JY zo(!w{F>0QfS5t-`xSzM_fdW?bW7Vr8mt>CTViHL8L|&;Xcj3VT4kD+_tvSLH?0SfH zJxseEDPWbi>u`?MDH*$bM{t%**}N*Ae;#8L9*2S_3i$XkDwWCpob>X=xq(rVwuI;( zz6GI1Y`pwRtoN|ZqtH^=GK%ID-aLv~DQq1@eF}Zd-ITl*ttp&63V#aQM=>RZb4D>O zg>&=HUBUbUo}_c1!W2A>W<0~U`dKW*bIgb5u@W!fWW301ehJ-p8E4_O0)0aTL8ydy zh1+FJsI2N2WK?(a)4wB)^Z1&)C55+A`AYxW(m0>^&J-^2>vH7?`twe5lT+{)f+$0a zsK6poSs=JQ=P3TP$vEl~ULfhHE#y_<52q2?L0>h(xDA7p;jZpV!=%jJo(>iMJ!wRV z4`ugbX;{RErA~V##TcDtF!bQp_9nj73q&o}h&uF$25c6S3Uu3&(~ZBqGP+$zD0N%T z=o~?uk#a}P9p|{C-yNs8<1}|{<(PNK0#;0jsi+dup@|vri)Ks{Gr^x~Xce>2F6LpG eXf04=c}|hrDY}d|{4zq7iX7zsX{N3lne1|#WVw-$?Nne0xIDVv?JGn*Fi zz*|946bls)6a*2gHcPjGRSpkSz!NXP1Mn=$4PI5`|K9BGY;aRI&F`1@-uLEx|My+< zec#UgFW-3=fRn`>9X9rB__B@)?61WDzM|o)I;wr*fLx7eNb9KecW&2kP>10Y84ZVY zH2B1*hC6gL`NW+XvO1>t#Md-@UB`5vxJ$#`I%fIAJsR%SG1n))q2Zf4=J~|8G<;jf z0-v}~!*_Hn@`>+i_@0h7pSWMc13FIhi3fGc|9v_9K*ta9BRTw7l0VV$5PmAP`$T!cXIRhIyx{Shd=1}qeQR9 zpK8`VMq~0%Qh%1FIxN-YFiQ@G9OlYlo*WwF&?JW`I2^*08vatVE|dq@j=#$Lo(kb< z4bSK}5BnwkYzWV3cwWc(*dM|R8eY^9mCKiO{0)DX!#_0qQ^UUmbk{RIcbh$EB?ad6 zSg}-i_mCa#vy-kTS8=;{S6Dq>&BL*zJ#2YN(@qGS(&Hri!ztH4+Lw%mJ$5UgUb#pd0Qiun|Oa2OP(f*PT>8Ld54GdrhBZ#U%HN^0~Vd3z_TeglAr0 z?d&z9ADv2mX(9IAkR+VdNbuY31`qrxf`9BB_q3Z zK5z%kq!%;YfnLW<#=;RR5i@(^RtH~F*OHOl7$9{xgM(%wCa`E6u&93^oI6PF>Y=37 zM+N4O!?A^rt)xX0x;$NTrk$|8H3F5bi?<6@btusrdhCR?DJ6q@o0LtUsmF<$@$F{P zmUM2j${Vni>5rbvw#tmgyJ}Tx>*jp|lVi3kkz!k{r0vA)C|${Gru6JGhs|)@O!S90 z?1@@KIj>Ek1EUvgG>6p9tQ2GH?L#&NW(z=d&x%{lkblC+U+R?jp&zA$B_to393%g;3(+iJ z-f60OwM1mo*gxR4^f}2EkKLv~*U=@;-QtFWp40Cm^HAiMse*|}Ofke%F^&1D(`nh{ zFr_E@1y+}dALQI{r<3D0#B_<*;0tdjS|S&w%p`?gdkmnm`Rz{R5vsgYlHK#Fi39nJ z%|Y^RiLf$6Wqr}a3`5Kmv*a+Fh4bj(DvJv&DDB>E_U3FghOOMOrKOLJ=}HP+1dBK0 zEXne?s5DzXcp}jO9#9=$UBBgZtMH7{!b@5gk5l&lhm{4nGMS<==as&zs83)pkBeJ$ zjEM6~V~tT){*Z7Z7rE&f{D*cDCEKF|yucou_U*L%s6d6|>*C_m6=tSdyYt zwZ~ILuam`jr|0ZsuffgMcG>1sZp~le2Z5xTc}4IxZ|>d2;2=y*RCb&Ey|bjWYH{kY z+fKxs-QgZC&rwU>K=GAoopfr_awXLuMcL*QIt4yy?d+8D)S9uFe`Pr+8Z$yQWbd|G3enm+PQYz4 z2d!AqQOx6ydYeDKoB7ZFgk!DjGt|t!LCvhHYGyB>X4Z8zvq-C%8%#x{Q)(JH;W2>2!K+R13oFQ8&H8TmTndO4B0U;YSj#rUdgG#P|$!&)q+OnwF zaR`+MQFVZO6}XzC{A|EaJgCBU?Bh!E^E^I{Yd8yBo5vD$Ijrl5Q%#(jgV5S;hn7Jo zi&}2zY1Cz5a5X87`Yal_nw&;s7EN3omqv3IQ@EO%#xg>uP1k5Xsu3#8xLTSW3qc|ypl@#OTwo#mN5UWOTY6hq6!#1@zeIL$Ni!;(#?Jq`f=FMmv zK}&T8Ybw%Mdkb3gPuBTQs`#WzJ*nrpN>Y`IGI~f(o=o}x-PA~}5?D_cNvHa{Ux6Bi zhR!~sk+RNYK+LBmOR2$WbnaSe)`ibtE3U^5+`vypH=-Xm5$8)px|LSBje)yg={}YE zISBFe^(s8}5BBB(>MAHT0KZ)p;e>J`Rmh%{{4$&DXO@t< z^w2(h?O)f7?yIiBI-g=_*JZ$6>xRA?(QDT($e=EY4#(c}oUwRrJm* z&L?f=pZ8`FB^@K(WXThw=nG6alg@ysz*JF*g`yg(L=Cz`2%Fia2l-=5!L0lRkdy6V z&Qi7&wAU#5X*)GCpt){QW1||I)i_O!^En2WFJwIeJMkLP2tzcXiH-Pl_Th8I6f6)^ j(I#eLIbWPWkQD_%ZsXMzeCa>RS*IYE@niQ#*3EbYI+4Z8 diff --git a/build/org/usfirst/frc/team708/robot/commands/AllianceSelection/BlueAlliance.class b/build/org/usfirst/frc/team708/robot/commands/AllianceSelection/BlueAlliance.class new file mode 100644 index 0000000000000000000000000000000000000000..a70b6e268a8931457d6b2e0579e0a2285a686a2b GIT binary patch literal 890 zcma)3TT4_y9RJOFc8?y{)=OSeyAe`ZI6{JfBGi%*EIwrT(A(_UQAcKHWX_z7K2t9u z6!g#s=tD{W*~{@DwDj`7&HOI&pFh{XegoLTqXac9#8{lb67D6aVmZc2j8%r(t}@E+ zF^oNXe#8(pZAUURTFS_SyxW%UlW1$2%(iSQ^pS8X^n+pKPgTb7zGdAB&$DCYGS81) z%Doib?akNR*|zmOwcV~Tos7THS_zZNL#buzl{NgW&gF2r!;l0sN@(?sBxCtirn#po zQQ1D7WT&#zGy0jLG*nM2NZH6JJCfF~%95jyBu0CiBAh zEXMsh9^hdevjO&QH0(d$$gn0mIlnkpyuU4~v}&IXcf_0hT`@cvt@kl(mSIW^R@$`M zItKOukLi1B^zEQXOT;+E3F=-^W|XVzKfx}ks34)3PzGI!=+Y!r_5LNwQ`AMcQxLqM zJ`j|^K_NhHfUE#E3SgleU199Da)UIcO9a(|U>Y+-AFRKm9E2*-_Yix&`_gkIWTimT mhYgVb^t@OC-gurXfQ9GvABb*yUM9~gC4!-6hPyp~^M3);zNH5M literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/AllianceSelection/RedAlliance.class b/build/org/usfirst/frc/team708/robot/commands/AllianceSelection/RedAlliance.class new file mode 100644 index 0000000000000000000000000000000000000000..8321f0352c62e09b65378b8792ea400790eba052 GIT binary patch literal 887 zcma)3+e#cU82+-(?&!F7w`%LD2c?LuElt5f3yL5s3&PS1Enf64I}>YUHjzxGEqx|$ zL}l`B zWA3EreR%hgThld;$EMd4I?4E6nku1Vc_dRAJ7qLKl*wqg%@BDnN~G#1DTeZgjB`g- zq_Q@hWT!Ie`}{&tYO1G|cGBAX-1(E}$mBMbZRPzoOU!T2#5Yk#h)ITx@m5<#XHICB zg?L)WGd!Mt@tQKL78FVS2OVd=<2bU<%P#54qLGYS- zPf!AT1rNCcvI5vBfQ52!g^Byh4bo_q2&x4^6Ay{rTYp2@3sr&(AN#%s(sLzbr9jeu k4Uzx!yifw(d7dkPh3Cy*2=04cCeJG+f{|y2`M$qLx63i3y#N3J literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.class b/build/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.class index fc28b42d5c0b7a5d97ccfc56a75439a659b149a9..32d39606dc6cd2d2fe06b6c2b2a7383837249766 100644 GIT binary patch delta 650 zcmZ9K%PvDv6o$Wj+B$5zJ+4J*QMWp@ZmsJ8LE-_tKobTgmC%^>2@Ir0p1}l3B?ipB z1T$|T);^lk#u==&_TKCN*T4Rp8~v@1K7L-`fFe7ZIO#4jjB5-Nwwkmd>oTR8W=1p1 zoUL-Ul36h%)bV5Dgh5%7mUL`5OsC#Xy;bl|{Mu>uAZ+i;>*VU+_G;3}NC3(J>~ zYEowKK3%z|Z{Ht1)(>C5pL3wkoyM?RV2^!Gk%M?T^k`^~Xljl*iKo+el2WAQaprM8 zdHSxE@IBgw4xyn-&v3!zbg07mmEoGmqi?t>h=Dw(u2$$$0QSSH7B--N~pZcgNof z3ZY32WP8Su2`cRmRQnBQhAS;6?NyE))}*eJOKVkJ)nwnKEGK3mmAxWcj;h6WWRJ1R zLPp8O$cvXsWtBCne8f$Zfp`gKtcVwBp5@4ou7DeO5|vLgg9|KfLkuq77fO$fI3xEZ zZpnM%2%wdbI#w#lrP5(4EhVX}CZQDm`v~P(T?wL>ft4(5+rpyzl$LML&`XLIOAtwT O{R|G~gi&?~C| diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.class index 56835c1341d3a61ced8180ad6ab583a6eaf31893..91c50b16c01188f9f2c21ced926ce478e5457036 100644 GIT binary patch delta 55 zcmaFD{e*kNBNjmg20jL51}O#=1_cIn22BQy$)8yQ7j0pSq2M` delta 55 zcmaFD{e*kNBNjnL20jKA1}O$r1_cHU22BRd$)8yQ81*K*u-dU2Gq5q3Om1hjVYOsn LVX&Hff>j0pS`rJI diff --git a/build/org/usfirst/frc/team708/robot/commands/led_out/LED_out.class b/build/org/usfirst/frc/team708/robot/commands/led_out/LED_out.class index daa1ec40257cce98e25c72c87a72709db613d329..ced0208430f397a3d1da0c6d747dc5f85726e1b3 100644 GIT binary patch delta 14 VcmZ3*xr%c`1v4Y(=1OKmMgSvb1N{I1 delta 14 VcmZ3*xr%c`1v8_-=1OKmMgSv_1Oxy8 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Drivetrain.class b/build/org/usfirst/frc/team708/robot/subsystems/Drivetrain.class index cb132b01843d9253056f65991d9546880fdf8580..eb7117a119b6531a92d7d2d3ab291eab6731e076 100644 GIT binary patch delta 72 zcmV-O0Js00I;}bi%Ko~(0000q0ZFk67zzPJvm*+e0Rcy|zzePe69E7XVQg$^VQyn( eLvL(vat8rOvvCif4Gl&C8~_Xe{QwUEH$WLQtQ0>0 delta 56 zcmV-80LTBWI-NQS%Ko~(0000q0Z6e57zzOgvm*+e0Rcv{zzePe0|x;|vw;tv4Gl#B O8~_Xe{QwUEH$WNZ9uBtv diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.class b/build/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.class index 9c71a85a45be6b94631c350752373b9e518655b6..a1e54a3ae4f9debf249fbcedb33c323bd89f2336 100644 GIT binary patch delta 654 zcmZ{gzfu!X6vlsdH{`OLO$bRuK|l#eLWoEd2@3wfkq!z+$Ce3_3Pzogp2in&wz7A| z#zu5fSoi=wf|Z@GK;`h=g(MWx-20t-&-tD2oKL}Vxc=+kkDtI24=vLnS!OIZEVCg# zm4Jw-(2?jLF?7tR_pDH*3N!A9ye`2&v5+SJgVin z6Om&mQj1Z`-H2tHmX(NcCL-=}-?AF9#)EHv%#g_#Qv2=QhGAhde&$WazrBpz+<3Zb zsCVOK#fHqg_Uqm4gE!ksS5fuJ+)Jk9H>+t3p6e-IvoZk=ogw^;T1+5UjOUbl&?FeeJ5S%VEcejAmne5GNnVw zk>nvbqo{^4u8L#aUe0(s%5i>U&~G1=+&s{3{Keg*gb`2G9!4Hz-BGy@7mmX@U*;IZWsu$`ce&knl*U3!+jW$*Ul zGd?w!UXfCKXU>~N_CrGELk_4~4nvL@SdK&LtQkgeAkU|`tjE6WA|OST1a delta 22 acmaFG^NMGJ6SpS=7_d1wHf;2jWdi_3v;{i= diff --git a/src/org/usfirst/frc/team708/robot/Constants.java b/src/org/usfirst/frc/team708/robot/Constants.java index bc11275..4d0d477 100644 --- a/src/org/usfirst/frc/team708/robot/Constants.java +++ b/src/org/usfirst/frc/team708/robot/Constants.java @@ -21,8 +21,8 @@ public final class Constants { public static final int PIVOT_GEAR_ENCODER_COUNT = 1024; - public static final int PIVOT_GEAR_ENCODER_HIGH = 50; - public static final int PIVOT_GEAR_ENCODER_LOW = 35; + public static final int PIVOT_GEAR_ENCODER_HIGH = 35; + public static final int PIVOT_GEAR_ENCODER_LOW = -2; public static final double MOTOR_FORWARD = 1.0; @@ -117,7 +117,7 @@ public final class Constants { public static final byte SET_TARGETING = 0x03; public static final byte SET_TARGET_FOUND = 0x04; public static final byte SET_HAS_GEAR = 0x05; -// public static final byte = 0x06; + public static final byte SET_HAS_GEAR_TARGETING = 0x06; // public static final byte = 0x07; // public static final byte = 0x08; public static final byte SET_OFF = 0x09; diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java index 4880a71..8d41764 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java @@ -29,7 +29,6 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { double gearAngle = OI.operatorGamepad.getAxis(Gamepad.leftStick_Y); //Gets Input from operator's controller -// Robot.pivot_gear.moveMotor(gearAngle); if ((gearAngle >0) // && (!Robot.pivot_gear.isFwdSwitch()) ) diff --git a/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java b/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java index fc9dfa8..f34b145 100644 --- a/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java +++ b/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java @@ -37,7 +37,7 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { count++; - if (count > Constants.MAX_LED_CODE) count = 0x00; + if (count > Constants.SET_OFF) count = 0x00; Robot.led1.send_to_led(count); // if (count == 0x02) Robot.drivetrain.setGearLight(false); diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java index 00b83c4..318a138 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java @@ -35,6 +35,12 @@ public void moveMotor(double speed) { public boolean hasGear() { // return ((Robot.drivetrain.getIRDistance() > 0) && (Robot.drivetrain.getIRDistance() < Constants.IR_HAS_GEAR_DISTANCE)); + + if (Robot.drivetrain.hasGear()) + Robot.led1.send_to_led(Constants.SET_HAS_GEAR_TARGETING); + else + Robot.led1.send_to_led(Constants.SET_ALLIANCE_BLUE); + return (Robot.drivetrain.hasGear()); } //I believe this stops the motor @@ -47,6 +53,11 @@ public void stop(){ * Sends data about the subsystem to the Smart Dashboard */ public void sendToDashboard() { +// if (Robot.drivetrain.hasGear()) +// Robot.led1.send_to_led(Constants.SET_HAS_GEAR); +// else +// Robot.led1.send_to_led(Constants.SET_ALLIANCE_BLUE); + if (Constants.DEBUG) { } diff --git a/sysProps.xml b/sysProps.xml index 4a2a90509411e77fdf6ca5cc219c0b63026de592..f2bee5909efeb5abddb5c3f7631732cbdf777128 100644 GIT binary patch delta 79 zcmZ2yu+CsZ37@GkgCm0}gA;=*g8>*SFc>iyGME6d5m3yG!Hq$I!3D^70g4y{X^>il X$$>1^o1gF Date: Wed, 22 Feb 2017 00:01:44 -0500 Subject: [PATCH 30/69] after bag --- .../usfirst/frc/team708/robot/Constants.class | Bin 3214 -> 3219 bytes build/org/usfirst/frc/team708/robot/OI.class | Bin 3913 -> 3915 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 6633 -> 6737 bytes .../AllianceSelection/BlueAlliance.class | Bin 890 -> 1048 bytes .../AllianceSelection/RedAlliance.class | Bin 887 -> 1045 bytes .../robot/commands/autonomous/DoNothing.class | Bin 1005 -> 1105 bytes .../commands/autonomous/OneGearCenter.class | Bin 0 -> 1476 bytes .../commands/autonomous/OneGearLeft.class | Bin 0 -> 1952 bytes .../commands/autonomous/OneGearRight.class | Bin 0 -> 1925 bytes .../robot/commands/autonomous/TenBalls.class | Bin 0 -> 2154 bytes .../commands/autonomous/driveDistance.class | Bin 0 -> 1429 bytes .../DriveStraightToEncoderDistance.class | Bin 1913 -> 1863 bytes .../commands/drivetrain/JoystickDrive.class | Bin 1236 -> 1402 bytes .../drivetrain/RotateAndDriveToLift.class | Bin 1925 -> 1898 bytes .../robot/commands/feeder/ManualFeeder.class | Bin 1492 -> 1473 bytes .../intake_gear/Intake_Gear_Off.class | Bin 0 -> 1059 bytes .../intake_gear/Intake_Gear_Out.class | Bin 1145 -> 1214 bytes .../robot/commands/shooter/HoodAdjust.class | Bin 1281 -> 1453 bytes .../robot/commands/shooter/ManualShoot.class | Bin 1367 -> 1422 bytes .../robot/commands/shooter/MoveHoodHigh.class | Bin 1106 -> 1278 bytes .../robot/commands/shooter/MoveHoodLow.class | Bin 1103 -> 1275 bytes .../robot/commands/shooter/SpinShooter.class | Bin 1415 -> 1415 bytes .../team708/robot/subsystems/Drivetrain.class | Bin 7469 -> 7469 bytes .../usfirst/frc/team708/robot/Constants.java | 13 ++- src/org/usfirst/frc/team708/robot/OI.java | 4 +- src/org/usfirst/frc/team708/robot/Robot.java | 39 ++++++--- .../AllianceSelection/BlueAlliance.java | 3 +- .../AllianceSelection/RedAlliance.java | 3 +- .../robot/commands/autonomous/DoNothing.java | 29 ++----- .../commands/autonomous/OneGearCenter.java | 63 +++++++++++++++ .../commands/autonomous/OneGearLeft.java | 62 +++++++++++++++ .../commands/autonomous/OneGearRight.java | 60 ++++++++++++++ .../robot/commands/autonomous/TenBalls.java | 74 ++++++++++++++++++ .../commands/autonomous/driveDistance.java | 48 ++++++++++++ .../DriveStraightToEncoderDistance.java | 6 +- .../commands/drivetrain/JoystickDrive.java | 3 + .../drivetrain/RotateAndDriveToLift.java | 2 +- .../robot/commands/feeder/ManualFeeder.java | 37 ++++----- .../commands/intake_gear/Intake_Gear_Off.java | 42 ++++++++++ .../commands/intake_gear/Intake_Gear_Out.java | 7 +- .../robot/commands/shooter/HoodAdjust.java | 2 + .../robot/commands/shooter/ManualShoot.java | 15 ++-- .../robot/commands/shooter/MoveHoodHigh.java | 4 +- .../robot/commands/shooter/MoveHoodLow.java | 4 +- .../frc/team708/robot/subsystems/Shooter.java | 16 ++-- sysProps.xml | Bin 6190 -> 6190 bytes 46 files changed, 454 insertions(+), 82 deletions(-) create mode 100644 build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearRight.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Off.class create mode 100644 src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearRight.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Off.java diff --git a/build/org/usfirst/frc/team708/robot/Constants.class b/build/org/usfirst/frc/team708/robot/Constants.class index ea6a4a5fe01a84f258adc87c2146dcb43ff744e0..f20818fba02403de9bc6b5d74c0b8a2f544eeca7 100644 GIT binary patch delta 418 zcmYk&y-osA5C!0~vsso1R0iTER5o_n_yCj?#KcDsLuDoYL}@?;1Vs=p{)2166PWEN zC?(;c2xlplX(snOlgyn=*E3#vzL-n_?BjO>HbyRfT=;+Kj)~w zgH2~k>;YbbUH9KUI)#Taim(vl3_+egQ$D88;Y9rt`a=1VzEV!n*UA-BO6*m`w5n2< zuHhz{8vc5#9R7NzT&Ek#P5NHBMYok7=*P7W&|&bj4$!50%FlEk*=V6~ffr@Njs;$g e_01e6Gdu4*SBwJU_+U-0-VQ$TMOpY}6%3cGyfjY$ delta 450 zcmYk(yG{a85C-7?4B6cTu_R#=DX<~2q46Oscm*46NNAKxz+kf8MMVUU;tjQ+uqIoW zSkRjIBtC`l-z|2hnVfGXIp@zD>ks|>&)?Sqz&hTu$YAQ>)x+C7KM|zTBE-w*m&<*8nx(O$l*XfpWo9-wt(_Q5~x~Ck? z_fy;2QYrA*3viIU5oI`3jxro6AJZqwr}UZfIo(&jpf8oL=t1fpuGtu-4cyQptR#V= t0AuA_P7Jt8)_bn45*u*VK4IqZ9w)3W+u)x(u;${kgGW432G6X5mwz?XHtzrc diff --git a/build/org/usfirst/frc/team708/robot/OI.class b/build/org/usfirst/frc/team708/robot/OI.class index 29deb2f79ce4a36d529cb5f22b1e64ae5e42febf..b919f2f27cff3d85ed87265572cd0c06a7d44a43 100644 GIT binary patch delta 46 ycmX>pcUo@4R90@^#JtkPoZyW7{F2EFSbZm_vTE?ArKYB&7U@HzHY>1casmLGS`bSB delta 36 scmX>tcT#S{R95cbg3P?&jQsqP)S}4?SbZl4b7)KsXA|74!KTa!00L(WO#lD@ diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index 8c8c825ccd1361a191c877d483cba0ec801774e2..30021ea10850a0b7fffc177a82ea5845cf00a1a8 100644 GIT binary patch delta 2838 zcmZuz3v`sl75?sSc4ssBlT9`c5))w)USSCkUgrSkaG(Z45hN&Sf!4MOVX-O62181< z)-H;DsI{&A74V5R*lLR?3ohs)VjpPf3$(4ReW85`eT7!5fVKT*{>^6FW6s%o=iZsQ z_q*TRnLnpzo}86D{?1cJ0L+pZ8k><(IIQ7ArV#yj+K3|x&u9ca&rvgaR^eM3+Vgx{ z;X4||p7C9UV;ZHN@tnf*8s(nxJ%!^MRi5#Eg&%0tSR;uaD*Q;J&YSwN!U>Hro^ev) z1&s#Jcv0ae8sk0VrwTvQX!MMi6n?HT*)x8j@Uq5K&-kTg0lzZh*BZaUZ;d!*%vUsC z#qUgc$=@6K2aP}CPe#0E#A)L@QwSG-R``p-^H<~foALZzVaPCaR^cDU`A>~Sc-D+w zH={Q+{$+9m@n&$rDH6*+W4&b2y1SD@((jJw4r>iLQ7{UvF<`V!gXJ*j!oho~(0KyeHl@ z(A}3xwV; zPoX|r-0rk(iT6jBcPHY41+J9LXjtFhy(PY=+a&FxGu)PlM@_lWmUvg*!VrKUGW&A|!gnaNOlJYmeu?un97^-88XGEJHVCBuCbZRzXj z>o?x%g0Y4Sw?hT?N5W^sEiId0;BTC?$X!wnWO4{d}c>QT(xyC=0Ew2C$kZZ#B={YBr74JanshoWOD>D68I@+qX4TB=B57{Er%S~$$@hmaXsya)IcX-E0%yT5>`Mm8# zIWqU<@V7F8!5{t~#P1zJW!`(>1)_Q}FH|^>9Y3UmF;W%gpUSS2V=It4&;6Sc|d5mn5g$`k9>>y^35^mP|uI^M7)V9cndRe4s($_&!)YA z#dsUb#FvM7c^=^b$OSATvFRN6RR%oc*As0ZvO0q`YY$>=8XvIs2Q#>m_J`8=@c*$R z0hCG*Q7QCtCA}y)diY(*(sMGKVH+bBL_U&12P1ZR844onGU%eco*C?XJcA9iuNt;L znn5@1j}6-!Gw7k+>)9iSlkWmKk}x3;p)az@RKvkY5ivFhq>M#GSVTFRr2-435-X(+ z9da=?@ym9tL~)}u9V_dtj96J|Wwn*#C`Zst z;A;$NL{MUIWHKVsgld_B(J~d|WEx^JiwI}uA(@^-@+42shq9+|CkL8PT>j^G$HJQb E0*gRVSO5S3 delta 2830 zcmY*b3wWDl6@E{W=1;zSN!zq**R^)(T6W30w%gi0Fdm+5F73Ef*-cD0Sek5E zJEthYyP~4_4~C9`O2OMM5?FR=oj4E`m5U1A0H<;h1!3HAb9m18w@KFL={f&7-~XNS zp7)&Z`}0`$3-faioj!6DKsPN=7{Zu^A1k;p=EqhX74Z`b_bGTC&rjv)n1%Zll;e58 z!p{_fj`5&{pDR>3#xE@VQlZ8%9Q?R^G7i zrs%g6mf@I)w-w%zTweUwyXZI*%zt8?6y{Dz^(>ljDktRe<5UsTL{y2W5mARzKK#$Z zX@#{IlcewZ2o{mT6~-o)kKBqpRN*79MV5E5Zz9tG`F!NJNGT*S=A(c`S|KHmL5o5P z8F{Q!vb)NnYKy{o*B&?3*n2DX&=PyCcey?0?P#iBl1e4x=?#fhiBw|4P%@K_Wro+M z5(J9b?|Ki@3Hz}1sP_(x5W4LaZ+B4Ro7kmsD|QhY?P^z}(ip}zO|=-YkNevzW7*`k z#85V#Oly1u+wCrYkN2banCxFs(QG%n>wFrYz_leu*uN|h&uZjw9Y;9Z`$>F?&}rVj z%@qjsB@zP(UcLq&FLT@1Dxde$_za!qpW;Ck8jS$s}_*+)HI ze}D4IA&t-D3wBpvq5F%teqzPGJ>d0z3122eI9z0<##iw*jl&qxID`?4CTXgpdQFqX zQxH#sc&2FFj&Et)h_74JsHutGqp4ZMRElWW*r}-nI|(xk%5!y~cN(>7+=6dtYLkVU ztK-|^ovC~4!S$2)Ak2foYO^}gwRCmBTF->OxB{gnbLcQr= zWR>)A<5feED>K>1P;!uGqEDi=4HO&PY2KW8u`iQd&97IG@XL+}g@XVZiQ9CBW(^IW@Rcqo(33}%M6MvC(&pn3?cLf<{-RlZE&zs1G#Sm4XfzL> z(L8)c^Jp2((_=KxjL|$ZM)Rx~&EsY?kBiYf2;h6eFReEY?lf!2u`!xYj?vsaqj`Lc z=BBa^g21PZ<(>AqHSL{uu`dKS%N}@eDJpRpzRQ;8H-JWb58r1^_`&#|n``!Ml06q9 z%yIw$B=~6)-$f}*#~`|p#zMXwV%UuLV+%*iVm)7NDJEzS$@T;45wmTu+p zO8Isd^Zjr<-~QSgbESMc_zJvu5umj z!bXn13Huq<9!9l~+w>!oua2+741Da}YbxD7o_QZvrBQJbeGTfp7WVrgtbpDF=o5#>IF=p2`D~p3Ae5*AF1VX_xETzXDi6zp4F3q<*`t_) zv9j_z%0O_QIh^WljCfexX-Dgu3=vMVjxiDUGZ7Dz?G6;l%NOzX@m|4Oc?O^hOMv9F z06fey@JLyx$}@q4IL18~IZuG_+q3y!f|7)BnYz5j@kCh&Dx$e}yp?BG@FZ986j$(c z*`87b2Z|Lehktp!YKK+)ALIsqhuh zUyJwc+=a!Cb#WfLfaQ5K7O*0Z<^opcQCYyMJX#7^okv>%AIKwIz$JN1D&W#QCKqs7 ziN|?7HNcC^<4c%?SNP(2KWm5l)vO?k^*}0(6p> zT|6ce;MWOwj&G(eyk-<@*BrzL3-}PDuLxg0iYwUuZ~^PWaq%3&`VviMKX z4`xwCS>|YwEB*|Pb9DnB3`w_~gL%RmMlrC4*{Vh2AU1LmR14 zgA?oNQDoTOETFc?4gn?nI|DO?+YkOFQbz$yryv$k2z^wAi>bN{-0~tg{!osCyN0!Z zo68M4ge*79NNr?`kzpez89CX=HkM4u+VSku`Thje!%Gd&GzDR5#AIp$e^}8*&4^Mf dx~Q!T$=o86Bc_H?zJuf^8Szc_JZ@Ut@PB?~P=x>h diff --git a/build/org/usfirst/frc/team708/robot/commands/AllianceSelection/BlueAlliance.class b/build/org/usfirst/frc/team708/robot/commands/AllianceSelection/BlueAlliance.class index a70b6e268a8931457d6b2e0579e0a2285a686a2b..b9987cb960162a4790615e15fe0cc36fb96e5269 100644 GIT binary patch literal 1048 zcma)4TTc@~6#k~&c450vi>N4gK}1?4j7AepG$c~NkTgDs>4Pt1cRR?C?GD+Q_4b>5 zQ4>sj@CW##jAz=iT_3EzoH=J^zRR35KYxAy0pJ1FJxpQ2#pP*S!J-XI93%~qGeX{(-KsCQ%{US$1Hq_2W7rk%Ntih{Tsq|(--O~)Kb&G5XV z(lL9Oq}gLX7H>T z8N~7EOR9k`q*eY1a7|3#9BL{Ag#Nb}(E6QKsR8CPD8<<6zIO+qb8X5&I zKj)gmd1A1y*r3&Nm7GsD4xTV{F<(HIawPqm5%RD07Ye|!{R=s8+_+Oz$G(S+TO{90 O1%k>*nc?EV-=*IuV9_D~ delta 448 zcmZ{gJ5s|i6h)5|;g8~cNWg(47(xl|$QD=yi%CI6$+)3n1vCsZ6cj9g&CpXY+}J_( zFhilIH_|)zUg;tEiq1d2-`;^WXP$^WW|nfqv1gBY%pzuaUw-ytlBzJ}@Fb()G-EFsBX<&&PwBvWKcC|S~aa6ZNBk3^H|jcM@nB^rdvd04759j&Aj?ct?iw8R5uocL)zf2FW8a)hMv*C hkyi8EHuW@+A@#*8u9LbBJy+;O$ND$4;h+w9_yb-p7@7b8 diff --git a/build/org/usfirst/frc/team708/robot/commands/AllianceSelection/RedAlliance.class b/build/org/usfirst/frc/team708/robot/commands/AllianceSelection/RedAlliance.class index 8321f0352c62e09b65378b8792ea400790eba052..1b12caae1851f5a24f823bb4594a1b3f3363f7cc 100644 GIT binary patch literal 1045 zcma)4TTc@~6#k~&c450vKvWdGAR;XiMx%))8WJrwF===J(+6M3c6X2=+a0nq>+LuB zq9&O5;1BRe8PBw3yFOTbIdjg;e3vV^Jj4^gCrCOA{L>MD&hMgI^TT4;8`y+ zh~-C8bj5oSW`;6P>NcI|V-XE}zNRP=%4;$)B2BYXV^6#Tm8GF*OY3*8z`T7DybXLz z!(-T(Y_+8lZGyyT7q@(@;kJ);+;Oqtqk*Q6Ma!`}ndASS%djq@jK4dTeAqY2V%a-6 z?-p+jyT-6KS#ICk|WW^^JW*T^vR~^8v<1@+j@#MsvgkFXsv911N%%#2|h)SRuI6Ut231O z!%LV&ohk=&Il*13EkOZn6)a>7WI1p?2kwx>;GXjpF@N`ar6N`2v@p zb1mQkG1ymZ(Q3I$&Lo5J#T+%GbEvvrMQjIkf%kN8;)Zdz!Cj7Qcl~A>uoM8R593yAVLUZ`k K6lgHiK=TC((HJ5C diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/DoNothing.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/DoNothing.class index ac4fb7d8481c41b9a70931be13bdc8b77ffa33cf..078c98f36a4948deadfe982f677e45f1c55fec3e 100644 GIT binary patch delta 533 zcmaiw%}&BV6ot>U&_XSsR1{DI6@(UlHpWfeKw^xEt~4eto3tT~gh~T$c>|NCPofJ* zG;!&|jqyQz1>+q^3On2MWbWL1zMh#M`8#p)`TP0~;1~xA6cl6>6$mIONMa+2O_UUD zq0FViWn0FMjNL#FgO4+52`WP?=+{qe-+gojzUB6gZoE#X>$H9A-nsH@M@1Di8G9<~ zXvol27*JI-x$JYl8T3t&!3bSeE1vt_@PQ#^+4i;5A3D8(YjvsFxa4io)NjKl_BBdU zR{q4nKp{v|RJ9?}3RpHKV8$DSy9vZGV$ZZEAWfR42_T0U^2ne-AEs{d(7Qra4B3cx zK{U?OUJxHcnySpzL}Jd&k_RY3qU%vnCVyptt3_N5t2}4e615S}B2C%Vg;^n*%|#iS kG|4lt`44ACeZj~gd&9G3Q|(3qH=`oQ3liF1Wbp;u1sW zg~)|@#n8TaYlFdAktt`G8Hk*(7g@~JhbSJ>PIn-aXt)t6Ve`?ZW4486csY=2D=hS; zP}+o>DhUmbvS$yThf2oMgo(_uC{J}56-MSVlZ6gn%XLZYe5=pkTMHr@iZ4{i<)3*{ z7>azM*XTrV^R%@0k&x#UPm0`drHWl+PyF|?PzhfX*5-7rdw(a|ivpa0=i+jJE4b=n zF~Bu=0hTOWhsV(W59bU^JT1acyCSSQr)VhRor8YEm8x%s#pA2Ivs0o*QYH4dQIW_Q zo{X8PE@Hi}4bNzlHH~Jue0-@RX$*nlnw!-;p}(&frkd#^2CvND>?=ug?9h|4UkA)i zm(ZtdnN~*Y#OX0*Zp_5~eUsnL{TB0&hnGz3*uKK)Xbz#EC<> zE>VD4sy#`Fc(TTUdkrFWJo0mjB&&w*j{LORU+H$$O~riJ cV76*zZ+yw84dP+R)8mQ#BZv%VN?)`80MIeV&j0`b diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class new file mode 100644 index 0000000000000000000000000000000000000000..ed2db3442d0442c2d6049f640ab6ceb1aad0fb6d GIT binary patch literal 1476 zcmb7E+fEZf82+Y|Ei52`G^ltW7|~LZMF9apD72Ok8zHu70$z}zJHTMOi@UR!c*Sez zGkD{TO*FxK-@t3%!}!m(z>-L;o9y&Iec%44>5t!EPXJ6IYhn=72|O_}FOJCq7)w7t z=;xz}7-mdd$7}*~COR=~WUhrFNZ_f79&K1VHOw1Jzb3=S$mEYhtBF1=7@5}%ErDkV zEHd=lo;(so<#D;UuZo94*bFSk(35o?UvWp3c{LCWeHQ{tvL=j7$O|xZs=#wXu<^Z_ zFGH6$=ER;Sgl}ZZjqfs;(veE?s(eqZZK=^RLpH;r+%FMWpPg6r*Bfxjy~Us=0e#ZrRTW+rAW&)spARdH)I?%2M?1LZny%?*5O z-4UyTds*Qq;mtD`3pyEUgDL$yiT=JWpOV_5Q#d4dNge71he~_Qq8oS>k(Xg|7ud!R z_z~~MI8qE7EoK(BRJY!-a?vrA+~-b(TH@uT9zjKD-lcA2u*{JEfAUwZ;z}$#cKDT& zTadeoVWmYP>HvQuw)d!U)>=c>P264&h-9fnl1Ql~T8om~Tnt^=O6xS2&5|K4?7(_= zD6PgmkW`gB2d7(LWgFYD>bb!o%{`UNZRySH;kI2AZv$EgT1jF_6%{#B8E|7ct9`H@8^&%O{WnW zhC)|&!-+9G3@oyDm6;$a&@5 z*-Os&8M2SU`;$o4F>oGom26G&^IY%Ie-x-MX5Pc)dyU}KijiT_CKoU$6*$_6^`7k(+l~|TB2s^Qaf`F>jN*c)%q+K&R z8!DWr;xBN4J2`O)hp2$6#8>zS{27X#U0GVHT#i$P4z20wd2f1N_sstF&+ktFT*8+b zETdrI25xGzqD|349;+rw77VOeIFAoatQ)(xzat1>EdTwZ{{3VjgO5ynZ0wc>k*CAR zq>hv=9LK7$`$~i(;GZ$j#3vR`P-OYHy@?GAr)Z*(A1p2GQ5I@3w~0*?w-~Z5Dem)% zlCJ1%tI7`NEe2L(m{{?>K)If(x!sU6y!fAmRng-{AtnbyMupNFfRE~Nk#{8L0fQwx zp@iEN-x9}Iex}BdUh!MxOqPYmH^N?n%c|Sx(oDAOH{EW{l|uW2$+X%Q#Is!XWycAF zwvd5x+Op{=?)I);TyUh{@Rif_dp*}{1&$jk-}8HZ7&x0AU*oPU^R`-KFs|uTuIrS7 z5)FfGeN;;6bF$o{@loL^E@il*bi}Iop=|P!(5X!&xZb_z-giyhwy}kZiK>lHF=wNu z%^htPFvl>%TcPvKj&S0PY19>sdwY30cU+-X;+!?$GaGeKBDW5C%BUE+Xr5C{7O?8C zdQFm77KJWelWX!XNWSOitx_4Q{;-gx=V#dRm8GEU#qV~g zg3fw8*44bb8U7z6?KZ>GAv4*(r5I)pF7cqeYtj#Q7^V;2Y)f}BHQlJN440qL^Fi1M z9t4W_g18ByexOdDKX|KsVGOq90at_eq5Ge7sh=~EzxF`-bc6FneUT^JR;$9l4!Ngq zIO&luA4-u$4Ia-Ii3DfpIn<9-8n0mnv-Fm{O*6E+o|FK`e9wQamvB;($MH^fqn>n`dlYN+vafHU1dJa|&b{{Xq6O%MCl|#0VTs(2S-p5O$#V_aZ>TvN1 zik*yO2H{>G(w?Hg=@IBm5~O#Sji78Bz>~GPT&S8n< z-=G52N&F7UDM|kCN%$Xd0Y8)ABQ+il)JWrfd=RTa>tc~pW4{o4ioSpJIg9j}Paso6 i%=QIU0d*eJyqxR3y{A@JI>flK=U>54~rUH=z<;pK<` literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearRight.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearRight.class new file mode 100644 index 0000000000000000000000000000000000000000..fc24defc2ac4668a26ef765e7140040fc4cb1178 GIT binary patch literal 1925 zcmb_c-EtH~6#hEd%$Q*@Bm@-@iU{f^L?#6J(Ll1W%O=q^f$XvvZm8bf-lTDNI`;Hn z;gwasf?Vh`c%v7jlq%#_-+*WE9V}1JY<9;g3~QBhai-5X{e6A@y8rm=*Jl7e#Jy2m z!=i^Jhf<9;I#rO96!NVw4T&#K+L&16e)}H(K z#O>k}4@bze^vj;%Qx8YUkk2JsU6h@C>6=*bZ~`k%zLsb%K6A0gFwxZVp{N+m<<_>T z>yb2d2i`kzg4A$HuDc2qz!&0t}-j(m@P%etVI`!f?PEi(*R)5i)o( zkVf*h{F=yybJI13OhGkC87s>`tVNx=&{bYK=o06O_AVdf&1OY>8HvDN za;itJJWxdzEO;bWBoa)~LwJVXlnjpHUA#x{%KM}ZAxnBLrB9Q7Hl@#!elDd?VT3q* z%n`$RVpyd=qyOQb!Jc3!mcy~k{1hKBPjZ4FAR-6H>A<&1KZy%u$tF;G$uE+|?2RUA zY5#;9`yS8iVr1qioXxRaxKHpJtw%Q};Y}jDi`Nsw*yb({^?l=$INb9cA>SK`&mr8K zJ(i>7IMxRpPlHa-&Xe&8r}{gldPnvXo2L|jQXqy)?X*bN4=({; VNE`0=ZO3oijOEW~kL{Tu3a;DG=D literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class new file mode 100644 index 0000000000000000000000000000000000000000..23c412511423707ff2252361197e91ce2243bee6 GIT binary patch literal 2154 zcmb7F-E$LF6#v~e-KE<^Xw9I2B4EX|0*e%Av5~B8NR5W3HX+!e)=hGg+>-3Z{lLKo zhd;qree_u$^r0DbMtJtgS6}V_;dt(DzBAu~C9&&TiFv*&m2-M{|({Z9bb@o*AZ ze5B!HbVw?yRsJO4;luZ4phBL^^L|ZDhHJn9WF|uKlV!YZ5f1qKOJWqRRpLNqJ z#)Bt8jEc`xe9kaab;KiH@ElXr8(yK!d6j{s8Dgup<$9*&mCUBk8Kw^e7DbCIMz|Xo zCOzM=y5L~FDYGd?Dcp?Vm<-7Anx{PL+caSbPnb>d4W%DX%#|1-t9F%?<2hmRb-z{S zPSGqk$ug6(D`vA~IzsAQW5jC+mm!(6ox1M3HQ~6PUUMqC$IaH_)g|4r%eJRi>{iRP zs;+MOo^9DJ+jsRMw^qz%(_LmzlCqB544QB=v~(M?1ys*ANp8`4N?0Cu9KY>Jk5;gK zr@}Kr))ng|y0U9NGF5yL#SXqyVMb9#GKz{6RVh}GWY`$7(xBIp6H8AI^Ha3%SQToK zlNOSj3YU3F)KF)b<5ge(x-Imu5wvQG@^0_-_4}sqR>M|ERD&V);?)$1#-g3(b%%3T zrV$M9jhM!5*f#Z1FSLbK2-gftBZ6x*m|bipSVplcUwZMy@F6x|t1+yMh$QmOhkU2b zO-Ij$>or>MAtV`CKWBYA}H;*oNQ;s?f=U{ReZan8;xPIAv?0UTA zhEo;{9G!@TqqjN~#t?P5%f0S=(#aTBuhA6|=xdK1n~q!}o!*w`J!V#`1^$)KEqM`8 zM-sV_da@i`7KyZcOi(iUoT6MCrbDNiH*uaW$jfv+P2e=HK&LC}DrsYwB>mkX{Tk`l zhji(`F{IxleQ8L)MHwSlMv^kVPZ_iHWb}ObSFk;d1#&!)kzaxhZJn3(?q%2pg|9FyZ6Ozj~`mKa%H>fl7EO_Meg zN4$fR1NSR^_o=N8PWK$g`{pxber*r0che2x&ywSfFkbF_?!eB{a^ZkwmcrjU7#`^t zDoeWLfyN=&X3i`&ElCmvm5@LMe4JM#XB zoA?=vcuFk&ja&GaxEZu|zuVdfjN{-2WAfeGOPu4efU4Ow++|; literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.class new file mode 100644 index 0000000000000000000000000000000000000000..52f456374ffb00aa1f0954f34b9be95d4f197887 GIT binary patch literal 1429 zcma)5T~8B16g^YQZrB!-f=W<}2xuwDA|HZ+P;7;mG{#s`BR*~00fw}@b#@kmPyP-4 z4Zi3DB%0{E|G+Y;CJTo%0F< z%Q19jJ=a%`tBOuF;0)a-4z7zD`8re}-H>DaYzAkDX=jdaNzQ#EQ*4McSi%)bI92hU zh;6CSB11ImRR~+7>>;O5T%OcHnOc=_`9v zmTkqI+T7&4ExnSb?6Oy@Ic~+boj`f6SMvhj4pYwwT~3)VFc^zEnI)Z+ze-zwTUSj< zZII1+vUnMVQ=)XcIfmu4Ce19FMSIVlj@#NXD_G&9XMbNHUD_ zN?^aM3%iju?W&@*bC|3B$`LBt$XgRKajf78!;1@68YZM~(6w`|x4G^;b<5OZd04s* zo@H3RVBG(8kRg3`J^Yb02PJ>cSG?voDh`XMi=94O z>Qov-TymeQX0K@STj3Nv0%IV4NbSjkse;aUDk2LiomA_C&7Bsm%m7^dS zqz9Uyml;Jrde94oD}*BGB7C(4n}n~m;6B3rE%-XxDaK7CDZ&6nct$IuwdX6?J|dxQ z3vKjEC~%8xf+!#vgF?sAN4TF70_{U8ZexfL)6+{#%a|#MA|-Ui(6!k&@s{)j8oajYzC zY)~i6SlBtv_|I6|px=GD3mM1a_U*p6``Pcld%wdU;oi@~uipSH;jxE>0A*YivlyU) zr4qfgglo7id&?5u5OY&ZE5Hg?#oY4HmUT_cx|rLNf5*e!{byCB+SyC>zE#JpMjdlv zB8}si^su4P!KTI*?r9vuq()85Nu2Vqt#MxxA0W#1tS6NnDc!|GjYqOQkLdGvtD&-A zcG4|VE#SZs2)&Bnp)f_?LX{u6#wVJq&$BvC)1G0}h6|gk7dOWaVC|d4Y1)8=VBrXH z4SG{1_HY(6j97qkrp;5K&E~Xirn@}!<7VU>!2TC^f@L*>YnZP70O#j8(I)7gfbbQ@&HoE1n1mFb`|%`4?pW_59%nd7kjP_yHqY1;}IW&H(2gZULbp!^9V zJ&YQwk7S2N<~+x`42|xB(XRUyxdMlZ3R;Va1ug!9QfT)O9?|-Dnv%5qU(iKd%4NNv zNC73J1aD9^y2iSU{8w+`IUnHIAN!lK_xfG2#~K^*|N6>Tc;TzOiuO>yBo{81Q-WJt zQ<&iA$g|4Zr(C7IXIhLG6Fe`TMTc{44IztX;qaOY#$wKJ;~pjoLIK!eyWJsxn`=@? I*w(_8zcBJo;Q#;t delta 985 zcmZ9KOHUI~9L3L_M`zmJ4$uk(wOAie8O2&@6$LDal!t=&SexKuVdBEX=(ZnX7HW(u z7jE33rX-rUHSrtx6qn`imIIS+`+~@iIA9KG1KZCnpe|`K6ppIJ}&SVf^Mx>rW z0gW_gXVW-`S=l=;%L^iNBJ&w6;G#%VWYNQtjF&`~MJ|hJ#Y1cNc2TLN=&5?WT*8D# z36mnB#t4QztZJ-bU1I}RH1=UwW537&9Q1HiV^c0}iCjadupRwS-356o(7Do9on3*#kN1taUj8hMB z)r1S1qZd{N_F(Ori)CttMi7~z`7mcAX6@k!j&elPkfnc$ly3d&9Jz_YJES_u8r4Q~z2x&I~YOhp}XEV7Y8R2 z?i@QI+#Ffq2c!eLgMl8g+ua6Xvwfgk0y>Fl+T{m5Vr&6bNoi+ZplFgC6Da4WVK%jV3~P;BDKT(!sV{XLkYpO}@wj zCO-HB{87d`yU^AITiWE_J9BgHJ@?$%-+zAo0|gH4SOk1n)oiTUaK$XR| z45|K8d;Z8iwk=o~G?2BB!<>aYo?4g(x3GXk14|Z`vBHq+K1Sfn8h>loMbmaHtm2u0 zH4E!_&hWZBvZnwHGr|e@NmKGjM2c#%baW{l--;w;nC{-`qZXX>Xe-UI+G9OlQ1WOQ zqVDl<8{vXzCH+c#4x|#a;e4jpo!{t|~>-XM`Fw{6%5yH{v#p|QD zLkNKOM_sIvrt8tBbMe%{I28Wosebs0%ucqzu-v`nmHINIs&>r{1*eHK zg~CC0pT1K43F}`HOut#OH|Vs77)8Kn?gv=z46$>>$t5D!NA5diV@Q*|i$1bxByfvr z4blHL?qe7?>DG#>P-ciu3Cdh{n4`1qz}kg01rW3iWG&#G7Vu3-6&N8_XGjvIesTu6 zllVDO?Q$mZ1ICEoct^>RR>@(?MAPQU>(;UOH*LeIA~I7Q$XE+G(jxQUDP}u>?J4f{ O2Ij8-G7?4e8vP5toDAfA9Q{*>CgdPdp=Tr*@=g)mN|?BmTxCrh?P6o;*4uF(Z6&q)6mj|$s#8+e d%QS!PF{lt1YefGOhlCxmFP?7BRK&An8^1qSBaZ+8 diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.class index 3487272c930134b4a076c47ae6e3206780163ba4..7321c25afb91979a3b441778f9be18ac87864d35 100644 GIT binary patch delta 390 zcmWmAIZpyX7zW^Xc3CE@6EN9A#jFV)xQKY7;)S4y0^SGWiFg#7C^l9mhC=-TWLi55 zYh!2O5AbJLn%Gzy<9yBYzLW2pDdr*Y<*$AGy}bj7``k$ zkYiuq0EYrcC^JOmi{2(D>8r$f*w=n`}bdIY_K zzOXL$iw%ekx(qQaEZZ!3LX(Ey@(z zc#0i%6{W-#dtxQT9rhIm94d}DHb@39W_eI(=Eu_{6eogH!I_-b;~7j!<#pfuG=jF! zkG+P86~yeGvLbB|rGiSGVpYU32vLm}oYU7J-ibSKjq@M@h Rd2?1$r{@eg4SH$P_z#5BKx+U1 diff --git a/build/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.class b/build/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.class index f909657856f4e21315a74a383b3e862928db6b3e..3b04446ca1cd639f84a37cbb70e9dbe9f1db68c9 100644 GIT binary patch delta 654 zcmZ9J&rcIk5XV1nx9!s1S6cB`rG<7yK}%J{wkQRO#zZi|i#IP#jZJ7kHmMC){Rcdd zclGK`4|;%vgNY{-z54eMXLn28c$t~^ote*@dGC++!+ZAY^yE9xV8dmS*(?>RE;;-# zx*D3f&|Gu4?lRAU%MEUZQ7w$ba`q32C_RMX~9hNkAS=QX6p=r|6tZ-kk zV0?Sl{8nD+fo7Gq!ofL4u-+Ne6p)AJ6I@rFu!(;s(r&c!WNf`T{?CdabKm#VoK~Z8L&Z;-NB;vXtnw#+}dQA4aVkqt;xssT(co{Xa)j7Hr8HD+yX|Oe>iW U>3M%mCR$JA)1$ni9L+TI7l8#{pa1{> delta 686 zcmYjOJ8#oq6g}5=Y{zyUK%j*-uR@!~B(#+92()QIpf*SdBp4tAlA#ttlqO2ug@u0r zio7zgF;k=pu^^eFsp(nuR3J#&Hg_ z7800?ql9?_WeYL52F_ckpsN4)%VeGiU5N4)3@jSB*t`2-$-LR=`a3)Rra)Q(^YI9p zPe#wg!@zs~>YmqmL9VVsd{@fUt@ zYc~km+X8LAS#E_-)s66vnyWXUK=@C`{R(mSp!A`BCRT8qcM>Y^G&CH8P0xua^Dsa3 zw2DlG@3j2eeP(Hl+}VSs^`S4*>a;7g25lp&eMExXsXok4C`=Ki2s4Ne9I0tKEIN{e zQFC?B+@<)yG)!bULJpH$Sr)U=y10}w1*}k+Dw?;kIGD^moB|n~WTDC6Bu;bMG&MiN zmqJ{{6kjT7qur_pD2YhgW@Q$+@Sj#})y96Q47oJq$s$w%l zgf|dhNYCV-c#tN9Y@xQOqYim*vMIcVXwiDd_OU^%z|i{bhIUxQ(p_fq%cP`Ftdga*Pt8fV~cW?3+_ri;DN z$z^vON5=5@l%Q4WtIsOop(@8q(auQzJ{6MF&suGFr#svkldS6pu{Pc2zZK~nsU#j! z&UJc!`m2LXz@pWrY6Au#!0G$|>wJfCjLJ8v4K!#yi;C`{N~nP*Azh8m;|%SAI?aOX z9@V=tmYI(UMNi5N~ZLoPz)Po86LQi+83eH?tWNxHTV3Lxm7om6{+2-^nEX= zDOUvAd&Tz-xEH!xvHyhpz2}i$W3Y`9;nl@^s%P=Hyc%ipY@s&kL>=;4Q{_vtJRpC7 z=y(`L$J(6O+cFBPd{Y>;`7`XZN8X9&;39@B%s9A*SqCoW9Nfn|L!rC;br~q_1zK5H zaH#R~4wf+LU>QRWu3?Dbad(3Mc|XG>uSM>gW8ubaB(E+iNA2dh>v0nqCb}1UVOkzH zr`>CY<$p{_MHTfmA{98IhV)al_;m zyGuV`1w+P{C;X|@GHh;xVXe{15UtYk7~{0h+2*3B!OV=w<|y7mFL}Ul=_^?23wj#p zE#;AFApM!rJs2jNLyGJm*(?SKoFjOiGENM|C0wQ`g)0f|G{uINosyWkpsS}qmH@9N zz}1!>o22B?-++C}V3QnR1R0EWu-FO92<78fx%4;H`brH9d?F`)M=W8i1KgK@X-8Y& rr54y~cEdSae-ddFIw-7!;(9`{&{2QzEWtE&YNmsrt%2c2Q|ZmW#*_iR delta 550 zcmZ9IzfJ-{5Qo2A4wgF(L_x(rpdcz7h=rOM3k$Wiu<m zY>czV<+ymo+|JJYzWMEp-Jkr?$M4G+*k{+Hz>3Q%bq|k*VJ-LmB_;Vh)@j<%vZW0} z+pu|e{#o`Z8n%44>G*UB!VA@}^nCj4_zWoeEK*dQgm1bLKB@2URi6%>&RO?T;oRI_ zUDFg`AsUiHAv}pC$&b-;0zY_01&``)g zTT>BW7!m9=q-UyBiL#m~4`q(+^Ta@v>=r7wR=(V2UR z!^smS2I?uPPNcH5Sb7jkO|*gh|LHAqv{ML^AZiI>FGgg85v~9R@eU{cJF=;6ija*7 JiY4oq5Qe`VKiY10Y#_l7kbnu#3~!7Rz~Lq3DP_q8EO{bX3MjHjwiZV~J_CzL zWDypQ#3BdCIk-SB5T$xNj4h_6s;;i8um0{iH$QT3{`|Z74Qz2_c)(PaGSddjGq;;@ zW;V+l^O^;NX3_8*-wX9jutX|aq&gCg+)-3C6ST?CxVOA|Kc&XX8?69lwJ7sTj z{_9!u^V+-mN${oKu+(^^*|Y3(U^%2ei$`1wkWdDKjLTqm?Pc*!f|s~* zHoRU>)Z&0BFBT<#BkHV1ojQCg)7N6cxhwL%s{;sqhxovgm{ExsDZfkZKA|E)w+0BQ Lh@j-XoYcwxj*CR( delta 570 zcmZ9I$xZ@65Qe{=VeDZT78gK8K|w(WT-aP<;?2Z^FXV~%2!^YPFQ5l8850klJoz@h zfU$ZQ2Vx(py3+lB^;bP-?!1eypZ5=7z_~|;%`{bN9v)k1wyA3x9u7MmyEIK`nYTU7 zz9zW8`mXq7HEo{`2R?@!X^wrm^c2DPQB}vcDp%|?&$67o^+7pm+^|1K zrmr~*C@1cJW2ug|;?BHyQQx*~vNMO!31U4#^kak* WgniQg30-m8n3_z%PuUd9EytI0Ysz}WH}X(q7orZOsW@RxbTK-+W`jK-8!?2hhO0T z@YWl-sEHT;0Hc4&_|0}H4be)Qd~@3OnQz|t=Ev`E-vKOR)4~A8dvFI67W#2l_a=3? zr^A$qjIo*eseivLOe1S-e)>p4K#yj0nAN)bCgw~y4914=MDU0qnVH^YNNxEQ&d^sB z9)BLzN?g8lOI4Z~Ec#`)y6Z}z$MIw;I24Luqv*>6Csg}Fs=(QoWhdZnZFPRlk$%Y! zoU&i5xn4y%>d^NCE}dtt7rNCQJ<2m!Is@TW#RuBQTv1?-xX%q7{7O-ez3ClKeSh2B+H5(7G&M?(E z`7Pg5f$IgzMBc^*9@==M!(*gv+(epTy)&TG=@}+@C3N1_h0`>TdR0+6I+Gx7Xeao@v0Edq_|Z7|(tM%bp<7 zK$4nNv*~I!1~p&kqXe!{9DzacDpI(HUJMiLI{im5hEbXY>?V*_hiR0ewbRYkkc`%> z6BtA2ZooRDT0{qKqlY+W6stuU`3I%9flKEpQ$(5hD`gZn;)Bmps}G(?e%3KMnYIRS z+LVdb{`A&jWiD2lbczNppWl3$?8&tu%ogHS3$YXLwXZbcjR}5g}j?Q%K E55tT>jQ{`u literal 1367 zcmah}T~8B16g|_HZo4dB6;T8fM5G|HeA)^Xi5Lt?(L@XnzL;q{z+$_**_rk0*Z9VZ zFY-_mAN&DE|B*4?X_wMqQubly&YijEo;&C6{QUd<2Y?kkHqnpCH11%^z}@6#;+Ot@ zo0vv6jTy`uxMw1Tx#Z@FPZ5CLy03?M6Me7^EErg1NERH|Q5y{L?94txV#})thQ6ZX zisxaiB!XAGR3%TQ=#_bOp9hX!N6v&gawJ2c=mm#%C=Z-KD*GTP+e+|SZXs_6UddB- z*{jvKTamUr@;oI1dzZT*ukPv9I)kYhIK1k7qCAH9Aj+X4YoPdsPK4Ep2>d`uDJl%? zHAByy;^nuy+>c0@j@%{$d87|e6?7ynT(Y|zmy!jcuk?<&=Y>I8Y&*J|{x$~l$NU|) zFo2AKB@4?~VVLe*(3a;)#a$&0tXg=0oPoTBhgf5n?Hm~@r)odrHR1D$g>@7xJVMUG z1~L|IA;YlN8KBc$GE9j|XutOzyD0@(Ri|`(CV;)w6oO&0bCQ=@Hqs)}i(%;!g=JWh zAEgpCX*X0A0qMHXIm!Pq3@Itp_91s%>cs3*-H_v*L0;@ovwFS=xblMNUK!>tq1&zk z5ltTo^(0ivYoy)L9n?(?t6S6;x_1&%c|IoSzv*xMOG!|BB17X9S})VgXzrT*2KJSV z7zSxHX$FRnz;#?D%W57X&ox?U?-@WI@y4Ecir63$btEsMj3SM(HWagkGTcH52t{X{ zIE9g_BV8Ctd`4db(yYTefrjrTOM}N76o=5I1L&QYL=U|s!}L6iBil$c)C7wXrD*R4 zMu_GpMHqa0qvvAr ki%4Rr4Z>(ajJF`pHK?QaB0!FK=Gy?eA^=9EYo@pV0VMt?PXGV_ diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class index 71d1ef08d6e4a464db872e2ca4a4c9a5e68e298c..ee4cbf264e6946e780a660c92bc5b83cf7b15080 100644 GIT binary patch literal 1278 zcma)5TTc@~6#k~PUDz%nctgA(7NnHRa*ZUYF~KyLR39wi!MAO9phManoSDVTZ}LSS zF!8}3;Eyt%=`KryNhO<{IWs5cJKy=v+24PD{sORxEf*!+8^L`%aN**i^`@0{osg=TnOm+Hum^`TJO_=l?H8y<9@u5SBEHl^`fvfB-!Q2V+qrQyndBTxCBl;NH@ zYVR<(mVyX6;tLgW_$S_q4SBB6HHzpq4}0|9ljRZlB@q#dicgG;U}t**AdO*bFKW{L^Fo+;41H|!lYU%EyMbMhN0u8{;Un}YQK?;gC;Pn z_=i|1PQzTP)CV(boCECGg()6#9&*L7cJ;coUWy%jsKhBZDi9IF*3|)CWoZPmI#{58 z`=xff=>pQiS6=t_UK@FW8TvCy^eX{HFuONouhDHEIr4z1>JPB$cjV46L`Ob33Uqv< zXbxj!Z==w&d0LVZCNY7#^iAP9y?O}>#_1Kv<3?6tk?ytvy8yBjfa$(OTJJRRW|p{} zQgeybc=6>KoC^e(Vn7)qnC(MxGn89IHfeB)PFpQE^wrv4BT4;AUuG`Lr2S7bx6(|f rr^@i<;>)DuN*{!iK}=>48!1GgdWMn902?IJW*6 delta 533 zcmZ9IOHu+c6h%+MCy~lJ_nWphlYlwNz0cbztc8!498ES@2Vv- zoH$PDI(nQbdXutlP99ZMJ$JE-6~KAV)K%TfufzVx1@Rse4X4H1t2l`1H=g7P*= zVI@E%e?KF)LRdM2wxsW*{B59A*%lN3mVx}eozA@Yx_H4dK$nvEC((6~%9Il6O(Hdm o3FOz^`!cmb%H0G+Eg-HEL@u6T)&WCWSuRtATtZMXS)aB32L&i40RR91 diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class index d928a34b8beff72045f7f296c200bb25c4506bdc..f8a3bf7d1b8ab584f6560572d905bc8e3331f022 100644 GIT binary patch literal 1275 zcma)5TTc@~6#k|c7PgCAydho?0V$<)%PkTizF>$Z)dwLw__pm1GNj$Xnc1TLCSUXc z6CeBm{wU*_?y@wPRI|qHN56h@}SV7H$k2=HRVBNbi(k6(EcChMU4eK76JnG>tMj4(D#t!P4 zVS$ISe|9ST#4^g-qIq&*l)sx8#xOUy$UAE#UD_O=4MB(f5KnLZ%PfVVQ>Rw~UU zRTEDB9L^+!l~!9Vm;Y*GuaTsFxeuAkkTm`&ax+CbJy(XW n7GEJJYkd?>MlqF9tfv&k$~i`^60DO=8+`=Dlz@?`R_XL#i+&Yj delta 533 zcmZ9IT}}cq6otQbfDWC4B8vC}2rB4+5BQT9P27PCa5b#K5O?8=K49X53-HB77+0Y& z-ojW2^KhrP?fK5>{VsmQ!}s6UH{hHTOOdT2+w53kb`1?nla?=gey45d820b4KdY9+ zaNszk>*#T$=#5LdIlfa#_1KZpcMM1z8zhRW>Dhz&8vp3qQ7kt8E1(dLR43gHT2|oF z7gYL;o)A4ruPI3_6G^R+V^b7$>E-6^J}azBm!lF`ed#?*%>mvF8X_G1D^*ag1?6Ry z!b*UOi6-Rd2rFmMmh_zke;X)O*2ToXWgvfVr=v$-r!SZV=u#H{EV>R-nNlXb$fRaE ofx@zTU#2!#a5n)_3y8A}kxwU>Wx$YDj?)D~J|ifZtj}8i1ELost^fc4 diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class b/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class index f43a38fe53d98c50868566d90d6c80dc0c880e3b..9f098c8e7712638cbfceb03d65798a90f3f83bfc 100644 GIT binary patch delta 27 gcmZqYZs(q0FR-|S0R*@hv>Ei-9OgT0^tWII09QQ)^#A|> delta 27 gcmZqYZs(q0FR;9T0R*@hv>Ei-92R$M^tWII09Qo@EdT%j diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Drivetrain.class b/build/org/usfirst/frc/team708/robot/subsystems/Drivetrain.class index eb7117a119b6531a92d7d2d3ab291eab6731e076..ba83c03ee986004938fb83e12240f079ed8950d1 100644 GIT binary patch delta 36 scmZ2$wbp9FB=#g8!xK+mwQZdFN`ObqV;h5#))od4K{1cb{ettj0T_V|mjD0& delta 36 scmZ2$wbp9FB=%0l-ytr#5*uf}65wHB*v6owwS_@MkcDA$zu-J>0QGzesQ>@~ diff --git a/src/org/usfirst/frc/team708/robot/Constants.java b/src/org/usfirst/frc/team708/robot/Constants.java index 4d0d477..14b68e3 100644 --- a/src/org/usfirst/frc/team708/robot/Constants.java +++ b/src/org/usfirst/frc/team708/robot/Constants.java @@ -1,5 +1,10 @@ package org.usfirst.frc.team708.robot; + +//GEAR Camera is 20.5" from the floor +//Boiler camera is 33.75" from the floor + + public final class Constants { /* @@ -46,13 +51,13 @@ public final class Constants { public static final double SHOOTER_MOTOR_OFF = 0.0; public static final double SHOOTER_MOTOR_BACKWARD = -1.0; - public static final double SHOOTER_MOTOR_SPEED_LOW = 2500; - public static final double SHOOTER_MOTOR_SPEED_HIGH = 3000; + public static final double SHOOTER_MOTOR_SPEED_LOW = 2000; + public static final double SHOOTER_MOTOR_SPEED_HIGH = 2500; public static final int SHOOTER_ENCODER_PULSES = 12; public static final double SHOOTER_P = 5.00; - public static final double SHOOTER_I = 0.005; + public static final double SHOOTER_I = 0.005; public static final double SHOOTER_D = 10.0; public static final double SHOOTER_F = 2.6; public static final int SHOOTER_IZONE = 00; @@ -93,7 +98,7 @@ public final class Constants { */ public static final double TANK_STICK_TOLERANCE = .30; public static final double DRIVETRAIN_WHEEL_DIAMETER = 4.0; - public static final int DRIVETRAIN_ENCODER_PULSES_PER_REV = 1024; + public static final int DRIVETRAIN_ENCODER_PULSES_PER_REV = 5704; //encoder 1024 * gear ratio 5.57 public static final boolean DRIVE_USE_SQUARED_INPUT = false; public static final boolean DRIVETRAIN_USE_LEFT_ENCODER = true; // variable to determine which side encoder is on public static final double PEAK_POS = 4.0; diff --git a/src/org/usfirst/frc/team708/robot/OI.java b/src/org/usfirst/frc/team708/robot/OI.java index ae157a1..2d53942 100644 --- a/src/org/usfirst/frc/team708/robot/OI.java +++ b/src/org/usfirst/frc/team708/robot/OI.java @@ -122,9 +122,9 @@ public OI() { // sonarOverride.whenPressed(new SonarOverride()); - spinShooter.whileHeld(new SpinShooter()); + spinShooter.whileHeld(new ManualShoot()); spinShooterBack.whileActive(new SpinShooterBack()); - spinFeeder.whileHeld(new SpinFeeder()); + spinFeeder.whileHeld(new ManualFeeder()); spinFeederBack.whileActive(new SpinFeederBack()); // loaderSpin.whenPressed(new LoaderSpin()); diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index bc730e6..1f804a2 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -85,11 +85,13 @@ public class Robot extends IterativeRobot { // public static Solenoid boilerLight; SendableChooser autonomousMode = new SendableChooser<>(); - SendableChooser AllianceSelection = new SendableChooser<>(); + SendableChooser allianceSelection = new SendableChooser<>(); + Command autonomousCommand; + Command allianceCommand; Preferences prefs; - double AllianceSelectionDouble; + int AllianceSelectionInt; /** * This function is run when the robot is first started up and should be @@ -180,11 +182,13 @@ else if (ds.getAlliance() == Alliance.Red){ */ public void autonomousInit() { - AllianceSelectionDouble = (Double)AllianceSelection.getSelected(); +// AllianceSelectionDouble = (Double)AllianceSelection.getSelected(); // schedule the autonomous command (example) autonomousCommand = (Command)autonomousMode.getSelected(); if (autonomousCommand != null) autonomousCommand.start(); + allianceCommand = (Command)allianceSelection.getSelected(); + if (allianceCommand != null) allianceCommand.start(); } /** @@ -254,22 +258,35 @@ private void sendStatistics() { } private void queueAlliance() { - AllianceSelection.addDefault("RED", new RedAlliance()); - AllianceSelection.addObject("BLUE", new BlueAlliance()); + allianceSelection.addDefault("RED", new RedAlliance()); + allianceSelection.addObject("BLUE", new BlueAlliance()); - SmartDashboard.putData("Alliance Color", AllianceSelection); - } /** +// SmartDashboard.putData("Alliance Color", allianceSelection); + } + + /** * Adds every autonomous mode to the selection box and adds the box to the Smart Dashboard */ private void queueAutonomousModes() { - autonomousMode.addObject("Drive Straight for time", new DriveStraightForTime(.5, 3)); +// autonomousMode.addObject("Drive Straight for time", new DriveStraightForTime(.5, 3)); autonomousMode.addDefault("Do Nothing", new DoNothing()); + autonomousMode.addObject("Drive Over Line", new driveDistance()); + autonomousMode.addObject("One Gear Center", new OneGearCenter()); + autonomousMode.addObject("One Gear Left", new OneGearLeft()); + autonomousMode.addObject("10 Ball", new TenBalls()); + + // autonomousMode.addObject("Find Target", new DriveToTarget()); - autonomousMode.addObject("Drive in Square", new DriveInSquare()); - autonomousMode.addObject("turn", new turn()); +// autonomousMode.addObject("Drive in Square", new DriveInSquare()); +// autonomousMode.addObject("turn", new turn()); + + allianceSelection.addDefault("RED", new RedAlliance()); + allianceSelection.addObject("BLUE", new BlueAlliance()); + + SmartDashboard.putData("Autonomous Selection", autonomousMode); + SmartDashboard.putData("Alliance Color", allianceSelection); - SmartDashboard.putData("Autonomous Selection", autonomousMode); } /** diff --git a/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/BlueAlliance.java b/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/BlueAlliance.java index a4105b4..53de699 100644 --- a/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/BlueAlliance.java +++ b/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/BlueAlliance.java @@ -12,7 +12,8 @@ protected void initialize() { } protected void execute() { - Robot.allianceColor = Constants.ALLIANCE_RED; + Robot.allianceColor = Constants.ALLIANCE_BLUE; + Robot.led1.send_to_led(Constants.SET_ALLIANCE_BLUE); } protected boolean isFinished() { diff --git a/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/RedAlliance.java b/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/RedAlliance.java index 4537a09..6bee926 100644 --- a/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/RedAlliance.java +++ b/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/RedAlliance.java @@ -12,7 +12,8 @@ protected void initialize() { } protected void execute() { - Robot.allianceColor = Constants.ALLIANCE_RED; + Robot.allianceColor = Constants.ALLIANCE_RED; + Robot.led1.send_to_led(Constants.SET_ALLIANCE_RED); } protected boolean isFinished() { diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/DoNothing.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/DoNothing.java index 363b756..f287c5c 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/DoNothing.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/DoNothing.java @@ -1,8 +1,14 @@ package org.usfirst.frc.team708.robot.commands.autonomous; import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; +import org.usfirst.frc.team708.robot.commands.drivetrain.ToggleBrakeMode; +import edu.wpi.first.wpilibj.command.CommandGroup; +import edu.wpi.first.wpilibj.command.WaitCommand; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; + import edu.wpi.first.wpilibj.command.Command; @@ -10,11 +16,12 @@ /** * this does nothing */ -public class DoNothing extends Command { +public class DoNothing extends CommandGroup { public DoNothing() { // Use requires() here to declare subsystem dependencies // eg. requires(chassis); + addSequential(new ToggleBrakeMode()); } // Called just before this Command runs the first time @@ -24,26 +31,6 @@ protected void initialize() { Robot.drivetrain.resetGyro(); } - // Called repeatedly when this Command is scheduled to run - protected void execute() { - // Add Commands here: - // e.g. addSequential(new Command1()); - // addSequential(new Command2()); - // these will run in order. - - // To run multiple commands at the same time, - // use addParallel() - // e.g. addParallel(new Command1()); - // addSequential(new Command2()); - // Command1 and Command2 will run in parallel. - - // A command group will require all of the subsystems that each member - // would require. - // e.g. if Command1 requires chassis, and Command2 requires arm, - // a CommandGroup containing them would require both the chassis and the - // arm. - } - // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { return false; diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java new file mode 100644 index 0000000..4f3903f --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java @@ -0,0 +1,63 @@ +package org.usfirst.frc.team708.robot.commands.autonomous; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; +import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToLift; +import org.usfirst.frc.team708.robot.commands.drivetrain.ToggleBrakeMode; +import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegrees; +import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Off; +import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Out; + +import edu.wpi.first.wpilibj.command.CommandGroup; +import edu.wpi.first.wpilibj.command.WaitCommand; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; + +public class OneGearCenter extends CommandGroup { + + + private static final double driveStraightSpeed = 0.4; + private static final double driveStraightTime = 2; + + private static final double turnSpeed = -0.4; + private static final double turnDegrees = 90; + + // Called just before this Command runs the first time + protected void initialize() { +// Robot.drivetrain.resetEncoder(); +// Robot.drivetrain.resetEncoder2(); +// Robot.drivetrain.resetGyro(); + + } + + public OneGearCenter() { + +// addSequential(new WaitCommand(1.0)); + addSequential(new DriveStraightToEncoderDistance(55, .4, false)); + addSequential(new RotateAndDriveToLift()); + +// addSequential(new WaitCommand(4)); + + addSequential(new DriveStraightToEncoderDistance(6, .4, false)); + addSequential(new Intake_Gear_Out()); + // addSequential(new WaitCommand(.1)); + // addSequential(new Intake_Gear_Off()); + addSequential(new DriveStraightToEncoderDistance(50, .4, true)); + addSequential(new TurnToDegrees(.6, 45)); + addSequential(new DriveStraightToEncoderDistance(110, .6, false)); + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return false; + } + + // Called once after isFinished returns true + protected void end() { + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + } +} diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java new file mode 100644 index 0000000..52732b4 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java @@ -0,0 +1,62 @@ +package org.usfirst.frc.team708.robot.commands.autonomous; + +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; +import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToLift; +import org.usfirst.frc.team708.robot.commands.drivetrain.ToggleBrakeMode; +import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegrees; +import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Off; +import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Out; + +import edu.wpi.first.wpilibj.command.CommandGroup; +import edu.wpi.first.wpilibj.command.WaitCommand; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; + +public class OneGearLeft extends CommandGroup { + + + private static final double driveStraightSpeed = 0.4; + private static final double driveStraightTime = 2; + + private static final double turnSpeed = -0.4; + private static final double turnDegrees = 90; + + // Called just before this Command runs the first time + protected void initialize() { + Robot.drivetrain.resetEncoder(); + Robot.drivetrain.resetEncoder2(); + Robot.drivetrain.resetGyro(); + + } + + public OneGearLeft() { + + addSequential(new WaitCommand(1.0)); + addSequential(new DriveStraightToEncoderDistance(-70, .4)); + addSequential(new TurnToDegrees(-45,-0.4)); + + addSequential(new RotateAndDriveToLift()); + addSequential(new DriveStraightToEncoderDistance(-6, .2)); + addSequential(new Intake_Gear_Out()); + addSequential(new WaitCommand(.1)); + addSequential(new Intake_Gear_Off()); + addSequential(new DriveStraightToEncoderDistance(12, .2)); + addSequential(new TurnToDegrees(45, 0.4)); + addSequential(new DriveStraightToEncoderDistance(90, .4)); + + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return false; + } + + // Called once after isFinished returns true + protected void end() { + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + } +} diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearRight.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearRight.java new file mode 100644 index 0000000..93e634b --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearRight.java @@ -0,0 +1,60 @@ +package org.usfirst.frc.team708.robot.commands.autonomous; + +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; +import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToLift; +import org.usfirst.frc.team708.robot.commands.drivetrain.ToggleBrakeMode; +import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegrees; +import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Off; +import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Out; + +import edu.wpi.first.wpilibj.command.CommandGroup; +import edu.wpi.first.wpilibj.command.WaitCommand; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; + +public class OneGearRight extends CommandGroup { + + + private static final double driveStraightSpeed = 0.4; + private static final double driveStraightTime = 2; + + private static final double turnSpeed = -0.4; + private static final double turnDegrees = 90; + + // Called just before this Command runs the first time + protected void initialize() { + Robot.drivetrain.resetEncoder(); + Robot.drivetrain.resetEncoder2(); + Robot.drivetrain.resetGyro(); + + } + + public OneGearRight() { + + addSequential(new WaitCommand(1.0)); + addSequential(new DriveStraightToEncoderDistance(-60, .4)); + addSequential(new RotateAndDriveToLift()); + addSequential(new DriveStraightToEncoderDistance(-6, .2)); + addSequential(new Intake_Gear_Out()); + addSequential(new WaitCommand(.1)); + addSequential(new Intake_Gear_Off()); + addSequential(new DriveStraightToEncoderDistance(12, .2)); + addSequential(new TurnToDegrees(45, 0.4)); + addSequential(new DriveStraightToEncoderDistance(90, .4)); + + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return false; + } + + // Called once after isFinished returns true + protected void end() { + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + } +} diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java new file mode 100644 index 0000000..6651e3a --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java @@ -0,0 +1,74 @@ +package org.usfirst.frc.team708.robot.commands.autonomous; + +import org.usfirst.frc.team708.robot.AutoConstants; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightForTime; +import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; +import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToBoiler; +import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToLift; +import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegrees; +import org.usfirst.frc.team708.robot.commands.feeder.FeederOff; +import org.usfirst.frc.team708.robot.commands.feeder.SpinFeeder; +import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Off; +import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Out; +//import org.usfirst.frc.team708.robot.commands.shooter.ShooterOff; +import org.usfirst.frc.team708.robot.commands.shooter.SpinShooter; + +import edu.wpi.first.wpilibj.command.CommandGroup; +import edu.wpi.first.wpilibj.command.WaitCommand; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; + +public class TenBalls extends CommandGroup { + + private static final double driveStraightSpeed = 0.4; + private static final double driveStraightTime = 2; + + private static final double turnSpeed = 0.4; + private static final double turnRight = 90; + private static final double turnLeft = -90; + + // Called just before this Command runs the first time + protected void initialize() { + Robot.drivetrain.resetEncoder(); + Robot.drivetrain.resetEncoder2(); + Robot.drivetrain.resetGyro(); + + } + + public TenBalls() { + addSequential(new DriveStraightToEncoderDistance(85, .4, false)); //55, .4, false + addSequential(new WaitCommand(0.1)); + addSequential(new TurnToDegrees(.6, 45)); +// addSequential(new RotateAndDriveToBoiler(10)); + addSequential(new WaitCommand(4)); + + addSequential(new SpinShooter()); + addSequential(new WaitCommand(1.0)); + addParallel(new SpinFeeder()); + addSequential(new WaitCommand(4)); + addSequential(new FeederOff()); + // addSequential(new ShooterOff()); + addSequential(new DriveStraightToEncoderDistance(50, .4,false)); + // addSequential(new RotateAndDriveToLift()); + addSequential(new DriveStraightToEncoderDistance(6, .4, false)); + addSequential(new Intake_Gear_Out()); + addSequential(new DriveStraightToEncoderDistance(50, .4,true)); + addSequential(new TurnToDegrees(-.6,-45)); + addSequential(new DriveStraightToEncoderDistance(110, .4, false)); + + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return false; + } + + // Called once after isFinished returns true + protected void end() { + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + } +} diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java new file mode 100644 index 0000000..1f0c475 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java @@ -0,0 +1,48 @@ +package org.usfirst.frc.team708.robot.commands.autonomous; + +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; +import org.usfirst.frc.team708.robot.commands.drivetrain.ToggleBrakeMode; + +import edu.wpi.first.wpilibj.command.CommandGroup; +import edu.wpi.first.wpilibj.command.WaitCommand; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; + +public class driveDistance extends CommandGroup { + + + private static final double driveStraightSpeed = 0.4; + private static final double driveStraightTime = 2; + + private static final double turnSpeed = -0.4; + private static final double turnDegrees = 90; + + // Called just before this Command runs the first time + protected void initialize() { + Robot.drivetrain.resetEncoder(); + Robot.drivetrain.resetEncoder2(); + Robot.drivetrain.resetGyro(); + + } + + public driveDistance() { + + addSequential(new WaitCommand(2.0)); + addSequential(new DriveStraightToEncoderDistance(110, .4)); + + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return false; + } + + // Called once after isFinished returns true + protected void end() { + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + } +} diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistance.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistance.java index 427db5a..96e458f 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistance.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistance.java @@ -45,7 +45,7 @@ protected void initialize() { Robot.drivetrain.resetEncoder(); Robot.drivetrain.resetGyro(); // Robot.drivetrain.enable(); - Robot.drivetrain.disable(); +// Robot.drivetrain.disable(); //JNP disabled } // Called repeatedly when this Command is scheduled to run @@ -66,9 +66,9 @@ protected boolean isFinished() { // Called once after isFinished returns true protected void end() { - Robot.drivetrain.disable(); +// Robot.drivetrain.disable(); Robot.drivetrain.stop(); - Robot.drivetrain.resetEncoder(); +// Robot.drivetrain.resetEncoder(); } // Called when another command which requires one or more of the same diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/JoystickDrive.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/JoystickDrive.java index 476ee8b..d086546 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/JoystickDrive.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/JoystickDrive.java @@ -15,6 +15,9 @@ public class JoystickDrive extends Command { public JoystickDrive() { // Use requires() here to declare subsystem dependencies requires(Robot.drivetrain); +// requires(Robot.shooter); +// requires(Robot.feeder); + } // Called just before this Command runs the first time diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java index 4dc88ff..c9cc78c 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java @@ -21,7 +21,7 @@ public class RotateAndDriveToLift extends Command { */ // VIET ARE WE STILL USING THE TARGET DISTANCE HERE - I THINK WE ARE ACTUALLY CALCULATING IT IN THE SUBSYSTEM // Mreh mreh mreh, I'm Mrs. P, I want to delete the targetDistance, mreh mreh mreh. - public RotateAndDriveToLift(double targetDistance) { + public RotateAndDriveToLift() { // Use requires() here to declare subsystem dependencies requires(Robot.drivetrain); requires(Robot.visionLift); diff --git a/src/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.java b/src/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.java index ace1fab..6b1a709 100644 --- a/src/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.java +++ b/src/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.java @@ -15,6 +15,10 @@ public class ManualFeeder extends Command { public ManualFeeder() { requires(Robot.feeder); + requires(Robot.intake_ball); + requires(Robot.drivetrain); + requires(Robot.shooter); + } @@ -24,26 +28,18 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { - - boolean Apressed = OI.operatorGamepad.getButton(Gamepad.button_A); - boolean Xpressed = OI.operatorGamepad.getButton(Gamepad.button_X); - boolean Ypressed = OI.operatorGamepad.getButton(Gamepad.button_Y); - -// feeder_IN_BUTTON = Gamepad.button_Y; -// feeder_OUT_BUTTON = Gamepad.button_A; -// feeder_OFF_BUTTON = Gamepad.button_X; - - if (Ypressed == true){ - Robot.feeder.manualMove(Constants.MOTOR_FORWARD); - } - else - if (Apressed == true){ - Robot.feeder.manualMove(Constants.MOTOR_REVERSE); - } - else - if (Xpressed == true){ - Robot.feeder.manualMove(Constants.MOTOR_OFF); - } + + Robot.feeder.manualMove(Constants.FEEDER_MOTOR_FORWARD); + Robot.intake_ball.moveMotor(Constants.INTAKE_FORWARD); + + +// boolean R_Shoulderpressed = OI.operatorGamepad.getButton(Gamepad.button_R_Shoulder); +// +// if (R_Shoulderpressed == true){ +// Robot.feeder.manualMove(Constants.MOTOR_FORWARD); +// } +// else +// Robot.feeder.manualMove(Constants.MOTOR_OFF); } @@ -55,6 +51,7 @@ protected boolean isFinished() { // Called once after isFinished returns true protected void end() { Robot.feeder.stop(); + Robot.intake_ball.stop(); } // Called when another command which requires one or more of the same diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Off.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Off.java new file mode 100644 index 0000000..b9ea45c --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Off.java @@ -0,0 +1,42 @@ +package org.usfirst.frc.team708.robot.commands.intake_gear; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.OI; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.util.Gamepad; + +import edu.wpi.first.wpilibj.command.Command; + +public class Intake_Gear_Off extends Command { + +public Intake_Gear_Off() { + + requires(Robot.intake_gear); +} + +protected void initialize() { + +} + +protected void execute() { + Robot.intake_gear.stop(); +} + + +protected boolean isFinished() { + + return(false); +} + +protected void end() { + + Robot.intake_gear.stop(); + +} + +protected void interrupted() { + + end(); +} + +} diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java index e4a016a..1352b79 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java @@ -9,9 +9,11 @@ public class Intake_Gear_Out extends Command { + public Intake_Gear_Out() { requires(Robot.intake_gear); + this.setTimeout(.1); } protected void initialize() { @@ -19,14 +21,15 @@ protected void initialize() { } protected void execute() { - + Robot.intake_gear.moveMotor(Constants.GEAR_OUT); } protected boolean isFinished() { - return(false); + return(isTimedOut()); +// return(false); } protected void end() { diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/HoodAdjust.java b/src/org/usfirst/frc/team708/robot/commands/shooter/HoodAdjust.java index 328e808..f4719e3 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/HoodAdjust.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/HoodAdjust.java @@ -20,6 +20,8 @@ public class HoodAdjust extends Command { public HoodAdjust() { requires(Robot.shooter); + requires(Robot.feeder); + requires(Robot.drivetrain); } // Called just before this Command runs the first time diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java b/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java index 09398ef..4d5a779 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java @@ -20,7 +20,10 @@ public class ManualShoot extends Command { public ManualShoot() { - + requires(Robot.feeder); + requires(Robot.intake_ball); + requires(Robot.drivetrain); + requires(Robot.shooter); } // Called just before this Command runs the first time @@ -30,13 +33,13 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { - boolean L_Shoulderpressed = OI.operatorGamepad.getButton(Gamepad.button_L_Shoulder); +// boolean L_Shoulderpressed = OI.operatorGamepad.getButton(Gamepad.button_L_Shoulder); - if (L_Shoulderpressed == true){ +// if (L_Shoulderpressed == true){ Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_SPEED_HIGH); - } - else - Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_OFF); +// } +// else +// Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_OFF); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java index cdf4abe..f8eda14 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java @@ -21,7 +21,9 @@ public class MoveHoodHigh extends Command { public MoveHoodHigh() { requires(Robot.shooter); - } + requires(Robot.feeder); + requires(Robot.drivetrain); + } // Called just before this Command runs the first time protected void initialize() { diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java index f45bf66..c3bd039 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java @@ -21,7 +21,9 @@ public class MoveHoodLow extends Command { public MoveHoodLow() { requires(Robot.shooter); - } + requires(Robot.feeder); + requires(Robot.drivetrain); + } // Called just before this Command runs the first time protected void initialize() { diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java index 14d1a95..6590d74 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java @@ -31,9 +31,9 @@ public class Shooter extends Subsystem { // Put methods for controlling this subsystem here. Call these // from Commands. - private CANTalon shooter, shooterSlave; // Motor Controllers - private Servo hood; - private int hoodLocation; + private CANTalon shooter, shooterSlave; // Motor Controllers + private Servo hood; + private int hoodLocation; /** * Constructor @@ -96,10 +96,10 @@ public void moveHood(int angle) { if (Constants.DEBUG) { SmartDashboard.putNumber("Servo passed in: ", angle); - SmartDashboard.putNumber("Servo Raw", hood.getRaw()); + SmartDashboard.putNumber("Servo Raw", hood.getRaw()); } hoodLocation = angle; - hood.setRaw(angle); + hood.setRaw(angle); } public void hoodAdjust(double angle) { @@ -120,9 +120,9 @@ public void hoodAdjust(double angle) { public void sendToDashboard() { if (Constants.DEBUG) { } - SmartDashboard.putNumber("Encoder Position", shooter.getEncPosition()); - SmartDashboard.putNumber("Encoder Speed", shooter.getSpeed()); - SmartDashboard.putNumber("Encoder Velocity", shooter.getEncVelocity()); + SmartDashboard.putNumber("Encoder Position", shooter.getEncPosition()); + SmartDashboard.putNumber("Encoder Speed", shooter.getSpeed()); + SmartDashboard.putNumber("Encoder Velocity", shooter.getEncVelocity()); } } diff --git a/sysProps.xml b/sysProps.xml index f2bee5909efeb5abddb5c3f7631732cbdf777128..95d3f80bb5ddcafd81a210427c5d66fb6da0837a 100644 GIT binary patch delta 81 zcmZ2yu+CsZ37@GGgE4~(gCT<{g9U>D5GpV@14SHxEEfh#1~VY30K_I>HO4^N6ey=K XIgrJA^Ao-!%&aCrA&bpxg&J7_OGgh6 delta 81 zcmZ2yu+CsZ37@GkgCm0}gA;=*g8>*SFc>iyGME6d5m3yG!Hq$I!3D^70g4y{X^>il Y$$>1^o1gF From 7a18d173bc794892fc894fcce403f0c0fd9d4409 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Wed, 22 Feb 2017 15:17:57 -0500 Subject: [PATCH 31/69] code clean up before vision merge --- src/org/usfirst/frc/team708/robot/OI.java | 55 +++----- src/org/usfirst/frc/team708/robot/Robot.java | 13 +- .../AllianceSelection/BlueAlliance.java | 5 +- .../AllianceSelection/RedAlliance.java | 5 +- .../robot/commands/Climber/ClimbDown.java | 9 +- .../robot/commands/Climber/ClimbUp.java | 7 +- .../commands/Climber/ManualMoveClimber.java | 3 +- .../robot/commands/feeder/FeederOff.java | 12 +- .../robot/commands/feeder/ManualFeeder.java | 29 +---- .../robot/commands/feeder/SpinFeeder.java | 20 +-- .../robot/commands/feeder/SpinFeederBack.java | 11 +- .../commands/intake_ball/Intake_Ball_In.java | 14 +- .../commands/intake_ball/Intake_Ball_Out.java | 53 ++++---- .../intake_ball/ManualIntake_Ball.java | 8 +- .../commands/intake_gear/GearAdjust.java | 6 +- .../commands/intake_gear/GearIntake.java | 25 +--- .../intake_gear/Intake_Gear_Down.java | 6 +- .../commands/intake_gear/Intake_Gear_In.java | 4 +- .../commands/intake_gear/Intake_Gear_Off.java | 47 +++---- .../commands/intake_gear/Intake_Gear_Out.java | 55 ++++---- .../commands/intake_gear/Intake_Gear_Up.java | 6 +- .../intake_gear/ManualIntake_Gear.java | 114 ++++++++-------- .../intake_gear/ManualPivot_Gear.java | 116 ++++++++--------- .../robot/commands/led_out/LED_out.java | 15 ++- .../robot/commands/loader/LoaderOff.java | 76 +++++------ .../robot/commands/loader/LoaderSpin.java | 108 ++++++++-------- .../robot/commands/loader/LoaderSpinIn.java | 98 +++++++------- .../robot/commands/loader/LoaderSpinOut.java | 98 +++++++------- .../robot/commands/loader/ManualLoader.java | 122 +++++++++--------- .../robot/commands/shooter/HoodAdjust.java | 18 ++- .../robot/commands/shooter/ManualShoot.java | 14 +- .../robot/commands/shooter/MoveHoodHigh.java | 17 +-- .../robot/commands/shooter/MoveHoodLow.java | 17 +-- .../robot/commands/shooter/SpinShooter.java | 22 ++-- .../commands/shooter/SpinShooterBack.java | 4 +- .../frc/team708/robot/subsystems/Climber.java | 5 +- .../team708/robot/subsystems/Drivetrain.java | 49 ++++--- .../frc/team708/robot/subsystems/Hanger.java | 44 ------- .../team708/robot/subsystems/Intake_Ball.java | 21 +-- .../team708/robot/subsystems/Intake_Gear.java | 26 ++-- .../frc/team708/robot/subsystems/LED.java | 7 +- .../frc/team708/robot/subsystems/Loader.java | 118 ++++++++--------- .../team708/robot/subsystems/Pivot_Gear.java | 7 - .../frc/team708/robot/subsystems/Shooter.java | 22 +--- 44 files changed, 650 insertions(+), 881 deletions(-) delete mode 100644 src/org/usfirst/frc/team708/robot/subsystems/Hanger.java diff --git a/src/org/usfirst/frc/team708/robot/OI.java b/src/org/usfirst/frc/team708/robot/OI.java index 2d53942..5835ecc 100644 --- a/src/org/usfirst/frc/team708/robot/OI.java +++ b/src/org/usfirst/frc/team708/robot/OI.java @@ -9,7 +9,6 @@ import org.usfirst.frc.team708.robot.commands.led_out.*; import org.usfirst.frc.team708.robot.commands.intake_ball.*; import org.usfirst.frc.team708.robot.commands.intake_gear.*; -import org.usfirst.frc.team708.robot.commands.loader.*; import org.usfirst.frc.team708.robot.commands.Climber.*; import org.usfirst.frc.team708.robot.commands.visionProcessor.*; @@ -34,14 +33,8 @@ public class OI { * Driver Button Assignment */ - // Drivetrain Buttons private static final int INTAKE_BALL_IN = Gamepad.button_R_Shoulder; private static final int INTAKE_BALL_OUT = Gamepad.shoulderAxisRight; - -// private static final int INTAKE_GEAR_DOWN = Gamepad.button_A; -// private static final int INTAKE_GEAR_UP = Gamepad.button_B; -// private static final int INTAKE_GEAR_ADJUST = Gamepad.dpadAxis; - public static final int LED_BUTTON = Gamepad.button_X; @@ -54,7 +47,6 @@ public class OI { private static final int SPIN_FEEDER_BUTTON = Gamepad.button_R_Shoulder; private static final int SPIN_FEEDER_BACK_BUTTON = Gamepad.shoulderAxisRight; - private static final int OPERATE_HANGER = Gamepad.leftStick_Y; private static final int OPERATE_HOOD = Gamepad.rightStick_Y; private static final int OPERATE_GEAR_PIVOT = Gamepad.leftStick_Y; private static final int OPERATE_GEAR_INTAKE = Gamepad.leftStick_X; @@ -62,41 +54,32 @@ public class OI { public static final int HOOD_HIGH = Gamepad.button_A; public static final int HOOD_LOW = Gamepad.button_B; -// private static final int LOADER_STOP = Gamepad.button_X; -// private static final int LOADER_SPIN = Gamepad.button_Y; private static final int CLIMB_DOWN = Gamepad.button_X; private static final int CLIMB_UP = Gamepad.button_Y; private static final int VISION_TRIGGER = Gamepad.button_Start; + -// private static final int INTAKE_GEAR_IN = Gamepad.button_L_Shoulder; -// private static final int INTAKE_GEAR_OUT = Gamepad.shoulderAxisLeft; +// Driver Button Commands - /* - * Driver Button Commands - */ -// public static final Button intakeGearIn = new JoystickButton(driverGamepad, INTAKE_GEAR_IN); -// public static final Trigger intakeGearOut = new AxisUp(driverGamepad, INTAKE_GEAR_OUT); public static final Button intakeBallIn = new JoystickButton(driverGamepad, INTAKE_BALL_IN); public static final Trigger intakeBallOut = new AxisUp(driverGamepad, INTAKE_BALL_OUT); public static final Button led = new JoystickButton(driverGamepad, LED_BUTTON); -// public static final Trigger gearAdjust = new AxisUp(driverGamepad, INTAKE_GEAR_ADJUST); - /* - * Operator Button Commands - */ +// Operator Button Commands + public static final Button spinShooter = new JoystickButton(operatorGamepad, SPIN_SHOOTER_BUTTON); public static final Trigger spinShooterBack = new AxisDown(operatorGamepad, SPIN_SHOOTER_BACK_BUTTON); public static final Button spinFeeder = new JoystickButton(operatorGamepad, SPIN_FEEDER_BUTTON); public static final Trigger spinFeederBack = new AxisUp(operatorGamepad, SPIN_FEEDER_BACK_BUTTON); // public static final Button loaderSpin = new JoystickButton(operatorGamepad, LOADER_SPIN); // public static final Button loaderOff = new JoystickButton(operatorGamepad, LOADER_STOP); - public static final Button climbUp = new JoystickButton(operatorGamepad, CLIMB_UP); - public static final Button climbDown = new JoystickButton(operatorGamepad, CLIMB_DOWN); + public static final Button climbUp = new JoystickButton(operatorGamepad, CLIMB_UP); + public static final Button climbDown = new JoystickButton(operatorGamepad, CLIMB_DOWN); - public static final Button hoodHigh = new JoystickButton(operatorGamepad, HOOD_HIGH); - public static final Button hoodLow = new JoystickButton(operatorGamepad, HOOD_LOW); + public static final Button hoodHigh = new JoystickButton(operatorGamepad, HOOD_HIGH); + public static final Button hoodLow = new JoystickButton(operatorGamepad, HOOD_LOW); public static final Trigger hoodAdjust = new AxisUp(operatorGamepad, OPERATE_HOOD); public static final Trigger hoodAdjustDown = new AxisDown(operatorGamepad, OPERATE_HOOD); public static final Trigger gearUp = new AxisUp(operatorGamepad, OPERATE_GEAR_PIVOT); @@ -112,29 +95,25 @@ public class OI { */ public OI() { - /* - * Driver Commands to be called by button - */ + +// Driver intakeBallIn.whileHeld(new Intake_Ball_In()); intakeBallOut.whileActive(new Intake_Ball_Out()); -// intakeGearIn.whileHeld(new Intake_Gear_In()); -// intakeGearOut.whileActive(new Intake_Gear_Out()); - -// sonarOverride.whenPressed(new SonarOverride()); +// Operator spinShooter.whileHeld(new ManualShoot()); spinShooterBack.whileActive(new SpinShooterBack()); + spinFeeder.whileHeld(new ManualFeeder()); spinFeederBack.whileActive(new SpinFeederBack()); -// loaderSpin.whenPressed(new LoaderSpin()); -// loaderOff.whenPressed(new LoaderOff()); - - led.whenPressed(new LED_out()); hoodHigh.whenPressed(new MoveHoodHigh()); hoodLow.whenPressed(new MoveHoodLow()); hoodAdjust.whileActive(new HoodAdjust()); hoodAdjustDown.whileActive(new HoodAdjust()); + + led.whenPressed(new LED_out()); + gearUp.whileActive(new GearAdjust()); gearDown.whileActive(new GearAdjust()); gearIn.whileActive(new GearIntake()); @@ -142,10 +121,6 @@ public OI() { climbUp.whileActive(new ClimbUp()); climbDown.whileActive(new ClimbDown()); - -// gearAdjust.whileActive(new Intake_Gear_Adjust()); -// visionTrigger.whenPressed(new visionTrigger(); - } } diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index 1f804a2..b789b62 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -24,8 +24,8 @@ import org.usfirst.frc.team708.robot.subsystems.Drivetrain; import org.usfirst.frc.team708.robot.subsystems.Shooter; -import org.usfirst.frc.team708.robot.subsystems.Loader; import org.usfirst.frc.team708.robot.subsystems.Feeder; +//import org.usfirst.frc.team708.robot.subsystems.Loader; import org.usfirst.frc.team708.robot.subsystems.Intake_Ball; import org.usfirst.frc.team708.robot.subsystems.Intake_Gear; import org.usfirst.frc.team708.robot.subsystems.Pivot_Gear; @@ -60,7 +60,7 @@ public class Robot extends IterativeRobot { public static Intake_Ball intake_ball; public static Intake_Gear intake_gear; public static Pivot_Gear pivot_gear; - public static Loader loader; +// public static Loader loader; public static Climber climber; @@ -76,6 +76,7 @@ public class Robot extends IterativeRobot { public static DriverStation ds; public static DriverStation.Alliance alliance; public static int allianceColor; + public static byte ledAllianceColor; // public static Solenoid pwr0; // public static Solenoid pwr1; @@ -112,7 +113,7 @@ public void robotInit() { intake_gear = new Intake_Gear(); pivot_gear = new Pivot_Gear(); feeder = new Feeder(); - loader = new Loader(); +// loader = new Loader(); led1 = new LED(); climber = new Climber(); visionLift = new VisionLift(); @@ -159,10 +160,12 @@ public void disabledPeriodic() { if (ds.getAlliance() == Alliance.Blue){ led1.send_to_led(Constants.SET_ALLIANCE_BLUE); allianceColor = Constants.ALLIANCE_BLUE; + ledAllianceColor = Constants.SET_ALLIANCE_BLUE; } else if (ds.getAlliance() == Alliance.Red){ led1.send_to_led(Constants.SET_ALLIANCE_RED); allianceColor = Constants.ALLIANCE_RED; + ledAllianceColor = Constants.SET_ALLIANCE_RED; } else { led1.send_to_led(Constants.SET_ALLIANCE_INVALID); @@ -243,7 +246,7 @@ private void sendStatistics() { // Various debug information drivetrain.sendToDashboard(); feeder.sendToDashboard(); - loader.sendToDashboard(); +// loader.sendToDashboard(); shooter.sendToDashboard(); led1.sendToDashboard(); climber.sendToDashboard(); @@ -295,7 +298,7 @@ private void queueAutonomousModes() { private void sendDashboardSubsystems() { SmartDashboard.putData(shooter); // SmartDashboard.putData(feeder); - SmartDashboard.putData(loader); +// SmartDashboard.putData(loader); SmartDashboard.putData(drivetrain); SmartDashboard.putData(led1); SmartDashboard.putData(intake_ball); diff --git a/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/BlueAlliance.java b/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/BlueAlliance.java index 53de699..9882664 100644 --- a/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/BlueAlliance.java +++ b/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/BlueAlliance.java @@ -9,11 +9,12 @@ public BlueAlliance() { } protected void initialize() { + Robot.allianceColor = Constants.ALLIANCE_BLUE; + Robot.ledAllianceColor = Constants.SET_ALLIANCE_BLUE; + Robot.led1.send_to_led(Constants.SET_ALLIANCE_BLUE); } protected void execute() { - Robot.allianceColor = Constants.ALLIANCE_BLUE; - Robot.led1.send_to_led(Constants.SET_ALLIANCE_BLUE); } protected boolean isFinished() { diff --git a/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/RedAlliance.java b/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/RedAlliance.java index 6bee926..e52cf86 100644 --- a/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/RedAlliance.java +++ b/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/RedAlliance.java @@ -9,11 +9,12 @@ public RedAlliance() { } protected void initialize() { + Robot.allianceColor = Constants.ALLIANCE_RED; + Robot.ledAllianceColor = Constants.SET_ALLIANCE_RED; + Robot.led1.send_to_led(Constants.SET_ALLIANCE_RED); } protected void execute() { - Robot.allianceColor = Constants.ALLIANCE_RED; - Robot.led1.send_to_led(Constants.SET_ALLIANCE_RED); } protected boolean isFinished() { diff --git a/src/org/usfirst/frc/team708/robot/commands/Climber/ClimbDown.java b/src/org/usfirst/frc/team708/robot/commands/Climber/ClimbDown.java index 53c64b0..0092de0 100644 --- a/src/org/usfirst/frc/team708/robot/commands/Climber/ClimbDown.java +++ b/src/org/usfirst/frc/team708/robot/commands/Climber/ClimbDown.java @@ -11,17 +11,16 @@ public class ClimbDown extends Command{ public ClimbDown(){ - requires(Robot.climber); //Requires Climber from the IO.Java +// requires(Robot.climber); //Requires Climber from the IO.Java } // Called just before this Command runs the first time protected void initialize() { - + Robot.climber.manualMove(Constants.CLIMB_REVERSE); //Defines move speed from the operator's controller } // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.climber.manualMove(Constants.CLIMB_REVERSE); //Defines move speed from the operator's controller } // Make this return true when this Command no longer needs to run execute() @@ -29,14 +28,10 @@ protected boolean isFinished() { return false; } - // Called once after isFinished returns true protected void end() { Robot.climber.stop(); - } - // Called when another command which requires one or more of the same - // subsystems is scheduled to run protected void interrupted() { end(); } diff --git a/src/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.java b/src/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.java index 1978408..c111260 100644 --- a/src/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.java +++ b/src/org/usfirst/frc/team708/robot/commands/Climber/ClimbUp.java @@ -9,21 +9,18 @@ **/ public class ClimbUp extends Command { - public ClimbUp(){ - requires(Robot.climber); //Gets Climber from IO.Java +// requires(Robot.climber); //Gets Climber from IO.Java } // Called just before this Command runs the first time protected void initialize() { + Robot.climber.manualMove(Constants.CLIMB_FORWARD); //Defines move speed from the operator's controller } // Called repeatedly when this Command is scheduled to run protected void execute() { - // double moveSpeed = OI.operatorGamepad.getAxis(Gamepad.leftStick_Y); //Gets Input from operator's controller - Robot.climber.manualMove(Constants.CLIMB_FORWARD); //Defines move speed from the operator's controller - } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/Climber/ManualMoveClimber.java b/src/org/usfirst/frc/team708/robot/commands/Climber/ManualMoveClimber.java index 206e99c..4b51173 100644 --- a/src/org/usfirst/frc/team708/robot/commands/Climber/ManualMoveClimber.java +++ b/src/org/usfirst/frc/team708/robot/commands/Climber/ManualMoveClimber.java @@ -11,8 +11,7 @@ **/ public class ManualMoveClimber extends Command { public ManualMoveClimber() { - // Use requires() here to declare subsystem dependencies - requires(Robot.climber); +// requires(Robot.climber); } // Called just before this Command runs the first time diff --git a/src/org/usfirst/frc/team708/robot/commands/feeder/FeederOff.java b/src/org/usfirst/frc/team708/robot/commands/feeder/FeederOff.java index dc72b19..a094041 100644 --- a/src/org/usfirst/frc/team708/robot/commands/feeder/FeederOff.java +++ b/src/org/usfirst/frc/team708/robot/commands/feeder/FeederOff.java @@ -8,25 +8,19 @@ import edu.wpi.first.wpilibj.command.Command; -/** - * - */ public class FeederOff extends Command { - public FeederOff() { - requires(Robot.feeder); +// requires(Robot.feeder); } - // Called just before this Command runs the first time protected void initialize() { - + Robot.feeder.manualMove(Constants.MOTOR_OFF); } // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.feeder.manualMove(Constants.MOTOR_OFF); } // Make this return true when this Command no longer needs to run execute() @@ -39,8 +33,6 @@ protected void end() { Robot.feeder.stop(); } - // Called when another command which requires one or more of the same - // subsystems are scheduled to run protected void interrupted() { end(); } diff --git a/src/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.java b/src/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.java index 6b1a709..23b5d6a 100644 --- a/src/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.java +++ b/src/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.java @@ -7,40 +7,25 @@ import edu.wpi.first.wpilibj.command.Command; -/** - * - */ public class ManualFeeder extends Command { public ManualFeeder() { - requires(Robot.feeder); - requires(Robot.intake_ball); - requires(Robot.drivetrain); - requires(Robot.shooter); - +// requires(Robot.feeder); +// requires(Robot.intake_ball); +// requires(Robot.drivetrain); +// requires(Robot.shooter); } // Called just before this Command runs the first time protected void initialize() { + Robot.feeder.manualMove(Constants.FEEDER_MOTOR_FORWARD); + Robot.intake_ball.moveMotor(Constants.INTAKE_FORWARD); } // Called repeatedly when this Command is scheduled to run - protected void execute() { - - Robot.feeder.manualMove(Constants.FEEDER_MOTOR_FORWARD); - Robot.intake_ball.moveMotor(Constants.INTAKE_FORWARD); - - -// boolean R_Shoulderpressed = OI.operatorGamepad.getButton(Gamepad.button_R_Shoulder); -// -// if (R_Shoulderpressed == true){ -// Robot.feeder.manualMove(Constants.MOTOR_FORWARD); -// } -// else -// Robot.feeder.manualMove(Constants.MOTOR_OFF); - + protected void execute() { } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.java b/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.java index d17e8aa..baf8e5e 100644 --- a/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.java +++ b/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.java @@ -9,30 +9,22 @@ import edu.wpi.first.wpilibj.command.Command; -/** - * - */ public class SpinFeeder extends Command { - - public SpinFeeder() { - - requires(Robot.feeder); - requires(Robot.intake_ball); - requires(Robot.drivetrain); - + public SpinFeeder() { +// requires(Robot.feeder); +// requires(Robot.intake_ball); +// requires(Robot.drivetrain); } - // Called just before this Command runs the first time protected void initialize() { - + Robot.feeder.manualMove(Constants.FEEDER_MOTOR_FORWARD); + Robot.intake_ball.moveMotor(Constants.INTAKE_FORWARD); } // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.feeder.manualMove(Constants.FEEDER_MOTOR_FORWARD); - Robot.intake_ball.moveMotor(Constants.INTAKE_FORWARD); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeederBack.java b/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeederBack.java index 47ea4b1..5dbfa6b 100644 --- a/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeederBack.java +++ b/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeederBack.java @@ -8,27 +8,20 @@ import edu.wpi.first.wpilibj.command.Command; -/** - * - */ public class SpinFeederBack extends Command { - public SpinFeederBack() { - requires(Robot.feeder); +// requires(Robot.feeder); } // Called just before this Command runs the first time protected void initialize() { - + Robot.feeder.manualMove(Constants.FEEDER_MOTOR_REVERSE); } // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.feeder.manualMove(Constants.FEEDER_MOTOR_REVERSE); - - } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_In.java b/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_In.java index 9c9a6f1..da43669 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_In.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_In.java @@ -7,34 +7,26 @@ public class Intake_Ball_In extends Command { - public Intake_Ball_In() { - - requires(Robot.intake_ball); + public Intake_Ball_In() { +// requires(Robot.intake_ball); } protected void initialize() { - + Robot.intake_ball.moveMotor(Constants.INTAKE_FORWARD); } protected void execute() { - - Robot.intake_ball.moveMotor(Constants.INTAKE_FORWARD); } - protected boolean isFinished() { - return(false); } protected void end() { - Robot.intake_ball.stop(); - } protected void interrupted() { - end(); } diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.java b/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.java index 056b65b..4e307a1 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.java @@ -9,37 +9,32 @@ public class Intake_Ball_Out extends Command { -public Intake_Ball_Out() { + public Intake_Ball_Out() { +// requires(Robot.intake_ball); + } - requires(Robot.intake_ball); -} - -protected void initialize() { - -} - -protected void execute() { - - if (OI.driverGamepad.getAxis(Gamepad.shoulderAxisRight) >= Constants.AXIS_DEAD_ZONE){ + protected void initialize() { Robot.intake_ball.moveMotor(Constants.INTAKE_REVERSE); } -} - - -protected boolean isFinished() { - - return(false); -} - -protected void end() { - - Robot.intake_ball.stop(); - -} - -protected void interrupted() { - - end(); -} + + protected void execute() { + + // if (OI.driverGamepad.getAxis(Gamepad.shoulderAxisRight) >= Constants.AXIS_DEAD_ZONE){ + // Robot.intake_ball.moveMotor(Constants.INTAKE_REVERSE); + // } + } + + + protected boolean isFinished() { + return(false); + } + + protected void end() { + Robot.intake_ball.stop(); + } + + protected void interrupted() { + end(); + } } diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java b/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java index 00f9125..596b44f 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java @@ -12,19 +12,13 @@ public class ManualIntake_Ball extends Command { public ManualIntake_Ball() { } - // Called just before this Command runs the first time protected void initialize() { - } // Called repeatedly when this Command is scheduled to run - protected void execute() { - + protected void execute() { boolean R_Shoulderpressed = OI.driverGamepad.getButton(Gamepad.button_R_Shoulder); - - // LOADER_IN_BUTTON = Gamepad.Button_R_Shoulder; - // LOADER_OUT_BUTTON = Gamepad.shoulderAxisRight; if (R_Shoulderpressed == true){ Robot.intake_ball.moveMotor(Constants.INTAKE_FORWARD); diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java index 8d41764..f36415e 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java @@ -19,7 +19,7 @@ public class GearAdjust extends Command { public GearAdjust() { - requires(Robot.intake_gear); +// requires(Robot.intake_gear); } // Called just before this Command runs the first time @@ -30,11 +30,11 @@ protected void initialize() { protected void execute() { double gearAngle = OI.operatorGamepad.getAxis(Gamepad.leftStick_Y); //Gets Input from operator's controller if ((gearAngle >0) -// && (!Robot.pivot_gear.isFwdSwitch()) + && (!Robot.pivot_gear.isFwdSwitch()) ) Robot.pivot_gear.moveMotor(Constants.GEAR_UP); else if ((gearAngle <0) -// && (!Robot.pivot_gear.isRevSwitch()) + && (!Robot.pivot_gear.isRevSwitch()) ) Robot.pivot_gear.moveMotor(Constants.GEAR_DOWN); //Defines move speed from the operator's controller } diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java index 164ba1f..4e7f642 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java @@ -1,26 +1,15 @@ package org.usfirst.frc.team708.robot.commands.intake_gear; import org.usfirst.frc.team708.robot.Constants; -import org.usfirst.frc.team708.robot.RobotMap; import org.usfirst.frc.team708.robot.util.Gamepad; import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.OI; -//import org.team708.robot.OI; -//import org.team708.robot.subsystems.Loader; -//import org.team708.robot.util.Gamepad; -//import org.team708.robot.commands.shooter.Fire; - import edu.wpi.first.wpilibj.command.Command; -import edu.wpi.first.wpilibj.command.WaitCommand; -import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; -/** - * - */ public class GearIntake extends Command { public GearIntake() { - requires(Robot.intake_gear); +// requires(Robot.intake_gear); } // Called just before this Command runs the first time @@ -42,16 +31,6 @@ else if (gearAngle<0) Robot.intake_gear.stop(); Robot.pivot_gear.moveMotor(Constants.GEAR_UP); } -// if (gearAngle>0) -// { -// SmartDashboard.putNumber("GEAR IN", gearAngle); -// Robot.intake_gear.moveMotor(Constants.GEAR_IN); -// } -// else if (gearAngle<0) -// { -// SmartDashboard.putNumber("GEAR OUT", gearAngle); -// Robot.intake_gear.moveMotor(Constants.GEAR_OUT); -// } } // Make this return true when this Command no longer needs to run execute() @@ -65,8 +44,6 @@ protected void end() { Robot.pivot_gear.stop(); } - // Called when another command which requires one or more of the same - // subsystems are scheduled to run protected void interrupted() { end(); } diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java index 1107d4d..6e612ae 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java @@ -6,8 +6,8 @@ public class Intake_Gear_Down extends Command { -public Intake_Gear_Down() { - requires(Robot.pivot_gear); + public Intake_Gear_Down() { +// requires(Robot.pivot_gear); } protected void initialize() { @@ -20,7 +20,6 @@ protected void execute() { Robot.pivot_gear.stop(); } - protected boolean isFinished() { return(false); } @@ -32,7 +31,6 @@ protected void end() { protected void interrupted() { end(); } - } diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java index e320606..d00192e 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java @@ -11,8 +11,8 @@ public class Intake_Gear_In extends Command { public Intake_Gear_In() { - requires(Robot.intake_gear); - requires(Robot.pivot_gear); +// requires(Robot.intake_gear); +// requires(Robot.pivot_gear); } protected void initialize() { diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Off.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Off.java index b9ea45c..c2996f8 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Off.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Off.java @@ -9,34 +9,27 @@ public class Intake_Gear_Off extends Command { -public Intake_Gear_Off() { + public Intake_Gear_Off() { +// requires(Robot.intake_gear); + } - requires(Robot.intake_gear); -} - -protected void initialize() { - -} - -protected void execute() { + protected void initialize() { Robot.intake_gear.stop(); -} - - -protected boolean isFinished() { - - return(false); -} - -protected void end() { - - Robot.intake_gear.stop(); - -} - -protected void interrupted() { - - end(); -} + } + + protected void execute() { + } + + protected boolean isFinished() { + return(false); + } + + protected void end() { + Robot.intake_gear.stop(); + } + + protected void interrupted() { + end(); + } } diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java index 1352b79..f6d29ca 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java @@ -7,40 +7,29 @@ import edu.wpi.first.wpilibj.command.Command; -public class Intake_Gear_Out extends Command { - +public class Intake_Gear_Out extends Command { -public Intake_Gear_Out() { + public Intake_Gear_Out() { +// requires(Robot.intake_gear); + this.setTimeout(.1); + } - requires(Robot.intake_gear); - this.setTimeout(.1); -} - -protected void initialize() { - -} - -protected void execute() { - + protected void initialize() { Robot.intake_gear.moveMotor(Constants.GEAR_OUT); -} - - -protected boolean isFinished() { - - return(isTimedOut()); -// return(false); -} - -protected void end() { - - Robot.intake_gear.stop(); - -} - -protected void interrupted() { - - end(); -} - + } + + protected void execute() { + } + + protected boolean isFinished() { + return(isTimedOut()); + } + + protected void end() { + Robot.intake_gear.stop(); + } + + protected void interrupted() { + end(); + } } diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java index 438046d..e9ad31d 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java @@ -4,11 +4,10 @@ import org.usfirst.frc.team708.robot.Robot; import edu.wpi.first.wpilibj.command.Command; - public class Intake_Gear_Up extends Command { -public Intake_Gear_Up() { - requires(Robot.pivot_gear); + public Intake_Gear_Up() { +// requires(Robot.pivot_gear); } protected void initialize() { @@ -21,7 +20,6 @@ protected void execute() { Robot.pivot_gear.stop(); } - protected boolean isFinished() { if (Robot.pivot_gear.isFwdSwitch()) return(true); diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.java index efaaedd..86206bd 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.java @@ -1,57 +1,57 @@ -package org.usfirst.frc.team708.robot.commands.intake_gear; - -import org.usfirst.frc.team708.robot.Constants; -import org.usfirst.frc.team708.robot.OI; -import org.usfirst.frc.team708.robot.Robot; -import org.usfirst.frc.team708.robot.util.Gamepad; -import edu.wpi.first.wpilibj.command.Command; - - -public class ManualIntake_Gear extends Command { - - public ManualIntake_Gear() { - requires(Robot.intake_gear); - } - - - // Called just before this Command runs the first time - protected void initialize() { - - } - - // Called repeatedly when this Command is scheduled to run - protected void execute() { - - boolean L_Shoulderpressed = OI.driverGamepad.getButton(Gamepad.button_L_Shoulder); - - // LOADER_IN_BUTTON = Gamepad.Button_L_Shoulder; - // LOADER_OUT_BUTTON = Gamepad.shoulderAxisLeft; - -// if (L_Shoulderpressed == true){ -// Robot.intake_gear.moveMotor(Constants.GEAR_IN); -// } -// else if (OI.driverGamepad.getAxis(Gamepad.shoulderAxisLeft) != 0.0){ -// Robot.intake_gear.moveMotor(Constants.GEAR_DOWN); -// } -// else { -// Robot.intake_gear.moveMotor(Constants.GEAR_OFF); -// } - - } - - // Make this return true when this Command no longer needs to run execute() - protected boolean isFinished() { - return(false); - } - - // Called once after isFinished returns true - protected void end() { - Robot.intake_gear.stop(); - } - - // Called when another command which requires one or more of the same - // subsystems are scheduled to run - protected void interrupted() { - end(); - } -} +//package org.usfirst.frc.team708.robot.commands.intake_gear; +// +//import org.usfirst.frc.team708.robot.Constants; +//import org.usfirst.frc.team708.robot.OI; +//import org.usfirst.frc.team708.robot.Robot; +//import org.usfirst.frc.team708.robot.util.Gamepad; +//import edu.wpi.first.wpilibj.command.Command; +// +// +//public class ManualIntake_Gear extends Command { +// +// public ManualIntake_Gear() { +// requires(Robot.intake_gear); +// } +// +// +// // Called just before this Command runs the first time +// protected void initialize() { +// +// } +// +// // Called repeatedly when this Command is scheduled to run +// protected void execute() { +// +// boolean L_Shoulderpressed = OI.driverGamepad.getButton(Gamepad.button_L_Shoulder); +// +// // LOADER_IN_BUTTON = Gamepad.Button_L_Shoulder; +// // LOADER_OUT_BUTTON = Gamepad.shoulderAxisLeft; +// +//// if (L_Shoulderpressed == true){ +//// Robot.intake_gear.moveMotor(Constants.GEAR_IN); +//// } +//// else if (OI.driverGamepad.getAxis(Gamepad.shoulderAxisLeft) != 0.0){ +//// Robot.intake_gear.moveMotor(Constants.GEAR_DOWN); +//// } +//// else { +//// Robot.intake_gear.moveMotor(Constants.GEAR_OFF); +//// } +// +// } +// +// // Make this return true when this Command no longer needs to run execute() +// protected boolean isFinished() { +// return(false); +// } +// +// // Called once after isFinished returns true +// protected void end() { +// Robot.intake_gear.stop(); +// } +// +// // Called when another command which requires one or more of the same +// // subsystems are scheduled to run +// protected void interrupted() { +// end(); +// } +//} diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualPivot_Gear.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualPivot_Gear.java index 6ff36d0..9ff9551 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualPivot_Gear.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ManualPivot_Gear.java @@ -1,59 +1,57 @@ -package org.usfirst.frc.team708.robot.commands.intake_gear; - -import org.usfirst.frc.team708.robot.Constants; -import org.usfirst.frc.team708.robot.OI; -import org.usfirst.frc.team708.robot.Robot; -import org.usfirst.frc.team708.robot.util.Gamepad; -import edu.wpi.first.wpilibj.command.Command; - - -public class ManualPivot_Gear extends Command { - - public ManualPivot_Gear() { - requires(Robot.pivot_gear); - } - - - // Called just before this Command runs the first time - protected void initialize() { - - } - - // Called repeatedly when this Command is scheduled to run - protected void execute() { - - boolean B_Buttonpressed = OI.driverGamepad.getButton(Gamepad.button_B); - boolean A_Buttonpressed = OI.driverGamepad.getButton(Gamepad.button_A); - - // LOADER_IN_BUTTON = Gamepad.Button_L_Shoulder; - // LOADER_OUT_BUTTON = Gamepad.shoulderAxisLeft; - - - if (B_Buttonpressed == true){ - Robot.pivot_gear.moveMotor(Constants.INTAKE_FORWARD); - } - else if (A_Buttonpressed == true){ - Robot.pivot_gear.moveMotor(Constants.INTAKE_REVERSE); - } - else { - Robot.pivot_gear.moveMotor(Constants.INTAKE_OFF); - } - - } - - // Make this return true when this Command no longer needs to run execute() - protected boolean isFinished() { - return(false); - } - - // Called once after isFinished returns true - protected void end() { - Robot.pivot_gear.stop(); - } - - // Called when another command which requires one or more of the same - // subsystems are scheduled to run - protected void interrupted() { - end(); - } -} +//package org.usfirst.frc.team708.robot.commands.intake_gear; +// +//import org.usfirst.frc.team708.robot.Constants; +//import org.usfirst.frc.team708.robot.OI; +//import org.usfirst.frc.team708.robot.Robot; +//import org.usfirst.frc.team708.robot.util.Gamepad; +//import edu.wpi.first.wpilibj.command.Command; +// +// +//public class ManualPivot_Gear extends Command { +// +// public ManualPivot_Gear() { +// requires(Robot.pivot_gear); +// } +// +// +// // Called just before this Command runs the first time +// protected void initialize() { +// +// } +// +// // Called repeatedly when this Command is scheduled to run +// protected void execute() { +// +// boolean B_Buttonpressed = OI.driverGamepad.getButton(Gamepad.button_B); +// boolean A_Buttonpressed = OI.driverGamepad.getButton(Gamepad.button_A); +// +// // LOADER_IN_BUTTON = Gamepad.Button_L_Shoulder; +// // LOADER_OUT_BUTTON = Gamepad.shoulderAxisLeft; +// +// +// if (B_Buttonpressed == true){ +// Robot.pivot_gear.moveMotor(Constants.INTAKE_FORWARD); +// } +// else if (A_Buttonpressed == true){ +// Robot.pivot_gear.moveMotor(Constants.INTAKE_REVERSE); +// } +// else { +// Robot.pivot_gear.moveMotor(Constants.INTAKE_OFF); +// } +// +// } +// +// // Make this return true when this Command no longer needs to run execute() +// protected boolean isFinished() { +// return(false); +// } +// +// // Called once after isFinished returns true +// protected void end() { +// Robot.pivot_gear.stop(); +// } +// +// protected void interrupted() { +// end(); +// } +//} diff --git a/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java b/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java index f34b145..c327ce2 100644 --- a/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java +++ b/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java @@ -27,19 +27,22 @@ public class LED_out extends Command { static public byte count = 0x00; public LED_out() { - requires(Robot.led1); +// requires(Robot.led1); } // Called just before this Command runs the first time protected void initialize() { - } + count++; + if (count > Constants.SET_OFF) count = 0x00; + Robot.led1.send_to_led(count); + } // Called repeatedly when this Command is scheduled to run protected void execute() { - count++; - if (count > Constants.SET_OFF) count = 0x00; - Robot.led1.send_to_led(count); - +// count++; +// if (count > Constants.SET_OFF) count = 0x00; +// Robot.led1.send_to_led(count); + // if (count == 0x02) Robot.drivetrain.setGearLight(false); // if (count == 0x03) Robot.drivetrain.setBoilerLight(false); } diff --git a/src/org/usfirst/frc/team708/robot/commands/loader/LoaderOff.java b/src/org/usfirst/frc/team708/robot/commands/loader/LoaderOff.java index b376f96..9a04c2d 100644 --- a/src/org/usfirst/frc/team708/robot/commands/loader/LoaderOff.java +++ b/src/org/usfirst/frc/team708/robot/commands/loader/LoaderOff.java @@ -1,38 +1,38 @@ -package org.usfirst.frc.team708.robot.commands.loader; - -import org.usfirst.frc.team708.robot.Constants; -import org.usfirst.frc.team708.robot.OI; -import org.usfirst.frc.team708.robot.Robot; -import org.usfirst.frc.team708.robot.subsystems.Loader; -import org.usfirst.frc.team708.robot.util.Gamepad; - -import edu.wpi.first.wpilibj.command.Command; - -/** - * - */ -public class LoaderOff extends Command { - - public LoaderOff() { - requires(Robot.loader); - } - - - // Called just before this Command runs the first time - protected void initialize() { - - } - - // Called repeatedly when this Command is scheduled to run - protected void execute() { - Robot.loader.manualMove(Constants.LOADER_OFF); - } - - - @Override - protected boolean isFinished() { - // TODO Auto-generated method stub - return false; - } - -} \ No newline at end of file +//package org.usfirst.frc.team708.robot.commands.loader; +// +//import org.usfirst.frc.team708.robot.Constants; +//import org.usfirst.frc.team708.robot.OI; +//import org.usfirst.frc.team708.robot.Robot; +//import org.usfirst.frc.team708.robot.subsystems.Loader; +//import org.usfirst.frc.team708.robot.util.Gamepad; +// +//import edu.wpi.first.wpilibj.command.Command; +// +///** +// * +// */ +//public class LoaderOff extends Command { +// +// public LoaderOff() { +// requires(Robot.loader); +// } +// +// +// // Called just before this Command runs the first time +// protected void initialize() { +// +// } +// +// // Called repeatedly when this Command is scheduled to run +// protected void execute() { +// Robot.loader.manualMove(Constants.LOADER_OFF); +// } +// +// +// @Override +// protected boolean isFinished() { +// // TODO Auto-generated method stub +// return false; +// } +// +//} \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpin.java b/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpin.java index 7033b33..600cbe8 100644 --- a/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpin.java +++ b/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpin.java @@ -1,54 +1,54 @@ -package org.usfirst.frc.team708.robot.commands.loader; - -import org.usfirst.frc.team708.robot.Constants; -import org.usfirst.frc.team708.robot.OI; -import org.usfirst.frc.team708.robot.Robot; -import org.usfirst.frc.team708.robot.subsystems.Loader; -import org.usfirst.frc.team708.robot.util.Gamepad; - -import edu.wpi.first.wpilibj.command.Command; - -/** - * - */ -public class LoaderSpin extends Command { - - public LoaderSpin() { - requires(Robot.loader); - } - - - // Called just before this Command runs the first time - protected void initialize() { - } - - // Called repeatedly when this Command is scheduled to run - protected void execute() { - if (Robot.loader.spinForward()) - { - Robot.loader.manualMove(Constants.LOADER_MOTOR_FORWARD); - } - else - { - Robot.loader.manualMove(Constants.LOADER_MOTOR_REVERSE); - } - - } - - // Make this return true when this Command no longer needs to run execute() - protected boolean isFinished() { - return(true); - } - - // Called once after isFinished returns true - protected void end() { -// Robot.loader.stop(); //runs till you hit the off button - Robot.loader.toggleSpin(); - } - - // Called when another command which requires one or more of the same - // subsystems are scheduled to run - protected void interrupted() { - end(); - } -} \ No newline at end of file +//package org.usfirst.frc.team708.robot.commands.loader; +// +//import org.usfirst.frc.team708.robot.Constants; +//import org.usfirst.frc.team708.robot.OI; +//import org.usfirst.frc.team708.robot.Robot; +//import org.usfirst.frc.team708.robot.subsystems.Loader; +//import org.usfirst.frc.team708.robot.util.Gamepad; +// +//import edu.wpi.first.wpilibj.command.Command; +// +///** +// * +// */ +//public class LoaderSpin extends Command { +// +// public LoaderSpin() { +// requires(Robot.loader); +// } +// +// +// // Called just before this Command runs the first time +// protected void initialize() { +// } +// +// // Called repeatedly when this Command is scheduled to run +// protected void execute() { +// if (Robot.loader.spinForward()) +// { +// Robot.loader.manualMove(Constants.LOADER_MOTOR_FORWARD); +// } +// else +// { +// Robot.loader.manualMove(Constants.LOADER_MOTOR_REVERSE); +// } +// +// } +// +// // Make this return true when this Command no longer needs to run execute() +// protected boolean isFinished() { +// return(true); +// } +// +// // Called once after isFinished returns true +// protected void end() { +//// Robot.loader.stop(); //runs till you hit the off button +// Robot.loader.toggleSpin(); +// } +// +// // Called when another command which requires one or more of the same +// // subsystems are scheduled to run +// protected void interrupted() { +// end(); +// } +//} \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinIn.java b/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinIn.java index 438f00b..7e34837 100644 --- a/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinIn.java +++ b/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinIn.java @@ -1,49 +1,49 @@ -package org.usfirst.frc.team708.robot.commands.loader; - -import org.usfirst.frc.team708.robot.Constants; -import org.usfirst.frc.team708.robot.OI; -import org.usfirst.frc.team708.robot.Robot; -import org.usfirst.frc.team708.robot.subsystems.Loader; -import org.usfirst.frc.team708.robot.util.Gamepad; - -import edu.wpi.first.wpilibj.command.Command; - -/** - * - */ -public class LoaderSpinIn extends Command { - - - public LoaderSpinIn() { - - requires(Robot.loader); - - } - - - // Called just before this Command runs the first time - protected void initialize() { - - } - - // Called repeatedly when this Command is scheduled to run - protected void execute() { - Robot.loader.manualMove(Constants.LOADER_MOTOR_FORWARD); - } - - // Make this return true when this Command no longer needs to run execute() - protected boolean isFinished() { - return(false); - } - - // Called once after isFinished returns true - protected void end() { - Robot.loader.stop(); - } - - // Called when another command which requires one or more of the same - // subsystems are scheduled to run - protected void interrupted() { - end(); - } -} \ No newline at end of file +//package org.usfirst.frc.team708.robot.commands.loader; +// +//import org.usfirst.frc.team708.robot.Constants; +//import org.usfirst.frc.team708.robot.OI; +//import org.usfirst.frc.team708.robot.Robot; +//import org.usfirst.frc.team708.robot.subsystems.Loader; +//import org.usfirst.frc.team708.robot.util.Gamepad; +// +//import edu.wpi.first.wpilibj.command.Command; +// +///** +// * +// */ +//public class LoaderSpinIn extends Command { +// +// +// public LoaderSpinIn() { +// +// requires(Robot.loader); +// +// } +// +// +// // Called just before this Command runs the first time +// protected void initialize() { +// +// } +// +// // Called repeatedly when this Command is scheduled to run +// protected void execute() { +// Robot.loader.manualMove(Constants.LOADER_MOTOR_FORWARD); +// } +// +// // Make this return true when this Command no longer needs to run execute() +// protected boolean isFinished() { +// return(false); +// } +// +// // Called once after isFinished returns true +// protected void end() { +// Robot.loader.stop(); +// } +// +// // Called when another command which requires one or more of the same +// // subsystems are scheduled to run +// protected void interrupted() { +// end(); +// } +//} \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.java b/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.java index 8580843..a761e32 100644 --- a/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.java +++ b/src/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.java @@ -1,49 +1,49 @@ -package org.usfirst.frc.team708.robot.commands.loader; - -import org.usfirst.frc.team708.robot.Constants; -import org.usfirst.frc.team708.robot.OI; -import org.usfirst.frc.team708.robot.Robot; -import org.usfirst.frc.team708.robot.subsystems.Loader; -import org.usfirst.frc.team708.robot.util.Gamepad; - -import edu.wpi.first.wpilibj.command.Command; - -/** - * - */ -public class LoaderSpinOut extends Command { - - - public LoaderSpinOut() { - requires(Robot.loader); - } - - - // Called just before this Command runs the first time - protected void initialize() { - - } - - // Called repeatedly when this Command is scheduled to run - protected void execute() { - Robot.loader.manualMove(Constants.LOADER_MOTOR_REVERSE); - - - } - - // Make this return true when this Command no longer needs to run execute() - protected boolean isFinished() { - return(false); - } - - // Called once after isFinished returns true - protected void end() { - Robot.loader.stop(); - } - - // Called when another command which requires one or more of the same - // subsystems are scheduled to run - protected void interrupted() { - end(); - } -} \ No newline at end of file +//package org.usfirst.frc.team708.robot.commands.loader; +// +//import org.usfirst.frc.team708.robot.Constants; +//import org.usfirst.frc.team708.robot.OI; +//import org.usfirst.frc.team708.robot.Robot; +//import org.usfirst.frc.team708.robot.subsystems.Loader; +//import org.usfirst.frc.team708.robot.util.Gamepad; +// +//import edu.wpi.first.wpilibj.command.Command; +// +///** +// * +// */ +//public class LoaderSpinOut extends Command { +// +// +// public LoaderSpinOut() { +// requires(Robot.loader); +// } +// +// +// // Called just before this Command runs the first time +// protected void initialize() { +// +// } +// +// // Called repeatedly when this Command is scheduled to run +// protected void execute() { +// Robot.loader.manualMove(Constants.LOADER_MOTOR_REVERSE); +// +// +// } +// +// // Make this return true when this Command no longer needs to run execute() +// protected boolean isFinished() { +// return(false); +// } +// +// // Called once after isFinished returns true +// protected void end() { +// Robot.loader.stop(); +// } +// +// // Called when another command which requires one or more of the same +// // subsystems are scheduled to run +// protected void interrupted() { +// end(); +// } +//} \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.java b/src/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.java index 63506f6..2a9eefe 100644 --- a/src/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.java +++ b/src/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.java @@ -1,61 +1,61 @@ -package org.usfirst.frc.team708.robot.commands.loader; - -import org.usfirst.frc.team708.robot.Constants; -import org.usfirst.frc.team708.robot.OI; -import org.usfirst.frc.team708.robot.Robot; -import org.usfirst.frc.team708.robot.util.Gamepad; - -import edu.wpi.first.wpilibj.command.Command; - -/** - * - */ -public class ManualLoader extends Command { - - - public ManualLoader() { - requires(Robot.loader); - } - - - // Called just before this Command runs the first time - protected void initialize() { - } - - // Called repeatedly when this Command is scheduled to run - protected void execute() { - - boolean Apressed = OI.operatorGamepad.getButton(Gamepad.button_A); - boolean Xpressed = OI.operatorGamepad.getButton(Gamepad.button_X); - boolean Ypressed = OI.operatorGamepad.getButton(Gamepad.button_Y); - - if (Ypressed == true){ - Robot.loader.manualMove(Constants.MOTOR_FORWARD); - } - else - if (Apressed == true){ - Robot.loader.manualMove(Constants.MOTOR_REVERSE); - } - else - if (Xpressed == true){ - Robot.loader.manualMove(Constants.MOTOR_OFF); - } - - } - - // Make this return true when this Command no longer needs to run execute() - protected boolean isFinished() { - return(false); - } - - // Called once after isFinished returns true - protected void end() { - Robot.loader.stop(); - } - - // Called when another command which requires one or more of the same - // subsystems are scheduled to run - protected void interrupted() { - end(); - } -} \ No newline at end of file +//package org.usfirst.frc.team708.robot.commands.loader; +// +//import org.usfirst.frc.team708.robot.Constants; +//import org.usfirst.frc.team708.robot.OI; +//import org.usfirst.frc.team708.robot.Robot; +//import org.usfirst.frc.team708.robot.util.Gamepad; +// +//import edu.wpi.first.wpilibj.command.Command; +// +///** +// * +// */ +//public class ManualLoader extends Command { +// +// +// public ManualLoader() { +// requires(Robot.loader); +// } +// +// +// // Called just before this Command runs the first time +// protected void initialize() { +// } +// +// // Called repeatedly when this Command is scheduled to run +// protected void execute() { +// +// boolean Apressed = OI.operatorGamepad.getButton(Gamepad.button_A); +// boolean Xpressed = OI.operatorGamepad.getButton(Gamepad.button_X); +// boolean Ypressed = OI.operatorGamepad.getButton(Gamepad.button_Y); +// +// if (Ypressed == true){ +// Robot.loader.manualMove(Constants.MOTOR_FORWARD); +// } +// else +// if (Apressed == true){ +// Robot.loader.manualMove(Constants.MOTOR_REVERSE); +// } +// else +// if (Xpressed == true){ +// Robot.loader.manualMove(Constants.MOTOR_OFF); +// } +// +// } +// +// // Make this return true when this Command no longer needs to run execute() +// protected boolean isFinished() { +// return(false); +// } +// +// // Called once after isFinished returns true +// protected void end() { +// Robot.loader.stop(); +// } +// +// // Called when another command which requires one or more of the same +// // subsystems are scheduled to run +// protected void interrupted() { +// end(); +// } +//} \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/HoodAdjust.java b/src/org/usfirst/frc/team708/robot/commands/shooter/HoodAdjust.java index f4719e3..df1ca26 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/HoodAdjust.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/HoodAdjust.java @@ -13,27 +13,25 @@ import edu.wpi.first.wpilibj.command.Command; import edu.wpi.first.wpilibj.command.WaitCommand; -/** - * - */ public class HoodAdjust extends Command { public HoodAdjust() { - requires(Robot.shooter); - requires(Robot.feeder); - requires(Robot.drivetrain); +// requires(Robot.shooter); +// requires(Robot.feeder); +// requires(Robot.drivetrain); } // Called just before this Command runs the first time protected void initialize() { +// double hoodAngle = OI.operatorGamepad.getAxis(Gamepad.rightStick_Y); +// Robot.shooter.hoodAdjust(hoodAngle); } // Called repeatedly when this Command is scheduled to run protected void execute() { - double hoodAngle = OI.operatorGamepad.getAxis(Gamepad.rightStick_Y); //Gets Input from operator's controller - - Robot.shooter.hoodAdjust(hoodAngle); //Defines move speed from the operator's controller - } + double hoodAngle = OI.operatorGamepad.getAxis(Gamepad.rightStick_Y); + Robot.shooter.hoodAdjust(hoodAngle); + } // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java b/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java index 4d5a779..66b63a2 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java @@ -20,15 +20,17 @@ public class ManualShoot extends Command { public ManualShoot() { - requires(Robot.feeder); - requires(Robot.intake_ball); - requires(Robot.drivetrain); - requires(Robot.shooter); +// requires(Robot.feeder); +// requires(Robot.intake_ball); +// requires(Robot.drivetrain); +// requires(Robot.shooter); } // Called just before this Command runs the first time protected void initialize() { - Robot.shooter.setFgain(Constants.SHOOTER_F); + Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_SPEED_HIGH); + +// Robot.shooter.setFgain(Constants.SHOOTER_F); } // Called repeatedly when this Command is scheduled to run @@ -36,7 +38,7 @@ protected void execute() { // boolean L_Shoulderpressed = OI.operatorGamepad.getButton(Gamepad.button_L_Shoulder); // if (L_Shoulderpressed == true){ - Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_SPEED_HIGH); +// Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_SPEED_HIGH); // } // else // Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_OFF); diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java index f8eda14..4b6ac7d 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java @@ -13,26 +13,22 @@ import edu.wpi.first.wpilibj.command.Command; import edu.wpi.first.wpilibj.command.WaitCommand; -/** - * - */ public class MoveHoodHigh extends Command { public MoveHoodHigh() { - requires(Robot.shooter); - requires(Robot.feeder); - requires(Robot.drivetrain); +// requires(Robot.shooter); +// requires(Robot.feeder); +// requires(Robot.drivetrain); } // Called just before this Command runs the first time protected void initialize() { - + Robot.shooter.moveHood(Constants.HOOD_GEAR); // 2000 is upper bounds } - // Called repeatedly when this Command is scheduled to run + // Called repeatedly 50 times/sec protected void execute() { - Robot.shooter.moveHood(Constants.HOOD_GEAR); // 2000 is upper bounds } // Make this return true when this Command no longer needs to run execute() @@ -40,13 +36,10 @@ protected boolean isFinished() { return false; } - // Called once after isFinished returns true protected void end() { Robot.shooter.stop(); } - // Called when another command which requires one or more of the same - // subsystems are scheduled to run protected void interrupted() { end(); } diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java index c3bd039..0b886b9 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java @@ -13,26 +13,22 @@ import edu.wpi.first.wpilibj.command.Command; import edu.wpi.first.wpilibj.command.WaitCommand; -/** - * - */ public class MoveHoodLow extends Command { public MoveHoodLow() { - requires(Robot.shooter); - requires(Robot.feeder); - requires(Robot.drivetrain); +// requires(Robot.shooter); +// requires(Robot.feeder); +// requires(Robot.drivetrain); } // Called just before this Command runs the first time protected void initialize() { - + Robot.shooter.moveHood(Constants.HOOD_BUMBER); // 25 is the lower bounds } - // Called repeatedly when this Command is scheduled to run + // Called repeatedly 50 times/sec when this Command is scheduled to run protected void execute() { - Robot.shooter.moveHood(Constants.HOOD_BUMBER); // 25 is the lower bounds } // Make this return true when this Command no longer needs to run execute() @@ -40,13 +36,10 @@ protected boolean isFinished() { return false; } - // Called once after isFinished returns true protected void end() { Robot.shooter.stop(); } - // Called when another command which requires one or more of the same - // subsystems are scheduled to run protected void interrupted() { end(); } diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java index 97deec3..054c511 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java @@ -20,41 +20,39 @@ public class SpinShooter extends Command { public SpinShooter() { - requires(Robot.shooter); - requires(Robot.drivetrain); +// requires(Robot.shooter); +// requires(Robot.drivetrain); } // Called just before this Command runs the first time protected void initialize() { - } - - // Called repeatedly when this Command is scheduled to run - protected void execute() { - Robot.shooter.setFgain(Constants.SHOOTER_F); +// Robot.shooter.setFgain(Constants.SHOOTER_F); if (Robot.drivetrain.getSonarDistance() > 60) { -// Robot.shooter.moveHood(Constants.HOOD_GEAR); + Robot.shooter.moveHood(Constants.HOOD_GEAR); Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_HIGH); } else { Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_LOW); -// Robot.shooter.moveHood(Constants.HOOD_BUMBER); + Robot.shooter.moveHood(Constants.HOOD_BUMBER); } } + // Called repeatedly 50 times/sec when this Command is scheduled to run + protected void execute() { + + } + // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { return false; } - // Called once after isFinished returns true protected void end() { Robot.shooter.stop(); } - // Called when another command which requires one or more of the same - // subsystems are scheduled to run protected void interrupted() { end(); } diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.java b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.java index 0c82228..6ed5325 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.java @@ -20,16 +20,16 @@ public class SpinShooterBack extends Command { public SpinShooterBack() { - requires(Robot.shooter); +// requires(Robot.shooter); } // Called just before this Command runs the first time protected void initialize() { + Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_BACKWARD); } // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_BACKWARD); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Climber.java b/src/org/usfirst/frc/team708/robot/subsystems/Climber.java index 87f6ce2..80dd2e5 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Climber.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Climber.java @@ -28,14 +28,11 @@ public class Climber extends Subsystem { public Climber() { // Initializes the motor for the Climber climberMotor = new CANTalon (RobotMap.climberMotor); - } public void initDefaultCommand() { - // Set the default command for a subsystem here. - // setDefaultCommand(new ManualMoveClimber()); } - //Sets the motor speed to the variable speed + public void manualMove(double speed) { climberMotor.set(speed); } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java index 4da3d47..27b9890 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java @@ -34,12 +34,12 @@ public class Drivetrain extends PIDSubsystem { private ADXRS450_Gyro gyro; - private int count =0; + private int count = 0; // Variables specific for drivetrain PID loop - private boolean usePID = false; - private double moveSpeed = 0.0; - private double pidOutput = 0.0; + private boolean usePID = false; + private double moveSpeed = 0.0; + private double pidOutput = 0.0; private CANTalon leftMaster, leftSlave, rightMaster, rightSlave; // Motor Controllers @@ -54,10 +54,10 @@ public class Drivetrain extends PIDSubsystem { // private IRSensor drivetrainIRSensor; // IR Sensor for <=25inches private UltrasonicSensor drivetrainUltrasonicSensor; // Sonar used for <=21feet // private DigitalInput opticalSensor; - private DigitalInput gearSensor; +// private DigitalInput gearSensor; - public int sonarOverride = 0; //0 = default, 1 = high, 2 = low; Used for overriding sonar - private boolean brake = true; // Whether the talons should be in coast or brake mode + public int sonarOverride = 0; //0 = default, 1 = high, 2 = low; Used for overriding sonar + private boolean brake = true; // Whether the talons should be in coast or brake mode private boolean nobrake = false; // Whether the talons should be in coast or brake mode public static Solenoid pwr0; @@ -86,36 +86,33 @@ public Drivetrain() { setupMasterSlave(); // Sets up master and slave // accelerometer = new BuiltInAccelerometer(); // Initializes the accelerometer from the roboRIO + encoder = new Encoder(RobotMap.drivetrainEncoderARt, RobotMap.drivetrainEncoderBRt, Constants.DRIVETRAIN_USE_LEFT_ENCODER); // encoder = new Encoder(leftMaster.getPinStateQuadA(), leftMaster.getPinStateQuadB(), Constants.DRIVETRAIN_USE_LEFT_ENCODER); encoder2 = new Encoder(RobotMap.drivetrainEncoderALeft, RobotMap.drivetrainEncoderBLeft, !Constants.DRIVETRAIN_USE_LEFT_ENCODER); // encoder2 = new Encoder(rightMaster.getPinStateQuadA(), rightMaster.getPinStateQuadB(), !Constants.DRIVETRAIN_USE_LEFT_ENCODER); -// // Initializes the encoder distancePerPulse = (Constants.DRIVETRAIN_WHEEL_DIAMETER * Math.PI) / (Constants.DRIVETRAIN_ENCODER_PULSES_PER_REV); + leftMaster.configEncoderCodesPerRev(Constants.DRIVETRAIN_ENCODER_PULSES_PER_REV); rightMaster.configEncoderCodesPerRev(Constants.DRIVETRAIN_ENCODER_PULSES_PER_REV); - // Sets the distance per pulse of the encoder to read distance properly - encoder.setDistancePerPulse(distancePerPulse); - encoder.reset(); - -// Resets the encoder so that it starts with a 0.0 value + encoder.setDistancePerPulse(distancePerPulse); // Sets the distance per pulse of the encoder to read distance properly + encoder.reset(); // Resets the encoder so that it starts with a 0.0 value encoder2.setDistancePerPulse(distancePerPulse); - encoder2.reset(); // Resets the encoder so that it starts with a 0.0 value + encoder2.reset(); leftSlave.enableBrakeMode(brake); rightMaster.enableBrakeMode(brake); rightSlave.enableBrakeMode(brake); -// drivetrainIRSensor = new IRSensor(RobotMap.gearIRSensor, IRSensor.GP2Y0A21YK0F); - drivetrainUltrasonicSensor = new UltrasonicSensor(RobotMap.dtSonar, UltrasonicSensor.MB1010); -// drivetrainUltrasonicSensor = new UltrasonicSensor(RobotMap.dtSonar, UltrasonicSensor.MB1340); +// drivetrainIRSensor = new IRSensor(RobotMap.gearIRSensor, IRSensor.GP2Y0A21YK0F); + drivetrainUltrasonicSensor = new UltrasonicSensor(RobotMap.dtSonar, UltrasonicSensor.MB1010); - gearSensor = new DigitalInput(RobotMap.gearSensorSwitch); +// gearSensor = new DigitalInput(RobotMap.gearSensorSwitch); pwr0 = new Solenoid(RobotMap.PWR0); pwr1 = new Solenoid(RobotMap.PWR1); @@ -128,9 +125,10 @@ public Drivetrain() { pwr1.set(true); pwr2.set(true); pwr3.set(true); - gearLight.set(true); - boilerLight.set(true); - } + + setGearLight(true); + setBoilerLight(true); +} /** @@ -227,10 +225,10 @@ public void resetGyro() { gyro.reset(); } - public boolean hasGear() { - return gearSensor.get(); - - } +// public boolean hasGear() { +// return gearSensor.get(); +// +// } public double rotateByGyro(double targetAngle, double tolerance) { double difference = getAngle() - targetAngle; @@ -396,7 +394,6 @@ public void sendToDashboard() { // SmartDashboard.putNumber("DT Lft Slave", leftSlave.getTemperature()); } SmartDashboard.putNumber("AllianceColor", Robot.allianceColor); - SmartDashboard.putBoolean("has gear", hasGear()); SmartDashboard.putNumber("Gyro angle", ( (int)gyro.getAngle())); // Gyro angle SmartDashboard.putNumber("DT Sonar Distance", getSonarDistance()); // Sonar distance reading SmartDashboard.putNumber("DT Encoder 1 Distance", encoder.getDistance()); // Encoder reading diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Hanger.java b/src/org/usfirst/frc/team708/robot/subsystems/Hanger.java deleted file mode 100644 index 63ef20a..0000000 --- a/src/org/usfirst/frc/team708/robot/subsystems/Hanger.java +++ /dev/null @@ -1,44 +0,0 @@ -package org.usfirst.frc.team708.robot.subsystems; - - -import org.usfirst.frc.team708.robot.Constants; -//import org.usfirst.frc.team708.robot.RobotMap; -//import edu.wpi.first.wpilibj.DigitalInput; -//import edu.wpi.first.wpilibj.Encoder; -//import edu.wpi.first.wpilibj.Talon; -import edu.wpi.first.wpilibj.command.Subsystem; -//import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; - -/** - * - */ -public class Hanger extends Subsystem { - - - - /** - * Constructor - */ - public Hanger() { - - - - } - - public void initDefaultCommand() { - // Set the default command for a subsystem here. - - } - - /** - * Sends data to the Smart Dashboard - */ - public void sendToDashboard() { - - - if (Constants.DEBUG) { - - } - } -} - diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.java b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.java index 719f766..b938c68 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.java @@ -17,38 +17,27 @@ public class Intake_Ball extends Subsystem { private CANTalon intakeMotor; - - //I'm trying to link the right motor to the intake code here + public Intake_Ball() { - - intakeMotor = new CANTalon (RobotMap.intakeMotorBall); - + intakeMotor = new CANTalon (RobotMap.intakeMotorBall); } public void initDefaultCommand() { - } //I believe this sets the speed of the motor public void moveMotor(double speed) { - intakeMotor.set(speed); } //I believe this stops the motor public void stop(){ - intakeMotor.set(Constants.INTAKE_OFF); - } - - /** - * Sends data about the subsystem to the Smart Dashboard - */ - public void sendToDashboard() { + +//Sends data about the subsystem to the Smart Dashboard + public void sendToDashboard() { if (Constants.DEBUG) { } } - - } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java index 318a138..fac8efb 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java @@ -7,6 +7,7 @@ import com.ctre.CANTalon; import com.ctre.CANTalon.FeedbackDevice; +import edu.wpi.first.wpilibj.DigitalInput; import edu.wpi.first.wpilibj.command.Subsystem; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; @@ -18,11 +19,13 @@ public class Intake_Gear extends Subsystem { - private CANTalon intakeMotor; + private CANTalon intakeMotor; + private DigitalInput gearSensor; //I'm trying to link the right motor to the intake code here public Intake_Gear() { intakeMotor = new CANTalon (RobotMap.intakeMotorGear); + gearSensor = new DigitalInput(RobotMap.gearSensorSwitch); } public void initDefaultCommand() { @@ -34,16 +37,16 @@ public void moveMotor(double speed) { } public boolean hasGear() { -// return ((Robot.drivetrain.getIRDistance() > 0) && (Robot.drivetrain.getIRDistance() < Constants.IR_HAS_GEAR_DISTANCE)); - if (Robot.drivetrain.hasGear()) + if (gearSensor.get()) { Robot.led1.send_to_led(Constants.SET_HAS_GEAR_TARGETING); - else - Robot.led1.send_to_led(Constants.SET_ALLIANCE_BLUE); - - return (Robot.drivetrain.hasGear()); + return (true); + } + else { + Robot.led1.send_to_led(Robot.ledAllianceColor); + return (false); + } } - //I believe this stops the motor public void stop(){ intakeMotor.set(Constants.INTAKE_OFF); } @@ -53,13 +56,8 @@ public void stop(){ * Sends data about the subsystem to the Smart Dashboard */ public void sendToDashboard() { -// if (Robot.drivetrain.hasGear()) -// Robot.led1.send_to_led(Constants.SET_HAS_GEAR); -// else -// Robot.led1.send_to_led(Constants.SET_ALLIANCE_BLUE); - if (Constants.DEBUG) { - + SmartDashboard.putBoolean("has gear", hasGear()); } } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/LED.java b/src/org/usfirst/frc/team708/robot/subsystems/LED.java index 80aef72..ba939e3 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/LED.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/LED.java @@ -43,16 +43,15 @@ public void send_to_led(byte command){ msg[0] = command; led_out.write(msg, 1); led_out.flush(); - } public void sendToDashboard() { - SmartDashboard.putNumber("LED code sent", msg[0]); + if (Constants.DEBUG) { + SmartDashboard.putNumber("LED code sent", msg[0]); + } } public void initDefaultCommand() { - if (Constants.DEBUG) { - } } } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Loader.java b/src/org/usfirst/frc/team708/robot/subsystems/Loader.java index 43b465d..b05b9df 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Loader.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Loader.java @@ -1,59 +1,59 @@ -package org.usfirst.frc.team708.robot.subsystems; - - -import org.usfirst.frc.team708.robot.Constants; -import org.usfirst.frc.team708.robot.RobotMap; -import org.usfirst.frc.team708.robot.commands.shooter.SpinShooter; -import org.usfirst.frc.team708.robot.OI; -import org.usfirst.frc.team708.robot.commands.drivetrain.JoystickDrive; -import org.usfirst.frc.team708.robot.commands.visionProcessor.SonarOverride; - -import com.ctre.CANTalon; -import com.ctre.CANTalon.FeedbackDevice; -import com.ctre.CANTalon.TalonControlMode; -import edu.wpi.first.wpilibj.command.Subsystem; - -import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; - -/** - * Leaders - * - */ -public class Loader extends Subsystem { - - private CANTalon loadMotor; - private boolean spinforward; - - /** - * Constructor - */ - public Loader() { - loadMotor = new CANTalon(RobotMap.loaderMotor); //initializes the loading motor - spinforward = false; - } - - public void initDefaultCommand() { - } - - public void manualMove(double speed){ - loadMotor.set(speed); - } - - public void stop(){ - loadMotor.set(Constants.MOTOR_OFF); - } - - public boolean toggleSpin() { - spinforward = !spinforward; - return(spinforward); - } - - public boolean spinForward() { - return(spinforward); - } - - public void sendToDashboard() { - if (Constants.DEBUG) { - } - } -} \ No newline at end of file +//package org.usfirst.frc.team708.robot.subsystems; +// +// +//import org.usfirst.frc.team708.robot.Constants; +//import org.usfirst.frc.team708.robot.RobotMap; +//import org.usfirst.frc.team708.robot.commands.shooter.SpinShooter; +//import org.usfirst.frc.team708.robot.OI; +//import org.usfirst.frc.team708.robot.commands.drivetrain.JoystickDrive; +//import org.usfirst.frc.team708.robot.commands.visionProcessor.SonarOverride; +// +//import com.ctre.CANTalon; +//import com.ctre.CANTalon.FeedbackDevice; +//import com.ctre.CANTalon.TalonControlMode; +//import edu.wpi.first.wpilibj.command.Subsystem; +// +//import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; +// +///** +// * Leaders +// * +// */ +//public class Loader extends Subsystem { +// +// private CANTalon loadMotor; +// private boolean spinforward; +// +// /** +// * Constructor +// */ +// public Loader() { +// loadMotor = new CANTalon(RobotMap.loaderMotor); //initializes the loading motor +// spinforward = false; +// } +// +// public void initDefaultCommand() { +// } +// +// public void manualMove(double speed){ +// loadMotor.set(speed); +// } +// +// public void stop(){ +// loadMotor.set(Constants.MOTOR_OFF); +// } +// +// public boolean toggleSpin() { +// spinforward = !spinforward; +// return(spinforward); +// } +// +// public boolean spinForward() { +// return(spinforward); +// } +// +// public void sendToDashboard() { +// if (Constants.DEBUG) { +// } +// } +//} \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java index e8a6f3c..4c994a0 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java @@ -28,7 +28,6 @@ public Pivot_Gear() { // pivotMotor.reverseSensor(true); pivotMotor.setFeedbackDevice(FeedbackDevice.QuadEncoder); pivotMotor.configEncoderCodesPerRev(Constants.PIVOT_GEAR_ENCODER_COUNT); -// pivotMotor.reset(); } public void initDefaultCommand() { @@ -52,15 +51,9 @@ public void stop(){ pivotMotor.set(Constants.INTAKE_OFF); } - /** - * Sends data about the subsystem to the Smart Dashboard - */ public void sendToDashboard() { if (Constants.DEBUG) { -// SmartDashboard.putBoolean("Pivot forward switch", pivotMotor.isFwdLimitSwitchClosed()); -// SmartDashboard.putBoolean("Pivot reverse switch", pivotMotor.isRevLimitSwitchClosed()); SmartDashboard.putNumber("Pivot encoder", pivotMotor.getPosition()); -// SmartDashboard.putNumber("Pivot encoder", pivotMotor.); } } } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java index 6590d74..7d51091 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java @@ -24,9 +24,6 @@ import edu.wpi.first.wpilibj.command.Subsystem; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; -/** - * - */ public class Shooter extends Subsystem { // Put methods for controlling this subsystem here. Call these // from Commands. @@ -72,9 +69,7 @@ public void initDefaultCommand() { } public void manualSpeed(double speed) { -// shooter.changeControlMode(TalonControlMode.Speed); shooter.changeControlMode(TalonControlMode.PercentVbus); - shooter.set(speed); } @@ -83,21 +78,15 @@ public void manualRPM(double rpm) { shooter.set(rpm); } - public void setFgain(double F){ +// public void setFgain(double F){ // shooter.setF(F); - } +// } public void stop(){ -// shooter.changeControlMode(TalonControlMode.PercentVbus); shooter.set(Constants.MOTOR_OFF); } public void moveHood(int angle) { - - if (Constants.DEBUG) { - SmartDashboard.putNumber("Servo passed in: ", angle); - SmartDashboard.putNumber("Servo Raw", hood.getRaw()); - } hoodLocation = angle; hood.setRaw(angle); } @@ -108,11 +97,6 @@ public void hoodAdjust(double angle) { else if ((angle < 0.0) && (hoodLocation>Constants.HOOD_MIN)) hoodLocation-=Constants.HOOD_CALIBRATION; moveHood(hoodLocation); - if (Constants.DEBUG) { - SmartDashboard.putNumber("Servo angle",hoodLocation); - SmartDashboard.putNumber("Servo joystick value", angle); - } - } /** * Sends data to the Smart Dashboard @@ -123,6 +107,8 @@ public void sendToDashboard() { SmartDashboard.putNumber("Encoder Position", shooter.getEncPosition()); SmartDashboard.putNumber("Encoder Speed", shooter.getSpeed()); SmartDashboard.putNumber("Encoder Velocity", shooter.getEncVelocity()); + SmartDashboard.putNumber("Servo Location", hoodLocation); + } } From 1ea6ca096eb27244647ea6ea7093facc5f93cf93 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Wed, 22 Feb 2017 19:53:13 -0500 Subject: [PATCH 32/69] after vision merge --- .../frc/team708/robot/AutoConstants.class | Bin 1766 -> 1979 bytes .../usfirst/frc/team708/robot/Constants.class | Bin 3219 -> 3308 bytes build/org/usfirst/frc/team708/robot/OI.class | Bin 3915 -> 3882 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 6737 -> 6908 bytes .../usfirst/frc/team708/robot/RobotMap.class | Bin 1356 -> 1321 bytes .../AllianceSelection/BlueAlliance.class | Bin 1048 -> 1089 bytes .../AllianceSelection/RedAlliance.class | Bin 1045 -> 1086 bytes .../robot/commands/Climber/ClimbDown.class | Bin 1108 -> 1029 bytes .../robot/commands/Climber/ClimbUp.class | Bin 1091 -> 1012 bytes .../commands/Climber/ManualMoveClimber.class | Bin 1374 -> 1295 bytes .../drivetrain/DriveToShooterLocation.class | Bin 2059 -> 0 bytes .../commands/drivetrain/JoystickDrive.class | Bin 1402 -> 1236 bytes .../drivetrain/RotateAndDriveToBoiler.class | Bin 1919 -> 1997 bytes .../drivetrain/RotateAndDriveToGear.class | Bin 1925 -> 0 bytes .../drivetrain/RotateAndDriveToLift.class | Bin 1898 -> 1959 bytes .../robot/commands/feeder/FeederOff.class | Bin 1092 -> 1013 bytes .../robot/commands/feeder/ManualFeeder.class | Bin 1473 -> 1209 bytes .../robot/commands/feeder/SpinFeeder.class | Bin 1383 -> 1203 bytes .../commands/feeder/SpinFeederBack.class | Bin 1118 -> 1039 bytes .../commands/intake_ball/Intake_Ball_In.class | Bin 1131 -> 1052 bytes .../intake_ball/Intake_Ball_Out.class | Bin 1383 -> 1066 bytes .../intake_ball/ManualIntake_Ball.class | Bin 1428 -> 1428 bytes .../commands/intake_gear/GearAdjust.class | Bin 1508 -> 1422 bytes .../commands/intake_gear/GearIntake.class | Bin 1640 -> 1561 bytes .../intake_gear/Intake_Gear_Down.class | Bin 1221 -> 1142 bytes .../commands/intake_gear/Intake_Gear_In.class | Bin 1392 -> 1302 bytes .../intake_gear/Intake_Gear_Off.class | Bin 1059 -> 980 bytes .../intake_gear/Intake_Gear_Out.class | Bin 1214 -> 1135 bytes .../commands/intake_gear/Intake_Gear_Up.class | Bin 1243 -> 1164 bytes .../intake_gear/ManualIntake_Gear.class | Bin 1289 -> 0 bytes .../intake_gear/ManualPivot_Gear.class | Bin 1494 -> 0 bytes .../robot/commands/led_out/LED_out.class | Bin 1194 -> 1069 bytes .../robot/commands/loader/LoaderOff.class | Bin 913 -> 0 bytes .../robot/commands/loader/LoaderSpin.class | Bin 1190 -> 0 bytes .../robot/commands/loader/LoaderSpinIn.class | Bin 1101 -> 0 bytes .../robot/commands/loader/LoaderSpinOut.class | Bin 1115 -> 0 bytes .../robot/commands/loader/ManualLoader.class | Bin 1492 -> 0 bytes .../robot/commands/shooter/HoodAdjust.class | Bin 1453 -> 1175 bytes .../robot/commands/shooter/ManualShoot.class | Bin 1422 -> 1036 bytes .../robot/commands/shooter/MoveHoodHigh.class | Bin 1278 -> 1000 bytes .../robot/commands/shooter/MoveHoodLow.class | Bin 1275 -> 997 bytes .../robot/commands/shooter/SpinShooter.class | Bin 1415 -> 1336 bytes .../commands/shooter/SpinShooterBack.class | Bin 1127 -> 1048 bytes .../visionProcessor/GripPipelineBoiler.class | Bin 5930 -> 6611 bytes .../visionProcessor/GripPipelineLift.class | Bin 5952 -> 6578 bytes .../team708/robot/subsystems/Climber.class | Bin 909 -> 909 bytes .../team708/robot/subsystems/Drivetrain.class | Bin 7469 -> 7226 bytes .../frc/team708/robot/subsystems/Hanger.class | Bin 550 -> 0 bytes .../robot/subsystems/Intake_Ball.class | Bin 922 -> 922 bytes .../robot/subsystems/Intake_Gear.class | Bin 1400 -> 1577 bytes .../frc/team708/robot/subsystems/LED.class | Bin 1961 -> 1993 bytes .../frc/team708/robot/subsystems/Loader.class | Bin 1171 -> 0 bytes .../team708/robot/subsystems/Pivot_Gear.class | Bin 1642 -> 1642 bytes .../team708/robot/subsystems/Shooter.class | Bin 3037 -> 2864 bytes .../robot/subsystems/VisionBoiler.class | Bin 8927 -> 8831 bytes .../team708/robot/subsystems/VisionGear.class | Bin 8129 -> 0 bytes .../team708/robot/subsystems/VisionLift.class | Bin 8127 -> 8468 bytes .../frc/team708/robot/AutoConstants.java | 29 +- .../usfirst/frc/team708/robot/Constants.java | 11 +- src/org/usfirst/frc/team708/robot/Robot.java | 17 +- .../usfirst/frc/team708/robot/RobotMap.java | 2 +- .../drivetrain/DriveToShooterLocation.java | 192 ++-- .../drivetrain/RotateAndDriveToBoiler.java | 30 +- .../drivetrain/RotateAndDriveToGear.java | 166 ++-- .../drivetrain/RotateAndDriveToLift.java | 26 +- .../robot/commands/led_out/LED_out.java | 8 +- .../robot/commands/shooter/HoodAdjust.java | 2 +- .../robot/commands/shooter/MoveHoodHigh.java | 6 +- .../robot/commands/shooter/MoveHoodLow.java | 6 +- .../visionProcessor/GripPipelineBoiler.java | 96 +- .../visionProcessor/GripPipelineLift.java | 56 +- .../frc/team708/robot/subsystems/LED.java | 3 +- .../frc/team708/robot/subsystems/Shooter.java | 3 +- .../robot/subsystems/VisionBoiler.java | 389 ++++---- .../team708/robot/subsystems/VisionGear.java | 844 +++++++++--------- .../team708/robot/subsystems/VisionLift.java | 367 ++++---- sysProps.xml | Bin 6190 -> 6190 bytes 77 files changed, 1154 insertions(+), 1099 deletions(-) delete mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToShooterLocation.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualPivot_Gear.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/loader/LoaderOff.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/loader/LoaderSpin.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinIn.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/loader/ManualLoader.class delete mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Hanger.class delete mode 100644 build/org/usfirst/frc/team708/robot/subsystems/Loader.class delete mode 100644 build/org/usfirst/frc/team708/robot/subsystems/VisionGear.class diff --git a/build/org/usfirst/frc/team708/robot/AutoConstants.class b/build/org/usfirst/frc/team708/robot/AutoConstants.class index 93d51b430bfdc58b6a0a2fd6f3b262807c74e071..5d24f7da1018d15d969b6c61a33fae8a8584f2ae 100644 GIT binary patch literal 1979 zcmb7^+fvg|6o%KP5XMeH&IsahbmSaPBcccm?QRn%G?<1`k1;^OGSJSnsnv<61$94`2rl0e$(isGE=(N7_n!DRf7< zt83Y?ebdMY_^YYqm3ZYe=nxRi?nt>c?*>zZ5h0nWTAq~sP+6cHDFvnk88ICyi;aw! zVM;yoPQXBLJ~wIDGT|6j#x-TiiTuJLVDP+W8)@C4(+L5wx@lXE=167z`(iKz^dxN~ zC*8VEr&iX#zNhiw4^PVr=&r{%Eu0fvbBjQUKGR6y1FAnKU4~2O5YWq=9V6-Jw6>^# z;j_nUxhzC>46k{^GE8Z=b_(ckm79g#0>*e@BW79&jqcdI5?{ey9RJQODDh`uu7~%f zrG}eGdmET|y~M3+qjk6A^>Qaz9;SJdZf$MRhV;U&9xZQV-ISGclQL~fnN{NQv~iy9 zz%w?}Zg{04F5qHQJ-gLEP~OgNwD#CxPZwFu8hoN5*9-7=lMp-wwh&x-Q)ZL-BkzqD0|&MRO#MeIzDP7vJ@!h6sIDsr#K82iStRovN{|MP+KIJzVQ$EA;)Ne7L@>`54|M*OZUk|w z-~;G;_y9hD_{W9)H$%Re$(%zbZ{1&=>5re+cM-|UXCWxJV+jbhsh)GXh4ZEB*vwEAqSoyPr_5= zus%%=>oerAK1=iG;Cb=_94t~|35jKL*swxgh4Xa48oW;4fH%oo@HV|4&f6hlo_?^L zX8W7(qoYV2E?lCCyKtH6VSk0}Vta;Q!-zF~8O!AA*sTQ#{-8s|j=$%q9Ek@R(m+(= F{{n)iGhqM# diff --git a/build/org/usfirst/frc/team708/robot/Constants.class b/build/org/usfirst/frc/team708/robot/Constants.class index f20818fba02403de9bc6b5d74c0b8a2f544eeca7..ed40377dfc009ecd0a3adfd8c7a1ca33accaca48 100644 GIT binary patch delta 623 zcmZ9}$x6de6b9h`rfnjjF1sjnAJ9cNzJS%(77B`}D~q7$Qk-XrL!D>iSZ95L(uLr{ z2k;Sm0vA4m_$RjMv71A_lmA{0_qg%zc5S;ntq8Z1#Y zoN491y(wnv&d=5CV4i`+S_9qyOTx>v zBkcWOsq<=`*Mtq`*HH)t&d?iyoxgY53>q4?7}yrxp?8J%=zZY>`cU|YJ{CTqPla9j ztonla%A(Gz4f=w!Dsa85*IZ@NHxOxhg(~^GEwbut0}Z%gjr!ja+~ST>xM$Vy@C)?o BN3H+> delta 518 zcmZ9}yG{Z@6b9gb2G}u(i55$;3H_EfzJZMmZ(yadGEosEVAK^ac)#F?D2kf+0EW<6 z_y9hEJ+04R{MW?Y<2EProtcyTne*jY&;9s*dj~Lu=PXj_89W+1_1)?8pppL6&NbQ! zzMU|>ZJL5A4ql9#8qGk#;grUL9cCwkF?d))+?}PDg%{}+6r!mTy^6WWGjv&ao~|V3 z*MzIQuf+}!2B^mktkWC9;r(X9TL}lkhVQr0_!n?TI1IQOIndZ+V?SzWH0cB3L;6Vg zm_89crO$-V=?mdYx+Q)v3~=@5aW29#s{+@>dShR6dB4L2ITSF0Th`p~IfFZNDTRAh GjfWp-e>kxK diff --git a/build/org/usfirst/frc/team708/robot/OI.class b/build/org/usfirst/frc/team708/robot/OI.class index b919f2f27cff3d85ed87265572cd0c06a7d44a43..c6acdec20534e6179586acf8269a7d5cf289b023 100644 GIT binary patch delta 1197 zcmYk5+iz4=6vlsNhMs-8dpb}q#ZodrD;gmX0wk1Phy?|!QUj$(QA-CXR$FFTDOO5l zKoP+k!UnvepooIvr2}o!Nepi$kiY{x`XUcJ_!sbGTzj9E%z4<~{?=Y=?X|wW&ducI zWcJ2?V}An68By%lJjqZoD|uUSKr@LUO_qb!a!B!xCa{)wIczQODUN8uDByj?QO)Ft z98-LtnHrG~6(4D4MC4<|Cz?m1yvHR=mQNKYG_#}glM17m6OmK)meYzen(D~%nc{QJ zV-fkn9)GF$O0yucd~Gdf72jwUM_0H)zg3*mEM-V>UgPndb^G2f7gQBLC@yMh_)+nb zrjARB%bEr*S%;q$zvSk6C7x-FRTafWC@;4o)*1`?cq8N$+RgPzYfG+#{K{`3+vqT5 zMe7p3hx}prcG^8^%@Y4{bGs;*wmy~Ko9b!l%4GUOcF^ImYW%Fi-#OvB*v$45@lMIK z$Zzz!thsI?gSqb~N``Ib*CyOuX7hw9^`7B!TrTvQ$MSJH zwfL#bKsuzC_S}i$YR{`S*Yxr1^UPu+PmADdMYk9&!Z#K0Rw~$Bz*~gBSiqabe@g*x z65dw8w+er$fWIv9@*;9qg?)*v+er5g<&e5ha$8?>D{69?NEewC_+0FbsdVN z4n<9eqNYO;)S(FJu$Rd;Fecs0sK~mM}zrJJ(- z64J~xSyS@!?WBxOl60|99=wKbX|_isO-p+j+4Ztdk{@9YhP|BQO|CG&7;o_xgWP35 z|1cyc5J~}XPdo+$1MzSr$utkjJ@R?wdAv4rr?lRyGE)-U7tYL6(>BbCqETvdROYF( zEEuIeM>0>tI9ruto;jOXpR$#2WV)=Cl*r#)P9yVK%`(==?ipU7Ngn4}srosot(l`@ mIl~4nNYt>5#&sEuTeR}GjKse(1`pWc`D~TC_estegZ~2*LEl>d delta 1224 zcmYk5TWnNC7{`BS+nza{o>sXP3w6;_B~oJukN|BVt+53XDYz81+{#v43$43Q%f(9B zs$9y=A|ohxL#-F8T-;Tf(1iGAq6tqt8507JzWC}B;hQ-%-F=w<`F%6W-R_^ zJoCqco40_aj4KXm8W=2Q1&0(FO(BDtA>Or-_Z07I0vkEZ5gR$GIHn1s4a17#nnxly zp*X3T9>FQaY0az%K2VHk9*gpxkt`WLRGigRM)OATk!D^5=M?8PRS|q_OMarbpm{oq zT(pr-6`yGqMv>2LivjGt1U*Xi7A;Hnp#5Y+2ouC=ky)^GvKdmxyhO1%12~vYmEw zt+2V|YREONhwLDEwrF+P&mmchuhH&NYxbxG=2lTKV_h<}H`%+fJDu(id7Y%ks>!(u zzjJD7p+C#-va|JWw%MOu&>?jesk$I%v+fkw;WzlZrnX3S^Os-h_t`jb7KA-iqx4Od~Ic{Z3<&@JB$L03T^znIIxcE68bJr+yW zxTz^F7rf!IbP}f*zmVRa3fV(@Zm4*^=T)0gJ(5WVA$D^A5lr_vUu(gLUAy;CvWsd(X3 zd~hm;I~Bv7ipx<BqW!Q*qa6nt9QOIO_spj%ZBWkXs{Tzi9{$&z+Oy$qB03#+iQu zouzsT%-ygxvsd=CFhj;Zd6)Z`#(v@qQo|v+yczkoLnJsNxsTGzG2UiazK&x!!6i;| zg;U(*G`};#9nNr%bCLylzn+ZuCEEefK=!#a$?YDHI`Z?%C-B-#wzS@xZT>CosF^## z^0q9?ipHtU5uc#WQZP<^&i;j!le8*FwK-U}E@@AmV5W?fl<+v^Y~U$gVu?f>rH|{S yciY$^r{2ndoPStabe;}I<;7&>W&B1bx9Q?E1ClewI}ZU@Cg`gG diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index 30021ea10850a0b7fffc177a82ea5845cf00a1a8..14d345ea0e63238f88f930e84f56e513c2b94e12 100644 GIT binary patch literal 6908 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 Jx_14<{{ZoDqP744 literal 6737 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 diff --git a/build/org/usfirst/frc/team708/robot/commands/AllianceSelection/BlueAlliance.class b/build/org/usfirst/frc/team708/robot/commands/AllianceSelection/BlueAlliance.class index b9987cb960162a4790615e15fe0cc36fb96e5269..41946a28053b6a9168b53151232769aa4315f605 100644 GIT binary patch delta 523 zcmZ9IPfo%>7{%WVEgi}z6)cJZg8zkTV)O!P^d3f8m^6@Zfi7ISGTpfH1a6dsg$on6 zUd9_3-%xBDJLxym`QH1z={%`Vb^P`7{sG_=M=nZeI9MxT9ZgeOrnFsbpyNWJ>tNHt z)?@Hpa8ZuiBIs;u>|j@85BnMi=sDbYAwVpvj-O>cTHu}w$*N#cv&fZZ7qC%*$JxSCqUZXGO4IY?1OkYO&Me&t;5{6Z!-ViK)Dbgw&8PiLd)r1*Q+~;ecBBPj78dl~Msk4Sb5x#OddpGIjE@=FT*7_&>9eb7qc~z{>1^tG~^t BCG7wJ delta 490 zcmZXQ&rZTX5Qo2A+HNT;h#;aM{y{~N#27t$@kzXRGH`&a;TcRXJ_Hvv;ow2z)tB)N zjI$KlCT`N%?aq9^{mp!Z&*9+v_x%I7rXLZ~G;9~yq2)q5VwX;YVb8E{IC#4J35rCD zUOZBr?(Jwep4<&5W5c1P%aP@n6GP8(%9*836hEk0e4!s}M#S9;P>6)YQv9hKQ!957 zT4IPNnKe0C$%0RritHZiNxhuU<#RdpB0)=GBIu9|R4G_Z!5gV|pw({_Uh(`nzSEc{ zB4rBlQ(3%KqM8%4sn`ZJ=UVCpvO6*D&0NgcsOLzXk}`)S`Op9Ts)1&X%o^BC$*bj? Yet%Aob)Sr`CC1x1fz{{~jfKIjKeOy0r~m)} diff --git a/build/org/usfirst/frc/team708/robot/commands/AllianceSelection/RedAlliance.class b/build/org/usfirst/frc/team708/robot/commands/AllianceSelection/RedAlliance.class index 1b12caae1851f5a24f823bb4594a1b3f3363f7cc..03e0da92cc3d7ef4a6b76e0f2991d28e5deb2982 100644 GIT binary patch delta 519 zcmZ{gTTa6;5Jj)^Xdbw2NC{9#c$9Y=kPvJDkXQ!=`hgTti49~8C}I_S0aB6p=mOXa zTR>b>MZ2LW+j1y))5 zET>ij0^~7D-cFbWv)g}%c;Uf9lQColdvIuK@g!#=v=Q;6j#S$~Y#4<$cCf%#Sq<$@sk)zO6GLlhEeEBv mRQ+3|YZ&Vyi`rPvYyz+T=kLsVNcqpqAh>^}1(sOU!txI^=p}Lh delta 494 zcmZ{gO-{ow5QU!;r%qjyw$MVLg;HAnN;Xwlb0F@3at2g!3fKTrky!Kq+@)7QJUfVi=W@`Er5G0G*aXW$8DToWW!kF6lWR=6NPhy>GN_Ix1rZlQREi} zGt3Pxaiwr=aD!We0Usa5>$-@ZN<}$)S`Z+_*kQF|7R<@w3*w!Z2!>HJgMj4MJ>E?9 z2^qSqBzi&Mj9b||p(sjK$=r_bnaIudA zD%dd!W~&v+Hyhmym5qTXOZOa5ZpNek4v;r`ascmt7{GdU8?c#@OXwJ3z{8>tyTE#!~%%XSdcVkyX;^(Xw^AY*mzAKs9yuXjQ+) eQ1149hgjKHAZP*xG-_A@VydhB6P(IwJ^TX_RwTm! literal 1108 zcmah{OK;Oa5dJnVH;&Un2~Zvd`l3l1>WYVmDC#9uPk{qPJ#cfJE#1oT2JgBBeiIis z1c?LO`8E6k#H^jVQ4zt1@yzai-^_e7KYxGw4&X6d8x`Ct<2Dv;*tlciZt2G_x}wj< zJuDfsY_3);tXf!OC_NXU&^rwIdgFkh(2;%4FxM3!e;E&YJbLZ*0y>%RO5Y0(yhxaM zd|1#&LNPq+%IK{dt3wef?H)$HtGPFLy47|g*^}D!`g^7HW@f)DiC|wY?$BL-H#k)I5sfp*A=6zKkQE?+H`mY{GANH;=s& z&w+!gh5HWHQFqWllVN>&r5zb6?S)!d*l^Io0|%R^I=GH1Lwh>*-(51S@qX-{4uzXa zL|!0z$7jO0om3!(mFX#7897NMKh=@p;eV7@aZi0vnh!GVN%5J8zl%l0X>zT4cY0;} zX9U}3JGQ2m_jfiL5KTVzf*10H22`l;CQGKY9Ab&qu#&813CxU&>@3AQ$dLy)&97k1 zFUXCM|4eZXb7W_cCtF2MSZBT5u*g1ho2Gk~iECbduV4KpI zcQ)m(p*Vtd&R|n1zyiv+F~MSIELU-ju%?w3{S8Yl|H;^-fi(Z(1TvQ)Y0bvSCu5|Q r^gnYk`7%maouIHXiiM2g(U_vx9HD%Xpg}SkF=DefN;g5R06RH>MF1R+6B9@Go@4cCC|7#eiIv5 z1c?PdfFFgpV+Uge5jOYUv3EH<*EZ4*KAz3 z(PwBsk+IZI8Jfe*eFkfkOaw!BEMxH^k9?86=6*;|dgCPE;Xco#InN$i`cNu{opF-A z^>TF}Go`(QEbz48(W9*$FH8JHdqEOKJf0|T6iS0E`(FB(!79g0ce>x&n> zG#OGjK^Y#yz5m3ma$kK=T0~Xg6!g~OC4XxuUHa2<9zIWwDP3#$thgUaCn@@LgF1A_ zfHs&(n(8v0?o(&fTerS~eWsxSm#RY@G+8)_6U9_~M5ivDES#zU+h`Vm&KESgQ&{ti z9xXmoV{|IU>56fin1)|7U|a$#H6g2nJpz{Q?@%}2HJYDHEv%Qy)ta(VDd~31ln-Z0 pn`}?fns?o&nAU0tyF#3+5PzbZqCF27P)NfXpfv+9oG+YS_yvwO#XbN4 literal 1091 zcmah{%W~5&6g|qziR}_-d6fdCkI*y;xWl7#rc5_sx=LA4+C_Jcqf&JoJ6Ljgd=nd3 zgc%lm03XG0WxH;s3}JJ1ucUL%)zSU+`^QfJ&+y1Z4f8eJ!Geh@?i#pf;yxC2c%XNd z3@jU1VW_+mflxaP#pe1UL#Z1MI77WB0{%K4_IdQy?fbMd+Y3F{KXfCZ>uj^6PK0FG z>V?reCzi(|lFB)bJV$YN_+n$riNb!U94{OW-C!V{t}irYx*m+S8BDD%Twi=94TFE= zUaTlHh1{hRdBO)tXGauyK)EFX#iJ-5DScw@hjHZbU7vQgC)n0=u`#{9 zzt!k-=+9%<-wV&^b4txu$#_W>j<7@nSfe=wDxiC?DB4u*pg$fNH^2_R9&U2gljohn`+I)E(o+3FgF3DLC=7*IdGF?^t~$S*T*Pd z;7w`-n1_Ld365&cF^B7f)DP*A;!78o0URtaURLcnVI`--`eLNKd)~9x;U|sKq-bzlr2~Bp3uPadLbR(#UW#upAy} za90Or$Vvf({t*S~VZh9W%p2a(2`rDH850=&Y6j;0BNFVb2;#+5IJH5t7MoM$`pB>l6lhn>`iv%R5PAc^#pwHl^O3^ g7ex;~& zKdXHAP=)qumb*u)o_OQ4!dt}$bMs4WsglWlTI*rF)%>)-(`vRA_35o{VC9qB`ybl} z?Y-viYPF##nAUBpp%zRwYgapg(CaUTLO>)wk?I|mWZ>5>P_=Wc9`>2k7Q+%lY>5Gm zC?1I>r91omq#2RQArpDcNUgopKLb4sX-(0&RjNq&G*Y(2M^7rA<2XHHo0T;2ldlAF zdS6Z%3O5C<(!cb2vy^sxy2!KJHrgtGI-;JNbuSI*s68ljTyG+5y;Qt(1t diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToShooterLocation.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToShooterLocation.class deleted file mode 100644 index f19c195030b6f02a9ee781e18b5d955efbd47366..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2059 zcma)6T~ixX7=AWc5(rC5fwq=XKY(f)kkC>}EeNGaDbP?WK~(&}O>!VhlWg1%wEO{Y zy>sfFSH0H)+`~lwj2mB?D&$|gpX6hhhc+WZSIr}{C_n-g#{s(|tIEdj2ZuHt*UzLSMti)GV^6>2C{a+EN`2RCFiD6_ez$lVLfX*`zhbuvmDn; z?Ky>%r_9RS^qrJr=WQ=luqzd_T69xI$2wG=V_MZzMz&jau4LPuas*s#n%58$dn~hT z9g#JvzEuT3us!FQg{K>4tw|lT+!elbOX4MM-=S1h?t85&0Uf{Q$xSS0`%XcvSmMK# z|0bO}Fb_=wZ(%fw4Fiwyfq^IZ(7+~gQEVCb2-^le7V(LQPqAa*Gkk8~3rrgL61y5E zPLIH{@7Za)>Uw6?a}B(KHw}D+Q3ED+4ZM!421al-ioAgWiUyRZ_pooEBovlBeHWt| zR!`?Sd!#j7Q$;`ZP0dO*(#Boc${(C0E0t~}O~csfl$(-b2D+VF4YU7K5U!thpShl@ zxQ#jpN`krXcGTBC>ytG#naG}QU+x5BUh393v|QHDeVd7PG|ZjdfbEVCX~OL3-ga2t z`5}9&=6h>yT1oLq;pvH;z%Hs+O?S(5_7$Tfua>=xC52F6MaFne+rE4xpRCCz{i5?7 zhfobTxyi^4Yrah|K)`g_c9rX$bWhL-8MZ*pu?xy|Gp1*99Pr_0a{|nq*}I@sg1iu+ zWR~qf!FiF$WCG8kgx%mgp;=&#tk-hB+I7FhWx8+=Zm{gOwe@ zH3CiAkaCQtHQsAn2a~@+Oa6jT9bqmym!GK)VVrURI^`wG%jhM+04c6fV>CX++jxg3 z9f=lfo(2f)IHAIIbTyVpV~IAFZZ7dUdfGh0G!AUsC=HF%$P2_9p_yZ}qRltn;=A7B z`#W$8I3i{pvFBJ1Hofs5enf9lKStjRbSFbx1AV;V;<;n=CzHRT@4F$Ke|n5T`p@Ga z|NCk6&d&uZMVvMtl-;)mBlgJ9Mj!=A%k`uAXdaub!cvi`4Bw>uY+u4iLe{h6H uIKlfkz}p#%w=y=>LYpC~R7h8{j>~P37)ii!uVc3ZpsNX>A;sGervC+IaL&{K diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/JoystickDrive.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/JoystickDrive.class index e602273e693b08f4d14382a43d8c2d79d5c9f253..ab1f13cc1488e30c0dd26a544dd8eb30da2f3e00 100644 GIT binary patch delta 525 zcmaiwJ5Iwu5Qe|CO*VFnLx992fPwG`IOY*VheXF+xB;cb5sC0h=C8wp_M}G&>$k?0W1m)a+{x92RxyHIUn#B_7#@n)=OeHn@6mf<%s#Q|E dWtuF&K72!PD#xG8pBcuQT literal 1402 zcma)5T~8B16g|_HE?pL@D55AIf=F8`!>6Da4WVK%jV3~P;BDKT(!sV{XLkYpO}@wj zCO-HB{87d`yU^AITiWE_J9BgHJ@?$%-+zAo0|gH4SOk1n)oiTUaK$XR| z45|K8d;Z8iwk=o~G?2BB!<>aYo?4g(x3GXk14|Z`vBHq+K1Sfn8h>loMbmaHtm2u0 zH4E!_&hWZBvZnwHGr|e@NmKGjM2c#%baW{l--;w;nC{-`qZXX>Xe-UI+G9OlQ1WOQ zqVDl<8{vXzCH+c#4x|#a;e4jpo!{t|~>-XM`Fw{6%5yH{v#p|QD zLkNKOM_sIvrt8tBbMe%{I28Wosebs0%ucqzu-v`nmHINIs&>r{1*eHK zg~CC0pT1K43F}`HOut#OH|Vs77)8Kn?gv=z46$>>$t5D!NA5diV@Q*|i$1bxByfvr z4blHL?qe7?>DG#>P-ciu3Cdh{n4`1qz}kg01rW3iWG&#G7Vu3-6&N8_XGjvIesTu6 zllVDO?Q$mZ1ICEoct^>RR>@(?MAPQU>(;UOH*LeIA~I7Q$XE+G(jxQUDP}u>?J4f{ O2Ij8-G7?4e8vP5toCQm{=`(5vmK0loGlicLUYJy@-H@b;_^DM(*BgC9u5D$_)8&lYiVq=!lp1$g~@K3jjQlDb51hK9KzQ9Z>5Q| zGvj@tSrft%J2QN3S+gOm4Wfk5uJHUNm=3#Aq5H#S^4O03=pg zR0K2%VjLp_cR^8pa%yq0OJYePBLio;P-;m~eo0~p&;(`;O&3N6_VmfSS%Q_gfR@0G z1Il;;ZOAN!IUU5=?817Qk<*?*fx&@6iNR&E1iL?{Hv=1k4+AfQ@8kk@8`dBO7KY%- H8`)(5{ozR9 diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.class deleted file mode 100644 index e4d370bef77f2c22eb8449db2f79c3d4954055b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1925 zcmb7FT~`}b6x~A-0>h9ZSX!{HD2;|tJFS$0LMv$^g*H@65EVZs$!)nc$;A1T`|N%1xi^3O`Sf=H*Pu+C#pO}hxMJcA zuFB|56HB-zW?9U2F)LzL#k?iv?NNTbCZly3-7s+z@5po`je_`FVv1r)vi7ckZ>DiO zjV%MCP4`Gu+Dg?87$pP4o*OuU;$U63ba2x^GFMvIrz^U3hEJ7sOWg~bRpsqD)dnMz zWw+)u_8m{lycqZU->!T5 zNClpwTlQ{5pwOz9B(~??R*tu3AQL#=Llu;?A2_WV>zcw(I}QCkCyAVJOsj8IEfn^q z_BXliABrw69vB#}1WxU%9jD!;m{2XQjp*aAgk)3{Y_ij z@ey*=(A7uJ4$dyd2WVjabJ7L6AUx(UL z?5|6?^2z)v&oI`cKg=WTYqupG^<3rmduc4cbh6R`*8MbgUpox8{i2d?lTJ(K4up}# z@RsB6MZFz=RT%7XE*ITUk|bqYQYIu8dLE%-I5u(Hb8E`?OHSbMO7oh;tsAv|iT8q$ z9p3ZjA>ZF}A|5&oHwy4w$dyVFb(5eyZoFdKRHOaBvDX8F$Fx5nH0cL!8?W#sI?K0j zh=05a(TJCWei#Pt*m>FuoK?7lCFy>Sl3u2rM3VLl?F_~UGD(0r zMy8p}R2F-cUPkj=<#ysCvfTnz!W&$>NYF$Fsn`w2E*-lOx=aV7{fe`s3D!sxJ45u- zL_SBVhNm9?Gxj25iQ~jE za}$t#zCgXeGS#h6^*Za`p!N;^fE92Zr2!tRT^u zD0HMRG!vcq9SXgRaXzwhgo(E_(-XMZLt7%M2u$TWnC^p^(dpl3;oSj%R2P6R2vdge F#$WPCtycg5 diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.class index 7321c25afb91979a3b441778f9be18ac87864d35..97253f5c14225379c166242d898e466c4e8bb35f 100644 GIT binary patch literal 1959 zcmb7FTUQ%Z7~Mk>0$~W{(%K@HDzv81GFW;+X|XgZB{tMb5EZYJ~H?PR-rp#{j|Mmyr_?N*d-WLDuG}dIiBPK7V zAZvGpWj&31X>1r6Y`6!i+)}D$z$h5#_grmj#mP;l>F8AhiQL5<1IfHwqj#j_G}VKk zQBmHuU8&PER&uL$eaH43`Hr1Qz3=!2HcGDd$O`;D$Mdzd=T$AO?8c47Wy^CbuC}Uf zqhU8|zE$&_1EoFNXH=|j)0D&H^InjJPQ zo_k71-5uVJ0`EcW-Q=}@kr=y`;hV8<*WJ*;XChZ9gwbUgkObb5&D&UH(85>r{}y26 z>gFfZUi5qNlJvFP!mE6!Ci$ZE@t-#+obgU^?1v#&llC0Hid;81j?eu9W9}#PwUOYE zmQ^>yUpZ#iTg8#TWF0jcC+_%-oV zC@JRT(|`I-(U&+(9Fj8;X80^)2Cg%s%Z&UMOS4MuHU7liq4#c&j^$X#Mea`_ksTjr z;`yG%l5WS6B-}P$q5=jw&IDwmeC z%F1%(hE3FB;ldAa(p1uuBroMxR7N%p=l(tk+cAnOitCQ#d;lEB7zF5@Y!*QHfU@EpIMdn|*RR2bTI-*AZK@N!yp Tz*NRGTLOCcB|))SWZn7$n9d=| literal 1092 zcmah|%We}f6g|$PlT3ybT3!VTw523X(;CF1prUSqvI-zk)CIdq;!sz~Ot3xW@l9-C z5hNCT03U_8o|!yUMA%&W+CJypIrq-5-#>l=c!(VrMXVHY4cA>1aKpi>i<`J*!)<%A z=3w2y2E)QL8Ax-$kgaYVG2|LyS1>HLWFTHfgSJp_{C1yCmRe!Q?;rU}+B`kXnPaIL zp0+~ujz_vDl{UPmI@}0$-x~D zo4D(tf+|C0exZ#p(8dppcCh84hHVdZlssHQiD7R(_MacguqnC`|1gw1F^G13**+QD z!W)S_3>)(mURyJ%V~L9l_y1$Nj@tT@He#St$I0%367M6a1a+-mZOyOiaE#x#lfmZ~ z_m>zohngPw{TJaWH78en9?zFH;Sg&yfkhfrU;*?FC5j$p2guM4@M_<|YTu9-STSH_21t{h0xe}y#AA}N?+T<} z9w9%)yHp6U3Wxrpsd!<+v5bo;N1ay7k;#6sF)lw*U!Or{CP*5v6!|DcI`P*poE5K- kW7Qc7XF_p#Lh&G_$k#@2&Jyg9NxL%y`ILa+N?hsHKj3oQfdBvi diff --git a/build/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.class b/build/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.class index 3b04446ca1cd639f84a37cbb70e9dbe9f1db68c9..ec8ab5051916d58792d95aaf59e7818c670c217c 100644 GIT binary patch delta 566 zcmZ9INlwE+5Ji96Nt)R0m^oocAPjM4hGfSAu>pxwzy-KM&JbDLf(=<1!2*eGRvdzJ zAb!PG$HI%ME_eOc_3O)jFJH}nKRyABG4kMJuZ(@vH5wica41F7!x4_9JdqQFhf|G~ zMl`+usTc$rZG#TF3Q_#%HsUAc*Lwzi3=D=i(>OP{km3@7K@~wfRrC14y^WupJ2j@J z6MwtSiM%gg2@1qAR#=Ug6?3us2KCB=gOJf<2Ac|4$0|=IZNeIB@b88N+`wJjg)=x| zg2D_%rqU8sVFOT|K%>SdcXGVY@-{86$7UHQH;haS)N?{*gtvKm3OP}MuNL<)R zl}%AjG7pZGa#fl1I+F(UkU-Nyf|dUcTHIVjNIN%2U|}^2TW&N#c?pTql@7SPVUAGD L2#Sl5sdxVXmo6&v literal 1473 zcma)5TT|0O6#lji1VVZN@8AVQq?AgygS5aX3^UFYAH?Co7ba~NSxghmCV2TxzUTwa z_}~xlM>(ENO33I;?aMi5H~GHv?YC!t{r>S2z%sTCZhY3|ZRAEwuM>?hq zJjS$v5@u9YRuzRDW_46_JYnds30DML4B67mA%nK#wKzkeE?oXHY&W?7+HN?sGg9}O zwsUCvLajTST5uvHL#^)lZ>>-s3ttA-vEQ@;ZnxLw*Dc>`c!AaQ+HKoyN$Z&N7Wb`v z+YN1JFIrR?45dKWj`&P{bpDYy!+OsU8w;ziU1Hc-`3 zGqH)Pi7gaOjH1Y}(Ve540}NBV6+}UDv@SzN#ii-HQE=A2n>pVOZ_G_lp?!oN#Iw zTD~~vfo}_!VWoGL-2_G?x;*hbnh}P@-Wd*J48g7LKL6tzsiyg+k>2;tX$ZB_t}IfOCfQj;Vu<|!#E|8_9#i=h& z{gl4aPZ^9*93=`6fkp&Fv@?QhxP$8$$4#mLGbW^+8?@4B_p;e6tyMF2MW)mMV<{j@ zfVUFhGi0Ox3M8;_fdLXoY4D0BPd|VZ=ycFLDk-``LU)@~#)qy@R&6ucFDgc-iiOOl zkeLKYud{>P?jUoKQ$}Re(BCpv$e>lSVJ$_LOUT9&vZW4LU-<&&6^TKLfEqcsnIh=x L5HQ@0G~fFJl!;F= diff --git a/build/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.class b/build/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.class index 32d39606dc6cd2d2fe06b6c2b2a7383837249766..7073066214e9f3c733aa7fa365849c40213088b2 100644 GIT binary patch delta 572 zcmZ8d%}&BV7@Tc^m3B+TAH+YvA3&if3I`Go#Dn@+oV>}Q+1KzQCN=TE1Nao)d<)|& zG~31=zMt+llbQMP-phAizn@D0V~jlbI4t7`#}W+>O|;B%;^7o$W<56(i-)#EN1_`) zeESN4#D&5odU`6NR$n2)K;a745<`U>v)m$3*h3&NiRTl&6mwm5AN8~IB*yW)p@*)o zmyWMr+}g~jFkcA*BxkK~8?g)aV($auje~=b)nf+_3fRIXC$&C8l{@%%+Y;QvUA=`1 zIAMaq0!6k`MpfYfP@6$gX$AEhUugMuEMK3;Mo>2Lli6$s#B;9qS5yKng N7>X%_!2U}0!5>KFEYSb} literal 1383 zcma)6+foxj5IvI%3(JO86jZ!&lMpTgauqBs4Mmkz!3Uvu@Wt9BgA69Sads9j-{gxv zV3iMkfFEVqvl})kEh8`8Jv)0&pYG|IpTEBU0I-T}8wK1Rz#ZJR;ozQ$#*LYCs7#zaLEk#R6q3@COrGCtiEzTY?K9} zhn|vV-Ts)<$1-Htss!o{kHRCVLd}mJb{Cdcbgs2O}_gm86 zjl*pQ+vJyCLw=$xmiQoQk*3I&;V$ij$D$rlfoMBqjBmTZ6dD1nC8nSwF-YZ^Cdd4u>JH<=WVLHa7wG7MuIg2o=h95&M znjue*pkIl1kyL_?a=uvUt!w`rzir0F9ESH+ysmnU2E+Qrb3adT&j@E`pswVp(8`lO z!`j7Jc2XFT@ZOF3t8hw7QyF=Uz2KCFCs*7t6|G*FrK<#nfhLjc1v*f~6zZUbak^y% zx}ZQGm>EQ}muPi>3`M|L=^I$-D>7%ulFKD7PwortW^kG8DDq^7k;7FCVuYemn!D@d zLF_RLuFxLnkC8OP9IeeB>kt_UpeLaNWGQeo1wKVK{?8>w>_TQzB;BYs@<|(6h}$y|cgOxy#sW2Vk=nq! l$Ofgc5Ph4Nm~IV)HhdH)(1y~aMJxyqm8g0kD5uZ^MLlp^I~%$su_N!geEcRZ za0n6yxbtiH1&Fbo8WW^oOEa_UeQ%!M&W~STzX5oNEe?(=bGV9YE>>#af6^{J9M^Fp z4L3RFu9l>UHr7Q0a(2M03N>3Xv1 z*h6g?cDqshS|p~gV`D`>4un;5`1szoh$BC;B8Y}V8TO3mE7eo6*dOVzla)_p@a72v zPc>*c&>yIitKO*~u~czwI`qXHs$Qn=6-5L*_72lw*!yj8CpM}%qXAQ`~vogiVDtB^L35Ih?1J zgT;bi8`X?}e@3MaXN=l3OPyL@D6#N@WvO7Bb5Qg79KK5=|PUY}hPE-^)5Hw0+)YzL?XiRKPOeicY1Szce1;&soElupT zz{Em(e}uKAzrZ-d$8m9sxt*PNo_B8U%`bEJ^Y`r?z&5H13CvqqKt@5ql~{~_{7{LG zLKaILmbtVdk&{^M)V>{!q{Ny=9tDjeJb}EwX}JEONH`^pGS)RJNNP+YDX`DA&V%be ziaXnE)UR8Yje1j{TsZQdgsV?m7tPz|P5o-Gc;;7(<2H}PCk_F!qG(fg0E2FT_Ff^p z7Z_bco+&plM$txu;sl~dQMZF}R`&JunxZU9uR~Uea%PDUfX#qeYCIoyil8$cbncK3 z3l$BJMyv}tLMWOA$iPB2_D>>Cn`iD@=0aK{(9-5uOR5@u*-`d>+5B%; oB#akA$N(`DAhrgGnAe5X1C)D9>knL|)og?au>nEQHh8^re=(&o5C8xG diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_In.class b/build/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_In.class index 1b0c4f64be30de4767dc442c29ff4f9de3975d02..f0cacd37c5936396e4ddd65f57e93816aa08dd0e 100644 GIT binary patch delta 509 zcmZ9IO-{ow6okiaQoF7prG)}5q|owDgjBV#=VUnmE0itb1Z-dtq%L{@u7bD%Vw?mw zN*43pb3C6%?_0m<QMYj9e5Fmlt<+NZGtl`Zk#5)@aOEs)c z15R7)Y;505Dj<9S literal 1131 zcma)5+iuf95Ivil6UQ{rLb;SnFSJS1fRQK#si+bJRjL$tpr{YLRCcnZTYL%Lb-8>K zFYpi~9{2!03NafyPN-1eWjwPx=gire@y}o1e*oCT9TOE?t>79KOq6lmzzq{OaZ8&; zeX?X=*}w`z>9Gie+F{5y)(;p8?XbrgY8?^q7qRd1=#}GobTZosyN-9@L_){uVL=@W z$O5d3KVH|b&uFzuV{v^M9 z;+#4bOjHfrwy=sd3w1OY>eF?%!$2x0P}0D{#4Yt+j zOjo!+BH7l{AX>4@{{Td6UbbKq{T~- v4^pHte0}L`@kQ#`@&tvEQOsu)_fv{ua{%Kk!5THGK0#1S2^cO9m0tM`Jtyn9 diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.class b/build/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_Out.class index 88d37ed7a6b9872d7993a063c9711be85e675c54..c24205af046d4d9b6cef4b7ca65dd17425847a52 100644 GIT binary patch delta 531 zcmZ9IyG{Z@6o$XqT^JZfl#3Ts5KutD4oIwRZG0iK&tUcytc;Bom|&v4FJfzDX*@G7 z%Z4e=W#*jk{Byp{V`={RyL<;`Obmv@GDjS1+QpA=xs_w+aNn2BKB zh@1u|6k56YDr;=AE3fVYm*QPr5I#BU)&F<4bDaV4O1dm4ZJnpBTBI+~o4R|ls(y~4 ev+4U8V!gfvrA@#<7ByS}nxd|d5)=nsYwHi>WhHU| literal 1383 zcma)*%Tg0T6o&s!LI#H6VvG{;0>~`{WKgaOVhI!$RY9tZ#lj8MNg8NKGI6E{(HC*y zE4YzGta71yx4wu^V0n5ngcM~3XL077?mpl7yHEGeKi|Fsn8T`xUJP~MK88*7V59@1 z7&9<#q77*S6Y*!iW`i&O<2NPHXCi}1ZKia>0|V0rY=-!XtVp%W5KT|)GQ`%MqG0IB z%8GdDm-E7X&GRK1No1V@FYR(y>Np&XsYB^8Y-Anx!1ld;>3YiEcMG->yu3KGWV=q@ zQFg&8mwBb=*|MVevDnM=Qpw(``)lOy?f7b$!PH75FUb#7&k(1g;4AXFa*7v@w|O-z zYD#aDR(gk`7^r?jR#eFEB)o84zpC_%nR9%%AU35|pS)CU`iP%!3)he^Fk|5%9$A>h zoPl`@3s_{xwBC`gWXXQP%c9DQ7MAdsVZ3$5x>NBKuPD#J6AQ~&vG5cL3wM!VSZkg8 zKj+6VDvG}St}5+%8^|lk{L%U0+w1ivFbuaY_DZ*`ewgRIVpzDM!=9h_-g`=vz2?4B zPupGb)|alJTQZf-wpN%shb-%xIM`a|&KBK_qAO2?8}@-JT%oeLYoyIM5bF7;s}ytyAjoMh>_Pxgd0H=tjA6CQ4~X}!J4F4&#?=DE(R)ek;oc}w;G8#!svCW zGsNOG#FJ?M_z4!NNy4nb(!6Mspgxk5qVoMs+*HWz57x3iLf*z5!s=a4(O(ycL_cdA zpz6{Fnh=qOGFFL4*msS^D{93 diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.class b/build/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.class index e0f2b178bc466bfd60d184a5ffaed8d9b9775e5b..b46c8e869415d9f29882801b094cab85280dfd84 100644 GIT binary patch delta 69 zcmbQjJ%xLNI18iTWC@l+Nl^w)25|;H1_>aPW>900VK8ElXRu^Yn!Jc5kWp>&7Zy8K XZ3Z?5oyq2`HmrsWEDT1ID_CU!gq90X delta 69 zcmbQjJ%xLNI18ijWC@l+NeKo{23ZC^1~~=^21N!n1|M)8V=$U*&T7MI&cMQ8F}Z?O1^|sO3zq-@ diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.class index 91c50b16c01188f9f2c21ced926ce478e5457036..861f574e82afd08d3eb2b2aa224ef5fa916a978d 100644 GIT binary patch delta 440 zcmYLGO-lk%6g|&36c-x;7ECq zMn=U9vI=tU(nrT$U7N_;Y1aMrPxZ=C#u+kJkB?isT!aJ`v7}&GU!lD@rE?t{)_L(2B?vCR>Jl^#_~VP>uiq delta 471 zcmYL`yH6BR6vlsdX4u)?xfyvZAS)oqV|Eu%3xgoaLrh$fB{7&tNtR?n2w@j?W+0!rQLJ)tzu-E37sY z(-rg3F7~h7XfH(*i*zI0Z*DijNHJNcn1VH^UpF_S!zd1S=ZbI4s&!y~TW?Kdcda{7 zT;F3@mg|s>A%&uoF2S6zc`S)Qm(Ee8GprW&sc?&KK_6SN8;2e|dIhEOrr!LtD@R9? zNh;)_yn!dK?KPsD5UH||9 diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.class index 611ab045b514222babbe9c974551a29fd480d15e..035cdb3a22a994feaf4dfdf00ef4b90469b64017 100644 GIT binary patch delta 722 zcmYk3zityj5XOIdXZz0QwH-S?gF{H{B;-i!5F3X-A%H^+go-k48Y*7G0*NQMf+Rvn zR5UbkaYz)<^8yHo2cYBuB4GAxoo|bo`F3Z%{buI3KGnzH|9<%j>~QEY&w8GK>kb

      +?2@Rut1k2uf_@imWm;_y_nf*)R}m#P`(bnGLw z8b@!e=izJn$EYgO&B>vV&&1XR^~Edk+0D3wj>V6Saw9_*_doZ?u_}M^!7bPf#nGIBWpqF(u`g)Zm69lI3dLkp9r30y%l>3+{N1G0^;D}?G9y{Yv~nPRWJ*m>5k_~!+-%yV qcn)n@O-ClZm0~L|Y-JIZ8Oda2U6I^N5oD(X%4IE9eeFLZ^h`Mb delta 783 zcmYk3Pfrt36vcltLp$v-EkbK4{sCGGg`rw)5yVQ%AC;nRj0syKwk9=Jl+qaEqMyOc zLLtV)m1|gxi3?r1ap%hT4P5#Gi1EI*7TzTHy?b-+x#!&3wSU`{?|(mk0cN>v5hWdD zifM}oPLLTgCg&}DT(HP;(d3f4bN;V?q(hF%@~UIjU;4GH&Ys0(aw_B%$(+f&$(8;4 zJ}rKdn8||8RSGuOSTrfxlvr}Nv~2$}D<-Qp*GanjS|)yjn>K62Y|5;g+_E`GOk>e4 z8KbYijk!79aewIbLSVc4yjk0>HZ(F*cdC_U_QkVW_EBxSv7=s3YMYO<54Y;|2Tv>6 zd(F+p%f?Q%UYOp{7*|y8D}BQ)8b4bR@ve>^4G}7FSh6Czyufxop*aWW9>%`pI&q0% z42d!N1luo_5rypFImKzo`Z&|$nvq;_X-5QV7y=og^}kc=b)M~Yeh?ltY4w0U!^2;0 z3o-YIq{DCC6OwemBlwY2I{fw>1CmFv+LfU;)IJ~-CG2rR%{JQNlLX{FE-@wY*C$9Y zNm{-<4h!<@SD0@*iium9-PIMKz$jxPd|avlj6)K}U|19;NJ@3sz3Yp#)OI@N3dgph z_q@r!R9Hckp(6KxgtF9jIb* diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.class index 4d05efa1f2f49f4c729a5fead66ff26be5364d93..2207bd0079126c361fdc7ba13e2fee73ea5592f5 100644 GIT binary patch delta 560 zcmZ8dJ5Iwu6r5e#+1S{GBsK}e2?>7^14TeWG;jFYVpqeS!+c-i zK;dwCBShDQr*P!r7$*u-7c=ydI}v#iPFToJJ-=@gt&i@1p%_4Ows##noj z#zJEzn7i!PL}d9rZm*zTGHRx({M0uTa-GAPgeoPrN{M{MS9-@O?EgC+)9Iw9U=<1i I+nLqDAKK<9H~;_u delta 617 zcmYk2Jx{_=6o%j17D~&tdB}%O*%L@2r@YF8%*Qkpya+XMzo24KMSZZvSYZr?iUx;;CWnnB70VneD7gE~POoB(V;u%Z5e7rs zJz(a|ea-!3w??AlT=vd8PM5*1@3~*h82)CKWn~x+0hdEX4(0a5qa+r_*cf|EjD<1Um>6SAZD}?!kr%MBkz$P$ zb~e6&Z{Z7w{q($ylcJjJ=Ug4y?1nRdv$ZNe|CC}BI!iQCJ+Pz$xxi8u1%Ry)*G*2 zFH~?OC<@9TNPrfTRLSuYQkbDG0MjFAQm+VnV5IA=4i69GbIO9)R1>`iM{w zv!OpB;f#U<7%5EI5XzY57&D<$Z6bs;Dddo)3zRVLGg)?}GPqPuc``~dORM7#w6yi L1dP6>T;~4(BXm86 delta 666 zcmYk2yKWOf6hP0+uCvK{ydmC%m%$jEmpA6=@JtbJ#*&14gZAqzyJOE4cKHWWS-6(=eZCP z(bd&*$O@|gYns(DOki)$qM`psYv1&K}B?P6sGaqL zHt{7kBu3N)(-gp>RNSPMC63F^=R}3wkiBBf1oBuZda+zI)oH5ElU3(ayy9H9aH$>8 zki~pX@PTGgniac6=5p%F_K35{Z|(or>6Xw_^4G`4k;K!q1gh`tOI8i*ebiVyZz9&2 z60?<<%)RW~E<4pHM=f&P(TrXoqw$2eEYDn#!K_Zv8WrtqMH`f~T9VT^qChB0&=cik N3Q#KnhIS!+?jL3QNM8T| diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Off.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Off.class index beeb2cd8f65c64da0475af7917c75d52e8e85c60..479b64c5170409721b402f393962a5724a6e53ce 100644 GIT binary patch literal 980 zcmbtS%Wl&^6g`udQ`b-$C=_U+p+ag4Vvr~g3B-b;BBTf;KwYq@#?GXjHnyXgF|Ti8 z1B)WD-~;$5#GTl2tq8RXHup8Y=bn3ffB*UU3&18;eY9|K2A8nt<1()JXyU4eB@fFC zttTo`_9;VsZGDHKv6c2E!(2}#@>LdxQoj@7kSd*C8j0bK(8}dSv0?X>VR+t4^&Zd6 zKxt$7Ku6q45kI{9i0d>=EsxST7D?Z5l~{2oclV^w{AC`$pm_K7VDOm1cTAKRsxLIp zlb>XiS&DpRw&}&}%l??Q)$r=fh_$Kw8_p;c8@$G-`w~C_KkuXe6l`y zAV33WF*}aNA5rBDWv)5_xL*Kx-%&e4eHvn(=5;C%UI{T*Lfj%q2Va@*NCFF$MpibS z!#uq@^0$lGwfa}ea^`vGVx_ZIcG7_qou{x~BG$_lh-230ONe9Tj?kE1dxbRWRsfm> K2Ri66(}lm*ticxm literal 1059 zcmbtS%Wl&^6g}fSTsww9DJ_rkD4{fj3L{Y-Qc)Ka6(L1MqE#1cD%+W~Q(`;J*u1`p z4J?Ypf)C)M5O-q7u_}}<@M3iC+_~qRIiBBte*OZmh7}to7A#!CWgB%|v2hiP8eKDS z-NX%s`ZE!UWP_p7zPraz-Hdyjq1hD?-%dlH%U#bO(9Uc(4!pshCxx!_&1!Ne6vK;d zEDzjN^@UW4+n0fxa4&rF;HfKPKTg~r4nr^MDOW^^_m1x$a8J6gGW?S8{_B2!ox#>l zgf|dhNYCV-c#tN9Y@xQOqYim*vMIcVXwiDd_OU^%z|i{bhIUxQ(p_fq%cP`Ftdga*Pt8fV~cW?3+_ri;DN z$z^vON5=5@l%Q4WtIsOop(@8q(auQzJ{6MF&suGFr#svkldS6pu{Pc2zZK~nsU#j! z&UJc!`m2LXz@pWrY6Au#!0G$|>wJfCjLJ8v4K!#yi;C`{N~nP*Azh8m;|%SAI?aOX z9@V=tmYI(!b3JApLjEi9nSQAvJ$ zQ4fW{B9_$CvdUIew#rfEsNEb7>@nC94qT49#2VJUQ&!J6BsSnmY@#5sr8;I{GaPvD zM#+0(Cs}dT?zS#2+nwt!gIPVSoq0d34Raxi?D z4^$h-(wU)GdV@(>ic}Lp74##ANvcdtY1VGY5|2pazNJYa%;JiqS fE5#68BW5+C88aaN0V*idvMMpcp9zM!z-#drTAVY6 literal 1214 zcma)4TTc@~6#fQEmoAHyQZL{I5wWEpi`)~8CPFYIRTCjR_(Hbr0E68f+?mD8KhfXd zi$2uogTDJ~`~}7{-F9gRsqVwsbI#27oo~)Lzy5sx0bmg;HnJGY;1UMNi5N~ZLoPz)Po86LQi+83eH?tWNxHTV3Lxm7om6{+2-^nEX= zDOUvAd&Tz-xEH!xvHyhpz2}i$W3Y`9;nl@^s%P=Hyc%ipY@s&kL>=;4Q{_vtJRpC7 z=y(`L$J(6O+cFBPd{Y>;`7`XZN8X9&;39@B%s9A*SqCoW9Nfn|L!rC;br~q_1zK5H zaH#R~4wf+LU>QRWu3?Dbad(3Mc|XG>uSM>gW8ubaB(E+iNA2dh>v0nqCb}1UVOkzH zr`>CY<$p{_MHTfmA{98IhV)al_;m zyGuV`1w+P{C;X|@GHh;xVXe{15UtYk7~{0h+2*3B!OV=w<|y7mFL}Ul=_^?23wj#p zE#;AFApM!rJs2jNLyGJm*(?SKoFjOiGENM|C0wQ`g)0f|G{uINosyWkpsS}qmH@9N zz}1!>o22B?-++C}V3QnR1R0EWu-FO92<78fx%4;H`brH9d?F`)M=W8i1KgK@X-8Y& rr54y~cEdSae-ddFIw-7!;(9`{&{2QzEWtE&YNmsrt%2c2Q|ZmW#*_iR diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.class index 6206c3ffe1ebe0b5897f25cd93a83da12ec90591..8558afd3ab2420998517b1c2b15e4c1845747ccf 100644 GIT binary patch delta 602 zcmZ9Jy-or_6ot?159=(mAjprn2q-8D{uF9sLyV0NU}<7}0W6^B1!xQvR9e{(6D`nK z_yE3v@mVyUfz9s5Dej$_z4tqJ&VI|GJpKHA{{V1|Ll;SuCDu`KQAN$cMxygI)@!0K zHg%}GaM5tE7BWA&Dw_YKhxiOGtbeRDOi%rYisYMYo$ns=iB?Pp2 z)__>ERsiWyqd;a5bmqd&E12`b@(YX^%n8!mJVMSdm-IyDe4;E>L48S19y$1o zkw7_^EYBJXM&4#Dph&)cRYwgg3RZQjA!!}5T6i5BIyPbGn1jKv zZymE-@2OyYvPZ+;YTkCPTg^5@t$bvSSx!IcT($4pcg>sK%BgiGTy_KGiZ34+NQh#H zvONg&1?c7*nE47}1o4G(0bz;;M2Z?D^2z%nywa{m6f=}bh`FpP<($Q)04@d+ilF=7 z$=uGk+j&kpyf8B{APo?rj~IL-_@ALpHdPK4C$6HT3ZkgwAWlyj36Hak!%t9+1R*X{ zoJF!r0{p-S^yX4QTdEIP8j3^Ou-W#BQ^ZcwiL)MV(8DFS0m9NnIMi*2s!YAw6Vzyu opsV&>An$=G?hsNgqwX+da|CTVLYq(|xsnGUI{-#L`E6zX01t^hasU7T diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualIntake_Gear.class deleted file mode 100644 index 56eb77ed62b89f6209baf3e27e3f2269c159a11b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1289 zcma)5TTc@~6#k|cwp|twL=>+eqNP-ptB_zw6ayitnuy`S7c%V*Fu2{Vv$J^lO}@wj zCO-HB{87d;+oe=Ag_kpP&Ybg|?_B2B?;k$_EMm!qjoU@s!Cf0g+$&-X;}-7Q$Ya9B z156t8Lko{Alo)!R%0TKhhHPnShatBfdV*n~Dg*HB4 zK9CW^Mm1FXZXE4N6=`=*)m<%kV|jMPRbegEZar)?c;H2@3^ac)cJ~EW?n@rT+}~h!y`|=BAw8SS-k2T!}tGn9=VeETCHI;}W;W4mx#y#4gi0Hr=h(DRKBA|OO zB@#--O>JK6?J!n#u^~+zBmd-`Ipjy&K`$H&Qx3|Qc2L1%3o{N}%rca_R~KvPyPLcr zn%r|Rhj|MN4h_O_a03p*i|*l#ZI$Omt88#!RHu zq0> F`U7=58=e3F diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualPivot_Gear.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/ManualPivot_Gear.class deleted file mode 100644 index f5970adcbfe90625ca7c373810aff17c2b872abb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1494 zcma)6%Tg0T6g`~`88S>rL{Jfwmq-Z6pol!h5)_ImP)jTpZm3SuKtnPUXL|7QHM(-+ zMiyA*Lic`+KcMC9NeD<;!KAAD-tNBVp8J{~zrTJ1a2F3Ow4y(W0o<^V!eA0NF=QfZ zp$Wq#au!A~n)v>c9@9^2xAeO)6OM^-hQz#drCMN!XNNZ#j3uuq7}9If6;Hx)UidF~ zzC*r`Bc^+0K^YL=5VOEXGz%SoOrf&nIwpwU0c hm05@AsY6WEAewSVu+IX_5YO3D08KRj>fwlK-yf24N*e$G diff --git a/build/org/usfirst/frc/team708/robot/commands/led_out/LED_out.class b/build/org/usfirst/frc/team708/robot/commands/led_out/LED_out.class index ced0208430f397a3d1da0c6d747dc5f85726e1b3..3a5335efde68636f55fe5eda76c3dd570eb99df7 100644 GIT binary patch literal 1069 zcmah{%W@Jy6g>?C6NZV2_3>o5EV zmu`$zvC4%X;73{BhLNCE!A;*s-+Rxwr~Bux?>_+C!J2~^T*=`ouH|qY3pQ>zWEUOS zxM`zk;}%2qfefVHVn|o2Ee5L*b_K&+QwHKm-0z6!nb+x2rqB$1uh;S-Y2qYl=>w@4 z>di2E#bdQEBc=I%sp8P-< zvwPa}U+;Q@WV|ij2|w0!<4CnbmFhrrhfH74DFX8IGSDK5;(<0d&R!TtzSxn5v74aO z4!t*?iyRyqB^OI5+gNt7f(paRbmEOLP}&Q$a#6*qiwkfV?oRJHZCQr0=*Il*K=P4J z2$~f3$U<=S@PUb z5zb(aA`A250RdH-0sIK5=SN6eFF$@oItk`;pO80xdX!7j$H*9{^bo2*tsz`%KB{1A&*h#=0s;| p+({oQ={yy(KGAprd2!r$BJ?q`{|fz(*4mmFkV%jkE)Drz{tZX$&<+3q literal 1194 zcmah}%Tg0j5Ir}UFv&1HjN%I+Vnjj+43;lSC>Efsq6=eX;lenXT;$?p2It=K^%wqw zOE+Q_R=My4{3y%5lOc%<;-;tjrn}GSK3)0!=jSf~cd>4vfVl$ZQL>Q7^#Yj%6E`fB zaZ|r6nz&_Ri6Q5OaiAF34#U`%2!z^Z$X1q{490HQ;S5uC5%8yRx6PyHZri7qVml5~eT6@__tt5hxx-@sZNM z4R;M$@4&b47n5ygw37Z*S!JqJ4O}EoZm4HHPwNfM3|-kgR)-);Da1^Y&t@q3A}$dVJ#dY_nqW_aSI*;`)d ziOO`&Ct1LADdO$>k9n5*Y0iT*jztn`9;G6b8TZQNG=n&aM~I1(Y>qoUeh8sEq-3sek_%XHM}B2?3T#`pOJPx8_(NQPo4XXf+&G>x+q{{Hpt4 O25C)^4Cl*R7ybazz0H3B diff --git a/build/org/usfirst/frc/team708/robot/commands/loader/LoaderSpin.class b/build/org/usfirst/frc/team708/robot/commands/loader/LoaderSpin.class deleted file mode 100644 index 109dc905d39d22d1fb92d62fa442841d63b98e0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1190 zcmah|!BP`J5Pg#@*|01L0tzZo5s(m&1wp06;)2B~crX@LS><7p3^2IajkB|${)u1U z#fu(dl?T21HGY9*PqHK_EyEsqx_7(Zd(++f^Y^#!05-AVz(rvgH*nLz2yQu;#cdmN z=A6&`_(e(dm}tR#zhh(3Mv)=&SO!w>FrmH0OInt0(-FyBI~z#*&K?mR+piu8ma}9;O)<2VY?~3?j_~9l2P;x{G_5 zc5xLshONPc|GzuKf~d#dSyOtQ#*ydC>dAS#yxmUQ80H33JTpzENp`x+uztZfqPQBp zi?nD&$s}kBStZ`YQVE*oO0hgxSLM8Z+iZ+CSlmBkG_i;#zZa@AuFS+}HDd1Xho>|# ztN6rVIyyW$@`c$DTG$cVZ1ZG5Yk?fuJViT5kq5Y?uVAGwNVSmuOmPZhWOGQ99fO5S zR6kCZGCTPcO;BWEvWvA$vB6?J07C{$^%c@TkQ83-7QP}HlUHc-TOTk=PQHcAN4Vro z!Y1EBun zQeBa>oJr+_q%zwUIsBq`Nr!NNRoL_o^g5L7VqEKDY$O;%r52pO0X9kK{XT%91c1?1 HjntVxFZ=VZ diff --git a/build/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinIn.class b/build/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinIn.class deleted file mode 100644 index 949987e5ae4aa022801e8a02abf7f349481ac2fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1101 zcmah{%We}f6g|$PlS~FeTgt0ITiVhj4Y-J>Xw^+nC8WTDpf1==5|_G4W`gZ0k8ffF ziy*P!1NbP!^<Vf znu9wI)*0sZWFXBxL%vo&WGJ-4zF?@fWguQh!>&+o{qBHH7TRIY9~}Bh+B`Wdm}99K z_S&I(&m(;#l{WlH^|%rK@afJouEK6;crP3d{h+V;AoTk}@pim)MlyIA>@v7kf%FIR z3)OMNC((-x?Odr3=tduleyr{tMG?@xA_F6oiblrXxScRkJ#iqd%K0?){S*Jx_u!)9 zV8g>E?t0iljbSTWZYvD5@dKkB)IBt??V*W^hb2@Po@ZmTzRIvE`Vs#)l6>M6?FO=Y zGWCbICO$E&XBT;6U8UAd>|}WGAOCgK)t|KyL!DSprk9lX5J@Gdea%`sTUTd_-?byc zv&H>Wj9Nt9kNm-_@RV9qsJ(~>O`C9pH5$b-O)M}6dWQ-{kFtH_Xa{(WA7G8|$c>Tz zMtKewC|*RK;yemiB*YTs^m6hZRa~O1K(|w_ZOSbdJ0q~gfaMgBMm_;9%z#g*jD1(4 z`qeRtXLy%{04s2?n&K$UI2Li4koF@@S}jK||JBA={-pXw3YnWBX~q)d;{@r%zn?o_ myiSfaQWVaN;>wKTVM0-CjNzOo;AGNHilCSfFkFq5Ui%AGIpClG diff --git a/build/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.class b/build/org/usfirst/frc/team708/robot/commands/loader/LoaderSpinOut.class deleted file mode 100644 index dd8de0c402c777c8f35b7ceb13e909a311e5a2ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1115 zcmah{%Wl&^6g`ud8^>uOlsAQzwlqmYrw9<00^JmKm4ZZ27wnv5N~dz{;2D?4H?e_5 zkXXQ;ui*<2cO1u!ie$XFo;x$=oIB^JfHf~$EQ~LRvj_9+o zj1?2^nxj<8OP^)5rc-Z*3^>;(hCu+Wjdco7YIB7E)kJld&sg1+k=x}h|A zvRTl_QZYR11mRmAsUsOG&5y!9*TNk>+1}w{&a8xV$$Mg-`2>^tA}XXr#@F-3_9!FZN|prjbav zw@%zs*MWnog?kP*PIFe%(RN)JmtH{(F$;y z-@uw*ksBlbh4LI0D9$5K@gfSS5&9A?n46RPv|FRBK)X|}P09@yJ0mb+!1Wm*OM#0i zaED~fJ)86wQ5?fMW3Z_dU4j%Vk_4ta(a{{)Q!&|7>FXfQkOv3^JD@Y0MJj u;{<8N@1Hv_-arY>844?2YH2qM(S`F(;piuDxbvJ2NRrEks z8$8)n32URXqF(fKxRX};j544J+q@~RtXCq9an!4?q&_;XtoP8l*OBV$cZJc*; z0T*4&Vcy0i7ngBGpxi&!MEeczj%=!yth-nMWjbS@K!rz5jfG`$$e8qc1ovu0_S!pcbrt?cd=H@ z*h_1ikJPKgXFUaGN|pY+HvZ}_nvR_4Pww6tyESa7Na`@^=AAxvpx9d_R%q~<(l-*V z!+;Y|S~Fea^>_PUjO;1)INN$Xe9fM+N;li%6zi~sV;s1V_Wb2QwkUEPC0;>>65y7< zLX^KCvx)3y;tY0i9YL0B5f<+b@npBT*}0EB*h^$#Uux?#v9Tq#4H##@{vJhZ1 zne`c=s5@c;$|yu!sxRG{pb{(%-cfJzFsMj%1)+vTgFs$>I>ZW9=`2<=fuZ!VK!F@@ zKtkrknaY^8jCm#bO&P4tG3*7_<(yJ~K{!!(9tyvc2sRRD)uo;-e{0lbp~bp* zO+$?YV+)4)5?3lSfz(y6;L6BM$pM$tf8&e_#5_$iBj$%(pz{dnA;XFIn-&yG%hig_ H#NpN-QH&?~ literal 1453 zcma)5TTc@~6#k~SZI{I&Dk$DSKuWnRR{@J?13^d{O@#2^+qOHvkhWWAXA%8PzQ{vO zeDDYOql{;^OWSBt$R=mb?9BPjH{Utu_n)7?0IZ;Bq90E)7{!|x=>pT@!a$gLt@)=IYYK2>ik_$D|311l&kb-u;f*o z>X9Rb-bX(Z>Qwj)g_0*v?7%-3(pUDetk{Y>wY7zHTY6!Vfv*Y-rY0bqs`yH241U2Yfg&$Mcim$BL?>rE`kKE>H~mxYhGajI<#qD=M4d2Y z&`|osJn#Zp;k!b|Wjl%H&zy6|!YyPC*cKMBXkiJ<774g&;RV(VtXtT?ONM;!*91yb z?YB;iHyqbO0htt58&(wB(-xAvu+KHdpG+?BEKZpj#<*%(=@Y z!{W{J?uH?{DO@Sexsr~kGpybmV5c2MAfvqndcRK{;x)K*lqaKt(krh?)?I$eVVrPP zywFpS$n8&4pDy%H`oGBZ*s#^ZdC)LB;UN0TYha8^&sN>%%YxaUT!p8>GKh3k7#@mv#xdb(LX;_BsRW z0BH)qEPT7&&QC)I7Ll_ctb>%Vj{dWoedLB zQiF(&(5fFjORHuOi+|HLd|ZoDu8UKw&4~svid>B%jZi7GL&Xf!&XKzFT@Xea;!zu7 bIf6*$o9O!&V3~NXbO9tI07hzQrceF?aD+uK diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class b/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class index 71d2cc9b5321127e216cbf4bd80040b32d6d153d..b95dad8079c1f15384b4f0b5db531fd08cdd67b0 100644 GIT binary patch literal 1036 zcmah{%Wl&^6g`uen7W3RQr?f!meRBZraW6gKuD>&3M?qPTDO)^RM7j^U=OwUsGB>&d?loDNP&};?0!g#Jb(LUGXK7pRD#voRgnau@ycHp) z5&F0uVg)xCRwol}>cm))SmR?gL>+4())9s{i;&^b|j8GqMTe5escJrx}u zDZ`sXg&3A6FL~+oB#}l!GTi--^d^hU2V-SycrLe0N$}0dOa7f9&FKfaU)GmSbFaRW zAB(ZNk3~ACAV0Ahs1YIA6ZF1Eo{>Mc{vGTq1r?km8;}Pn>d}GDP~_UF39~pw-oso0 zu#IY73%;Q;4{w0lILZR8UMisk1Ka) IpEJGi2NB=SsQ>@~ literal 1422 zcma)*TTc@~7>3_z%PuUd9EytI0Ysz}WH}X(q7orZOsW@RxbTK-+W`jK-8!?2hhO0T z@YWl-sEHT;0Hc4&_|0}H4be)Qd~@3OnQz|t=Ev`E-vKOR)4~A8dvFI67W#2l_a=3? zr^A$qjIo*eseivLOe1S-e)>p4K#yj0nAN)bCgw~y4914=MDU0qnVH^YNNxEQ&d^sB z9)BLzN?g8lOI4Z~Ec#`)y6Z}z$MIw;I24Luqv*>6Csg}Fs=(QoWhdZnZFPRlk$%Y! zoU&i5xn4y%>d^NCE}dtt7rNCQJ<2m!Is@TW#RuBQTv1?-xX%q7{7O-ez3ClKeSh2B+H5(7G&M?(E z`7Pg5f$IgzMBc^*9@==M!(*gv+(epTy)&TG=@}+@C3N1_h0`>TdR0+6I+Gx7Xeao@v0Edq_|Z7|(tM%bp<7 zK$4nNv*~I!1~p&kqXe!{9DzacDpI(HUJMiLI{im5hEbXY>?V*_hiR0ewbRYkkc`%> z6BtA2ZooRDT0{qKqlY+W6stuU`3I%9flKEpQ$(5hD`gZn;)Bmps}G(?e%3KMnYIRS z+LVdb{`A&jWiD2lbczNppWl3$?8&tu%ogHS3$YXLwXZbcjR}5g}j?Q%K E55tT>jQ{`u diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class index ee4cbf264e6946e780a660c92bc5b83cf7b15080..7c17144e737dabbcd8fdea689e5e78c83352f762 100644 GIT binary patch delta 495 zcmZ{g%}&BV6otQO`eTPu!9P?GQBk7eN*5+99X`zP*C}1%j9v|6OH8Z8TnphawG1vO3~EMG8ry8? z)IDIV?sT3%b+t&pbPg+Lrh`>0{osg=TnOm+Hum^`TJO_=l?H8y<9@u5SBEHl^`fvfB-!Q2V+qrQyndBTxCBl;NH@ zYVR<(mVyX6;tLgW_$S_q4SBB6HHzpq4}0|9ljRZlB@q#dicgG;U}t**AdO*bFKW{L^Fo+;41H|!lYU%EyMbMhN0u8{;Un}YQK?;gC;Pn z_=i|1PQzTP)CV(boCECGg()6#9&*L7cJ;coUWy%jsKhBZDi9IF*3|)CWoZPmI#{58 z`=xff=>pQiS6=t_UK@FW8TvCy^eX{HFuONouhDHEIr4z1>JPB$cjV46L`Ob33Uqv< zXbxj!Z==w&d0LVZCNY7#^iAP9y?O}>#_1Kv<3?6tk?ytvy8yBjfa$(OTJJRRW|p{} zQgeybc=6>KoC^e(Vn7)qnC(MxGn89IHfeB)PFpQE^wrv4BT4;AUuG`Lr2S7bx6(|f rr^@i<;>)DuN*{!iK}=>48!1GgdWMn902?IJW*6 diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class index f8a3bf7d1b8ab584f6560572d905bc8e3331f022..2043ae44f25ecf7c8daa116c2da6ad5143d68398 100644 GIT binary patch delta 495 zcmZ{gO-{ow6ofyAG$w8mD1QZ7N`XQJloc!xEI9?I$r(_^DPRMOBC+5ATmx|m5MrFt zB&tLf@7eLp=kfcBKke}S=k*P^;K*TV$854?*>-g3IwE!~JpH{~`gX1T$Z)dwLw__pm1GNj$Xnc1TLCSUXc z6CeBm{wU*_?y@wPRI|qHN56h@}SV7H$k2=HRVBNbi(k6(EcChMU4eK76JnG>tMj4(D#t!P4 zVS$ISe|9ST#4^g-qIq&*l)sx8#xOUy$UAE#UD_O=4MB(f5KnLZ%PfVVQ>Rw~UU zRTEDB9L^+!l~!9Vm;Y*GuaTsFxeuAkkTm`&ax+CbJy(XW n7GEJJYkd?>MlqF9tfv&k$~i`^60DO=8+`=Dlz@?`R_XL#i+&Yj diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class b/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class index 9f098c8e7712638cbfceb03d65798a90f3f83bfc..a1a0425f846b0f3f8d8578d5604d61c94040566b 100644 GIT binary patch literal 1336 zcma)5OHUI~6#i~oW?&eEQcy%i0fF)y9+tPH2@TN%h@pmsyJ>rYi|tG^a|a)Zd;ftu zUAS=LMiw=3;Scaf8PA;#r6Hs;i+j&Gcg}ad^WAg*{QdPCz!Pj4NMfV|qj+p!4C7jM zpW^hX(1eb(fk{kh*{>hNsPd+@?3ZlAn=#OXSsimaECy{;I6`hQ#M6_942f;G#2LDG zg~RuQN`ZSX?LwI%y}NGFE+5*SP<|9l$P?i+Z0@?=u@(47!t7VdY$o3Vj+#$PDI0WhiRjE#lyc>8$z9SUto~BB3r}mj`q8BM0^ClLssAI__MKdOr zvBEIXx{Gbs@ulrZU&pG6HLRQ1z@~|(NSPQyiebGqKr0y-#&{{P-c*HESCOo;D4bqs zXKmLtWEgE-r&UIk>K}HPyv>LPnw~@eIS^=~E6YgMuJQckF z_&}Zl$ebfqL%a`(PoFVx4lSu=YiK8<4;?jhenWp~n`Em~Jx-^pU_2~12#xF^bm0*d z9L5N}{b`KT_@?S1}39X5{a*KhA~XXa2qokMv;`> ztcp}5ul$tbmxei{HQd2`B)>x;G$Q#AZvsbtGa~u-`R*zsLGG$pP_f7m$q7q%n+)OP z>>h(suxp%Qq$Di9<2NeYd16-Tv=cAcRkOZlIzp~Hn~HZRT!vi9b`A{R-4~AQ8T(Gv z@VMDn&8!)YU9ml*YBw6DRdWsZ(6&A980Dt0%56W(ph*S7tc%ygqw<%$>U-p!DSKx1 z*|yp2kZHo*qLc0+uLWwKlI0fp!@?p^$8UP_i&nOMr^>g4RDG_GY5vGOHg#M;LdBAf zWvu8}#hQ+LSZA0Se1(E-xt?ixu8ORV95z&J>bQ@*jtAJ#@em0elSnYE4+a{P3x;W4 z^NklxVYE|8UR_jL&wb%= zdf{}kG+0^r1RyJ`NUJ&Gn0t;XEQaONa~Hc|R2G@Rcl=i}L)7Ko)m?nj$&$J!FMY3@yWD{h^F-$vgT%sSKw?lCmS7@c+Y8Q5n))JQWKqN0P z(HF?NffL=pCc(&aX_7LANDI+GOl%C=+jkfVcJ&s{euN(QBjihta3C~+A@U~?!xSM- zlbx0SIenbz4(ByGryw*HC3_t=h*M@GO|xVVg+ECfV77H<`Y=LW-PB2)$mLF?8l>=i s@7fx{fVwz>l|Bfy3n7KJ$rn2iL#Y-2ga8-xBvhE diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.class b/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.class index a3b2615d96b211b88f607765fa0c4d896c074f1d..31ad333d02c5c08a61acabd3f47968dbf029cda8 100644 GIT binary patch delta 527 zcmZ9IJ5Iwu6h-ei#$yjd_?d5h1PB3}!U!TET2{gaf>6?X4ag0PND~SpQ9w_{E+}YN z0pd=GCzhvpZ$9sxcjtcjPyXQJ_w^0H6=DU2{QwO#C0gG54{x~?+US^Ypb(%daVT;0 zc=KIfhL$+i=;1`5pVggq?>_L2rgjGp4aXM*0u2~)g z2x45}>5^G6FGVj9Q*Ip885J`Kaj}b4?o2t0u!ePJ7aJCEjoR!@J;Mp%=J2YNCO^?a zy1*!l*|eCLSTmxe!3YJqrTM}(hS=h(`M^1|sdH)*6KCrGJA0*02WcUl&dgf}^Hxde mIb>CLM62QwL)z&(7O}7|hhGIGH0q)Ngj84fC+Moty7vb@UnTqi literal 1127 zcmah|OK;Oa5dJnVH;&Un2~eJGDWPc+>hKbkiXuc&PZ0-#df?_bTe2mwgLlpAH*tYO zkT}4dU&Ajz%-XIK1u6AmJmcN@=9_QEzyJRD3E&}Y6D3?L;yP}aFmcnsdg0d}I-=vW$=&O4HbE&kcV_42fQCKd`*^n5%(|xl`+8qmi|PGejYdbi5IV!|nCsEyYR{v+lgb}slQy#yZEFEcPmJs`#cgEB z1FZUYu=+P-CdhuJID-|k%gBbieM5IU;{;JVTxj=C>M!d+)9()8YPqcqHWYbT)#S#nMpHg x+mg&jNv09?zcgRGjshAp5Jn2ImO?y8AoBGIit_+1lIh+IKt2IrxDqkF`VShF>KFh3 diff --git a/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.class b/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.class index c785c563c634b53cc7729124d767654bd4655a95..80fcdab75a66de58c937f103ed508f0e61dc651a 100644 GIT binary patch literal 6611 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 QPvBXcNX~c3&%yWp1JzoMs{jB1 delta 3023 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 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Climber.class b/build/org/usfirst/frc/team708/robot/subsystems/Climber.class index 4e1f1c0499473c2710c5ffb85005729ac96c5d39..54a9e40e7779a04e034e7939ea8b5438da405e02 100644 GIT binary patch delta 49 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 IsbmSwPgl2ewEzGB diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.class b/build/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.class index 2f7cb63530321e715526be737f88a32d34c17f7a..bfb80d31e5ad3173db686512763d3debdb0ea7df 100644 GIT binary patch delta 61 zcmbQmK8t-rJ`<-X0}F!~gCK+WVF}NvYaLvMX z8&=D>VUDMbIg`Ro+_Eu?IkUT+#2uTw=WQ(Du7yPl_ZSAeK=apPRcaYB3>Pc1?pAat z-2BqoI`?HT&tTUC4@)9Y#^qvBRGaSGhUad1q0(mOd*xSd!K-X`8D@HOI=DAfje~iSXwxOP z)NUz_Om@ZeD5iv_wPw}}y>mu&pg><#uQN>j|MV0e6liL$^hWPeME-Ph%p`1Txk>2^ z+hxNxO~#V%dpxL!y!6e5Vap8D2dh?f9_ng)l-!aryC;jT(z2Ak-~q!(wrJ+b^?6Wp zOFHy|+Wf}E2F}ry9;WA^k3Q;rw4=V#ZvxDW6s;%8T1T9Az}eg$`f}e8dzl{FL;q(a z$go}}_mKRI)W<0P6s;NZ2Svtl3PU)JGxVLN6Q_kj)>*O`MmrfMBb&~CgBS|HSXUtH z1db8)7PTdMv0~(x%6&p&d>8g_0Gm{S1}}+A5y(hnr}jZ81m|&qVCY>Uj}}~+d`#L= zf=lgU;5`O+;G`3~7>s|Q-3|`XHuiyBVk8c94f<)FfQ=l3L>Z|6s4sg3-YIeL~PZN6fT62=na{+gDkW=&F&QAqxb~g zcq36rH1Pp^DC3#!Zz49_Y|fcI=leNl=J%f;zW^*_)4)^|{kU)7fr05Lf=ESRBCVsD z2r`(BVh#^=G#`b91p|u)9x?RUj^d|cM=I$u4CRZmVilDutnAkAJ}*mWogutoJGRYKt9j|Zw`$&z?Rv^O za*LJ{yt20N*m7k-D$A=CypNs|70=rC6&=17+$Hja=FW*DUMs7ttW>yDVu)1aSyOW; zoztp%ys8lNi{%)MWA5p8U-3JJ{yoKur#rmb)Z{5yB?q2xO8YX$z2k!9E;UE@WX&y# zSGKkj?+`M7!p}HEs=JA-bUei!<(Y_MkYVtjX);WAhj^o>K}t2kl8G1wOxo|5ffW<0 zSTpe0#2t*Ac!H+})=g~S8N+gS(5r__c0{RWeW==2eJd1|?ZSygs`Z$yz2;76=jm-d z(f8+2$wQ*kBYH7&fJu6F{q!ao0(yBAg(;@nK;HyqIfN(z5}8W`GCvV~8=tsD z&v%5s(rExg^o`M@1xBfIjQVb2m@>28g&P>5jNxVran{f2tPP+kf$@$;)@mFj(7Kc@ zqR~W=%r}Hn7cklYQBnf((u<@IGUDfv1_-r~s@nv^^j&Pg6{tqjCeP7(fygJs&Jm4= zFVOcHQ3`t~s{i^zRYBirf;<8#!b=lRhA`(kL?;`3cc~_Xz_7M;ujPA^?G`5E~Nqhk${{m{LEmZ&j diff --git a/build/org/usfirst/frc/team708/robot/subsystems/LED.class b/build/org/usfirst/frc/team708/robot/subsystems/LED.class index 5f94fa23d214e6d29fd3794944dfcba8eb64b189..96ea536e9d2937ca9a8f1512c0e4e66b38ac64b9 100644 GIT binary patch delta 651 zcmYk2NmCP16otQ+*y(ihtTa)9M59d{AOa$j1mh4H6ck5P6sHBUvI?v+u35TrL3NcI ze}PNQ#P-&Uxp)Plca_7r*{|`vFYy+~;h_0mcG)84oBj;WHU9 z#kqiK>LDI8u6;hB!39@dbmb+NU3Q_F=ZfphhRiYVv*2@eXRU6o?If>5Z++|SX3Jn^ z6JtIkA5AOjr)pWGZ0VtFh?B^RSA3Q%H(2($X}QfEOFwrl2RY<(&vKs!mWQlb4s*ov zh{u*Ss)qf`3-j^%*2|6f&BkWSa*WvLiRCHJ+V3+X*+x;fA(w&EQWm&ZQ8j%K|RV6_e7nhXeyCbg9RDp%Wf{GymJ zER_+uIirsrO?f?J)bHEnx$Lw&=(D7rI?!~6tZL{g7QPU@`%3rfXO$V8aF_~A2&X!X zbp10j%=Vtnkk*}!`OnU!jd};u>@xE*x3?YEs6^l%2rJ@Zdn=EO4*xaBYK&!G$K-F zBjz|0)5BR`Zbr;=&M#YjdEUDVe!7_FQcRo6mIcdV=ULM%bw0iB_L+}?S?GQ-?@B|| z9m~`lho~8nZYP(lTCO;*aouvmvBE9K5UY-Z^jU5@?sCs@p9hWs4m%$5$gxJ)G#n!ND z1B9A~MIR$(lo5_I!5A}~kO!yJ(BP={kssB*=ii6po1QO=L`2A>{%49R(-~JGP`!VL z^KMKXjmG$P0`0cQX$^&P@jEV;e)vIY?VAdL0--p*MMDwNeNhU#Q8rKRcAC&Z-^uLJ zVOD7FBh3z(SKRCq1SHuh$d}?@`7NC1O?LY>Kd20oss(ylzjQ>;t>`1G?Hbio=Bmt` M^rm!PdZ%6c5A3Tss{jB1 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Loader.class b/build/org/usfirst/frc/team708/robot/subsystems/Loader.class deleted file mode 100644 index a2d0e61bd1c56bc4dd7f4266b1e949260198a8f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1171 zcmaJpy#Fick(s?8fFki4{aa403=T!zqe`x#8p1mgfot<#F=0+z&G5LQf@2=)mK$ip zTS0>xDcZZ+Pk5l}%5WXl^#^TaTk{GrlmRix*|BBW5}{{Gs@)bo5z5dK3a_fpXkwyJ zwv3XxBc&xfrn01!d`hURM`pViG*V15xo=}EfS&TlS z5bcNstq$lBV3Oh#WmP0-2h0~Q5i9;c{LSQxOC&FlD#kD1e2E%!6mxVDSfsc_jmwy$ z5z|!3cH1$7S;`pI`_LOvPPHqLRCIZDsF4jC=dnPimeU@+{5Y-Y;#Z{d-!O6okRdrh z9wR73AahZk?txGXZs9h;Fx(mN*d;J4F@hWa2iyk1Z4Pnj!!g{&y&k7`G{}O?7KxPe z5l-S064oJ`ex`#sIRvuY^5ZmndkAp0$8V9&W)Q15So%X-Mk`_zEZ^n9C{CFjmFz>u fBIvGnJ43L^fp;qdvHvyw=}_a9>Gx?)3=jSSDv8c+ diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class b/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class index 7c28d956d9044e9b8f029d20591592db71775d69..b03cd35249eec87edcea6981309ac106453d2489 100644 GIT binary patch delta 65 zcmaFG^NMFf1q-A6PA7RyIH37<) TPX5B`%4)~J%iuWKj!g#uRfiC4 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class b/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class index ad82d4f0b8806402f37c9fb8611af8fe452a6a19..cea4bffc48450b0e9c1e0e5860b9d04f4d007bda 100644 GIT binary patch delta 1276 zcmZ{k?Qc_c6vsdJcJ#K_AB)sv(ll8{vaqcig4h7SSt^cO<)7YdeOOu3)>jX zr}E%LeB7)8f}$k6!Z#A2Aw~(Wd1YdF>3`tgKs@KRbbSH6$@!godcNQ9dHA*ezW94h z?&0GG^@fhYlazwyYK_-)UbAZDvdUk=-@8nT%lr9fnuvaQN78nlpy8 zoHKmNyx}vp8P2oC@VS}`eBtn=;cLDze9MAiQS-keZ}?u#4@!8EOBRXz@v53!pEot@ z8#eN)VH2H(%bNcq8H;GfpY`gt`+nBpis33hSyTu4b!mTOcxKd}G^922`R>UPKkH4^ z?eeEbi}9bCw^;rp-gnINvW9E?Qjy&6jr-A&(V02Jugu@xRCUI7!_(f(p5c=gZCYLa zpYYavlhfYTF6)IVY@LO8wvHn>rSRaC+U1O3A)^!9m0xiF%%vo@jTK^73%W(THPo_} zM%D?wRWjS?7VeDj4hZM4u#L+c=7jC6FkPmL8>G0&Yw~~*X84WQc|%T%twk;In}c_W z-4e$Z2!vUs+1(XLtBmZHy0pswBJ~?Jxms=kY?nLNLyR2(rbdY1g%U=+HzmW8r>BJO ziPi@_7SS0&za{9M&p_`ep?k|!cZjOi7){4ykAB-P|-lN+<+`z8z2Y! zgheZjClhyR5USOQ0!^``cn#<8(LAuk8k04^ewN8EWI2PZWT>Lpc)8WMG}0Ngy0h4- zpsom3hm>xpzI2U*vafLd&i~~$=VC2otw6QF8r2L1d#DjLWVN*%kriiUbsoJOtO`i@{c4^C?LVS{n%YRgeuTt^<0jiU`Hvj+t delta 1419 zcmZ`%TXR!Y6#jNv&N&I24g`r)GSi7e#+HCk32mVY4FxJF7iqL07HmilAv7eV35Cif zTvX&P9xesJJ1F>|jF54_VSM%v_~hSk#uvwLofFddV9sRiwb$O?x7Pah`YH71^X1?F zdHfW>QrtK3P5{fW-Nd^l1_Nlo4nMlEQ_OpQ3?U`4U1HK=hQ-)oc8kgQu?Jc4_R8fE z<2Y&MC!w5?X!CZ)Z&gRa`vQ%$`OBx;1_~xd1BiM#_e;((p($D@1#kf477ohsAu$sH z9=~tlu!SQQjtbK;3uRf4TR0)>NfW0`eDL6}g=&UXv`c-NR5q`m`kaVwvLS(0&J$nH zU;_Ob%h9dz3c5{vsPQq*Xq?44jq|vmaS`h^E@73%Ct@z+QxlHHRb11!j!BIha{nei z)3_z(wh(@fFBHN~y9$qJyowbXE77CzCC(_!O4?)Ng~({CShR;D*?f1z#8(<$;~NFP zch;XesPV02zawm0(62DvJ4)pGW~Py`ODsdd zpmcPcKa9?J7l#9AgijQs=M&M~l|8yE+vMtp0tKe+brR;U<<*S!VHWLtq8HO^M+=sq z4RJnW2gT{cT5@kB?^bfA$d+Stf@~+rG>Klyu^RWWh998G4E#V$A6JFfyj=7bxO>JP z(D4xh7>-S% z3Z_pf5O5n9goPb-BKT_}aJ~rbC3p`>q}gb2e)#k+h;0onAl-`?^%CW`ah(oBD#Cf-n0 zyIAn$*u!xc6)f@6##sS(OI;~CyiKQjG}V2Ogur2r&Ji|#lp}tuPUTp&1Rn=mCUP52 Sa}Cmyq#q@kUCpl~n*Rm<%GWLc diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class index a0e919361bce0d69e559ceff9380a1b1f8aeb73b..230a29d8d3083e70e9277265cf47bf2ac8caae34 100644 GIT binary patch literal 8831 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 literal 8927 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 literal 8127 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 XTFFRGMlhW~A_(^X=Gb51UBUkVDxC(! diff --git a/src/org/usfirst/frc/team708/robot/AutoConstants.java b/src/org/usfirst/frc/team708/robot/AutoConstants.java index cf4e8f7..cdc9970 100644 --- a/src/org/usfirst/frc/team708/robot/AutoConstants.java +++ b/src/org/usfirst/frc/team708/robot/AutoConstants.java @@ -7,7 +7,7 @@ public final class AutoConstants { public static final double X_THRESHOLD_CENTER = 20; // threshold for determining center of the target public static final double X_THRESHOLD_HAS_TARGET_MIN = 20; // threshold for determining min value for whether the robot sees the target public static final double X_THRESHOLD_HAS_TARGET_MAX = 300; // threshold for determining max value for whether the robot sees the target - public static final double HEIGHT_THRESHOLD = 20; +// public static final double HEIGHT_THRESHOLD = 20; // Sweep Constants public static final int SWEEP1_MIN = 0; @@ -29,19 +29,19 @@ public final class AutoConstants { // Lift Constants (Field) public static final int LIFT_TARGET_HEIGHT = 5; public static final int LIFT_TARGET_WIDTH = 10; - public static final int DISTANCE_TO_LIFT_TARGET = 20; // Distance to stop at to place gear on lift peg + public static final int DISTANCE_TO_LIFT_TARGET = 12; // Distance to stop at to place gear on lift peg // Boiler Constants (Field) public static final int BOILER_TARGET_HEIGHT = 10; public static final int BOILER_TARGET_WIDTH = 14; - public static final double DISTANCE_TO_BOILER_LOCATION1 = 0; // A distance to stop at and shoot for high goal in inches - public static final double DISTANCE_TO_BOILER_LOCATION2 = 156; // A distance to stop at and shoot for high goal in inches (13') + public static final double DISTANCE_TO_BOILER_LOCATION1 = 25; // A distance to stop at and shoot for high goal in inches + public static final double DISTANCE_TO_BOILER_LOCATION2 = 108; // A distance to stop at and shoot for high goal in inches (9') // Gear Constants (Game piece) - public static final double DISTANCE_TO_GEAR = 60; - public static final int GEAR_TARGET_HEIGHT = 10; - public static final int GEAR_TARGET_WIDTH = 14; + public static final double DISTANCE_TO_GEAR = 35; + public static final int GEAR_TARGET_HEIGHT = 4; + public static final int GEAR_TARGET_WIDTH = 10; // Hopper Constants (Field) @@ -55,7 +55,20 @@ public final class AutoConstants { public static final int AXIS_IMG_HEIGHT = 240; // height of the AXIS image - resolution // USB Camera Constants - public static final double USB_FOV_DEGREES = 43.5; // Field of View of the AXIS Camera + public static final double USB_FOV_DEGREES = 75; // Field of View of the USB Camera public static final int USB_IMG_WIDTH = 320; // width of the USB image - resolution public static final int USB_IMG_HEIGHT = 240; // height of the USB image - resolution + + + // USB Lift Camera Constants + public static final double USB_LIFT_FOV_DEGREES = 43.5; // Field of View of the AXIS Camera + public static final int USB_LIFT_IMG_WIDTH = 320; // width of the USB image - resolution + public static final int USB_LIFT_IMG_HEIGHT = 240; // height of the USB image - resolution + + + // USB Camera Constants + public static final double USB_BOILER_FOV_DEGREES = 43.5; // Field of View of the AXIS Camera + public static final int USB_BOILER_IMG_WIDTH = 320; // width of the USB image - resolution + public static final int USB_BOILER_IMG_HEIGHT = 240; // height of the USB image - resolution + } diff --git a/src/org/usfirst/frc/team708/robot/Constants.java b/src/org/usfirst/frc/team708/robot/Constants.java index 14b68e3..5de2483 100644 --- a/src/org/usfirst/frc/team708/robot/Constants.java +++ b/src/org/usfirst/frc/team708/robot/Constants.java @@ -80,8 +80,10 @@ public final class Constants { * Smart Dashboard */ public static final double SEND_STATS_INTERVAL = .5; // Interval for reporting in seconds - public static final boolean DEBUG = true; - + public static final boolean DEBUG = true; + public static final boolean LIFT_DEBUG = true; + public static final boolean BOILER_DEBUG = true; + public static final boolean GEAR_DEBUG = false; /* * Sensors @@ -130,10 +132,5 @@ public final class Constants { public static final int ALLIANCE_RED = 1; public static final int ALLIANCE_BLUE = -1; - - /* - * Vision Processor - */ - // public static final double ; } diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index b789b62..fbc947d 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -31,7 +31,7 @@ import org.usfirst.frc.team708.robot.subsystems.Pivot_Gear; import org.usfirst.frc.team708.robot.subsystems.Climber; import org.usfirst.frc.team708.robot.subsystems.VisionLift; -import org.usfirst.frc.team708.robot.subsystems.VisionGear; +//import org.usfirst.frc.team708.robot.subsystems.VisionGear; import org.usfirst.frc.team708.robot.subsystems.VisionBoiler; //import org.usfirst.frc.team708.robot.subsystems.VisionProcessor; import org.usfirst.frc.team708.robot.subsystems.LED; @@ -67,7 +67,7 @@ public class Robot extends IterativeRobot { // public static VisionProcessor visionProcessor; public static VisionLift visionLift; public static VisionBoiler visionBoiler; - public static VisionGear visionGear; +// public static VisionGear visionGear; public static LED led1; @@ -118,7 +118,7 @@ public void robotInit() { climber = new Climber(); visionLift = new VisionLift(); visionBoiler = new VisionBoiler(); - visionGear = new VisionGear(); +// visionGear = new VisionGear(); oi = new OI(); // Initializes the OI. // This MUST BE LAST or a NullPointerException will be thrown @@ -254,8 +254,8 @@ private void sendStatistics() { intake_gear.sendToDashboard(); pivot_gear.sendToDashboard(); // visionProcessor.sendToDashboard(); -// visionLift.sendToDashboard(); -// visionBoiler.sendToDashboard(); + visionLift.sendToDashboard(); + visionBoiler.sendToDashboard(); // visionGear.sendToDashboard(); } } @@ -279,6 +279,9 @@ private void queueAutonomousModes() { autonomousMode.addObject("One Gear Left", new OneGearLeft()); autonomousMode.addObject("10 Ball", new TenBalls()); + autonomousMode.addObject("Rotate And Drive To Lift", new RotateAndDriveToLift()); + autonomousMode.addObject("Drive to Boiler Location 1", new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION1)); + autonomousMode.addObject("Drive to Boiler Location 2", new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); // autonomousMode.addObject("Find Target", new DriveToTarget()); // autonomousMode.addObject("Drive in Square", new DriveInSquare()); @@ -305,8 +308,8 @@ private void sendDashboardSubsystems() { SmartDashboard.putData(intake_gear); SmartDashboard.putData(pivot_gear); // SmartDashboard.putData(visionProcessor); -// SmartDashboard.putData(visionLift); -// SmartDashboard.putData(visionBoiler); + SmartDashboard.putData(visionLift); + SmartDashboard.putData(visionBoiler); // SmartDashboard.putData(visionGear); SmartDashboard.putData(climber); } diff --git a/src/org/usfirst/frc/team708/robot/RobotMap.java b/src/org/usfirst/frc/team708/robot/RobotMap.java index fbe7e1f..5746308 100644 --- a/src/org/usfirst/frc/team708/robot/RobotMap.java +++ b/src/org/usfirst/frc/team708/robot/RobotMap.java @@ -49,7 +49,7 @@ public class RobotMap { // Shooter CAN Device ID public static final int feederMotor = 51; - public static final int loaderMotor = 61; +// public static final int loaderMotor = 61; // Digital IO public static final int drivetrainEncoderARt = 0; diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToShooterLocation.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToShooterLocation.java index b4ac996..71a4d22 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToShooterLocation.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToShooterLocation.java @@ -1,96 +1,96 @@ -package org.usfirst.frc.team708.robot.commands.drivetrain; - -import org.usfirst.frc.team708.robot.AutoConstants; -import org.usfirst.frc.team708.robot.Robot; -import edu.wpi.first.wpilibj.command.Command; - - - -/** - * DriveToShooterLocation - * this command will utilize the vision data to drive the robot to the closest shooting location :P - */ -public class DriveToShooterLocation extends Command { - - private double moveSpeed; - private double rotate; - private int moveDirection; - /** - * Constructor - * @param targetDistance - the distance to stop in front of the target - */ - - public DriveToShooterLocation() { - // Use requires() here to declare subsystem dependencies - requires(Robot.drivetrain); - requires(Robot.visionBoiler); - } - - // Called just before this Command runs the first time - protected void initialize() { - Robot.visionBoiler.putIsCentered(false); - Robot.visionBoiler.putHasTarget(false); - Robot.visionBoiler.putAtDistance(false); - Robot.visionBoiler.putCounter(0); - Robot.visionBoiler.putCurrentCenter(0); - } - - // Called repeatedly when this Command is scheduled to run - protected void execute() { - if(Robot.visionBoiler.isCentered()) { - - if(Robot.visionBoiler.getClosestLocation() == AutoConstants.DISTANCE_TO_BOILER_LOCATION1) { - moveDirection = 1; - } - else { - moveDirection = -1; - } - Robot.visionBoiler.processData(); - rotate = Robot.visionBoiler.getRotate(); - moveSpeed = moveDirection*AutoConstants.DRIVE_MOVE_MAX; - - - Robot.drivetrain.haloDrive(moveSpeed, rotate, false); - - } - else { - - Robot.visionBoiler.processData(); - rotate = Robot.visionBoiler.getRotate(); - moveSpeed = Robot.visionBoiler.getMove(); - - - Robot.drivetrain.haloDrive(moveSpeed, rotate, false); - } - } - - // Make this return true when this Command no longer needs to run execute() - protected boolean isFinished() { - if (Robot.visionBoiler.getCounter() >= AutoConstants.SWEEP3_MAX){ - - return true; - } - //Check if the sonar distance is less then the target Distance, end -// if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.wasCentered()){ - if (Robot.visionBoiler.isAtDistance() && Robot.visionBoiler.isCentered()){ - return true; - } -// else if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.isHasTarget()) { - else { - return false; - } - - } - - // Called once after isFinished returns true - protected void end() { - Robot.drivetrain.stop(); - Robot.visionBoiler.putCounter(0); - } - - // Called when another command which requires one or more of the same - // subsystems is scheduled to run - protected void interrupted() { - end(); - } -} +//package org.usfirst.frc.team708.robot.commands.drivetrain; +// +//import org.usfirst.frc.team708.robot.AutoConstants; +//import org.usfirst.frc.team708.robot.Robot; +//import edu.wpi.first.wpilibj.command.Command; +// +// +// +///** +// * DriveToShooterLocation +// * this command will utilize the vision data to drive the robot to the closest shooting location :P +// */ +//public class DriveToShooterLocation extends Command { +// +// private double moveSpeed; +// private double rotate; +// private int moveDirection; +// /** +// * Constructor +// * @param targetDistance - the distance to stop in front of the target +// */ +// +// public DriveToShooterLocation() { +// // Use requires() here to declare subsystem dependencies +// requires(Robot.drivetrain); +// requires(Robot.visionBoiler); +// } +// +// // Called just before this Command runs the first time +// protected void initialize() { +// Robot.visionBoiler.putIsCentered(false); +// Robot.visionBoiler.putHasTarget(false); +// Robot.visionBoiler.putAtDistance(false); +// Robot.visionBoiler.putCounter(0); +// Robot.visionBoiler.putCurrentCenter(0); +// } +// +// // Called repeatedly when this Command is scheduled to run +// protected void execute() { +// if(Robot.visionBoiler.isCentered()) { +// +// if(Robot.visionBoiler.getClosestLocation() == AutoConstants.DISTANCE_TO_BOILER_LOCATION1) { +// moveDirection = 1; +// } +// else { +// moveDirection = -1; +// } +// Robot.visionBoiler.processData(); +// rotate = Robot.visionBoiler.getRotate(); +// moveSpeed = moveDirection*AutoConstants.DRIVE_MOVE_MAX; +// +// +// Robot.drivetrain.haloDrive(moveSpeed, rotate, false); +// +// } +// else { +// +// Robot.visionBoiler.processData(); +// rotate = Robot.visionBoiler.getRotate(); +// moveSpeed = Robot.visionBoiler.getMove(); +// +// +// Robot.drivetrain.haloDrive(moveSpeed, rotate, false); +// } +// } +// +// // Make this return true when this Command no longer needs to run execute() +// protected boolean isFinished() { +// if (Robot.visionBoiler.getCounter() >= AutoConstants.SWEEP3_MAX){ +// +// return true; +// } +// //Check if the sonar distance is less then the target Distance, end +//// if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.wasCentered()){ +// if (Robot.visionBoiler.isAtDistance() && Robot.visionBoiler.isCentered()){ +// return true; +// } +//// else if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.isHasTarget()) { +// else { +// return false; +// } +// +// } +// +// // Called once after isFinished returns true +// protected void end() { +// Robot.drivetrain.stop(); +// Robot.visionBoiler.putCounter(0); +// } +// +// // Called when another command which requires one or more of the same +// // subsystems is scheduled to run +// protected void interrupted() { +// end(); +// } +//} diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java index 512ee53..85a06be 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java @@ -22,30 +22,30 @@ public class RotateAndDriveToBoiler extends Command { // VIET ARE WE STILL USING THE TARGET DISTANCE HERE - I THINK WE ARE ACTUALLY CALCULATING IT IN THE SUBSYSTEM // IN THE METHOD ISATDISTANCE // BUT WE NEED TO FIGURE OUT HOW WE ARE GOING TO MAKE THIS WORK WITH MULITPLE DISTANCES FOUND - public RotateAndDriveToBoiler(double stopAtHeight) { + public RotateAndDriveToBoiler(double stopAtDistance) { // Use requires() here to declare subsystem dependencies requires(Robot.drivetrain); requires(Robot.visionBoiler); - // save the height - Robot.visionBoiler.putStopAtHeight(stopAtHeight); + // save the distance + Robot.visionBoiler.putBoilerStopAtDistance(stopAtDistance); } // Called just before this Command runs the first time protected void initialize() { - Robot.visionBoiler.putIsCentered(false); - Robot.visionBoiler.putHasTarget(false); - Robot.visionBoiler.putAtDistance(false); - Robot.visionBoiler.putCounter(0); - Robot.visionBoiler.putCurrentCenter(0); + Robot.visionBoiler.putBoilerIsCentered(false); + Robot.visionBoiler.putBoilerHasTarget(false); + Robot.visionBoiler.putBoilerAtDistance(false); + Robot.visionBoiler.putBoilerCounter(0); + Robot.visionBoiler.putBoilerCurrentCenter(0); } // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.visionBoiler.processData(); - rotate = Robot.visionBoiler.getRotate(); - moveSpeed = Robot.visionBoiler.getMove(); // was + made - + Robot.visionBoiler.boilerProcessData(); + rotate = Robot.visionBoiler.boilerGetRotate(); + moveSpeed = Robot.visionBoiler.boilerGetMove(); Robot.drivetrain.haloDrive(moveSpeed, rotate, false); @@ -54,16 +54,14 @@ protected void execute() { // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { - if (Robot.visionBoiler.getCounter() >= AutoConstants.SWEEP3_MAX){ + if (Robot.visionBoiler.getBoilerCounter() >= AutoConstants.SWEEP3_MAX){ return true; } //Check if the sonar distance is less then the target Distance, end -// if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.wasCentered()){ - if (Robot.visionBoiler.isAtHeight() && Robot.visionBoiler.isCentered()){ + if (Robot.visionBoiler.boilerIsAtDistance() && Robot.visionBoiler.boilerIsCentered()){ return true; } -// else if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.isHasTarget()) { else { return false; } @@ -73,7 +71,7 @@ protected boolean isFinished() { // Called once after isFinished returns true protected void end() { Robot.drivetrain.stop(); - Robot.visionBoiler.putCounter(0); + Robot.visionBoiler.putBoilerCounter(0); } // Called when another command which requires one or more of the same diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.java index 37a4880..dd86711 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.java @@ -1,83 +1,83 @@ -package org.usfirst.frc.team708.robot.commands.drivetrain; - -import org.usfirst.frc.team708.robot.AutoConstants; -import org.usfirst.frc.team708.robot.Robot; -import edu.wpi.first.wpilibj.command.Command; - - - -/** - *RotateAndDriveToGear - * this command will utilize the vision data to drive the robot to the center of the gear - * and stop when it is at the gear stop at target distance - */ -public class RotateAndDriveToGear extends Command { - - private double moveSpeed; - private double rotate; - /** - * Constructor - * @param targetDistance - the distance to stop in front of the target - */ -// VIET ARE WE STILL USING THE TARGET DISTANCE HERE - I THINK WE ARE ACTUALLY CALCULATING IT IN THE SUBSYSTEM - public RotateAndDriveToGear(double targetDistance) { - // Use requires() here to declare subsystem dependencies - requires(Robot.drivetrain); - requires(Robot.visionGear); - - } - - // Called just before this Command runs the first time - protected void initialize() { - Robot.visionGear.putIsCentered(false); - Robot.visionGear.putHasTarget(false); - Robot.visionGear.putAtDistance(false); - Robot.visionGear.putCounter(0); - Robot.visionGear.putCurrentCenter(0); - } - - // Called repeatedly when this Command is scheduled to run - protected void execute() { - - Robot.visionGear.processData(); - rotate = Robot.visionGear.getRotate(); - moveSpeed = Robot.visionGear.getMove(); // was + made - - - - Robot.drivetrain.haloDrive(moveSpeed, rotate, false); - - } - - // Make this return true when this Command no longer needs to run execute() - protected boolean isFinished() { - if (Robot.visionGear.getCounter() >= AutoConstants.SWEEP3_MAX){ - - return true; - } - //Check if the sonar distance is less then the target Distance, end -// if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.wasCentered()){ -// if (Robot.visionProcessor.isAtY() && Robot.visionProcessor.wasCentered()){ - if (Robot.visionGear.isAtDistance() && Robot.visionGear.isCentered()){ - return true; - } -// else if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.isHasTarget()) { - else if (Robot.visionGear.isAtDistance() && Robot.visionGear.isHasTarget()) { - return false; - } - - return false; - - } - - // Called once after isFinished returns true - protected void end() { - Robot.drivetrain.stop(); - Robot.visionGear.putCounter(0); - } - - // Called when another command which requires one or more of the same - // subsystems is scheduled to run - protected void interrupted() { - end(); - } -} +//package org.usfirst.frc.team708.robot.commands.drivetrain; +// +//import org.usfirst.frc.team708.robot.AutoConstants; +//import org.usfirst.frc.team708.robot.Robot; +//import edu.wpi.first.wpilibj.command.Command; +// +// +// +///** +// *RotateAndDriveToGear +// * this command will utilize the vision data to drive the robot to the center of the gear +// * and stop when it is at the gear stop at target distance +// */ +//public class RotateAndDriveToGear extends Command { +// +// private double moveSpeed; +// private double rotate; +// /** +// * Constructor +// * @param targetDistance - the distance to stop in front of the target +// */ +//// VIET ARE WE STILL USING THE TARGET DISTANCE HERE - I THINK WE ARE ACTUALLY CALCULATING IT IN THE SUBSYSTEM +// public RotateAndDriveToGear(double targetDistance) { +// // Use requires() here to declare subsystem dependencies +// requires(Robot.drivetrain); +// requires(Robot.visionGear); +// +// } +// +// // Called just before this Command runs the first time +// protected void initialize() { +// Robot.visionGear.putIsCentered(false); +// Robot.visionGear.putHasTarget(false); +// Robot.visionGear.putAtDistance(false); +// Robot.visionGear.putCounter(0); +// Robot.visionGear.putCurrentCenter(0); +// } +// +// // Called repeatedly when this Command is scheduled to run +// protected void execute() { +// +// Robot.visionGear.processData(); +// rotate = Robot.visionGear.getRotate(); +// moveSpeed = Robot.visionGear.getMove(); // was + made - +// +// +// Robot.drivetrain.haloDrive(moveSpeed, rotate, false); +// +// } +// +// // Make this return true when this Command no longer needs to run execute() +// protected boolean isFinished() { +// if (Robot.visionGear.getCounter() >= AutoConstants.SWEEP3_MAX){ +// +// return true; +// } +// //Check if the sonar distance is less then the target Distance, end +//// if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.wasCentered()){ +//// if (Robot.visionProcessor.isAtY() && Robot.visionProcessor.wasCentered()){ +// if (Robot.visionGear.isAtDistance() && Robot.visionGear.isCentered()){ +// return true; +// } +//// else if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.isHasTarget()) { +// else if (Robot.visionGear.isAtDistance() && Robot.visionGear.isHasTarget()) { +// return false; +// } +// +// return false; +// +// } +// +// // Called once after isFinished returns true +// protected void end() { +// Robot.drivetrain.stop(); +// Robot.visionGear.putCounter(0); +// } +// +// // Called when another command which requires one or more of the same +// // subsystems is scheduled to run +// protected void interrupted() { +// end(); +// } +//} diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java index c9cc78c..b4b914b 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java @@ -30,39 +30,39 @@ public RotateAndDriveToLift() { // Called just before this Command runs the first time protected void initialize() { - Robot.visionLift.putIsCentered(false); - Robot.visionLift.putHasTarget(false); - Robot.visionLift.putAtDistance(false); - Robot.visionLift.putCounter(0); - Robot.visionLift.putCurrentCenter(0); + Robot.visionLift.putLiftIsCentered(false); + Robot.visionLift.putLiftHasTarget(false); + Robot.visionLift.putLiftAtDistance(false); + Robot.visionLift.putLiftCounter(0); + Robot.visionLift.putLiftCurrentCenter(0); } // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.visionLift.processData(); - rotate = Robot.visionLift.getRotate(); - moveSpeed = Robot.visionLift.getMove(); // was + made - + Robot.visionLift.liftProcessData(); + rotate = Robot.visionLift.liftGetRotate(); + moveSpeed = Robot.visionLift.liftGetMove(); - Robot.drivetrain.haloDrive(moveSpeed, rotate, false); + Robot.drivetrain.haloDrive(-1 * moveSpeed, rotate, false); } // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { - if (Robot.visionLift.getCounter() >= AutoConstants.SWEEP3_MAX){ + if (Robot.visionLift.getLiftCounter() >= AutoConstants.SWEEP3_MAX){ return true; } //Check if the sonar distance is less then the target Distance, end // if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.wasCentered()){ // if (Robot.visionProcessor.isAtY() && Robot.visionProcessor.wasCentered()){ - if (Robot.visionLift.isAtDistance() && Robot.visionLift.isCentered()){ + if (Robot.visionLift.liftIsAtDistance() && Robot.visionLift.liftIsCentered()){ return true; } // else if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.isHasTarget()) { - else if (Robot.visionLift.isAtDistance() && Robot.visionLift.isHasTarget()) { + else if (Robot.visionLift.liftIsAtDistance() && Robot.visionLift.liftIsHasTarget()) { return false; } @@ -73,7 +73,7 @@ else if (Robot.visionLift.isAtDistance() && Robot.visionLift.isHasTarget()) { // Called once after isFinished returns true protected void end() { Robot.drivetrain.stop(); - Robot.visionLift.putCounter(0); + Robot.visionLift.putLiftCounter(0); } // Called when another command which requires one or more of the same diff --git a/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java b/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java index c327ce2..823049d 100644 --- a/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java +++ b/src/org/usfirst/frc/team708/robot/commands/led_out/LED_out.java @@ -24,7 +24,7 @@ */ public class LED_out extends Command { -static public byte count = 0x00; +//static public byte count = 0x00; public LED_out() { // requires(Robot.led1); @@ -32,9 +32,9 @@ public LED_out() { // Called just before this Command runs the first time protected void initialize() { - count++; - if (count > Constants.SET_OFF) count = 0x00; - Robot.led1.send_to_led(count); + Robot.led1.count++; + if (Robot.led1.count > Constants.SET_OFF) Robot.led1.count = 0x00; + Robot.led1.send_to_led(Robot.led1.count); } // Called repeatedly when this Command is scheduled to run diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/HoodAdjust.java b/src/org/usfirst/frc/team708/robot/commands/shooter/HoodAdjust.java index df1ca26..22b5b4d 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/HoodAdjust.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/HoodAdjust.java @@ -40,7 +40,7 @@ protected boolean isFinished() { // Called once after isFinished returns true protected void end() { - Robot.shooter.stop(); +// Robot.shooter.stop(); } // Called when another command which requires one or more of the same diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java index 4b6ac7d..26252b8 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java @@ -24,7 +24,7 @@ public MoveHoodHigh() { // Called just before this Command runs the first time protected void initialize() { - Robot.shooter.moveHood(Constants.HOOD_GEAR); // 2000 is upper bounds + Robot.shooter.moveHood(Constants.HOOD_GEAR); // 2000 is upper bounds } // Called repeatedly 50 times/sec @@ -33,11 +33,11 @@ protected void execute() { // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { - return false; + return true; } protected void end() { - Robot.shooter.stop(); + //Robot.shooter.stop(); } protected void interrupted() { diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java index 0b886b9..5311ca9 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java @@ -17,7 +17,7 @@ public class MoveHoodLow extends Command { public MoveHoodLow() { -// requires(Robot.shooter); +// requires(Robot.shooter); // requires(Robot.feeder); // requires(Robot.drivetrain); } @@ -33,11 +33,11 @@ protected void execute() { // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { - return false; + return true; } protected void end() { - Robot.shooter.stop(); + //Robot.shooter.stop(); } protected void interrupted() { diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java index 8b8e44c..22ea50f 100644 --- a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java @@ -28,7 +28,8 @@ public class GripPipelineBoiler implements VisionPipeline { //Outputs - private Mat rgbThresholdOutput = new Mat(); + private Mat resizeImageOutput = new Mat(); + private Mat hsvThresholdOutput = new Mat(); private ArrayList findContoursOutput = new ArrayList(); private ArrayList filterContoursOutput = new ArrayList(); @@ -39,42 +40,57 @@ public class GripPipelineBoiler implements VisionPipeline { /** * This is the primary method that runs the entire pipeline and updates the outputs. */ - public void process(Mat source0) { - // Step RGB_Threshold0: - Mat rgbThresholdInput = source0; - double[] rgbThresholdRed = {0.0, 255.0}; - double[] rgbThresholdGreen = {199.50539568345323, 255.0}; - double[] rgbThresholdBlue = {167.40107913669064, 255.0}; - rgbThreshold(rgbThresholdInput, rgbThresholdRed, rgbThresholdGreen, rgbThresholdBlue, rgbThresholdOutput); + @Override public void process(Mat source0) { + // Step Resize_Image0: + Mat resizeImageInput = source0; + double resizeImageWidth = 320.0; + double resizeImageHeight = 240.0; + int resizeImageInterpolation = Imgproc.INTER_CUBIC; + resizeImage(resizeImageInput, resizeImageWidth, resizeImageHeight, resizeImageInterpolation, resizeImageOutput); + + // Step HSV_Threshold0: + Mat hsvThresholdInput = resizeImageOutput; + double[] hsvThresholdHue = {42.27265664824891, 90.94208970248812}; + double[] hsvThresholdSaturation = {0.26396448750718715, 85.55406687658572}; + double[] hsvThresholdValue = {249.03776978417267, 255.0}; + hsvThreshold(hsvThresholdInput, hsvThresholdHue, hsvThresholdSaturation, hsvThresholdValue, hsvThresholdOutput); // Step Find_Contours0: - Mat findContoursInput = rgbThresholdOutput; + Mat findContoursInput = hsvThresholdOutput; boolean findContoursExternalOnly = false; findContours(findContoursInput, findContoursExternalOnly, findContoursOutput); // Step Filter_Contours0: ArrayList filterContoursContours = findContoursOutput; - double filterContoursMinArea = 170.0; - double filterContoursMinPerimeter = 79.0; - double filterContoursMinWidth = 36.0; - double filterContoursMaxWidth = 52.0; + double filterContoursMinArea = 65.0; + double filterContoursMinPerimeter = 65.0; + double filterContoursMinWidth = 15.0; + double filterContoursMaxWidth = 70.0; double filterContoursMinHeight = 5.0; - double filterContoursMaxHeight = 23.0; - double[] filterContoursSolidity = {0, 100}; - double filterContoursMaxVertices = 1000000; - double filterContoursMinVertices = 0; - double filterContoursMinRatio = 0; - double filterContoursMaxRatio = 1000; + double filterContoursMaxHeight = 30.0; + double[] filterContoursSolidity = {35.07194244604317, 100}; + double filterContoursMaxVertices = 1000000.0; + double filterContoursMinVertices = 0.0; + double filterContoursMinRatio = 2.0; + double filterContoursMaxRatio = 5.0; filterContours(filterContoursContours, filterContoursMinArea, filterContoursMinPerimeter, filterContoursMinWidth, filterContoursMaxWidth, filterContoursMinHeight, filterContoursMaxHeight, filterContoursSolidity, filterContoursMaxVertices, filterContoursMinVertices, filterContoursMinRatio, filterContoursMaxRatio, filterContoursOutput); } /** - * This method is a generated getter for the output of a RGB_Threshold. - * @return Mat output from RGB_Threshold. + * This method is a generated getter for the output of a Resize_Image. + * @return Mat output from Resize_Image. */ - public Mat rgbThresholdOutput() { - return rgbThresholdOutput; + public Mat resizeImageOutput() { + return resizeImageOutput; + } + + /** + * This method is a generated getter for the output of a HSV_Threshold. + * @return Mat output from HSV_Threshold. + */ + public Mat hsvThresholdOutput() { + return hsvThresholdOutput; } /** @@ -95,18 +111,32 @@ public ArrayList filterContoursOutput() { /** - * Segment an image based on color ranges. - * @param input The image on which to perform the RGB threshold. - * @param red The min and max red. - * @param green The min and max green. - * @param blue The min and max blue. + * Scales and image to an exact size. + * @param input The image on which to perform the Resize. + * @param width The width of the output in pixels. + * @param height The height of the output in pixels. + * @param interpolation The type of interpolation. + * @param output The image in which to store the output. + */ + private void resizeImage(Mat input, double width, double height, + int interpolation, Mat output) { + Imgproc.resize(input, output, new Size(width, height), 0.0, 0.0, interpolation); + } + + /** + * Segment an image based on hue, saturation, and value ranges. + * + * @param input The image on which to perform the HSL threshold. + * @param hue The min and max hue + * @param sat The min and max saturation + * @param val The min and max value * @param output The image in which to store the output. */ - private void rgbThreshold(Mat input, double[] red, double[] green, double[] blue, - Mat out) { - Imgproc.cvtColor(input, out, Imgproc.COLOR_BGR2RGB); - Core.inRange(out, new Scalar(red[0], green[0], blue[0]), - new Scalar(red[1], green[1], blue[1]), out); + private void hsvThreshold(Mat input, double[] hue, double[] sat, double[] val, + Mat out) { + Imgproc.cvtColor(input, out, Imgproc.COLOR_BGR2HSV); + Core.inRange(out, new Scalar(hue[0], sat[0], val[0]), + new Scalar(hue[1], sat[1], val[1]), out); } /** diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java index 0209cdb..09a023f 100644 --- a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java @@ -28,6 +28,7 @@ public class GripPipelineLift implements VisionPipeline { //Outputs + private Mat resizeImageOutput = new Mat(); private Mat hslThresholdOutput = new Mat(); private ArrayList findContoursOutput = new ArrayList(); private ArrayList filterContoursOutput = new ArrayList(); @@ -40,11 +41,18 @@ public class GripPipelineLift implements VisionPipeline { * This is the primary method that runs the entire pipeline and updates the outputs. */ @Override public void process(Mat source0) { + // Step Resize_Image0: + Mat resizeImageInput = source0; + double resizeImageWidth = 320.0; + double resizeImageHeight = 240.0; + int resizeImageInterpolation = Imgproc.INTER_CUBIC; + resizeImage(resizeImageInput, resizeImageWidth, resizeImageHeight, resizeImageInterpolation, resizeImageOutput); + // Step HSL_Threshold0: - Mat hslThresholdInput = source0; - double[] hslThresholdHue = {87.41007194244604, 180.0}; - double[] hslThresholdSaturation = {179.10669303814598, 255.0}; - double[] hslThresholdLuminance = {91.72661870503596, 255.0}; + Mat hslThresholdInput = resizeImageOutput; + double[] hslThresholdHue = {58.273381294964025, 101.67235494880545}; + double[] hslThresholdSaturation = {114.65827338129493, 255.0}; + double[] hslThresholdLuminance = {0.0, 255.0}; hslThreshold(hslThresholdInput, hslThresholdHue, hslThresholdSaturation, hslThresholdLuminance, hslThresholdOutput); // Step Find_Contours0: @@ -54,21 +62,29 @@ public class GripPipelineLift implements VisionPipeline { // Step Filter_Contours0: ArrayList filterContoursContours = findContoursOutput; - double filterContoursMinArea = 200.0; - double filterContoursMinPerimeter = 50.0; - double filterContoursMinWidth = 10.0; + double filterContoursMinArea = 90.0; + double filterContoursMinPerimeter = 40.0; + double filterContoursMinWidth = 5.0; double filterContoursMaxWidth = 60.0; - double filterContoursMinHeight = 11.0; + double filterContoursMinHeight = 5.0; double filterContoursMaxHeight = 80.0; - double[] filterContoursSolidity = {0, 100}; - double filterContoursMaxVertices = 1000000; - double filterContoursMinVertices = 0; - double filterContoursMinRatio = 0; - double filterContoursMaxRatio = 1000; + double[] filterContoursSolidity = {44.96402877697842, 100}; + double filterContoursMaxVertices = 1000000.0; + double filterContoursMinVertices = 0.0; + double filterContoursMinRatio = 0.0; + double filterContoursMaxRatio = 5.0; filterContours(filterContoursContours, filterContoursMinArea, filterContoursMinPerimeter, filterContoursMinWidth, filterContoursMaxWidth, filterContoursMinHeight, filterContoursMaxHeight, filterContoursSolidity, filterContoursMaxVertices, filterContoursMinVertices, filterContoursMinRatio, filterContoursMaxRatio, filterContoursOutput); } + /** + * This method is a generated getter for the output of a Resize_Image. + * @return Mat output from Resize_Image. + */ + public Mat resizeImageOutput() { + return resizeImageOutput; + } + /** * This method is a generated getter for the output of a HSL_Threshold. * @return Mat output from HSL_Threshold. @@ -94,8 +110,22 @@ public ArrayList filterContoursOutput() { } + /** + * Scales and image to an exact size. + * @param input The image on which to perform the Resize. + * @param width The width of the output in pixels. + * @param height The height of the output in pixels. + * @param interpolation The type of interpolation. + * @param output The image in which to store the output. + */ + private void resizeImage(Mat input, double width, double height, + int interpolation, Mat output) { + Imgproc.resize(input, output, new Size(width, height), 0.0, 0.0, interpolation); + } + /** * Segment an image based on hue, saturation, and luminance ranges. + * * @param input The image on which to perform the HSL threshold. * @param hue The min and max hue * @param sat The min and max saturation diff --git a/src/org/usfirst/frc/team708/robot/subsystems/LED.java b/src/org/usfirst/frc/team708/robot/subsystems/LED.java index ba939e3..84db850 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/LED.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/LED.java @@ -29,6 +29,7 @@ public class LED extends Subsystem { public static byte[] msg = new byte[10]; public static String messageback; + static public byte count = 0x00; public LED() { @@ -47,7 +48,7 @@ public void send_to_led(byte command){ public void sendToDashboard() { if (Constants.DEBUG) { - SmartDashboard.putNumber("LED code sent", msg[0]); + SmartDashboard.putNumber("LED code sent", count); } } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java index 7d51091..44e18d9 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java @@ -89,6 +89,7 @@ public void stop(){ public void moveHood(int angle) { hoodLocation = angle; hood.setRaw(angle); + SmartDashboard.putNumber("Move Hood", hoodLocation); } public void hoodAdjust(double angle) { @@ -96,6 +97,7 @@ public void hoodAdjust(double angle) { if ((angle > 0.0) && (hoodLocationConstants.HOOD_MIN)) hoodLocation-=Constants.HOOD_CALIBRATION; + SmartDashboard.putNumber("Servo Location", hoodLocation); moveHood(hoodLocation); } /** @@ -107,7 +109,6 @@ public void sendToDashboard() { SmartDashboard.putNumber("Encoder Position", shooter.getEncPosition()); SmartDashboard.putNumber("Encoder Speed", shooter.getSpeed()); SmartDashboard.putNumber("Encoder Velocity", shooter.getEncVelocity()); - SmartDashboard.putNumber("Servo Location", hoodLocation); } } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java index 0a14032..c742d88 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java @@ -9,7 +9,6 @@ import org.usfirst.frc.team708.robot.commands.visionProcessor.GripPipelineBoiler; import org.usfirst.frc.team708.robot.util.Math708; -import edu.wpi.cscore.AxisCamera; import edu.wpi.cscore.CvSource; import edu.wpi.cscore.UsbCamera; import edu.wpi.first.wpilibj.CameraServer; @@ -25,63 +24,62 @@ public class VisionBoiler extends Subsystem { // Camera Variables - private double fovDegrees = AutoConstants.USB_FOV_DEGREES; // Field of View of the Camera - private double pipelineSize; // Number of Contours in the Pipline- 0 = target not in view - private int imageWidth = AutoConstants.USB_IMG_WIDTH; // Width of image - private int imageHeight = AutoConstants.USB_IMG_HEIGHT; // Height of image + private double fovDegrees = AutoConstants.USB_BOILER_FOV_DEGREES; // Field of View of the Camera + private double bPipelineSize; // Number of Contours in the Pipline- 0 = target not in view + private int bImageWidth = AutoConstants.USB_BOILER_IMG_WIDTH; // Width of image + private int bImageHeight = AutoConstants.USB_BOILER_IMG_HEIGHT; // Height of image // Image OpenCV Image Processing Variables - private VisionThread visionThread; // vision processing thread - processes grip code - private final Object imgLock = new Object(); // vision boiler object + private VisionThread visionThreadBoiler; // vision processing thread - processes grip code + private final Object imgLockBoiler = new Object(); // vision boiler object - private AxisCamera axisCamera; // Axis Camera - private UsbCamera usbCamera; // USB Camera - private CvSource outputStream; // Output stream to the Dashboard + private UsbCamera usbCameraBoiler; // USB Camera + private CvSource outputStreamBoiler; // Output stream to the Dashboard // Targeting variables - private int rectX = 0; // the 4 values used which define the full rectangle around the target - private int rectY = 0; - private int rectWidth = 0; - private int rectHeight = 0; + private int brectX = 0; // the 4 values used which define the full rectangle around the target + private int brectY = 0; + private int brectWidth = 0; + private int brectHeight = 0; - private int minX = 0; // the 4 values used to create maximum rectangle around the target (used when evaluating each of the contour images) - private int minY = 0; - private int maxX = 0; - private int maxY = 0; + private int bminX = 0; // the 4 values used to create maximum rectangle around the target (used when evaluating each of the contour images) + private int bminY = 0; + private int bmaxX = 0; + private int bmaxY = 0; - private boolean hasTarget = false; // flag indicating whether the robot sees the target - private boolean isCentered = false; // flag indicating whether the robot sees the center of the target - private boolean isAtDistance = false; // flag indicating whether the robot is at the correct distance from the target - private boolean isAtHeight = false; // Determine if the robot is at height (eyy, that's the name of the boolean!) + private boolean boilerHasTarget = false; // flag indicating whether the robot sees the target + private boolean boilerIsCentered = false; // flag indicating whether the robot sees the center of the target + private boolean boilerIsAtDistance = false; // flag indicating whether the robot is at the correct distance from the target + private boolean boilerIsAtHeight = false; // Determine if the robot is at height (eyy, that's the name of the boolean!) - private int TargetHeight = AutoConstants.BOILER_TARGET_HEIGHT; //Target height - private int TargetWidth = AutoConstants.BOILER_TARGET_WIDTH; //Target width + private int boilerTargetHeight = AutoConstants.BOILER_TARGET_HEIGHT; //actual height of the boilers tape + private int boilerTargetWidth = AutoConstants.BOILER_TARGET_WIDTH; //actual width of the boilers tape - private double trueCenter = imageWidth/2; // horizontal value of the center of the target + private double trueCenter = bImageWidth/2; // horizontal value of the center of the target - private double distanceToStop = AutoConstants.DISTANCE_TO_LIFT_TARGET; // distance to stop at in front of lift target - private double currentCenter = 0.0; // horizontal value of where robot is looking - private double currentDistance = 0.0; // distance robot is from the target - private double stopAtHeight = 0; // distance to stop at based on height + private double boilerDistanceToStop = 0.0; // distance to stop at in front of lift target + private double boilerCurrentCenter = 0.0; // horizontal value of where robot is looking + private double boilerCurrentDistance = 0.0; // distance robot is from the target + private double boilerStopAtHeight = 0.0; // distance to stop at based on height + private double boilerStopAtDistance = 0.0; // distance to stop at based on sonar private double thresholdX = AutoConstants.X_THRESHOLD_CENTER; // threshold for determining center of the target private double thresholdDistance = AutoConstants.DISTANCE_TARGET_THRESHOLD; // threshold for determining threshold for stopping at the lift peg private double minThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MIN; // threshold for determining min value for whether the robot sees the target private double maxThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MAX; // threshold for determining max value for whether the robot sees the target - private double thresholdHeight = AutoConstants.HEIGHT_THRESHOLD; // threshold for determining the height which the robot will stop at // Sweep Variables - private boolean inSweep = false; // flag indicating whether the robot is sweeping left and right looking for the target - private double sweepDirection = 0.0; // value indicating the direction of the sweep -1 = right; 1 = left - private int sweepCounter = 0; // value indicating when the sweep will change direction + private boolean boilerInSweep = false; // flag indicating whether the robot is sweeping left and right looking for the target + private double boilerSweepDirection = 0.0; // value indicating the direction of the sweep -1 = right; 1 = left + private int boilerSweepCounter = 0; // value indicating when the sweep will change direction // drive variables - private double RotateDiff = 0; // for smartdashboard - how far away from center - private double MoveDiff = 0; // for smartdashboard - how far away from target - double rotate; // speed of the rotate being returned to the command - double move; // speed of the move forward being returned to the command + private double boilerRotateDiff = 0; // for smartdashboard - how far away from center + private double boilerMoveDiff = 0; // for smartdashboard - how far away from target + double boilerRotate; // speed of the rotate being returned to the command + double boilerMove; // speed of the move forward being returned to the command // Vision Processing @@ -90,18 +88,17 @@ public VisionBoiler() { // define the Cameras: -// usbCamera=CameraServer.getInstance().startAutomaticCapture("cam0", 0); -// axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); + usbCameraBoiler=CameraServer.getInstance().startAutomaticCapture("cam0", 0); // axisCamera.setResolution(imageWidth, imageHeight); // define the output stream on the smart dashboard - outputStream = CameraServer.getInstance().putVideo("Target", imageWidth, imageHeight); + outputStreamBoiler = CameraServer.getInstance().putVideo("Target Boiler", bImageWidth, bImageHeight); // Vision thread which processes the image contours - visionThread = new VisionThread(usbCamera, new GripPipelineBoiler(), pipeline -> { - pipelineSize = pipeline.filterContoursOutput().size(); + visionThreadBoiler = new VisionThread(usbCameraBoiler, new GripPipelineBoiler(), pipeline -> { + bPipelineSize = pipeline.filterContoursOutput().size(); // if the grip pipeline filter "filterContoursOutput" sees the target // loop through each contour image @@ -115,24 +112,24 @@ public VisionBoiler() { // set the min/max values to match the values form the 1st image if (i == 0) { - minX = r.x; - minY = r.y; - maxX = r.x + r.width; - maxY = r.y + r.height; + bminX = r.x; + bminY = r.y; + bmaxX = r.x + r.width; + bmaxY = r.y + r.height; } // compare each value to the min/max and replace if a better one is found - if (r.x < minX) { - minX = r.x; + if (r.x < bminX) { + bminX = r.x; } - if (r.y < minY) { - minY = r.y; + if (r.y < bminY) { + bminY = r.y; } - if (r.x + r.width > maxX) { - maxX = r.x + r.width; + if (r.x + r.width > bmaxX) { + bmaxX = r.x + r.width; } - if (r.y + r.height> maxY) { - maxY = r.y + r.height; + if (r.y + r.height> bmaxY) { + bmaxY = r.y + r.height; } } @@ -146,14 +143,14 @@ public VisionBoiler() { - synchronized (imgLock) { - currentCenter = minX + ((maxX - minX) / 2); + synchronized (imgLockBoiler) { + boilerCurrentCenter = bminX + ((bmaxX - bminX) / 2); // set values for the smartdashboard - rectX = minX; - rectY = minY; - rectWidth = maxX - minX; - rectHeight = maxY - minY; + brectX = bminX; + brectY = bminY; + brectWidth = bmaxX - bminX; + brectHeight = bmaxY - bminY; // note - this formula was pulled from 1640's github code - need to find the specific reference // from 1640 @@ -161,12 +158,12 @@ public VisionBoiler() { // d = (TARGET_WIDTH*CAMERA_IMAGE_WIDTH)/(2*tan(FOV_ANGLE/2)*w) // i.e. d and w are inversely related. // test the fovDegrees values - currentDistance = TargetWidth * imageWidth / (2*(Math.tan(Math.toRadians(fovDegrees))/2)*rectWidth); + // boilerCurrentDistance = boilerTargetWidth * bImageWidth / (2*(Math.tan(Math.toRadians(fovDegrees))/2)*brectWidth); // display the current image on the driver station if (Constants.DEBUG){ - outputStream.putFrame(pipeline.rgbThresholdOutput()); + outputStreamBoiler.putFrame(pipeline.hsvThresholdOutput()); } } @@ -174,46 +171,47 @@ public VisionBoiler() { // the target is not in the camera (ie, pipeline is empty) else { - hasTarget = false; - minX = 0; - minY = 0; - maxX = 0; - maxY = 0; + boilerHasTarget = false; + bminX = 0; + bminY = 0; + bmaxX = 0; + bmaxY = 0; } }); - visionThread.start(); + visionThreadBoiler.start(); } /* * GetClosestLocation * Determine which shooting location is closer to the robot + * Will not use right now */ - public double getClosestLocation() { - if(Robot.drivetrain.getSonarDistance() >= AutoConstants.DISTANCE_TO_BOILER_LOCATION2/2) { - return AutoConstants.DISTANCE_TO_BOILER_LOCATION2; - } - else { - return AutoConstants.DISTANCE_TO_BOILER_LOCATION1; - } - } +// public double getClosestLocation() { +// if(Robot.drivetrain.getSonarDistance() >= AutoConstants.DISTANCE_TO_BOILER_LOCATION2/2) { +// return AutoConstants.DISTANCE_TO_BOILER_LOCATION2; +// } +// else { +// return AutoConstants.DISTANCE_TO_BOILER_LOCATION1; +// } +// } /* * ProcessData * Method to interpret the camera data received above */ - public void processData() { + public void boilerProcessData() { try { // use the sonar to get the distance from the target (backup plan if camera distance not available) -// currentDistance=Robot.drivetrain.getSonarDistance(); + boilerCurrentDistance = Robot.drivetrain.getSonarDistance(); // if robot sees the target (current X between its min and max) - if ((currentCenter > minThresholdX) && (currentCenter < maxThresholdX)) { - hasTarget = true; + if ((boilerCurrentCenter > minThresholdX) && (boilerCurrentCenter < maxThresholdX)) { + boilerHasTarget = true; } else { - hasTarget = false; + boilerHasTarget = false; } } catch (TableKeyNotDefinedException e) { @@ -225,34 +223,34 @@ public void processData() { * isCentered * Method to determine whether the robot sees the center of the target (within the threshold value) */ - public boolean isCentered() { + public boolean boilerIsCentered() { // if the robot sees the target // determine whether the horizontal value the robot sees is within the threshold defining the center of the target // set isCentered according to whether the robot is aligned with the center of the target - if (hasTarget) + if (boilerHasTarget) { - double difference = trueCenter - (currentCenter); + double difference = trueCenter - (boilerCurrentCenter); if (Math.abs(difference) <= thresholdX) { - isCentered = true; + boilerIsCentered = true; } else if (Math.abs(difference) > thresholdX) { - isCentered = false; + boilerIsCentered = false; } - RotateDiff = difference; + boilerRotateDiff = difference; } else{ - isCentered = false; + boilerIsCentered = false; } - return isCentered; + return boilerIsCentered; } /* * getRotate * Method to determine whether the robot is at the center of the target so it can drive towards target */ - public double getRotate() { + public double boilerGetRotate() { double difference=0; // currently we are only running 1 cycle of the sweep and stopping @@ -262,26 +260,26 @@ public double getRotate() { // } // if robot sees target and is centered - no need to rotate the robot - if (hasTarget && isCentered) + if (boilerHasTarget && boilerIsCentered) { - rotate = 0.0; + boilerRotate = 0.0; } // if the robot sees the target but is not centered // check to see whether the robot is within the threshold // rotate based on the math function - else if (hasTarget && !isCentered){ - difference = trueCenter - (currentCenter); + else if (boilerHasTarget && !boilerIsCentered){ + difference = trueCenter - (boilerCurrentCenter); - rotate = Math708.getSignClippedPercentError(currentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); + boilerRotate = Math708.getSignClippedPercentError(boilerCurrentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); if (Math.abs(difference) > thresholdX) { - if (currentCenter < trueCenter){ - rotate = Math.abs(rotate); + if (boilerCurrentCenter < trueCenter){ + boilerRotate = Math.abs(boilerRotate); } else { - rotate = Math.abs(rotate) * -1; + boilerRotate = Math.abs(boilerRotate) * -1; } } } @@ -291,33 +289,33 @@ else if (hasTarget && !isCentered){ // sweep is defined as rotating the robot right, left, right in predefined counts // if in the sweep the robot does not find the target, it stops after 3 sweeps // otherwise it will jump back into the hasTarget logic identified above - else if (!hasTarget){ - if (Math.abs(sweepDirection) < .1){ - sweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; - rotate = -AutoConstants.SWEEP_ROTATE; + else if (!boilerHasTarget){ + if (Math.abs(boilerSweepDirection) < .1){ + boilerSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; + boilerRotate = -AutoConstants.SWEEP_ROTATE; } - else if (sweepDirection > AutoConstants.SWEEP1_MIN){ - if ((sweepCounter >= AutoConstants.SWEEP1_MIN && sweepCounter <= AutoConstants.SWEEP1_MAX) - || (sweepCounter >= AutoConstants.SWEEP3_MIN && sweepCounter <= AutoConstants.SWEEP3_MAX)){ + else if (boilerSweepDirection > AutoConstants.SWEEP1_MIN){ + if ((boilerSweepCounter >= AutoConstants.SWEEP1_MIN && boilerSweepCounter <= AutoConstants.SWEEP1_MAX) + || (boilerSweepCounter >= AutoConstants.SWEEP3_MIN && boilerSweepCounter <= AutoConstants.SWEEP3_MAX)){ - rotate = -AutoConstants.SWEEP_ROTATE; - if (sweepCounter== AutoConstants.SWEEP1_MAX || sweepCounter== AutoConstants.SWEEP3_MAX){ - sweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; + boilerRotate = -AutoConstants.SWEEP_ROTATE; + if (boilerSweepCounter== AutoConstants.SWEEP1_MAX || boilerSweepCounter== AutoConstants.SWEEP3_MAX){ + boilerSweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; } } } else { - if (sweepCounter >= AutoConstants.SWEEP2_MIN && sweepCounter <= AutoConstants.SWEEP2_MAX) - rotate = AutoConstants.SWEEP_ROTATE; - if (sweepCounter== AutoConstants.SWEEP2_MAX){ - sweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; + if (boilerSweepCounter >= AutoConstants.SWEEP2_MIN && boilerSweepCounter <= AutoConstants.SWEEP2_MAX) + boilerRotate = AutoConstants.SWEEP_ROTATE; + if (boilerSweepCounter== AutoConstants.SWEEP2_MAX){ + boilerSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; } } - sweepCounter++; + boilerSweepCounter++; } - RotateDiff = difference; - return rotate; + boilerRotateDiff = difference; + return boilerRotate; } /* @@ -325,149 +323,134 @@ else if (sweepDirection > AutoConstants.SWEEP1_MIN){ * Method to determine if the robot is close enough to target so it can stop */ - public double getMove() { -//VIET - HOW DO WE WANT TO HANDLE MULTIPLE DISTANCES HERE? + public double boilerGetMove() { // if the robot sees the target // Method to determine whether the robot is at the correct distance to the target so stop - if (hasTarget) + if (boilerHasTarget) { //maxY is used as height of the target - double difference = distanceToStop - maxY; - move = Math708.getSignClippedPercentError(maxY, stopAtHeight, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); + double difference = boilerDistanceToStop - bmaxY; + boilerMove = Math708.getSignClippedPercentError(bmaxY, boilerStopAtDistance, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); //Check if target is at correct distance within threshold if (Math.abs(difference) <= thresholdDistance) { - move = 0.0; - isAtHeight = true; + boilerMove = 0.0; + boilerIsAtDistance = true; } else { - isAtHeight = false; + boilerIsAtDistance = false; } - MoveDiff = difference; + boilerMoveDiff = difference; } else { - move = 0.0; + boilerMove = 0.0; } - return move; + return boilerMove; } + + + + + /** + * GETTERS and PUTTERS to return the private variables + * @return + */ + /* * isAtDistance * Method to determine whether the robot is at the distance from the target based on the threshold value */ - public boolean isAtDistance() { - double difference = getClosestLocation() - Robot.drivetrain.getSonarDistance(); + public boolean boilerIsAtDistance() { + double difference = boilerStopAtDistance - Robot.drivetrain.getSonarDistance(); //Check if target is at correct level within threshold if (Math.abs(difference) <= thresholdDistance) { - isAtDistance = true; + boilerIsAtDistance = true; } else { - isAtDistance = false; + boilerIsAtDistance = false; } - return isAtDistance; + return boilerIsAtDistance; } - - //VIET - UPDATE THIS METHOD TO RETURN WHETHER IT IS AT ANY OF THE SHOOTING DISTANCES FROM THE BOILER -// public boolean isAtDistance() { -// double difference = distanceToStop - currentDistance; -// //Check if target is at correct level within threshold -// if (Math.abs(difference) <= thresholdDistance) { -// isAtDistance = true; -// } else { -// isAtDistance = false; -// } -// return isAtDistance; -// } - /* * isAtHeight * Method to determine whether the robot is at the distance from the target based on the threshold value */ // VIET update this - public boolean isAtHeight() { - double difference = stopAtHeight - maxY; - //Check if target is at correct level within threshold - if (Math.abs(difference) <= thresholdHeight) { - isAtHeight = true; - } else { - isAtHeight = false; - } - return isAtHeight; - } +// public boolean isAtHeight() { +// double difference = stopAtHeight - maxY; +// //Check if target is at correct level within threshold +// if (Math.abs(difference) <= thresholdHeight) { +// isAtHeight = true; +// } else { +// isAtHeight = false; +// } +// return isAtHeight; +// } - /** - * GETTERS and PUTTERS to return the private variables - * @return - */ - public boolean isHasTarget() { - return hasTarget; + public boolean boilerIsHasTarget() { + return boilerHasTarget; } - public void putCurrentCenter(double cc) { - currentCenter = cc; + public void putBoilerCurrentCenter(double cc) { + boilerCurrentCenter = cc; } - public void putHasTarget(boolean ht) { - hasTarget = ht; - } - - public void putStopAtHeight(double sah) { - stopAtHeight = sah; + public void putBoilerHasTarget(boolean ht) { + boilerHasTarget = ht; } - public double getStopAtHeight() { - return stopAtHeight; + public int getBoilerCounter() { + return boilerSweepCounter; } - public int getCounter() { - return sweepCounter; + public void putBoilerCounter(int ct) { + boilerSweepCounter = ct; } - - public void putCounter(int ct) { - sweepCounter = ct; + public void putBoilerIsCentered(boolean ic) { + boilerIsCentered = ic; } - public void putIsCentered(boolean ic) { - isCentered = ic; + public void putBoilerStopAtDistance (double sad) { + boilerStopAtDistance = sad; + // :( } - - public void putAtDistance(boolean ad) { - isAtDistance = ad; + public void putBoilerAtDistance(boolean ad) { + boilerIsAtDistance = ad; } - public boolean isInSweep() { - if (hasTarget) { - inSweep = false; - sweepCounter=1; + public boolean boilerIsInSweep() { + if (boilerHasTarget) { + boilerInSweep = false; + boilerSweepCounter=1; } else { - inSweep = true; + boilerInSweep = true; } - return inSweep; + return boilerInSweep; } public void sendToDashboard() { - if (Constants.DEBUG) { - SmartDashboard.putBoolean("Has Target", isHasTarget()); - SmartDashboard.putBoolean("Is At Height", isAtHeight()); - SmartDashboard.putNumber("Current Distance", currentDistance); - SmartDashboard.putNumber("Center of Target", currentCenter); - SmartDashboard.putNumber("Rotation", rotate); - SmartDashboard.putNumber("Rotate Difference", RotateDiff); - SmartDashboard.putNumber("Distance Difference", MoveDiff); - SmartDashboard.putNumber("Sweep Counter", sweepCounter); - SmartDashboard.putNumber("SweepDirection", sweepDirection); - SmartDashboard.putBoolean("isCentered", isCentered()); - SmartDashboard.putNumber("rectX", rectX); - SmartDashboard.putNumber("rectY", rectY); - SmartDashboard.putNumber("rectWidth", rectWidth); - SmartDashboard.putNumber("rectHeight", rectHeight); - SmartDashboard.putNumber("Distance To Target", currentDistance); - SmartDashboard.putNumber("pipelineSize", pipelineSize); + if (Constants.BOILER_DEBUG) { + SmartDashboard.putBoolean("b-Has Target", boilerIsHasTarget()); + SmartDashboard.putNumber("b-Center of Target", boilerCurrentCenter); + SmartDashboard.putNumber("b-Rotation", boilerRotate); + SmartDashboard.putNumber("b-Rotate Difference", boilerRotateDiff); + SmartDashboard.putNumber("b-Distance Difference", boilerMoveDiff); + SmartDashboard.putNumber("b-Sweep Counter", boilerSweepCounter); + SmartDashboard.putNumber("b-SweepDirection", boilerSweepDirection); + SmartDashboard.putBoolean("b-isCentered", boilerIsCentered()); + SmartDashboard.putNumber("b-rectX", brectX); + SmartDashboard.putNumber("b-rectY", brectY); + SmartDashboard.putNumber("b-rectWidth", brectWidth); + SmartDashboard.putNumber("b-rectHeight", brectHeight); + SmartDashboard.putNumber("b-Distance To Target", boilerCurrentDistance); + SmartDashboard.putNumber("b-pipelineSize", bPipelineSize); + SmartDashboard.putNumber("b-stop at distance", boilerStopAtDistance); } } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionGear.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionGear.java index d7e30cd..3ab9828 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionGear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionGear.java @@ -1,426 +1,426 @@ -package org.usfirst.frc.team708.robot.subsystems; - -import org.opencv.core.Rect; -import org.opencv.imgproc.Imgproc; -import org.usfirst.frc.team708.robot.AutoConstants; - -import org.usfirst.frc.team708.robot.Constants; -import org.usfirst.frc.team708.robot.Robot; -import org.usfirst.frc.team708.robot.commands.visionProcessor.GripPipelineGear; -import org.usfirst.frc.team708.robot.util.Math708; - -import edu.wpi.cscore.AxisCamera; -import edu.wpi.cscore.CvSource; -import edu.wpi.cscore.UsbCamera; -import edu.wpi.first.wpilibj.CameraServer; -import edu.wpi.first.wpilibj.command.Subsystem; -import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; -import edu.wpi.first.wpilibj.tables.TableKeyNotDefinedException; -import edu.wpi.first.wpilibj.vision.VisionThread; - -/** - *@authors Viet & Sue - *This subsystem is specific to the 2017 Game FIRST Steamworks Gear - */ -public class VisionGear extends Subsystem { - - // Camera Variables - private double fovDegrees = AutoConstants.USB_FOV_DEGREES; // Field of View of the Camera - private double pipelineSize; // Number of Contours in the Pipline- 0 = target not in view - private int imageWidth = AutoConstants.USB_IMG_WIDTH; // Width of image - private int imageHeight = AutoConstants.USB_IMG_HEIGHT; // Height of image - - // Image OpenCV Image Processing Variables - private VisionThread visionThread; // vision processing thread - processes grip code - private final Object imgLock = new Object(); // vision Gear object - - private AxisCamera axisCamera; // Axis Camera - private UsbCamera usbCamera; // USB Camera - private CvSource outputStream; // Output stream to the Dashboard - - - // Targeting variables - private int rectX = 0; // the 4 values used which define the full rectangle around the target - private int rectY = 0; - private int rectWidth = 0; - private int rectHeight = 0; - - private int minX = 0; // the 4 values used to create maximum rectangle around the target (used when evaluating each of the contour images) - private int minY = 0; - private int maxX = 0; - private int maxY = 0; - - private boolean hasTarget = false; // flag indicating whether the robot sees the target - private boolean isCentered = false; // flag indicating whether the robot sees the center of the target - private boolean isAtDistance = false; // flag indicating whether the robot is at the correct distance from the target - - - private int TargetHeight = AutoConstants.GEAR_TARGET_HEIGHT; //Target height - private int TargetWidth = AutoConstants.GEAR_TARGET_WIDTH; //Target width - - private double trueCenter = imageWidth/2; // horizontal value of the center of the target - private double distanceToStop = AutoConstants.DISTANCE_TO_GEAR; // distance to stop at in front of gear - private double currentCenter = 0.0; // horizontal value of where robot is looking - private double currentDistance = 0.0; // distance robot is from the target - - private double thresholdX = AutoConstants.X_THRESHOLD_CENTER; // threshold for determining center of the target - private double thresholdDistance = AutoConstants.DISTANCE_TARGET_THRESHOLD; // threshold for determining threshold for stopping at the gear -//VIET NEED MIN/MAX FOR GEAR AND CENTER - private double minThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MIN; // threshold for determining min value for whether the robot sees the target - private double maxThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MAX; // threshold for determining max value for whether the robot sees the target - - - // Sweep Variables - private boolean inSweep = false; // flag indicating whether the robot is sweeping left and right looking for the target - private double sweepDirection = 0.0; // value indicating the direction of the sweep -1 = right; 1 = left - private int sweepCounter = 0; // value indicating when the sweep will change direction - - - // drive variables - private double RotateDiff = 0; // for smartdashboard - how far away from center - private double MoveDiff = 0; // for smartdashboard - how far away from target - double rotate; // speed of the rotate being returned to the command - double move; // speed of the move forward being returned to the command - - - // Vision Processing - public VisionGear() { - super("Vision Processor"); - - - // define the Cameras: -// usbCamera=CameraServer.getInstance().startAutomaticCapture("cam3", 0); -// axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); -// axisCamera.setResolution(imageWidth, imageHeight); - - - // define the output stream on the smart dashboard - outputStream = CameraServer.getInstance().putVideo("Target", imageWidth, imageHeight); - - - // Vision thread which processes the image contours - visionThread = new VisionThread(usbCamera, new GripPipelineGear(), pipeline -> { - pipelineSize = pipeline.filterContoursOutput().size(); - - // if the grip pipeline filter "filterContoursOutput" sees the target - // loop through each contour image - // grab the bounding rectangle values of each contour - // to create the biggest rectangle around the gear - if (!pipeline.filterContoursOutput().isEmpty()) { - - for (int i = 0; i < pipeline.filterContoursOutput().size(); i++) { - Rect r = Imgproc.boundingRect(pipeline.filterContoursOutput().get(i)); - - // set the min/max values to match the values form the 1st image - if (i == 0) { - minX = r.x; - minY = r.y; - maxX = r.x + r.width; - maxY = r.y + r.height; - } - - // compare each value to the min/max and replace if a better one is found - if (r.x < minX) { - minX = r.x; - } - if (r.y < minY) { - minY = r.y; - } - if (r.x + r.width > maxX) { - maxX = r.x + r.width; - } - if (r.y + r.height> maxY) { - maxY = r.y + r.height; - } - } - -// // this is a second method of looping through the contours in the filterContoursOutput Array of Mat Images -// for (MatOfPoint contour : pipeline.filterContoursOutput()) { -// Rect r = Imgproc.boundingRect(contour); +//package org.usfirst.frc.team708.robot.subsystems; +// +//import org.opencv.core.Rect; +//import org.opencv.imgproc.Imgproc; +//import org.usfirst.frc.team708.robot.AutoConstants; +// +//import org.usfirst.frc.team708.robot.Constants; +//import org.usfirst.frc.team708.robot.Robot; +//import org.usfirst.frc.team708.robot.commands.visionProcessor.GripPipelineGear; +//import org.usfirst.frc.team708.robot.util.Math708; +// +//import edu.wpi.cscore.AxisCamera; +//import edu.wpi.cscore.CvSource; +//import edu.wpi.cscore.UsbCamera; +//import edu.wpi.first.wpilibj.CameraServer; +//import edu.wpi.first.wpilibj.command.Subsystem; +//import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; +//import edu.wpi.first.wpilibj.tables.TableKeyNotDefinedException; +//import edu.wpi.first.wpilibj.vision.VisionThread; +// +///** +// *@authors Viet & Sue +// *This subsystem is specific to the 2017 Game FIRST Steamworks Gear +// */ +//public class VisionGear extends Subsystem { +// +// // Camera Variables +// private double fovDegrees = AutoConstants.USB_FOV_DEGREES; // Field of View of the Camera +// private double pipelineSize; // Number of Contours in the Pipline- 0 = target not in view +// private int imageWidth = AutoConstants.USB_IMG_WIDTH; // Width of image +// private int imageHeight = AutoConstants.USB_IMG_HEIGHT; // Height of image +// +// // Image OpenCV Image Processing Variables +// private VisionThread visionThread; // vision processing thread - processes grip code +// private final Object imgLock = new Object(); // vision Gear object +// +// private AxisCamera axisCamera; // Axis Camera +// private UsbCamera usbCamera; // USB Camera +// private CvSource outputStream; // Output stream to the Dashboard +// +// +// // Targeting variables +// private int rectX = 0; // the 4 values used which define the full rectangle around the target +// private int rectY = 0; +// private int rectWidth = 0; +// private int rectHeight = 0; +// +// private int minX = 0; // the 4 values used to create maximum rectangle around the target (used when evaluating each of the contour images) +// private int minY = 0; +// private int maxX = 0; +// private int maxY = 0; +// +// private boolean hasTarget = false; // flag indicating whether the robot sees the target +// private boolean isCentered = false; // flag indicating whether the robot sees the center of the target +// private boolean isAtDistance = false; // flag indicating whether the robot is at the correct distance from the target +// +// +// private int TargetHeight = AutoConstants.GEAR_TARGET_HEIGHT; //Target height +// private int TargetWidth = AutoConstants.GEAR_TARGET_WIDTH; //Target width +// +// private double trueCenter = imageWidth/2; // horizontal value of the center of the target +// private double distanceToStop = AutoConstants.DISTANCE_TO_GEAR; // distance to stop at in front of gear +// private double currentCenter = 0.0; // horizontal value of where robot is looking +// private double currentDistance = 0.0; // distance robot is from the target +// +// private double thresholdX = AutoConstants.X_THRESHOLD_CENTER; // threshold for determining center of the target +// private double thresholdDistance = AutoConstants.DISTANCE_TARGET_THRESHOLD; // threshold for determining threshold for stopping at the gear +////VIET NEED MIN/MAX FOR GEAR AND CENTER +// private double minThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MIN; // threshold for determining min value for whether the robot sees the target +// private double maxThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MAX; // threshold for determining max value for whether the robot sees the target +// +// +// // Sweep Variables +// private boolean inSweep = false; // flag indicating whether the robot is sweeping left and right looking for the target +// private double sweepDirection = 0.0; // value indicating the direction of the sweep -1 = right; 1 = left +// private int sweepCounter = 0; // value indicating when the sweep will change direction +// +// +// // drive variables +// private double RotateDiff = 0; // for smartdashboard - how far away from center +// private double MoveDiff = 0; // for smartdashboard - how far away from target +// double rotate; // speed of the rotate being returned to the command +// double move; // speed of the move forward being returned to the command +// +// +// // Vision Processing +// public VisionGear() { +// super("Vision Processor"); +// +// +// // define the Cameras: +//// usbCamera=CameraServer.getInstance().startAutomaticCapture("cam3", 0); +//// axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); +//// axisCamera.setResolution(imageWidth, imageHeight); +// +// +// // define the output stream on the smart dashboard +// outputStream = CameraServer.getInstance().putVideo("Target", imageWidth, imageHeight); +// +// +// // Vision thread which processes the image contours +// visionThread = new VisionThread(usbCamera, new GripPipelineGear(), pipeline -> { +// pipelineSize = pipeline.filterContoursOutput().size(); +// +// // if the grip pipeline filter "filterContoursOutput" sees the target +// // loop through each contour image +// // grab the bounding rectangle values of each contour +// // to create the biggest rectangle around the gear +// if (!pipeline.filterContoursOutput().isEmpty()) { +// +// for (int i = 0; i < pipeline.filterContoursOutput().size(); i++) { +// Rect r = Imgproc.boundingRect(pipeline.filterContoursOutput().get(i)); +// +// // set the min/max values to match the values form the 1st image +// if (i == 0) { +// minX = r.x; +// minY = r.y; +// maxX = r.x + r.width; +// maxY = r.y + r.height; +// } +// +// // compare each value to the min/max and replace if a better one is found // if (r.x < minX) { // minX = r.x; -// } +// } +// if (r.y < minY) { +// minY = r.y; +// } +// if (r.x + r.width > maxX) { +// maxX = r.x + r.width; +// } +// if (r.y + r.height> maxY) { +// maxY = r.y + r.height; +// } // } - - - - synchronized (imgLock) { - currentCenter = minX + ((maxX - minX) / 2); - - // set values for the smartdashboard - rectX = minX; - rectY = minY; - rectWidth = maxX - minX; - rectHeight = maxY - minY; - - // note - this formula was pulled from 1640's github code - need to find the specific reference - // from 1640 - //Equation to determine the distance from a target (d) given the width in pixels of a vision target in the camera image (w): - // d = (TARGET_WIDTH*CAMERA_IMAGE_WIDTH)/(2*tan(FOV_ANGLE/2)*w) - // i.e. d and w are inversely related. - currentDistance = TargetWidth * imageWidth / (2*(Math.tan(Math.toRadians(fovDegrees))/2)*rectWidth); - - // display the current image on the driver station - - if (Constants.DEBUG){ - outputStream.putFrame(pipeline.hslThresholdOutput()); - } - } - - } - - // the target is not in the camera (ie, pipeline is empty) - else { - hasTarget = false; - minX = 0; - minY = 0; - maxX = 0; - maxY = 0; - } - - }); - visionThread.start(); - } - - - /* - * ProcessData - * Method to interpret the camera data received above - */ - public void processData() { - try { - - // use the sonar to get the distance from the target (backup plan if camera distance not available) -// currentDistance=Robot.drivetrain.getSonarDistance(); - - // if robot sees the target (current X between its min and max) - if ((currentCenter > minThresholdX) && (currentCenter < maxThresholdX)) { - hasTarget = true; - } - else { - hasTarget = false; - } - - } catch (TableKeyNotDefinedException e) { - e.printStackTrace(); - } - } - - /* - * isCentered - * Method to determine whether the robot sees the center of the target (within the threshold value) - */ - public boolean isCentered() { - - // if the robot sees the target - // determine whether the horizontal value the robot sees is within the threshold defining the center of the target - // set isCentered according to whether the robot is aligned with the center of the target - if (hasTarget) - { - - double difference = trueCenter - (currentCenter); - if (Math.abs(difference) <= thresholdX) { - isCentered = true; - } - else if (Math.abs(difference) > thresholdX) { - isCentered = false; - } - RotateDiff = difference; - } - else{ - isCentered = false; - } - return isCentered; - } - - /* - * getRotate - * Method to determine whether the robot is at the center of the target so it can drive towards target - */ - public double getRotate() { - double difference=0; - - // currently we are only running 1 cycle of the sweep and stopping - // if in the future additional sweeps are required, this is where the reset should occur -// if (sweepCounter > 400){ -// sweepCounter = 0; +// +//// // this is a second method of looping through the contours in the filterContoursOutput Array of Mat Images +//// for (MatOfPoint contour : pipeline.filterContoursOutput()) { +//// Rect r = Imgproc.boundingRect(contour); +//// if (r.x < minX) { +//// minX = r.x; +//// } +//// } +// +// +// +// synchronized (imgLock) { +// currentCenter = minX + ((maxX - minX) / 2); +// +// // set values for the smartdashboard +// rectX = minX; +// rectY = minY; +// rectWidth = maxX - minX; +// rectHeight = maxY - minY; +// +// // note - this formula was pulled from 1640's github code - need to find the specific reference +// // from 1640 +// //Equation to determine the distance from a target (d) given the width in pixels of a vision target in the camera image (w): +// // d = (TARGET_WIDTH*CAMERA_IMAGE_WIDTH)/(2*tan(FOV_ANGLE/2)*w) +// // i.e. d and w are inversely related. +// currentDistance = TargetWidth * imageWidth / (2*(Math.tan(Math.toRadians(fovDegrees))/2)*rectWidth); +// +// // display the current image on the driver station +// +// if (Constants.DEBUG){ +// outputStream.putFrame(pipeline.hslThresholdOutput()); +// } +// } +// +// } +// +// // the target is not in the camera (ie, pipeline is empty) +// else { +// hasTarget = false; +// minX = 0; +// minY = 0; +// maxX = 0; +// maxY = 0; +// } +// +// }); +// visionThread.start(); +// } +// +// +// /* +// * ProcessData +// * Method to interpret the camera data received above +// */ +// public void processData() { +// try { +// +// // use the sonar to get the distance from the target (backup plan if camera distance not available) +//// currentDistance=Robot.drivetrain.getSonarDistance(); +// +// // if robot sees the target (current X between its min and max) +// if ((currentCenter > minThresholdX) && (currentCenter < maxThresholdX)) { +// hasTarget = true; +// } +// else { +// hasTarget = false; +// } +// +// } catch (TableKeyNotDefinedException e) { +// e.printStackTrace(); +// } +// } +// +// /* +// * isCentered +// * Method to determine whether the robot sees the center of the target (within the threshold value) +// */ +// public boolean isCentered() { +// +// // if the robot sees the target +// // determine whether the horizontal value the robot sees is within the threshold defining the center of the target +// // set isCentered according to whether the robot is aligned with the center of the target +// if (hasTarget) +// { +// +// double difference = trueCenter - (currentCenter); +// if (Math.abs(difference) <= thresholdX) { +// isCentered = true; +// } +// else if (Math.abs(difference) > thresholdX) { +// isCentered = false; +// } +// RotateDiff = difference; +// } +// else{ +// isCentered = false; +// } +// return isCentered; +// } +// +// /* +// * getRotate +// * Method to determine whether the robot is at the center of the target so it can drive towards target +// */ +// public double getRotate() { +// double difference=0; +// +// // currently we are only running 1 cycle of the sweep and stopping +// // if in the future additional sweeps are required, this is where the reset should occur +//// if (sweepCounter > 400){ +//// sweepCounter = 0; +//// } +// +// // if robot sees target and is centered - no need to rotate the robot +// if (hasTarget && isCentered) +// { +// rotate = 0.0; +// } +// +// // if the robot sees the target but is not centered +// // check to see whether the robot is within the threshold +// // rotate based on the math function +// else if (hasTarget && !isCentered){ +// difference = trueCenter - (currentCenter); +// +// rotate = Math708.getSignClippedPercentError(currentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); +// +// +// if (Math.abs(difference) > thresholdX) { +// if (currentCenter < trueCenter){ +// rotate = Math.abs(rotate); +// } +// else { +// rotate = Math.abs(rotate) * -1; +// } +// } +// } +// +// // if the robot does not have the target +// // begin the sweep +// // sweep is defined as rotating the robot right, left, right in predefined counts +// // if in the sweep the robot does not find the target, it stops after 3 sweeps +// // otherwise it will jump back into the hasTarget logic identified above +// else if (!hasTarget){ +// if (Math.abs(sweepDirection) < .1){ +// sweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; +// rotate = -AutoConstants.SWEEP_ROTATE; +// } +// else if (sweepDirection > AutoConstants.SWEEP1_MIN){ +// if ((sweepCounter >= AutoConstants.SWEEP1_MIN && sweepCounter <= AutoConstants.SWEEP1_MAX) +// || (sweepCounter >= AutoConstants.SWEEP3_MIN && sweepCounter <= AutoConstants.SWEEP3_MAX)){ +// +// rotate = -AutoConstants.SWEEP_ROTATE; +// if (sweepCounter== AutoConstants.SWEEP1_MAX || sweepCounter== AutoConstants.SWEEP3_MAX){ +// sweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; +// } +// } +// } +// else { +// if (sweepCounter >= AutoConstants.SWEEP2_MIN && sweepCounter <= AutoConstants.SWEEP2_MAX) +// rotate = AutoConstants.SWEEP_ROTATE; +// if (sweepCounter== AutoConstants.SWEEP2_MAX){ +// sweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; +// } +// } +// +// sweepCounter++; +// } +// RotateDiff = difference; +// return rotate; +// } +// +// /* +// * getMove +// * Method to determine if the robot is close enough to target so it can stop +// */ +// +// public double getMove() { +// +// // if the robot sees the target +// // Method to determine whether the robot is at the correct distance to the target so stop +// if (hasTarget) +// { +// double difference = distanceToStop - currentDistance; +// move = Math708.getSignClippedPercentError(currentDistance, distanceToStop, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); +// +// //Check if target is at correct distance within threshold +// if (Math.abs(difference) <= thresholdDistance) { +// move = 0.0; +// isAtDistance = true; +// } else { +// isAtDistance = false; +// } +// MoveDiff = difference; +// } else { +// move = 0.0; +// } +// +// return move; +// } +// /* +// * isAtDistance +// * Method to determine whether the robot is at the distance from the target based on the threshold value +// */ +// public boolean isAtDistance() { +// double difference = distanceToStop - currentDistance; +// //Check if target is at correct level within threshold +// if (Math.abs(difference) <= thresholdDistance) { +// isAtDistance = true; +// } else { +// isAtDistance = false; +// } +// return isAtDistance; +// } +// +// /** +// * GETTERS and PUTTERS to return the private variables +// * @return +// */ +// public boolean isHasTarget() { +// return hasTarget; +// } +// +// +// public void putCurrentCenter(double cc) { +// currentCenter = cc; +// } +// +// +// public void putHasTarget(boolean ht) { +// hasTarget = ht; +// } +// +// +// public int getCounter() { +// return sweepCounter; +// } +// +// +// public void putCounter(int ct) { +// sweepCounter = ct; +// } +// +// public void putIsCentered(boolean ic) { +// isCentered = ic; +// } +// +// +// public void putAtDistance(boolean ay) { +// isAtDistance = ay; +// } +// +// +// public boolean isInSweep() { +// if (hasTarget) { +// inSweep = false; +// sweepCounter=1; +// } +// else { +// inSweep = true; +// } +// return inSweep; +// } +// +// public void sendToDashboard() { +// if (Constants.DEBUG) { +// SmartDashboard.putBoolean("Has Target", isHasTarget()); +// SmartDashboard.putBoolean("Is At Distance", isAtDistance()); +// SmartDashboard.putNumber("Current Distance", currentDistance); +// SmartDashboard.putNumber("Center of Target", currentCenter); +// SmartDashboard.putNumber("Rotation", rotate); +// SmartDashboard.putNumber("Rotate Difference", RotateDiff); +// SmartDashboard.putNumber("Distance Difference", MoveDiff); +// SmartDashboard.putNumber("Sweep Counter", sweepCounter); +// SmartDashboard.putNumber("SweepDirection", sweepDirection); +// SmartDashboard.putBoolean("isCentered", isCentered()); +// SmartDashboard.putNumber("rectX", rectX); +// SmartDashboard.putNumber("rectY", rectY); +// SmartDashboard.putNumber("rectWidth", rectWidth); +// SmartDashboard.putNumber("rectHeight", rectHeight); +// SmartDashboard.putNumber("Distance To Target", currentDistance); +// SmartDashboard.putNumber("pipelineSize", pipelineSize); // } - - // if robot sees target and is centered - no need to rotate the robot - if (hasTarget && isCentered) - { - rotate = 0.0; - } - - // if the robot sees the target but is not centered - // check to see whether the robot is within the threshold - // rotate based on the math function - else if (hasTarget && !isCentered){ - difference = trueCenter - (currentCenter); - - rotate = Math708.getSignClippedPercentError(currentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); - - - if (Math.abs(difference) > thresholdX) { - if (currentCenter < trueCenter){ - rotate = Math.abs(rotate); - } - else { - rotate = Math.abs(rotate) * -1; - } - } - } - - // if the robot does not have the target - // begin the sweep - // sweep is defined as rotating the robot right, left, right in predefined counts - // if in the sweep the robot does not find the target, it stops after 3 sweeps - // otherwise it will jump back into the hasTarget logic identified above - else if (!hasTarget){ - if (Math.abs(sweepDirection) < .1){ - sweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; - rotate = -AutoConstants.SWEEP_ROTATE; - } - else if (sweepDirection > AutoConstants.SWEEP1_MIN){ - if ((sweepCounter >= AutoConstants.SWEEP1_MIN && sweepCounter <= AutoConstants.SWEEP1_MAX) - || (sweepCounter >= AutoConstants.SWEEP3_MIN && sweepCounter <= AutoConstants.SWEEP3_MAX)){ - - rotate = -AutoConstants.SWEEP_ROTATE; - if (sweepCounter== AutoConstants.SWEEP1_MAX || sweepCounter== AutoConstants.SWEEP3_MAX){ - sweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; - } - } - } - else { - if (sweepCounter >= AutoConstants.SWEEP2_MIN && sweepCounter <= AutoConstants.SWEEP2_MAX) - rotate = AutoConstants.SWEEP_ROTATE; - if (sweepCounter== AutoConstants.SWEEP2_MAX){ - sweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; - } - } - - sweepCounter++; - } - RotateDiff = difference; - return rotate; - } - - /* - * getMove - * Method to determine if the robot is close enough to target so it can stop - */ - - public double getMove() { - - // if the robot sees the target - // Method to determine whether the robot is at the correct distance to the target so stop - if (hasTarget) - { - double difference = distanceToStop - currentDistance; - move = Math708.getSignClippedPercentError(currentDistance, distanceToStop, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); - - //Check if target is at correct distance within threshold - if (Math.abs(difference) <= thresholdDistance) { - move = 0.0; - isAtDistance = true; - } else { - isAtDistance = false; - } - MoveDiff = difference; - } else { - move = 0.0; - } - - return move; - } - /* - * isAtDistance - * Method to determine whether the robot is at the distance from the target based on the threshold value - */ - public boolean isAtDistance() { - double difference = distanceToStop - currentDistance; - //Check if target is at correct level within threshold - if (Math.abs(difference) <= thresholdDistance) { - isAtDistance = true; - } else { - isAtDistance = false; - } - return isAtDistance; - } - - /** - * GETTERS and PUTTERS to return the private variables - * @return - */ - public boolean isHasTarget() { - return hasTarget; - } - - - public void putCurrentCenter(double cc) { - currentCenter = cc; - } - - - public void putHasTarget(boolean ht) { - hasTarget = ht; - } - - - public int getCounter() { - return sweepCounter; - } - - - public void putCounter(int ct) { - sweepCounter = ct; - } - - public void putIsCentered(boolean ic) { - isCentered = ic; - } - - - public void putAtDistance(boolean ay) { - isAtDistance = ay; - } - - - public boolean isInSweep() { - if (hasTarget) { - inSweep = false; - sweepCounter=1; - } - else { - inSweep = true; - } - return inSweep; - } - - public void sendToDashboard() { - if (Constants.DEBUG) { - SmartDashboard.putBoolean("Has Target", isHasTarget()); - SmartDashboard.putBoolean("Is At Distance", isAtDistance()); - SmartDashboard.putNumber("Current Distance", currentDistance); - SmartDashboard.putNumber("Center of Target", currentCenter); - SmartDashboard.putNumber("Rotation", rotate); - SmartDashboard.putNumber("Rotate Difference", RotateDiff); - SmartDashboard.putNumber("Distance Difference", MoveDiff); - SmartDashboard.putNumber("Sweep Counter", sweepCounter); - SmartDashboard.putNumber("SweepDirection", sweepDirection); - SmartDashboard.putBoolean("isCentered", isCentered()); - SmartDashboard.putNumber("rectX", rectX); - SmartDashboard.putNumber("rectY", rectY); - SmartDashboard.putNumber("rectWidth", rectWidth); - SmartDashboard.putNumber("rectHeight", rectHeight); - SmartDashboard.putNumber("Distance To Target", currentDistance); - SmartDashboard.putNumber("pipelineSize", pipelineSize); - } - } - - public void initDefaultCommand() { - if (Constants.DEBUG) { - } - } -} - +// } +// +// public void initDefaultCommand() { +// if (Constants.DEBUG) { +// } +// } +//} +// diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java index dfd6370..69f7a02 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java @@ -22,46 +22,47 @@ *@authors Viet & Sue *This subsystem is specific to the 2017 Game FIRST Steamworks Lift Peg */ -public class VisionLift extends Subsystem { - + +public class VisionLift extends Subsystem { + // Camera Variables - private double fovDegrees = AutoConstants.USB_FOV_DEGREES; // Field of View of the Camera - private double pipelineSize; // Number of Contours in the Pipline- 0 = target not in view - private int imageWidth = AutoConstants.USB_IMG_WIDTH; // Width of image - private int imageHeight = AutoConstants.USB_IMG_HEIGHT; // Height of image + private double fovDegrees = AutoConstants.USB_LIFT_FOV_DEGREES; // Field of View of the Camera + private double liftPipelineSize; // Number of Contours in the Pipline- 0 = target not in view + private int liftImageWidth = AutoConstants.USB_LIFT_IMG_WIDTH; // Width of image from camera stream + private int liftImageHeight = AutoConstants.USB_LIFT_IMG_HEIGHT; // Height of image from camera stream // Image OpenCV Image Processing Variables - private VisionThread visionThread; // vision processing thread - processes grip code - private final Object imgLock = new Object(); // vision Lift object + private VisionThread visionThreadLift; // vision processing thread - processes grip code + private final Object imgLockLift = new Object(); // vision Lift object - private AxisCamera axisCamera; // Axis Camera - private UsbCamera usbCamera; // USB Camera - private CvSource outputStream; // Output stream to the Dashboard +// private AxisCamera axisCamera; // Axis Camera + private UsbCamera usbCameraLift; // USB Camera + private CvSource outputStreamLift; // Output stream to the Dashboard // Targeting variables - private int rectX = 0; // the 4 values used which define the full rectangle around the target - private int rectY = 0; - private int rectWidth = 0; - private int rectHeight = 0; + private int lrectX = 0; // the 4 values used which define the full rectangle around the target + private int lrectY = 0; + private int lrectWidth = 0; + private int lrectHeight = 0; - private int minX = 0; // the 4 values used to create maximum rectangle around the target (used when evaluating each of the contour images) - private int minY = 0; - private int maxX = 0; - private int maxY = 0; + private int lminX = 0; // the 4 values used to create maximum rectangle around the target (used when evaluating each of the contour images) + private int lminY = 0; + private int lmaxX = 0; + private int lmaxY = 0; - private boolean hasTarget = false; // flag indicating whether the robot sees the target - private boolean isCentered = false; // flag indicating whether the robot sees the center of the target - private boolean isAtDistance = false; // flag indicating whether the robot is at the correct distance from the target + private boolean liftHasTarget = false; // flag indicating whether the robot sees the target + private boolean liftIsCentered = false; // flag indicating whether the robot sees the center of the target + private boolean liftIsAtDistance = false; // flag indicating whether the robot is at the correct distance from the target - private int liftTargetHeight = AutoConstants.LIFT_TARGET_HEIGHT; //Target height - private int liftTargetWidth = AutoConstants.LIFT_TARGET_WIDTH; //Target width + private int liftTargetHeight = AutoConstants.LIFT_TARGET_HEIGHT; //height of actual target reflective tape + private int liftTargetWidth = AutoConstants.LIFT_TARGET_WIDTH; //width of actual target reflective tape - private double trueCenter = imageWidth/2; // horizontal value of the center of the target - private double distanceToStop = AutoConstants.DISTANCE_TO_LIFT_TARGET; // distance to stop at in front of lift target - private double currentCenter = 0.0; // horizontal value of where robot is looking - private double currentDistance = 0.0; // distance robot is from the target + private double trueCenter = liftImageWidth/2; // horizontal value of the center of the camera image + private double liftDistanceToStop = AutoConstants.DISTANCE_TO_LIFT_TARGET; // distance to stop at in front of lift target + private double liftCurrentCenter = 0.0; // horizontal value of where robot is looking + private double liftCurrentDistance = 0.0; // distance robot is from the target private double thresholdX = AutoConstants.X_THRESHOLD_CENTER; // threshold for determining center of the target private double thresholdDistance = AutoConstants.DISTANCE_TARGET_THRESHOLD; // threshold for determining threshold for stopping at the lift peg @@ -70,67 +71,66 @@ public class VisionLift extends Subsystem { // Sweep Variables - private boolean inSweep = false; // flag indicating whether the robot is sweeping left and right looking for the target - private double sweepDirection = 0.0; // value indicating the direction of the sweep -1 = right; 1 = left - private int sweepCounter = 0; // value indicating when the sweep will change direction + private boolean liftInSweep = false; // flag indicating whether the robot is sweeping left and right looking for the target + private double liftSweepDirection = 0.0; // value indicating the direction of the sweep -1 = right; 1 = left + private int liftSweepCounter = 0; // value indicating when the sweep will change direction // drive variables - private double RotateDiff = 0; // for smartdashboard - how far away from center - private double MoveDiff = 0; // for smartdashboard - how far away from target + private double liftRotateDiff = 0; // for smartdashboard - how far away from center + private double liftMoveDiff = 0; // for smartdashboard - how far away from target double rotate; // speed of the rotate being returned to the command double move; // speed of the move forward being returned to the command - // Vision Processing public VisionLift() { super("Vision Processor"); // define the Cameras: -// usbCamera=CameraServer.getInstance().startAutomaticCapture("cam1", 0); + // on little bot - cam2, 1 + usbCameraLift=CameraServer.getInstance().startAutomaticCapture("cam1", 1); // axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); -// axisCamera.setResolution(imageWidth, imageHeight); - - + usbCameraLift.setResolution(liftImageWidth, liftImageHeight); + + // define the output stream on the smart dashboard - outputStream = CameraServer.getInstance().putVideo("Target", imageWidth, imageHeight); - - + outputStreamLift = CameraServer.getInstance().putVideo("Target", liftImageWidth, liftImageHeight); + // Vision thread which processes the image contours - visionThread = new VisionThread(usbCamera, new GripPipelineLift(), pipeline -> { - pipelineSize = pipeline.filterContoursOutput().size(); + visionThreadLift = new VisionThread(usbCameraLift, new GripPipelineLift(), lPipeline -> { + liftPipelineSize = lPipeline.filterContoursOutput().size(); // if the grip pipeline filter "filterContoursOutput" sees the target // loop through each contour image // grab the bounding rectangle values of each contour // to create the biggest rectangle around the 2 vertical retroreflective tapes // on either side of the lift peg - if (!pipeline.filterContoursOutput().isEmpty()) { + if (!lPipeline.filterContoursOutput().isEmpty()) { - for (int i = 0; i < pipeline.filterContoursOutput().size(); i++) { - Rect r = Imgproc.boundingRect(pipeline.filterContoursOutput().get(i)); + for (int i = 0; i < lPipeline.filterContoursOutput().size(); i++) { + Rect r = Imgproc.boundingRect(lPipeline.filterContoursOutput().get(i)); // set the min/max values to match the values form the 1st image if (i == 0) { - minX = r.x; - minY = r.y; - maxX = r.x + r.width; - maxY = r.y + r.height; + lminX = r.x; + lminY = r.y; + lmaxX = r.x + r.width; + lmaxY = r.y + r.height; } // compare each value to the min/max and replace if a better one is found - if (r.x < minX) { - minX = r.x; + if (r.x < lminX) { + lminX = r.x; } - if (r.y < minY) { - minY = r.y; + if (r.y < lminY) { + lminY = r.y; } - if (r.x + r.width > maxX) { - maxX = r.x + r.width; + if (r.x + r.width > lmaxX) { + lmaxX = r.x + r.width; } - if (r.y + r.height> maxY) { - maxY = r.y + r.height; + if (r.y + r.height> lmaxY) { + lmaxY = r.y + r.height; } } @@ -144,61 +144,62 @@ public VisionLift() { - synchronized (imgLock) { - currentCenter = minX + ((maxX - minX) / 2); + synchronized (imgLockLift) { + liftCurrentCenter = lminX + ((lmaxX - lminX) / 2); // set values for the smartdashboard - rectX = minX; - rectY = minY; - rectWidth = maxX - minX; - rectHeight = maxY - minY; + lrectX = lminX; + lrectY = lminY; + lrectWidth = lmaxX - lminX; + lrectHeight = lmaxY - lminY; // note - this formula was pulled from 1640's github code - need to find the specific reference // from 1640 //Equation to determine the distance from a target (d) given the width in pixels of a vision target in the camera image (w): // d = (TARGET_WIDTH*CAMERA_IMAGE_WIDTH)/(2*tan(FOV_ANGLE/2)*w) // i.e. d and w are inversely related. - currentDistance = liftTargetWidth * imageWidth / (2*(Math.tan(Math.toRadians(fovDegrees))/2)*rectWidth); + liftCurrentDistance = liftTargetWidth * liftImageWidth / (2*(Math.tan(Math.toRadians(fovDegrees))/2)*lrectWidth); // display the current image on the driver station - if (Constants.DEBUG){ - outputStream.putFrame(pipeline.hslThresholdOutput()); - } + + outputStreamLift.putFrame(lPipeline.hslThresholdOutput()); + } - } + + // the target is not in the camera (ie, pipeline is empty) else { - hasTarget = false; - minX = 0; - minY = 0; - maxX = 0; - maxY = 0; + liftHasTarget = false; + lminX = 0; + lminY = 0; + lmaxX = 0; + lmaxY = 0; } }); - visionThread.start(); - } - - + visionThreadLift.start(); + } + + /* - * ProcessData + * liftProcessData * Method to interpret the camera data received above */ - public void processData() { + public void liftProcessData() { try { // use the sonar to get the distance from the target (backup plan if camera distance not available) -// currentDistance=Robot.drivetrain.getSonarDistance(); - + // currentDistance=Robot.drivetrain.getSonarDistance(); + // if robot sees the target (current X between its min and max) - if ((currentCenter > minThresholdX) && (currentCenter < maxThresholdX)) { - hasTarget = true; + if ((liftCurrentCenter > minThresholdX) && (liftCurrentCenter < maxThresholdX)) { + liftHasTarget = true; } else { - hasTarget = false; + liftHasTarget = false; } } catch (TableKeyNotDefinedException e) { @@ -210,44 +211,46 @@ public void processData() { * isCentered * Method to determine whether the robot sees the center of the target (within the threshold value) */ - public boolean isCentered() { + public boolean liftIsCentered() { // if the robot sees the target // determine whether the horizontal value the robot sees is within the threshold defining the center of the target // set isCentered according to whether the robot is aligned with the center of the target - if (hasTarget) + if (liftHasTarget) { - double difference = trueCenter - (currentCenter); + double difference = trueCenter - (liftCurrentCenter); if (Math.abs(difference) <= thresholdX) { - isCentered = true; + liftIsCentered = true; } else if (Math.abs(difference) > thresholdX) { - isCentered = false; + liftIsCentered = false; } - RotateDiff = difference; + liftRotateDiff = difference; } else{ - isCentered = false; + liftIsCentered = false; } - return isCentered; + + return liftIsCentered; } + /* * getRotate * Method to determine whether the robot is at the center of the target so it can drive towards target */ - public double getRotate() { + public double liftGetRotate() { double difference=0; // currently we are only running 1 cycle of the sweep and stopping // if in the future additional sweeps are required, this is where the reset should occur -// if (sweepCounter > 400){ -// sweepCounter = 0; -// } + // if (sweepCounter > 400){ + // sweepCounter = 0; + // } // if robot sees target and is centered - no need to rotate the robot - if (hasTarget && isCentered) + if (liftHasTarget && liftIsCentered) { rotate = 0.0; } @@ -255,14 +258,14 @@ public double getRotate() { // if the robot sees the target but is not centered // check to see whether the robot is within the threshold // rotate based on the math function - else if (hasTarget && !isCentered){ - difference = trueCenter - (currentCenter); - - rotate = Math708.getSignClippedPercentError(currentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); + else if (liftHasTarget && !liftIsCentered){ + difference = trueCenter - (liftCurrentCenter); + + rotate = Math708.getSignClippedPercentError(liftCurrentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); if (Math.abs(difference) > thresholdX) { - if (currentCenter < trueCenter){ + if (liftCurrentCenter < trueCenter){ rotate = Math.abs(rotate); } else { @@ -276,32 +279,32 @@ else if (hasTarget && !isCentered){ // sweep is defined as rotating the robot right, left, right in predefined counts // if in the sweep the robot does not find the target, it stops after 3 sweeps // otherwise it will jump back into the hasTarget logic identified above - else if (!hasTarget){ - if (Math.abs(sweepDirection) < .1){ - sweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; + else if (!liftHasTarget){ + if (Math.abs(liftSweepDirection) < .1){ + liftSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; rotate = -AutoConstants.SWEEP_ROTATE; } - else if (sweepDirection > AutoConstants.SWEEP1_MIN){ - if ((sweepCounter >= AutoConstants.SWEEP1_MIN && sweepCounter <= AutoConstants.SWEEP1_MAX) - || (sweepCounter >= AutoConstants.SWEEP3_MIN && sweepCounter <= AutoConstants.SWEEP3_MAX)){ + else if (liftSweepDirection > AutoConstants.SWEEP1_MIN){ + if ((liftSweepCounter >= AutoConstants.SWEEP1_MIN && liftSweepCounter <= AutoConstants.SWEEP1_MAX) + || (liftSweepCounter >= AutoConstants.SWEEP3_MIN && liftSweepCounter <= AutoConstants.SWEEP3_MAX)){ rotate = -AutoConstants.SWEEP_ROTATE; - if (sweepCounter== AutoConstants.SWEEP1_MAX || sweepCounter== AutoConstants.SWEEP3_MAX){ - sweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; + if (liftSweepCounter== AutoConstants.SWEEP1_MAX || liftSweepCounter== AutoConstants.SWEEP3_MAX){ + liftSweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; } } } else { - if (sweepCounter >= AutoConstants.SWEEP2_MIN && sweepCounter <= AutoConstants.SWEEP2_MAX) + if (liftSweepCounter >= AutoConstants.SWEEP2_MIN && liftSweepCounter <= AutoConstants.SWEEP2_MAX) rotate = AutoConstants.SWEEP_ROTATE; - if (sweepCounter== AutoConstants.SWEEP2_MAX){ - sweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; + if (liftSweepCounter== AutoConstants.SWEEP2_MAX){ + liftSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; } } - sweepCounter++; + liftSweepCounter++; } - RotateDiff = difference; + liftRotateDiff = difference; return rotate; } @@ -309,118 +312,114 @@ else if (sweepDirection > AutoConstants.SWEEP1_MIN){ * getMove * Method to determine if the robot is close enough to target so it can stop */ - - public double getMove() { + + public double liftGetMove() { // if the robot sees the target // Method to determine whether the robot is at the correct distance to the target so stop - if (hasTarget) + if (liftHasTarget) { - double difference = distanceToStop - currentDistance; - move = Math708.getSignClippedPercentError(currentDistance, distanceToStop, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); - + double difference = liftDistanceToStop - liftCurrentDistance; + move = Math708.getSignClippedPercentError(liftCurrentDistance, liftDistanceToStop, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); + //Check if target is at correct distance within threshold if (Math.abs(difference) <= thresholdDistance) { move = 0.0; - isAtDistance = true; + liftIsAtDistance = true; } else { - isAtDistance = false; + liftIsAtDistance = false; } - MoveDiff = difference; + liftMoveDiff = difference; } else { - move = 0.0; + move = 0.0; } return move; } - /* - * isAtDistance - * Method to determine whether the robot is at the distance from the target based on the threshold value + + /** + * GETTERS and PUTTERS to return the private variables + * @return */ - public boolean isAtDistance() { - double difference = distanceToStop - currentDistance; + + + public boolean liftIsAtDistance() { + double difference = liftDistanceToStop - liftCurrentDistance; //Check if target is at correct level within threshold if (Math.abs(difference) <= thresholdDistance) { - isAtDistance = true; + liftIsAtDistance = true; } else { - isAtDistance = false; + liftIsAtDistance = false; } - return isAtDistance; + return liftIsAtDistance; } - /** - * GETTERS and PUTTERS to return the private variables - * @return - */ - public boolean isHasTarget() { - return hasTarget; + public boolean liftIsHasTarget() { + return liftHasTarget; } - - public void putCurrentCenter(double cc) { - currentCenter = cc; + public void putLiftHasTarget(boolean ht) { + liftHasTarget = ht; } - - public void putHasTarget(boolean ht) { - hasTarget = ht; + public void putLiftCurrentCenter(double cc) { + liftCurrentCenter = cc; } - - public int getCounter() { - return sweepCounter; + public int getLiftCounter() { + return liftSweepCounter; } - public void putCounter(int ct) { - sweepCounter = ct; + public void putLiftCounter(int ct) { + liftSweepCounter = ct; } - public void putIsCentered(boolean ic) { - isCentered = ic; + public void putLiftIsCentered(boolean ic) { + liftIsCentered = ic; } - public void putAtDistance(boolean ay) { - isAtDistance = ay; + public void putLiftAtDistance(boolean ay) { + liftIsAtDistance = ay; } - public boolean isInSweep() { - if (hasTarget) { - inSweep = false; - sweepCounter=1; + public boolean liftIsInSweep() { + if (liftHasTarget) { + liftInSweep = false; + liftSweepCounter=1; } else { - inSweep = true; + liftInSweep = true; } - return inSweep; + return liftInSweep; } - + public void sendToDashboard() { - if (Constants.DEBUG) { - SmartDashboard.putBoolean("Has Target", isHasTarget()); - SmartDashboard.putBoolean("Is At Distance", isAtDistance()); - SmartDashboard.putNumber("Current Distance", currentDistance); - SmartDashboard.putNumber("Center of Target", currentCenter); - SmartDashboard.putNumber("Rotation", rotate); - SmartDashboard.putNumber("Rotate Difference", RotateDiff); - SmartDashboard.putNumber("Distance Difference", MoveDiff); - SmartDashboard.putNumber("Sweep Counter", sweepCounter); - SmartDashboard.putNumber("SweepDirection", sweepDirection); - SmartDashboard.putBoolean("isCentered", isCentered()); - SmartDashboard.putNumber("rectX", rectX); - SmartDashboard.putNumber("rectY", rectY); - SmartDashboard.putNumber("rectWidth", rectWidth); - SmartDashboard.putNumber("rectHeight", rectHeight); - SmartDashboard.putNumber("Distance To Target", currentDistance); - SmartDashboard.putNumber("pipelineSize", pipelineSize); + if (Constants.LIFT_DEBUG) { + + SmartDashboard.putBoolean("L-Has Target", liftIsHasTarget()); + SmartDashboard.putBoolean("L-Is At Distance", liftIsAtDistance()); + SmartDashboard.putNumber("L-Center of Target", liftCurrentCenter); + SmartDashboard.putNumber("L-Rotation", rotate); + SmartDashboard.putNumber("L-Rotate Difference", liftRotateDiff); + SmartDashboard.putNumber("L-Distance Difference", liftMoveDiff); + SmartDashboard.putNumber("L-Sweep Counter", liftSweepCounter); + SmartDashboard.putNumber("L-SweepDirection", liftSweepDirection); + SmartDashboard.putBoolean("L-isCentered", liftIsCentered()); + SmartDashboard.putNumber("L-rectX", lrectX); + SmartDashboard.putNumber("L-rectY", lrectY); + SmartDashboard.putNumber("L-rectWidth", lrectWidth); + SmartDashboard.putNumber("L-rectHeight", lrectHeight); + SmartDashboard.putNumber("L-Distance To Target", liftCurrentDistance); + SmartDashboard.putNumber("L-pipelineSize", liftPipelineSize); } } - - public void initDefaultCommand() { - if (Constants.DEBUG) { + + public void initDefaultCommand() { + if (Constants.LIFT_DEBUG) { } - } -} + } +} \ No newline at end of file diff --git a/sysProps.xml b/sysProps.xml index 95d3f80bb5ddcafd81a210427c5d66fb6da0837a..7175574fb2c3f171a6259f7f43396f75c3c5f592 100644 GIT binary patch delta 156 zcmZ2yu+Ct^G-h@)1``HX2A9c!EVi3(F$b~o8!}ijSTPtf7ywB(2Fu9@IjlFAasFd5 zH36!$0IGEbk_JGiz~I7Q4CFZiNf)p0t n2!rY5gCdrb1%#%t8w2eyWiZ>kR!EhR6)XvqvfeBtBEtdz8Eqi2 delta 160 zcmZ2yu+Ct^G-gg$1``HH215qp$rqWdH{W6oV&yktFlDe}Z~{tLF}N_8Og_kAy}69@ zAB(9IgE3IR5GZZIU;u;)49-9iM&;L2-Y~H` uGlVjP0J-LqKM1i+7807mZVFUn!eFs^t&l1sD^QZbdGbLK>&-$UGAsbVwITTc From 26191607c69dc751e4788d93dc809d70db040476 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Fri, 24 Feb 2017 15:46:05 -0500 Subject: [PATCH 33/69] autos merged --- build/org/usfirst/frc/team708/robot/OI.class | Bin 3882 -> 3993 bytes .../robot/commands/shooter/ManualShoot.class | Bin 1036 -> 1336 bytes .../robot/commands/shooter/StopShooter.class | Bin 0 -> 1025 bytes src/org/usfirst/frc/team708/robot/OI.java | 1 + src/org/usfirst/frc/team708/robot/Robot.java | 14 ++-- .../commands/autonomous/OneGearCenter.java | 43 ++++++----- .../commands/autonomous/OneGearLeft.java | 28 ++------ .../commands/autonomous/OneGearRight.java | 60 ---------------- .../robot/commands/autonomous/SixtyBalls.java | 68 ++++++++++++++++++ .../robot/commands/autonomous/TenBalls.java | 33 +++------ .../DriveStraightToEncoderDistanceOrTime.java | 4 +- .../drivetrain/DriveToIRDistance.java | 2 +- .../commands/drivetrain/ToggleBrakeMode.java | 2 +- .../robot/commands/shooter/ManualShoot.java | 20 +++--- .../robot/commands/shooter/StopShooter.java | 50 +++++++++++++ .../team708/robot/subsystems/Drivetrain.java | 14 ++-- .../team708/robot/subsystems/Pivot_Gear.java | 2 + sysProps.xml | Bin 6190 -> 6190 bytes 18 files changed, 196 insertions(+), 145 deletions(-) create mode 100644 build/org/usfirst/frc/team708/robot/commands/shooter/StopShooter.class delete mode 100644 src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearRight.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/shooter/StopShooter.java diff --git a/build/org/usfirst/frc/team708/robot/OI.class b/build/org/usfirst/frc/team708/robot/OI.class index c6acdec20534e6179586acf8269a7d5cf289b023..2a878e18fb613248e02a74f6ad8a945ff7665a32 100644 GIT binary patch delta 1720 zcmY+E+jkRH6vn@4+MLPh5YtLqS};XWu(TB@#YNLvD?$-1UW%ge2C+@8P?A!DQ3MBX z;QhjQ!zzj@Un&jSK$?nco6%lQC?Gc zU86oo^@hTm8Vv!wrSP`Kk^oLBcuco6*!hmx`L4oy8m)o;zQP9@D*`xWjr^IyX^qan^SSYSq41@~`k;cG`YVO6H8z@4f1_co#kVHzJM;Kn;f%sr zjb8kqa89Ei=M^q!4B))ce^j_wUT&R;*aaMNum>6MLiJ#6$w3)EId~K!Cu_FFe|AtY zm_^1y$~&M|dzWhL_>N5OP-bH1cs^fPaL1Yo`AP9*ryNY1ZDSa*&_B1WIr`W_mg;Cj zblj+Yq7FuzBKvrRJ<);MU(C*lg-{ms{)jG$?l<8*^JnmuDaX!X#K9={ty8^`JVv~n z+H6l6=K+CKVtcNT*_U-NWt@*otkE;#hinKOmZxCc9ByY&*p}+6WPqc?5NkK3vM5W4_Jw2 zlbfq%lb*H(+i)u^Z0EWPw~=oT@et#7{Eu63M~Lra{9Pfwn>-w1lW(VCcdoz?9ruI+ zOoDquyo-Eai0|hC(jneOejvoA;DaGH`5y}L!{kTE?))3>W&+NZ+yG}vEE^`4LnW3| zB9`MJmUAJN?GnpYiRFNZ^dK9gf$g@*(J39M}!U^os_PZ3~R%%&c}KxT@`F7 zq1(qs!VQFr@`gn|hq0K?4FC8>QO7ShiE*^^8`y-s9K{Lh`>`8&t|svmKbYf~a^dl6 zPV-{Up@B5P?5)B>!c#6cs2hTsAV~~C5>W{th(Tq&08xTya6>Q}f#@J8 z7jGynDtP1OB|$`XaZ|-q`D&FfzW5L5i%2Q^{>yjr)T?oyQiC`8iQZ{ zzWx({Whg2f&{&0uB)agb!fP6{Frg9Ppxt?0;gE)BcMjtXyYr^P5e+~3z)^)`8kG?o zS9nXKDuTBa-qEOu;9Z6HH0mPX6LbmizQP9@b0htvg3)M-;6r=LDTR+TnxmbM6+Y2e z9KmTTpHcW!BNOd>W_LbU_(Ef8bcDRGhh@)dWL zm$ydGNpHK!DBpeF_IAx!4J+Rp#&#cr?AhdH%%n=YyKPU;jNhNCuHpsTll%XED%GDG z8yp_;F=F+d;?bRWmi2_UGc}5Wk6!foxEFm6mY8#Tj`^$1GtJ3%cNEtgwDFK;6C~5b z9~~?!;SI^vBjY(Adua4)@{&2O_Xb^@GceS8>&R8THDztUYTO40_j6r_2gqw;+|RzX z|KSF#i}8B)KN#Z;@oqK;5sL_;1og_uj2C(sz8i7;Qp`CD5zSJ0>8&J*XAph2OAdMk3Vi#KYgX+XEL)p#f zbNmU9aJ2{fcnL>%1qLtSEMCTCjHBf`Uct}UkKb?rzhio(Pm`<3_-M# z4P&r29gz)l5K-9=2H>3tMy|XRp;_X}l!WNYw_!|T!xQ;7%t=lp@k9nC8b3#k;fO|} l#&kqWh{kk8BT=hmK5|4V`X2Y#C>)HLuF9<1$8{O@{{t4OOP>G$ diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class b/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class index b95dad8079c1f15384b4f0b5db531fd08cdd67b0..2769cdef00f57ed282a06bda1291995493d72d84 100644 GIT binary patch literal 1336 zcma)5TTc@~6#k|yyRa-mDInqn0l5}gq*ktC6B?ok5JL?QzD?T!2HV|cFL+6O_aFGC z4?g(fi#*iC2Y-M+%6MkGl!ll}o6MYZX3uxN^Uayxe}4V~@DQ5@k{Iv81nwD_#FUoX zqd5IkXj;dNfmzIHxi25WsPfWU?sKl`%^T>$eH{xrECy{u+S1=-h|kO(FeJ8|vS8@l zk+#?iszu?x;Kd3>`gfcXuN-h!DnAM){A1}cZ0tDhkrjA{()E1n&@EZM;ML{D70Y#s zj&GHmYL(k%&+?8P#}}@(%k6+y3d&n&FcbsHEAk!H=_&ZU^lF#aq7u4zBT9i!Cx-O4 z=}YfeltZ>JX%#lv-O?sdH>mmQ#3(p{TN2w+vF>ZBv~a>txru(HbS#>9fF&InlN8OG zc!Xt!>GoZ0Ikx9>+xK*=m{`S{iFIt4c#M>ZJ4i9CwFhV?1H+^!2iEJFv>GasRguM$ zbM36HhK39i?ThRy#Yu&-D^G>*a%nSU|8qZHQ1sqf)F@UZ*y1!yDv`w&3M?qPTDO)^RM7j^U=OwUsGB>&d?loDNP&};?0!g#Jb(LUGXK7pRD#voRgnau@ycHp) z5&F0uVg)xCRwol}>cm))SmR?gL>+4())9s{i;&^b|j8GqMTe5escJrx}u zDZ`sXg&3A6FL~+oB#}l!GTi--^d^hU2V-SycrLe0N$}0dOa7f9&FKfaU)GmSbFaRW zAB(ZNk3~ACAV0Ahs1YIA6ZF1Eo{>Mc{vGTq1r?km8;}Pn>d}GDP~_UF39~pw-oso0 zu#IY73%;Q;4{w0lILZR8UMisk1Ka) IpEJGi2NB=SsQ>@~ diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/StopShooter.class b/build/org/usfirst/frc/team708/robot/commands/shooter/StopShooter.class new file mode 100644 index 0000000000000000000000000000000000000000..fe82e51469610a49814c9e9224f8716801aaffd2 GIT binary patch literal 1025 zcmah{%Wl&^6g`tVaq613lvjZk=p!_35fk1BDmFn~MJx#Ff}P_`$yA9a@{DvQh$nfvSakDmY@V&6j@>x;OGYc8&P*ubU@H$1qw>Ef1) zEr!~WjHG$Nu+ZE;VQ|{2FBn!jG7_(nQBTBgg5HpB);cN-h9^NR?K!)2%s^^}qmGK- z@kF1>SQ~yChunx@^rZEa$Ev3c57lTCM19TmKq(_)-Zg66P3z|jo>d@&q5Mp9T=7wa ziJ{7q`j|R;Ao^2vZz+n1>LnQwNt}$0?RZ_4#GyErR^@7e`R-ZpKJc*!&&9Tn9qcmf zl?!dFNSh!s+C{_1ZS47I!t-$v9>cS8Y}rpTG(a=h` z4b0k2afwb3C^O2{gYRHpsi?rG=urkP!@)YvQRSx}VHqoQa9Tq6uoZ?bWF|%%h+B`vvOuAPfsAdF=Otng{`~i-<%$ooJ literal 0 HcmV?d00001 diff --git a/src/org/usfirst/frc/team708/robot/OI.java b/src/org/usfirst/frc/team708/robot/OI.java index 5835ecc..ebb8be1 100644 --- a/src/org/usfirst/frc/team708/robot/OI.java +++ b/src/org/usfirst/frc/team708/robot/OI.java @@ -102,6 +102,7 @@ public OI() { // Operator spinShooter.whileHeld(new ManualShoot()); + spinShooter.whenReleased(new StopShooter()); spinShooterBack.whileActive(new SpinShooterBack()); spinFeeder.whileHeld(new ManualFeeder()); diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index fbc947d..9bb57d0 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -272,17 +272,19 @@ private void queueAlliance() { */ private void queueAutonomousModes() { -// autonomousMode.addObject("Drive Straight for time", new DriveStraightForTime(.5, 3)); - autonomousMode.addDefault("Do Nothing", new DoNothing()); - autonomousMode.addObject("Drive Over Line", new driveDistance()); - autonomousMode.addObject("One Gear Center", new OneGearCenter()); - autonomousMode.addObject("One Gear Left", new OneGearLeft()); - autonomousMode.addObject("10 Ball", new TenBalls()); + autonomousMode.addDefault("Do Nothing", new DoNothing()); + autonomousMode.addObject("Drive Over Line", new driveDistance()); + autonomousMode.addObject("One Gear Center", new OneGearCenter()); + autonomousMode.addObject("One Gear Open Side", new OneGearLeft()); + autonomousMode.addObject("10 Ball", new TenBalls()); +// autonomousMode.addObject("60 Ball", new SitxyBalls()); autonomousMode.addObject("Rotate And Drive To Lift", new RotateAndDriveToLift()); autonomousMode.addObject("Drive to Boiler Location 1", new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION1)); autonomousMode.addObject("Drive to Boiler Location 2", new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); +// autonomousMode.addObject("Rotate And Drive To Gear", new RotateAndDriveToGear()); +// autonomousMode.addObject("Drive Straight for time", new DriveStraightForTime(.5, 3)); // autonomousMode.addObject("Find Target", new DriveToTarget()); // autonomousMode.addObject("Drive in Square", new DriveInSquare()); // autonomousMode.addObject("turn", new turn()); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java index 4f3903f..4a9bfa0 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java @@ -14,37 +14,48 @@ import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; public class OneGearCenter extends CommandGroup { - - - private static final double driveStraightSpeed = 0.4; - private static final double driveStraightTime = 2; - - private static final double turnSpeed = -0.4; - private static final double turnDegrees = 90; - // Called just before this Command runs the first time protected void initialize() { // Robot.drivetrain.resetEncoder(); // Robot.drivetrain.resetEncoder2(); // Robot.drivetrain.resetGyro(); - } public OneGearCenter() { // addSequential(new WaitCommand(1.0)); addSequential(new DriveStraightToEncoderDistance(55, .4, false)); + addSequential(new RotateAndDriveToLift()); - -// addSequential(new WaitCommand(4)); - + addSequential(new DriveStraightToEncoderDistance(6, .4, false)); + addSequential(new Intake_Gear_Out()); - // addSequential(new WaitCommand(.1)); - // addSequential(new Intake_Gear_Off()); + addSequential(new DriveStraightToEncoderDistance(50, .4, true)); - addSequential(new TurnToDegrees(.6, 45)); - addSequential(new DriveStraightToEncoderDistance(110, .6, false)); + + //this is a test replace with 3 gear + addSequential(new TurnToDegrees(Robot.allianceColor*.6, Robot.allianceColor * 45)); //add alliance direction + addSequential(new DriveStraightToEncoderDistance(110, .4, false)); + +// get gear 2 +// addSequential(new TurnToDegrees(Robot.allianceColor*.6, Robot.allianceColor * 135)); +// ddSequential(new RotateAndDriveToGear()); +// addSequential(new TurnToDegrees(-Robot.allianceColor*.6, -Robot.allianceColor * 135)); +// addSequential(new DriveStraightToEncoderDistance(40, .4, false)); +// addSequential(new RotateAndDriveToLift()); +// addSequential(new DriveStraightToEncoderDistance(6, .4, false)); +// addSequential(new Intake_Gear_Out()); +// addSequential(new DriveStraightToEncoderDistance(50, .4, true)); +// get gear 3 +// addSequential(new TurnToDegrees(-Robot.allianceColor*.6, -Robot.allianceColor * 135)); +// ddSequential(new RotateAndDriveToGear()); +// addSequential(new TurnToDegrees(Robot.allianceColor*.6, Robot.allianceColor * 135)); +// addSequential(new DriveStraightToEncoderDistance(40, .4, false)); +// addSequential(new RotateAndDriveToLift()); +// addSequential(new DriveStraightToEncoderDistance(6, .4, false)); +// addSequential(new Intake_Gear_Out()); +// addSequential(new DriveStraightToEncoderDistance(50, .4, true)); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java index 52732b4..4fa056f 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java @@ -13,37 +13,23 @@ import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; public class OneGearLeft extends CommandGroup { - - - private static final double driveStraightSpeed = 0.4; - private static final double driveStraightTime = 2; - - private static final double turnSpeed = -0.4; - private static final double turnDegrees = 90; - // Called just before this Command runs the first time protected void initialize() { - Robot.drivetrain.resetEncoder(); - Robot.drivetrain.resetEncoder2(); - Robot.drivetrain.resetGyro(); - } public OneGearLeft() { - addSequential(new WaitCommand(1.0)); - addSequential(new DriveStraightToEncoderDistance(-70, .4)); - addSequential(new TurnToDegrees(-45,-0.4)); + addSequential(new DriveStraightToEncoderDistance(70, .4, false)); + + addSequential(new TurnToDegrees(-Robot.allianceColor*45,-Robot.allianceColor*0.6)); addSequential(new RotateAndDriveToLift()); - addSequential(new DriveStraightToEncoderDistance(-6, .2)); + + addSequential(new DriveStraightToEncoderDistance(6, .4, false)); + addSequential(new Intake_Gear_Out()); - addSequential(new WaitCommand(.1)); - addSequential(new Intake_Gear_Off()); - addSequential(new DriveStraightToEncoderDistance(12, .2)); - addSequential(new TurnToDegrees(45, 0.4)); - addSequential(new DriveStraightToEncoderDistance(90, .4)); + addSequential(new DriveStraightToEncoderDistance(12, .4, true)); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearRight.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearRight.java deleted file mode 100644 index 93e634b..0000000 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearRight.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.usfirst.frc.team708.robot.commands.autonomous; - -import org.usfirst.frc.team708.robot.Robot; -import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; -import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToLift; -import org.usfirst.frc.team708.robot.commands.drivetrain.ToggleBrakeMode; -import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegrees; -import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Off; -import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Out; - -import edu.wpi.first.wpilibj.command.CommandGroup; -import edu.wpi.first.wpilibj.command.WaitCommand; -import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; - -public class OneGearRight extends CommandGroup { - - - private static final double driveStraightSpeed = 0.4; - private static final double driveStraightTime = 2; - - private static final double turnSpeed = -0.4; - private static final double turnDegrees = 90; - - // Called just before this Command runs the first time - protected void initialize() { - Robot.drivetrain.resetEncoder(); - Robot.drivetrain.resetEncoder2(); - Robot.drivetrain.resetGyro(); - - } - - public OneGearRight() { - - addSequential(new WaitCommand(1.0)); - addSequential(new DriveStraightToEncoderDistance(-60, .4)); - addSequential(new RotateAndDriveToLift()); - addSequential(new DriveStraightToEncoderDistance(-6, .2)); - addSequential(new Intake_Gear_Out()); - addSequential(new WaitCommand(.1)); - addSequential(new Intake_Gear_Off()); - addSequential(new DriveStraightToEncoderDistance(12, .2)); - addSequential(new TurnToDegrees(45, 0.4)); - addSequential(new DriveStraightToEncoderDistance(90, .4)); - - } - - // Make this return true when this Command no longer needs to run execute() - protected boolean isFinished() { - return false; - } - - // Called once after isFinished returns true - protected void end() { - } - - // Called when another command which requires one or more of the same - // subsystems is scheduled to run - protected void interrupted() { - } -} diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java new file mode 100644 index 0000000..66a7432 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java @@ -0,0 +1,68 @@ +package org.usfirst.frc.team708.robot.commands.autonomous; + +import org.usfirst.frc.team708.robot.AutoConstants; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightForTime; +import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; +import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToBoiler; +import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToLift; +import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegrees; +import org.usfirst.frc.team708.robot.commands.feeder.FeederOff; +import org.usfirst.frc.team708.robot.commands.feeder.SpinFeeder; +import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Off; +import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Out; +import org.usfirst.frc.team708.robot.commands.shooter.StopShooter; +import org.usfirst.frc.team708.robot.commands.shooter.SpinShooter; + +import edu.wpi.first.wpilibj.command.CommandGroup; +import edu.wpi.first.wpilibj.command.WaitCommand; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; + +public class SixtyBalls extends CommandGroup { + + // Called just before this Command runs the first time + protected void initialize() { + } + + public SixtyBalls() { + addSequential(new DriveStraightToEncoderDistance(125, .4, false)); //55, .4, false + addSequential(new TurnToDegrees(Robot.allianceColor*.6, Robot.allianceColor * 90)); + addSequential(new DriveStraightToEncoderDistance(25, .5, true)); + addSequential(new WaitCommand(4)); + addSequential(new DriveStraightToEncoderDistance(25, .5, false)); + addSequential(new TurnToDegrees(-Robot.allianceColor*.6, -Robot.allianceColor * 90)); + addSequential(new DriveStraightToEncoderDistance(40, .4, true)); //55, .4, false + + addSequential(new TurnToDegrees(Robot.allianceColor*.6, Robot.allianceColor * 45)); + // addSequential(new RotateAndDriveToBoiler(10)); + addSequential(new WaitCommand(4)); + + addSequential(new SpinShooter()); + addSequential(new WaitCommand(1.0)); + addParallel(new SpinFeeder()); + addSequential(new WaitCommand(5)); + addSequential(new FeederOff()); + addSequential(new StopShooter()); + + addSequential(new DriveStraightToEncoderDistance(50, .4, false)); +// addSequential(new TurnToDegrees(-Robot.allianceColor*45,-Robot.allianceColor*0.6)); + addSequential(new RotateAndDriveToLift()); + addSequential(new DriveStraightToEncoderDistance(6, .4, false)); + addSequential(new Intake_Gear_Out()); + addSequential(new DriveStraightToEncoderDistance(12, .4, true)); + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return false; + } + + // Called once after isFinished returns true + protected void end() { + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + } +} diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java index 6651e3a..0a9cde0 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java @@ -11,7 +11,7 @@ import org.usfirst.frc.team708.robot.commands.feeder.SpinFeeder; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Off; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Out; -//import org.usfirst.frc.team708.robot.commands.shooter.ShooterOff; +import org.usfirst.frc.team708.robot.commands.shooter.StopShooter; import org.usfirst.frc.team708.robot.commands.shooter.SpinShooter; import edu.wpi.first.wpilibj.command.CommandGroup; @@ -19,43 +19,30 @@ import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; public class TenBalls extends CommandGroup { - - private static final double driveStraightSpeed = 0.4; - private static final double driveStraightTime = 2; - - private static final double turnSpeed = 0.4; - private static final double turnRight = 90; - private static final double turnLeft = -90; // Called just before this Command runs the first time protected void initialize() { - Robot.drivetrain.resetEncoder(); - Robot.drivetrain.resetEncoder2(); - Robot.drivetrain.resetGyro(); - } public TenBalls() { addSequential(new DriveStraightToEncoderDistance(85, .4, false)); //55, .4, false - addSequential(new WaitCommand(0.1)); - addSequential(new TurnToDegrees(.6, 45)); -// addSequential(new RotateAndDriveToBoiler(10)); + addSequential(new TurnToDegrees(Robot.allianceColor*.6, Robot.allianceColor * 45)); + // addSequential(new RotateAndDriveToBoiler(10)); addSequential(new WaitCommand(4)); addSequential(new SpinShooter()); addSequential(new WaitCommand(1.0)); addParallel(new SpinFeeder()); - addSequential(new WaitCommand(4)); + addSequential(new WaitCommand(5)); addSequential(new FeederOff()); - // addSequential(new ShooterOff()); - addSequential(new DriveStraightToEncoderDistance(50, .4,false)); - // addSequential(new RotateAndDriveToLift()); + addSequential(new StopShooter()); + + addSequential(new DriveStraightToEncoderDistance(50, .4, false)); +// addSequential(new TurnToDegrees(-Robot.allianceColor*45,-Robot.allianceColor*0.6)); + addSequential(new RotateAndDriveToLift()); addSequential(new DriveStraightToEncoderDistance(6, .4, false)); addSequential(new Intake_Gear_Out()); - addSequential(new DriveStraightToEncoderDistance(50, .4,true)); - addSequential(new TurnToDegrees(-.6,-45)); - addSequential(new DriveStraightToEncoderDistance(110, .4, false)); - + addSequential(new DriveStraightToEncoderDistance(12, .4, true)); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.java index 02b9b2a..9120d1f 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.java @@ -69,9 +69,9 @@ protected boolean isFinished() { // Called once after isFinished returns true protected void end() { - Robot.drivetrain.disable(); +// Robot.drivetrain.disable(); Robot.drivetrain.stop(); - Robot.drivetrain.resetEncoder(); +// Robot.drivetrain.resetEncoder(); } // Called when another command which requires one or more of the same diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToIRDistance.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToIRDistance.java index 09252f3..d4c17cd 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToIRDistance.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToIRDistance.java @@ -41,7 +41,7 @@ protected void initialize() { protected void execute() { // moveSpeed = Robot.drivetrain.moveByIR(targetDistance, minValue, maxValue, tolerance); // if (targetDistance) - Robot.drivetrain.haloDrive(moveSpeed, 0.0, false); +// Robot.drivetrain.haloDrive(moveSpeed, 0.0, false); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/ToggleBrakeMode.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/ToggleBrakeMode.java index ffd479a..34e39cd 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/ToggleBrakeMode.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/ToggleBrakeMode.java @@ -16,11 +16,11 @@ public ToggleBrakeMode() { // Called just before this Command runs the first time protected void initialize() { + Robot.drivetrain.toggleBrakeMode(); } // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.drivetrain.toggleBrakeMode(); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java b/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java index 66b63a2..e3d6393 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java @@ -28,20 +28,22 @@ public ManualShoot() { // Called just before this Command runs the first time protected void initialize() { - Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_SPEED_HIGH); - + if (Robot.drivetrain.getSonarDistance() > 60) + { + Robot.shooter.moveHood(Constants.HOOD_GEAR); + Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_HIGH); + } + else + { + Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_LOW); + Robot.shooter.moveHood(Constants.HOOD_BUMBER); + } + // Robot.shooter.setFgain(Constants.SHOOTER_F); } // Called repeatedly when this Command is scheduled to run protected void execute() { -// boolean L_Shoulderpressed = OI.operatorGamepad.getButton(Gamepad.button_L_Shoulder); - -// if (L_Shoulderpressed == true){ -// Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_SPEED_HIGH); -// } -// else -// Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_OFF); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/StopShooter.java b/src/org/usfirst/frc/team708/robot/commands/shooter/StopShooter.java new file mode 100644 index 0000000..c77e28d --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/StopShooter.java @@ -0,0 +1,50 @@ +package org.usfirst.frc.team708.robot.commands.shooter; +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.RobotMap; +import org.usfirst.frc.team708.robot.util.Gamepad; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.OI; + +//import org.team708.robot.OI; +//import org.team708.robot.subsystems.Loader; +//import org.team708.robot.util.Gamepad; +//import org.team708.robot.commands.shooter.Fire; + +import edu.wpi.first.wpilibj.command.Command; +import edu.wpi.first.wpilibj.command.WaitCommand; + +/** + * + */ +public class StopShooter extends Command { + + + public StopShooter() { +// requires(Robot.shooter); + } + +// Called just before this Command runs the first time + protected void initialize() { + Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_OFF); + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return true; + } + + // Called once after isFinished returns true + protected void end() { + Robot.shooter.stop(); + } + + // Called when another command which requires one or more of the same + // subsystems are scheduled to run + protected void interrupted() { + end(); + } +} diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java index 27b9890..7603dfd 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java @@ -192,7 +192,7 @@ public void setGearLight(boolean on) { } public void setBoilerLight(boolean on) { - boilerLight.set(on); + boilerLight.set(on); } public boolean getUsePID() { @@ -220,8 +220,8 @@ public double getAngle() { * Resets the gyro reading */ public void resetGyro() { - count++; - SmartDashboard.putNumber("resetgyro: ", count); +// count++; +// SmartDashboard.putNumber("resetgyro: ", count); gyro.reset(); } @@ -229,6 +229,7 @@ public void resetGyro() { // return gearSensor.get(); // // } + public double rotateByGyro(double targetAngle, double tolerance) { double difference = getAngle() - targetAngle; @@ -385,19 +386,20 @@ public void sendToDashboard() { // SmartDashboard.putNumber("Gyro Rate", gyro.getRate()); // Gyro rate // SmartDashboard.putNumber("PID Output", pidOutput); // PID Info // SmartDashboard.putNumber("DT Encoder Raw", encoder.get()); // Encoder raw count - SmartDashboard.putBoolean("Brake", brake); // Brake or Coast // SmartDashboard.putNumber("DT IR Distance", getIRDistance()); // IR distance reading // // SmartDashboard.putNumber("DT Rt Master", rightMaster.getTemperature()); // SmartDashboard.putNumber("DT Rt Slave", rightSlave.getTemperature()); // SmartDashboard.putNumber("DT Lft Master", leftMaster.getTemperature()); // SmartDashboard.putNumber("DT Lft Slave", leftSlave.getTemperature()); + SmartDashboard.putBoolean("Brake", brake); // Brake or Coast + SmartDashboard.putNumber("DT Encoder 1 Distance", encoder.getDistance()); // Encoder reading + SmartDashboard.putNumber("DT Encoder 2 Distance", encoder2.getDistance()); // Encoder reading } + SmartDashboard.putNumber("AllianceColor", Robot.allianceColor); SmartDashboard.putNumber("Gyro angle", ( (int)gyro.getAngle())); // Gyro angle SmartDashboard.putNumber("DT Sonar Distance", getSonarDistance()); // Sonar distance reading - SmartDashboard.putNumber("DT Encoder 1 Distance", encoder.getDistance()); // Encoder reading - SmartDashboard.putNumber("DT Encoder 2 Distance", encoder2.getDistance()); // Encoder reading // SmartDashboard.putNumber("Sonar Mode", sonarOverride); } } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java index 4c994a0..3680a37 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java @@ -6,6 +6,7 @@ import com.ctre.CANTalon; import com.ctre.CANTalon.FeedbackDevice; +import com.ctre.CANTalon.TalonControlMode; import edu.wpi.first.wpilibj.command.Subsystem; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; @@ -27,6 +28,7 @@ public Pivot_Gear() { // pivotMotor.reverseSensor(true); pivotMotor.setFeedbackDevice(FeedbackDevice.QuadEncoder); + pivotMotor.changeControlMode(com.ctre.CANTalon.TalonControlMode.Position); pivotMotor.configEncoderCodesPerRev(Constants.PIVOT_GEAR_ENCODER_COUNT); } diff --git a/sysProps.xml b/sysProps.xml index 7175574fb2c3f171a6259f7f43396f75c3c5f592..21063d76497c11abcf7e2bff99519bcddb9c7a33 100644 GIT binary patch delta 57 zcmZ2yu+CsZ37?`dgEJ7CF}N}qfT04A=fdCyWScQKG8i$qY@W&|%))BKV9sE)d96?* FD*#2y3gZ9( delta 57 zcmZ2yu+CsZ37?_~g9(ELgDVhPFc<)#0)q>KF_7m7Bwaw_o2T*#v#=U6m@=4cUMtkd F3IIks3ibd1 From d58f4ee8798987dbdd237b24ec81224b70746ec1 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sun, 26 Feb 2017 23:10:27 -0500 Subject: [PATCH 34/69] added autos --- .../frc/team708/robot/AutoConstants.class | Bin 1979 -> 2167 bytes .../usfirst/frc/team708/robot/Constants.class | Bin 3308 -> 3421 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 6908 -> 7056 bytes .../commands/autonomous/OneGearCenter.class | Bin 1476 -> 1369 bytes .../commands/autonomous/OneGearLeft.class | Bin 1952 -> 1334 bytes .../commands/autonomous/OneGearRight.class | Bin 1925 -> 0 bytes .../commands/autonomous/SixtyBalls.class | Bin 0 -> 2022 bytes .../robot/commands/autonomous/TenBalls.class | Bin 2154 -> 1843 bytes ...DriveStraightToEncoderDistanceOrTime.class | Bin 2074 -> 2054 bytes ...traightToEncoderDistanceOrTimeOrGear.class | Bin 0 -> 2075 bytes ...ightToEncoderDistanceOrTimeOrHasGear.class | Bin 0 -> 2081 bytes .../drivetrain/DriveToIRDistance.class | Bin 1382 -> 1335 bytes .../drivetrain/RotateAndDriveToBoiler.class | Bin 1997 -> 2163 bytes .../drivetrain/RotateAndDriveToGear.class | Bin 0 -> 1971 bytes .../drivetrain/RotateAndDriveToLift.class | Bin 1959 -> 1971 bytes .../commands/drivetrain/ToggleBrakeMode.class | Bin 958 -> 958 bytes .../commands/intake_gear/AquireGear.class | Bin 0 -> 1167 bytes .../robot/commands/shooter/ManualShoot.class | Bin 1336 -> 1434 bytes .../robot/commands/shooter/MoveHoodHigh.class | Bin 1000 -> 1038 bytes .../robot/commands/shooter/MoveHoodLow.class | Bin 997 -> 1034 bytes .../robot/commands/shooter/SpinShooter.class | Bin 1336 -> 1335 bytes .../visionProcessor/GripPipelineBoiler.class | Bin 6611 -> 5921 bytes .../GripPipelineLiftGear.class | Bin 0 -> 8176 bytes .../team708/robot/subsystems/Drivetrain.class | Bin 7226 -> 7180 bytes .../team708/robot/subsystems/Pivot_Gear.class | Bin 1642 -> 1855 bytes .../team708/robot/subsystems/Shooter.class | Bin 2864 -> 3070 bytes .../robot/subsystems/VisionBoiler.class | Bin 8831 -> 9193 bytes .../team708/robot/subsystems/VisionLift.class | Bin 8468 -> 0 bytes .../robot/subsystems/VisionLiftGear.class | Bin 0 -> 12272 bytes .../robot/subsystems/VisionProcessor.class | Bin 2443 -> 2439 bytes .../frc/team708/robot/util/Math708.class | Bin 2595 -> 2439 bytes .../frc/team708/robot/AutoConstants.java | 9 +- .../usfirst/frc/team708/robot/Constants.java | 76 +- src/org/usfirst/frc/team708/robot/Robot.java | 62 +- .../commands/autonomous/OneGearCenter.java | 5 +- ...StraightToEncoderDistanceOrTimeOrGear.java | 86 ++ ...aightToEncoderDistanceOrTimeOrHasGear.java | 82 ++ .../drivetrain/RotateAndDriveToBoiler.java | 8 +- .../drivetrain/RotateAndDriveToGear.java | 166 ++-- .../drivetrain/RotateAndDriveToLift.java | 26 +- .../commands/intake_gear/AquireGear.java | 47 + .../robot/commands/shooter/ManualShoot.java | 14 +- .../robot/commands/shooter/MoveHoodHigh.java | 3 +- .../robot/commands/shooter/MoveHoodLow.java | 3 +- .../robot/commands/shooter/SpinShooter.java | 8 +- .../visionProcessor/GripPipelineBoiler.java | 59 +- .../visionProcessor/GripPipelineLiftGear.java | 286 ++++++ .../frc/team708/robot/subsystems/Shooter.java | 12 + .../robot/subsystems/VisionBoiler.java | 77 +- .../team708/robot/subsystems/VisionLift.java | 848 +++++++++--------- .../robot/subsystems/VisionLiftGear.java | 739 +++++++++++++++ .../robot/subsystems/VisionProcessor.java | 2 +- .../frc/team708/robot/util/Math708.java | 22 +- sysProps.xml | Bin 6190 -> 6190 bytes 54 files changed, 1953 insertions(+), 687 deletions(-) delete mode 100644 build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearRight.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTimeOrGear.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTimeOrHasGear.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/AquireGear.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.class delete mode 100644 build/org/usfirst/frc/team708/robot/subsystems/VisionLift.class create mode 100644 build/org/usfirst/frc/team708/robot/subsystems/VisionLiftGear.class create mode 100644 src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTimeOrGear.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTimeOrHasGear.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/intake_gear/AquireGear.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java create mode 100644 src/org/usfirst/frc/team708/robot/subsystems/VisionLiftGear.java diff --git a/build/org/usfirst/frc/team708/robot/AutoConstants.class b/build/org/usfirst/frc/team708/robot/AutoConstants.class index 5d24f7da1018d15d969b6c61a33fae8a8584f2ae..a8e9d19bb24e2394b8511536f09520d5c2b0134d 100644 GIT binary patch delta 308 zcmdnZ|6M@z)W2Q(7#J8#7_zw-m>E*p8PeDp(l?4uWn!{p*t~`*i7}qvF~T!A-ZLQH z(ZwamH8_}&LC7a7u`E$PCowNwKe(hQGcVnmgCT>Ffe))W2Q(7#J8#7!tS`m>FW(8RFO(;x~#;Wnyw{*t~`*iE(lP%QWT?hS15J ztd3j^h73$VWef}&oAX#3nLHR77#V-IFMum3o=LeCOUdxx2HJ`PI_=?cd^80NXK_ zhK*SVA02%9+bH__#%t7BGw%?2j&_AjzF)YL&I=dl1HuRCBI@FKO0*~3O_xJa@L4z{+(Y+@1N-QH zk*}o>C-Ni01I!0Se?T7<9-{XQ<5)c52n)v(K9TTA;XeI4y)8V&U1!9xW~{Tq=C$X9 zP5*f@<^}qqJe9sAY^J)L*ng$w5Lel7y;gu3K;G*O`eq`(mGJF^?+82GKZ?8YHJRVx zUhL3C_F|#5+0`?3qPTs3O}Q@@N@cw@C5y`dV`z!S2qJpRtxkLXI0<_ i!u7SDZ`_c5!%reb@oUFhu8q-i9p2$RrSO5Pg_#w(w}k@$ delta 971 zcmZwFOHb5L6bJBsTWCQbal=cDamR|d0bQ7oVKQZAfT1`u2qLi&<*_2+4FOVlgUUmT z4+KQu0~o^2g&)8b8<*@@`WX!WJBgi>#?4KC=bU@)xy`-2^{2Z0*WVvM0o3F41`K?& zaBSh^tbA0rD>Dhl$=Yc*Z zb(~*WzqOh|9&fUP&e5xJA9+9UuZkPIyray=MBb+3xE<_I&`FUmqgz7xR*`RGzFpX% zABp-jo$*8<%Rr~_W4cSYn|>nPLq8P<^wQ6SUHUotf(yK$Uxr-Q9|{Zzs~ZoBhC_a~ z%*im=bMH1}PI0~}HszH-%ZbPc@PYk2?w diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index 14d345ea0e63238f88f930e84f56e513c2b94e12..74b4d0c20a6e8af23c9c2b5a12c11bd722902fa3 100644 GIT binary patch delta 2285 zcmZuyc~q2D6#v~BnD@=&3CQ38f-oA2q6VpmxFon9J)X$)obuQ?g*Fw1gQB68I<{wv zSzlS2W@XvpQc0<4xn-_t+Gd+&X||}XE|pvNe%}c5N1Vg&F7Lg2fA`(*-8oY-yEMAv z+?sU&x=}xk>Da9BzJ>>z{g{R=0$UZfY4}{vcF}ey?9|Y%=L3aZ8qHi|x59@Ssjjg{ zVXsEOH9k`KSR?2fpD28)k>wase5SBZBgb9(T;U6iJlFVA;VX?cuJN_PevP)S@r}Z_ z8tq-+5@f?~wn*IwzNNUJ7JrCXgeLCy*)- z5C{siL6osA&RYaUq%jhkIU{*2@+wNuxXQH?E%GT+8dqbpMV2DJ#xeqI6$**#)i#-<9QKrUZ*`B4TC1qQb zBeIpETt#^exgL)vkX&CqvAQ-gtor&%gTqyIgtB4wUVjIBVS>-P;Izji9Hvmiki<3~ zI%(IaJ>Df)YWKCutmm=F-~}wQXILRCiW!Dl^U4I>DQ!Sqb$xhJT~&3&;11kLD0af8 z`2D`Sa5tfwW6ts_`!c`JcOUL=awR1i%)|o{#$N9?-UsoJz1!c-cMt9*bdqyP!v+p8 zu<>{-Y)b!{>TzSjbp{V(7NPV)1*sP*Fn9#B2_>-wV;MY(#|R;I~^DmHiq3k{ydbA~RF)xb?v^;JbRRgoKt22L3p9zTgYV5kdqCA76Cqz3I>NzL%xRS_8Z9s4SSl6BJUFFV?UalLtX67$r;LR_#j^HSLW*J6}L>Pjns~-y=7u(M7SnA zR+uTe)KFh4CnQ(Y)KphR#)d=vYinxj#9PrYJ!P~vI*sQI_#FWJ6)^gx>5k-XJCeKS zNN%+wxx=v!m$#VRkTyB; zRaxejOW<#oahW|o(5YxS`;y^hEI|T4%oL2mYit?b0c7KKyup&NB6j9fU>+^EA4?yc z-Lz|Fb0sXnFfO_Xne7O@ijF3J5NGkp7YZ{N4yzJ0%!xh0p1 zLVK=k+6_5t6d5oYUprex56HcxUjQV;UkTN zu=BCPCmKm%=Tn7!8vd~JnZoB9X|@x>7Ybi$WQKp*uW&#kJM4U=@U=#6*!f1`TaCQ1 z^PR%?8r{OqLCrD`2^`iqf};XIhtc3qiI46hkr^0y&UeFkXU9$R1R)1^!BZb`f*FES6pCSJf@1h*eC25c$P9Ret zTOdIoNx(0Vix6WTE_rZS;fltM*eVsTdI*Y0<7V3@hliYsVl>8LtA|{Q+#0vZQYrFi zjF+WXk=6*vGFFk%m?+CQMe!PU$gID?n5*x(f`CS=&r;SLu^@5B9uG9|a4%{AAdJq8aTMCc;{Gjd`u*bta( zFar--y}YH)M=+CZKWniwhBIg3(Uz@;o!Vva7-m~Xy@l?F@GzmLP{dYORT|92GZ9K( zMQzQb@k04Ho@m+3Juusoc#6Ay7lE$S&0szn4RuE&p)1$P>QE7^t8W-r*HCXL zpL!U)fJFu`;w3{p(P*uXO?6*Gy$E^snceF4Z>@~aEG{4<51!HxtP4&GPN~ls8K@0RXyALHsMOE^ zDkH?VRLrRe)&?g_^xCE?zA?_wbbesK7auZwMz4(9wmf3n^6YHOqqZ#%*|t1e+w$CO z%j2>w&&RerW83neY|A6CEuXn<`D~@ISI(CMkUMExzLwUZq--Dm%%3WOFE8VAD>J!g z?-d-2hm)}gG5jU^FdA>NXE+1Mz)HNumar!xm8a!BowKnUFNPd%D$8{0II_Mz^>pcAH+YyFE{$Ybfn;$O5Ev)fYW!=`cDfrC*L)T(CV z|8{VUJ2=kePeko$>tIuB2LqT{ig}t*nZE(O+iHeqeTo}74TUpNJf28xhkWh4TSRZ* zJ3&@s>KLBph19YxZ8IMc)vOD25jSvC??yzAN-HR9J$CXSfxO5e6IHBZYcYOo!o?_w zn-kF+tsQBzty|KwLR0zVW12B7@orwYc+u8JG2diRGE=88wI6+`J<2H+!zmrNQwHk! z*_}nXm`|Osgz~V8x}cf5MM>D$DuExpNWU}LiiDE2@HHcJ&svyfFlO19Xk&_vsWx`D zv8#<88Qb*b^OQin;HJJXRDeW&z*71B%Az84rV`{+f7Uzz#Z(rhsialY7FLnu;7h-d P7n(&a;J@b2m#6&)?EApO diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class index ed2db3442d0442c2d6049f640ab6ceb1aad0fb6d..56eb970e90f2e64914272b88b62d4f916aa2af8f 100644 GIT binary patch delta 609 zcmaKo%P#{_6vlsd+RiZA#G|OU)~o8R-Vz#w2n&&rh>a47(r6-sGCLi9fZ-E|$P09!wH0zO>13^F^eL1n> z)I=j>;-kf&)g+go9`V^D7_^yqEMWQ@XwRjCPJQ$>Y==n!U3z5s!0sD#8-x{RY&*6a zi^h-Mo*jNFQjcmO&rgq=UiuW1sVCK)TG7rt2K{aZ7tAy9!S< z9*;%0*Ve}q@x+coO)Ff%iHYV#8TW}FD_l4!rvgQ#R4sCpbuQ%6sFGW^fl{jF+x^+3 zhFYnVJo8PwC&%vXhti~$o%6{{3J<*$ZAs2=+c->9d__*^25repi5Hh6jUmX-o<{j| zh$yEBDUoe{*%2nd2=&a-#3n)Zr25gZ|E0qzQ+2Z4GSDj7GLY09=aRB5jAc=^47EOE a;ZN^VSwxi~HvCHr*eYg!VJaGJVND-$&qrhc literal 1476 zcmb7E+fEZf82+Y|Ei52`G^ltW7|~LZMF9apD72Ok8zHu70$z}zJHTMOi@UR!c*Sez zGkD{TO*FxK-@t3%!}!m(z>-L;o9y&Iec%44>5t!EPXJ6IYhn=72|O_}FOJCq7)w7t z=;xz}7-mdd$7}*~COR=~WUhrFNZ_f79&K1VHOw1Jzb3=S$mEYhtBF1=7@5}%ErDkV zEHd=lo;(so<#D;UuZo94*bFSk(35o?UvWp3c{LCWeHQ{tvL=j7$O|xZs=#wXu<^Z_ zFGH6$=ER;Sgl}ZZjqfs;(veE?s(eqZZK=^RLpH;r+%FMWpPg6r*Bfxjy~Us=0e#ZrRTW+rAW&)spARdH)I?%2M?1LZny%?*5O z-4UyTds*Qq;mtD`3pyEUgDL$yiT=JWpOV_5Q#d4dNge71he~_Qq8oS>k(Xg|7ud!R z_z~~MI8qE7EoK(BRJY!-a?vrA+~-b(TH@uT9zjKD-lcA2u*{JEfAUwZ;z}$#cKDT& zTadeoVWmYP>HvQuw)d!U)>=c>P264&h-9fnl1Ql~T8om~Tnt^=O6xS2&5|K4?7(_= zD6PgmkW`gB2d7(LWgFYD>bb!o%{`UNZRySH;kI2AZv$EgT1jF_6%{#B8E|7ct9`H@8^&%O{WnW zhC)|&!-+9G3@oyDm6;$a&@5 z*-Os&8M2SU`;$o4F>oGom26G&^IY%Ie-x_q5l}FQpi~G+BMJ=(+>mW|+74`YaCR3Hue{?K z^clQS6Psw_1Na7B`yR$KEk89uE!*tbGw1aC<~wuFeE;?38-N)+FwleH816)uUc8|Q z5MBK7RzL3ygpe}Ojgc7AZ5YK^bn)kO?J>}X@faoyT*7d4ska7145opE4x~;3lQG<7 zFoY|7VL9S8X9%Z8wiqJI(xydcR=E6GP|0(Zv+@o_5?NWWoGnWUy*>^`{Ic*E7PC^7 z%)l!O<@sh&6-=L7mD$NTQ^~ya&4R2{EZ6o-EAXW&D>CrRb(gPlOJ#Y{pJ#|Z)KVU4 zN!|*%UYXl9Njqe@OMbg>eXdk+;OmUBDFapDD?&@_YT%mKvkt8|ZlaIjd6TMaB@Vf- zEa93N?QUwnRQ7Z7sav4qP#NL*mRsPOcPfr)%uvl2C(i}S&B+WeDbBqZ?!|E*vzl{` zVddg<8`8IY{@Ar^qH{7Uiax`WCW+`ct$n^*q8^xQbzk>mcRe7Ig(gYP?F|^SBBU|XF8`V?0A1#QW7kyy3LhDg_nSMWz3E?W)Xf2SyHS**2 zB(CFz{*#_OvKsh_E~5rk(p9kZSA@2c2q)1Jt|ImstrTh7{s_bG8ZRH|?@@KQ3U5zPf-=_`S9br4KbAL#N1r)6)NXX6XhXI|UB@A84KfWVl_^HS`+;r8p)4 literal 1952 zcmb_dO>-MX5Pc)dyU}KijiT_CKoU$6*$_6^`7k(+l~|TB2s^Qaf`F>jN*c)%q+K&R z8!DWr;xBN4J2`O)hp2$6#8>zS{27X#U0GVHT#i$P4z20wd2f1N_sstF&+ktFT*8+b zETdrI25xGzqD|349;+rw77VOeIFAoatQ)(xzat1>EdTwZ{{3VjgO5ynZ0wc>k*CAR zq>hv=9LK7$`$~i(;GZ$j#3vR`P-OYHy@?GAr)Z*(A1p2GQ5I@3w~0*?w-~Z5Dem)% zlCJ1%tI7`NEe2L(m{{?>K)If(x!sU6y!fAmRng-{AtnbyMupNFfRE~Nk#{8L0fQwx zp@iEN-x9}Iex}BdUh!MxOqPYmH^N?n%c|Sx(oDAOH{EW{l|uW2$+X%Q#Is!XWycAF zwvd5x+Op{=?)I);TyUh{@Rif_dp*}{1&$jk-}8HZ7&x0AU*oPU^R`-KFs|uTuIrS7 z5)FfGeN;;6bF$o{@loL^E@il*bi}Iop=|P!(5X!&xZb_z-giyhwy}kZiK>lHF=wNu z%^htPFvl>%TcPvKj&S0PY19>sdwY30cU+-X;+!?$GaGeKBDW5C%BUE+Xr5C{7O?8C zdQFm77KJWelWX!XNWSOitx_4Q{;-gx=V#dRm8GEU#qV~g zg3fw8*44bb8U7z6?KZ>GAv4*(r5I)pF7cqeYtj#Q7^V;2Y)f}BHQlJN440qL^Fi1M z9t4W_g18ByexOdDKX|KsVGOq90at_eq5Ge7sh=~EzxF`-bc6FneUT^JR;$9l4!Ngq zIO&luA4-u$4Ia-Ii3DfpIn<9-8n0mnv-Fm{O*6E+o|FK`e9wQamvB;($MH^fqn>n`dlYN+vafHU1dJa|&b{{Xq6O%MCl|#0VTs(2S-p5O$#V_aZ>TvN1 zik*yO2H{>G(w?Hg=@IBm5~O#Sji78Bz>~GPT&S8n< z-=G52N&F7UDM|kCN%$Xd0Y8)ABQ+il)JWrfd=RTa>tc~pW4{o4ioSpJIg9j}Paso6 i%=QIU0d*eJyqxR3y{A@JI>flK=U>54~rUH=z<;pK<` diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearRight.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearRight.class deleted file mode 100644 index fc24defc2ac4668a26ef765e7140040fc4cb1178..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1925 zcmb_c-EtH~6#hEd%$Q*@Bm@-@iU{f^L?#6J(Ll1W%O=q^f$XvvZm8bf-lTDNI`;Hn z;gwasf?Vh`c%v7jlq%#_-+*WE9V}1JY<9;g3~QBhai-5X{e6A@y8rm=*Jl7e#Jy2m z!=i^Jhf<9;I#rO96!NVw4T&#K+L&16e)}H(K z#O>k}4@bze^vj;%Qx8YUkk2JsU6h@C>6=*bZ~`k%zLsb%K6A0gFwxZVp{N+m<<_>T z>yb2d2i`kzg4A$HuDc2qz!&0t}-j(m@P%etVI`!f?PEi(*R)5i)o( zkVf*h{F=yybJI13OhGkC87s>`tVNx=&{bYK=o06O_AVdf&1OY>8HvDN za;itJJWxdzEO;bWBoa)~LwJVXlnjpHUA#x{%KM}ZAxnBLrB9Q7Hl@#!elDd?VT3q* z%n`$RVpyd=qyOQb!Jc3!mcy~k{1hKBPjZ4FAR-6H>A<&1KZy%u$tF;G$uE+|?2RUA zY5#;9`yS8iVr1qioXxRaxKHpJtw%Q};Y}jDi`Nsw*yb({^?l=$INb9cA>SK`&mr8K zJ(i>7IMxRpPlHa-&Xe&8r}{gldPnvXo2L|jQXqy)?X*bN4=({; VNE`0=ZO3oijOEW~kL{Tu3a;DG=D diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class new file mode 100644 index 0000000000000000000000000000000000000000..82d15ad13901f93c7c05efade2bbd220ddb5db3e GIT binary patch literal 2022 zcmbVNOLH4V5dOxNSMgfGE+bM-oZvi2kQJPD;(+b=rC5rLV-XumB*+)nN*Y;{taili zYuRmQ3|TKaDoeGI8nugJNFblT1&DZ1cj;E+1~!<>+b39nf>YMx8DP} zj-rVxScziQNbRRc0~l++e6GhACI+x(Vg{)wZVqD|X=Cm8xz;c-jEs?5Y!Qg@TPQ?v z%SerdvWanIjZ~(MY?zqPj@~wL3M<;|rjd%b(c31bG`eNt99E3fW*f+vxTqBqZN)n# zrnMr`R@{kVo52*WP{MY^C!Aq0F@2XIl9mBUx9ucnMo)!Vw@k_KGQwB3TjtvCP7Lp2mtpP2jTZvXEyxT% z@HqFQ$j4B?d)g*teVSJS>%)ey!VHq+h|>Lb-mH7JQ0Xv-nsATdMxXxunv|3`E8h@q zK9m_2`XpC5r|q}6*_If?`+D>9FUAkK+tup-2wTZUC+uvWZjTgnS1Mcan{K65*@Dc8 zs$y90(-5_s{ebTuaNDysLwSSb{q2B^Eca>TnJv$de163btG(gLph3qYk;&}o(|O#k zRPy|TfV=wGl9fcRFFQ+`eBt>K@9LwfT{w==?Vgs7^cdJC!w~szT@H!XYlNcMu{~PI z9lCjD=rYt}2oYGA1;bVPx=at#&(|~!;2O>6l$C8AmNkNT zEQDnxF7*=m9vJ*e&qo?!vCAZV*boscwj1K#J8AU@k#&eS{+pP729aT@71#1#&5Q4R literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class index 23c412511423707ff2252361197e91ce2243bee6..36c15e9d09f5edeecd49070eaeb4433bbfa3b3a1 100644 GIT binary patch literal 1843 zcmbVM-)|E~5dPM2Y;tjc2A4JsC_wn(xP_xY>p(){B*tlqAt5$Y;e~GOb-ZxCb@%S5 z$}AffT~d0(4!pY5 zo^RK6)%FE%=1xx9TCFSJuBv8}yEV_|fv;TERDow#ggeh2$D3kEOq)7pOg&zaM6V%g zVLjJr6)wqx()ESbLCZH5tE>WD6-8<48tMc(ag*QXDV#)>VWr1v~{9Z#TV$CkMq+5<;hRGhmbs=c`A+{KbDXf~! z=e`UdVVCRmuPEDBt*x?)J*M5(&{gGgU(C6+u(K6al69Y9zQ;gx;P@?ZV?%IlFGcbq z$v2h*3esx_K62a{vY+qwX0I2u3R-kEGKIo*b1#Q@tyUI)1;RBKmZD@zJ;j+a;PKCI zdevM~lfrSNIqVC{QJR6#gy^UI;aJFopFyf(g==yY4i3^diUvwQ;+Q}d3_sFUiPl7@7{PIpQ;`uTU>hfMVQD20%V9@od!22AWuGIqmPTJ1{e5jDpJE4T2G;(C zbuW#s$1p=oF5wWa(v1ES zhvDJ~{=re)C3f!-3Z{lLKo zhd;qree_u$^r0DbMtJtgS6}V_;dt(DzBAu~C9&&TiFv*&m2-M{|({Z9bb@o*AZ ze5B!HbVw?yRsJO4;luZ4phBL^^L|ZDhHJn9WF|uKlV!YZ5f1qKOJWqRRpLNqJ z#)Bt8jEc`xe9kaab;KiH@ElXr8(yK!d6j{s8Dgup<$9*&mCUBk8Kw^e7DbCIMz|Xo zCOzM=y5L~FDYGd?Dcp?Vm<-7Anx{PL+caSbPnb>d4W%DX%#|1-t9F%?<2hmRb-z{S zPSGqk$ug6(D`vA~IzsAQW5jC+mm!(6ox1M3HQ~6PUUMqC$IaH_)g|4r%eJRi>{iRP zs;+MOo^9DJ+jsRMw^qz%(_LmzlCqB544QB=v~(M?1ys*ANp8`4N?0Cu9KY>Jk5;gK zr@}Kr))ng|y0U9NGF5yL#SXqyVMb9#GKz{6RVh}GWY`$7(xBIp6H8AI^Ha3%SQToK zlNOSj3YU3F)KF)b<5ge(x-Imu5wvQG@^0_-_4}sqR>M|ERD&V);?)$1#-g3(b%%3T zrV$M9jhM!5*f#Z1FSLbK2-gftBZ6x*m|bipSVplcUwZMy@F6x|t1+yMh$QmOhkU2b zO-Ij$>or>MAtV`CKWBYA}H;*oNQ;s?f=U{ReZan8;xPIAv?0UTA zhEo;{9G!@TqqjN~#t?P5%f0S=(#aTBuhA6|=xdK1n~q!}o!*w`J!V#`1^$)KEqM`8 zM-sV_da@i`7KyZcOi(iUoT6MCrbDNiH*uaW$jfv+P2e=HK&LC}DrsYwB>mkX{Tk`l zhji(`F{IxleQ8L)MHwSlMv^kVPZ_iHWb}ObSFk;d1#&!)kzaxhZJn3(?q%2pg|9FyZ6Ozj~`mKa%H>fl7EO_Meg zN4$fR1NSR^_o=N8PWK$g`{pxber*r0che2x&ywSfFkbF_?!eB{a^ZkwmcrjU7#`^t zDoeWLfyN=&X3i`&ElCmvm5@LMe4JM#XB zoA?=vcuFk&ja&GaxEZu|zuVdfjN{-2WAfeGOPu4efU4Ow++|; diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.class index 83cca8ea4c2921177dbb5f75e8e0bfe91a89728e..9c726cef5ff6a120f64e995b9d14300f95a85b9c 100644 GIT binary patch delta 60 zcmbOw&?c~^1=0GWT8fykVz-t+YiVm+0*C_9LQ%2SS&}Vmn`D{YO=yuYK{wj?ft&oblB^O8w5=g`lHY$IRsHx%Zy)o$vg(_t)Qk`WZkOw+)o@=*2`H zgP6=wJ1^pbh<8L>l+&pkF5z+>SMaWgt0Jx$xGvvm5f!nT5v$oe=J1~E&CA~V20l@sZv=RT~$a=`*j-jEqE<=soh+6gB54J!JYmEzveVnoxqcI zvYC!Hy-?xyf*)+y?eLBlgpqwGsM(S0G|!*CUqa<(5?sGeK!gmuVq(6 zT^4;~Gg|RyS~Ug^_EW3|Lbw{txlS;p&|N=B-4Lb~q1w9~IkkI>&Xy*_aw_B{9nWca zUy^aEBvyv|z^%2VPI)h!<$1U%HQ^!iPq{7XJzgtvgP^??$w_|MZwEDZ)|0IN1I;sc zo%@bL@#s?Q_bN1T3MCO^CQjf56VHoyMZ~Lk&BOv04J?_c;zI);nYbZ_%OX}Vrf}=% zF#oUOCT?QL#40{E@d<1bpJL6xXC`jR;&UN!R!EGv^|rme<=JuLsWrUyyZi07r{lJ> zq@f#0KmB&Z2`lOD4IiDr4H+DIb|yw);$OxrY_Eq8!^mxhaohBuaeBs&4)wQg3TEJv zb~2Z|I(j+xFz`839LM-p>@pw*}*ZZxQmQ6x{K^%^jXDiy`s!ogPC0z)`{#M zx`j;&!p340Fisi;GCEB;i~;g`nJk7-qO|Z9#xPDPY|CUJa-VJafNfb67N9Coj2#p; zwLUH~Uw?-IYY)f1h4}=>_t3usBmEfZ)b|~mZyx=V4I$%B6m+MragwgHEHj7bR1-Q< z#U29<#QYdX&+JdO4<1EP*wkBEJ-IUfR z{|jZt@wG2~(Gi&O!9T$9Z&JT=vjm25a2zv}bI-l^-0ytn-0$x1fByO#fC+qIVA4b{ z-V<}(!~mu;^xn_l0~BTLhD@i$+!S+5)@Dq6h}&Xj#gq)(k#SDUyae18Z$Z3!2JUOf z#%{Ro#U($A-A2XJpp`UqhC%Gcob=2F4cUlS+*;G?Bro;Tkd8Jzud2bQyDyggIzuz- z!CVk-xgl4zRbt%m8-9F~q4`p&u%aO~8&nzBTlO2?!)ATW3zyxs8dv(uLB*}DxS=oe zWHA+Q_>l&;9E9smGkWTWQS3YoD^BdW_3L9(P8h5Ou~P}^b+=KCoNDMl_u|m?8%{~w zCGpoc;^p8@qr$}Deuayn@Lde=y3xGnhD8ls)pqfnk(+0{G9^j#cMLe?b22NWzBjy~=TX>8o z29_)=OY}!#RxqOB%i|ON@2jxzF+Q>IDON3fhA|7DOX{nV`jS^|I$N8*)6xOGn!omJ z|Ms2PmI^dnJf7kc(F}WkAQlai|Dv#{xfZ>QVy_;xgrzhlstLWXn||m~q*wCgR5k%R_|>Ag4+IG>=J&c6%;3X-C3J+I7$TMLxH_$Woz z!l9pU{>Z~nYAq=N3%lx~q8G)%Cf?@fVt_9{jSkTYy?#*yviLYQJsceCx#;}vB9!uFCWwQru>{o3YBjQz97^eUx6f3KBG+~t@>wVZFV+B^A z>|c<{>bvMW0Bqg(6v2vzfO^_M4#s#~RP!xU3(z!C%x#=g)J|~H_1zC_?JoMaVWeIm zrN2Jd`u@iwTLftJKFblfMZwGv{`R5d(@ApaSvQO``izECVp8%IO4v+t6gGy+b@FII n3#|J7AxxuP(6u(icmk0o_ftm!9x>bFLjdUnKx5P8txfz5L$H^a literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToIRDistance.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveToIRDistance.class index dc6005128901b0843c55dd6335d8b554a4173397..c78acb5852c3618350a70756aba5b76907e93278 100644 GIT binary patch delta 584 zcmZ{gOHKk&5Jk^x8av%SKt=J>en1ozL`9&{L=&R}2M%0{CNgIWCTzkfnqcC<1vqmP zF2h*W5FkbeeXG*1>fD?93SNWDkMFm4puuT?Wy@!qQouAjzR0f1o=RDzqOu=QRc zJ&rtTz3W>OWeGiwEp-}}CXppY+A^aut1_pOA??w!oDf>_gfE}w#$34%?YnylLbQ@3 ziKDyHIXWL#!NgTaaTS=-Ek=S@$GL)L`Pm z2XN<0_!!2S(v*fp&rCY!|ITDS%wO~5`|tA$Kmj!q7FG?cVcmp8(jZB(q**d7S(XhG zo7iI6W?xRnj*fiy=u{j;VCyJI6j72WV^<=Cu*5ja1j{7L7{WUCB=%8}sKS<5hAmKk z`KiBIiY6|M>*j5%aewo4B@j$D8kebafxyFK>yDg~wgfaN%%)CZo>M8tsg&eY3Zoi? zKm=2y)15OlFQT1iHPN1-Nr5Op9J83C${iDh(=kJJI;Qk}%-0dXJZz@XG(#WzMVCZD zl$7H@H{<}>AG!enEO-x(E3VOcg_3^9NJ#C$7*I^20a?Dbk7RkIMJ(|Oon|1`9;D`c z-mvS95r>Xt9nuB)&issi6{+%~I_39Z4kwpry|Ry{d&zMRk?$kQ(9%7O4il;rSMw1x LmmrX!SOqKp3)L@{ diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.class index f448ffb3fd7ca9b1fbfdbf53d33c0863154b8dba..4659c7b5cb3e76f40c95c0649f6228a376a1e1f3 100644 GIT binary patch delta 1103 zcmYjQTTc@~7(KgfSz3mcixerhDpg7gRsp$)$gLtGH!X-FUbeJAu@urS8WWSoe<0}- zkNS)cUZ}uIl3L_ zL9ZQG(dR$|`eioYz#y(k7?N;Z!mxxJ5=JD9N*J^A#JJ2RWEOVdCMMfpQZ?Y}$E2xVs&M$PyBCl?E zW5qHJ^8yRFtKptN1d9SoxG%7b2O1s6#U?p`KNh`T>hLnvs&*9?-WW8i2FNcp&W*1nh z@IW&zGPCe_JN(5yqMR$N@=?r^N4Xj7W^kCHg29=GC^h0C8_1!d15N}`haj0dsnwM& zbRkUAViQ)D9Sg<^7Xg?aE6w0Mg3HXRj!?}@2z)^`KNnl7DapDESJq929#rwK@SvZ} zgQpY&$eO;b>?&CFxXJ4~_LxU)wet2IY}P}%%A@W8&O+iokZYDh`mz)*+Y}pyzz98# z^VKFOG=_jc)o it%nw*30okKvn3J-MSw*rFPQ{xv#Q9TAjEAIm;VDPPMtLX delta 935 zcmYjOO-~b16g_XI!`R_K2%x@g92Jm5#>wN0xF>Rtsq}U6Qd?HF5EP(+-kaF z>CPB7DvXH>e}IX<#=Y^}nXzqN=G^<{y?f3*_x(xzPL_ZD{qYmP5H=kgM1LFu7bFfG3?3HfCkS8Nm& z;ve39PP$vAm#-#E)6cd_t1s3!D@FBor5!mNGa9p))3}Oj8rLyzV?kpP9U3=qQ)5Zs zmcVV?(YPxI_mI=Lj|UoukkNQ3SsOAo9%(FNMdLA675XakR%hjjkxZ|lM`K-JLn=Mw z6pF#=Cu2!q}7EMQnjZY(tE#Hj-mMy0|;cC1(aPgCjV~$gGTRZWS+Qk&DFED5ZFqCAI0JAq;jH z_JtwN;QDZCvKh9_8rbAlU|ar~J8aS95dV*M1RA6CI7X3i4sxnaEE|dS@^%b{+f3x+N3s)Y}eoS0Jspusk0vH4-OyZ?7&!3{0^Vwa diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.class new file mode 100644 index 0000000000000000000000000000000000000000..1521406babea8aaef44401f96f9ba002e870ae50 GIT binary patch literal 1971 zcma)7T~}L06x~Atfp7`sqpcv8Dy^oW<+f4^6&)CUGkfoI=FG{TfB*3Uz-{a%F^-u&n7En5 z7;eez?IdP#Tg;r8J7VU=EQq-)=AAxnUXOX5D>75{PqSsC9GlM|Dd zwfBW(C4toh))e}x&Y|9{Yh6)Ld4(R=@hx9-vSin6|Gq*jeQjGIo^vYn4i@d2ei&3s z+TF5B2lNaVow9YXZMn95H=S{R-}V&NijKQy2HvjidcL{qmQ7z<)%lwXrt6d(-z+=T zs#U9aX2rD+weMPX&D;q2v$aZId|S?{w%kR9q^Pm21N%pECiM5Z9Ei%K?X7Ud+ZX** zx}z|#>09L|>sGy~C8ld!>$hvZcHN-v%g*Gc6S!r)VoL;L|3x|T*gCWfT*71m1p^=8 zfq^2{4Lrn$2|P0J5jG5LirEtLF}4kSf=>;6hDifE_}sv2m@x2#%wEMr0$&>V3SS%e z2A0Bf=gedS-^n>O&$nv6XP|_%fwGv27%dbTOe(B&hB<436|U+^V18G(&FHQ;JFrWS zk8jA#MK`4|)tPWZ?v?p%U#P;||5Sk&l)N82UspXdyz{UQc;&sW{x+~(%|g1KE_T+p zd5p0r#hN;_J=>`j?Ok8WN8#?-C2XHMN*VK=BR--2^ihSOdJys#yquQmlgf*ycSPa2 z=F*zwZCUP~X3maxXZ^e__g-dcrkdMwP9OksydcL%kNtt`5;}sH)x4|@?lI^`u2a^Y zm$!UY+kkjhwI5Y__)_wG6HV_rTY$psnd5BV68p!#b>M^!wv2Q>A4ZpAK$7^DY`)9_ zgBHGmcPhZh)y_|-z2Ke5OWgCFI$mef8fSOw;y+(gIOF@`*aIccl=d>e3S3tlM>4-d zWqw6h12GP94$tWBA`mc)IPFE+G4vC5m_TpPV?;+Wg)97u<7x}Ggjl$Cg;22ux}%{d z8WPda%OTZ3Uz=x~;y_smvZlyzp2!o#o+5IaPrf6*H(PxBVOYQnF&jum5%fQY5zPjk zBgNQ8F_`%csV6iBRSmV7FQA*u8KO+%9Ii7)6E|?{1nW$T^(~|s+hy+mshPZmkac)S z{rn5M<457w=u@GjnDbBn?Ylr<>?n3bj98fAON<$qV@Bs0`4Z9Zk$agxcUjy){)CQ& zrjBde-;G#mWQ2)lZ)-|gZc37H8@NaX479f$Xo`ejd+xyl46sAD)0%1pINd^8?ZSPx# literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.class index 97253f5c14225379c166242d898e466c4e8bb35f..a9c47be4ca8dac2711de804a59fd2200c31a66fe 100644 GIT binary patch delta 60 zcmZ3^znOnS46`s_S!Qu&ex6TeT8VpVVi6;QrOzZLxyc8ZML9rxYeoihD4zwy-+Yz% G5;FirpAzf< delta 62 zcmdnYznp(V3^PAhS!Qu&ex6TeS_vbAsm~-Pxyc(?xVgjNqSll9S#-D%{LK%UFEIlE Dfq4~b diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/ToggleBrakeMode.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/ToggleBrakeMode.class index a0dc8e7dbfc212f59e64f8eb9615dcd6a3e9d015..4c1f1956d89c8653c4eb1249b902229010992d12 100644 GIT binary patch delta 61 zcmdnTzK?ywOs2_~nB=8}8Q2&^7`PZ17Mfh0QvH;~1^z{0>cc>|sheKHgC F9snXV2Ymnl diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/AquireGear.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/AquireGear.class new file mode 100644 index 0000000000000000000000000000000000000000..6802d9fdd089cbabd04096f59438897e844620b0 GIT binary patch literal 1167 zcmbVLT~8B16g^YQHf#%MZ8TN{KS0}pT}(_QL8XKhLehvyNfXe7OuIuF-0s%dT}*uP zZ|HCE#TQ95(RcrWf5v!cTj-i-By2Kw@3}kY-gEEF{`mFf8-NG6Z(;&>GbkCgB?{1E zto(ehpASYY#(;?w$|lB9$za|@R_|ZP;2uNXQSwMMLd9k0AZ+x6a2S})Fuvw{LCC$Z z$=ygWT>N9>w(L@DER2*FbBynUk_=fLv_(e=5g4`RyI2B)DLolV?#j1B94VEX4CyuB zAuw5&o_H2@TS9H~mP?U*-EVWZ$(7W25KM;$GGJJ#`>JC_!M;>MXzi=E6$;*cxVU5~ zzvYKk+wXR{=LDAYLjFqZbp%(|>gz}o+>*NLpx@VHKOICQ~XNfD6 zih7~`VmACpwZ*#B(k6$gs)ziD=Wqi>hL>j)6%SDl+q3NC;J5v!UYn+&Y^jId7F$Y> zcuQ%`x<)kz3yTb^XDpQLezQLbooa8>V|aXy9K*I5D#D4ZH$7?f&wxBvwhm7wZ>{xD zU_<#)k0DdC?Oj_Rca}TObFR4S3YU_U>Ss!`TyEkf-P{SfM`;u>i3_0HNGOF-!ubTw z5WbYa1;UpT_zE%7xJprmYm{N07SrofoNkJ&5eJI6PJXWc5!0B_oAgPO)x;O{M`_|* zV<^rxO3!TRA~wr^MO+6RUqAGR(!g?)(Nx2LD$8 literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class b/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class index 2769cdef00f57ed282a06bda1291995493d72d84..8ba326d1606536e82f850cd8b2134628d4377490 100644 GIT binary patch delta 743 zcmZ9JOHUI~6vuye+Rl{e1u1P&6e9rOfhMqH(Ism_0tpKf zS8UvX$w-Xx1Gw=c_#xb|FvfE`Wf+)D&g-7@KmT*im3x-j{Q2+O4`7N_mkiI^c+QZ^ zFhz%w?XAd@d?s3U8DZ4+&g;#P@y3i8x4lo-Vd#YkO}KRN(qYn}a}= zM`Gz9i5?z{XQBq6VGvHlH3(~$SU#~ViPMi1E^*Sf=aUp8OPf#1L{e8i`kcOIussNN z=7X$s@~=D^3b7`I0g_@rrCqppGa%NW>~mPoQ>03XRmK|;Zfh-Wy;2m%8tD<)7misK zP(!jqI?M0#;842XpLbH4RU()j;kzx7&6?h(ZW)doG{!#f0Gzx!01+yc|JDv=Ef6&twk%2PxrC>;M1& delta 653 zcmZ9JJx?1!5Qd*UAG>fYA;#t-kl0{@9Wb9EPWVXRr1UAN;Sbo6>=wDDMHEOBq@bXo z!AO^gf*+7SkROshV)k-5PTWZ|J2N})yzlJA@Xz4j*WddG;5~Z*c`8FxnGaZ?ro*q2 zm(Qi@hPMHWEa~v-B+k01p~LTC8Z8IBWW}&*SUWxZGc!iPux{Dlonh0;h^FNO9~Jep zl2@vJX}3DvqgJ{y9Vd diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class index 7c17144e737dabbcd8fdea689e5e78c83352f762..172f65d71db160255d1cd031ea4117f3fff0adfd 100644 GIT binary patch delta 530 zcmZ{gOG?9F5XXOCO#8KIjD4t8`?6|{t<{YlKoGZr^aO%kxQT^k-x~7Z$8wl(bs|J%#s zXm(t7*;DwBSE^Y%zYE6Ubr6m<9hZH4mjhE)ab7P~QB4%?co+^wx4~dE9Ny3t$()!% z7KJEEEy#2ts01^;H`KE<7OqrB5GvSIS(eV7E#a{ulT9%exR6aFPBWzQmP(@YBQ z5t&5KV@Y;uVqB+8Bc)l1HA}JPq3jyXR3MWYxgrUpVq#f>&aUYTnmub`KN*S6otPDNv4^m(fU`lwN|YbHLi3ah~R6v${PsM*KnhY3N8e+{VRM#n F>ldP~9&P{t diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class index 2043ae44f25ecf7c8daa116c2da6ad5143d68398..78c2dc655f7286a88b7c20059f6523ee16a8ff43 100644 GIT binary patch delta 496 zcmZ{gOHRT-9L9fB9#d)sS`<_s3R+QoBt{btpi6h0z{D=x6b#+FcSk&lny_%;0lbFs z7RLA=2yHiRzM0H?uYBM7$v*!4eg6P1ICQYtD6z?wrs>e4ZJ^_z+1Bi6y3_twxrC$X zx$Ls1=ubzT=G7>g#J5pA(F890^j!`Ntl_-fsEP^{?j($d zoM2P(T6nZGj(+0kEgdg860)&Wse|c=bWXddMCnUU)BP-0n|EJugACV7xH5;~ir2p( lgN!f@SxGM;9!*L=}@jg14WQ1H~`l`v~UB&tV3)o z5-#4`_0D`d`|cZ`cKrVH`UYHa;;?iQcG$J-IlA;5G5eOjW$=)HWDOF_Fy(+l!+82_ z`qNv}%#Kn<9H(rM7;cK+cjjv%SuCReVhl2?I_)mije2zUf_c&+psDKA5hSETs#Q7{ z(IV3>WVHlbOX&gbnV@Y~W`xU>F3E&m4dY78T8TLq!eeR~d{7wHjHWcUS=Xt5K(6j} zLHOuvk$&zRRnCbH7ST1CKkL7Do>opt7sk!fSPgAPwEWy$WD^6^HU?%92A1jb7$i0^ zunDp`Y-8X6GDH|Sw=r-pXAl9id4OynLqKlwXJ%D-V+IWdF`#Z9h#3sx3=%+|6cDp8 NFewRaHfLdE1OQrv6=MJZ delta 127 zcmdnawS#Mdp}^t}1`yz4&}7hNbC~b2(XoQrs+NI;fe|Qbx`}~l8w0Zl1IzSz3=*3d z*aX=ewlQ!386pgv+Zec)Gl+uOJU})`mYsR>CuUW769x?iF`#xHh#?H(3=%+|6cDp8 NFewRcHe+FA1OO*46t4gP diff --git a/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.class b/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.class index 80fcdab75a66de58c937f103ed508f0e61dc651a..11be0a5388d5ebb3cd6635f686ef232e370cb648 100644 GIT binary patch delta 2897 zcmaJ@d3;pW75?tLnfGQUFB{1u?@fk;1W0366JqL&5+?|R6aqF#VQ8gBh=4I9&?H#2 z9aEF0i(=tX#e!f!O(9r;EE5b^?P6P6Yg=j;(L(LM+RavN0KfYtA^iOH*ZJe#@0@$j za?kzlnRjMRUupF8#b=%cP$@Jo=3_v^5icAV@Zd%~rQs`HxZ=XoQgc)d&wC~R+}^uy zRl_UJ>~JQ(-lK*aR?U5_CS|P}ZavqW*VNOghL?mxZ`^sPjhgdx4R~pKOb*A@aJ8+0 z8h$V=QIse$p{gnEzE?suTqmcv-JpgcFY+*~VZ@7Bh`mf)^$DmKPQHw$yw_4hv69<$!eYT@Sv87d`ksUXr>W zNZk)5vWFi@bVdgFv4)49BbabP~%Jk+aui+Qg zCU2Hek8>K%>-Z&J*YK*2Uty`-`D?4s8_@9^{8q>B@OuHj)#dT~b^HN;WF|WPgl#(h zEQi0~uL1$Nd~?O^I^MwFbkyVTI{txw>i8Glly3g5;XiVJqlUM1ye;kC!GERiaUBT>1^~yQdeLB6jGO^A$1(GD%5?z#)~PlKv&2f zVpf#nGVb^YEd}TN!Wcy17#xuplwmjtU4-f|v?=I5X8XK}<1{!q2BMsDkc=7dBNrc} zN{_ok1C~<~xEU+rp&SYfWK%a>RPQ>eMU-@S8Y0egBs46YkP~e=xgq47P^8+5w1$wY zu(-r@ny$hjIAie1DWob@TC~tqeHukAh737{-08>+dXj<(Nx{T)n8DopoFCEi^8A(ASDdRl&38K?bikT=wC9cLi%wg>-u^882C9cIS2;w$`(1h!-0oS7ibIH?cbl?WEG>p%p z2KUqILH37TyvHHlpe*5Oq;njeD4|3j;>`*M9Hie`&eL!Zs}O+_W$>NMD8hTFL>E3x zBy-sfVKTaHIi()f<$y^>{uU9!&6q&A+f>F#gU1OLPDOSo$lycLll*cgJRyfN` zoK!fa!gP%yf9g>skzruL+$>KyTJ6x)aj%!jP=PHr85jv4!~6(KAz`~@gN-_DGDuw~ zH@djawm4C+vy?UNDw=rcA!o@6yw6(Z3q%WK8cw_Tc}xJm*&IyL)gi4Z7%BhhrS3hEI*dG1=Pgqgyun_|cRm+RkLd=^VpVY+QvQ!_4H_1e7Y% zXBM46k-!15y2xjqK(PbQp(Nxt{i7%iWtmw+h?eyl>h3+FQVPWGhxbA47qg{!b+6&& zk~x9(_>xyzmj?qzpkVi2?#0_G%Gt#x1!s9f zDA&y9UNd(D)hoMmME|8&IFr)ZKefEz=`TwvT|a_+jmHSzVda zqhSYDcAKLAV&4=S?%-<%_VV5yMGE$_g+Iot=_9`muxT7*6L_3deS$anBwJBG9>JHn za){mRFkZj_&fp0DD4*hg;9;TQX_1Pfq5#JPzllTx21OHwL@V}-4va)?TJfT3RESTL z4>M?*fL>BM7csus&rp}ctDMjN^EoC~A?D)qY(QCPWfytCZa4?NJjrI_w+GsCPnvEVM^4Vw~182e`TChLL(i-*)$e2iACtpB3seMG5 z_FGs6{Q}Z7^oa`yYB-?bpnn`Gig5w6D2jKmcpS47>T;D!ytWh#k85~Bv40w#lrv@N w0Q^RAO?)Zz!yV++O@0{6v^y}M9Y@V5=1D#XyF18_WbkuT#cXO05j$}BUCSpEBLDyZ literal 6611 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 QPvBXcNX~c3&%yWp1JzoMs{jB1 diff --git a/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.class b/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.class new file mode 100644 index 0000000000000000000000000000000000000000..2ac7067ff071d37e03942bfc3aac274784f1c1c5 GIT binary patch literal 8176 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 Ni+XbYh5Qoy;3sU0<8uH2 literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Drivetrain.class b/build/org/usfirst/frc/team708/robot/subsystems/Drivetrain.class index 39de8102952148a5e0461c5d61229ae3c8b37556..a847ec319aa15808d1ba9bd775ab5b1fb145863d 100644 GIT binary patch delta 3214 zcmah~dwi8;9smB$cJ{vKJ}Fx9g;LtpinQ5udM{hsGM&-ZtI ze(&Kq+vX%5d*kr^0A|UV4!-H)pobMW6v1+gD%`Dbk3v%6TMA@oEIG;V*jluL^(j@OS(}z5l1e>n{G~;ota=i<6X9_^*pMT)Y_(h`17RCC`z3 zN5Z3f#Lbud(L2M7rFB>e3@*k>gZE&S!6kUF!TS_8>fWI4eE_Qj4gN8w+@IzY6%ONS zgNyKPBMz?i7dgEZ!{QqBVYR^;g-aFIVzs}|=`0+Uh{5~OZ?KoApK~V99v08wGOROL zk9C6B`o7J59RqzE`#YBQ4P9oifz~BTN-@}Pq!1&5PX7+4!N16j7sn)SFf1ho1GrpJ zYu(!Adeg7KCW9*#h7_(+*sSnDf|O#!;6{Z{C|@u6YW)}8hD4c^8>x^=N2-ieW2=!G znP_AZgOpm_U~oM?tk?G&?7&V(>WtLOX+|bvr@^NP(tzDY8fA(jO-5Rz)kvF6H8M@w z9hq*VLpe{UWtoAUg78_J`Zla}WTuf$nI#iZws2YfIUCmuUb=Qu{fzpB>#iK?+qh<} zk=fGazZ|J9FI+G%uuiwm9vm3l5{+M(0L{MA|e%qo)^c5dWa* z@^6bZ`7fC%{zI{@{I>|YZT@PD7AKbT6#^9qX$h%?wD?xC{#LRDtYjBh$--L6+FHr- zTFDAq$>Lhcl3K~CTFE+E$vRPrHWaXg2H8~h5B3#h1gxBuES{CDpOq}3m8_zbEF@($ zsn~+VYer`k?-aS#KRV$+&4>7x;U?rdY{7M02@GHqj6vx-`RGg&-2!) z^DMQ}`p?9N$$CLaZ$eMCA)nYEoKo#0jEt73eUw_B)iirye2lt-a7S^p*yWMyaf1?a zb14e=HxO-WZf(08;UwlAiOkK1dGqN1xp@<|>P8bA|7X^p2+f~ARR-24k>GSdr;bCWs^HJhL}y+ zlW_4Ait%)o0~68?@cpXy{)y^T+$m?D%{qH3TY_CFelm9jk-ChuFp1cBZ;vr=&*$X0 z8MmlCawJ%NhqA6Mi3QF5J>f)(Y<_d=7|z;*f>=+uGTc0PfM@b-OT=x{9cMhR@Ufm? z*S~6Qq?)lVosl~DK{M9jR@;m&&wr9ysu>yMNmS?256-HNYZ7Ox*;FT{ zQu2Dva6XOQ0l{9n73G~4hO@A_wK6=0b9y3`k=X8ih}*sXF`QfJ?B0uT>_BB?Tv(i@ zi9#tygH&LOR9R#5m?09T<7&a4Ag&gC#>S=p-e%)cO=ERXh#GvBS|oUQp_6FH(-!Bq zCh+xgCRAhXWUM8Ja9$FNsI4wbt0i2P)xUzMwUGD$lpit6D>o=_ux>poU+9CVmKJ$V{9momuzi2KRM>lp?gm!R>ES z7Nea&iwMknScu{c9*hphC%l?AZ#(@tfU=+u<`LQa-R zc{x}XlI7g2BxOjxnBC3R6>a8;Ni4~3<^+9|rC9`-2mYm;1e3-Q==}?G-v4qsitGVF z2O6_dv0lfVTntB6<|O$_P7*qiO=3A#k>ipa9QpWaW~w#oB(zUh26CSL8ul|+*ZA!< zjkY!I)RZBF-I mI8ScP3Tsi|VhG=0*dZK{36yb!q)2+CnBVo+P$bRstNsTjh5+&a delta 3272 zcmah~d3aRS75|;d%)B>mZiX;fNG4>FkZmA@uq6RaKtQQ1D%z$fE&<0Bh(trA1cWJS zfhwE6RzXETZM7{eN??qLpcU%^F0@r~Y2Di@wsvuAOQGl7_n4WFFW=Wc=6BA$@1A{` zwGDe4;xC-oyC1+PYBKPMiCq@Hjh+Bnuv=h{KtkYAfnI^f1oj$u+(HohjV@H3P3(h&pzU%FP=BZwkC6@V3D3<;fq!@;d_W z8hFn_d^GmS>3x9@EPRNM1pX+%)>`l&g z9RDH5e_ANU=K*|yFGc7pfv+w63;&iV{v&YQ#D7^w1x}ba86Xgu}|3Afms$GK>3OaC}L2dqJdbesECRcm2l)#id70LaifUuP}qQtgkWcEQLIby zJGRuIGZYP?GJ^&yDyIrXmDs3oCj(Vsv!ZH>8Z<;v4GmLNOT!h_(FlV^DjFr0Mq^D> z(HK$dJG--WK}=CSH4ri!45-7{dopf=jo5Iq%(n<3c zb;&z>dmz&Dd7z%?%$}jaE~1e-E$4(v>{~k5rjCk2Hp++#8y5duYlXqAAy2Q!c-z+yR<$6KKly)|4x&DHm5$E~lnkHKruZ z225jv+;I8>_Z-szxQ?1~DK+J4YRU!GlxwOfmz8ORRdJUxF6$}F+CX%J-P3<(;d1_@ z_!6`ND-h=s;d{Yh zesOGk%)uVxN&b{a;xlc->C}>Bx=Qdvw^K{-Bi*SczrTaIxYMeff#Zlse7wP2Z$@xw zBwmxfs7_$An04CJ$=6qD;iU4l37cK{E$mj1WvV!ub1JLzeZ4rhF_0e!ZMqj>eb?5D z_>_EO(-!zbJM#ml#YNf3q+FEo1}>+3ZLEnC#0ryfRpBl-t}5KEciqxQ$yDmBSc)bKXHpY0MJNKQ;WTbB+Bu+f3u1g57{>kUjzFljvW za@8xFOLS@l|F};rMHzi)naElurzI(+bv@*r$S`(-esO z%s%BGN=7k8=f;^Pc3^N?Dk`K%Gz$h@(x;N2I!f$ik%H8}7tQAPm-X@9i=U;|TcxZ- zJ+8E%&$mCv4t8vreKImwx1nC2v-xhpe20aF3i-sF?6w6Men|Z3% x@>H$ksalU3+JLdN5$DqFX<o|;D3c&6$AhP diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class b/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class index b03cd35249eec87edcea6981309ac106453d2489..ed013db421cc1f410b39552591e89d53aecc9e16 100644 GIT binary patch literal 1855 zcmah~T~ixX7=BI?vLq~_NfDub6p)sHwTn`q7OcUfR5TzZNVPZ4W^)KzlRcR|Ct-T$ zzt9=SYj3>K(X^v8j@SMu$M1j7rXIH9x$SQV35fqigZ_=;gCy?bLjySj z+YHHu+Y)L|DB&|)EjprZIm+i&etZAOt_g3GA-?5$uDZ_<%`P1?#PXuT877LZ$M>7{ zGWU<{a*b9pMd8@BW7~K2JY0;aQ&%#q6@_25n)1Z;rLs-$4d{Gw4lFhPw zCKazs>p&Cw>LIs%x;vwC9EmX+Zi3!+1&A&ewZ(Bcw%V4tcA4CMK0=kR-{y%8@A8^0X{$pWu=u(exd@<7#~q z7tC%ywOcmB;^m_9!jsDOlr%AeYYgdu=rY{A9O6(%hiGerk4(IZX%l%|Gf*(`5FeY^ z#U}sjtOls4bM=O&Kvm|^wui-#tJ6!S{cI%~LA zCy`{;-11Y4gz3~+rEVIjOtQN=F>&s7s$+IQ{K5{UtW0Ss@RsXPfK&Yo=C0>)KVP$@ z($k)PNHm(N)AI~d*`n?Ot47qVlJZ@zx>;Cyf;oDirs$<%i0FDH z%OIN?fX3Ho_6#wyfQ{wnh%Ens=$BXKo@3-U#Fu|XybVKte!*xPiH?4kJJfFVP@4=<7wOChBAJ|q&0YeV{_cnWfn9kS?9zGEHi(Z- zULZa-MEn|wU+=-|if33p2iXciQkkov=ogrL+#kk!7{^u*QYsW2flgh7(!4|83|V&w P??G;c{sf~a=4So{kh+wG delta 784 zcmaixO=}ZT6o#KWGiJ6pPwZ zBB!dz0VXIj#W?%4Vtc*p*ME0LxzC-9YyI1SrQ*#K1C6HNI8H^YZKr5OGxPOL*WZ$= zb=k8+h$IWDnqMuZjKp<1p{Rv}l4tZD;;^E_ttSQx4%fvN$UJ*N7`!6zUu)fujrO#) z>jUBn3HFFK?ZV5q9Jl%p?$Gm>f8oyj4_oWat*xWxrN~`KY(M)4`wiJ|4gi1IHyrIx qe<^`v^SQ+KJMuSwALIfV76(Y#N@CgLm=t)_br}#z&zyj*R_P~ookXSp diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class b/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class index cea4bffc48450b0e9c1e0e5860b9d04f4d007bda..5d7899f4c4b034c4ce966b0c3cdd1762a41427a0 100644 GIT binary patch delta 1506 zcmZ`&?Qaxi5dZD&b@y(4xWFmZ%O$lRi1&g(u?10-9&fgV>kC$kMFh(AC|jA4ISMJ4Eb^U>63&w_8MB#Gr_Rh&>{PBG`+fSoTxTxWL*jVIa9u&+`5o1zoTrNHgW5UKE91dgB z=FO2Xj!KP>!k7|$ER3?~;}%X>I63`fza1GHDVBOi3WY&;r}ikV#tP%TGae10R7bi` zgBqISHB#vgw^4u2U9C?Ut;o86>aE*b(WUSzRw=xORTfSue2UWwXYiTA=jc&5i*|)` z$SRx{aRC=CTvE6USK$i2Q20{fui~1*S0b)U!LM;cL&9y+66+OS$7+Q)@TS5V5jQ3N z8+2)ibUG7-#&*XUwD7IME!@@+?JbN>IE^_cKQLZ&N(yhI%e`kTZ2k^C8s=>*<(T$thKG+69DR<3tw8gQ1&!C z^fa6FH2b8sp@CzfTnlIom`4k^@8+z#<&5zgQa^ja>nJxNMwvtiORxY-(SRnTu$(~6 zB;A6Igzn^ND1MEz)WJ}t(i8k*gKc$oJBXi z=(d_nt(w_}cHWWzy7__(>Sr^*!u$p43L;`9D|lwMRMZREMDCkODd&}}=cJexloYEY zO2!($&3<+FpYWox%)w9ZW_l0PxBO3fF39dgSJ2xULI{YNNz9q6?RopTv~4xD%xWtp zIygn?q`OQ=pXf5r!A+B1>L*s!Ia$`G8`x1ZrMl{rwjfwDcVu{R-fW_CX5%-r8)4*Y zibR4UWlf%H&_X|}2%os{NwSZZ5*1`(i)kfK|Bjcp&Q3hWM+593#UZ}1y?6n|8mjRs z)i`n(EH9}7WW=gqsQ?)s|9V0I2lzHieD)&*ImrEu)_~=z zU^#-xhTmmI2zo=Dc3*WyyMh^IV#|nPR?y^eiY?#gA72rMv1b3!@}GPs`BaV|ful%c fs%Dy*paq?O6 delta 1302 zcmZ{k-E&iA5XOHeNpq6$wgX`(W;)a91=2LMd}~#p4N9P;jjdE$%7;>#R10lRZEK;5 z27yAAFKa+h0d>YJyitJ+!-XTaT=A#iwKI&n=Y%xO;5jq9`)+oh-DmgBdAjoV+We!Z z5B>r+^NY>95nkavn|_;t2!8g4#XqQGUzq(IP~Sln@2mJg#UT|#Dh`JkCZkqXgGYiV z1y&z*eHcu}y;Jb-lA-R8A_0-33#a2$S>0& zKGF1<5XV#>4>7CyQ=89hPAvR;v@mHsTp5^}b|x%BOo zStfF|;5CcYLOtt0D)1(6 z$;o2Jv+AsI&*Jk6=aX^{y3whMOskxklD^!&>5)6(m+0k*y9ECvUL>qmW056`Bx>A{ z4!NeCMA_{^*2-WctpusoE;fe^xdWOt}?4uDXTMe zJF0oEqljC*UzRXXK`>ktOuk-zE+k|B0j0XX1poj5 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class index 230a29d8d3083e70e9277265cf47bf2ac8caae34..323c916d4d5b6791555ea4ddee0bfa6dea3f4843 100644 GIT binary patch literal 9193 zcmb_i3w%`Nl|N_lm|?i&F$p0F4S|0)FAA zH-i+UGtzlWz%K>-tAJk#_%{LnF5uS!-WKp10skT3KLz}kfOiDEE8xEcyjR#TS8b>E z`)y%EdA9dEA^4xdhV&^lCcWPa_=AA|74W`*vjYAYq;vFt0s0_7AEL>^jycFa&I@q9 zj1|GoY4??7SwOLNq}Adlg(h0nh0EGw*k%AJ4KotI_fgxf^{t_kwRJU+k^0z6TM zCP{yCfTu{OHo#K@91ifb08bBaU4UlfJ_K_sFUb(qaz25W|x*b<88K?8psjnX?2;27=$dfy-s%B27$+h}9Fd_FA^lZMojOTnPZbD0M_xpElbK%WBeX9fyhC7G->C z;GM8#b1R~@Uv2DNYuZgl2Skmn*wb#L#7tm1qRrOZcdgM=iVVR?DF+t`#$X?~hVlc~ zi&h!7XBSvNU1}v9#vKE>BDPpL{#F6!cXSx!Ir+6sVnttjJ1mwV%2}CTyIm1TG$?`Z zx?H@|gb0WlmDvf$F|)2zl3|+hfc)APXHT#!%S`9q1795CjLJ+6_TM~9$7QL^%)2^e zH}$n+KFd1S_kFU|HD!y{;(2hfWh7%8%_iOIikf;FG$C;_9G2dbup72jOPN;xKT6=|R`qlQkRAAW4gAlEhbs~H;rdQscch&mL7ZvIh3`?LnUpAI!ZQBH*h6?h&wGzySgG3b;>*zb38wh06od zdXV<|d7Z}V`7%VNcD;KRGM8C1XDpbpaK^0J8gJk>jc%pe{Jc@)O^gE{;k*bnj#V|@ z!do@Eo%S(J{n(EzQ_F>o_!oE~Y`WYuZOcyUsWpb(WyY-HLf%%w+l&2tc?q4?_zK=3 zXQyj)1AS8CC>`>1yT&m#{M?~&Cq1FjKTto@!l5a1S zHF{X={B3%IsX7}RYvRe87At$r{cLKS;;SX&soRL>v&MTVwP+oJTa9CNjgHb|8txqY zvnX1Z%R!vsF?qr2oRu|Zhr39gqdFCV)f-plc8nT%%e+`UGFsY(hq4H*QiOt_eZ>(Yj1RQis^3pKi36LS*~jcxAnbFap`>1mDkh{g8uHL$-pU2d3Kquc8`)|>I9?dNMX zzK*X)K+*UHTo3-FfExweB;aPg#m~2Dd>h}+H1ERRd!EM_!Dndya=ks$<~`!bPX>!B z5fv{)HhdtvF?TzO!^qm43>6t;JlVNeV)OW+w{z0aHY43D+0Aggge@xQN$NJacItWZ zg4|V-0qC(u1@tnn3B`zT1h922$qPIH?dSg~K*QCl+Zq4u) zsr_+?2MZuRSb*m=4bPo$;VZL2vRFwU)A3#dp*)UceBMVS3OUAV$}EG{b1uBqkjtD@ zvCT~CX)g>S=}O@$p#(#!yD_cH^(e~TKg14Hpm}-}=PEgA6I1xY8^d!G5m|<`9Z3`J zU1K7iN*S^B21>Z3y&|19;WPf)Cj1kAbG-X7@X)PpSTyG4eUUcl=A?nca3h?$0-FqR zC7R^g1XU_(CJY^h9*SzaP?dMY6DWa@&e$k3Eyu}`=ORcbLnw`wrPKOeaXOgZiBAKE zVIE7>?*6#7qB~_HXy-w9rjf|1b3#O>w9XCFD8*B#Tp}$FmU177d<+rJ35au@8#Q!L z$F&(Mj6zP{gC7Jb*zJ5sDD3h+A9Pv0nYuAo-@%M=$0YOXPq*h>@{~8kye%SBOB5?^mf}! zL(}2i*`A-jh^n;JGCcQelL8(+Z;=P#7hF!l()qMq!{ZY6FE)9w>|o zL17dL3ZqU?7^Q;3s1_7P!Jsf|28B^JD2&QMVH6Jvqkd2rC4|DLA{0g;p)hI*g;7o@ zjEX{G6cxZkNP`td1`J$IEVT~cU*p5)Q7S}>*cT4@j!|B?oC^BLA1>vFJ_>|O>D@jW z7CuSAZO3SMA8FydJ{lpQNI;4%eU#T#L$N10BZ7Z_rhAf^>S340?m&be2vs)6l;~1Rwqet)G@1kzHspWN)B6WsAx9fKK#dDxz1Yf?kE@uR+TV zsF8lDWUPQ3^^{MKLKETB};NLoR*_C?w+qXvQ`|Xa&HW}D7h=bQ{WP=5*47X_y%}6f`{=(3Zi$&Pw!DF{g%ek z?`RVJ9!K^EDDXZMI12^NLHG|c!k1E*9>*mS;hS@WA5Qt_Xi{FuS@MhcN9YMhe102x zL42NH#%%OPz_uiR#5Z4F0g70CPt|pC#aO2hF^n(<1)o=$M z#8D|3wt*mjhumX1G|V?iX<(`M8)$xRfe+6iwzzn#t9)f=5#;kEN|Vj$(Wf zrFlHv%G2o%uA}`tgYM@DeVu2~5uQyi^E`T;=hHj9fZpdNtnsB>#!GoD*YkL8Upd&( z_*Hi{t7|9SoP%BGSY#b6e=lMtX4g5Vw$453i{a!Y;xg;xR*rHVdXyL{EFCq2Rat{A z!i6N>Kz`m#rMwl!+D3JJInCiKsGfJwYSw8zzOZcN7+uL76vfvS10P55StO%;DP5NF zb~DG@H7Ynq^?8-~uDj!VhU4z|0Oj0P3Adxe{j|QbIdmCx*svu>5fxdoIvk}@*-KfC zm`Z#-1yS3VqN*RuH_;@%g~EJWMl3>Pb)sAl7uLCsawdNA$t9Evh>tI>L=j-Qtp$*1 zr0nBFaOX|iuXw7+i5Tfc&OYjQ7ca%#mEcn-hOWxS|DeQEzMl&CfgGs{T@Ikf!y!R} z={P-=;pLN6;58cYbTF@j;C1LcyiVX17hWe3>7AgMt5oe^r4A3N6uxU^7W>e0EK)5F zlWUPjhg|#&J?k!B3hIm&wS%?5OT&+!M~hR)Jw%JY8`>fjgLyp(UPsTv>p9mV&kuc4 zqX+Xk23}8{hu7b`Cx!2d869&@y?QXOr@`x)^YD7X<@KGRbsROA*K^?Y{CRkN*VXZR z8CQe>O49#MvX`or+G&|6& zR!lq5>Qb#ZTBD_vHTYU8gE4-H!159d@go|?FH5gv|0;rr?Lm1iC&VJgpuaCN%X5s*sOMuu<7BQK zbAal?bw?>B$u{uSl5a~NzcilJGBt>fg-*Flz)GbLBNdT076Dz2p^!Ty>tzPN^bU-d z9fHec2Eb3~@v~&I+?{j=!2ebsAO3I?X0&ZW8B=2g=(0)HD70!xUVUKmGZt{AUl-7?qm}7+hW)!Cg6x{{>?VY&nK& z1jCypcfXlx0Cyr^z8d+eg{<91hQ1pq-yWoUdy$1-gG~Ec+JV|{7b-ssD{esDcRMok zuK*szUw@v&AAe3^<^}u>=QOhPGx)pB+xWB1d&t&5M82WXqsULb$&=|xo<>J`CiNlj z=;uXrjO&rXOTHe)NzXy_l}_TFZ4rrhP-ZdD&ydDw8~E} zg+gP_68*-x*Wr9xjNSpEcyeDqWP1aJt6)0O-gzN&B--^pL# U&m#~>+Kw>5LCWLdNQ6fG2_nu@_y7O^ literal 8831 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 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionLift.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionLift.class deleted file mode 100644 index fa7d53f45f0d959efa93292aa19132dc29371842..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8468 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 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionLiftGear.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionLiftGear.class new file mode 100644 index 0000000000000000000000000000000000000000..1ae384d04d60dd8f164121c747c45984c8d48b13 GIT binary patch literal 12272 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 BN0k5o literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.class index 8d43f75872b000b18d10d05896736bbda0d6d1d3..261b8464c0aad09c2e9432006d54d7bfb14618f7 100644 GIT binary patch delta 17 YcmeAcZWrF5&B`K{o?5cmm^Fe004+%bx&QzG delta 21 ccmZn{?iSvl&B`H_o>~%|nVz>uuA7}@lWY=WR#9OJLo5U>!zS?sf?yZ0ih?#lqDBbT0VRltFNR1& zOk-swVzd9n*22=C;MpL~z@6{T+;h*Jm+_0--G*OB!$k%=F6!7Ny>BlF;hktLezGlW zdI&M^;V`B}Ea|>EoHY0LI|l5|LG$?Z2#V?~;+6c^vc5#R3X2<%#ZoguQdbhQU5N^2 zMnw`;l7K`F%P^4VZ4VASo~l@ikSaTY6Cqu819z0OM_>hZ1i$shB7q6U6imi5Bydjd zp}?#Ln^FB+sXr@VPGN8|19hA;Q})9L2> gw0)pvz|THX`Gjc|>xbb`R75V@{+ZNrKv{moHoy)st&hOm1w>@;TuDg*_;l_@NEOx29ZO_Phu#i8_ z77It|aU=TS6Ts9CE>}T1Z8i(iV5=az&x%_!uBCM zmtdm{uyCXxV)pSG!!pJ!1;Yw;G8{-C2?;)W-2wxruNIDUp&2%Vb>VuY2N`~HFyMCynQ GNBjruK}kXY diff --git a/src/org/usfirst/frc/team708/robot/AutoConstants.java b/src/org/usfirst/frc/team708/robot/AutoConstants.java index cdc9970..0899763 100644 --- a/src/org/usfirst/frc/team708/robot/AutoConstants.java +++ b/src/org/usfirst/frc/team708/robot/AutoConstants.java @@ -39,7 +39,7 @@ public final class AutoConstants { public static final double DISTANCE_TO_BOILER_LOCATION2 = 108; // A distance to stop at and shoot for high goal in inches (9') // Gear Constants (Game piece) - public static final double DISTANCE_TO_GEAR = 35; + public static final double DISTANCE_TO_GEAR = 30; public static final int GEAR_TARGET_HEIGHT = 4; public static final int GEAR_TARGET_WIDTH = 10; @@ -62,7 +62,7 @@ public final class AutoConstants { // USB Lift Camera Constants public static final double USB_LIFT_FOV_DEGREES = 43.5; // Field of View of the AXIS Camera - public static final int USB_LIFT_IMG_WIDTH = 320; // width of the USB image - resolution + public static final int USB_LIFT_IMG_WIDTH = 320; // width of the USB image - resolution public static final int USB_LIFT_IMG_HEIGHT = 240; // height of the USB image - resolution @@ -71,4 +71,9 @@ public final class AutoConstants { public static final int USB_BOILER_IMG_WIDTH = 320; // width of the USB image - resolution public static final int USB_BOILER_IMG_HEIGHT = 240; // height of the USB image - resolution + public static final String AXIS_IP_ADDRESS = "10.7.8.12"; // lift -practice - 10.7.8.2 + public static final String AXIS_CAMERA_ID = "cam1"; // lift - practice - cam1 + public static final String USB_CAMERA_ID = "cam3"; // boiler - practice - cam3 + public static final int USB_VIDEO_PORT = 0; // boiler - practice - 0 + } diff --git a/src/org/usfirst/frc/team708/robot/Constants.java b/src/org/usfirst/frc/team708/robot/Constants.java index 5de2483..d52026e 100644 --- a/src/org/usfirst/frc/team708/robot/Constants.java +++ b/src/org/usfirst/frc/team708/robot/Constants.java @@ -18,10 +18,10 @@ public final class Constants { public static final double CLIMB_REVERSE = -1.0; public static final double CLIMB_OFF = 0.0; - public static final double GEAR_UP = 0.4; + public static final double GEAR_UP = 0.4; public static final double GEAR_DOWN = -0.4; public static final double GEAR_OFF = 0.0; - public static final double GEAR_IN = 1.0; + public static final double GEAR_IN = 1.0; public static final double GEAR_OUT = -1.0; @@ -35,43 +35,47 @@ public final class Constants { public static final double MOTOR_OFF = 0.0; public static final double DRIVE_MOTOR_MAX_SPEED = 1.0; - public static final double ROTATE_MOTOR_MAX_SPEED = 1.0; + public static final double ROTATE_MOTOR_MAX_SPEED = 1.0; - public static final double VISION_ROTATE_MOTOR_SPEED = 0.8; + public static final double VISION_ROTATE_MOTOR_SPEED = 0.8; public static final double FEEDER_MOTOR_FORWARD = 1.0; public static final double FEEDER_MOTOR_REVERSE = -1.0; - public static final double FEEDER_OFF = 0.0; + public static final double FEEDER_OFF = 0.0; public static final double LOADER_MOTOR_FORWARD = 1.0; public static final double LOADER_MOTOR_REVERSE = -1.0; - public static final double LOADER_OFF = 0.0; + public static final double LOADER_OFF = 0.0; public static final double SHOOTER_MOTOR_FORWARD = 1.0; public static final double SHOOTER_MOTOR_OFF = 0.0; public static final double SHOOTER_MOTOR_BACKWARD = -1.0; - public static final double SHOOTER_MOTOR_SPEED_LOW = 2000; - public static final double SHOOTER_MOTOR_SPEED_HIGH = 2500; + public static final int SHOOTER_MOTOR_SPEED_BOILER = 2300; + public static final int SHOOTER_MOTOR_SPEED_LEVER = 3000; + public static final int SHOOTER_MOTOR_SPEED_MID = 2700; + public static final int SHOOTER_CLOSE_SHOT = 40; - public static final int SHOOTER_ENCODER_PULSES = 12; - - public static final double SHOOTER_P = 5.00; - public static final double SHOOTER_I = 0.005; - public static final double SHOOTER_D = 10.0; - public static final double SHOOTER_F = 2.6; - public static final int SHOOTER_IZONE = 00; - public static final double SHOOTER_RAMPRATE = 0.0; - public static final int SHOOTER_PROFILE = 0; public static final double SHOOTER_PEAK_POS = 12.0; public static final double SHOOTER_PEAK_NEG = -12.0; - public static final int HOOD_MAX = 2000; - public static final int HOOD_MIN = 30; - public static final int HOOD_BUMBER = 1795; - public static final int HOOD_GEAR = 1600; + public static final int HOOD_MIN = 30; + public static final int HOOD_MAX = 2000; + public static final int HOOD_BOILER = 30; + public static final int HOOD_MID = 760; + public static final int HOOD_LEVER = 1600; + public static final int SHOOTER_ENCODER_PULSES = 12; + + public static final double SHOOTER_P = 5.00; + public static final double SHOOTER_I = 0.005; + public static final double SHOOTER_D = 10.0; + public static final double SHOOTER_F = 2.6; + public static final int SHOOTER_IZONE = 00; + public static final double SHOOTER_RAMPRATE = 0.0; + public static final int SHOOTER_PROFILE = 0; + public static final int HOOD_CALIBRATION = 10; public static final double AXIS_DEAD_ZONE = 0.3; @@ -79,8 +83,8 @@ public final class Constants { /* * Smart Dashboard */ - public static final double SEND_STATS_INTERVAL = .5; // Interval for reporting in seconds - public static final boolean DEBUG = true; + public static final double SEND_STATS_INTERVAL = .5; // Interval for reporting in seconds + public static final boolean DEBUG = true; public static final boolean LIFT_DEBUG = true; public static final boolean BOILER_DEBUG = true; public static final boolean GEAR_DEBUG = false; @@ -88,8 +92,8 @@ public final class Constants { /* * Sensors */ - public static final double SONAR_CLOSE = 30.0; - public static final double SONAR_FAR = 80.0; + public static final double SONAR_CLOSE = 30.0; + public static final double SONAR_FAR = 80.0; public static final double IR_HAS_GEAR_DISTANCE = 4.0; public static final double ENCODER_BOTTOM_POSITION = 0.0; // public static final double GRAYHILL_ENCODER_PULSES_PER_REVOLUTION = 1024.0; @@ -98,15 +102,15 @@ public final class Constants { /* * Drivetrain */ - public static final double TANK_STICK_TOLERANCE = .30; + public static final double TANK_STICK_TOLERANCE = .30; public static final double DRIVETRAIN_WHEEL_DIAMETER = 4.0; public static final int DRIVETRAIN_ENCODER_PULSES_PER_REV = 5704; //encoder 1024 * gear ratio 5.57 public static final boolean DRIVE_USE_SQUARED_INPUT = false; public static final boolean DRIVETRAIN_USE_LEFT_ENCODER = true; // variable to determine which side encoder is on - public static final double PEAK_POS = 4.0; - public static final double PEAK_NEG = -4.0; - public static final double NOMINAL_POS = 0.0; - public static final double NOMINAL_NEG = -0.0; + public static final double PEAK_POS = 4.0; + public static final double PEAK_NEG = -4.0; + public static final double NOMINAL_POS = 0.0; + public static final double NOMINAL_NEG = -0.0; // PID Tuning parameters @@ -118,16 +122,16 @@ public final class Constants { // LED CONTROLS - public static final byte SET_ALLIANCE_INVALID = 0x00; + public static final byte SET_ALLIANCE_INVALID = 0x00; public static final byte SET_ALLIANCE_RED = 0x01; - public static final byte SET_ALLIANCE_BLUE = 0x02; + public static final byte SET_ALLIANCE_BLUE = 0x02; public static final byte SET_TARGETING = 0x03; public static final byte SET_TARGET_FOUND = 0x04; public static final byte SET_HAS_GEAR = 0x05; - public static final byte SET_HAS_GEAR_TARGETING = 0x06; -// public static final byte = 0x07; -// public static final byte = 0x08; - public static final byte SET_OFF = 0x09; + public static final byte SET_HAS_GEAR_TARGETING = 0x06; +// public static final byte = 0x07; +// public static final byte = 0x08; + public static final byte SET_OFF = 0x09; public static final byte MAX_LED_CODE = 0x10; public static final int ALLIANCE_RED = 1; diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index 9bb57d0..9429f66 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -30,7 +30,7 @@ import org.usfirst.frc.team708.robot.subsystems.Intake_Gear; import org.usfirst.frc.team708.robot.subsystems.Pivot_Gear; import org.usfirst.frc.team708.robot.subsystems.Climber; -import org.usfirst.frc.team708.robot.subsystems.VisionLift; +import org.usfirst.frc.team708.robot.subsystems.VisionLiftGear; //import org.usfirst.frc.team708.robot.subsystems.VisionGear; import org.usfirst.frc.team708.robot.subsystems.VisionBoiler; //import org.usfirst.frc.team708.robot.subsystems.VisionProcessor; @@ -55,28 +55,28 @@ public class Robot extends IterativeRobot { Timer statsTimer; // Timer used for Smart Dash statistics public static Drivetrain drivetrain; - public static Shooter shooter; - public static Feeder feeder; + public static Shooter shooter; + public static Feeder feeder; public static Intake_Ball intake_ball; public static Intake_Gear intake_gear; public static Pivot_Gear pivot_gear; -// public static Loader loader; +// public static Loader loader; - public static Climber climber; + public static Climber climber; // public static VisionProcessor visionProcessor; - public static VisionLift visionLift; - public static VisionBoiler visionBoiler; -// public static VisionGear visionGear; + public static VisionLiftGear visionLiftGear; + public static VisionBoiler visionBoiler; +// public static VisionGear visionGear; - public static LED led1; + public static LED led1; - public static OI oi; + public static OI oi; - public static DriverStation ds; + public static DriverStation ds; public static DriverStation.Alliance alliance; - public static int allianceColor; - public static byte ledAllianceColor; + public static int allianceColor; + public static byte ledAllianceColor; // public static Solenoid pwr0; // public static Solenoid pwr1; @@ -108,19 +108,19 @@ public void robotInit() { // Subsystem Initialization drivetrain = new Drivetrain(); - shooter = new Shooter(); + shooter = new Shooter(); intake_ball = new Intake_Ball(); intake_gear = new Intake_Gear(); pivot_gear = new Pivot_Gear(); - feeder = new Feeder(); -// loader = new Loader(); - led1 = new LED(); - climber = new Climber(); - visionLift = new VisionLift(); + feeder = new Feeder(); +// loader = new Loader(); + led1 = new LED(); + climber = new Climber(); + visionLiftGear = new VisionLiftGear(); visionBoiler = new VisionBoiler(); -// visionGear = new VisionGear(); +// visionGear = new VisionGear(); - oi = new OI(); // Initializes the OI. + oi = new OI(); // Initializes the OI. // This MUST BE LAST or a NullPointerException will be thrown // UsbCamera ucamera=CameraServer.getInstance().startAutomaticCapture("cam0", 0); @@ -254,7 +254,7 @@ private void sendStatistics() { intake_gear.sendToDashboard(); pivot_gear.sendToDashboard(); // visionProcessor.sendToDashboard(); - visionLift.sendToDashboard(); + visionLiftGear.sendToDashboard(); visionBoiler.sendToDashboard(); // visionGear.sendToDashboard(); } @@ -279,17 +279,17 @@ private void queueAutonomousModes() { autonomousMode.addObject("10 Ball", new TenBalls()); // autonomousMode.addObject("60 Ball", new SitxyBalls()); - autonomousMode.addObject("Rotate And Drive To Lift", new RotateAndDriveToLift()); - autonomousMode.addObject("Drive to Boiler Location 1", new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION1)); - autonomousMode.addObject("Drive to Boiler Location 2", new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); -// autonomousMode.addObject("Rotate And Drive To Gear", new RotateAndDriveToGear()); + autonomousMode.addObject("Rotate And Drive To Lift", new RotateAndDriveToLift()); + autonomousMode.addObject("Drive to Boiler Location 1", new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION1)); + autonomousMode.addObject("Drive to Boiler Location 2", new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); + autonomousMode.addObject("Rotate And Drive To Gear", new RotateAndDriveToGear()); // autonomousMode.addObject("Drive Straight for time", new DriveStraightForTime(.5, 3)); -// autonomousMode.addObject("Find Target", new DriveToTarget()); -// autonomousMode.addObject("Drive in Square", new DriveInSquare()); -// autonomousMode.addObject("turn", new turn()); +// autonomousMode.addObject("Find Target", new DriveToTarget()); +// autonomousMode.addObject("Drive in Square", new DriveInSquare()); +// autonomousMode.addObject("turn", new turn()); - allianceSelection.addDefault("RED", new RedAlliance()); + allianceSelection.addDefault("RED", new RedAlliance()); allianceSelection.addObject("BLUE", new BlueAlliance()); SmartDashboard.putData("Autonomous Selection", autonomousMode); @@ -310,7 +310,7 @@ private void sendDashboardSubsystems() { SmartDashboard.putData(intake_gear); SmartDashboard.putData(pivot_gear); // SmartDashboard.putData(visionProcessor); - SmartDashboard.putData(visionLift); + SmartDashboard.putData(visionLiftGear); SmartDashboard.putData(visionBoiler); // SmartDashboard.putData(visionGear); SmartDashboard.putData(climber); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java index 4a9bfa0..035cadb 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java @@ -8,6 +8,7 @@ import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegrees; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Off; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Out; +//import org.usfirst.frc.team708.robot.commands.intake_gear.AquireGear; import edu.wpi.first.wpilibj.command.CommandGroup; import edu.wpi.first.wpilibj.command.WaitCommand; @@ -40,7 +41,8 @@ public OneGearCenter() { // get gear 2 // addSequential(new TurnToDegrees(Robot.allianceColor*.6, Robot.allianceColor * 135)); -// ddSequential(new RotateAndDriveToGear()); +// addSequential(new RotateAndDriveToGear()); +// addSequential(new AcquireGear()); // addSequential(new TurnToDegrees(-Robot.allianceColor*.6, -Robot.allianceColor * 135)); // addSequential(new DriveStraightToEncoderDistance(40, .4, false)); // addSequential(new RotateAndDriveToLift()); @@ -50,6 +52,7 @@ public OneGearCenter() { // get gear 3 // addSequential(new TurnToDegrees(-Robot.allianceColor*.6, -Robot.allianceColor * 135)); // ddSequential(new RotateAndDriveToGear()); +// addSequential(new AcquireGear()); // addSequential(new TurnToDegrees(Robot.allianceColor*.6, Robot.allianceColor * 135)); // addSequential(new DriveStraightToEncoderDistance(40, .4, false)); // addSequential(new RotateAndDriveToLift()); diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTimeOrGear.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTimeOrGear.java new file mode 100644 index 0000000..5214fe9 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTimeOrGear.java @@ -0,0 +1,86 @@ +package org.usfirst.frc.team708.robot.commands.drivetrain; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.Robot; + +import edu.wpi.first.wpilibj.command.Command; + +/** + * + */ +public class DriveStraightToEncoderDistanceOrTimeOrGear extends Command { + + private double targetDistance; + private final double rotate = 0.0; + private double speed; + + private double maxTime; + + private boolean goForward; + + public DriveStraightToEncoderDistanceOrTimeOrGear(double distance, double maxTime, boolean goForward) { + this(distance, Constants.DRIVE_MOTOR_MAX_SPEED, goForward, maxTime); + } + +// public DriveStraightToEncoderDistanceOrTimeOrGear(double distance, double speed, double maxTime) { +// this(distance, speed, true, maxTime); +// } + + public DriveStraightToEncoderDistanceOrTimeOrGear(double distance, double speed, boolean goForward, double maxTime) { + // Use requires() here to declare subsystem dependencies +// requires(Robot.drivetrain); +// requires(Robot.intake_gear); + + if(goForward) { + targetDistance = distance; + this.speed = speed; + } + else { + targetDistance = -distance; + this.speed = -speed; + } + this.goForward = goForward; + + this.setTimeout(maxTime); + } + + // Called just before this Command runs the first time + // Enables the PIDController (if it was not already) before attempting to drive straight + protected void initialize() { + Robot.drivetrain.resetEncoder(); + Robot.drivetrain.resetGyro(); +// Robot.drivetrain.enable(); + Robot.drivetrain.disable(); + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + Robot.drivetrain.haloDrive(speed, rotate, false); +// Robot.drivetrain.haloDrive(Math708.getPercentError +// (Robot.drivetrain.getEncoderDistance(), targetDistance), rotate); + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + if(goForward) { + return (Robot.drivetrain.getEncoderDistance() >= targetDistance) || isTimedOut() || Robot.intake_gear.hasGear(); + } + else { + return (Robot.drivetrain.getEncoderDistance() <= targetDistance) || isTimedOut() || Robot.intake_gear.hasGear(); + } + + } + + // Called once after isFinished returns true + protected void end() { + Robot.drivetrain.disable(); + Robot.drivetrain.stop(); + Robot.drivetrain.resetEncoder(); + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + end(); + } +} diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTimeOrHasGear.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTimeOrHasGear.java new file mode 100644 index 0000000..19b76a5 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTimeOrHasGear.java @@ -0,0 +1,82 @@ +package org.usfirst.frc.team708.robot.commands.drivetrain; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.Robot; + +import edu.wpi.first.wpilibj.command.Command; + +/** + * + */ +public class DriveStraightToEncoderDistanceOrTimeOrHasGear extends Command { + + private double targetDistance; + private final double rotate = 0.0; + private double speed; + + private double maxTime; + + private boolean goForward; + + public DriveStraightToEncoderDistanceOrTimeOrHasGear(double distance, double maxTime) { + this(distance, Constants.DRIVE_MOTOR_MAX_SPEED, maxTime); + } + + public DriveStraightToEncoderDistanceOrTimeOrHasGear(double distance, double speed, double maxTime) { + this(distance, speed, true, maxTime); + } + + public DriveStraightToEncoderDistanceOrTimeOrHasGear(double distance, double speed, boolean goForward, double maxTime) { + // Use requires() here to declare subsystem dependencies + requires(Robot.drivetrain); + + if(goForward) { + targetDistance = distance; + this.speed = speed; + } else { + targetDistance = -distance; + this.speed = -speed; + } + this.goForward = goForward; + + this.setTimeout(maxTime); + } + + // Called just before this Command runs the first time + // Enables the PIDController (if it was not already) before attempting to drive straight + protected void initialize() { + Robot.drivetrain.resetEncoder(); + Robot.drivetrain.resetGyro(); +// Robot.drivetrain.enable(); + Robot.drivetrain.disable(); + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + Robot.drivetrain.haloDrive(speed, rotate, false); +// Robot.drivetrain.haloDrive(Math708.getPercentError +// (Robot.drivetrain.getEncoderDistance(), targetDistance), rotate); + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + if(goForward) { + return (Robot.drivetrain.getEncoderDistance() >= targetDistance) || isTimedOut(); + } else { + return (Robot.drivetrain.getEncoderDistance() <= targetDistance) || isTimedOut(); + } + } + + // Called once after isFinished returns true + protected void end() { +// Robot.drivetrain.disable(); + Robot.drivetrain.stop(); +// Robot.drivetrain.resetEncoder(); + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + end(); + } +} diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java index 85a06be..23ccc7e 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java @@ -3,6 +3,7 @@ import org.usfirst.frc.team708.robot.AutoConstants; import org.usfirst.frc.team708.robot.Robot; import edu.wpi.first.wpilibj.command.Command; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; @@ -22,13 +23,16 @@ public class RotateAndDriveToBoiler extends Command { // VIET ARE WE STILL USING THE TARGET DISTANCE HERE - I THINK WE ARE ACTUALLY CALCULATING IT IN THE SUBSYSTEM // IN THE METHOD ISATDISTANCE // BUT WE NEED TO FIGURE OUT HOW WE ARE GOING TO MAKE THIS WORK WITH MULITPLE DISTANCES FOUND - public RotateAndDriveToBoiler(double stopAtDistance) { + public RotateAndDriveToBoiler(double bstopAtDistance){ + double test = bstopAtDistance; + SmartDashboard.putNumber("STOP-stop at distance", test); // Use requires() here to declare subsystem dependencies requires(Robot.drivetrain); requires(Robot.visionBoiler); // save the distance - Robot.visionBoiler.putBoilerStopAtDistance(stopAtDistance); + Robot.visionBoiler.putBoilerStopAtDistance(bstopAtDistance); + } // Called just before this Command runs the first time diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.java index dd86711..c6f63be 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.java @@ -1,83 +1,83 @@ -//package org.usfirst.frc.team708.robot.commands.drivetrain; -// -//import org.usfirst.frc.team708.robot.AutoConstants; -//import org.usfirst.frc.team708.robot.Robot; -//import edu.wpi.first.wpilibj.command.Command; -// -// -// -///** -// *RotateAndDriveToGear -// * this command will utilize the vision data to drive the robot to the center of the gear -// * and stop when it is at the gear stop at target distance -// */ -//public class RotateAndDriveToGear extends Command { -// -// private double moveSpeed; -// private double rotate; -// /** -// * Constructor -// * @param targetDistance - the distance to stop in front of the target -// */ -//// VIET ARE WE STILL USING THE TARGET DISTANCE HERE - I THINK WE ARE ACTUALLY CALCULATING IT IN THE SUBSYSTEM -// public RotateAndDriveToGear(double targetDistance) { -// // Use requires() here to declare subsystem dependencies -// requires(Robot.drivetrain); -// requires(Robot.visionGear); -// -// } -// -// // Called just before this Command runs the first time -// protected void initialize() { -// Robot.visionGear.putIsCentered(false); -// Robot.visionGear.putHasTarget(false); -// Robot.visionGear.putAtDistance(false); -// Robot.visionGear.putCounter(0); -// Robot.visionGear.putCurrentCenter(0); -// } -// -// // Called repeatedly when this Command is scheduled to run -// protected void execute() { -// -// Robot.visionGear.processData(); -// rotate = Robot.visionGear.getRotate(); -// moveSpeed = Robot.visionGear.getMove(); // was + made - -// -// -// Robot.drivetrain.haloDrive(moveSpeed, rotate, false); -// -// } -// -// // Make this return true when this Command no longer needs to run execute() -// protected boolean isFinished() { -// if (Robot.visionGear.getCounter() >= AutoConstants.SWEEP3_MAX){ -// -// return true; -// } -// //Check if the sonar distance is less then the target Distance, end -//// if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.wasCentered()){ -//// if (Robot.visionProcessor.isAtY() && Robot.visionProcessor.wasCentered()){ -// if (Robot.visionGear.isAtDistance() && Robot.visionGear.isCentered()){ -// return true; -// } -//// else if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.isHasTarget()) { -// else if (Robot.visionGear.isAtDistance() && Robot.visionGear.isHasTarget()) { -// return false; -// } -// -// return false; -// -// } -// -// // Called once after isFinished returns true -// protected void end() { -// Robot.drivetrain.stop(); -// Robot.visionGear.putCounter(0); -// } -// -// // Called when another command which requires one or more of the same -// // subsystems is scheduled to run -// protected void interrupted() { -// end(); -// } -//} +package org.usfirst.frc.team708.robot.commands.drivetrain; + +import org.usfirst.frc.team708.robot.AutoConstants; +import org.usfirst.frc.team708.robot.Robot; +import edu.wpi.first.wpilibj.command.Command; + + + +/** + *RotateAndDriveToGear + * this command will utilize the vision data to drive the robot to the center of the gear + * and stop when it is at the gear stop at target distance + */ +public class RotateAndDriveToGear extends Command { + + private double moveSpeed; + private double rotate; + /** + * Constructor + * @param targetDistance - the distance to stop in front of the target + */ +// VIET ARE WE STILL USING THE TARGET DISTANCE HERE - I THINK WE ARE ACTUALLY CALCULATING IT IN THE SUBSYSTEM + public RotateAndDriveToGear() { + // Use requires() here to declare subsystem dependencies + requires(Robot.drivetrain); + requires(Robot.visionLiftGear); + + } + + // Called just before this Command runs the first time + protected void initialize() { + Robot.visionLiftGear.putGearIsCentered(false); + Robot.visionLiftGear.putGearHasTarget(false); + Robot.visionLiftGear.putGearAtDistance(false); + Robot.visionLiftGear.putGearCounter(0); + Robot.visionLiftGear.putGearCurrentCenter(0); + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + + Robot.visionLiftGear.gearProcessData(); + rotate = Robot.visionLiftGear.gearGetRotate(); + moveSpeed = Robot.visionLiftGear.gearGetMove(); // was + made - + + + Robot.drivetrain.haloDrive(-1 * moveSpeed, rotate, false); + + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + if (Robot.visionLiftGear.getGearCounter() >= AutoConstants.SWEEP3_MAX){ + + return true; + } + //Check if the sonar distance is less then the target Distance, end +// if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.wasCentered()){ +// if (Robot.visionProcessor.isAtY() && Robot.visionProcessor.wasCentered()){ + if (Robot.visionLiftGear.gearIsAtDistance() && Robot.visionLiftGear.gearIsCentered()){ + return true; + } +// else if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.isHasTarget()) { + else if (Robot.visionLiftGear.gearIsAtDistance() && Robot.visionLiftGear.gearIsHasTarget()) { + return false; + } + + return false; + + } + + // Called once after isFinished returns true + protected void end() { + Robot.drivetrain.stop(); + Robot.visionLiftGear.putGearCounter(0); + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + end(); + } +} diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java index b4b914b..5f93f22 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java @@ -24,25 +24,25 @@ public class RotateAndDriveToLift extends Command { public RotateAndDriveToLift() { // Use requires() here to declare subsystem dependencies requires(Robot.drivetrain); - requires(Robot.visionLift); + requires(Robot.visionLiftGear); } // Called just before this Command runs the first time protected void initialize() { - Robot.visionLift.putLiftIsCentered(false); - Robot.visionLift.putLiftHasTarget(false); - Robot.visionLift.putLiftAtDistance(false); - Robot.visionLift.putLiftCounter(0); - Robot.visionLift.putLiftCurrentCenter(0); + Robot.visionLiftGear.putLiftIsCentered(false); + Robot.visionLiftGear.putLiftHasTarget(false); + Robot.visionLiftGear.putLiftAtDistance(false); + Robot.visionLiftGear.putLiftCounter(0); + Robot.visionLiftGear.putLiftCurrentCenter(0); } // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.visionLift.liftProcessData(); - rotate = Robot.visionLift.liftGetRotate(); - moveSpeed = Robot.visionLift.liftGetMove(); + Robot.visionLiftGear.liftProcessData(); + rotate = Robot.visionLiftGear.liftGetRotate(); + moveSpeed = Robot.visionLiftGear.liftGetMove(); Robot.drivetrain.haloDrive(-1 * moveSpeed, rotate, false); @@ -51,18 +51,18 @@ protected void execute() { // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { - if (Robot.visionLift.getLiftCounter() >= AutoConstants.SWEEP3_MAX){ + if (Robot.visionLiftGear.getLiftCounter() >= AutoConstants.SWEEP3_MAX){ return true; } //Check if the sonar distance is less then the target Distance, end // if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.wasCentered()){ // if (Robot.visionProcessor.isAtY() && Robot.visionProcessor.wasCentered()){ - if (Robot.visionLift.liftIsAtDistance() && Robot.visionLift.liftIsCentered()){ + if (Robot.visionLiftGear.liftIsAtDistance() && Robot.visionLiftGear.liftIsCentered()){ return true; } // else if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.isHasTarget()) { - else if (Robot.visionLift.liftIsAtDistance() && Robot.visionLift.liftIsHasTarget()) { + else if (Robot.visionLiftGear.liftIsAtDistance() && Robot.visionLiftGear.liftIsHasTarget()) { return false; } @@ -73,7 +73,7 @@ else if (Robot.visionLift.liftIsAtDistance() && Robot.visionLift.liftIsHasTarget // Called once after isFinished returns true protected void end() { Robot.drivetrain.stop(); - Robot.visionLift.putLiftCounter(0); + Robot.visionLiftGear.putLiftCounter(0); } // Called when another command which requires one or more of the same diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/AquireGear.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/AquireGear.java new file mode 100644 index 0000000..7da6daa --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/AquireGear.java @@ -0,0 +1,47 @@ +package org.usfirst.frc.team708.robot.commands.intake_gear; + +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistanceOrTimeOrGear; +import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegrees; + +import edu.wpi.first.wpilibj.command.CommandGroup; +import edu.wpi.first.wpilibj.command.WaitCommand; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; + +public class AquireGear extends CommandGroup { + + + private static final double driveStraightSpeed = 0.4; + private static final double driveStraightTime = 2; + + private static final double turnSpeed = -0.4; + private static final double turnDegrees = 90; + + // Called just before this Command runs the first time + protected void initialize() { +// Robot.drivetrain.resetEncoder(); +// Robot.drivetrain.resetEncoder2(); +// Robot.drivetrain.resetGyro(); + + } + + public AquireGear() { + + addParallel(new DriveStraightToEncoderDistanceOrTimeOrGear(24, .4, false, 2)); + addParallel(new Intake_Gear_In()); + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return false; + } + + // Called once after isFinished returns true + protected void end() { + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + } +} diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java b/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java index e3d6393..302deb3 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java @@ -28,15 +28,18 @@ public ManualShoot() { // Called just before this Command runs the first time protected void initialize() { - if (Robot.drivetrain.getSonarDistance() > 60) + if (Robot.drivetrain.getSonarDistance() > Constants.SHOOTER_CLOSE_SHOT) { - Robot.shooter.moveHood(Constants.HOOD_GEAR); - Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_HIGH); + Robot.shooter.moveHood(Constants.HOOD_LEVER); + Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_LEVER); + Robot.shooter.setSpinSpeed(Constants.SHOOTER_MOTOR_SPEED_LEVER); } else { - Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_LOW); - Robot.shooter.moveHood(Constants.HOOD_BUMBER); + Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_BOILER); + Robot.shooter.moveHood(Constants.HOOD_BOILER); + Robot.shooter.setSpinSpeed(Constants.SHOOTER_MOTOR_SPEED_BOILER); + } // Robot.shooter.setFgain(Constants.SHOOTER_F); @@ -44,6 +47,7 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { + Robot.shooter.manualRPM(Robot.shooter.getSpinSpeed()); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java index 26252b8..0bb9ca3 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java @@ -24,7 +24,8 @@ public MoveHoodHigh() { // Called just before this Command runs the first time protected void initialize() { - Robot.shooter.moveHood(Constants.HOOD_GEAR); // 2000 is upper bounds + Robot.shooter.moveHood(Constants.HOOD_LEVER); // 2000 is upper bounds + Robot.shooter.setSpinSpeed(Constants.SHOOTER_MOTOR_SPEED_LEVER); } // Called repeatedly 50 times/sec diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java index 5311ca9..60b5856 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java @@ -24,7 +24,8 @@ public MoveHoodLow() { // Called just before this Command runs the first time protected void initialize() { - Robot.shooter.moveHood(Constants.HOOD_BUMBER); // 25 is the lower bounds + Robot.shooter.moveHood(Constants.HOOD_BOILER); // 25 is the lower bounds + Robot.shooter.setSpinSpeed(Constants.SHOOTER_MOTOR_SPEED_BOILER); } // Called repeatedly 50 times/sec when this Command is scheduled to run diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java index 054c511..c59485a 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java @@ -29,13 +29,13 @@ protected void initialize() { // Robot.shooter.setFgain(Constants.SHOOTER_F); if (Robot.drivetrain.getSonarDistance() > 60) { - Robot.shooter.moveHood(Constants.HOOD_GEAR); - Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_HIGH); + Robot.shooter.moveHood(Constants.HOOD_LEVER); + Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_LEVER); } else { - Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_LOW); - Robot.shooter.moveHood(Constants.HOOD_BUMBER); + Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_BOILER); + Robot.shooter.moveHood(Constants.HOOD_BOILER); } } diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java index 22ea50f..f494825 100644 --- a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java @@ -28,7 +28,6 @@ public class GripPipelineBoiler implements VisionPipeline { //Outputs - private Mat resizeImageOutput = new Mat(); private Mat hsvThresholdOutput = new Mat(); private ArrayList findContoursOutput = new ArrayList(); private ArrayList filterContoursOutput = new ArrayList(); @@ -41,18 +40,11 @@ public class GripPipelineBoiler implements VisionPipeline { * This is the primary method that runs the entire pipeline and updates the outputs. */ @Override public void process(Mat source0) { - // Step Resize_Image0: - Mat resizeImageInput = source0; - double resizeImageWidth = 320.0; - double resizeImageHeight = 240.0; - int resizeImageInterpolation = Imgproc.INTER_CUBIC; - resizeImage(resizeImageInput, resizeImageWidth, resizeImageHeight, resizeImageInterpolation, resizeImageOutput); - // Step HSV_Threshold0: - Mat hsvThresholdInput = resizeImageOutput; - double[] hsvThresholdHue = {42.27265664824891, 90.94208970248812}; - double[] hsvThresholdSaturation = {0.26396448750718715, 85.55406687658572}; - double[] hsvThresholdValue = {249.03776978417267, 255.0}; + Mat hsvThresholdInput = source0; + double[] hsvThresholdHue = {37.7043113245079, 87.30572606612448}; + double[] hsvThresholdSaturation = {73.37877589563281, 254.9818279249991}; + double[] hsvThresholdValue = {56.50179856115108, 255.0}; hsvThreshold(hsvThresholdInput, hsvThresholdHue, hsvThresholdSaturation, hsvThresholdValue, hsvThresholdOutput); // Step Find_Contours0: @@ -62,29 +54,21 @@ public class GripPipelineBoiler implements VisionPipeline { // Step Filter_Contours0: ArrayList filterContoursContours = findContoursOutput; - double filterContoursMinArea = 65.0; - double filterContoursMinPerimeter = 65.0; - double filterContoursMinWidth = 15.0; - double filterContoursMaxWidth = 70.0; - double filterContoursMinHeight = 5.0; - double filterContoursMaxHeight = 30.0; - double[] filterContoursSolidity = {35.07194244604317, 100}; - double filterContoursMaxVertices = 1000000.0; - double filterContoursMinVertices = 0.0; - double filterContoursMinRatio = 2.0; - double filterContoursMaxRatio = 5.0; + double filterContoursMinArea = 30.0; + double filterContoursMinPerimeter = 0; + double filterContoursMinWidth = 0; + double filterContoursMaxWidth = 1000; + double filterContoursMinHeight = 0; + double filterContoursMaxHeight = 1000; + double[] filterContoursSolidity = {0, 100}; + double filterContoursMaxVertices = 1000000; + double filterContoursMinVertices = 0; + double filterContoursMinRatio = 0.0; + double filterContoursMaxRatio = 50.0; filterContours(filterContoursContours, filterContoursMinArea, filterContoursMinPerimeter, filterContoursMinWidth, filterContoursMaxWidth, filterContoursMinHeight, filterContoursMaxHeight, filterContoursSolidity, filterContoursMaxVertices, filterContoursMinVertices, filterContoursMinRatio, filterContoursMaxRatio, filterContoursOutput); } - /** - * This method is a generated getter for the output of a Resize_Image. - * @return Mat output from Resize_Image. - */ - public Mat resizeImageOutput() { - return resizeImageOutput; - } - /** * This method is a generated getter for the output of a HSV_Threshold. * @return Mat output from HSV_Threshold. @@ -110,19 +94,6 @@ public ArrayList filterContoursOutput() { } - /** - * Scales and image to an exact size. - * @param input The image on which to perform the Resize. - * @param width The width of the output in pixels. - * @param height The height of the output in pixels. - * @param interpolation The type of interpolation. - * @param output The image in which to store the output. - */ - private void resizeImage(Mat input, double width, double height, - int interpolation, Mat output) { - Imgproc.resize(input, output, new Size(width, height), 0.0, 0.0, interpolation); - } - /** * Segment an image based on hue, saturation, and value ranges. * diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java new file mode 100644 index 0000000..cf4bc36 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java @@ -0,0 +1,286 @@ +package org.usfirst.frc.team708.robot.commands.visionProcessor; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.HashMap; + +import edu.wpi.first.wpilibj.vision.VisionPipeline; + +import org.opencv.core.*; +import org.opencv.core.Core.*; +import org.opencv.features2d.FeatureDetector; +import org.opencv.imgcodecs.Imgcodecs; +import org.opencv.imgproc.*; +import org.opencv.objdetect.*; + +/** +* GripPipelineLiftGear class. +* +*

      An OpenCV pipeline generated by GRIP. +* +* @author GRIP +*/ +public class GripPipelineLiftGear implements VisionPipeline { + + //Outputs + private Mat resizeImageOutput = new Mat(); + private Mat hslThresholdOutput = new Mat(); + private ArrayList findContours0Output = new ArrayList(); + private ArrayList filterContours0Output = new ArrayList(); + private Mat rgbThresholdOutput = new Mat(); + private ArrayList findContours1Output = new ArrayList(); + private ArrayList filterContours1Output = new ArrayList(); + + static { + System.loadLibrary(Core.NATIVE_LIBRARY_NAME); + } + + /** + * This is the primary method that runs the entire pipeline and updates the outputs. + */ + @Override public void process(Mat source0) { + // Step Resize_Image0: + Mat resizeImageInput = source0; + double resizeImageWidth = 320.0; + double resizeImageHeight = 240.0; + int resizeImageInterpolation = Imgproc.INTER_CUBIC; + resizeImage(resizeImageInput, resizeImageWidth, resizeImageHeight, resizeImageInterpolation, resizeImageOutput); + + // Step HSL_Threshold0: + Mat hslThresholdInput = resizeImageOutput; + double[] hslThresholdHue = {0.0, 42.12121212121212}; + double[] hslThresholdSaturation = {0.0, 57.52525252525252}; + double[] hslThresholdLuminance = {222.4370503597122, 255.0}; + hslThreshold(hslThresholdInput, hslThresholdHue, hslThresholdSaturation, hslThresholdLuminance, hslThresholdOutput); + + // Step Find_Contours0: + Mat findContours0Input = hslThresholdOutput; + boolean findContours0ExternalOnly = false; + findContours(findContours0Input, findContours0ExternalOnly, findContours0Output); + + // Step Filter_Contours0: + ArrayList filterContours0Contours = findContours0Output; + double filterContours0MinArea = 160.0; + double filterContours0MinPerimeter = 60.0; + double filterContours0MinWidth = 6.0; + double filterContours0MaxWidth = 70.0; + double filterContours0MinHeight = 15.0; + double filterContours0MaxHeight = 110.0; + double[] filterContours0Solidity = {40.46762589928058, 100}; + double filterContours0MaxVertices = 1000000.0; + double filterContours0MinVertices = 0.0; + double filterContours0MinRatio = 0.0; + double filterContours0MaxRatio = 5.0; + filterContours(filterContours0Contours, filterContours0MinArea, filterContours0MinPerimeter, filterContours0MinWidth, filterContours0MaxWidth, filterContours0MinHeight, filterContours0MaxHeight, filterContours0Solidity, filterContours0MaxVertices, filterContours0MinVertices, filterContours0MinRatio, filterContours0MaxRatio, filterContours0Output); + + // Step RGB_Threshold0: + Mat rgbThresholdInput = resizeImageOutput; + double[] rgbThresholdRed = {138.23671831765355, 255.0}; + double[] rgbThresholdGreen = {138.47191477587162, 255.0}; + double[] rgbThresholdBlue = {41.276978417266186, 117.23666459111665}; + rgbThreshold(rgbThresholdInput, rgbThresholdRed, rgbThresholdGreen, rgbThresholdBlue, rgbThresholdOutput); + + // Step Find_Contours1: + Mat findContours1Input = rgbThresholdOutput; + boolean findContours1ExternalOnly = false; + findContours(findContours1Input, findContours1ExternalOnly, findContours1Output); + + // Step Filter_Contours1: + ArrayList filterContours1Contours = findContours1Output; + double filterContours1MinArea = 100.0; + double filterContours1MinPerimeter = 0.0; + double filterContours1MinWidth = 0.0; + double filterContours1MaxWidth = 1000.0; + double filterContours1MinHeight = 0.0; + double filterContours1MaxHeight = 998.0; + double[] filterContours1Solidity = {0.0, 100.0}; + double filterContours1MaxVertices = 1000000.0; + double filterContours1MinVertices = 0.0; + double filterContours1MinRatio = 0.0; + double filterContours1MaxRatio = 1000.0; + filterContours(filterContours1Contours, filterContours1MinArea, filterContours1MinPerimeter, filterContours1MinWidth, filterContours1MaxWidth, filterContours1MinHeight, filterContours1MaxHeight, filterContours1Solidity, filterContours1MaxVertices, filterContours1MinVertices, filterContours1MinRatio, filterContours1MaxRatio, filterContours1Output); + + } + + /** + * This method is a generated getter for the output of a Resize_Image. + * @return Mat output from Resize_Image. + */ + public Mat resizeImageOutput() { + return resizeImageOutput; + } + + /** + * This method is a generated getter for the output of a HSL_Threshold. + * @return Mat output from HSL_Threshold. + */ + public Mat hslThresholdOutput() { + return hslThresholdOutput; + } + + /** + * This method is a generated getter for the output of a Find_Contours. + * @return ArrayList output from Find_Contours. + */ + public ArrayList findContours0Output() { + return findContours0Output; + } + + /** + * This method is a generated getter for the output of a Filter_Contours. + * @return ArrayList output from Filter_Contours. + */ + public ArrayList filterContours0Output() { + return filterContours0Output; + } + + /** + * This method is a generated getter for the output of a RGB_Threshold. + * @return Mat output from RGB_Threshold. + */ + public Mat rgbThresholdOutput() { + return rgbThresholdOutput; + } + + /** + * This method is a generated getter for the output of a Find_Contours. + * @return ArrayList output from Find_Contours. + */ + public ArrayList findContours1Output() { + return findContours1Output; + } + + /** + * This method is a generated getter for the output of a Filter_Contours. + * @return ArrayList output from Filter_Contours. + */ + public ArrayList filterContours1Output() { + return filterContours1Output; + } + + + /** + * Scales and image to an exact size. + * @param input The image on which to perform the Resize. + * @param width The width of the output in pixels. + * @param height The height of the output in pixels. + * @param interpolation The type of interpolation. + * @param output The image in which to store the output. + */ + private void resizeImage(Mat input, double width, double height, + int interpolation, Mat output) { + Imgproc.resize(input, output, new Size(width, height), 0.0, 0.0, interpolation); + } + + /** + * Segment an image based on hue, saturation, and luminance ranges. + * + * @param input The image on which to perform the HSL threshold. + * @param hue The min and max hue + * @param sat The min and max saturation + * @param lum The min and max luminance + * @param output The image in which to store the output. + */ + private void hslThreshold(Mat input, double[] hue, double[] sat, double[] lum, + Mat out) { + Imgproc.cvtColor(input, out, Imgproc.COLOR_BGR2HLS); + Core.inRange(out, new Scalar(hue[0], lum[0], sat[0]), + new Scalar(hue[1], lum[1], sat[1]), out); + } + + /** + * Segment an image based on color ranges. + * @param input The image on which to perform the RGB threshold. + * @param red The min and max red. + * @param green The min and max green. + * @param blue The min and max blue. + * @param output The image in which to store the output. + */ + private void rgbThreshold(Mat input, double[] red, double[] green, double[] blue, + Mat out) { + Imgproc.cvtColor(input, out, Imgproc.COLOR_BGR2RGB); + Core.inRange(out, new Scalar(red[0], green[0], blue[0]), + new Scalar(red[1], green[1], blue[1]), out); + } + + /** + * Sets the values of pixels in a binary image to their distance to the nearest black pixel. + * @param input The image on which to perform the Distance Transform. + * @param type The Transform. + * @param maskSize the size of the mask. + * @param output The image in which to store the output. + */ + private void findContours(Mat input, boolean externalOnly, + List contours) { + Mat hierarchy = new Mat(); + contours.clear(); + int mode; + if (externalOnly) { + mode = Imgproc.RETR_EXTERNAL; + } + else { + mode = Imgproc.RETR_LIST; + } + int method = Imgproc.CHAIN_APPROX_SIMPLE; + Imgproc.findContours(input, contours, hierarchy, mode, method); + } + + + /** + * Filters out contours that do not meet certain criteria. + * @param inputContours is the input list of contours + * @param output is the the output list of contours + * @param minArea is the minimum area of a contour that will be kept + * @param minPerimeter is the minimum perimeter of a contour that will be kept + * @param minWidth minimum width of a contour + * @param maxWidth maximum width + * @param minHeight minimum height + * @param maxHeight maximimum height + * @param Solidity the minimum and maximum solidity of a contour + * @param minVertexCount minimum vertex Count of the contours + * @param maxVertexCount maximum vertex Count + * @param minRatio minimum ratio of width to height + * @param maxRatio maximum ratio of width to height + */ + private void filterContours(List inputContours, double minArea, + double minPerimeter, double minWidth, double maxWidth, double minHeight, double + maxHeight, double[] solidity, double maxVertexCount, double minVertexCount, double + minRatio, double maxRatio, List output) { + final MatOfInt hull = new MatOfInt(); + output.clear(); + //operation + for (int i = 0; i < inputContours.size(); i++) { + final MatOfPoint contour = inputContours.get(i); + final Rect bb = Imgproc.boundingRect(contour); + if (bb.width < minWidth || bb.width > maxWidth) continue; + if (bb.height < minHeight || bb.height > maxHeight) continue; + final double area = Imgproc.contourArea(contour); + if (area < minArea) continue; + if (Imgproc.arcLength(new MatOfPoint2f(contour.toArray()), true) < minPerimeter) continue; + Imgproc.convexHull(contour, hull); + MatOfPoint mopHull = new MatOfPoint(); + mopHull.create((int) hull.size().height, 1, CvType.CV_32SC2); + for (int j = 0; j < hull.size().height; j++) { + int index = (int)hull.get(j, 0)[0]; + double[] point = new double[] { contour.get(index, 0)[0], contour.get(index, 0)[1]}; + mopHull.put(j, 0, point); + } + final double solid = 100 * area / Imgproc.contourArea(mopHull); + if (solid < solidity[0] || solid > solidity[1]) continue; + if (contour.rows() < minVertexCount || contour.rows() > maxVertexCount) continue; + final double ratio = bb.width / (double)bb.height; + if (ratio < minRatio || ratio > maxRatio) continue; + output.add(contour); + } + } + + + + +} + diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java index 44e18d9..d46b09d 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java @@ -31,6 +31,7 @@ public class Shooter extends Subsystem { private CANTalon shooter, shooterSlave; // Motor Controllers private Servo hood; private int hoodLocation; + private int spinSpeed; /** * Constructor @@ -62,6 +63,7 @@ public Shooter() { hood = new Servo(RobotMap.hoodAngle); hoodLocation = Constants.HOOD_MIN; + spinSpeed = 0; } public void initDefaultCommand() { @@ -82,6 +84,16 @@ public void manualRPM(double rpm) { // shooter.setF(F); // } + public void setSpinSpeed(int speed) + { + spinSpeed = speed; + } + + public int getSpinSpeed() + { + return(spinSpeed); + } + public void stop(){ shooter.set(Constants.MOTOR_OFF); } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java index c742d88..0f36b2a 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java @@ -1,6 +1,7 @@ package org.usfirst.frc.team708.robot.subsystems; import org.opencv.core.Rect; +import edu.wpi.cscore.AxisCamera; import org.opencv.imgproc.Imgproc; import org.usfirst.frc.team708.robot.AutoConstants; @@ -34,6 +35,8 @@ public class VisionBoiler extends Subsystem { private final Object imgLockBoiler = new Object(); // vision boiler object private UsbCamera usbCameraBoiler; // USB Camera + private AxisCamera axisCameraBoiler; // Axis Camera + private CvSource outputStreamBoiler; // Output stream to the Dashboard @@ -51,21 +54,21 @@ public class VisionBoiler extends Subsystem { private boolean boilerHasTarget = false; // flag indicating whether the robot sees the target private boolean boilerIsCentered = false; // flag indicating whether the robot sees the center of the target private boolean boilerIsAtDistance = false; // flag indicating whether the robot is at the correct distance from the target - private boolean boilerIsAtHeight = false; // Determine if the robot is at height (eyy, that's the name of the boolean!) +// private boolean boilerIsAtHeight = false; // Determine if the robot is at height (eyy, that's the name of the boolean!) - private int boilerTargetHeight = AutoConstants.BOILER_TARGET_HEIGHT; //actual height of the boilers tape - private int boilerTargetWidth = AutoConstants.BOILER_TARGET_WIDTH; //actual width of the boilers tape +// private int boilerTargetHeight = AutoConstants.BOILER_TARGET_HEIGHT; //actual height of the boilers tape +// private int boilerTargetWidth = AutoConstants.BOILER_TARGET_WIDTH; //actual width of the boilers tape private double trueCenter = bImageWidth/2; // horizontal value of the center of the target - private double boilerDistanceToStop = 0.0; // distance to stop at in front of lift target +// private double boilerDistanceToStop = 0.0; // distance to stop at in front of lift target private double boilerCurrentCenter = 0.0; // horizontal value of where robot is looking private double boilerCurrentDistance = 0.0; // distance robot is from the target - private double boilerStopAtHeight = 0.0; // distance to stop at based on height +// private double boilerStopAtHeight = 0.0; // distance to stop at based on height private double boilerStopAtDistance = 0.0; // distance to stop at based on sonar private double thresholdX = AutoConstants.X_THRESHOLD_CENTER; // threshold for determining center of the target - private double thresholdDistance = AutoConstants.DISTANCE_TARGET_THRESHOLD; // threshold for determining threshold for stopping at the lift peg + private double thresholdDistance = AutoConstants.DISTANCE_TARGET_THRESHOLD; // threshold for determining threshold for stopping at the target private double minThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MIN; // threshold for determining min value for whether the robot sees the target private double maxThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MAX; // threshold for determining max value for whether the robot sees the target @@ -87,9 +90,11 @@ public VisionBoiler() { super("Vision Processor"); - // define the Cameras: - usbCameraBoiler=CameraServer.getInstance().startAutomaticCapture("cam0", 0); -// axisCamera.setResolution(imageWidth, imageHeight); + // define the Cameras: -- + axisCameraBoiler=CameraServer.getInstance().addAxisCamera(AutoConstants.AXIS_CAMERA_ID, AutoConstants.AXIS_IP_ADDRESS); + +// usbCameraBoiler=CameraServer.getInstance().startAutomaticCapture("cam0", 0); + axisCameraBoiler.setResolution(bImageWidth, bImageHeight); // define the output stream on the smart dashboard @@ -97,18 +102,18 @@ public VisionBoiler() { // Vision thread which processes the image contours - visionThreadBoiler = new VisionThread(usbCameraBoiler, new GripPipelineBoiler(), pipeline -> { - bPipelineSize = pipeline.filterContoursOutput().size(); + visionThreadBoiler = new VisionThread(axisCameraBoiler, new GripPipelineBoiler(), boilerPipeline -> { + bPipelineSize = boilerPipeline.filterContoursOutput().size(); // if the grip pipeline filter "filterContoursOutput" sees the target // loop through each contour image // grab the bounding rectangle values of each contour // to create the biggest rectangle around the 2 vertical retroreflective tapes // on either side of the lift peg - if (!pipeline.filterContoursOutput().isEmpty()) { + if (!boilerPipeline.filterContoursOutput().isEmpty()) { - for (int i = 0; i < pipeline.filterContoursOutput().size(); i++) { - Rect r = Imgproc.boundingRect(pipeline.filterContoursOutput().get(i)); + for (int i = 0; i < boilerPipeline.filterContoursOutput().size(); i++) { + Rect r = Imgproc.boundingRect(boilerPipeline.filterContoursOutput().get(i)); // set the min/max values to match the values form the 1st image if (i == 0) { @@ -163,7 +168,7 @@ public VisionBoiler() { // display the current image on the driver station if (Constants.DEBUG){ - outputStreamBoiler.putFrame(pipeline.hsvThresholdOutput()); + outputStreamBoiler.putFrame(boilerPipeline.hsvThresholdOutput()); } } @@ -204,7 +209,10 @@ public void boilerProcessData() { try { // use the sonar to get the distance from the target (backup plan if camera distance not available) - boilerCurrentDistance = Robot.drivetrain.getSonarDistance(); + +//UPDATE THIS TO FIX DISTANCE + boilerCurrentDistance = Robot.drivetrain.getSonarDistance() - 22; + putBoilerCurrentDistance(boilerCurrentDistance); // if robot sees the target (current X between its min and max) if ((boilerCurrentCenter > minThresholdX) && (boilerCurrentCenter < maxThresholdX)) { @@ -271,8 +279,8 @@ public double boilerGetRotate() { else if (boilerHasTarget && !boilerIsCentered){ difference = trueCenter - (boilerCurrentCenter); - boilerRotate = Math708.getSignClippedPercentError(boilerCurrentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); - + boilerRotate = Math708.getClippedPercentError(boilerCurrentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); + boilerRotate = .3; if (Math.abs(difference) > thresholdX) { if (boilerCurrentCenter < trueCenter){ @@ -315,6 +323,7 @@ else if (boilerSweepDirection > AutoConstants.SWEEP1_MIN){ boilerSweepCounter++; } boilerRotateDiff = difference; + return boilerRotate; } @@ -328,10 +337,17 @@ public double boilerGetMove() { // Method to determine whether the robot is at the correct distance to the target so stop if (boilerHasTarget) { + //maxY is used as height of the target - double difference = boilerDistanceToStop - bmaxY; - boilerMove = Math708.getSignClippedPercentError(bmaxY, boilerStopAtDistance, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); - + double difference = boilerStopAtDistance - boilerCurrentDistance; + + boilerMove = Math708.getClippedPercentError(boilerCurrentDistance, boilerStopAtDistance, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); + boilerMove = .3; + //if the target distance is farther than the current distance move backwards + if(difference >= 0){ + boilerMove = boilerMove * -1; + } + //Check if target is at correct distance within threshold if (Math.abs(difference) <= thresholdDistance) { boilerMove = 0.0; @@ -343,7 +359,7 @@ public double boilerGetMove() { } else { boilerMove = 0.0; } - + return boilerMove; } @@ -362,7 +378,8 @@ public double boilerGetMove() { */ public boolean boilerIsAtDistance() { - double difference = boilerStopAtDistance - Robot.drivetrain.getSonarDistance(); + double difference = boilerStopAtDistance - getBoilerCurrentDistance(); + SmartDashboard.putNumber("difference in IsAtDistance", difference); //Check if target is at correct level within threshold if (Math.abs(difference) <= thresholdDistance) { boilerIsAtDistance = true; @@ -406,6 +423,10 @@ public int getBoilerCounter() { return boilerSweepCounter; } + public double getBoilerCurrentDistance() { + return boilerCurrentDistance; + } + public void putBoilerCounter(int ct) { boilerSweepCounter = ct; } @@ -419,6 +440,12 @@ public void putBoilerStopAtDistance (double sad) { // :( } + public void putBoilerCurrentDistance (double cd) { + boilerCurrentDistance = cd; + // :( + } + + public void putBoilerAtDistance(boolean ad) { boilerIsAtDistance = ad; } @@ -436,7 +463,9 @@ public boolean boilerIsInSweep() { public void sendToDashboard() { if (Constants.BOILER_DEBUG) { + SmartDashboard.putNumber("b-True Center", trueCenter); SmartDashboard.putBoolean("b-Has Target", boilerIsHasTarget()); + SmartDashboard.putBoolean("b-IsAtDistance", boilerIsAtDistance()); SmartDashboard.putNumber("b-Center of Target", boilerCurrentCenter); SmartDashboard.putNumber("b-Rotation", boilerRotate); SmartDashboard.putNumber("b-Rotate Difference", boilerRotateDiff); @@ -445,12 +474,14 @@ public void sendToDashboard() { SmartDashboard.putNumber("b-SweepDirection", boilerSweepDirection); SmartDashboard.putBoolean("b-isCentered", boilerIsCentered()); SmartDashboard.putNumber("b-rectX", brectX); + SmartDashboard.putNumber("b-maxY", bmaxY); SmartDashboard.putNumber("b-rectY", brectY); SmartDashboard.putNumber("b-rectWidth", brectWidth); SmartDashboard.putNumber("b-rectHeight", brectHeight); SmartDashboard.putNumber("b-Distance To Target", boilerCurrentDistance); SmartDashboard.putNumber("b-pipelineSize", bPipelineSize); SmartDashboard.putNumber("b-stop at distance", boilerStopAtDistance); + } } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java index 69f7a02..4e7ca3e 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java @@ -1,425 +1,425 @@ -package org.usfirst.frc.team708.robot.subsystems; - -import org.opencv.core.Rect; -import org.opencv.imgproc.Imgproc; -import org.usfirst.frc.team708.robot.AutoConstants; - -import org.usfirst.frc.team708.robot.Constants; -import org.usfirst.frc.team708.robot.Robot; -import org.usfirst.frc.team708.robot.commands.visionProcessor.GripPipelineLift; -import org.usfirst.frc.team708.robot.util.Math708; - -import edu.wpi.cscore.AxisCamera; -import edu.wpi.cscore.CvSource; -import edu.wpi.cscore.UsbCamera; -import edu.wpi.first.wpilibj.CameraServer; -import edu.wpi.first.wpilibj.command.Subsystem; -import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; -import edu.wpi.first.wpilibj.tables.TableKeyNotDefinedException; -import edu.wpi.first.wpilibj.vision.VisionThread; - -/** - *@authors Viet & Sue - *This subsystem is specific to the 2017 Game FIRST Steamworks Lift Peg - */ - -public class VisionLift extends Subsystem { - - // Camera Variables - private double fovDegrees = AutoConstants.USB_LIFT_FOV_DEGREES; // Field of View of the Camera - private double liftPipelineSize; // Number of Contours in the Pipline- 0 = target not in view - private int liftImageWidth = AutoConstants.USB_LIFT_IMG_WIDTH; // Width of image from camera stream - private int liftImageHeight = AutoConstants.USB_LIFT_IMG_HEIGHT; // Height of image from camera stream - - // Image OpenCV Image Processing Variables - private VisionThread visionThreadLift; // vision processing thread - processes grip code - private final Object imgLockLift = new Object(); // vision Lift object - -// private AxisCamera axisCamera; // Axis Camera - private UsbCamera usbCameraLift; // USB Camera - private CvSource outputStreamLift; // Output stream to the Dashboard - - - // Targeting variables - private int lrectX = 0; // the 4 values used which define the full rectangle around the target - private int lrectY = 0; - private int lrectWidth = 0; - private int lrectHeight = 0; - - private int lminX = 0; // the 4 values used to create maximum rectangle around the target (used when evaluating each of the contour images) - private int lminY = 0; - private int lmaxX = 0; - private int lmaxY = 0; - - private boolean liftHasTarget = false; // flag indicating whether the robot sees the target - private boolean liftIsCentered = false; // flag indicating whether the robot sees the center of the target - private boolean liftIsAtDistance = false; // flag indicating whether the robot is at the correct distance from the target - - - private int liftTargetHeight = AutoConstants.LIFT_TARGET_HEIGHT; //height of actual target reflective tape - private int liftTargetWidth = AutoConstants.LIFT_TARGET_WIDTH; //width of actual target reflective tape - - private double trueCenter = liftImageWidth/2; // horizontal value of the center of the camera image - private double liftDistanceToStop = AutoConstants.DISTANCE_TO_LIFT_TARGET; // distance to stop at in front of lift target - private double liftCurrentCenter = 0.0; // horizontal value of where robot is looking - private double liftCurrentDistance = 0.0; // distance robot is from the target - - private double thresholdX = AutoConstants.X_THRESHOLD_CENTER; // threshold for determining center of the target - private double thresholdDistance = AutoConstants.DISTANCE_TARGET_THRESHOLD; // threshold for determining threshold for stopping at the lift peg - private double minThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MIN; // threshold for determining min value for whether the robot sees the target - private double maxThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MAX; // threshold for determining max value for whether the robot sees the target - - - // Sweep Variables - private boolean liftInSweep = false; // flag indicating whether the robot is sweeping left and right looking for the target - private double liftSweepDirection = 0.0; // value indicating the direction of the sweep -1 = right; 1 = left - private int liftSweepCounter = 0; // value indicating when the sweep will change direction - - - // drive variables - private double liftRotateDiff = 0; // for smartdashboard - how far away from center - private double liftMoveDiff = 0; // for smartdashboard - how far away from target - double rotate; // speed of the rotate being returned to the command - double move; // speed of the move forward being returned to the command - - // Vision Processing - public VisionLift() { - super("Vision Processor"); - - - // define the Cameras: - // on little bot - cam2, 1 - usbCameraLift=CameraServer.getInstance().startAutomaticCapture("cam1", 1); -// axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); - usbCameraLift.setResolution(liftImageWidth, liftImageHeight); - - - // define the output stream on the smart dashboard - outputStreamLift = CameraServer.getInstance().putVideo("Target", liftImageWidth, liftImageHeight); - - // Vision thread which processes the image contours - visionThreadLift = new VisionThread(usbCameraLift, new GripPipelineLift(), lPipeline -> { - liftPipelineSize = lPipeline.filterContoursOutput().size(); - - // if the grip pipeline filter "filterContoursOutput" sees the target - // loop through each contour image - // grab the bounding rectangle values of each contour - // to create the biggest rectangle around the 2 vertical retroreflective tapes - // on either side of the lift peg - if (!lPipeline.filterContoursOutput().isEmpty()) { - - for (int i = 0; i < lPipeline.filterContoursOutput().size(); i++) { - Rect r = Imgproc.boundingRect(lPipeline.filterContoursOutput().get(i)); - - // set the min/max values to match the values form the 1st image - if (i == 0) { - lminX = r.x; - lminY = r.y; - lmaxX = r.x + r.width; - lmaxY = r.y + r.height; - } - - // compare each value to the min/max and replace if a better one is found - if (r.x < lminX) { - lminX = r.x; - } - if (r.y < lminY) { - lminY = r.y; - } - if (r.x + r.width > lmaxX) { - lmaxX = r.x + r.width; - } - if (r.y + r.height> lmaxY) { - lmaxY = r.y + r.height; - } - } - -// // this is a second method of looping through the contours in the filterContoursOutput Array of Mat Images -// for (MatOfPoint contour : pipeline.filterContoursOutput()) { -// Rect r = Imgproc.boundingRect(contour); -// if (r.x < minX) { -// minX = r.x; -// } +//package org.usfirst.frc.team708.robot.subsystems; +// +//import org.opencv.core.Rect; +//import org.opencv.imgproc.Imgproc; +//import org.usfirst.frc.team708.robot.AutoConstants; +// +//import org.usfirst.frc.team708.robot.Constants; +//import org.usfirst.frc.team708.robot.Robot; +//import org.usfirst.frc.team708.robot.commands.visionProcessor.GripPipelineLift; +//import org.usfirst.frc.team708.robot.util.Math708; +// +//import edu.wpi.cscore.AxisCamera; +//import edu.wpi.cscore.CvSource; +//import edu.wpi.cscore.UsbCamera; +//import edu.wpi.first.wpilibj.CameraServer; +//import edu.wpi.first.wpilibj.command.Subsystem; +//import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; +//import edu.wpi.first.wpilibj.tables.TableKeyNotDefinedException; +//import edu.wpi.first.wpilibj.vision.VisionThread; +// +///** +// *@authors Viet & Sue +// *This subsystem is specific to the 2017 Game FIRST Steamworks Lift Peg +// */ +// +//public class VisionLift extends Subsystem { +// +// // Camera Variables +// private double fovDegrees = AutoConstants.USB_LIFT_FOV_DEGREES; // Field of View of the Camera +// private double liftPipelineSize; // Number of Contours in the Pipline- 0 = target not in view +// private int liftImageWidth = AutoConstants.USB_LIFT_IMG_WIDTH; // Width of image from camera stream +// private int liftImageHeight = AutoConstants.USB_LIFT_IMG_HEIGHT; // Height of image from camera stream +// +// // Image OpenCV Image Processing Variables +// private VisionThread visionThreadLift; // vision processing thread - processes grip code +// private final Object imgLockLift = new Object(); // vision Lift object +// +//// private AxisCamera axisCamera; // Axis Camera +// private UsbCamera usbCameraLift; // USB Camera +// private CvSource outputStreamLift; // Output stream to the Dashboard +// +// +// // Targeting variables +// private int lrectX = 0; // the 4 values used which define the full rectangle around the target +// private int lrectY = 0; +// private int lrectWidth = 0; +// private int lrectHeight = 0; +// +// private int lminX = 0; // the 4 values used to create maximum rectangle around the target (used when evaluating each of the contour images) +// private int lminY = 0; +// private int lmaxX = 0; +// private int lmaxY = 0; +// +// private boolean liftHasTarget = false; // flag indicating whether the robot sees the target +// private boolean liftIsCentered = false; // flag indicating whether the robot sees the center of the target +// private boolean liftIsAtDistance = false; // flag indicating whether the robot is at the correct distance from the target +// +// +// private int liftTargetHeight = AutoConstants.LIFT_TARGET_HEIGHT; //height of actual target reflective tape +// private int liftTargetWidth = AutoConstants.LIFT_TARGET_WIDTH; //width of actual target reflective tape +// +// private double trueCenter = liftImageWidth/2; // horizontal value of the center of the camera image +// private double liftDistanceToStop = AutoConstants.DISTANCE_TO_LIFT_TARGET; // distance to stop at in front of lift target +// private double liftCurrentCenter = 0.0; // horizontal value of where robot is looking +// private double liftCurrentDistance = 0.0; // distance robot is from the target +// +// private double thresholdX = AutoConstants.X_THRESHOLD_CENTER; // threshold for determining center of the target +// private double thresholdDistance = AutoConstants.DISTANCE_TARGET_THRESHOLD; // threshold for determining threshold for stopping at the lift peg +// private double minThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MIN; // threshold for determining min value for whether the robot sees the target +// private double maxThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MAX; // threshold for determining max value for whether the robot sees the target +// +// +// // Sweep Variables +// private boolean liftInSweep = false; // flag indicating whether the robot is sweeping left and right looking for the target +// private double liftSweepDirection = 0.0; // value indicating the direction of the sweep -1 = right; 1 = left +// private int liftSweepCounter = 0; // value indicating when the sweep will change direction +// +// +// // drive variables +// private double liftRotateDiff = 0; // for smartdashboard - how far away from center +// private double liftMoveDiff = 0; // for smartdashboard - how far away from target +// double rotate; // speed of the rotate being returned to the command +// double move; // speed of the move forward being returned to the command +// +// // Vision Processing +// public VisionLift() { +// super("Vision Processor"); +// +// +// // define the Cameras: +// // on little bot - cam2, 1 +// usbCameraLift=CameraServer.getInstance().startAutomaticCapture("cam3", 0); +//// axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); +// usbCameraLift.setResolution(liftImageWidth, liftImageHeight); +// +// +// // define the output stream on the smart dashboard +// outputStreamLift = CameraServer.getInstance().putVideo("Target_Lift", liftImageWidth, liftImageHeight); +// +// // Vision thread which processes the image contours +// visionThreadLift = new VisionThread(usbCameraLift, new GripPipelineLift(), lPipeline -> { +// liftPipelineSize = lPipeline.filterContoursOutput().size(); +// +// // if the grip pipeline filter "filterContoursOutput" sees the target +// // loop through each contour image +// // grab the bounding rectangle values of each contour +// // to create the biggest rectangle around the 2 vertical retroreflective tapes +// // on either side of the lift peg +// if (!lPipeline.filterContoursOutput().isEmpty()) { +// +// for (int i = 0; i < lPipeline.filterContoursOutput().size(); i++) { +// Rect r = Imgproc.boundingRect(lPipeline.filterContoursOutput().get(i)); +// +// // set the min/max values to match the values form the 1st image +// if (i == 0) { +// lminX = r.x; +// lminY = r.y; +// lmaxX = r.x + r.width; +// lmaxY = r.y + r.height; +// } +// +// // compare each value to the min/max and replace if a better one is found +// if (r.x < lminX) { +// lminX = r.x; +// } +// if (r.y < lminY) { +// lminY = r.y; +// } +// if (r.x + r.width > lmaxX) { +// lmaxX = r.x + r.width; +// } +// if (r.y + r.height> lmaxY) { +// lmaxY = r.y + r.height; +// } // } - - - - synchronized (imgLockLift) { - liftCurrentCenter = lminX + ((lmaxX - lminX) / 2); - - // set values for the smartdashboard - lrectX = lminX; - lrectY = lminY; - lrectWidth = lmaxX - lminX; - lrectHeight = lmaxY - lminY; - - // note - this formula was pulled from 1640's github code - need to find the specific reference - // from 1640 - //Equation to determine the distance from a target (d) given the width in pixels of a vision target in the camera image (w): - // d = (TARGET_WIDTH*CAMERA_IMAGE_WIDTH)/(2*tan(FOV_ANGLE/2)*w) - // i.e. d and w are inversely related. - liftCurrentDistance = liftTargetWidth * liftImageWidth / (2*(Math.tan(Math.toRadians(fovDegrees))/2)*lrectWidth); - - // display the current image on the driver station - - - outputStreamLift.putFrame(lPipeline.hslThresholdOutput()); - - } - } - - - - // the target is not in the camera (ie, pipeline is empty) - else { - liftHasTarget = false; - lminX = 0; - lminY = 0; - lmaxX = 0; - lmaxY = 0; - } - - }); - visionThreadLift.start(); - } - - - /* - * liftProcessData - * Method to interpret the camera data received above - */ - public void liftProcessData() { - try { - - // use the sonar to get the distance from the target (backup plan if camera distance not available) - // currentDistance=Robot.drivetrain.getSonarDistance(); - - // if robot sees the target (current X between its min and max) - if ((liftCurrentCenter > minThresholdX) && (liftCurrentCenter < maxThresholdX)) { - liftHasTarget = true; - } - else { - liftHasTarget = false; - } - - } catch (TableKeyNotDefinedException e) { - e.printStackTrace(); - } - } - - /* - * isCentered - * Method to determine whether the robot sees the center of the target (within the threshold value) - */ - public boolean liftIsCentered() { - - // if the robot sees the target - // determine whether the horizontal value the robot sees is within the threshold defining the center of the target - // set isCentered according to whether the robot is aligned with the center of the target - if (liftHasTarget) - { - - double difference = trueCenter - (liftCurrentCenter); - if (Math.abs(difference) <= thresholdX) { - liftIsCentered = true; - } - else if (Math.abs(difference) > thresholdX) { - liftIsCentered = false; - } - liftRotateDiff = difference; - } - else{ - liftIsCentered = false; - } - - return liftIsCentered; - } - - - /* - * getRotate - * Method to determine whether the robot is at the center of the target so it can drive towards target - */ - public double liftGetRotate() { - double difference=0; - - // currently we are only running 1 cycle of the sweep and stopping - // if in the future additional sweeps are required, this is where the reset should occur - // if (sweepCounter > 400){ - // sweepCounter = 0; - // } - - // if robot sees target and is centered - no need to rotate the robot - if (liftHasTarget && liftIsCentered) - { - rotate = 0.0; - } - - // if the robot sees the target but is not centered - // check to see whether the robot is within the threshold - // rotate based on the math function - else if (liftHasTarget && !liftIsCentered){ - difference = trueCenter - (liftCurrentCenter); - - rotate = Math708.getSignClippedPercentError(liftCurrentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); - - - if (Math.abs(difference) > thresholdX) { - if (liftCurrentCenter < trueCenter){ - rotate = Math.abs(rotate); - } - else { - rotate = Math.abs(rotate) * -1; - } - } - } - - // if the robot does not have the target - // begin the sweep - // sweep is defined as rotating the robot right, left, right in predefined counts - // if in the sweep the robot does not find the target, it stops after 3 sweeps - // otherwise it will jump back into the hasTarget logic identified above - else if (!liftHasTarget){ - if (Math.abs(liftSweepDirection) < .1){ - liftSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; - rotate = -AutoConstants.SWEEP_ROTATE; - } - else if (liftSweepDirection > AutoConstants.SWEEP1_MIN){ - if ((liftSweepCounter >= AutoConstants.SWEEP1_MIN && liftSweepCounter <= AutoConstants.SWEEP1_MAX) - || (liftSweepCounter >= AutoConstants.SWEEP3_MIN && liftSweepCounter <= AutoConstants.SWEEP3_MAX)){ - - rotate = -AutoConstants.SWEEP_ROTATE; - if (liftSweepCounter== AutoConstants.SWEEP1_MAX || liftSweepCounter== AutoConstants.SWEEP3_MAX){ - liftSweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; - } - } - } - else { - if (liftSweepCounter >= AutoConstants.SWEEP2_MIN && liftSweepCounter <= AutoConstants.SWEEP2_MAX) - rotate = AutoConstants.SWEEP_ROTATE; - if (liftSweepCounter== AutoConstants.SWEEP2_MAX){ - liftSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; - } - } - - liftSweepCounter++; - } - liftRotateDiff = difference; - return rotate; - } - - /* - * getMove - * Method to determine if the robot is close enough to target so it can stop - */ - - public double liftGetMove() { - - // if the robot sees the target - // Method to determine whether the robot is at the correct distance to the target so stop - if (liftHasTarget) - { - double difference = liftDistanceToStop - liftCurrentDistance; - move = Math708.getSignClippedPercentError(liftCurrentDistance, liftDistanceToStop, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); - - //Check if target is at correct distance within threshold - if (Math.abs(difference) <= thresholdDistance) { - move = 0.0; - liftIsAtDistance = true; - } else { - liftIsAtDistance = false; - } - liftMoveDiff = difference; - } else { - move = 0.0; - } - - return move; - } - - /** - * GETTERS and PUTTERS to return the private variables - * @return - */ - - - public boolean liftIsAtDistance() { - double difference = liftDistanceToStop - liftCurrentDistance; - //Check if target is at correct level within threshold - if (Math.abs(difference) <= thresholdDistance) { - liftIsAtDistance = true; - } else { - liftIsAtDistance = false; - } - return liftIsAtDistance; - } - - public boolean liftIsHasTarget() { - return liftHasTarget; - } - - public void putLiftHasTarget(boolean ht) { - liftHasTarget = ht; - } - - public void putLiftCurrentCenter(double cc) { - liftCurrentCenter = cc; - } - - public int getLiftCounter() { - return liftSweepCounter; - } - - - public void putLiftCounter(int ct) { - liftSweepCounter = ct; - } - - public void putLiftIsCentered(boolean ic) { - liftIsCentered = ic; - } - - - public void putLiftAtDistance(boolean ay) { - liftIsAtDistance = ay; - } - - - public boolean liftIsInSweep() { - if (liftHasTarget) { - liftInSweep = false; - liftSweepCounter=1; - } - else { - liftInSweep = true; - } - return liftInSweep; - } - - public void sendToDashboard() { - if (Constants.LIFT_DEBUG) { - - SmartDashboard.putBoolean("L-Has Target", liftIsHasTarget()); - SmartDashboard.putBoolean("L-Is At Distance", liftIsAtDistance()); - SmartDashboard.putNumber("L-Center of Target", liftCurrentCenter); - SmartDashboard.putNumber("L-Rotation", rotate); - SmartDashboard.putNumber("L-Rotate Difference", liftRotateDiff); - SmartDashboard.putNumber("L-Distance Difference", liftMoveDiff); - SmartDashboard.putNumber("L-Sweep Counter", liftSweepCounter); - SmartDashboard.putNumber("L-SweepDirection", liftSweepDirection); - SmartDashboard.putBoolean("L-isCentered", liftIsCentered()); - SmartDashboard.putNumber("L-rectX", lrectX); - SmartDashboard.putNumber("L-rectY", lrectY); - SmartDashboard.putNumber("L-rectWidth", lrectWidth); - SmartDashboard.putNumber("L-rectHeight", lrectHeight); - SmartDashboard.putNumber("L-Distance To Target", liftCurrentDistance); - SmartDashboard.putNumber("L-pipelineSize", liftPipelineSize); - } - } - - public void initDefaultCommand() { - if (Constants.LIFT_DEBUG) { - } - } - -} \ No newline at end of file +// +//// // this is a second method of looping through the contours in the filterContoursOutput Array of Mat Images +//// for (MatOfPoint contour : pipeline.filterContoursOutput()) { +//// Rect r = Imgproc.boundingRect(contour); +//// if (r.x < minX) { +//// minX = r.x; +//// } +//// } +// +// +// +// synchronized (imgLockLift) { +// liftCurrentCenter = lminX + ((lmaxX - lminX) / 2); +// +// // set values for the smartdashboard +// lrectX = lminX; +// lrectY = lminY; +// lrectWidth = lmaxX - lminX; +// lrectHeight = lmaxY - lminY; +// +// // note - this formula was pulled from 1640's github code - need to find the specific reference +// // from 1640 +// //Equation to determine the distance from a target (d) given the width in pixels of a vision target in the camera image (w): +// // d = (TARGET_WIDTH*CAMERA_IMAGE_WIDTH)/(2*tan(FOV_ANGLE/2)*w) +// // i.e. d and w are inversely related. +// liftCurrentDistance = liftTargetWidth * liftImageWidth / (2*(Math.tan(Math.toRadians(fovDegrees))/2)*lrectWidth); +// +// // display the current image on the driver station +// +// +// outputStreamLift.putFrame(lPipeline.hslThresholdOutput()); +// +// } +// } +// +// +// +// // the target is not in the camera (ie, pipeline is empty) +// else { +// liftHasTarget = false; +// lminX = 0; +// lminY = 0; +// lmaxX = 0; +// lmaxY = 0; +// } +// +// }); +// visionThreadLift.start(); +// } +// +// +// /* +// * liftProcessData +// * Method to interpret the camera data received above +// */ +// public void liftProcessData() { +// try { +// +// // use the sonar to get the distance from the target (backup plan if camera distance not available) +// // currentDistance=Robot.drivetrain.getSonarDistance(); +// +// // if robot sees the target (current X between its min and max) +// if ((liftCurrentCenter > minThresholdX) && (liftCurrentCenter < maxThresholdX)) { +// liftHasTarget = true; +// } +// else { +// liftHasTarget = false; +// } +// +// } catch (TableKeyNotDefinedException e) { +// e.printStackTrace(); +// } +// } +// +// /* +// * isCentered +// * Method to determine whether the robot sees the center of the target (within the threshold value) +// */ +// public boolean liftIsCentered() { +// +// // if the robot sees the target +// // determine whether the horizontal value the robot sees is within the threshold defining the center of the target +// // set isCentered according to whether the robot is aligned with the center of the target +// if (liftHasTarget) +// { +// +// double difference = trueCenter - (liftCurrentCenter); +// if (Math.abs(difference) <= thresholdX) { +// liftIsCentered = true; +// } +// else if (Math.abs(difference) > thresholdX) { +// liftIsCentered = false; +// } +// liftRotateDiff = difference; +// } +// else{ +// liftIsCentered = false; +// } +// +// return liftIsCentered; +// } +// +// +// /* +// * getRotate +// * Method to determine whether the robot is at the center of the target so it can drive towards target +// */ +// public double liftGetRotate() { +// double difference=0; +// +// // currently we are only running 1 cycle of the sweep and stopping +// // if in the future additional sweeps are required, this is where the reset should occur +// // if (sweepCounter > 400){ +// // sweepCounter = 0; +// // } +// +// // if robot sees target and is centered - no need to rotate the robot +// if (liftHasTarget && liftIsCentered) +// { +// rotate = 0.0; +// } +// +// // if the robot sees the target but is not centered +// // check to see whether the robot is within the threshold +// // rotate based on the math function +// else if (liftHasTarget && !liftIsCentered){ +// difference = trueCenter - (liftCurrentCenter); +// +// rotate = Math708.getClippedPercentError(liftCurrentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); +// +// +// if (Math.abs(difference) > thresholdX) { +// if (liftCurrentCenter < trueCenter){ +// rotate = Math.abs(rotate); +// } +// else { +// rotate = Math.abs(rotate) * -1; +// } +// } +// } +// +// // if the robot does not have the target +// // begin the sweep +// // sweep is defined as rotating the robot right, left, right in predefined counts +// // if in the sweep the robot does not find the target, it stops after 3 sweeps +// // otherwise it will jump back into the hasTarget logic identified above +// else if (!liftHasTarget){ +// if (Math.abs(liftSweepDirection) < .1){ +// liftSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; +// rotate = -AutoConstants.SWEEP_ROTATE; +// } +// else if (liftSweepDirection > AutoConstants.SWEEP1_MIN){ +// if ((liftSweepCounter >= AutoConstants.SWEEP1_MIN && liftSweepCounter <= AutoConstants.SWEEP1_MAX) +// || (liftSweepCounter >= AutoConstants.SWEEP3_MIN && liftSweepCounter <= AutoConstants.SWEEP3_MAX)){ +// +// rotate = -AutoConstants.SWEEP_ROTATE; +// if (liftSweepCounter== AutoConstants.SWEEP1_MAX || liftSweepCounter== AutoConstants.SWEEP3_MAX){ +// liftSweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; +// } +// } +// } +// else { +// if (liftSweepCounter >= AutoConstants.SWEEP2_MIN && liftSweepCounter <= AutoConstants.SWEEP2_MAX) +// rotate = AutoConstants.SWEEP_ROTATE; +// if (liftSweepCounter== AutoConstants.SWEEP2_MAX){ +// liftSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; +// } +// } +// +// liftSweepCounter++; +// } +// liftRotateDiff = difference; +// return rotate; +// } +// +// /* +// * getMove +// * Method to determine if the robot is close enough to target so it can stop +// */ +// +// public double liftGetMove() { +// +// // if the robot sees the target +// // Method to determine whether the robot is at the correct distance to the target so stop +// if (liftHasTarget) +// { +// double difference = liftDistanceToStop - liftCurrentDistance; +// move = Math708.getClippedPercentError(liftCurrentDistance, liftDistanceToStop, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); +// +// //Check if target is at correct distance within threshold +// if (Math.abs(difference) <= thresholdDistance) { +// move = 0.0; +// liftIsAtDistance = true; +// } else { +// liftIsAtDistance = false; +// } +// liftMoveDiff = difference; +// } else { +// move = 0.0; +// } +// +// return move; +// } +// +// /** +// * GETTERS and PUTTERS to return the private variables +// * @return +// */ +// +// +// public boolean liftIsAtDistance() { +// double difference = liftDistanceToStop - liftCurrentDistance; +// //Check if target is at correct level within threshold +// if (Math.abs(difference) <= thresholdDistance) { +// liftIsAtDistance = true; +// } else { +// liftIsAtDistance = false; +// } +// return liftIsAtDistance; +// } +// +// public boolean liftIsHasTarget() { +// return liftHasTarget; +// } +// +// public void putLiftHasTarget(boolean ht) { +// liftHasTarget = ht; +// } +// +// public void putLiftCurrentCenter(double cc) { +// liftCurrentCenter = cc; +// } +// +// public int getLiftCounter() { +// return liftSweepCounter; +// } +// +// +// public void putLiftCounter(int ct) { +// liftSweepCounter = ct; +// } +// +// public void putLiftIsCentered(boolean ic) { +// liftIsCentered = ic; +// } +// +// +// public void putLiftAtDistance(boolean ay) { +// liftIsAtDistance = ay; +// } +// +// +// public boolean liftIsInSweep() { +// if (liftHasTarget) { +// liftInSweep = false; +// liftSweepCounter=1; +// } +// else { +// liftInSweep = true; +// } +// return liftInSweep; +// } +// +// public void sendToDashboard() { +// if (Constants.LIFT_DEBUG) { +// +// SmartDashboard.putBoolean("L-Has Target", liftIsHasTarget()); +// SmartDashboard.putBoolean("L-Is At Distance", liftIsAtDistance()); +// SmartDashboard.putNumber("L-Center of Target", liftCurrentCenter); +// SmartDashboard.putNumber("L-Rotation", rotate); +// SmartDashboard.putNumber("L-Rotate Difference", liftRotateDiff); +// SmartDashboard.putNumber("L-Distance Difference", liftMoveDiff); +// SmartDashboard.putNumber("L-Sweep Counter", liftSweepCounter); +// SmartDashboard.putNumber("L-SweepDirection", liftSweepDirection); +// SmartDashboard.putBoolean("L-isCentered", liftIsCentered()); +// SmartDashboard.putNumber("L-rectX", lrectX); +// SmartDashboard.putNumber("L-rectY", lrectY); +// SmartDashboard.putNumber("L-rectWidth", lrectWidth); +// SmartDashboard.putNumber("L-rectHeight", lrectHeight); +// SmartDashboard.putNumber("L-Distance To Target", liftCurrentDistance); +// SmartDashboard.putNumber("L-pipelineSize", liftPipelineSize); +// } +// } +// +// public void initDefaultCommand() { +// if (Constants.LIFT_DEBUG) { +// } +// } +// +//} \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionLiftGear.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionLiftGear.java new file mode 100644 index 0000000..1e8426d --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionLiftGear.java @@ -0,0 +1,739 @@ +package org.usfirst.frc.team708.robot.subsystems; + +import org.opencv.core.Rect; +import org.opencv.imgproc.Imgproc; +import org.usfirst.frc.team708.robot.AutoConstants; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.commands.visionProcessor.GripPipelineLiftGear; +import org.usfirst.frc.team708.robot.util.Math708; + +import edu.wpi.cscore.AxisCamera; +import edu.wpi.cscore.CvSource; +import edu.wpi.cscore.UsbCamera; +import edu.wpi.first.wpilibj.CameraServer; +import edu.wpi.first.wpilibj.command.Subsystem; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; +import edu.wpi.first.wpilibj.tables.TableKeyNotDefinedException; +import edu.wpi.first.wpilibj.vision.VisionThread; + +/** + *@authors Viet & Sue + *This subsystem is specific to the 2017 Game FIRST Steamworks Lift Peg + */ + +public class VisionLiftGear extends Subsystem { + + // Camera Variables + private double fovDegrees = AutoConstants.USB_LIFT_FOV_DEGREES; // Field of View of the Camera + private double liftPipelineSize; // Number of Contours in the Pipline- 0 = target not in view + private double gearPipelineSize; + private int liftGearImageWidth = AutoConstants.USB_LIFT_IMG_WIDTH; // Width of image from camera stream + private int liftGearImageHeight = AutoConstants.USB_LIFT_IMG_HEIGHT; // Height of image from camera stream + + // Image OpenCV Image Processing Variables + private VisionThread visionThreadLiftGear; // vision processing thread - processes grip code for lift + private VisionThread visionThreadGear; // vision processing thread - processes grip code for gear + private final Object imgLockLift = new Object(); // vision Lift object + private final Object imgLockGear = new Object(); // vision Lift object + +// private AxisCamera axisCamera; // Axis Camera + private UsbCamera usbCameraLiftGear; // USB Camera + private CvSource outputStreamLift; // Output stream to the Dashboard + private CvSource outputStreamGear; // Output stream to the Dashboard + + + // Targeting variables + private int lrectX = 0; // the 4 values used which define the full rectangle around the target + private int lrectY = 0; + private int grectX = 0; + private int grectY = 0; + private int lrectWidth = 0; + private int lrectHeight = 0; + private int grectWidth = 0; + private int grectHeight = 0; + + private int lminX = 0; // the 4 values used to create maximum rectangle around the target (used when evaluating each of the contour images) + private int lminY = 0; + private int lmaxX = 0; + private int lmaxY = 0; + private int gminX = 0; // the 4 values used to create maximum rectangle around the target (used when evaluating each of the contour images) + private int gminY = 0; + private int gmaxX = 0; + private int gmaxY = 0; + + private boolean liftHasTarget = false; // flag indicating whether the robot sees the target + private boolean liftIsCentered = false; // flag indicating whether the robot sees the center of the target + private boolean liftIsAtDistance = false; // flag indicating whether the robot is at the correct distance from the target + private boolean gearHasTarget = false; + private boolean gearIsCentered = false; + private boolean gearIsAtDistance = false; + + private int liftTargetHeight = AutoConstants.LIFT_TARGET_HEIGHT; //height of actual target reflective tape + private int liftTargetWidth = AutoConstants.LIFT_TARGET_WIDTH; //width of actual target reflective tape + private int gearTargetHeight = AutoConstants.GEAR_TARGET_HEIGHT; //height of actual target reflective tape + private int gearTargetWidth = AutoConstants.GEAR_TARGET_WIDTH; //width of actual target reflective tape + + private double trueCenter = liftGearImageWidth/2; // horizontal value of the center of the camera image + private double liftDistanceToStop = AutoConstants.DISTANCE_TO_LIFT_TARGET; // distance to stop at in front of lift target + private double liftCurrentCenter = 0.0; // horizontal value of where robot is looking + private double liftCurrentDistance = 0.0; // distance robot is from the target + private double gearDistanceToStop = AutoConstants.DISTANCE_TO_GEAR; // distance to stop at in front of gear + private double gearCurrentCenter = 0.0; // horizontal value of where robot is looking + private double gearCurrentDistance = 0.0; // distance robot is from the target + + private double thresholdX = AutoConstants.X_THRESHOLD_CENTER; // threshold for determining center of the target + private double thresholdDistance = AutoConstants.DISTANCE_TARGET_THRESHOLD; // threshold for determining threshold for stopping at the lift peg + private double minThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MIN; // threshold for determining min value for whether the robot sees the target + private double maxThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MAX; // threshold for determining max value for whether the robot sees the target + + + // Sweep Variables + private boolean liftInSweep = false; // flag indicating whether the robot is sweeping left and right looking for the target + private double liftSweepDirection = 0.0; // value indicating the direction of the sweep -1 = right; 1 = left + private int liftSweepCounter = 0; // value indicating when the sweep will change direction + private boolean gearInSweep = false; // flag indicating whether the robot is sweeping left and right looking for the target + private double gearSweepDirection = 0.0; // value indicating the direction of the sweep -1 = right; 1 = left + private int gearSweepCounter = 0; // value indicating when the sweep will change direction + + + // drive variables + private double liftRotateDiff = 0; // for smartdashboard - how far away from center + private double liftMoveDiff = 0; // for smartdashboard - how far away from target + private double gearRotateDiff = 0; // for smartdashboard - how far away from center + private double gearMoveDiff = 0; // for smartdashboard - how far away from target + double rotate; // speed of the rotate being returned to the command + double move; // speed of the move forward being returned to the command + + // Vision Processing + public VisionLiftGear() { + super("Vision Processor"); + + + // define the Cameras: + // on little bot - cam2, 1 + // Pipeline outputs: hsl and 0 means lift, rgb and 1 means gear + usbCameraLiftGear=CameraServer.getInstance().startAutomaticCapture(AutoConstants.USB_CAMERA_ID, AutoConstants.USB_VIDEO_PORT); +// axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); + usbCameraLiftGear.setResolution(liftGearImageWidth, liftGearImageHeight); + + + // define the output stream on the smart dashboard + outputStreamLift = CameraServer.getInstance().putVideo("Target_Lift", liftGearImageWidth, liftGearImageHeight); + outputStreamGear = CameraServer.getInstance().putVideo("Target_Gear", liftGearImageWidth, liftGearImageHeight); + + // Vision thread which processes the image contours + visionThreadLiftGear = new VisionThread(usbCameraLiftGear, new GripPipelineLiftGear(), lgPipeline -> { + liftPipelineSize = lgPipeline.filterContours0Output().size(); + gearPipelineSize = lgPipeline.filterContours1Output().size(); + + // if the grip pipeline filter "filterContours0Output" sees the target + // loop through each contour image + // grab the bounding rectangle values of each contour + // to create the biggest rectangle around the 2 vertical retroreflective tapes + // on either side of the lift peg + if (!lgPipeline.filterContours0Output().isEmpty()) { + + for (int i = 0; i < lgPipeline.filterContours0Output().size(); i++) { + Rect lift = Imgproc.boundingRect(lgPipeline.filterContours0Output().get(i)); + + // set the min/max values to match the values form the 1st image + if (i == 0) { + lminX = lift.x; + lminY = lift.y; + lmaxX = lift.x + lift.width; + lmaxY = lift.y + lift.height; + } + + // compare each value to the min/max and replace if a better one is found + if (lift.x < lminX) { + lminX = lift.x; + } + if (lift.y < lminY) { + lminY = lift.y; + } + if (lift.x + lift.width > lmaxX) { + lmaxX = lift.x + lift.width; + } + if (lift.y + lift.height> lmaxY) { + lmaxY = lift.y + lift.height; + } + } + + + +// // this is a second method of looping through the contours in the filterContours0Output Array of Mat Images +// for (MatOfPoint contour : pipeline.filterContours0Output()) { +// Rect r = Imgproc.boundingRect(contour); +// if (r.x < minX) { +// minX = r.x; +// } +// } + + + + synchronized (imgLockLift) { + liftCurrentCenter = lminX + ((lmaxX - lminX) / 2); + + // set values for the smartdashboard + lrectX = lminX; + lrectY = lminY; + lrectWidth = lmaxX - lminX; + lrectHeight = lmaxY - lminY; + + // note - this formula was pulled from 1640's github code - need to find the specific reference + // from 1640 + //Equation to determine the distance from a target (d) given the width in pixels of a vision target in the camera image (w): + // d = (TARGET_WIDTH*CAMERA_IMAGE_WIDTH)/(2*tan(FOV_ANGLE/2)*w) + // i.e. d and w are inversely related. + liftCurrentDistance = liftTargetWidth * liftGearImageWidth / (2*(Math.tan(Math.toRadians(fovDegrees))/2)*lrectWidth); + + // display the current image on the driver station + + + outputStreamLift.putFrame(lgPipeline.hslThresholdOutput()); + + } + } + + // the target is not in the camera (ie, pipeline is empty) + else { + liftHasTarget = false; + lminX = 0; + lminY = 0; + lmaxX = 0; + lmaxY = 0; + } + + if (!lgPipeline.filterContours1Output().isEmpty()) { + + for (int i = 0; i < lgPipeline.filterContours1Output().size(); i++) { + Rect gear = Imgproc.boundingRect(lgPipeline.filterContours1Output().get(i)); + + // set the min/max values to match the values form the 1st image + if (i == 0) { + gminX = gear.x; + gminY = gear.y; + gmaxX = gear.x + gear.width; + gmaxY = gear.y + gear.height; + } + + // compare each value to the min/max and replace if a better one is found + if (gear.x < lminX) { + gminX = gear.x; + } + if (gear.y < gminY) { + gminY = gear.y; + } + if (gear.x + gear.width > gmaxX) { + gmaxX = gear.x + gear.width; + } + if (gear.y + gear.height> gmaxY) { + gmaxY = gear.y + gear.height; + } + } + +// // this is a second method of looping through the contours in the filterContours0Output Array of Mat Images +// for (MatOfPoint contour : pipeline.filterContours1Output()) { +// Rect r = Imgproc.boundingRect(contour); +// if (r.x < minX) { +// minX = r.x; +// } +// } + + + + synchronized (imgLockGear) { + gearCurrentCenter = gminX + ((gmaxX - gminX) / 2); + + // set values for the smartdashboard + grectX = gminX; + grectY = gminY; + grectWidth = gmaxX - gminX; + grectHeight = gmaxY - gminY; + + // note - this formula was pulled from 1640's github code - need to find the specific reference + // from 1640 + //Equation to determine the distance from a target (d) given the width in pixels of a vision target in the camera image (w): + // d = (TARGET_WIDTH*CAMERA_IMAGE_WIDTH)/(2*tan(FOV_ANGLE/2)*w) + // i.e. d and w are inversely related. + gearCurrentDistance = gearTargetWidth * liftGearImageWidth / (2*(Math.tan(Math.toRadians(fovDegrees))/2)*grectWidth); + + // display the current image on the driver station + + + outputStreamGear.putFrame(lgPipeline.rgbThresholdOutput()); + + } + } + + // the target is not in the camera (ie, pipeline is empty) + else { + gearHasTarget = false; + gminX = 0; + gminY = 0; + gmaxX = 0; + gmaxY = 0; + } + + }); + visionThreadLiftGear.start(); + } + + /* + * liftProcessData + * Method to interpret the camera data received above + */ + public void liftProcessData() { + try { + + // use the sonar to get the distance from the target (backup plan if camera distance not available) + // currentDistance=Robot.drivetrain.getSonarDistance(); + + // if robot sees the target (current X between its min and max) + if ((liftCurrentCenter > minThresholdX) && (liftCurrentCenter < maxThresholdX)) { + liftHasTarget = true; + } + else { + liftHasTarget = false; + } + + } catch (TableKeyNotDefinedException e) { + e.printStackTrace(); + } + } + + /* + * isCentered + * Method to determine whether the robot sees the center of the target (within the threshold value) + */ + public boolean liftIsCentered() { + + // if the robot sees the target + // determine whether the horizontal value the robot sees is within the threshold defining the center of the target + // set isCentered according to whether the robot is aligned with the center of the target + if (liftHasTarget) + { + + double difference = trueCenter - (liftCurrentCenter); + if (Math.abs(difference) <= thresholdX) { + liftIsCentered = true; + } + else if (Math.abs(difference) > thresholdX) { + liftIsCentered = false; + } + liftRotateDiff = difference; + } + else{ + liftIsCentered = false; + } + + return liftIsCentered; + } + + /* + * getRotate + * Method to determine whether the robot is at the center of the target so it can drive towards target + */ + public double liftGetRotate() { + double difference=0; + + // currently we are only running 1 cycle of the sweep and stopping + // if in the future additional sweeps are required, this is where the reset should occur + // if (sweepCounter > 400){ + // sweepCounter = 0; + // } + + // if robot sees target and is centered - no need to rotate the robot + if (liftHasTarget && liftIsCentered) + { + rotate = 0.0; + } + + // if the robot sees the target but is not centered + // check to see whether the robot is within the threshold + // rotate based on the math function + else if (liftHasTarget && !liftIsCentered){ + difference = trueCenter - (liftCurrentCenter); + + rotate = Math708.getClippedPercentError(liftCurrentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); + + + if (Math.abs(difference) > thresholdX) { + if (liftCurrentCenter < trueCenter){ + rotate = Math.abs(rotate); + } + else { + rotate = Math.abs(rotate) * -1; + } + } + } + + // if the robot does not have the target + // begin the sweep + // sweep is defined as rotating the robot right, left, right in predefined counts + // if in the sweep the robot does not find the target, it stops after 3 sweeps + // otherwise it will jump back into the hasTarget logic identified above + else if (!liftHasTarget){ + if (Math.abs(liftSweepDirection) < .1){ + liftSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; + rotate = -AutoConstants.SWEEP_ROTATE; + } + else if (liftSweepDirection > AutoConstants.SWEEP1_MIN){ + if ((liftSweepCounter >= AutoConstants.SWEEP1_MIN && liftSweepCounter <= AutoConstants.SWEEP1_MAX) + || (liftSweepCounter >= AutoConstants.SWEEP3_MIN && liftSweepCounter <= AutoConstants.SWEEP3_MAX)){ + + rotate = -AutoConstants.SWEEP_ROTATE; + if (liftSweepCounter== AutoConstants.SWEEP1_MAX || liftSweepCounter== AutoConstants.SWEEP3_MAX){ + liftSweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; + } + } + } + else { + if (liftSweepCounter >= AutoConstants.SWEEP2_MIN && liftSweepCounter <= AutoConstants.SWEEP2_MAX) + rotate = AutoConstants.SWEEP_ROTATE; + if (liftSweepCounter== AutoConstants.SWEEP2_MAX){ + liftSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; + } + } + + liftSweepCounter++; + } + liftRotateDiff = difference; + return rotate; + } + + /* + * getMove + * Method to determine if the robot is close enough to target so it can stop + */ + + public double liftGetMove() { + + // if the robot sees the target + // Method to determine whether the robot is at the correct distance to the target so stop + if (liftHasTarget) + { + double difference = liftDistanceToStop - liftCurrentDistance; + move = Math708.getClippedPercentError(liftCurrentDistance, liftDistanceToStop, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); + + //Check if target is at correct distance within threshold + if (Math.abs(difference) <= thresholdDistance) { + move = 0.0; + liftIsAtDistance = true; + } else { + liftIsAtDistance = false; + } + liftMoveDiff = difference; + } else { + move = 0.0; + } + + return move; + } + + /* + * liftProcessData + * Method to interpret the camera data received above + */ + public void gearProcessData() { + try { + + // use the sonar to get the distance from the target (backup plan if camera distance not available) + // currentDistance=Robot.drivetrain.getSonarDistance(); + + // if robot sees the target (current X between its min and max) + if ((gearCurrentCenter > minThresholdX) && (gearCurrentCenter < maxThresholdX)) { + gearHasTarget = true; + } + else { + gearHasTarget = false; + } + + } catch (TableKeyNotDefinedException e) { + e.printStackTrace(); + } + } + + /* + * isCentered + * Method to determine whether the robot sees the center of the target (within the threshold value) + */ + public boolean gearIsCentered() { + + // if the robot sees the target + // determine whether the horizontal value the robot sees is within the threshold defining the center of the target + // set isCentered according to whether the robot is aligned with the center of the target + if (gearHasTarget) + { + + double difference = trueCenter - (gearCurrentCenter); + if (Math.abs(difference) <= thresholdX) { + gearIsCentered = true; + } + else if (Math.abs(difference) > thresholdX) { + gearIsCentered = false; + } + gearRotateDiff = difference; + } + else{ + gearIsCentered = false; + } + + return gearIsCentered; + } + + /* + * getRotate + * Method to determine whether the robot is at the center of the target so it can drive towards target + */ + public double gearGetRotate() { + double difference=0; + + // currently we are only running 1 cycle of the sweep and stopping + // if in the future additional sweeps are required, this is where the reset should occur + // if (sweepCounter > 400){ + // sweepCounter = 0; + // } + + // if robot sees target and is centered - no need to rotate the robot + if (gearHasTarget && gearIsCentered) + { + rotate = 0.0; + } + + // if the robot sees the target but is not centered + // check to see whether the robot is within the threshold + // rotate based on the math function + else if (gearHasTarget && !gearIsCentered){ + difference = trueCenter - (gearCurrentCenter); + + rotate = Math708.getClippedPercentError(gearCurrentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); + + + if (Math.abs(difference) > thresholdX) { + if (gearCurrentCenter < trueCenter){ + rotate = Math.abs(rotate); + } + else { + rotate = Math.abs(rotate) * -1; + } + } + } + + // if the robot does not have the target + // begin the sweep + // sweep is defined as rotating the robot right, left, right in predefined counts + // if in the sweep the robot does not find the target, it stops after 3 sweeps + // otherwise it will jump back into the hasTarget logic identified above + else if (!gearHasTarget){ + if (Math.abs(gearSweepDirection) < .1){ + gearSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; + rotate = -AutoConstants.SWEEP_ROTATE; + } + else if (gearSweepDirection > AutoConstants.SWEEP1_MIN){ + if ((gearSweepCounter >= AutoConstants.SWEEP1_MIN && liftSweepCounter <= AutoConstants.SWEEP1_MAX) + || (gearSweepCounter >= AutoConstants.SWEEP3_MIN && liftSweepCounter <= AutoConstants.SWEEP3_MAX)){ + + rotate = -AutoConstants.SWEEP_ROTATE; + if (gearSweepCounter== AutoConstants.SWEEP1_MAX || liftSweepCounter== AutoConstants.SWEEP3_MAX){ + gearSweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; + } + } + } + else { + if (gearSweepCounter >= AutoConstants.SWEEP2_MIN && liftSweepCounter <= AutoConstants.SWEEP2_MAX) + rotate = AutoConstants.SWEEP_ROTATE; + if (gearSweepCounter== AutoConstants.SWEEP2_MAX){ + gearSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; + } + } + + gearSweepCounter++; + } + gearRotateDiff = difference; + return rotate; + } + + /* + * getMove + * Method to determine if the robot is close enough to target so it can stop + */ + + public double gearGetMove() { + + // if the robot sees the target + // Method to determine whether the robot is at the correct distance to the target so stop + if (gearHasTarget) + { + double difference = gearDistanceToStop - gearCurrentDistance; + move = Math708.getClippedPercentError(gearCurrentDistance, gearDistanceToStop, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); + + //Check if target is at correct distance within threshold + if (Math.abs(difference) <= thresholdDistance) { + move = 0.0; + gearIsAtDistance = true; + } else { + gearIsAtDistance = false; + } + gearMoveDiff = difference; + } else { + move = 0.0; + } + + return move; + } + + /** + * GETTERS and PUTTERS to return the private variables + * @return + */ + + + public boolean liftIsAtDistance() { + double difference = liftDistanceToStop - liftCurrentDistance; + //Check if target is at correct level within threshold + if (Math.abs(difference) <= thresholdDistance) { + liftIsAtDistance = true; + } else { + liftIsAtDistance = false; + } + return liftIsAtDistance; + } + + public boolean gearIsAtDistance() { + double difference = gearDistanceToStop - gearCurrentDistance; + //Check if target is at correct level within threshold + if (Math.abs(difference) <= thresholdDistance) { + gearIsAtDistance = true; + } else { + gearIsAtDistance = false; + } + return gearIsAtDistance; + } + + public boolean liftIsHasTarget() { + return liftHasTarget; + } + + public boolean gearIsHasTarget() { + return gearHasTarget; + } + + public void putLiftHasTarget(boolean lht) { + liftHasTarget = lht; + } + + public void putGearHasTarget(boolean ght) { + gearHasTarget = ght; + } + + public void putLiftCurrentCenter(double lcc) { + liftCurrentCenter = lcc; + } + + public void putGearCurrentCenter(double gcc) { + gearCurrentCenter = gcc; + } + + public int getLiftCounter() { + return liftSweepCounter; + } + + public int getGearCounter() { + return gearSweepCounter; + } + + public void putLiftCounter(int lct) { + liftSweepCounter = lct; + } + + public void putGearCounter(int gct) { + gearSweepCounter = gct; + } + + public void putLiftIsCentered(boolean lic) { + liftIsCentered = lic; + } + + public void putGearIsCentered(boolean gic) { + gearIsCentered = gic; + } + + public void putLiftAtDistance(boolean lad) { + liftIsAtDistance = lad; + } + + public void putGearAtDistance(boolean gad) { + gearIsAtDistance = gad; + } + + public boolean liftIsInSweep() { + if (liftHasTarget) { + liftInSweep = false; + liftSweepCounter=1; + } + else { + liftInSweep = true; + } + return liftInSweep; + } + + public boolean gearIsInSweep() { + if (gearHasTarget) { + gearInSweep = false; + gearSweepCounter=1; + } + else { + gearInSweep = true; + } + return gearInSweep; + } + + public void sendToDashboard() { + if (Constants.LIFT_DEBUG) { + + SmartDashboard.putBoolean("L-Has Target", liftIsHasTarget()); + SmartDashboard.putBoolean("L-Is At Distance", liftIsAtDistance()); + SmartDashboard.putNumber("L-Center of Target", liftCurrentCenter); + SmartDashboard.putNumber("L-Rotation", rotate); + SmartDashboard.putNumber("L-Rotate Difference", liftRotateDiff); + SmartDashboard.putNumber("L-Distance Difference", liftMoveDiff); + SmartDashboard.putNumber("L-Sweep Counter", liftSweepCounter); + SmartDashboard.putNumber("L-SweepDirection", liftSweepDirection); + SmartDashboard.putBoolean("L-isCentered", liftIsCentered()); + SmartDashboard.putNumber("L-rectX", lrectX); + SmartDashboard.putNumber("L-rectY", lrectY); + SmartDashboard.putNumber("L-rectWidth", lrectWidth); + SmartDashboard.putNumber("L-rectHeight", lrectHeight); + SmartDashboard.putNumber("L-Distance To Target", liftCurrentDistance); + SmartDashboard.putNumber("L-pipelineSize", liftPipelineSize); + } + if (Constants.GEAR_DEBUG) { + + SmartDashboard.putBoolean("G-Has Target", gearIsHasTarget()); + SmartDashboard.putBoolean("G-Is At Distance", gearIsAtDistance()); + SmartDashboard.putNumber("G-Center of Target", gearCurrentCenter); + SmartDashboard.putNumber("G-Rotation", rotate); + SmartDashboard.putNumber("G-Move", move); + SmartDashboard.putNumber("G-Rotate Difference", gearRotateDiff); + SmartDashboard.putNumber("G-Distance Difference", gearMoveDiff); + SmartDashboard.putNumber("G-Sweep Counter", gearSweepCounter); + SmartDashboard.putNumber("G-SweepDirection", gearSweepDirection); + SmartDashboard.putBoolean("G-isCentered", gearIsCentered()); + SmartDashboard.putNumber("G-rectX", grectX); + SmartDashboard.putNumber("G-rectY", grectY); + SmartDashboard.putNumber("G-rectWidth", grectWidth); + SmartDashboard.putNumber("G-rectHeight", grectHeight); + SmartDashboard.putNumber("G-Distance To Target", gearCurrentDistance); + SmartDashboard.putNumber("G-pipelineSize", gearPipelineSize); + } + } + + public void initDefaultCommand() { + if (Constants.LIFT_DEBUG) { + } + } + +} \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.java index eb67db8..5e30cdc 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.java @@ -101,7 +101,7 @@ public double getRotate() { { double difference = centerX - (currentX); - rotate = Math708.getSignClippedPercentError(currentX, centerX, 0.3, 0.5); + rotate = Math708.getClippedPercentError(currentX, centerX, 0.3, 0.5); // if (Math.abs(difference) <= thresholdX) { // rotate = 0.0; diff --git a/src/org/usfirst/frc/team708/robot/util/Math708.java b/src/org/usfirst/frc/team708/robot/util/Math708.java index 49d8e13..93ae07f 100644 --- a/src/org/usfirst/frc/team708/robot/util/Math708.java +++ b/src/org/usfirst/frc/team708/robot/util/Math708.java @@ -113,7 +113,7 @@ public static boolean squareWave(Timer timer,double onTimeSec,boolean prevValue) */ public static double getPercentError(double currentValue, double goalValue) { - return (currentValue - goalValue) / goalValue; + return Math.abs(currentValue - goalValue) / goalValue; } /** @@ -127,20 +127,10 @@ public static double getPercentError(double currentValue, double goalValue) * @return */ public static double getClippedPercentError(double currentValue, double goalValue, double minimumValue, double maximumValue) { - return makeWithin(getPercentError(currentValue, goalValue), minimumValue, maximumValue); - } - - public static double getSignClippedPercentError(double currentValue, double goalValue, double minimumValue, double maximumValue) { - double sign = Math.signum(getPercentError(currentValue, goalValue)); - if (sign < 0) { - return makeWithin(getPercentError(currentValue, goalValue), minimumValue * sign, maximumValue * sign); - } - else if (sign > 0) { - return makeWithin(getPercentError(currentValue, goalValue), minimumValue * sign, maximumValue * sign); - } - else { - return 0; - } + double percentError = getPercentError(currentValue, goalValue); + double sign = Math.signum(percentError); + + return sign * makeWithin(Math.abs(getPercentError(currentValue, goalValue)), minimumValue, maximumValue); } public double accelerateToSpeed(double maxSpeed, double accel){ @@ -178,4 +168,4 @@ public static double convergeOnSpeed(double speed){ public static boolean isWithinThreshold(double currentValue, double goalValue, double threshold) { return Math.abs(goalValue - currentValue) <= threshold; } -} +} \ No newline at end of file diff --git a/sysProps.xml b/sysProps.xml index 21063d76497c11abcf7e2bff99519bcddb9c7a33..133f6652772dabb32714a7b24e4eea8b668f64cb 100644 GIT binary patch delta 83 zcmZ2yu+CsZ37@Gcg9(EpgDHangEJ5tFeoq>0(qtkMhtEY7C>kO6mbEnabd6ok|sb| dLk5M(fh^XWpYR=GW;bFm1}Zk&yjG}@6#!ef4+a1L delta 83 zcmZ2yu+CsZ37@GkgEJ7CF}N}qfT04A=fdCyWScQKG8h5b3P5ZER^`fI2^2GBP?#LZ XV!inZ-yvppW1tdq2BXbug&J7_ai$M` From 47f1c4e127fa43a3115a7b3c84027dc39e0d8382 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Tue, 28 Feb 2017 09:25:38 -0500 Subject: [PATCH 35/69] after shooter tuning --- .../usfirst/frc/team708/robot/Constants.class | Bin 3421 -> 3426 bytes .../robot/commands/shooter/HoodAdjust.class | Bin 1175 -> 1175 bytes .../robot/commands/shooter/ManualShoot.class | Bin 1434 -> 1435 bytes .../robot/commands/shooter/MoveHoodHigh.class | Bin 1038 -> 1038 bytes .../robot/commands/shooter/MoveHoodLow.class | Bin 1034 -> 1035 bytes .../robot/commands/shooter/SpinShooter.class | Bin 1335 -> 1336 bytes .../team708/robot/subsystems/Shooter.class | Bin 3070 -> 3070 bytes .../usfirst/frc/team708/robot/Constants.java | 8 ++++---- .../robot/commands/shooter/HoodAdjust.java | 10 +++++----- .../frc/team708/robot/subsystems/Shooter.java | 2 +- sysProps.xml | Bin 6190 -> 6190 bytes 11 files changed, 10 insertions(+), 10 deletions(-) diff --git a/build/org/usfirst/frc/team708/robot/Constants.class b/build/org/usfirst/frc/team708/robot/Constants.class index 2b504cb4db86dcf04948607e5b8290e799a15fa8..695114f04a56ade2d533ec1939c5d589308a1729 100644 GIT binary patch delta 837 zcmZ9~NlF7z5C-5suQN!93qb{gV0K<0XK*$uO2kMnD;_FA*cpX05vynmtT`62eR}0tBwQ$+>A-Z0; zfo>FTqQkJA^x#?-KRhbdPW^-G_dAzyW$N%R{zJ1zj*~ z2UO~XBckCb^JBu}^n~yvJteF!FfFVHoDtUbv*`<&T=^UW^H~Ed2j74TSLrojonQaARp-k$bznmjc<4=R*(=naC?c!}+7{lScZK)pec=Q8P&i5-WgLRV zz;Pyk6Z%y6j6P4Vj2qJfTnJxsR0sG^^Nd-6+``fu{>*L)$U&T^FZJxgE$%1>?s+Oa F`~g-IQV#$C delta 839 zcmZ9~H%kOj5C`!8zVmLyP*_-a2wDgSHa30$u`r9Gm=lUQp_l`%D40FNnsc^3u23wj zMf?gjehv};Z_&Nsnqhx4!`s=}_vQceC%^x^yaLF^LmWJ~HF0O+K9szpjBooEQDHscn6U02|NkJ1E1zIuGHQS+VLjk<)B!WX zv#iev>j5m`d3r%u*BAe6XD4J>CKF3oc2}l<$%?QZU{!dHUKie=H-&@rmhd*cBfLx7 z5zk)AVM>W8!%y`CYo8=hrWgc5h&%piGgVw1G5MN>-2dH zikleN1(~;PW8eTXL>M@?F>r%KxIS!S;91Tf2NvXo3bKSjlnHW}OtxXsRJLW%WN>59 eV~_wE$^$W)L6SiV$ddtL76vA5sm&cMLW}^04;x_s delta 153 zcmbQuJ&SvSq3H4g1`yz4&}PsD5qfM63x8~MTg~h}je&)M5h&%hiGgVw1G5MN>-2dH zikleN1=$?7F>nAGA`G0{7`Q*1O?BB eV~_xv$pbN&L6SiV$ddtL76vA5$<3WCLW}@aL>pfK diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class index 172f65d71db160255d1cd031ea4117f3fff0adfd..11803a5808f84961ef9ca61b85934caf3bff0f18 100644 GIT binary patch delta 24 gcmeC<=;PRMkBOUk+cpN4O$SWKv}W0A#HPz5oCK delta 24 gcmeC<=;PRMkBOVjVH*R>CI%)!?j4(7GO02G09>jE6aWAK diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class index 78c2dc655f7286a88b7c20059f6523ee16a8ff43..1c93fb00ad5e42c2129cac0817fc9174cc483b84 100644 GIT binary patch delta 76 zcmeC;=;qjPj>*B5fr){Ufq_AI69bbVOV~CB77&BOWE%tPMxZbg0}qhoV_*i7(hQso UG7LftvJAXH9uGv@WM1aK0MIN6;s5{u delta 75 zcmeC?=;GLLj>+DIfr){Ufq_A269bcg+%^UlAT7x8XBz|SMxZDY0}qhoV_*i7(hM97 UG7N$YvJAXH9uGvbQ1&9HU?%92A1jb7$i0^ zun976+s42FWQZ_uZe!qH&L9eA^8nc(S(dQLpO{tUO&By7#DLm)AcioAGe`h=Qb5eY Nz@#L&*^Gse5de=$74-lB delta 126 zcmdnNwVi8%p}_J21`yz4&}7hNb6EIeqhkfLWeo!h10zt>WD^6^HU?%92A1jb7$i0^ zunDp`Y-8X6GDH|Sw=r-pXAl9id4OynLqKlwXJ%D-V+IWdF`#Z9h#3sx3=%+|6cDp8 NFewRaHfLdE1OQrv6=MJZ diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class b/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class index 5d7899f4c4b034c4ce966b0c3cdd1762a41427a0..3ddfcb1359e85c7d9481cb4e6fd14a4bffaa0f04 100644 GIT binary patch delta 14 Vcmew-{!e_vMRrE!&6n79SO77^1#<$AlnEmVgeL%W^e_HIWm|s YC`=AyvEKZI?-(<)34_JvwL*=o061|E5dZ)H delta 79 zcmZ2yu+CsZ37@Gcg9(EpgDHangEJ5tFeoq>0(qtkMhtEY7C>kO6mbEnabd6ok|sb| aLk5M(fh^XWpYR=HW;SIo+q_n&kre Date: Wed, 1 Mar 2017 16:23:53 -0500 Subject: [PATCH 36/69] debugging --- .../frc/team708/robot/AutoConstants.class | Bin 2167 -> 2176 bytes .../usfirst/frc/team708/robot/Constants.class | Bin 3426 -> 3435 bytes build/org/usfirst/frc/team708/robot/OI.class | Bin 3993 -> 3993 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 7056 -> 6944 bytes .../AllianceSelection/BlueAlliance.class | Bin 1089 -> 1051 bytes .../AllianceSelection/GetAlliance.class | Bin 0 -> 1086 bytes .../AllianceSelection/RedAlliance.class | Bin 1086 -> 1048 bytes .../commands/autonomous/OneGearCenter.class | Bin 1369 -> 1110 bytes .../commands/autonomous/OneGearLeft.class | Bin 1334 -> 1207 bytes .../commands/autonomous/SixtyBalls.class | Bin 2022 -> 2066 bytes .../robot/commands/autonomous/TenBalls.class | Bin 1843 -> 1837 bytes .../commands/autonomous/driveDistance.class | Bin 1429 -> 1431 bytes .../robot/commands/autonomous/turn.class | Bin 845 -> 878 bytes .../commands/drivetrain/TurnToDegrees.class | Bin 1389 -> 1389 bytes .../drivetrain/TurnToDegreesAlliance.class | Bin 0 -> 2038 bytes .../robot/commands/feeder/ManualFeeder.class | Bin 1209 -> 1220 bytes .../robot/commands/feeder/SpinFeeder.class | Bin 1203 -> 1214 bytes .../commands/feeder/SpinFeederBack.class | Bin 1039 -> 1039 bytes .../intake_gear/Intake_Gear_Down.class | Bin 1142 -> 1170 bytes .../robot/commands/shooter/HoodAdjust.class | Bin 1175 -> 1175 bytes .../robot/commands/shooter/ManualShoot.class | Bin 1435 -> 1435 bytes .../robot/commands/shooter/MoveHoodHigh.class | Bin 1038 -> 1038 bytes .../robot/commands/shooter/SpinShooter.class | Bin 1336 -> 1336 bytes .../visionProcessor/GripPipelineBoiler.class | Bin 5921 -> 5954 bytes .../GripPipelineLiftGear.class | Bin 8176 -> 8185 bytes .../team708/robot/subsystems/Drivetrain.class | Bin 7180 -> 7371 bytes .../team708/robot/subsystems/Pivot_Gear.class | Bin 1855 -> 1689 bytes .../team708/robot/subsystems/Shooter.class | Bin 3070 -> 3070 bytes .../robot/subsystems/VisionBoiler.class | Bin 9193 -> 9202 bytes .../robot/subsystems/VisionLiftGear.class | Bin 12272 -> 12852 bytes .../frc/team708/robot/AutoConstants.java | 10 +-- .../usfirst/frc/team708/robot/Constants.java | 6 +- src/org/usfirst/frc/team708/robot/OI.java | 2 +- src/org/usfirst/frc/team708/robot/Robot.java | 39 +++++----- .../AllianceSelection/BlueAlliance.java | 2 +- .../AllianceSelection/GetAlliance.java | 30 ++++++++ .../AllianceSelection/RedAlliance.java | 2 +- .../commands/autonomous/OneGearCenter.java | 16 ++--- .../commands/autonomous/OneGearLeft.java | 8 +-- .../robot/commands/autonomous/SixtyBalls.java | 16 ++--- .../robot/commands/autonomous/TenBalls.java | 27 ++++--- .../commands/autonomous/driveDistance.java | 2 +- .../robot/commands/autonomous/turn.java | 16 +++-- .../commands/drivetrain/TurnToDegrees.java | 4 +- .../drivetrain/TurnToDegreesAlliance.java | 67 ++++++++++++++++++ .../commands/intake_gear/GearAdjust.java | 8 +-- .../intake_gear/Intake_Gear_Down.java | 5 +- .../visionProcessor/GripPipelineBoiler.java | 20 +++--- .../visionProcessor/GripPipelineLiftGear.java | 14 ++-- .../team708/robot/subsystems/Drivetrain.java | 16 ++++- .../team708/robot/subsystems/Pivot_Gear.java | 4 +- .../frc/team708/robot/subsystems/Shooter.java | 2 +- sysProps.xml | Bin 6190 -> 6190 bytes 53 files changed, 223 insertions(+), 93 deletions(-) create mode 100644 build/org/usfirst/frc/team708/robot/commands/AllianceSelection/GetAlliance.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegreesAlliance.class create mode 100644 src/org/usfirst/frc/team708/robot/commands/AllianceSelection/GetAlliance.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegreesAlliance.java diff --git a/build/org/usfirst/frc/team708/robot/AutoConstants.class b/build/org/usfirst/frc/team708/robot/AutoConstants.class index a8e9d19bb24e2394b8511536f09520d5c2b0134d..e5ffb2c53057237e8dd7b69bc896842e2ba312f0 100644 GIT binary patch delta 635 zcmZ9KOG`pg6ouEhdaoK488~RzAP|EtsYOv_z9=($c(u2gY1vEYAK17-lluc2MXIF8f}+sl46P(rV)AQM*;)3x&btPR^>PlZ9+CSgML=bU#K=9^pp_jus*_w@}x0yo1L!nqe6FE09lDtW)+&ZT-3 zRS)z*N!2s*lzw_P?kRLh7|Yg+m1aI$DwMO$;<67{gwa|hCtKI5<9W0WaYTrycTYrR z%%Cqu@U&aqxayieu_;U<1QP^{U&BCw>*sHYx!&J) zZ5z;moqvI{yI?>ED#CidikkZ!ciDTwb@sk+gMA?K6PzUQNpd|-@li#c24IF?Kz--z Znp`bzga4!xt|QL9i55;-gf>?LXMZ2zKHC5Q diff --git a/build/org/usfirst/frc/team708/robot/Constants.class b/build/org/usfirst/frc/team708/robot/Constants.class index 695114f04a56ade2d533ec1939c5d589308a1729..d7818387ef7a214f25aa213e1d9ff6005e899ebd 100644 GIT binary patch delta 960 zcmZA0%P*W!7zXg?7&D)lu&}Tol8KdTkkB1c%We=t+qhOLtxJUv>QY~@aM#OMmq9Oj zQ%jje6B5?MU!g1MKVT(&&Mao0e6u){-}9bx<~=8KZu0)+ejpKM_Br+mYI@gYJ~N?YGNU?{+2V;e=Myy!j3 zjJh^mlGJ)xZ2vebSWVuWZDUPr?{QtcL2ruR((lCY=?^Kp@ECkd1=ymu#XIz_I7aWu zJ=q5K#RqKFfUk(-7rvN^gn?kmADENG6Z*|36b9gP6U}JQLLowel}(Ch+&fY90Yq`bJt*#?DDDfRxbMrj@4K}GEG#T6 z?R^0)eFyQs7Rm24mwe}(JM-U5=G*t_^SuAOyoyMkJi5gxcZS>>^6=#OQeoxTSL!)@ z=uC=noywUKzZEk4;SZx%nTB{JAhDvvh0P9e!|CKiID@R`gJeCQN!IgOWIdlv*8QBQ zlmA|rE2)tHdDdHeejpmC02>OU8>9#>ruh;p&0S?i=S$Hqqxo{Uf?Nq#lWX8wdR`q| zPkkM@!PajiH=*Bb(uNQUE#y|XP1+*|?0`FM?y|X?tONDX^LpVvazAViP+<^-A+kQf zFj)s2A?x{3I?)(BZVNC$)(4pUzu%N8DokU5Z$t-}q5dp9N7ns$n-^?eB*Ni1le`6QlXu`6zS8@$0xxwm?+h0$oR7n5; diff --git a/build/org/usfirst/frc/team708/robot/OI.class b/build/org/usfirst/frc/team708/robot/OI.class index 2a878e18fb613248e02a74f6ad8a945ff7665a32..0e82d47ae86f5afbfcca330a0803dea368a2b1c6 100644 GIT binary patch delta 22 dcmbO!KU01~9v`P&7y(kt27dqm delta 22 dcmbO!KU01~9v`Pe7y(lA27>?q diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index 74b4d0c20a6e8af23c9c2b5a12c11bd722902fa3..eadba0d1aaa453427c60847f2552f75a2f45f415 100644 GIT binary patch literal 6944 zcmb_g33yyp75-0_d6Soyq@5;hN=iFv(&?XfZO6#P;}og+M^vXzgE=2t47z^_H~q!53j;92@Vtg3F)80 z{}+T0+?0rBfoK+qW|nB?h-R*67K>&nUhv{y3jVF42gigpFM9Ekg8!)KbL5x3cts&b z-Hl^jB8Bo)oFj($3Kgh0PYeqc@~GG+hKfR76+tm9Qb<*(*t7Wz*StR2M!OLfk87Gv&ATE4jc@~pIdoxC~A%vc2qYbgtgsPbblZobCwQ9g8|#n zhgurf1)|n~Wd~yMf!KvH+Zc)kI?`$kqQnkZmMtE)YWfI$jt;AP1`Q)5w40`{-6>UA zx!8=@`uWD*0X-ZhG*2I)%hB7)dRZ|04V?{{Im~IS$1v)!Ibzv+9h4b_bEi~GfhfVS zIW#cCaJD--Y(wdY88fX&w>fAFK*IXz2W8g;RR+@>u&tIE76!G<6v|O#pn|XwY9g$h zK0x=j4%W-FOv2*-qSezSR)%7PrIX~l%-3iip9~HSFZS}bn|dT@D728JEh&i|?utZ= zXnRi!h6QcbB-+TY01OxNSwOAuAr+ZiNhycDWC0 zY)FsVAw70rz|y0kK%Wr_=>uV-olj8A5NS8teQ2K%HiE)MF_%Vfw}yuFNQh87$peDU zf{Y2Cu%s4>V9SuzR6PX5`58XVFX>zBL!rY++0#z%dl88Pis3Hf!)cX3j* zOTWvy&4{rhE^@wKI7aYwTR}a%OOKjDPE8ir2TZxeQ&*{8QLEU5B3ZP$_<6hoAu}eB zLOYG9X@$(-gy=hKN;o@$=Wo}CT^lk1%xI}LN7x#6G&C305lfxlGK)3ah}jvjG{zez zQ!r+mLH4BlP~3&a0AT+!im#}Zs z*2^mF8s3LXPe51HO%3nI2WH}GriN?yAU;G0OxtAVHq-DPyqB(n?b|nxPl484Aq_6K*LAyQG$PJ<(@7LSK=xSx8o)a-@;7_`8BGh z#TqRUGv5?5HDYF|hA-nQ8ZDz*z5sHk@M|iZhA-g;LPclP8uGiP%Acxr8r9Kqh3YkG zpcQ;0Yz^}vO(sa@M`D3YbqaJ?DQ%6KsfCNTyzTrwBSzFON-JU0%t0kF>@bBB zK|`Z;61XQ~_{HJyw;K^j_)Y+rF$9E*;7eon3>y)DpDAv_wwc?Tg6%d2x!x;Hjef!G z2peXO)Ne$DE>~iu*@f9SbC^E!0{g-gP-U;h)Wh&^iG=*l=JZ>bD%AlN?~%@;k@OFYZvm1^mprPXFJZ;-C^5riK#NSyuAjNb3oco3@IOGd2!$ z{XfLU0V=TLQRYO=Q=6XaYzalaUTFh!mfme0gpO%qxD_K!fC9Z47Rc0RYxh~(2-{8= zExRf)n{gkr|Nw=11ea z{nfdjmBn27{+JXuYZ)U7Yn+f8OsvaUOAxU@SdZ)v^b8zi7S4+lUbI6WVsj@h=(D3- z>v_TI+!no-@C*K*CWOpvhvT*b!SSohdT@bQResDf5Mn zCn%~vm(hmYhK4x>4x5pXbvV$?!`*Vo;by-j$LI4>7&T%-Dif@>-^y}B)kC2UV^EKW zMIK~Z@OnR7oA{-nh}9gCPf=Zme2=K>5}m?v>CkPRiAgTB+%C9pQ>_A_u5OZ~61y0h zuyjdoxC!}=YW_NPF@M^b%l}NDxh)bjSoTb7WzVEf_Doe}&$Lta%pqmZL{0Y0xMa`d zN%l!2zqw+CSBr%sq z^Ttq_#C#r|G={1q7VzlgF)U1C5s&<1s7_)rkCu#~CW)myS~iB-BQJh=Pyk=e@oi=(>Y`!Furk|lE6xSe4u_DjYrUwvBJlJ1n;p2SMxW=YcLzPWTE=f zs7KPMx1~_`)pH;V6IgX8Rv*C{-&z*eB+xvLmffkLZ(RcGuYsC3hSnRP6mTbgxd*DV zV55L2a3R`QXmfsROJJk0F<)+ZJzEB5>ZQ1YH~ARqaTl6!Hz&b8*ob@4j{9&X?#Es{ zm}UFEl;V-z(B zbdRDof$f>`K1#bmU6a~BhQ9(f};D6@rRZL=1?eCYF`DW((&v(r? z-@ZQl+THg6SRq<;T#6$azNsS*M~d+_JSdxQX?RFSkvnr#jvm(Vhz{MI`L>4d=qPoG z?`rs-jtZCfzJ?#@nCcQg)bJx6H7@aE4Ug)W;S!H&_=%2LF7ZGbu_xf6FQ~*jck6a<4HUvo2MoDI~~8rAEXX{l+B-XJcDOt^PFt{ zEa#pt#trz3hQCS){w8N$kj;y7`tKV4Ax-g;hL`2!KXq)x!*cYB939i~FL_Q8UM<@A z1TDyal6p;==5?tan^M`#lFeM%RLEwkY-(gPPc{qix<^10LPsx-@IaC05&4=Z&~c7S z7kWgICNv%A$jp#Opd}<-yWY@UdPR$s5NZHq5&%+u(HdJ?(z*e?$-Wj&=)fU1FM@) z@kQ-EJLYqS`kafMm^tA1+A?ee(VX439h1i`n>d2s z8~O5VOJLrA;p*;`J424Zf-&M<#cR~hn?ciXvxjcC0+FDp2`{P5DT)erMj~dkH5_mp zlXy!ef>)nrCva&RxYZ8Zw3z4=sG#oYE$QhNIw~*}vm^F^J>+b$L#7P7(J!kr5QxS? z0cUrg9f*c}elrpZ^o7k<-XO=6VK*gxsNW2mL8+pg%b>T~0|S9bNT6Yi1A^`bUuq)} z%hQM%-onAC*-wki9|L0>m(8e2lRD(DO6!}Ei1&?GeZ3X2Vy6n^H!j@HplDTkmv>na zbL)_d`Ch4*KxLO541~7_qL!pnlLfKemU8jfW%B+2}pn8lBum{~8 zM*2{fEOXbgn~j+1#Ij_WL%*sBbz)YKik4n9WDc2WL(--$opGxS8g82=`P$Oa;m_n~ zW+T5n6b+gkyt^cnU6x3N4cv}91Xi3#v>Es`ZZYr~+#*mrI)Hjx47?qe8KO=ew0wMr zjryz@cn97o&^%$*)O%v!U3fQjn=oI_J7C~Fc<%}D$~0@>O1y6}s%BHZf%oGB0=@~0 z>^^=5F2@xDizm#+glga;_~>M;ntE0Yd=MXE`k(Mw$3G+nuEN!8YT!0DVuh4`r6E>{)rL5Q`iM31V&(U=w+Xb3FJ}tY@uf3KCMElNvhR{1 z)(R%gf|jnc+6CHA7_udtO<9ImFERBt+q>0f@{a5hST{lBYNXMpPAh0+_^*5NU+U3}*MB8S(lp`MhtKyr?PI zF0-GHn6|XpE6Y`ZwUbBcH6xOj@5S^Un`Myc-5d#dU32!@G^RYEV}iKKg6c*el<2`M7#n1D^K3pW>nlEE*qbGvCVWHO1{>gTUCLEgQo&(y{*+ z+qghgQYyFX^JcE1CQdcPMzM*7M*5n1RjDXvH?!&*Us3h83)GLESUMTiwEnP}+O~M~ zZOUiq8aY$b3Ka6DL>V0oqqC*cmOr?g8`RH)l3ix3Q)Nea!4@?x9HVCZ4_0Q2{OAy? z*SgWq$|*9LM#sd>*+#_qqhlSXuKXeC_%C)gvw9w;%&bq(Wd&wA9b5dHW2^?L8~0GJ zw0ro9j(PrZ&>2gr^vd)|99gpMjM+O`kuv8tw#Z^QpV`RDQ=p0B^^SpcY>MT_dc zp!iB5WEIc$i=5qpe2#$Hrb7@-N#yM~g#3dj$PNqdRq#I}r^ft4uWr>k=8z?VrG zE<3&gxldpu1O0po`buII5mq}0Pt#rSBv71$&WVyZj3i1qDvP5$i3*OU#8H{VRF10R zs7|7WqiJzWPhti~GvlaDVirfUVRD+;diu3MED8M#z`1NGcLkfM9~HZTQNj6hxz?&AHvwr(IxcrRrKxE z^yf7>%3qmLKAu)y%%sWkc*bRiadHAnc)YLaFq#iy=?Io3u>1hdSA!J?;8%l{ajbF& zBUpVasz)%VFo89BajY$jW8H07oL*h;t`=~$fUErDY8m(Eb0(iNx54NlSy4gyPP$|Y zwHd|+x5h z#qVxLj!hjM+(pDYX_+{q|Ddu(4fWjz4_6MVkhm;ml>|>SPQs9P)7WaN171 zMR{uXnkI$@RXX)PY&?ifBsM(=U3Lj zn(zRX`9_YT*5rs(fV^3?Jo>8{Q8tj0SD_^9vTVe-p?_3<9;ekF$pJ0Nc>nGUR7VP` z{5U;Yv$Dz$&%mRU^|2hN@*MeiEz5|K%wR4egA`9>g(^}LkLMtWj4)rzFit?PC#ly{ z)a&USsH|RJ&p@qB>E$_$HW|`cQC#~xLsvWt4bSD^cv2$e$zM|Bms#f!Q;5{1hxTDU zXs<%YbvL5JrA`}xkwE7NY7;np1my{w!Dvo^FC-d9>a=eN)c#X0CI@*Q686pp7iozVp zdve@S2yqN&(rfo-l<=pNsH510mHs4pnQzWYV7sEvPU0NWI}$ke4OS8!RET1Dg^_bs zUB*iM1?pN!G|(&3N=FG;P4UO=23hF>zifYT<}kxI)avwW1!k@^^TG#<*8B;vvzLW3;0g zqw%+UDzq+VFO9aEk#iVtWh|+7j%q7aTdmsZs;yUTgKF#8W<_k`eSm02kysA-JGxS= w#B{L=bHr-Y^H+3}SWB_jW0lyDBhu=ONDokmJf@$U*y|MO2L7kijhklt8{4+lSO5S3 diff --git a/build/org/usfirst/frc/team708/robot/commands/AllianceSelection/BlueAlliance.class b/build/org/usfirst/frc/team708/robot/commands/AllianceSelection/BlueAlliance.class index 41946a28053b6a9168b53151232769aa4315f605..004cf928e5859d582fb5e65eb0223301a1f3a4f9 100644 GIT binary patch delta 490 zcmYk2y;8zJ6otQCl57YIDhPrC{-B~r<7jQ;lh{}}P(aT!II(cXSFllMC@gereHq`t z@os`iQk>o7p6}e7`xQQgJ=Rmd+^@vxYSw?F^or*%@n7U!3xoJeqE#VkRD{j5Y?if=Wu1vv zEu7>DZaSzJNR^Rw8g6Q-kL7ee?L9k9dZ%QwK#2r!ZN|+jJw)DUf;3W=3AD aditX!K|XN0x~}|kuMqIRIz=lPaO)2jI3S(? delta 520 zcmZ9IzfQw27{t$R(zvNhLrM#UHnjYw4M+&y0D;6~REPm7Y9$uN4m<&h#KOeR0+l*2 zAhGf?tW1b=Q<8{S`Rw?+`<>%Q^`VYFf8O2!oZ!$!2~7v9C9I)kO52pc#X34J6uJ&J z9Bkf)Uj-NCI1piHOJf^58oSuj*hkMnUn9hUMjd5=v$!jQ_)gsVl|d9;4~Calr=w_e zBOor~Z}Cu5j5JRX0%Wr4_(?X#74Er^tO^!23tVY-0UK3#oGmOSdalo@G(AsFP_QSk zUSZo)6koU}VOT!(hG6kakyho%m|n{C6XuxWK3@YB8O5B^urjAeoi!}6tJx1Z8=bVC zO`YW@&U(%%Qzvg~?o1fgc5Ph3Eb>p}s1PT;dpp??24OtLKAc2r*N)S@SfubC^RF1QyTRGm!yXNaR zae+!j;=m8!MJR?45ChuNP8YR9djr( zL#wTlw>;GcGSP+~Bq28<=s&pgkSD6E3=dVmAH+S)pGJ`k;!x~~NQ6eJm_HY0?0m%F z*yC`ELk|aGg_Qu;&X%dQ-wEdPd$c>}m zUEsq*kzsRot4$Sa6U0Wlxang9w|s1(>Z67&7u!DSxb0)f0`1NQ`oEbOHbgJw?~f%P zl1Ek~yGLWncymY{!}{!UuPo6Fi@}KDrixU;z+Mm&k?4&%9=msF)8xL((D=vhblTM) zwGn;I+s}4sNA=l_{25Ox(zL04qxPvB6|L^nI#{CzSfF&7ugK?5F+atsP`pKO2zi0f zO7u-J%M;AX1aq6>EoP=6+ci+hB+?%cj-4D_1Jg- literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/AllianceSelection/RedAlliance.class b/build/org/usfirst/frc/team708/robot/commands/AllianceSelection/RedAlliance.class index 03e0da92cc3d7ef4a6b76e0f2991d28e5deb2982..200438a08bbeeb5e617fe2e2d6f7207060008ef4 100644 GIT binary patch delta 494 zcmZ{gOHRWu5QaY|PMrofErmb}Ev39E*&tYRATE(Jpd!H`*Z@+ISo8qgg)1P&N#tY! zUd)U&^ZoN!$Io&8_4By~ZdoM6j11#0d+a+iNtkkwV3-*W4fBWV@32d|+E+;YLCWm}T>>S>t;kA)FA_c|y961yS48}UkfwD>^1N)TYhCgKr5OKDFcTNRPg zm!D?f1@5HM30VD3_=eUiqDChrlw41UB9(sqmYDTon_lcnik(<%5;rakTcGmbkS)o& zHFEK;F3>N|mOE5rR+B}U_NZK@M*reh;#a>CtT DOYj`e delta 513 zcmZ9IOHRWu7=*{E)40Kv!u#03JgVWoyuM5e^1toc~Sh7W~J4_h9# z?~|{JkGU)oNxY-6i#?5f9B3S(>!GKS;7FrI#g%vr>-{vn?GLVR&WGvnPC#5{-{PUE zm}Q_7l!V=g1dRr}??FRdPDk r$t#*UZRFs8W~byVGTYX9I?HssV|ax*zru*W9hU%qS17PFJ>c>$5auMF diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class index 56eb970e90f2e64914272b88b62d4f916aa2af8f..af359865390fb19c27f63945d708ab12fb79202b 100644 GIT binary patch delta 488 zcmaiv&n^Q|6vlsd+Rn5yBdUg0RsR`Eb!lxH3nEBt8_!`WwHK0RRy>1^jV6f1)&oeo zV&OT&xiihQ3*z3KbMO7m`Of#r4G zG%Z$ba=Oj8aj2QygQyjYHH-DZ*{4~epg0-4w!#nPgjcHWlxVqZu&LOK;p_0(xICpH z6Y~*0Lz+1XDCXt8C82cOOET~zn-NfCLGEr`WRaq7LIfpi;yKx<7KC3Zzwh*hxDRC8 zPZ&Lq8IMeQh$YBmZdoS7lE_zNUR5kL>EN>?d!iMLwbIgA9&2^v)FzG8oz7D(cVlKh eE+^FG#O9y>+n>@@39<4&@#q&~PO%a>tNs8^%q~L! delta 681 zcmaixO-~bH5XXPd?sm50 zOeA~K&%gx^)@VY!nfL)nIQu<}vkSEKV4UQc=b8D>%>MtgN8w|;{`2?OLtvT*HkU|Q zjGDQHZOMR{J^tw1CmW5lO`I`{ahncOW-cC-U@>76^%L`FiOCLbFlAPzlRcS8{^Rx0IUb*=Qst++LXnpcEU`TXb; z>5Yp_-$EE%rXR%>iN@q8|Llv?7!Yp;iHjuU9XSEH%AiC_#+)_&ARJ&@=?31U?$otH zjLsM#y@Bp8x;= diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.class index 41578ebe26a44920e970bd4cbe0d25ffb85e41b8..fedd739adb02f73bb72755e86ee992a188ed4a67 100644 GIT binary patch delta 575 zcmah_-AV#M7(FwtvpTL7wpy8$R;I3&72Wy=W><9+1QrAlT?En-1ojHCSM>}*bmKxn z56~L~1-(W$(KoaC(?v8e-<BiLEt*Fc3!q z3{&)7q|4NOpu#atRp>?xGlVUFh$Lp!63O?8mk8-u)$zcbC-An7fQ_IBvxg8h!fg+- z>*EMv%ZE|g8?!NCc!*JFD4Qfp z4E};)92ZUx4wp^CJY!&M3=$n3+eVnob~#r|@Sqz#VCbdq1Wm^09Tfq6RAom9pr7`> zS`z~p6o9jT)VUn?3~Pi**Wy|%oK z_S%+%9Y4STH9Os=Momxcudd4oTIhC-!URzcQle?flOfaVWOWBaFetMdq4*uaL!B@g v=h>6A@(6->%WG5kSQ9BU$VemnuUFf1pG|KfS%ZxJN4ns|A0Wf9V=VRsdA(1@ diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class index 82d15ad13901f93c7c05efade2bbd220ddb5db3e..cb101b67103a7c03d6faf95804c9887179843d21 100644 GIT binary patch literal 2066 zcmbVNTW=dh6#m9>*6r31+FGrulG3zkaoo~Po6sb6NH&RUH{dpDY*JF7)y5tt6YL$c zmvRvg`~iLd@C%T5K|-|z0_7QgLEn(zoqvEhv*SxrN^uy;<8RL8J7>?C%P)WZ@H2o( zJTNhZd;$f--XH-DWB$pPYJ6oPhFd1CV>y90jrrdvqG8x;yOEuV!+6WEXQBmp{iZidiE(A|wux(GVW&Ha^#txQn8Fo-aO&by&M=T3TW5$b$to>| zio)f0!p0`|%Fbq;B*%)f;?&n2PpEZU7!S6E&oEb%-j)^mHR1VzRr4xVz@5g___XE8 zO&M4f*=RU!)wi55kgjaV(6>tB^$c{%jlvdr-INW|bg?gupRPpH>CQoEBn5EoUE^E>uUrjG*otzz3h7>e}I!z-qX~XmvMp~nOAX! z3jGQSI7>I%2zGD|pJ5bV-~ztJMSMd~%=Z|>El5wGy#`Z`HhK6U_8HNv=0R9E+Vz@b9~4ZjU4DIxhXU PuRmQ3|TKaDoeGI8nugJNFblT1&DZ1cj;E+1~!<>+b39nf>YMx8DP} zj-rVxScziQNbRRc0~l++e6GhACI+x(Vg{)wZVqD|X=Cm8xz;c-jEs?5Y!Qg@TPQ?v z%SerdvWanIjZ~(MY?zqPj@~wL3M<;|rjd%b(c31bG`eNt99E3fW*f+vxTqBqZN)n# zrnMr`R@{kVo52*WP{MY^C!Aq0F@2XIl9mBUx9ucnMo)!Vw@k_KGQwB3TjtvCP7Lp2mtpP2jTZvXEyxT% z@HqFQ$j4B?d)g*teVSJS>%)ey!VHq+h|>Lb-mH7JQ0Xv-nsATdMxXxunv|3`E8h@q zK9m_2`XpC5r|q}6*_If?`+D>9FUAkK+tup-2wTZUC+uvWZjTgnS1Mcan{K65*@Dc8 zs$y90(-5_s{ebTuaNDysLwSSb{q2B^Eca>TnJv$de163btG(gLph3qYk;&}o(|O#k zRPy|TfV=wGl9fcRFFQ+`eBt>K@9LwfT{w==?Vgs7^cdJC!w~szT@H!XYlNcMu{~PI z9lCjD=rYt}2oYGA1;bVPx=at#&(|~!;2O>6l$C8AmNkNT zEQDnxF7*=m9vJ*e&qo?!vCAZV*boscwj1K#J8AU@k#&eS{+pP729aT@71#1#&5Q4R diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class index 36c15e9d09f5edeecd49070eaeb4433bbfa3b3a1..51b79015b27e3553bd11317ccf71c54c3cb18f8d 100644 GIT binary patch literal 1837 zcmbVNO>YxN7=Ffa*031DM?i!?P=JCHT9%KJ1QLkjI1Us;5Vk;2RcK<5I{n;p9tC6XaqmrZbpvF<=NTx!8pXC!e!n z8C-Vqzgp~KFJ?2yyBIQ&b1sH4VTcPE%sctPZq$g0D!Mpgq83~nGv87Miwv#|WF)yS zp9qG&+}Le~^t`ImV4y4maU*Um3ti>QK3R5`RgL?%xt38uvmR01{RI9~uQh{ozIP|I_C~)5orx~0XQ^#dfPgo)tHbp(D z=N`R9KzN%BBB6EMj*Q2xs94uTNt(L0cZp6t;E#9~9>y4M_E=9{%SR&8Tn1jzz>2{u z&8Vstf*J{-i!zLOP!optN)}h~3&Y~($*Zvrs;Vefv=HH(@5?UdHHOmW>29frM`A9h zCq-9PSvDeuLXSkGCI4OAUlCk;S1n#7e19n>k}ExuY*6mgY6^-rMjOS-3>SOk3!6&O z7JHSp3@R2gO!b)D5Q6q9$t@)?i|b~m#zZ~#9=D}u4<;dBEUJ(yt5t!a5mRz|f zo@tZZPb|qjkxM??i0dZT)X2ieC|y1$l53|QY2+{lBB$|5dYF0srB^B$I*DNjKawSD zo%ji-l0fQUo5+r1OX6D{?|_ZJM(XY$`UcV8*Fokbwvc5jS=>QnJJ?|j19v;vY2hw{ zyDc<{dnhrzp17AR`#RWf{X-Obz`|jI2Vde4k&jT!;SNTv;|Mv9T6m1$4;J<`-^XG3CZ(KDRGbDYONn7~_1ZqRIX zO|vvkp(){B*tlqAt5$Y;e~GOb-ZxCb@%S5 z$}AffT~d0(4!pY5 zo^RK6)%FE%=1xx9TCFSJuBv8}yEV_|fv;TERDow#ggeh2$D3kEOq)7pOg&zaM6V%g zVLjJr6)wqx()ESbLCZH5tE>WD6-8<48tMc(ag*QXDV#)>VWr1v~{9Z#TV$CkMq+5<;hRGhmbs=c`A+{KbDXf~! z=e`UdVVCRmuPEDBt*x?)J*M5(&{gGgU(C6+u(K6al69Y9zQ;gx;P@?ZV?%IlFGcbq z$v2h*3esx_K62a{vY+qwX0I2u3R-kEGKIo*b1#Q@tyUI)1;RBKmZD@zJ;j+a;PKCI zdevM~lfrSNIqVC{QJR6#gy^UI;aJFopFyf(g==yY4i3^diUvwQ;+Q}d3_sFUiPl7@7{PIpQ;`uTU>hfMVQD20%V9@od!22AWuGIqmPTJ1{e5jDpJE4T2G;(C zbuW#s$1p=oF5wWa(v1ES zhvDJ~{=re)C3f!2pJf7 KpyIb#_5c9N5DiNJ diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/turn.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/turn.class index db90ec8779264b77575b579a89d33bd2c58bed20..bf2b54c6a3170736243f082a166b7cfd9ef4390c 100644 GIT binary patch delta 223 zcmW+v%MQU%5Iu9-^hV=ZO1;%1h=qvmv1+5euv(R@Q#OCy1$; z%0}5BU4~ppk^Y5x8imypVB;DnA21P%94uBamcd z5MU4l(?VboULf0pft`VIau$=Oq5uO6P*xOZ2ttP#R0j)#FoVeCeN2jsqLUvmi2_M| eW+ib6B$Y6;Ss27XaVI0>0 diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegrees.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegrees.class index e7466617cff77f48c2739b40975900240b07de37..b2f38568d7e63f29ce6f39f8b0c66ce2b515e5a7 100644 GIT binary patch delta 72 zcmaFM^_FV`CyR;jCI%)xtt|{J<;>d{*q1Z#!}uWXMg|53W(Hv(Da616B$XLB8B`b~ RC)=_pFiCQ6j%VRx1OP603~c}a delta 72 zcmaFM^_FV`CyR;DCI%)xtt|{JEZZ2^moo^!xaA=JMg|53W(Hv(Da616B$XLB8B`b~ RCfl+oFiG%ij%VRx1OO`93~m4b diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegreesAlliance.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegreesAlliance.class new file mode 100644 index 0000000000000000000000000000000000000000..b1090923094224c2aa6557c6db3f3079b6086b6f GIT binary patch literal 2038 zcmb_deN!7n9DbI(Tyh*Q<)zqy7OZJQY`IdzwnA%x2%>4N1gk|YZjvQzd%25ycdhjc z_z`r*@$Zf^{v%^kM`!#1ekErde|xz=6vTfVhTZ$^Z})kg-^*@(|MQpM0KA4>6Q?kf zg^f!lUchXYhRb@GGs!!z9j|9`1y>DRGm*ti25;zjA%jH|*KtD|Z|dQui6ty&u%eBk zKK+&+R`sx^vEMeZZr~k;KIH{Gke*v^3Q=QVMTXwG$DN|6DBT~p97l4uDi#<_El6@leo3T>yw+rh zFGMvA$nGl#y!!AKZ^rzl^jB%WzpJC8&091Im%e+Y8wjPsW}rQ0*$Y)wtV$io=_8qE z9`Hxp!i&fmc-KM+w=CSodlpV(+`;RBGiF@4Ty*g%{zI46$RuN*8ZowGvq`qv>!L6-L4^hIkNJgQ#pI3T|tJk$1`r|dQ-v=3e7P8 zAKl@H75|AJh=y+$_xpo7A*00Sp;Wp}FXT(d>nnFK7IeeR9WU}oLWV3+iD2!C@~Bum z?#QTEbaU1j2D?ff>7{1#LW*{@6nUg)-=Pi&s1K<7DS$L@HluF5m~ZdsYLkWOLrZbz z(80N*gY_F+1vT#PRy?k1c3GRnj!ATN5v;pf&rx&~z(juiIMz(ywOg2BB!74#=^8#F zPP(2=9kt{B3o+GWB40d=cMxuNmpfimdJ2Nxp)Fm*3`Mi#*7c30i%kz#(hs~Qrs#b; zMGtBZ{n6EozUX$+oCc%o`x1?3$f_ZM6wN0K&%p|N=xHHQIR6aE!t^twevHmdYJaqA z6iJMsmyibub(HX?$TvwCddJH+OSAscj4b-noC!Mh3UV>yDj{j#NJN${6n;W#55`vy z|HjuJVV)tilNctJDLP@b&&51RoZH9zK8gz1-b3bBWbZwPIn>*NHPrVr`db)iVX%c0 zUCtqLYT_1#+dggdfBh|nNmV}?$;XKnMxJ7zV{22VBSC^d0j6opQ6kUb8m6&K@5}}+ z;67%$q;AJj&(q#Cdj7yhFQp<+``gJ^Wa(7QcG$3^!NG5(bSo`L?&KezR z3u))+GX28Mk(l`|^4Tu(EK=h)8BWlDQoo2X|2)l_--swq9#q?;t^pQE^kNsHv7h-@ e_aWwDh*Y74v3~+A5!-SXKq>~Hhl=2PaPcoIAJBgQ literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.class b/build/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.class index ec8ab5051916d58792d95aaf59e7818c670c217c..cb531df158b869a21d84fc6b7c8ce8cc6f39b55b 100644 GIT binary patch delta 552 zcmZ9IOHKko5Qe`V9^(uRBZ49-2tF7D!3XF<6ItlaLwFS85e#nh7Gg3+7p`1+4mU2n zfUz31nb?zbbxr^E)!+5(y?Gb!-!HE~pCg|v6^|))1(RA6<>~r99sOg!cPoOCiC{B#<@m5`{ zp_cY$rBMh>_Ib&A5|zYM>k0KB2Zy}uzC@%T$%1@{m5GP~MahyZTEIDp$z6VoQzRLY z9^(cPb2C^@BwSI#V_BM(W5m2AE?Ht*I+$)TJH|6qVui{UmINwq8GR)RLt}lat;e*E z)yhnaR#XFthM5)H5uSLC@c&t+A+S*1-i*Pr7Pewxe?vS@wIVVz%5;hynO8SPNc|EN Jt75=m?FWMOEL;Ep delta 538 zcmYk2OHu+c5Qe`Dk2qsyMnw@Hp!fjfrHDHhmZcZ*0=R&s7H6=yfonHn)l})il`GHT zIV?L24wFTvJDvaQ&6%NRi*tO#CjQ%ldR7HH)vi1W zfk_M|y-aZ&%9)2F(I?9qE0P)MLXK6bk<&taU-D}*vtBsG2_v#oa{wXL9h>ma!RQZNB9<2O;~&(-sJa-@NYVU+R!V67IW5(4xeVNjcg7dDiE}=9m-x_SEK#iVmy# zCdQ#=Qa5Ql-hQXkxF$`97HviC>A@(~2czM5azC7mO*#(eTsT~EWpeG%)jUOQNoLB|g#oK)uVwAS2cmkEF%P%7e7xC$UXVqBuJtU_i|OmYHGX zhb}FxeDU47myID&6OKD1`@UUbA5BuK)RAhHm{Z}G=q(az!2wU&eV{-**td`oA Q^>reI#FC&m@VhSl0iwk%oB#j- delta 552 zcmZ9IT~5M46otPjKV!?3`iqE)_yZ^uQSrgV2SegkTnB3)?85LOBsKAY1-J@VV!Q** zw6PEO&h6ZD=A5(gm;Uqj@7D@=WE4>0*yn^(O*7z(mL1LmF1WPgl|4xbXlpu}?)3Gi zVhABvHnUAE<9HcRZtjQrhm1Y-*8yJ&$IB@`Ewq?I$Osw_Zlf)-U( z>N&p1@$EalzARfoIWbl-l1?T>Ip6^`xwTGW>2}X6%xzuU*dSXLIY~Wu4k{U?(3cb% wiiZR(7817pJ7`OC9UTB~mS0kW_rQ2+n{ diff --git a/build/org/usfirst/frc/team708/robot/commands/feeder/SpinFeederBack.class b/build/org/usfirst/frc/team708/robot/commands/feeder/SpinFeederBack.class index ba2c17bccd3a3e7d678607d78eaf08d118e7267d..92e6d4012dacb35958ac91620f166d14f5be8d1b 100644 GIT binary patch delta 18 XcmeC@=;xRq$^LRC2+Z23@SYg}M|%h& delta 18 WcmeC@=;xRq$^L->3^ppfX9fT)-UN~W diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.class index 2207bd0079126c361fdc7ba13e2fee73ea5592f5..d2e77f40253fd142512523f86ae4d344a29898b1 100644 GIT binary patch delta 105 zcmeyyF^O}-Ze~vp21X!cVBp=vz_g8lc_srZ%Npi2Kmle3ejv#Qq!}0_7&sXu8Mqmw w83cel9*718K?WfpPZWrm85p@IzhKs3m1kgMP?#*qV#BJ;z`~$1If_LF0QS8MLjV8( delta 101 zcmbQl`Hf@4Zf0E_21X!cU|?ci10ostfg~GPM1ny8$mW5_G6*sVF)&PKVbNig0m{ox ZHf6Co+QGw?IW tOy0{Z&MCwo%)rRN!XPr)i&;rniGh!Sfq@4o!T`kl3<3-clW#Kb0{|L*5|;n~ delta 109 zcmbQvIh}LDAqn=>iqz!Nl2k?p&W!y06vw>u93Y#~W#g?%rpXE{lHxK9d<+Z>JPeFL yl97R*K>$dzFbGZdVm4G&VBla-1d1tv)rc`L0p$dsYB+#$!VDq|jFWFN?*jnb$Pr2a diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class b/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class index 536296143cf107afcb85df708788e0cb05b2880a..0d46aa594bbf3d11dee89acb5f8d64b950dd98ca 100644 GIT binary patch delta 14 VcmbQuJ)3(24-4b&&Acpqi~u2p1RMYW delta 14 VcmbQuJ)3(24-4bA&Acpqi~u2L1Q!4R diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class index 11803a5808f84961ef9ca61b85934caf3bff0f18..feed2c610fb96b541dd2fabb94afba3c06d1d079 100644 GIT binary patch delta 14 VcmeC<=;PRMpNVnz<_AoAi~uRj1wH@( delta 14 VcmeC<=;PRMpNVnX<_AoAi~uRF1vvl! diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class b/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class index 08590506a6525acd187d1cd7c131fc95ae7badb3..4a7176297ee5ba77861f6cf595738341be9a9ce1 100644 GIT binary patch delta 14 WcmdnNwS#NJ6=ufWo3An_GXelECIzqj%p1X+_0hAg%~z!*yM&ixp`JfY8=r4dpmr#{JJTQXld!}#u0~|j_8;hc8t30 z@WFdyxrrER-Bhb{L`TvmKaS|26evo8vJ_~S0t=%Sa`f*uf1X5+XiRLN)p&1WVc-2lCo;);%yh+!5$ah#d}irzLb3+k+pm%(MQt%UKbhcbK_%tqTy2wpJ~`H z(DK4L8)M>tYTqC*w4)ie`^-i5jExf=>qN$OGScw5rTvA5$!5U0N*RN(<~FC_aVACx zWSMWPS%!|07^NdFm$|q~#|^kq$DO##bh(1cm-xyIxw8FZ@U@0-bbO2NG<>1sdyJKu z2h2&X+_Z!ELC25yNg!ZOb@}dVVGro|8HX5N$1j+t9PxCY@t zJ_0B}DJ43!fDSktvaJLr;2dekATIckM_GgE^-L@F!ic1KksWE_MQ+67MKF@-ML{IX zzC|lj(&J?+EkW?!y2q#y~8^AZ*4Ei{DOoC5L8y5}nH&2;R9K6NzlR*;-7(WJYLrZZ(u9+lw&l*7fpvAB?H8tIL~MMNz~ayTv~ z@{sCa%pl4n;V3oAkww~J%w!NB$#=n}l(pg&I$;)(pBL%CfaOf|Ql@$~Q4TIgBAM|d zfzc!&SkpPljB{Gp9lWi*^Cqb432cz1b6CO=CzZ>7qFf_!1+`eNe;I54H6E8TW_%_k zS?px{TuJZo|MlYhua}7_FaP7jCg+W=B$WsF?l|~e7&7b`9qZ7^us5J{Sr;YTHKBwJ zRSDN3WJ%O;SCs-)3JiN4y2w^Z-a4HH1vBkrj>F8UY}UR>w)%dUl@Y^Fe4%*ggt09+HWztQJa%+O-~C&4*g%IJ-$2Dm(UtmZv0S z;5cctqSFNC(TX-FD1=T>2;n9+m!uHF&A5fyF0{dX23A>mPqS^16L%}UIM@uS>67}m zQNO~H*cxGIxV;fJYr+$Bc?bXah$V?D(`nq6vpTl{-AVk^62H-!%mtKU!)Ju*5f)e_ zCWL%OJqm4nZ+nykj6fZVO0tdYO*pN>@2FfRikh)=$qG2CM0>d{uJF5gWHe)49wn-T zTUz&wHpzkL1 zTcB=0vp3w3zI;jsD&crpXEn7`!|{>=Bag~P zK@A3#&JT*JJTf#Fdh^;0uJC78E<;~QkJw{f58acuwJv7v_U2{|v7vOn zA*zn8Ox3!{JIksy(~mv;oxGb>%IDjihI`mX1*qkuE}$%kkQl^~U&PTa6n$_nhdvv# zIJl-Y@sCGuHlH3PSXOU%S$ zNUY(*CHt~fGl5F>B`?OXtBG1$9Xbkn6S6c^i6%reJg#AFpb;60zX|QQ6-RMKBibpH z6)49!0~s2g(D0;UeKb5JzqywVz~4!G^Uv5i-m2Hr$zLrpXe;CLqiw*@It-IV5|FQ< S{O<~A$85Bxk2|p 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 KhRLMn;`ads84Uga delta 3073 zcmZ`)eVmk46@Jd_%)alub9Z-kVP~0H+y!=pVUhhpc3Dy(e^&BqvC@PPftDf=QA55K zVi`ZuRRK|7E6bEJD-DbU8aF|)v^24lzO<}N%_35hKCK9Q&V6U!ogc3MJmR_%4rV1<>G!1bFn*)IoPAHSK-?Vd4&fQ1{A*I;6V=w?9;`5 z{d&m3!wwF3sK6t-`CWzYDLkt1n1k8YPP_=Sh2;NE9-=Q)L6D*Q^}d4*r= zk>BXezg2j_!S6ieredG2UQ~F=!^`-+!Yc~AZ4UmRr2nX2hxPJ5X{twbN%%8fRSvJ| z@^xMQ#X}w5h~p^!s)zrk@OKaYz(1A!zZBkd@ox|R!GB#GqfO&~E{?l+D=rXmCE`kn zBT+|Udu|suDpCLL*vtOj(q$8SrPSa8%s03Y3k()wk-4<+&0SMN{Z4uco-~@+&J==H{@^fEq+p zAAUttTWcw=wN%(zifk=avzEeHOYN+seAZGhYblepRLWXvV=X116|EQW(umfK{efje z8wW+PmbzF=X{@C>)>0sAsS$04p;%wU4P@U9mtT-g{=DR2|FTha{_@H`=TkiQ4K(?$ zSFXyflxnPzF<2{;uueKy7VpM->Ba_`i;c1neX<0bWCe1v3Rg-mu97}njg5?8g2?E@ zCawgz!CNsMCHfmo(>_d{_W(Nb=)9ln2=r!;7TCgu-HMGFJr*1e1F>4Tv%x=J)tgg? z=_n_D9#MRO>3k7o*iMDMjIp>2S$qX8xCdQKXeRDMH+Hk@_wwoTY?T2^w27Xe3IS35 zx{7bF1eY?EMI@_Vs&5RR=C^}bOEQtvmvgSbHI~b<5u+`afc!otvERlXW4#k$>_iwl zQHU+tG8%)CXEJq7-rbGX+C17%e3S#c`w<&A6`Tv>y0|V!f}BR$d~XleHe9$z8Sb%n z3Rj4B12z|;wbRGRnyEwD9^^wlRdjD@m`166 zX3b)2P%Zw(>T&jA%k4uxO@W_55{ImJP#BfrZ5$p2uI(hJv|Ms6%VXxQ6X-ry-z4Y7ZbulCZg{x{SJ}ckLe8(UAYWteyF&+scKI6m<)WVB~E4DAgsq|y`ghT!qv9G1=JaGO0_U(;n@(6Zr_ zEt3=)qy{HT+WMWrC}5)umVcJ56qJ9K4HcAs7PnhAdQKTSY_eLm+9J-Mpd}*5(7=f) z`ro71GUO$cOdoMdlmBc@XQ%Q_F(XI=JZZ#88BZP)&@R~`{!>CV?krTmdq$mezWQdA zr!*tUabL@6Kc2(BP129z ze6+!#=-ge%a%Va-RAX`$9o{>v!&eIxa5P<10W!Pj>`*;_t#Gz2Q+)QkVb6ZOz++`5 zJv7MV0yr{%*z@;<*%$Z9NqID$nEV39SU60KDDEA;Ut8bau>6A=dcDB}qnznGtdL!` zjYC61RwE{BP$g@vPaxokP{0w`$+A@e?+a77p-`!3SIwq`@d2DOx9S5bW**%G_~6{C z4{^cVg2lPJabCaO{xG+7yxiD7uw0Lw-;~E$`peK8)Uj6}n_2N&P$OH>C^w;5ZpP_y n3*INU7NvD|fno&TWWh$TODbur5RnS$k|h5IkD@{*%uN3uU1j31 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class b/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class index ed013db421cc1f410b39552591e89d53aecc9e16..900d598cbe16f8af5210c59204c85f9305e5bb03 100644 GIT binary patch delta 873 zcmaiyO-~b16o#KWGj!T%pC@DGq# zs4=eHxWVXPG*Q?70RIJBm&S94u{3_fndF>v@0|18_uMm|Q_qv$*B>7~0b?xK9Cp~v z5t|{KVF#0=2{Ihh(TFyq2}v8*(Q$3c+DvG3B37+E76`Kw{;;*y$Vhjf zF!bpX*%FH=vE8zIh$Rt>7dJ49A2F}D=Qn73N38gkSb(ja6%g0{4T%6pM;#UcJJzMp zV6WI7!6HCQRvqk<1A58HTcpt^*LOg+z}-5D{gSQ~^)^+M!nN#e6Jud=e@mfi7Usyy zS1rFLb1=mxw5WjqcN^e{G$=M?D5a3n8EzyZiqz02!j!xRITZ2g(RE}rFCdvA_4Ea{ z^$N>;EjTmmc1zn(i?&Qe?U$T3jC56F2Q;=3>im=2{_N#HxFi4L7Mk}~7D0M?Vf(4S zv|r{?oQW3Tul5y#O-d!Aq|)iA?f2}u_WMm%NHW<%N<}RjGGzT5l$aIoh@LUw%~Z2L E0na#DuK)l5 literal 1855 zcmah~T~ixX7=BI?vLq~_NfDub6p)sHwTn`q7OcUfR5TzZNVPZ4W^)KzlRcR|Ct-T$ zzt9=SYj3>K(X^v8j@SMu$M1j7rXIH9x$SQV35fqigZ_=;gCy?bLjySj z+YHHu+Y)L|DB&|)EjprZIm+i&etZAOt_g3GA-?5$uDZ_<%`P1?#PXuT877LZ$M>7{ zGWU<{a*b9pMd8@BW7~K2JY0;aQ&%#q6@_25n)1Z;rLs-$4d{Gw4lFhPw zCKazs>p&Cw>LIs%x;vwC9EmX+Zi3!+1&A&ewZ(Bcw%V4tcA4CMK0=kR-{y%8@A8^0X{$pWu=u(exd@<7#~q z7tC%ywOcmB;^m_9!jsDOlr%AeYYgdu=rY{A9O6(%hiGerk4(IZX%l%|Gf*(`5FeY^ z#U}sjtOls4bM=O&Kvm|^wui-#tJ6!S{cI%~LA zCy`{;-11Y4gz3~+rEVIjOtQN=F>&s7s$+IQ{K5{UtW0Ss@RsXPfK&Yo=C0>)KVP$@ z($k)PNHm(N)AI~d*`n?Ot47qVlJZ@zx>;Cyf;oDirs$<%i0FDH z%OIN?fX3Ho_6#wyfQ{wnh%Ens=$BXKo@3-U#Fu|XybVKte!*xPiH?4kJJfFVP@4=<7wOChBAJ|q&0YeV{_cnWfn9kS?9zGEHi(Z- zULZa-MEn|wU+=-|if33p2iXciQkkov=ogrL+#kk!7{^u*QYsW2flgh7(!4|83|V&w P??G;c{sf~a=4So{kh+wG diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class b/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class index 3ddfcb1359e85c7d9481cb4e6fd14a4bffaa0f04..5d7899f4c4b034c4ce966b0c3cdd1762a41427a0 100644 GIT binary patch delta 14 Vcmew-{!e_vMRrD(&6n79SO77~1#|!a delta 14 Vcmew-{!e_vMRrE!&6n79SO77^1#lwS}w^4A>SMc|=q+4@Ieb~~MwXJp}wa+_z!P1I6V5N zEcll<+I~{`Wb|)={|KBF_)uU-;J*ew!pAy6Ct^x2c9Pp54<+g36^|w!T_c}HhEan` zyd40@Z*UFLWhx*n!$(2NG$@O*z0oRrD+W)7G|Dj$rCfu;lqbtCvZ54>#pq8eRhPz_z~qZu?) z;0l3SfmyPCwn10YXEpkqMxT#oxQ@9gC;n>EdRNLEQ+GYAEM4BXa!Kh`O|31>ohF{dJ`3cEB>RQ{X{?hvXBx1RfUHEzl$I2)bHLd`ak|0*}e+$Ax`aWWFM754tp} zGwEuYOYk%|uDFEYE1NuN%A~22%F0ceNApc=Mz=-_Osc1A2r2U#+n2O-7S^;aUEb1e z(n7k{#NF6pz3$sK4oMmL+Z6ul;% z#{glfbvP}{I%te5YLzw1Oj=GWOgtfbTWL}otunD!c6$Q7)(1v`ceP3F)L~^MkIC=H z5tBM;4I#CuWOm18oimnpbT+PRZjtI7vF0alcJE~SX7b|F+t5V_G?jF8wyi2`>?~ZI zSV?Q?7LC@Kv>t;d-71P*bepx>EGW6%qzx3)XpTvDaM5U^z$Sq^1@59RYP8v;Zn~RL z$){c!KV$A7Z42E)m^{(in3Qd`1yig;sVVMtbgy+HHAGwEr&CKj>Dx@YpLUpd6|ZSz z5z4s;<<_i>N_sH9A;U|ahX~`X!@+!OU$D4r9ltujSh&C)#moiHMpWx3y!<(5;HyG~hdJY~7}l;!qQ zmOD_{o(6|-BPs{CqO#nL%5p<0%RQ+qx23Y&naXl=vV}B)vfKk~gCMyyjQit5nHfX} zEPu8Y{whzI>;$>+H5}v-;VFBWHJH7KSLKC@D`Zs`SFai#d>!AA^_bzTKg8SzPnD-e z!(k6kapN%Vx4J?LIsA=KX;mUT9T9w!cO&7mMuaEBGlcPO|5<1v5J#^F#4pVW6Tc4& za*J7KQ*Ot!gbt|6iFQ$iqbS=5AbAKO_lH=RJ~ot*7S1v2WQ9n(alnd)tLG-RkdC@@skDtq z#YEB&s@)-vlMCM_$%Pf};@Y{{ma=3x(vPc`%nHoqug&DlqgR}?8=|RB7)g#M;b{yw!P9w9vMX<7LLXu| zN6v*CECYHBN%XjqkmDCoyGeu{RVPU}hU4eNT=uF+xDT1fFhI^WyP{Ow` zC}P(3i?U+FS?s@H7W}R`A1>w3CQ6Vi$2GD92QL_W65n=$r}Ju+o9uex@UCNa2@dhL z50A3#XZh+$@lRd21X;skwpN_AdPmXvjw%7+yNR>8690EN;q%3wX0fBAh&|_=4gXL` zmezau*{YoOHlE?g!BHY#a3a5V;gqt^-^H`6b!rr?7oC(|l3sQ3HZ~WOs%>O(FM^(f zM$f~f7Z9YEkVCI18M{~WN8Bk7TtR91m+g0nBTKkv<-Csv=5y1B_!89z7Vw>_AHX&B zfrZSjRqQ&R%~7-0GrL?^EU<{_#madDvxs6hGMm_~XaiHZmi2)~)@f2Y&Fo9Drx!B~ z+O&mfs!eZVnr71_O#L>!nQ5+)TFR_dG5<2AVWCbXty6__)y20HKYs3#zLH26#hj|7 zOT)#tZ}+<+Dn@po-zC3|a_D>uYWdBPN=GBb{aD_Q72SPkwdu+p%5YE1vj?#id$3Pv zUO(DSV$}dv&&lgSNu;C~?R`iW+tG)B8Z+-~=tG8b@?Z@Qg0hekOW%X!M3BU=E8w^! zURLqHPN{LmUVdmDN4^r20RFc|W`oYGa#-a>^`5o;xW(F9G@YNymy5bp#Uh+uIsa$x zb$p*2BE&yTKi~@~?^ZPNPBHr-e#GUFSD{4xKF|T;XW?~)Sn_8aaq2Ct8{Q}#}JfLk`1C-~gRgqu<*mD2tPvJZ#H delta 3290 zcmZ`*33yc175>l6WZuimBP25elVq|$B!ZKM5KID=O2&W$T1-H|fC^+GhJ=vBBt(PY zNCl#zfIK&_Y6}Q$T~M+ZmO`p+ZEfwMwc5>AyI5-%YxkIn=iK)aM!qH=`OkmvJ?Gqe z&i(HTAC$dY7JccXlV<=F()}8KrsL-ZZo)4#{L&k_a**eNcy!`TfnN#yTEklg47@Fa z-w6Cx;CBMQ7kEeD4+8HB{88XNfjP`Me-(H?KFatvp&xi7g=#;w;orTH!1>WX z#NnUbNZX*AlhMBf{w?qyf&U5&34CZ^82{7pk&bgrNzxG+Qtmtu}-rj@ob$gix?=PPa8CcJ|l3sz+8<=42sYd@l;Cl z1m+7|DX>8N%M4mbi!}PIMxX0Rcb#-ou;=x-F4wrlYEI{?*61p0wO-{uMCI0?J|lWF zx=h@HEhe^N3n8hoy0bdJsk*s7zoMqGuC~L(AsjYw8@8FaL)`8ZxJzJ{z}*7(2<#Tv zBd{0un%E~`3EU@J+%NEez=Hx03G7E#qlp7T9~St6ct0ZSQAzWdurH!ZqY9Ij&{Be@ zwt8a$3!q@e^jXtqPcN8h($%!g#CGh^Xt_x%=o-Sf<<)KVbsdvRTN;|`+DxjXl_qwg z+gcmA*g6-#e%7iax^}!q*CpX)ldh*KE|IED+={44H8`wMtx4;sPNN%4s>g8?-$XxQ zww2|dX!ROXve%1GgGr6F!Niy3d`%{8q-GNb<-}jZacjuP^0t`NN;g_r36nE>am=JP zY9}Pt1lcH-i&8Xp=^rCf$V7CfzLY zU9{QSY-Z)%V$v4cs?lPTZsj&nRNyv&Z33UC+cny5(hk~5D6+QcnO5fbV9$rli;syY3*9l&|25j&|FussiSpMN4rM5dfrOR^CaGF(mk}-#P{&BM)z9j z{zkHTy8T|F`>fr8#g}#RM+LYDF0g=@xxfckmbIiT%Sl;oD_fr^NXAyegizF8VI?UK z7L&59CuLbu%Cf4IWnn4H+ESL~r7SB zl3zR$o{TV_;nPU?!kF*`c!rVVP8xzH37*AqNzgMdHAJ+)TAP;3d3L3>XN=?l6+6)` zDs(bFWraeiT8|xS%?TAOsR#$Kpbr&O6CZpSEFoLczdNG+UU zJNM4bHlKG6h5NCjexYwEpX6$*Jbg;^2(P5U%kAF^gI`QCzm*JrDmipJ!n6Y;`*OUq zn}M8>(m7UxOIj%H<7ez_na@^w9miWvc#??=vX56LX}`*;?jCVTPEtZ2`X$<;j9`&C z8yp0B6mj%e%ptsvza)E3-6&xICsgEB89`N!9eIc&504Rfl9encJcZK|$-Bj#c-n<0 zJ{o)C(F5~`Y&6)#Ov;V+B28{Bw%#ZHZ}b_Qb)x68HOIvJz4qu zrq5=Dq9SZtgqhBj$_K>*S3tDma&>s_}x_cmh&@OF@S3-eU;2s zDz=JOQ`PFV%;qU}9kWXmyPjECvDM6`bq_=(&l=|P5-WXcIZu_!Q_XYZy47S2(|}ED znI_tF9nlJHY77}*8W##a5O|QVP-k4Mt(}Po^vi|N!<;dl# zrE)qSZolC7RJZNsksX-ilD~!Q&Uf!B<2J@|TqK;^kH&s%=HOFzx(oZdl21l z5J!Zj_haKAng`HQo_+v%;k;h7_90p9jeYQ`G4r;nKKRun588PU5JxUD`5+QTf+U8g ze9n}_ix>a4Rq?$4Fn@ZTiAWef)s6k%Fi3Lw<I9kV^5q!0jgkZb~4N#(fNC ClYo5y diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionLiftGear.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionLiftGear.class index 1ae384d04d60dd8f164121c747c45984c8d48b13..436fbb79165bfcb1222c06a16cf3326c0fcb8483 100644 GIT binary patch delta 5362 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 J1#iVE{{zEZ((V8N delta 4786 zcmb7G30zfW7C+}cc=z$RAU+X97C|udDWGYlH3BY;Izvv2xsE9rk}C;lY3fVO(8~4Z zMlQMJk_#FS*kKj0UD zUjniK4*~`Neg$|4@G#&JCqK#q9sC%05IlpOJcNfjco;mx;qm<1!6RTiuJcHpM>**c zPH++N7$-f-k~pIl?A8INvE;;N(J{;_&cPte$c3vv5pv@N@@1=inI*p6TFO4));j^A4Wv;5iPS z>);n0JkP-|B3BWro$urY{1U8};d=$kg@8pmFLv@0UK+&9*aW-^SPocW&-4`;FK1~2 zuLP_@j@3>s=GS1Y(Rr=T>q@U`tpa&msm<}d7P4OXM#&k}`E@fS_zC-2-oVt}j1P~C z={cn^uXo<0g2L=cg#`vJBh#Q2w9=qew9+gIZtgit=L}jyYYkcl*o|g zmT0DijBC9!jCVEBd3P8G8(hMr2A$fga z=!(I|_&8Hbb9eKW_v?JZ;1BsDo!1+DQfA2?129!S1^7gY=T8Br`Haq=8GM${8GN44 zlpYDIVh3N~&zU;5HA|W$nY&yewk7<9dC(Q9@t37%U6r;b{FT99v%J;G!8%_x*GG)i z_?uE^WFTw&t=Y6imS+hq6>0P!4JTMEjid#|QnO+?)QaU?E0%F9eoe6pM_kq}oO0!t z@2pt9r(*etibVj5MFWaO2DlJ4NI^M74T?n&ibWHOMHY%h8Hz<5ibWraMIwqtC5lBT zibX4mMJ|d(F^WYribXfLkTqyWIYd5+ML~)WSb-uVwH75Q7BMLnJt-DRDHc^J7GWtC zZ7CLcDHeq(7Lh3yo#7XP2CXR;xhWRKDHhQw7TqZp=_wZVDVC$6STv|uWT;q_s93}( zOb~!#Is3wK#3YxK;CU(?+HyPd1=ALDBl>fBW{8(~HGM%BWySQRZ=cybwy*3O5u4Zr zyCS6Kb`(Hg(bw2dsn-5WVh2$`d_XUqE(gdXk%i!Svn+O~gonnZb*%|+N^ZI;OW;mnVl^INr-JY}u&Vr%jcr&-Y&r&t*;nVIoX`nSGN zb5wk%dvlX3XqdZ*-L$}P*2Jzw?wM4(FOBZd}qIk zyVX`asD8y6wg9W*@2rV+O2EXXCEVe}_FEG>m4J!4Ti@}-erru^acecP&54-Usl@+h zV!yK{HY2H%>-LG6hm)d=Tp42Rbgm`c@pR-SRR`k1Hr)qYkReA}wJ4Wru6OKq)DJLTN^4$LKq(@CqQI2(>grIqqbo9@zS=v~pCI|!DWAN5GaG+`XZ zKvIWalXQx`c+ zBBwVJ`FEvVrhoV%9(rG7{^Tu~u@eYa~~omCFvzX>wHiy3=~r-5?uC*EW)&ZK7~(3q@($ zR2ttAiSxUx14s*(OM`Wvbj^M4H1)B4_s~wsvP-h;mMnWEOX*K!aag}aQISm!0?``R zQ|@vaTS4OnyT*$(L0J>!PU%oVlLou;#2T)wr^V_G%j23XW*_Cu7b~MknFV5|E2~iQ zOi_8JiZ9gn_!%*q_{?X;botC_Vm9-c)5T0t@z04h16JLN5*EJW7UGh_uiuz;fH5Y>b`BBZq-qPIMv<90C zSIylmxgL_{7Nfbqjsy5Y>A;S`tbXIB%XdzvMQm`0h#`q~bEw>D8m|&x6Zm*mjSuIc z=C_!3lEb*EoR&*+yoOLjH6?L1_0`$sa>d*v`5*Wr%^;i3&2$dexjC`U5jV-MwWy|G w-_}7ty;oizDKF5t1-~Wi5^E1%= 0) { - Robot.drivetrain.haloDrive(0.0, rotationSpeed, true); + Robot.drivetrain.haloDrive(0.0, -rotationSpeed, false); } else { - Robot.drivetrain.haloDrive(0.0, -rotationSpeed, true); + Robot.drivetrain.haloDrive(0.0, rotationSpeed, false); } } diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegreesAlliance.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegreesAlliance.java new file mode 100644 index 0000000..4ee55f7 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegreesAlliance.java @@ -0,0 +1,67 @@ +package org.usfirst.frc.team708.robot.commands.drivetrain; + +import org.usfirst.frc.team708.robot.Robot; + +import edu.wpi.first.wpilibj.command.Command; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; + +/** + * + */ +public class TurnToDegreesAlliance extends Command { + + private double rotationSpeed; + private double goalDegrees; + + /** + * Constructor + * @param rotationSpeed + * @param goalDegrees + */ + public TurnToDegreesAlliance(double rotationSpeed, double goalDegrees) { + // Use requires() here to declare subsystem dependencies + requires(Robot.drivetrain); + + this.rotationSpeed = rotationSpeed; + this.goalDegrees = goalDegrees; + } + + // Called just before this Command runs the first time + protected void initialize() { + Robot.drivetrain.resetGyro(); + goalDegrees = goalDegrees * Robot.allianceColor; + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + System.out.println("Color = " + SmartDashboard.getInt("AllianceColor")); + System.out.println("GoalDegress = " + goalDegrees); +// SmartDashboard.putNumber("gaolDegress", goalDegrees); + + if (goalDegrees >= 0) { + Robot.drivetrain.haloDrive(0.0, -rotationSpeed, false); + } else { + Robot.drivetrain.haloDrive(0.0, rotationSpeed, false); + } + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + if (goalDegrees >= 0) { + return (Robot.drivetrain.getAngle() >= goalDegrees); + } else { + return (Robot.drivetrain.getAngle() <= goalDegrees); + } + } + + // Called once after isFinished returns true + protected void end() { + Robot.drivetrain.stop(); + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + end(); + } +} diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java index f36415e..e5277cb 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java @@ -30,13 +30,13 @@ protected void initialize() { protected void execute() { double gearAngle = OI.operatorGamepad.getAxis(Gamepad.leftStick_Y); //Gets Input from operator's controller if ((gearAngle >0) - && (!Robot.pivot_gear.isFwdSwitch()) + && (!Robot.pivot_gear.isFwdSwitch()) ) - Robot.pivot_gear.moveMotor(Constants.GEAR_UP); + Robot.pivot_gear.moveMotor(Constants.GEAR_UP); else if ((gearAngle <0) - && (!Robot.pivot_gear.isRevSwitch()) + && (!Robot.pivot_gear.isRevSwitch()) ) - Robot.pivot_gear.moveMotor(Constants.GEAR_DOWN); //Defines move speed from the operator's controller + Robot.pivot_gear.moveMotor(Constants.GEAR_DOWN); //Defines move speed from the operator's controller } diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java index 6e612ae..e407fd0 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java @@ -21,7 +21,10 @@ protected void execute() { } protected boolean isFinished() { - return(false); + if (Robot.pivot_gear.isRevSwitch()) + return(true); + else + return(false); } protected void end() { diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java index f494825..1bd6d7b 100644 --- a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java @@ -42,8 +42,8 @@ public class GripPipelineBoiler implements VisionPipeline { @Override public void process(Mat source0) { // Step HSV_Threshold0: Mat hsvThresholdInput = source0; - double[] hsvThresholdHue = {37.7043113245079, 87.30572606612448}; - double[] hsvThresholdSaturation = {73.37877589563281, 254.9818279249991}; + double[] hsvThresholdHue = {37.7043113245079, 93.36633212673053}; + double[] hsvThresholdSaturation = {77.96510683088461, 254.9818279249991}; double[] hsvThresholdValue = {56.50179856115108, 255.0}; hsvThreshold(hsvThresholdInput, hsvThresholdHue, hsvThresholdSaturation, hsvThresholdValue, hsvThresholdOutput); @@ -54,15 +54,15 @@ public class GripPipelineBoiler implements VisionPipeline { // Step Filter_Contours0: ArrayList filterContoursContours = findContoursOutput; - double filterContoursMinArea = 30.0; - double filterContoursMinPerimeter = 0; - double filterContoursMinWidth = 0; - double filterContoursMaxWidth = 1000; - double filterContoursMinHeight = 0; - double filterContoursMaxHeight = 1000; + double filterContoursMinArea = 60.0; + double filterContoursMinPerimeter = 40.0; + double filterContoursMinWidth = 20.0; + double filterContoursMaxWidth = 100.0; + double filterContoursMinHeight = 10.0; + double filterContoursMaxHeight = 1000.0; double[] filterContoursSolidity = {0, 100}; - double filterContoursMaxVertices = 1000000; - double filterContoursMinVertices = 0; + double filterContoursMaxVertices = 1000000.0; + double filterContoursMinVertices = 0.0; double filterContoursMinRatio = 0.0; double filterContoursMaxRatio = 50.0; filterContours(filterContoursContours, filterContoursMinArea, filterContoursMinPerimeter, filterContoursMinWidth, filterContoursMaxWidth, filterContoursMinHeight, filterContoursMaxHeight, filterContoursSolidity, filterContoursMaxVertices, filterContoursMinVertices, filterContoursMinRatio, filterContoursMaxRatio, filterContoursOutput); diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java index cf4bc36..489e512 100644 --- a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java @@ -53,9 +53,9 @@ public class GripPipelineLiftGear implements VisionPipeline { // Step HSL_Threshold0: Mat hslThresholdInput = resizeImageOutput; - double[] hslThresholdHue = {0.0, 42.12121212121212}; - double[] hslThresholdSaturation = {0.0, 57.52525252525252}; - double[] hslThresholdLuminance = {222.4370503597122, 255.0}; + double[] hslThresholdHue = {0.0, 44.63972054996753}; + double[] hslThresholdSaturation = {0.0, 57.52525252525253}; + double[] hslThresholdLuminance = {227.023381294964, 255.0}; hslThreshold(hslThresholdInput, hslThresholdHue, hslThresholdSaturation, hslThresholdLuminance, hslThresholdOutput); // Step Find_Contours0: @@ -80,9 +80,9 @@ public class GripPipelineLiftGear implements VisionPipeline { // Step RGB_Threshold0: Mat rgbThresholdInput = resizeImageOutput; - double[] rgbThresholdRed = {138.23671831765355, 255.0}; - double[] rgbThresholdGreen = {138.47191477587162, 255.0}; - double[] rgbThresholdBlue = {41.276978417266186, 117.23666459111665}; + double[] rgbThresholdRed = {156.58204205866073, 255.0}; + double[] rgbThresholdGreen = {156.8172385168788, 255.0}; + double[] rgbThresholdBlue = {55.03597122302158, 115.090199944652}; rgbThreshold(rgbThresholdInput, rgbThresholdRed, rgbThresholdGreen, rgbThresholdBlue, rgbThresholdOutput); // Step Find_Contours1: @@ -92,7 +92,7 @@ public class GripPipelineLiftGear implements VisionPipeline { // Step Filter_Contours1: ArrayList filterContours1Contours = findContours1Output; - double filterContours1MinArea = 100.0; + double filterContours1MinArea = 25.0; double filterContours1MinPerimeter = 0.0; double filterContours1MinWidth = 0.0; double filterContours1MaxWidth = 1000.0; diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java index 7603dfd..d3e4b85 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java @@ -105,6 +105,7 @@ public Drivetrain() { encoder2.setDistancePerPulse(distancePerPulse); encoder2.reset(); + leftMaster.enableBrakeMode(brake); leftSlave.enableBrakeMode(brake); rightMaster.enableBrakeMode(brake); rightSlave.enableBrakeMode(brake); @@ -213,7 +214,7 @@ public void stop() { * @return */ public double getAngle() { - return gyro.getAngle(); + return -gyro.getAngle(); //gyro is mounted upside down } /** @@ -373,6 +374,15 @@ protected void usePIDOutput(double output) { drivetrain.arcadeDrive(moveSpeed, -output); } + public int getAlliance(){ + return Robot.allianceColor; + } + + public void setAlliance(int c) + { + Robot.allianceColor = c; + } + /** * Sends data for this subsystem to the dashboard */ @@ -397,8 +407,8 @@ public void sendToDashboard() { SmartDashboard.putNumber("DT Encoder 2 Distance", encoder2.getDistance()); // Encoder reading } - SmartDashboard.putNumber("AllianceColor", Robot.allianceColor); - SmartDashboard.putNumber("Gyro angle", ( (int)gyro.getAngle())); // Gyro angle + SmartDashboard.putNumber("AllianceColor", getAlliance()); + SmartDashboard.putNumber("Gyro angle", ( (int)getAngle())); // Gyro angle SmartDashboard.putNumber("DT Sonar Distance", getSonarDistance()); // Sonar distance reading // SmartDashboard.putNumber("Sonar Mode", sonarOverride); } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java index 3680a37..f8dbe50 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java @@ -3,6 +3,7 @@ import org.usfirst.frc.team708.robot.Constants; import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.RobotMap; +import org.usfirst.frc.team708.robot.util.Math708; import com.ctre.CANTalon; import com.ctre.CANTalon.FeedbackDevice; @@ -27,8 +28,9 @@ public Pivot_Gear() { pivotMotor.enable(); // pivotMotor.reverseSensor(true); + pivotMotor.enableBrakeMode(true); pivotMotor.setFeedbackDevice(FeedbackDevice.QuadEncoder); - pivotMotor.changeControlMode(com.ctre.CANTalon.TalonControlMode.Position); +// pivotMotor.changeControlMode(com.ctre.CANTalon.TalonControlMode.Position); pivotMotor.configEncoderCodesPerRev(Constants.PIVOT_GEAR_ENCODER_COUNT); } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java index 1552b6d..d46b09d 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java @@ -51,7 +51,7 @@ public Shooter() { shooter.reset(); shooter.enable(); - shooter.reverseSensor(false); + shooter.reverseSensor(true); shooter.setFeedbackDevice(FeedbackDevice.QuadEncoder); // shooter.changeControlMode(TalonControlMode.PercentVbus); shooter.changeControlMode(TalonControlMode.Speed); diff --git a/sysProps.xml b/sysProps.xml index ba4492bc0a892c28919826274f302ce604070e70..461bd41a96da9dd49bc2cdaf4ef2a380ef204d85 100644 GIT binary patch delta 81 zcmZ2yu+CsZ37@GWg8_p%gDVia09ghM3P6?_gA;=(gBwu91t_NgBu#+W2?(9REQQH| WEY_Q!@Eu`hH3TX)*}PV$kre=43=eYv delta 81 zcmZ2yu+CsZ37@GYgC&CtgA;=xg9(EH5Gnw9&J1o07C><$AlnEmVgeL%W^e_HIWm|s ZC`=AyvEKZI?+7!iF;JVu=CwkNtN>HR4@3X} From 06ad08e64e7a1e9e4942c3a097ef5cdace4980c1 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Wed, 1 Mar 2017 17:42:46 -0500 Subject: [PATCH 37/69] turn to alliance update --- .../robot/commands/autonomous/turn.class | Bin 878 -> 878 bytes .../drivetrain/TurnToDegreesAlliance.class | Bin 2038 -> 2306 bytes .../robot/commands/autonomous/turn.java | 5 ++-- .../drivetrain/TurnToDegreesAlliance.java | 27 ++++++++++++++---- sysProps.xml | Bin 6190 -> 6190 bytes 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/turn.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/turn.class index bf2b54c6a3170736243f082a166b7cfd9ef4390c..dd522a2a0ca0df2115062ace5f62f25dc0dbfcdb 100644 GIT binary patch delta 70 zcmaFI_Kt0W2>SyDFxV(v!^A4aAj%*)c@C2^qwM4dOcsm^lO>rgWR)2Bfl7E77=a`s Pg8+jdn3e*PObpTh^4|&r delta 70 zcmaFI_Kt0W2>WGYFxV(v!^A4eAj%*yc@C2^qs-(7OcsptlO>rgWEC0s85kIN7#M*h QBZB~gAefc{l1vQJ05%T`BLDyZ diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegreesAlliance.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegreesAlliance.class index b1090923094224c2aa6557c6db3f3079b6086b6f..95af1088a0705b199eefcb6cadca95320645c448 100644 GIT binary patch literal 2306 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 diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/turn.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/turn.java index 2ea7a40..180b3a6 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/turn.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/turn.java @@ -16,9 +16,10 @@ protected void initialize() { } public turn(int c) { -// addSequential(new TurnToDegrees(.3, -90)); +// addSequential(new TurnToDegrees(.3, -90)); // turn counter clockwise +// addSequential(new TurnToDegrees(.3, 90)); // turn clockwise // addSequential(new WaitCommand(2)); - addSequential(new TurnToDegreesAlliance(0.3, 90)); //add alliance direction + addSequential(new TurnToDegreesAlliance(0.5, 90)); //add alliance direction // System.out.println();System.out.println();System.out.println();System.out.println();System.out.println();System.out.println();System.out.println();System.out.println(); // addSequential(new TurnToDegrees(-.5, 90)); //add alliance direction } diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegreesAlliance.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegreesAlliance.java index 4ee55f7..cbc2e14 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegreesAlliance.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegreesAlliance.java @@ -12,6 +12,7 @@ public class TurnToDegreesAlliance extends Command { private double rotationSpeed; private double goalDegrees; + private double localColor; /** * Constructor @@ -29,14 +30,23 @@ public TurnToDegreesAlliance(double rotationSpeed, double goalDegrees) { // Called just before this Command runs the first time protected void initialize() { Robot.drivetrain.resetGyro(); - goalDegrees = goalDegrees * Robot.allianceColor; +// goalDegrees = goalDegrees * SmartDashboard.getInt("AllianceColor"); } // Called repeatedly when this Command is scheduled to run protected void execute() { - System.out.println("Color = " + SmartDashboard.getInt("AllianceColor")); - System.out.println("GoalDegress = " + goalDegrees); -// SmartDashboard.putNumber("gaolDegress", goalDegrees); +// System.out.println("Color from dashbaord= " + SmartDashboard.getInt("AllianceColor")); +// System.out.println("GoalDegress passed in = " + goalDegrees); +// System.out.println("local color = " + localColor); +// System.out.println("robot.allianceColor = " + Robot.allianceColor); + if (localColor != Robot.allianceColor){ + System.out.println("resetting goal degress"); + localColor = Robot.allianceColor; + goalDegrees = Math.abs(goalDegrees) * Robot.allianceColor; + } + +// System.out.println("local color after = " + localColor); +// System.out.println("goalDegress after =" + goalDegrees); if (goalDegrees >= 0) { Robot.drivetrain.haloDrive(0.0, -rotationSpeed, false); @@ -47,10 +57,15 @@ protected void execute() { // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { - if (goalDegrees >= 0) { + if (goalDegrees > 0) { + System.out.println("returning goal degress >=, " + goalDegrees + " return = " + (Robot.drivetrain.getAngle() >= goalDegrees)); return (Robot.drivetrain.getAngle() >= goalDegrees); + } else if (goalDegrees < 0){ + System.out.println("returning goal degress <=, " + goalDegrees + " return = " + (Robot.drivetrain.getAngle() < goalDegrees)); + return (Robot.drivetrain.getAngle() < goalDegrees); } else { - return (Robot.drivetrain.getAngle() <= goalDegrees); + System.out.println("returening goalDegress = 0???"); + return false; } } diff --git a/sysProps.xml b/sysProps.xml index 461bd41a96da9dd49bc2cdaf4ef2a380ef204d85..d7e7d1e3d04a45aa97711c224973d3c9888e4688 100644 GIT binary patch delta 57 zcmZ2yu+CsZ37?`9gC&C@gCh{TG8h1%0)rca3xgAb8Bp96$a390l~0(3)dy~} GjjRAkObY@4 From 7d9a3e280f7139583c8b4691a59c9878823b5acd Mon Sep 17 00:00:00 2001 From: jpiergal Date: Wed, 1 Mar 2017 19:36:46 -0500 Subject: [PATCH 38/69] tunning vision --- .../usfirst/frc/team708/robot/Constants.class | Bin 3435 -> 3498 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 6944 -> 6834 bytes .../commands/autonomous/OneGearLeft.class | Bin 1207 -> 1285 bytes .../commands/autonomous/SixtyBalls.class | Bin 2066 -> 2071 bytes .../robot/commands/autonomous/TenBalls.class | Bin 1837 -> 1839 bytes .../robot/commands/autonomous/turn.class | Bin 878 -> 880 bytes .../drivetrain/TurnToDegreesAlliance.class | Bin 2306 -> 2891 bytes .../GripPipelineLiftGear.class | Bin 8185 -> 8192 bytes .../robot/subsystems/VisionLiftGear.class | Bin 12852 -> 12820 bytes .../usfirst/frc/team708/robot/Constants.java | 4 ++++ src/org/usfirst/frc/team708/robot/Robot.java | 2 +- .../commands/autonomous/OneGearLeft.java | 8 +++----- .../robot/commands/autonomous/SixtyBalls.java | 8 ++++---- .../robot/commands/autonomous/TenBalls.java | 2 +- .../robot/commands/autonomous/turn.java | 3 ++- .../drivetrain/TurnToDegreesAlliance.java | 18 +++++++++++------- .../visionProcessor/GripPipelineLiftGear.java | 10 +++++----- .../robot/subsystems/VisionLiftGear.java | 8 ++++---- sysProps.xml | Bin 6190 -> 6190 bytes 19 files changed, 35 insertions(+), 28 deletions(-) diff --git a/build/org/usfirst/frc/team708/robot/Constants.class b/build/org/usfirst/frc/team708/robot/Constants.class index d7818387ef7a214f25aa213e1d9ff6005e899ebd..71c7c8d29848feeb81ecd4596dff6bbfc6fd7fa6 100644 GIT binary patch delta 356 zcmaDYwMts_)W2Q(7#J8#7*=yJFf*)RXIRP3uxg{I1e+44vyZ>CcerP;DplM~q0CtqckVGP~;iM^GjUWS2@femOj6GJA0 zBtsVig5M3~_b~Lri^@@FIQ=K%S0ksJtez&s>=H_)k!3_x!J$%T{kc*WEg0X@bB!*@Bkh}qgCVh3ucOw z`R-(ra}VK1$bWlXt^g9)d*H-IVXLq^`U6s@Tg{~T|(RITOx@lO`EyHcPW4KHAa>k&~!2pq8p>Khq;Spa1 lxCV2|%5mF(6+1&5?Hy)J$uZ!@oawdi78Y1i0xPBi>kn3KFs%Rp diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index eadba0d1aaa453427c60847f2552f75a2f45f415..46ffc24354a06cd2b7307888c5163480ac36bcb9 100644 GIT binary patch delta 1942 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 diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.class index fedd739adb02f73bb72755e86ee992a188ed4a67..0bd03f36dd7f6629f418cb948a4a9f6fbc52af3b 100644 GIT binary patch delta 601 zcmaKoyG{Z@6o&tqg&mk|yud2pg;h{kZr;EW*+ekWN(xP|FtN430(xldC0l7{Z)4*o zn)m>|fr*8+4`DpJt3aV{GBf|2bN)HsStooc&tE2PYz$7{6axv{;71_? zn;N!IwyW$wVaVDROHS-wv^(9icDJL!K*b)gD^{gM*1qM9pla6ZC-w(#^!9VdSSFa5 z_jnKi#E}5Q9Ni1Fn7i(22ycyapjJV@!`^ARz9?*hQs~&SIjXZ8yeI98dDxc=@%!%iU+p( E1?EaX_y7O^ delta 559 zcmah_!AiqG6rA0pNwY~sYFf2Mo2a#ETCIXt+a9W3Jqh*T2YB%Z#CY+p6|S%TJmzmexwpnyO}Q%CFi-NFXi zQI%h@gLGg<=gd_cY)1F|RL%MQe&i{;;Zfrd9x2<2Mh+@UD1%{^zMFKJypL2k=BR23 zP{cg-)@X;_<3?bWa2$Oni1Q%#;%Eq)B zqe#eDwnD-nk1Clck)Vqua_3@)ypOGPQY$JJX+Fx(qE}|%%AKqeA!?EtrYU$vt!63y Xj2}#BvW)2dPi+4pn)1haiL>Qz0+Trt diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class index cb101b67103a7c03d6faf95804c9887179843d21..171982f1569ef4cf1804036ee86efd4337348921 100644 GIT binary patch delta 161 zcmXZVJr2PD7=YpTleP$h$%y((QGcO}2u*b00uprs!en=b(!nM%Su7@tMGQ<%V7EJg z4z_1|wuxQBTZp|`PQ*Sx=8CErjx+Ktbr!u5K|uQcQPoB9pXxwDeoV^+u4${l2hE)t zr09@lNCp?31zFbQ@hGsT$O(fBCGM1YQQ?irhbmv{qR@~eP0?wINn3hYbbi7;^#>Dy=I>@D~cbP)d{}(@8jiUhfJN zF7P}%V{5Eu;&0}T_~*M92xyjVtFAT;-v}Wf19j9)_0UEts%KPFU#NpVaSJ5qkz`B? y2NRDpOR}uUu_w<7iwi}3N<1m^qQaXhA8J3eE-@MsrzI9`>C<5dME;)}ynX=}3LmNf diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class index 51b79015b27e3553bd11317ccf71c54c3cb18f8d..2ee941e774a710f41641116156b03a326f43940c 100644 GIT binary patch delta 105 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 delta 3320 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 E0gDo0n*aa+ delta 4235 zcmb7`34B!56~@nZCz<#1^0F|51PBQONrZqf2w`gr3=|8tAgeTht%fj!AS95578gd^ zs?}DgK3t&HRs{?S2u?smK?D@pRor*Ll}%9*jRAVjok=ppFL#{8BJ9F37xGioX&J6ATwzA^5f6H-Zs@k%B7)qXeS`V+3Ob z34$P z3$77dD<}|55floh3Ic*@f+7pkQEXy{=yg&v)50v2m?)K+*-|rRj)^iUlpClpP-)Rv z^zjhk28+hvMtO6Sl;#@kyXFo0pF2}7V zZnL=AUoG5@J52md9{z6PPI+EvVv&h|n7GTt-6k9pi{^nTh2lR+xCyM3uZ;Y2q<6h{sK=GO^mk8WT@QlC?6k zbrzmPNJ`aGS})jO;3*3m@pK$E;TgfRg3W?0Zhv@B_{1&1bAqiB{k(;3*e<0V23|1m zBFLInI(KNGs4NgD2Zc_ko#dQq3oLTWbf{#*_O^?$m zn^w~*Q1Xm|xdpzN1tmqkQB!6F3M*_nM#pVhM^D-m5#9x1+U4NUl+U~cvJ9} z;BCP>f_DY)3EmfcAox)7eI%trlI5^GUUx*EKbGfDr1YuaGr{LnWnj0BJ=hD1DJ+=P z)5bpRx2c-e8#rL&WxN84A74;b6sWjnMDer=8?WM^O&jQ`hWcTFf-;*nN>#3NvnR{R zO_Q8{ zKQYbqIlgcvCC+i};phE{lhan}T*IPsfuwCxE7t+m{G>&${j5imCI=tm#lcY=GjQC- z3D`DH;+Tyu>5Pr9a0=A6w5-TiIy+EOIM-KLS{Cq)ET|YYZFFgI37h+C8{gnt13PV; z=0(SMf-{2e1wZgKQ6u;fwFb`GIEVALBGiKVO5RE*VDt=~O1>4Qf>NL!otRkxuIf1dp&(!37+ZYGsjOa3zSbUojKJ> zO1(A*%V}lTX=UTdt*yj-x`O?u zl`W{1U8t3fsFl5_mF=jN9jTQ~sg-@Hm943j-Kmugs+BFOm0hZpjVfOaC1%wX>{qR9 zS*`3^t!!Ma>|L#FU#;w5t!!eg>|?ELWv%RHt!!wm>}joRYpv{T`D!U~w^lZ|R`$47 zwz*bzx>h#3R<^rVcDz2|}o)qsqwJZY86W6q@*`i8!h_S8Mn{xp~4D8?Hz#GvnD z_!V1|dBRzoF_FVhX88Klg}0zC^gRzp!iPtN$5Tu#<+ze-$dCj-P>m!Ajmz}QFc-Hk z&8W*j@I~Sjxrc1VuuU(z8I;TI6>10lN z@FIfwJ0QWF(Z?zWCALd7WrmNu4A3o=s#p(5A6$x!3<&(9so)O5#?iByj0X6&)?E+e zqpqZ{F6rwja~+oyN#B;#syP&^%Ayv;9qFIj!^LLhVIw9wmt%Bl(YqnOlH=z#6CWFi zcf*jeI3qiy1sfvgapd*QM4H-HKwLPIM>~*Q{42BQw4N?&Jd2w+*ZgL3S&>}v;1v%3 zWH$yiUe5(OPvhN4km#QT4{02HOOwHgNQwkIQ#z+at-)1HgJ)G;_s9fpM zXDl_6EG?YOS(F=nMwW2s(x}kr$kvg_HcbyBtMM=%;9L(jldEkcSGssk@loy6#Wz@v zYAPF&)I(&bhsjotP>NbXZB&&`6FwrDQI~KGsT966&@OUm+;>5iRh(rtXIaBp)^V25 z|HzUNzQaRC*Rk^Dm~`oFjqlp9QKXjp7MIk!FFdwj~jxPS_WH%&_Zp5M{Pz+wGAn1Ct9h!XsweD z*{zR_to7lY9DfN33o5oZ9b*eQZ{O7n1N0n zPrDl8zu5D1V+FYkbT*J{pbNo3*BWxG*0mJhMB65ta`%^V2mE=(JFFfqy`^ICwmVLl W%2sjI26MTdmlS{CwtvJtT>oFR0ek!a diff --git a/src/org/usfirst/frc/team708/robot/Constants.java b/src/org/usfirst/frc/team708/robot/Constants.java index a8c026b..235f7b7 100644 --- a/src/org/usfirst/frc/team708/robot/Constants.java +++ b/src/org/usfirst/frc/team708/robot/Constants.java @@ -120,6 +120,10 @@ public final class Constants { public static final double pid_tolerance = 1; + + public static final int CLOCKWISE = 1; + public static final int COUNTERCLOCKWISE = -1; + // LED CONTROLS public static final byte SET_ALLIANCE_INVALID = 0x00; diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index b3008f1..9035f5d 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -288,7 +288,7 @@ private void queueAutonomousModes() { // autonomousMode.addObject("Drive Straight for time", new DriveStraightForTime(.5, 3)); // autonomousMode.addObject("Find Target", new DriveToTarget()); // autonomousMode.addObject("Drive in Square", new DriveInSquare()); - autonomousMode.addObject("turn", new turn(allianceColor)); +// autonomousMode.addObject("turn", new turn(allianceColor)); allianceSelection.addDefault("RED", new RedAlliance()); allianceSelection.addObject("BLUE", new BlueAlliance()); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java index b6e5b09..bb653b9 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java @@ -1,5 +1,6 @@ package org.usfirst.frc.team708.robot.commands.autonomous; +import org.usfirst.frc.team708.robot.Constants; import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToLift; @@ -19,16 +20,13 @@ protected void initialize() { public OneGearLeft() { - // addSequential(new DriveStraightToEncoderDistance(70, .4, false)); - - addSequential(new TurnToDegreesAlliance(.5, 45)); - + addSequential(new DriveStraightToEncoderDistance(70, .4, false)); + addSequential(new TurnToDegreesAlliance(.5, 45, Constants.CLOCKWISE)); addSequential(new RotateAndDriveToLift()); // addSequential(new DriveStraightToEncoderDistance(6, .4, false)); addSequential(new Intake_Gear_Out()); - addSequential(new DriveStraightToEncoderDistance(12, .4, true)); } diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java index 543ac82..a5c2c2e 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java @@ -26,14 +26,14 @@ protected void initialize() { public SixtyBalls() { addSequential(new DriveStraightToEncoderDistance(100, .4, false)); //55, .4, false - addSequential(new TurnToDegreesAlliance(.6, 75)); + addSequential(new TurnToDegreesAlliance(.6, 75, 1)); addSequential(new DriveStraightToEncoderDistance(25, .5, true)); addSequential(new WaitCommand(4)); addSequential(new DriveStraightToEncoderDistance(25, .5, false)); - addSequential(new TurnToDegreesAlliance(.6, -90)); + addSequential(new TurnToDegreesAlliance(.6, 90, -1)); addSequential(new DriveStraightToEncoderDistance(40, .4, true)); //55, .4, false - addSequential(new TurnToDegreesAlliance(.6, 45)); + addSequential(new TurnToDegreesAlliance(.6, 45, 1)); addSequential(new RotateAndDriveToBoiler(10)); addSequential(new WaitCommand(4)); @@ -44,7 +44,7 @@ public SixtyBalls() { addSequential(new FeederOff()); addSequential(new StopShooter()); - addSequential(new TurnToDegreesAlliance(.6, -80)); + addSequential(new TurnToDegreesAlliance(.6, 80, -1)); addSequential(new DriveStraightToEncoderDistance(50, .4, false)); addSequential(new RotateAndDriveToLift()); // addSequential(new DriveStraightToEncoderDistance(6, .4, false)); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java index 0f15646..c73a66b 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java @@ -26,7 +26,7 @@ protected void initialize() { public TenBalls() { addSequential(new DriveStraightToEncoderDistance(75, .4, false)); - addSequential(new TurnToDegreesAlliance(.5, 45)); + addSequential(new TurnToDegreesAlliance(.5, 45, 1)); addSequential(new RotateAndDriveToLift()); // addSequential(new DriveStraightToEncoderDistance(6, .4, false)); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/turn.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/turn.java index 180b3a6..c5f4cd4 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/turn.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/turn.java @@ -19,7 +19,8 @@ public turn(int c) { // addSequential(new TurnToDegrees(.3, -90)); // turn counter clockwise // addSequential(new TurnToDegrees(.3, 90)); // turn clockwise // addSequential(new WaitCommand(2)); - addSequential(new TurnToDegreesAlliance(0.5, 90)); //add alliance direction + addSequential(new TurnToDegreesAlliance(0.5, 15, 1)); //red clock blue clounter +// addSequential(new TurnToDegreesAlliance(0.5, 15, -1)); //blue clockwise, red counter // System.out.println();System.out.println();System.out.println();System.out.println();System.out.println();System.out.println();System.out.println();System.out.println(); // addSequential(new TurnToDegrees(-.5, 90)); //add alliance direction } diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegreesAlliance.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegreesAlliance.java index cbc2e14..8abe735 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegreesAlliance.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegreesAlliance.java @@ -13,18 +13,20 @@ public class TurnToDegreesAlliance extends Command { private double rotationSpeed; private double goalDegrees; private double localColor; + private int direction; /** * Constructor * @param rotationSpeed * @param goalDegrees */ - public TurnToDegreesAlliance(double rotationSpeed, double goalDegrees) { + public TurnToDegreesAlliance(double rotationSpeed, double goalDegrees, int direction) { // Use requires() here to declare subsystem dependencies requires(Robot.drivetrain); this.rotationSpeed = rotationSpeed; this.goalDegrees = goalDegrees; + this.direction = direction; } // Called just before this Command runs the first time @@ -35,18 +37,20 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { -// System.out.println("Color from dashbaord= " + SmartDashboard.getInt("AllianceColor")); -// System.out.println("GoalDegress passed in = " + goalDegrees); -// System.out.println("local color = " + localColor); -// System.out.println("robot.allianceColor = " + Robot.allianceColor); + System.out.println("Color from dashbaord= " + SmartDashboard.getInt("AllianceColor")); + System.out.println("GoalDegress passed in = " + goalDegrees); + System.out.println("local color = " + localColor); + System.out.println("robot.allianceColor = " + Robot.allianceColor); if (localColor != Robot.allianceColor){ System.out.println("resetting goal degress"); localColor = Robot.allianceColor; goalDegrees = Math.abs(goalDegrees) * Robot.allianceColor; + goalDegrees = goalDegrees * direction; +// goalDegrees = goalDegrees * Robot.allianceColor; } -// System.out.println("local color after = " + localColor); -// System.out.println("goalDegress after =" + goalDegrees); + System.out.println("local color after = " + localColor); + System.out.println("goalDegress after =" + goalDegrees); if (goalDegrees >= 0) { Robot.drivetrain.haloDrive(0.0, -rotationSpeed, false); diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java index 489e512..3e48ff4 100644 --- a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java @@ -80,9 +80,9 @@ public class GripPipelineLiftGear implements VisionPipeline { // Step RGB_Threshold0: Mat rgbThresholdInput = resizeImageOutput; - double[] rgbThresholdRed = {156.58204205866073, 255.0}; - double[] rgbThresholdGreen = {156.8172385168788, 255.0}; - double[] rgbThresholdBlue = {55.03597122302158, 115.090199944652}; + double[] rgbThresholdRed = {124.0, 255.0}; //{156.58204205866073, 255.0}; + double[] rgbThresholdGreen = {116.0, 223.0}; //{156.8172385168788, 255.0} + double[] rgbThresholdBlue = {0.0, 139.0}; //{55.03597122302158, 115.090199944652} rgbThreshold(rgbThresholdInput, rgbThresholdRed, rgbThresholdGreen, rgbThresholdBlue, rgbThresholdOutput); // Step Find_Contours1: @@ -92,10 +92,10 @@ public class GripPipelineLiftGear implements VisionPipeline { // Step Filter_Contours1: ArrayList filterContours1Contours = findContours1Output; - double filterContours1MinArea = 25.0; + double filterContours1MinArea = 3.0; //25.0; double filterContours1MinPerimeter = 0.0; double filterContours1MinWidth = 0.0; - double filterContours1MaxWidth = 1000.0; + double filterContours1MaxWidth = 50.0; //1000.0; double filterContours1MinHeight = 0.0; double filterContours1MaxHeight = 998.0; double[] filterContours1Solidity = {0.0, 100.0}; diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionLiftGear.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionLiftGear.java index 1e8426d..91375ef 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionLiftGear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionLiftGear.java @@ -192,8 +192,8 @@ public VisionLiftGear() { // display the current image on the driver station - outputStreamLift.putFrame(lgPipeline.hslThresholdOutput()); - +// outputStreamLift.putFrame(lgPipeline.hslThresholdOutput()); + outputStreamLift.putFrame(lgPipeline.resizeImageOutput()); } } @@ -263,8 +263,8 @@ public VisionLiftGear() { // display the current image on the driver station - outputStreamGear.putFrame(lgPipeline.rgbThresholdOutput()); - +// outputStreamGear.putFrame(lgPipeline.rgbThresholdOutput()); + outputStreamLift.putFrame(lgPipeline.resizeImageOutput()); } } diff --git a/sysProps.xml b/sysProps.xml index d7e7d1e3d04a45aa97711c224973d3c9888e4688..90a8656e036ab780350d8a29337717888fad982a 100644 GIT binary patch delta 53 zcmZ2yu+CsZ37?`dgENB@gE@l{g9U>D5GpXZG8i(LF<1h{O@T57o2T-LvM?HNUM Date: Thu, 2 Mar 2017 14:13:34 -0500 Subject: [PATCH 39/69] auto guesses before testing --- .../commands/autonomous/OneGearCenter.class | Bin 1110 -> 1791 bytes .../commands/autonomous/SixtyBalls.class | Bin 2071 -> 2086 bytes .../robot/commands/autonomous/TenBalls.class | Bin 1839 -> 1254 bytes .../drivetrain/TurnToDegreesAlliance.class | Bin 2891 -> 1826 bytes .../robot/commands/feeder/SpinFeeder.class | Bin 1214 -> 1381 bytes .../robot/commands/shooter/SpinShooter.class | Bin 1336 -> 1505 bytes .../robot/commands/shooter/StopShooter.class | Bin 1025 -> 1104 bytes .../commands/autonomous/OneGearCenter.java | 52 +++++++++++------- .../robot/commands/autonomous/SixtyBalls.java | 17 +++--- .../robot/commands/autonomous/TenBalls.java | 23 +++----- .../drivetrain/TurnToDegreesAlliance.java | 18 +++--- .../robot/commands/feeder/SpinFeeder.java | 19 +++++-- .../robot/commands/shooter/SpinShooter.java | 39 ++++++++----- .../robot/commands/shooter/StopShooter.java | 5 +- 14 files changed, 99 insertions(+), 74 deletions(-) diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class index af359865390fb19c27f63945d708ab12fb79202b..eab546ebe94f7c8d198d5d3d2da2e6fa47d35ee7 100644 GIT binary patch literal 1791 zcmd5+OHUL*5dL~uc42^E2qF&yA}TLo5Rf-4xGP9p1!Y459>}oUK;!N-^vpowiNw2C zgMUFUUL?`z*?9Hj#fyKyyNR)ShL?%pYCJee_k3Ml^-axJUH#$v>vsTpF>as%ol%&P z@!LCO0V1(ayZU)%AcQUh^|%&Aw}E2q)?=Uqosscr-xX2xMq*!j{3kL#x#L@-xNe{v zeNprqsM1jb2CDUY&_Jz@zIWg_6vZ%uA#C9aD=QvxhJu#Xd4_OYW@u5K6gI!><(9ch zS<6|nR3v5E%FbI#==Hua?5+uiVInEjs_8i^LOHIvqSB_ztz3WCfT`rNbj`HP(-W4ie@x2%;uR{Mu{!%DofaALc=+YSJ&K>ylJON5|t2+YuRb8c}Gey z3QBeI&&lsg*K+xUo$Bo=k+m06k09N+Y)Bd8~d zr6rjc&#(^GEYq#?XrybS!M_a(5yk~tGhC!~I}N7COPWGxqB-IlYH*2gX|RdQxT2kO z@6b$v>?w-$9;<2F18aMO&_X2&Dp6Rlhv+L5k)?QH4@Lk>2$lv=`<0Pj_|UJMEN3cF z5!%Dqz^97b&jqlWU`+sP3DyO0Kjb`-?1%h+A3G9skuF`Jj&!dl)Ibt8;VQ{HM(WQJ zdVmhBpc9)g@fclrf^O`h2hY)mx9G=v4B#UM@fkz-ieY@iD2vcNQ;pbBkyy=sk-}&} zYfvQOX1YiS6}-^%vGT@`BFP?Kt>trygGgW@E*Ea delta 451 zcmZ{fy-or_5XXPJci!QG5%B{=1VQ|S%2;#6LSxj@igzIK0gU!kdX=`eHpY&^2k-$* z?0gb+b|rUL;BIDicV>S7nf;mj$X&dDkKcep_6{cQWM4u0KJsLDk!#u5! zO~b4$Ya8-3g8r#1C1fjP`)>5*RVc+nb(ycQQ(%`p#c_P44(|0Je)3)iG)1TApc#A? zD4|%CcSlTFdl9Eu5+ArgnPs^b{*tUvwna!A@fN%$=W73*%W F`Y&aFB>?~c diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class index 171982f1569ef4cf1804036ee86efd4337348921..a4f905d780bae847b30519993d235fa293999a9a 100644 GIT binary patch delta 786 zcmaJ;&rcIU6#m|JJ6k72ny?`u3JIi8XaU<&go?scsQi?IBCv=*u8oN&?)6`2_CWOL zfp{=RLefnj;ie`YjTdi*J9jS--gH>tpiVMxzxm$x&A#_$JH8Xoem~tm1dzu|i2`OE z%nIc(!Ang1daKtv2@7))qnLNFP|LO^9tu?mHNOpTuqagAV2Ku#Yp>d?OF|_=svTtq z%R=>pM5iVmNpz#E?|v+l8(y^{kzt8>8))(;tn}iXq-FqMT zMC+qG5xt_YaR*}{+~rf6H|f30!NNU`qCvD_oN<#$Vgia!1TKIh8|fQjI!7h{Lv*+5 zqANh6j#%mdEnahgR)f1e7aak5>PR*+E_yF=DK9|U$od%$70K zkpPZiax5P*FwbzfexvbYExgS_+X&A)@{h$xbsv5B%FpnV8$RM^IK}|};1)?_=q9q1 z#1Q3>rzs3y_D!YpzHQvcr0JWzr2B>y`KaTSi4`uL%$teXn9>v5`v0uQuQ=(#Sqf+U P??;;ai;?i4QP}hu&bDr_ delta 788 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 diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class b/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class index 4a7176297ee5ba77861f6cf595738341be9a9ce1..40fbcb43e001317e86bb580670e11728634acd0f 100644 GIT binary patch literal 1505 zcma)6%Tg0T6g`~`85jm7JOuF(0g(`p;T1qY4H6J6KqV9lcax-n#$+bW1JNqK!=2^E za^pr8u}Z7_0KdX7vAmrOA>|^Hsoc5ucK5mGK6-xr`Ti5Y44!D{Lc9edNNDK9s1#$; zysKdxMkKXO+vulaLc=7cBB@WmD-LN*M^YaT1FI7=(v_3|vnu9P%rmG(^JG^PIRi^G zM3#glyax~6_Dn}eJ8&xAp>P?NHf`s? z@ZEjkxSp}^}?FFEVJ7f-no>EyW4P zB@LCI@SN|F-Inpp+{-Pq6ok}-yGHxnL!Pf}enFC3q_+x-pdG*D$rUYQ`%aFp3CX>^ zF5dW&d2H(FK}^Lx9Sd00v4s0N9-vppL!?wJ>v)6}hT+Cpt=N|9nU?3ONb6X|nvTa3 zV;zG!HW1Ts8!?83#wd+y!!X42zVW&wjB05~D~RmTSwW4JYGD}$8wc5uZJ??K^=Fv+ zPsdz8>%MV4UUZG~J~cc1l`kAl9UqHtHfEMN16Y*p)Lib#nX`Rjq2(QM%ss~x7DMvl zMAEfmG&9qU6RzWbevAg;fO{F+GM%)Lt;<#CjjqAOh2es7FfgLQ{7nAO;beRu zQGw8_ivfg!TeXAl2uAKpo}#IYNEg)iAJ9wuqTwH9Xry$ZwT!mU=&tCONSCY19<9n? z;R^RYN*DC~YQqF^o5TQ;7{x4o@8;_WBm)Bdv{ylBAWCuogG4}<$e_2R(v&Ep{R=78 zvQ+a}s)K2&O6ckZWK%iWgi{&mMp&^<8G1Tzj+jcw9!FH$F3tkd`hi}Fg z7~+}9BZkC|EOLhK zJ>l?!pier_pNGFLgTNw9r$#j3vZYH z^h&%KvVB1-cgXG(4uQHs)mJBaUIwnscZFiz(^P5h)H<^a^dhZc-oOGDH7psVXx6|o zRv0E)cd;WK&$k@k)39n_4eJIruxa2i(guc*W>{|x&`Jh|Fr($rBh62^pO=p1 z=7iGArfZ8sAJ4fow!zFeDKhNm21T4Jy+VRaBb#P|X6fO%SZn!(H5?QzgO-?drc+ z{EJ#cLiNmrrp#C)lU_rVnT;|vYN>`BR|U*cSIbQhS_9&K1LE=qYUsWSutp88HvzOo L0E}c(Oo#shrnMcE diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/StopShooter.class b/build/org/usfirst/frc/team708/robot/commands/shooter/StopShooter.class index fe82e51469610a49814c9e9224f8716801aaffd2..e989fafab6492cd27fa212e560cf9848778d2619 100644 GIT binary patch literal 1104 zcmah|O>fgc5Ph3CapIV^6e#7RKq+n0B;Zm$MXO$ddWtv@)B`ui*^;diZ}6`9`b}Km z5F`%#0Dcr=HgO%RNaiw`S?_!E_RZw?pP#<~JjQ(oRa~p$I&L_q;HHf=2e)wBggfSB z-Ns!T8w}+G5ej|CP^|A9Ggxie=M0M-5%O2@sK=u>es4%8%N-f`!(%@ZrcMqmJrIiF zpd+JqUaU?;q_lSu1)k>q=-KXbFOof}y+Dpee%M!@8c3;m6?VedcwtGK5=E6qpBo4a0#`1@EyoaWc6ck-2W&j|L-j_l^k z`?nj7jOHKv!|s@yky-VZ(_K@v23V(UtkTi~WzaNHqv%p~hyrDR+xP+2_>RH^#cxy> zaDn0iiWFC1;VL0ksivE=`&h&hRTeI$TurJC7n>89X24noNL!x(ms8+VYGdwIsQvQh$nfvSakDmY@V&6j@>x;OGYc8&P*ubU@H$1qw>Ef1) zEr!~WjHG$Nu+ZE;VQ|{2FBn!jG7_(nQBTBgg5HpB);cN-h9^NR?K!)2%s^^}qmGK- z@kF1>SQ~yChunx@^rZEa$Ev3c57lTCM19TmKq(_)-Zg66P3z|jo>d@&q5Mp9T=7wa ziJ{7q`j|R;Ao^2vZz+n1>LnQwNt}$0?RZ_4#GyErR^@7e`R-ZpKJc*!&&9Tn9qcmf zl?!dFNSh!s+C{_1ZS47I!t-$v9>cS8Y}rpTG(a=h` z4b0k2afwb3C^O2{gYRHpsi?rG=urkP!@)YvQRSx}VHqoQa9Tq6uoZ?bWF|%%h+B`vvOuAPfsAdF=Otng{`~i-<%$ooJ diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java index 82cba05..b5edb74 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java @@ -4,11 +4,15 @@ import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToLift; +import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToGear; import org.usfirst.frc.team708.robot.commands.drivetrain.ToggleBrakeMode; import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegreesAlliance; +import org.usfirst.frc.team708.robot.commands.feeder.SpinFeeder; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Off; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Out; -//import org.usfirst.frc.team708.robot.commands.intake_gear.AquireGear; +import org.usfirst.frc.team708.robot.commands.shooter.SpinShooter; +import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Down; +import org.usfirst.frc.team708.robot.commands.intake_gear.AquireGear; import edu.wpi.first.wpilibj.command.CommandGroup; import edu.wpi.first.wpilibj.command.WaitCommand; @@ -24,41 +28,47 @@ protected void initialize() { public OneGearCenter() { -// addSequential(new WaitCommand(1.0)); addSequential(new DriveStraightToEncoderDistance(55, .4, false)); - addSequential(new RotateAndDriveToLift()); // addSequential(new DriveStraightToEncoderDistance(6, .4, false)); addSequential(new Intake_Gear_Out()); - addSequential(new DriveStraightToEncoderDistance(50, .4, true)); - //this is a test replace with 3 gear +//this is a test replace with 3 gear // addSequential(new TurnToDegreesAlliance(.6, 45)); //add alliance direction // addSequential(new DriveStraightToEncoderDistance(110, .4, false)); // get gear 2 -// addSequential(new TurnToDegreesAlliance(.6, 135)); -// addSequential(new RotateAndDriveToGear()); -// addSequential(new AcquireGear()); -// addSequential(new TurnToDegreesAlliance(.6, -135)); -// addSequential(new DriveStraightToEncoderDistance(40, .4, false)); -// addSequential(new RotateAndDriveToLift()); + addSequential(new TurnToDegreesAlliance(.6, 125, Constants.CLOCKWISE)); + addSequential(new Intake_Gear_Down()); + + addParallel(new RotateAndDriveToGear()); + addSequential(new AquireGear()); + + addSequential(new TurnToDegreesAlliance(.6, 120, Constants.COUNTERCLOCKWISE)); + addSequential(new RotateAndDriveToLift()); + // addSequential(new DriveStraightToEncoderDistance(6, .4, false)); -// addSequential(new Intake_Gear_Out()); -// addSequential(new DriveStraightToEncoderDistance(50, .4, true)); + + addSequential(new Intake_Gear_Out()); + addSequential(new DriveStraightToEncoderDistance(50, .4, true)); + // get gear 3 -// addSequential(new TurnToDegreesAlliance(.6, -135)); -// ddSequential(new RotateAndDriveToGear()); -// addSequential(new AcquireGear()); -// addSequential(new TurnToDegreesAlliance(.6, 135)); -// addSequential(new DriveStraightToEncoderDistance(40, .4, false)); -// addSequential(new RotateAndDriveToLift()); + addSequential(new TurnToDegreesAlliance(.6, 120, Constants.CLOCKWISE)); + addSequential(new Intake_Gear_Down()); + + addParallel(new RotateAndDriveToGear()); + addSequential(new AquireGear()); + + addSequential(new TurnToDegreesAlliance(.6, 120, Constants.COUNTERCLOCKWISE)); + addSequential(new RotateAndDriveToLift()); + // addSequential(new DriveStraightToEncoderDistance(6, .4, false)); -// addSequential(new Intake_Gear_Out()); -// addSequential(new DriveStraightToEncoderDistance(50, .4, true)); + + addSequential(new Intake_Gear_Out()); + addSequential(new DriveStraightToEncoderDistance(12, .4, true)); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java index a5c2c2e..6224a65 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java @@ -1,6 +1,7 @@ package org.usfirst.frc.team708.robot.commands.autonomous; import org.usfirst.frc.team708.robot.AutoConstants; +import org.usfirst.frc.team708.robot.Constants; import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightForTime; import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; @@ -25,8 +26,8 @@ protected void initialize() { } public SixtyBalls() { - addSequential(new DriveStraightToEncoderDistance(100, .4, false)); //55, .4, false - addSequential(new TurnToDegreesAlliance(.6, 75, 1)); + addSequential(new DriveStraightToEncoderDistance(100, .4, false)); + addSequential(new TurnToDegreesAlliance(.6, 75, Constants.COUNTERCLOCKWISE)); addSequential(new DriveStraightToEncoderDistance(25, .5, true)); addSequential(new WaitCommand(4)); addSequential(new DriveStraightToEncoderDistance(25, .5, false)); @@ -37,17 +38,13 @@ public SixtyBalls() { addSequential(new RotateAndDriveToBoiler(10)); addSequential(new WaitCommand(4)); - addSequential(new SpinShooter()); - addSequential(new WaitCommand(1.0)); - addParallel(new SpinFeeder()); - addSequential(new WaitCommand(5)); - addSequential(new FeederOff()); + addParallel(new SpinShooter(11)); + addSequential(new SpinFeeder(8)); + addSequential(new StopShooter()); + addSequential(new DriveStraightToEncoderDistance(12, .4, true)); - addSequential(new TurnToDegreesAlliance(.6, 80, -1)); - addSequential(new DriveStraightToEncoderDistance(50, .4, false)); addSequential(new RotateAndDriveToLift()); -// addSequential(new DriveStraightToEncoderDistance(6, .4, false)); addSequential(new Intake_Gear_Out()); addSequential(new DriveStraightToEncoderDistance(12, .4, true)); } diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java index c73a66b..4b64eaa 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java @@ -1,6 +1,7 @@ package org.usfirst.frc.team708.robot.commands.autonomous; import org.usfirst.frc.team708.robot.AutoConstants; +import org.usfirst.frc.team708.robot.Constants; import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightForTime; import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; @@ -25,8 +26,8 @@ protected void initialize() { } public TenBalls() { - addSequential(new DriveStraightToEncoderDistance(75, .4, false)); - addSequential(new TurnToDegreesAlliance(.5, 45, 1)); + addSequential(new DriveStraightToEncoderDistance(75, .4, false)); + addSequential(new TurnToDegreesAlliance(.5, 45, Constants.COUNTERCLOCKWISE)); addSequential(new RotateAndDriveToLift()); // addSequential(new DriveStraightToEncoderDistance(6, .4, false)); @@ -36,21 +37,15 @@ public TenBalls() { // addSequential(new DriveStraightToEncoderDistance(85, .4, false)); //55, .4, false // addSequential(new TurnToDegreesAlliance(.6, -45)); - addSequential(new RotateAndDriveToBoiler(108)); + addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); - addSequential(new SpinShooter()); -// addSequential(new WaitCommand(1.0)); - addParallel(new SpinFeeder()); + addParallel(new SpinShooter(10)); + addSequential(new SpinFeeder(9)); - addSequential(new WaitCommand(5)); - addSequential(new FeederOff()); - addSequential(new StopShooter()); +// addSequential(new WaitCommand(10)); +// addSequential(new FeederOff()); -// addSequential(new TurnToDegreesAlliance(.6, -80)); -// addSequential(new DriveStraightToEncoderDistance(50, .4, false)); - addSequential(new RotateAndDriveToLift()); -// addSequential(new DriveStraightToEncoderDistance(6, .4, false)); - addSequential(new Intake_Gear_Out()); + addSequential(new StopShooter()); addSequential(new DriveStraightToEncoderDistance(12, .4, true)); } diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegreesAlliance.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegreesAlliance.java index 8abe735..8993af6 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegreesAlliance.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/TurnToDegreesAlliance.java @@ -37,10 +37,10 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { - System.out.println("Color from dashbaord= " + SmartDashboard.getInt("AllianceColor")); - System.out.println("GoalDegress passed in = " + goalDegrees); - System.out.println("local color = " + localColor); - System.out.println("robot.allianceColor = " + Robot.allianceColor); +// System.out.println("Color from dashbaord= " + SmartDashboard.getInt("AllianceColor")); +// System.out.println("GoalDegress passed in = " + goalDegrees); +// System.out.println("local color = " + localColor); +// System.out.println("robot.allianceColor = " + Robot.allianceColor); if (localColor != Robot.allianceColor){ System.out.println("resetting goal degress"); localColor = Robot.allianceColor; @@ -49,8 +49,8 @@ protected void execute() { // goalDegrees = goalDegrees * Robot.allianceColor; } - System.out.println("local color after = " + localColor); - System.out.println("goalDegress after =" + goalDegrees); +// System.out.println("local color after = " + localColor); +// System.out.println("goalDegress after =" + goalDegrees); if (goalDegrees >= 0) { Robot.drivetrain.haloDrive(0.0, -rotationSpeed, false); @@ -62,13 +62,13 @@ protected void execute() { // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { if (goalDegrees > 0) { - System.out.println("returning goal degress >=, " + goalDegrees + " return = " + (Robot.drivetrain.getAngle() >= goalDegrees)); +// System.out.println("returning goal degress >=, " + goalDegrees + " return = " + (Robot.drivetrain.getAngle() >= goalDegrees)); return (Robot.drivetrain.getAngle() >= goalDegrees); } else if (goalDegrees < 0){ - System.out.println("returning goal degress <=, " + goalDegrees + " return = " + (Robot.drivetrain.getAngle() < goalDegrees)); +// System.out.println("returning goal degress <=, " + goalDegrees + " return = " + (Robot.drivetrain.getAngle() < goalDegrees)); return (Robot.drivetrain.getAngle() < goalDegrees); } else { - System.out.println("returening goalDegress = 0???"); +// System.out.println("returening goalDegress = 0???"); return false; } } diff --git a/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.java b/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.java index baf8e5e..dcd1dfe 100644 --- a/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.java +++ b/src/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.java @@ -11,25 +11,36 @@ public class SpinFeeder extends Command { - public SpinFeeder() { + private double maxTime; + + public SpinFeeder(double maxTime) { // requires(Robot.feeder); // requires(Robot.intake_ball); // requires(Robot.drivetrain); +// requires(Robot.shooter); + + this.setTimeout(maxTime); } // Called just before this Command runs the first time protected void initialize() { - Robot.feeder.manualMove(Constants.FEEDER_MOTOR_FORWARD); - Robot.intake_ball.moveMotor(Constants.INTAKE_FORWARD); +// Robot.feeder.manualMove(Constants.FEEDER_MOTOR_FORWARD); +// Robot.intake_ball.moveMotor(Constants.INTAKE_FORWARD); } // Called repeatedly when this Command is scheduled to run protected void execute() { + if (timeSinceInitialized() > 1.0){ + Robot.feeder.manualMove(Constants.FEEDER_MOTOR_FORWARD); + Robot.intake_ball.moveMotor(Constants.INTAKE_FORWARD); + } } // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { - return(false); +// return(false); + return (isTimedOut()); + } // Called once after isFinished returns true diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java index c59485a..f21fead 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java @@ -18,35 +18,46 @@ */ public class SpinShooter extends Command { + private double maxTime; - public SpinShooter() { -// requires(Robot.shooter); + public SpinShooter(double maxTime) { + requires(Robot.shooter); // requires(Robot.drivetrain); + this.setTimeout(maxTime); } // Called just before this Command runs the first time protected void initialize() { // Robot.shooter.setFgain(Constants.SHOOTER_F); - if (Robot.drivetrain.getSonarDistance() > 60) - { - Robot.shooter.moveHood(Constants.HOOD_LEVER); - Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_LEVER); - } - else - { - Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_BOILER); - Robot.shooter.moveHood(Constants.HOOD_BOILER); - } +// if (Robot.drivetrain.getSonarDistance() > 60) +// { +// Robot.shooter.moveHood(Constants.HOOD_LEVER); +// Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_LEVER); +// } +// else +// { +// Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_BOILER); +// Robot.shooter.moveHood(Constants.HOOD_BOILER); +// } } // Called repeatedly 50 times/sec when this Command is scheduled to run protected void execute() { - + if (Robot.drivetrain.getSonarDistance() > 60) + { + Robot.shooter.moveHood(Constants.HOOD_LEVER); + Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_LEVER); + } + else + { + Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_BOILER); + Robot.shooter.moveHood(Constants.HOOD_BOILER); + } } // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { - return false; + return (isTimedOut()); } protected void end() { diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/StopShooter.java b/src/org/usfirst/frc/team708/robot/commands/shooter/StopShooter.java index c77e28d..e0ec00f 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/StopShooter.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/StopShooter.java @@ -20,16 +20,17 @@ public class StopShooter extends Command { public StopShooter() { -// requires(Robot.shooter); + requires(Robot.shooter); } // Called just before this Command runs the first time protected void initialize() { - Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_OFF); +// Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_OFF); } // Called repeatedly when this Command is scheduled to run protected void execute() { + Robot.shooter.manualSpeed(Constants.SHOOTER_MOTOR_OFF); } // Make this return true when this Command no longer needs to run execute() From 8d848c32b2efe92e469f29e5402f95073e420d23 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Fri, 3 Mar 2017 16:56:10 -0500 Subject: [PATCH 40/69] minor mod to drive to gear --- .../robot/commands/drivetrain/RotateAndDriveToGear.java | 4 ++-- .../frc/team708/robot/commands/intake_gear/AquireGear.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.java index c6f63be..36c51ad 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.java @@ -57,14 +57,14 @@ protected boolean isFinished() { //Check if the sonar distance is less then the target Distance, end // if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.wasCentered()){ // if (Robot.visionProcessor.isAtY() && Robot.visionProcessor.wasCentered()){ - if (Robot.visionLiftGear.gearIsAtDistance() && Robot.visionLiftGear.gearIsCentered()){ + if ((Robot.visionLiftGear.gearIsAtDistance() && Robot.visionLiftGear.gearIsCentered()) || Robot.intake_gear.hasGear()) { return true; } // else if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.isHasTarget()) { else if (Robot.visionLiftGear.gearIsAtDistance() && Robot.visionLiftGear.gearIsHasTarget()) { return false; } - + return false; } diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/AquireGear.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/AquireGear.java index 7da6daa..a650eda 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/AquireGear.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/AquireGear.java @@ -27,7 +27,7 @@ protected void initialize() { public AquireGear() { - addParallel(new DriveStraightToEncoderDistanceOrTimeOrGear(24, .4, false, 2)); + addParallel(new DriveStraightToEncoderDistanceOrTimeOrGear(24, .4, false, 3)); addParallel(new Intake_Gear_In()); } From 8dcc6a3db91ca225aa70c6a43bb05bf7dc6fe00d Mon Sep 17 00:00:00 2001 From: jpiergal Date: Fri, 3 Mar 2017 21:40:00 -0500 Subject: [PATCH 41/69] new 3 gear --- .../usfirst/frc/team708/robot/Constants.class | Bin 3498 -> 3498 bytes .../commands/autonomous/OneGearCenter.class | Bin 1791 -> 1833 bytes .../commands/autonomous/SixtyBalls.class | Bin 2086 -> 1976 bytes .../robot/commands/autonomous/TenBalls.class | Bin 1254 -> 1767 bytes .../drivetrain/RotateAndDriveToGear.class | Bin 1971 -> 2141 bytes .../commands/intake_gear/AquireGear.class | Bin 1167 -> 1176 bytes .../robot/commands/shooter/ManualShoot.class | Bin 1435 -> 1435 bytes .../robot/commands/shooter/MoveHoodHigh.class | Bin 1038 -> 1038 bytes .../robot/commands/shooter/SpinShooter.class | Bin 1505 -> 1505 bytes .../GripPipelineLiftGear.class | Bin 8192 -> 8176 bytes .../usfirst/frc/team708/robot/Constants.java | 2 +- .../commands/autonomous/OneGearCenter.java | 12 +++++++++--- ...aightToEncoderDistanceOrTimeOrHasGear.java | 4 ++-- .../visionProcessor/GripPipelineLiftGear.java | 10 +++++----- sysProps.xml | Bin 6190 -> 6190 bytes 15 files changed, 17 insertions(+), 11 deletions(-) diff --git a/build/org/usfirst/frc/team708/robot/Constants.class b/build/org/usfirst/frc/team708/robot/Constants.class index 71c7c8d29848feeb81ecd4596dff6bbfc6fd7fa6..a60a88df3c2db10e3186afe8b848d5a5bcd3a81b 100644 GIT binary patch delta 14 WcmZ1_y-Iq+1t!LQn=dlmm*+({q9m=E zH1sp2nKtAs{gh!3q0}r<)zl0HTkQIJvFJe8(L|b=hxfmv0*2z->QW}4o@JIfMI&BT zl}FA;FW|IdR&K*_)yc(v>Owk8gSohwTDzvmG?$hZns=J5*3A}!GDJD4oyKK9Lnwyj zen_^m`-K<>`@EL~@*EUD+f6dE4wP;zF@EmW{XVyYe#w@R*Yq#??C|m3xG$a0@0Cbl zvBSPUl0~P(uK0sn+JspAAL2lJ(C62qy>_p#QyMMER7LRyWYRK$Ojs4Wz+tX(lv|9l zOoe-dJYbv^CV0veZemMbNXSPjGvh+qAsI*_x=HrfO|n^rAv3B zAl+0@Y`3Mm(oNk+q5nYl1=~9>w8^5h(1E%4&b{X_XU?2G{?StT@NoSWn4zQz$pmEm z(#xuJz%Sk%+jXLGnAG$#6)>%7wy>P$5gEU<9zhA1@rz$`(eg{H)u*fI#q&5z6in7#F)8Pr%!`U;ndeOC zmd(EVutC2_3!@ujc=X9xk(6^Y`Y8L3N7@ z6>EdX2&2{psmCQ-{~Y(i#s&kI>s0C24D=ZLxASWaMD?4Pj)?ic{@JTPFqKHO!X|zK D(+pUs diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class index a4f905d780bae847b30519993d235fa293999a9a..ff24ec1e5e02ee75d3635ac6836e57ffc74a77f0 100644 GIT binary patch literal 1976 zcmbVN&2Jk;6#tFm?zUUEsfzhfRr-q)x@48Q`S3S zcDH;SQ2zw3aNsZKg-b0J32{VRIdMZm+_@tm-t0PcB0?~%gB_ulV4zc+98$3LHa z2jCVyaA+ynC|lk-0rXfiKYwYSuN-7>*TGFxY|L9Tzurt9%Uk_Ev9qz@-~<*e@6BXS zj=!XWjkhiDOe#CbW6AQ?9w%GNE2psKRZ_%8)$(3TK?fJGWaAyn8{7j1uw*h=wsFt$ zF72U1#%#sG2uhY$NKqT_I&jTjS#>aG-ZdL_21f=mlH8Y{35LGH@ESw5q?)wpugX9y z$E{7F>wMEEsFsRDw0`v5EW@M>+e#%{*XW7IZR=kVWr2Mnp!>*k>)aR%SNmjd3z_StGhviilNIgjCjxx zhWEW3)^ML;{=bvgV;$60S!`<|!dc&!hLd6FXr_`1O!O!;(cfnn7R}iGcvreS|6=oi)Rq9;w0|rKnkMZC3`h zRL)_;lx?C%hAkne@CiXB5&uWyd~~EB{bD*cM#7i>W+M z@`HOZkxcbSa_F=$6puavo%YXb74Ony70TreGuWqivsn`##Ud~hPb`IMPdt;x*|01o z*F&LfUMGocg=?B#;o~x0LbsBO<`}Yg1LI)0P5Tl0G4uO|mJB9nwG!YQ%&nM9mAHdR zV`PSwR&r#Iaop(G>0%qK_$@N)dGzIRtgj9GDUK6zf)FQ%}%Mr>qBK43O?h8&{uVka8TNU7?L)YB{pr z#;%Xon*cAkp;Dqf=RLID@4ikGlJt=PZ-d|bijxQZ_@ zh_5k(Cm6;v6!8PD;U`?jZ}ctr9i#XIW9$@ebi2V$ce;_qTbNF}K|aiM1DU=jX5H7v n@vbM~X&?+SAgZKNc@U=@M^+wdY=_u!u-CRM+aMxi2?ra9SxX~(!fHqC zBRmciKY=S8_yxIeiK>z+iW5|E=E9AFGj~oDJv)+RK>(Sp(x|7qzi)cFduD$4;si>Dz42K*HSD}r8+Ji!Qdl$WVXZWA4y6>{Fzk_zVn`|0Ot5(RJ z#?7%Q%a=Pcw5qbvaJ*VzIZ-G**^p6SmBmNl#|w_@1~UxCZ57F^iYO?M80_&{9MKky z+#~t8@IvnUQ8QE)vn(UO$_qk8HrS=Qe&2cEq%jZTTh=E-b|{>Ijw%~l%C*39PmtKmU?77d11+Q;;V5a2k;cp*oowM*tx-OM z89Yy#w$BODWLh}cYyTU^sYDOQXKa!>qV^K0=B4%E-vCz4C8Zpd%nU59+JmnjN&_bb$+C3{z9+LZ@7lv zVKEb9>?~elmodS{G0F0{(Jd-lY8N$$1uW{K5|*i=A~En#jR)Fcx{D;eZigiDop$)= XKAJrMWc$FS{{}8T1;|i{<68a`Od$L6 diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class index cbeacb19c10e9748b748d7dfaf4d9e4a50ce93ed..ffaaa489743079a4b50e7f0a7bb7b9168a506032 100644 GIT binary patch literal 1767 zcmbVN+iuf95Ivg)8%z+TR0wgu6q=Tcp+G6Lv`HIM3IQq-ApsI-n{3+!#~ao*NIdbv zH*om|UU(rANQh_tfH%H?Pe9DtX$VpYfk?K`% zEd5Yu9W_D|amp&vRZ)~CuPtjrCm-@BJOdXa42wPHQ`7Q^2sM|!TQIO}@XBgfQJ4KH zH9{9;5OTjNjP8{T7I2ke{@=wbk@hR9AXc;xLEiJE(PS9zt~957vwIkr-LEkeyDx8d zxudFED&(Qa`?a{diYm$FkYTn*A?iARBp$2?uHA(M&l7%dGa`{IJ&JV6W>(QF)C|YE zOXcaS`K=cvhKt=P?Op_{O3|m|mK)M9Cpd%a<~2_AsIV*qeF(8YF^2!Kd8it#&3h-W zGb;?Eq87PN8`4cijgTjo9}46TPilK*s%-8$&*Qf zIDwP#LK@l@@jEugu~(x_u+fi5-5EsRAU5tGXylh_c+99dW9S3P4?1+a(8-b+XD zJ}Q1c&fqYn>4aS*>pnHYqspJ*6kgyoUSh1H_E)Xi(-b}3s{J@UP190+Z_T}d6@dT|A}dC+F(gYc@NafIutRn`>$JthXYd8| z8T{iPHqpcf@C|$!^uBEZt&TLeZp@o%_(g!RK_oWUa zwy&!!61=f6yU4VvsEAcnqrn3|WIT>kpc*O;*|rFt@p?U6wqUOq9Z!v(aD!l26Mmv+ zk5&;7?w3I%w2qsRiMVAI>#Eq0M%TbeqM1W}#B;cTQ44wD$LwuWvQ!bFx~v?Y=wPq8 zjMh_4hVUqd$C$IQ)MXc8O(~MY%1s%RQ=G#SlVP#T4EsX(?F1VM{Ey<1YPO48*y^&b zujP@5G?xJ@8dx^?pcZYb=RuV=UKeE;@t`WqXPNI_)EWC~q44)jXm7v^t>PxlomVvD zH^68C;{)P8?$xC!9-zxQ+?)l9?-74e>qtlGtXU1*`BCnccw_dXAAL+`BsryM?}E zoFmI6tG|VTG+%w!;3LjV;a7>u9@D5AVnK!_r5Ul>J2#i$Vw1&gp}<(@Jt+_{#8 zKvfnlaPNO`;Xm*XXxSa7NM@?e?LPP1)7^JwukvSfeQ#OTtf zJ4_F~3VjNf6fP@VQRr6~C>QadMprc&3Vr`AcJhQ7CaL^2kL$XQDBMun(J*6-YdR5C z*`yYn@|gCxx$_}mW>1jtxMjJ`9m`#2EcZxx+_yYn*78u{k-}r`h*m7E ztf!YV^9z~unxS`EHgaE`ipq)q^qA27hHjrumCy!nF`ZR`p;C`eWXIFlRC;Y8vu<#* z>#Ofc$m9)jTLF2c-9jV-$Qr^R_aJyOmvWoCnuM#y5v&!gqk?+L8)z2BiVA8t#c5d` zTKscg+#b`E`{g#qimK)V)frzE3k`{CE)?4+syYr-t+Z(m;=3t5YMtaRPM+#2v-ug< z*)C*Ye`wzw>jR delta 768 zcmZWnOHUJF6g}TOVf>tGt0FB@s|6}3icqLZZ4pFXK0tiovub6jq3r9%jT=q6Vrk;C z8zkw1g~l!a!T(^w&V}*Z$GNmTt2bnAI|Z`-IEiYDHP~eJAtM^t_X9P` zoZL594MY#C&tG6$_2BEs2K*p6y77PR7;|Rbth3gnW6+mN%u@Fle2lYuo<53IZp{Qn zF}2TBE);Tx1vX4S7NbA@;ZRdC)WqRN109rLHqf?7vJp)3IT2g{2lF_{9cVf9n+^x| ix)r!eDzIqxH*mbw#bY;cX)G-5>tKf+6wU_o&iw;1@mkja diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/AquireGear.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/AquireGear.class index 6802d9fdd089cbabd04096f59438897e844620b0..752cea8c495cf03d51f4fa9c4afa15c58017c723 100644 GIT binary patch delta 433 zcmeC@oWbdO>ff$?3=9k=48~jxd<>fG3|eds7C-?YV6(qD69i_lIdDKkxEPoiw7D2~ z8Fbhgbh#L~LF)C`8T2Q*+H$fvK-4g7Y+`3*R$`Eu+{2j2t;Ar!!(hl@#K_<{xt~#e zvOLq*G+_oQ22ln921W)!pcWYGPv*{{+R@HdPaA(^?e--H6@v5TXlj(gU~<>86TDa8q0e3cB|O zUZyxN)+C4y%)B@A=KIaOQTe9a|CqeI0Y@BqEYNh>b$TaSP;<^c?~L6$y)*|8i#>q31ykedE*#7Xrt__UH zvQB}j#=1@mi4@HRt7)Gz`7L(K+o delta 19 bcmbQuJ)3)i5#xi6#;=(fKWvs~sbK^FNvQ`0 diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class index feed2c610fb96b541dd2fabb94afba3c06d1d079..d9b01f6377678c88c76a90217a06f739bdb897d8 100644 GIT binary patch delta 14 VcmeC<=;PS%f{Ah8=9f&Wi~uS@1xf$_ delta 14 VcmeC<=;PS%f{F3N=9f&Wi~uWb1$+Pi diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class b/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class index 40fbcb43e001317e86bb580670e11728634acd0f..7ea17f429611291973ced10d91599a604632d29d 100644 GIT binary patch delta 12 TcmaFJ{g8Wt4P(tl+a;_3A)Exc delta 12 TcmaFJ{g8Wt4da82wo6z6Baj6h diff --git a/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.class b/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.class index 7aae9cd2bc504db355aa09aa590947d4b4a8d985..a8f842896341f8e152ca7c12d750fedd30ecf893 100644 GIT binary patch delta 3345 zcmaJ@33yc175>j`FEe?W5Hpj^%N__JWQbt`MkXv7WQSlNv|@lFNemFenh;twb`&X8 zu_!)SB-VmjXtlKg(j*vbtzB$wp|ve-EwrVrtzB5Gt+rwS|NAC{=$D%B%YFYn_uO;; zd$v3GMBXZ2^6KU1Uj#5#=6g_wa~jTjV8b~#YH>jgZ)y0K2dF2XJD23g)#5#cFYbI`NwgO4yCQXu>`!^-l#^gz{%dt-PP!s< zw(RS;d%`QONX=P^Zhbvf>G!%K4@E3%1fwmW;gSdCxa>g^u5b`&A|6Z;n@8;8h!>~0 zlvvXw&V!jarzCDQcr=OUN>p^WB#2iHiAr;bCP^Mt$aNmfmt-aJsliVf&e4RVxKS>t zZV8B?^wN|pT_J18P$*L!kmV+WY>(tft|mh@8Ky~|AgQUox#7!m>k@-HFs1rG;h?g5)C?5t6`1OT&vJJG?>Tq?9^xQtd7GtqN4{d z=y(M`)X{|_<^|nIST7@VDUgx66iU!Mkd!=ZL0!%2nkF6VWt1jGx?C^Cn&j&;8XIUp zLV|#q|yra5zy@Tmg z2f^*on6UH?lfaf7@-P4kFB8vn>Z7E8lQ>nbBsX%5sLPhZOK=3qpB?5`GQt$_o38$ z+E?l;4hOyAB5%0Zhwg{;L&*?I4q z?82QyHn?Ob?m{c?8!r#yZnQ?>gjepzXAz~lhe`|Xp<*0DJm_9*h8qzcdmoW1rRms0 z6wl*F<8##0d3X`FVjB|BD(Uz3t|q{A1WjRu2s`#d~O zR7B^`#TSW+8G@O3f+)m5Ov9Im#?UVj>?gW`z6#+054n+{8HFb)8^-{R#8X6N3{yUy zCYr!t<&t76CgC7cDTM*ajJd6mK`6JVG%|+5tUsi3%si2r5^bici!-2EMY%5@o&EW^ zBBslgVrnTpXJH4N?F2S%xw`qTK{v0&SE!|mVBqGs0h^P`9V^1Ga((rnR@?)u zSVp#gtdTW?-osP$Q7h&kR)lTQx`>%*4D?vrAiCFRuN#!M{?P-U`WPcNum$sS%7ZPe zn>c=>{-B}tpuD;u;OIic>-D?3G5Ii8V)0P#Fxa(yIAU3z#PEXk5Nj|BeT`|V0_kV7 zZMC%hs+YoH$-co_jqPZso@$bO0s1)XW}QaWVoA_&4jJ2xn+#_Urc{rzhYW{3RAdiz zVX7r?P~Zp^Ih4R~c4OK#f?oCq;M=^+OHAyS2aqi3Ct1=@vV`@y*&JH(%oaQ;i-LaR80Of>q@pa%NbAPjvUDT812=CAxc0Wm*ghP$=LxtD$#6BT+!pX~ z$>_tnT8bVLkJ>#ioDs+<*!wt@@m>$+R~u=asOrK3M>jqZaKskQ7->eJ8=ve!1)1Ga zmStoafle&!z^ywRM^N2~MfTEcfA+SkQf`YF0e`l=6N~Mk9i=(e18b!Db0}G24^>qc zI3SSld>fbI=agmhP06IqR$57xTKtk$3>Cnu zSwwV_aS|35;jgI3G$Q&n5lf8dH$*NAy-vg?MA>hNJQg}dq+94Tsd_E+JIWF*^n0Qt z3;ls8*+OTC{1$5G!KrY|8osm9Kk*08L1v+PxzrISnU}m6Q9Dtpm7$f;FCkgOpXCz5 z8s5|DCrQ l_mBRcY{RVn2xv#JtQ$2dNMb#9vF2JpZ;YhmpOo8h_5)$IRGI() delta 3348 zcmaJ@33yc175>j`FEe?WY%|Hc>+tK_uO;;d(OG% z%v-Zs!mFRY`oskQQ)Rgao6x7>k_R^Qxv>%dRKveC{M!RpRPrAs`L7!Or-rxHaM=}Z zrU8Cj;q6hN;T;cGt{hvPAF~nt3ST{TXmw;G23+B_Q5{$Kwjr?fqJ>=Hx^)(yzR*~V zH6d6q1llHB$Q5o2TR;=>V7AyiNEEvo9GW;im?tieXc7}EZt*B_tR}h#izDb$qBu2p zHHlYC32sT0BsClIG@t>2Ar8Or@8lWZ4Q?LykhZ z%6^`k490n6yiCv}Uy}k&3Ok+`iE&;M%quj{YW|Kl-JO!4lZYl0Eu|t22hFpwkGh(% zTaaw-vnR*t*o-YYwqlEtRNImb9gWzgV}}~rl=cI)N8(;R4seW8Oa3&AEH!`uHnP@2xo#jaaVMoBZL6L z6rC{dP9E@-)l}p=pVVsYUh}xG%r~Pv=q)eymY4WYSswD1Pw`=v`LZudt~dLAg|wgV zk3^Dii{znJ3b9gxSS8c2Mk=vZZooR3i#nN)^|A!@QiTn&91XI8&uB9?Nh5BTCTx~w zrqFTb4tdIBC{kPoc`Ec#`a)n66CWe8!6j{opoO=Ml|$HvmI$2iN-I8&{d9Jo?7{&m z#vsIlK7oU9Bg|u4i9D#5Irt<|ERVkicT-R2;Xxe2VZ`AsF>nuE?8QFu;a(mRkAo7A zBSeWf%s1Uel#HX|#8DzYPSE3#V}z-A0Po;aLqSC||3UmH( zm0{+E)Rf3xs=7D>tHDS%I)}4yYgCu(CDc-S&Z15@&k)!!viZ(2H#g$T)KX7i^yZjR znf+@ zYfReu`wx8N1B}?f(#*>#5ANo>QSB|_4;or8X4e)59Nn1X_4-{sn0t0O9;y|CMbyXY zr~*2Z;RWAAw7e*Eh6$8DnUrR`Uh6b?()!IX~f=%k)1k?ahE9PZ;gji|-apy5oI z+JhSnXD{Z}PO^s#hdoqm4|QX{C2&yS2o*b&z;O0p!3aSw>jT(nV(=6b``e>PmJX9F z9VS_dZl=DvQYm_f>=6r|Csce(@dQ~qslbLc$npePDv}|R)JAh8KSgtdBl#(s|BvHy zy#7xx89y7vF|=x!WN4UV2u}`@4B;D!q&giJ204a?IkLTysfy-HG*b7^2H|!OT z;`3N&Hl}C9EK;s=V6S;Jy&$3@SVLE((B`)o8K>Ga%pf?-AV^0Zw%ioNcko?myIH)x zN8dPD;^GJQX0xV#--@rQ5Yfh?^nXD8A6gRI6&M;rpxv6#e{R0NDvG8fp(48IXPkDCM!%gUhNIFF?^-nXhE%}DD(bw#?7-ieylfa~Nb znL3DL?mrDzyG&5iWvu}ZmyAKItEEW0c+~Ej%QFHQg(n}RGT!dR@>(OU3%7J*g`)?z z1{~3ai$p0*MV66e1iG-Q6RVFn&f&H$tg)A6`?Fhzq}&!Z0{(1!7uMQC zN6K=n_G+a0b0}G757pEbIfiDAP)$Xykws-Aw+nSE4rELFK(`OUK*m-hiww;*nOS-3 zTLXzFPhqB_M;vcm4<*stS{E}3;m2MfzDrDTgg5 z7SAz@a`^}rGZptEn;m2he#(?gLn({;^VCj96QA=h_<}RoMV`ekxtb-3Sc6|tmMt~N z#IK2Rku2-+8(J|`0Ee=O=mlns@L>_YNJYLjqL+vq7Wyp_9~5Q3BVrLEdYQ;$p;w4> z3tc2tuZ3QvEZ#z|5hYsa_e9AS`U8>QLY+J~6>izaZXEd&|LzQRE_K8U%u8O3sFNtw z%Fw0I`;n~S&(e=_4S&(_dfF8v*aQ6-F-qAM70r!3b#z&DVf;SCLcwObzze^bAl zD+9n~KBs8Cev`MF{&&{cXssQm&gDlthYdYwP(c!_*+q+MA-yq?l7CQc!&~nHYfMQI diff --git a/src/org/usfirst/frc/team708/robot/Constants.java b/src/org/usfirst/frc/team708/robot/Constants.java index 235f7b7..99be154 100644 --- a/src/org/usfirst/frc/team708/robot/Constants.java +++ b/src/org/usfirst/frc/team708/robot/Constants.java @@ -52,7 +52,7 @@ public final class Constants { public static final double SHOOTER_MOTOR_BACKWARD = -1.0; public static final int SHOOTER_MOTOR_SPEED_BOILER = 2100; - public static final int SHOOTER_MOTOR_SPEED_LEVER = 2800; + public static final int SHOOTER_MOTOR_SPEED_LEVER = 2750; public static final int SHOOTER_MOTOR_SPEED_MID = 2700; public static final int SHOOTER_CLOSE_SHOT = 40; diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java index b5edb74..075392a 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java @@ -3,6 +3,7 @@ import org.usfirst.frc.team708.robot.Constants; import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; +import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistanceOrTimeOrGear; import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToLift; import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToGear; import org.usfirst.frc.team708.robot.commands.drivetrain.ToggleBrakeMode; @@ -12,6 +13,7 @@ import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Out; import org.usfirst.frc.team708.robot.commands.shooter.SpinShooter; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Down; +import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_In; import org.usfirst.frc.team708.robot.commands.intake_gear.AquireGear; import edu.wpi.first.wpilibj.command.CommandGroup; @@ -28,7 +30,7 @@ protected void initialize() { public OneGearCenter() { - addSequential(new DriveStraightToEncoderDistance(55, .4, false)); + addSequential(new DriveStraightToEncoderDistance(55, .3, false)); addSequential(new RotateAndDriveToLift()); // addSequential(new DriveStraightToEncoderDistance(6, .4, false)); @@ -44,8 +46,10 @@ public OneGearCenter() { addSequential(new TurnToDegreesAlliance(.6, 125, Constants.CLOCKWISE)); addSequential(new Intake_Gear_Down()); + addParallel(new Intake_Gear_In()); addParallel(new RotateAndDriveToGear()); - addSequential(new AquireGear()); + addSequential(new DriveStraightToEncoderDistanceOrTimeOrGear(24, .4, false, 3)); +// addSequential(new AquireGear()); addSequential(new TurnToDegreesAlliance(.6, 120, Constants.COUNTERCLOCKWISE)); addSequential(new RotateAndDriveToLift()); @@ -59,8 +63,10 @@ public OneGearCenter() { addSequential(new TurnToDegreesAlliance(.6, 120, Constants.CLOCKWISE)); addSequential(new Intake_Gear_Down()); + addParallel(new Intake_Gear_In()); addParallel(new RotateAndDriveToGear()); - addSequential(new AquireGear()); + addSequential(new DriveStraightToEncoderDistanceOrTimeOrGear(24, .4, false, 3)); +// addSequential(new AquireGear()); addSequential(new TurnToDegreesAlliance(.6, 120, Constants.COUNTERCLOCKWISE)); addSequential(new RotateAndDriveToLift()); diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTimeOrHasGear.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTimeOrHasGear.java index 19b76a5..b54a09b 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTimeOrHasGear.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTimeOrHasGear.java @@ -61,9 +61,9 @@ protected void execute() { // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { if(goForward) { - return (Robot.drivetrain.getEncoderDistance() >= targetDistance) || isTimedOut(); + return (Robot.drivetrain.getEncoderDistance() >= targetDistance) || isTimedOut() || Robot.intake_gear.hasGear(); } else { - return (Robot.drivetrain.getEncoderDistance() <= targetDistance) || isTimedOut(); + return (Robot.drivetrain.getEncoderDistance() <= targetDistance) || isTimedOut() || Robot.intake_gear.hasGear(); } } diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java index 3e48ff4..5c1b57e 100644 --- a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java @@ -80,9 +80,9 @@ public class GripPipelineLiftGear implements VisionPipeline { // Step RGB_Threshold0: Mat rgbThresholdInput = resizeImageOutput; - double[] rgbThresholdRed = {124.0, 255.0}; //{156.58204205866073, 255.0}; - double[] rgbThresholdGreen = {116.0, 223.0}; //{156.8172385168788, 255.0} - double[] rgbThresholdBlue = {0.0, 139.0}; //{55.03597122302158, 115.090199944652} + double[] rgbThresholdRed = {156.58204205866073, 255.0}; + double[] rgbThresholdGreen = {156.8172385168788, 255.0}; + double[] rgbThresholdBlue = {55.03597122302158, 143.37518287980558}; rgbThreshold(rgbThresholdInput, rgbThresholdRed, rgbThresholdGreen, rgbThresholdBlue, rgbThresholdOutput); // Step Find_Contours1: @@ -92,10 +92,10 @@ public class GripPipelineLiftGear implements VisionPipeline { // Step Filter_Contours1: ArrayList filterContours1Contours = findContours1Output; - double filterContours1MinArea = 3.0; //25.0; + double filterContours1MinArea = 5.0; double filterContours1MinPerimeter = 0.0; double filterContours1MinWidth = 0.0; - double filterContours1MaxWidth = 50.0; //1000.0; + double filterContours1MaxWidth = 1000.0; double filterContours1MinHeight = 0.0; double filterContours1MaxHeight = 998.0; double[] filterContours1Solidity = {0.0, 100.0}; diff --git a/sysProps.xml b/sysProps.xml index 90a8656e036ab780350d8a29337717888fad982a..4a86be9373d75019e2893b4ae425802bc4cf3d5f 100644 GIT binary patch delta 160 zcmZ2yu+Ct^G-gg$1``HH215qp$rqWdH{W6oV&yktFlDe}Z~{tLF}N_8Og_kAy}69@ zAB(9IP{I)`;lf}5gbEC<4CV|L48}mECJbg^5ugU3CZKsh8l+lbav+QK<|lk_m{^?| qLK#AUT=U5vgxDqv2~A-)g=pQpR!EhR6)4HzJo%uA^=2Uv85RJ(NFn9` delta 156 zcmZ2yu+Ct^G-h@)1``HX2A9c!EVi3(F$b~o8!}ijSTPtf7ywB(2Fu9@IjlFAasFd5 zHD+*TaAGiLFk-L(N*XXI0QDI%m;seLGnfKpKq4+c(_DaTC!iRJr2sV7dh-*$H%#oV q48aT`45pJ0idaq-5Sqqr1T@H)!EEzdAyr0Juq05*db5y-3=04W#~^ Date: Sat, 4 Mar 2017 00:12:14 -0500 Subject: [PATCH 42/69] added leds --- .../usfirst/frc/team708/robot/Constants.class | Bin 3498 -> 3498 bytes .../commands/autonomous/OneGearCenter.class | Bin 1833 -> 2023 bytes ...ightToEncoderDistanceOrTimeOrHasGear.class | Bin 2081 -> 2258 bytes .../robot/commands/shooter/ManualShoot.class | Bin 1435 -> 1435 bytes .../robot/commands/shooter/MoveHoodHigh.class | Bin 1038 -> 1038 bytes .../robot/commands/shooter/MoveHoodLow.class | Bin 1035 -> 1035 bytes .../robot/commands/shooter/SpinShooter.class | Bin 1505 -> 1505 bytes .../usfirst/frc/team708/robot/Constants.java | 62 +++++++++--------- .../commands/autonomous/OneGearCenter.java | 7 +- .../robot/commands/autonomous/SixtyBalls.java | 4 +- .../robot/commands/autonomous/TenBalls.java | 2 + .../drivetrain/RotateAndDriveToBoiler.java | 4 +- .../robot/commands/led_out/SetLED.java | 59 +++++++++++++++++ .../team708/robot/subsystems/Intake_Gear.java | 2 +- sysProps.xml | Bin 6190 -> 6190 bytes 15 files changed, 105 insertions(+), 35 deletions(-) create mode 100644 src/org/usfirst/frc/team708/robot/commands/led_out/SetLED.java diff --git a/build/org/usfirst/frc/team708/robot/Constants.class b/build/org/usfirst/frc/team708/robot/Constants.class index a60a88df3c2db10e3186afe8b848d5a5bcd3a81b..47f59ae21d687691e11bd8286ac47ba7e60bb730 100644 GIT binary patch delta 49 zcmZ1_y-IpRF|!I&10w^6hrho|ysxJVGXn$T7e)pyFyF^D%ryukqO*BAvoIF`G@J`( delta 49 zcmZ1_y-IpRF|!Iw7$XCRhrho|ysxJVGXn$D4@L$qFyF^D%ryuo!n}L)bY@{L05U%d A)c^nh diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class index 2318f30d6f6a391df4aa633a188d608af373eb49..d86a67cecdf8305578fad0f9a2109d36e370adab 100644 GIT binary patch delta 837 zcma)(&ubG=5XV0+yV*_GU`Yug#S&W@(=J4}#!9@7_!2?QS&(MIXFj-hAgfZ{|CXc7N~hyx)598knZ# zkfUUC%yL&YB?4CYQ_(*T5oR5-%-PI4^y#z(hh3B`x8bKs?&o{@+_x!Pjw9L0pZ^KzBG&%{JHDAw`= zLrjVv4?w0kq?4p_NL24|G^VP#E-Lqu$hjm&lBm(eeojmxecqP2HoQ-~lwkXl^b0=H zWi)^j5*$d9_AWIGx+6q(^q9hi0r0Jx`z?52c*>u3o=qmM!6sZ zT$A>1QRFs9xXV!Mvs+y8*R7Cbb5K&d84izz_ z+_dPRrPRu3DI>;XZF{sl-J@mX7xVCrmVaNu*&d<_i4{}Y|L6MF|G-o-vu5QV?lyxg~5ABM;x8zrnEYc|GJV>X(fP4eC*o2+6AEfh4MSVXWfKOmMX z*bDLsiH)^rBZ7i|wTN9R8xbsQ?G5VO_m*rB(F=E&J9Ey=Irm%F<2}s}KVQ8AMrl}z zRD4EFboP!`z=WHX;OqlR%$}`c`C~5ml zTDqzFOj+`dK5f}gMQ8Ri;}cqX-LNaIVbNfk_(VRn`)|H9f&$q-A zQ)XV6i+@QeUdiOW`pWH_@s`X7jpb|W0SnZH=~g$ewY6I})|Xu?4!w^{^r@j@vZoV| zLku94^nFCHxcf{)1}DWNg##ScJV=`iwScNDCCUS`t|vY5YUgT@9ePdor5t;66k;(G zQi!Xj^k=!)?90*Ry~KY(w!QE&`*c;W>MCeOvQYb3vx#sf#=OFSe;# gPyKr;Jj(%U1w7+?P0HA%qcz z!xmyV(oB`pjH5Wlz2m$cWymv};NF;plQ_k2n&FH@f!A?{A`>R~_@sp?oaNp*?v*5_ z1zMIW3v<=AXDJ~H^%b!`9*3(1CV|8HMw>pl}hF6n3Irp^Kp#Jqnj`MdGT$ zHD=E;Tt`}L5W{SlcHvGE#SHto&EFG5}EUjj0wUkzSWlo7i z{im6oWsRH;?07jGPs8yv9DX;K$JqkdPbb6h{ifMXi35fq$SX*34kE2h<^#Q1jvUbu z2k1x!{BjX8WLrfnAnMxsG2ov27U-&NjXFX+r-8rC<7Y6)KBV!I99XMle}c7)0 z*AawF71azLqFcWnI=o6lLKyP0gzlr!FtIZq?&YM3-n+rJ9aWH-~G NV7dYVLuBj2@E>2%bu$0} delta 1004 zcmZ9K%}*0i6vfZ$O#9m5QD^~?53xuUTCEl-S{;#spnR#|x2Q415aULTbmyYFblruL z7!y}6bORbpT<{0DGX6p8xzEYabkQ^Sy}9>y&U>BTsgLcopMQSr0x02u#<+(zoDwjS})_FTu=li|F=A+8pn$>45&xGnb`ku5thMD<7j*_zW? zRv9?dcov6ogoS{Ht)Wz6;aKp9fa|}aee-*eUL??GA$ho*^g@OgGCUhsEIdn#T3XK1 zO0gw1RDT^CTa_Rs8`uvSe#r1chA(#=^hvfD@|;W|@|UNMY8-VOMXwgdIfjBYN$PA( zBByP{B1cAHFvfMsMmOvNIs#i4$N$f9&u6c^Yu!dH{|$+xvxD~Li!2l7H-K70&63@bWuIZ$i7D;5uLSUcLL!^ojrna+IX~%O?33R>+@j zaGwa=hB delta 15 WcmeC?=;qjPn~8}fZ1Y_vJw^a2$pp~= diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class b/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class index 7ea17f429611291973ced10d91599a604632d29d..128501cf93469f235fd6b0a0525dd8d86970c28e 100644 GIT binary patch delta 45 vcmaFJ{g8XZCKd%ooox(Un;4ix7`V4F@GfT%1+)2pY#>9BsbTXa7Jfzm8hi^E delta 45 vcmaFJ{g8XZCKd(e-P;(rHZd@XFmP{U;9brj3TE>G*+7OMOW5X1Ec}cBE%Xb3 diff --git a/src/org/usfirst/frc/team708/robot/Constants.java b/src/org/usfirst/frc/team708/robot/Constants.java index 99be154..1247bb9 100644 --- a/src/org/usfirst/frc/team708/robot/Constants.java +++ b/src/org/usfirst/frc/team708/robot/Constants.java @@ -18,10 +18,10 @@ public final class Constants { public static final double CLIMB_REVERSE = -1.0; public static final double CLIMB_OFF = 0.0; - public static final double GEAR_UP = 0.4; + public static final double GEAR_UP = 0.4; public static final double GEAR_DOWN = -0.4; public static final double GEAR_OFF = 0.0; - public static final double GEAR_IN = 1.0; + public static final double GEAR_IN = 1.0; public static final double GEAR_OUT = -1.0; @@ -41,11 +41,11 @@ public final class Constants { public static final double FEEDER_MOTOR_FORWARD = 0.8; //1.0; public static final double FEEDER_MOTOR_REVERSE = -0.8; //-1.0; - public static final double FEEDER_OFF = 0.0; + public static final double FEEDER_OFF = 0.0; public static final double LOADER_MOTOR_FORWARD = 1.0; public static final double LOADER_MOTOR_REVERSE = -1.0; - public static final double LOADER_OFF = 0.0; + public static final double LOADER_OFF = 0.0; public static final double SHOOTER_MOTOR_FORWARD = 1.0; public static final double SHOOTER_MOTOR_OFF = 0.0; @@ -54,7 +54,7 @@ public final class Constants { public static final int SHOOTER_MOTOR_SPEED_BOILER = 2100; public static final int SHOOTER_MOTOR_SPEED_LEVER = 2750; public static final int SHOOTER_MOTOR_SPEED_MID = 2700; - public static final int SHOOTER_CLOSE_SHOT = 40; + public static final int SHOOTER_CLOSE_SHOT = 40; public static final double SHOOTER_PEAK_POS = 12.0; @@ -62,16 +62,16 @@ public final class Constants { public static final int HOOD_MIN = 30; public static final int HOOD_MAX = 2000; - public static final int HOOD_BOILER = 1110; - public static final int HOOD_MID = 760; - public static final int HOOD_LEVER = 955; + public static final int HOOD_BOILER = 640; + public static final int HOOD_MID = 500; + public static final int HOOD_LEVER = 300; public static final int SHOOTER_ENCODER_PULSES = 12; - public static final double SHOOTER_P = 5.00; - public static final double SHOOTER_I = 0.005; - public static final double SHOOTER_D = 10.0; - public static final double SHOOTER_F = 2.6; + public static final double SHOOTER_P = 5.00; + public static final double SHOOTER_I = 0.005; + public static final double SHOOTER_D = 10.0; + public static final double SHOOTER_F = 2.6; public static final int SHOOTER_IZONE = 00; public static final double SHOOTER_RAMPRATE = 0.0; public static final int SHOOTER_PROFILE = 0; @@ -84,16 +84,16 @@ public final class Constants { * Smart Dashboard */ public static final double SEND_STATS_INTERVAL = .5; // Interval for reporting in seconds - public static final boolean DEBUG = true; - public static final boolean LIFT_DEBUG = true; - public static final boolean BOILER_DEBUG = true; - public static final boolean GEAR_DEBUG = true; + public static final boolean DEBUG = true; + public static final boolean LIFT_DEBUG = true; + public static final boolean BOILER_DEBUG = true; + public static final boolean GEAR_DEBUG = true; /* * Sensors */ - public static final double SONAR_CLOSE = 30.0; - public static final double SONAR_FAR = 80.0; + public static final double SONAR_CLOSE = 30.0; + public static final double SONAR_FAR = 80.0; public static final double IR_HAS_GEAR_DISTANCE = 4.0; public static final double ENCODER_BOTTOM_POSITION = 0.0; // public static final double GRAYHILL_ENCODER_PULSES_PER_REVOLUTION = 1024.0; @@ -102,15 +102,15 @@ public final class Constants { /* * Drivetrain */ - public static final double TANK_STICK_TOLERANCE = .30; + public static final double TANK_STICK_TOLERANCE = .30; public static final double DRIVETRAIN_WHEEL_DIAMETER = 4.0; public static final int DRIVETRAIN_ENCODER_PULSES_PER_REV = 5704; //encoder 1024 * gear ratio 5.57 public static final boolean DRIVE_USE_SQUARED_INPUT = false; public static final boolean DRIVETRAIN_USE_LEFT_ENCODER = true; // variable to determine which side encoder is on - public static final double PEAK_POS = 4.0; - public static final double PEAK_NEG = -4.0; - public static final double NOMINAL_POS = 0.0; - public static final double NOMINAL_NEG = -0.0; + public static final double PEAK_POS = 4.0; + public static final double PEAK_NEG = -4.0; + public static final double NOMINAL_POS = 0.0; + public static final double NOMINAL_NEG = -0.0; // PID Tuning parameters @@ -127,16 +127,16 @@ public final class Constants { // LED CONTROLS public static final byte SET_ALLIANCE_INVALID = 0x00; - public static final byte SET_ALLIANCE_RED = 0x01; + public static final byte SET_ALLIANCE_RED = 0x01; public static final byte SET_ALLIANCE_BLUE = 0x02; - public static final byte SET_TARGETING = 0x03; - public static final byte SET_TARGET_FOUND = 0x04; - public static final byte SET_HAS_GEAR = 0x05; + public static final byte SET_TARGETING = 0x03; + public static final byte SET_TARGET_FOUND = 0x04; + public static final byte SET_HAS_GEAR = 0x05; public static final byte SET_HAS_GEAR_TARGETING = 0x06; -// public static final byte = 0x07; -// public static final byte = 0x08; - public static final byte SET_OFF = 0x09; - public static final byte MAX_LED_CODE = 0x10; +// public static final byte = 0x07; +// public static final byte = 0x08; + public static final byte SET_OFF = 0x09; + public static final byte MAX_LED_CODE = 0x10; public static final int ALLIANCE_RED = 1; public static final int ALLIANCE_BLUE = -1; diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java index 075392a..625ca0b 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java @@ -11,6 +11,7 @@ import org.usfirst.frc.team708.robot.commands.feeder.SpinFeeder; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Off; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Out; +import org.usfirst.frc.team708.robot.commands.led_out.SetLED; import org.usfirst.frc.team708.robot.commands.shooter.SpinShooter; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Down; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_In; @@ -46,6 +47,8 @@ public OneGearCenter() { addSequential(new TurnToDegreesAlliance(.6, 125, Constants.CLOCKWISE)); addSequential(new Intake_Gear_Down()); + addSequential(new SetLED(Constants.SET_HAS_GEAR_TARGETING)); + addParallel(new Intake_Gear_In()); addParallel(new RotateAndDriveToGear()); addSequential(new DriveStraightToEncoderDistanceOrTimeOrGear(24, .4, false, 3)); @@ -62,7 +65,9 @@ public OneGearCenter() { // get gear 3 addSequential(new TurnToDegreesAlliance(.6, 120, Constants.CLOCKWISE)); addSequential(new Intake_Gear_Down()); - + + addSequential(new SetLED(Constants.SET_HAS_GEAR_TARGETING)); + addParallel(new Intake_Gear_In()); addParallel(new RotateAndDriveToGear()); addSequential(new DriveStraightToEncoderDistanceOrTimeOrGear(24, .4, false, 3)); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java index 6224a65..bab36dc 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java @@ -12,6 +12,7 @@ import org.usfirst.frc.team708.robot.commands.feeder.SpinFeeder; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Off; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Out; +import org.usfirst.frc.team708.robot.commands.led_out.SetLED; import org.usfirst.frc.team708.robot.commands.shooter.StopShooter; import org.usfirst.frc.team708.robot.commands.shooter.SpinShooter; @@ -35,8 +36,9 @@ public SixtyBalls() { addSequential(new DriveStraightToEncoderDistance(40, .4, true)); //55, .4, false addSequential(new TurnToDegreesAlliance(.6, 45, 1)); + + addSequential(new SetLED(Constants.SET_TARGETING)); addSequential(new RotateAndDriveToBoiler(10)); - addSequential(new WaitCommand(4)); addParallel(new SpinShooter(11)); addSequential(new SpinFeeder(8)); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java index 4b64eaa..abbe408 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java @@ -3,6 +3,7 @@ import org.usfirst.frc.team708.robot.AutoConstants; import org.usfirst.frc.team708.robot.Constants; import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.commands.led_out.SetLED; import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightForTime; import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToBoiler; @@ -37,6 +38,7 @@ public TenBalls() { // addSequential(new DriveStraightToEncoderDistance(85, .4, false)); //55, .4, false // addSequential(new TurnToDegreesAlliance(.6, -45)); + addSequential(new SetLED(Constants.SET_TARGETING)); addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); addParallel(new SpinShooter(10)); diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java index 23ccc7e..df5718f 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java @@ -1,6 +1,7 @@ package org.usfirst.frc.team708.robot.commands.drivetrain; import org.usfirst.frc.team708.robot.AutoConstants; +import org.usfirst.frc.team708.robot.Constants; import org.usfirst.frc.team708.robot.Robot; import edu.wpi.first.wpilibj.command.Command; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; @@ -64,7 +65,8 @@ protected boolean isFinished() { } //Check if the sonar distance is less then the target Distance, end if (Robot.visionBoiler.boilerIsAtDistance() && Robot.visionBoiler.boilerIsCentered()){ - return true; + Robot.led1.send_to_led(Constants.SET_TARGET_FOUND); + return true; } else { return false; diff --git a/src/org/usfirst/frc/team708/robot/commands/led_out/SetLED.java b/src/org/usfirst/frc/team708/robot/commands/led_out/SetLED.java new file mode 100644 index 0000000..7e9c48e --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/led_out/SetLED.java @@ -0,0 +1,59 @@ +package org.usfirst.frc.team708.robot.commands.led_out; +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.RobotMap; +import org.usfirst.frc.team708.robot.util.Gamepad; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.OI; +import org.usfirst.frc.team708.robot.subsystems.LED; +import org.usfirst.frc.team708.robot.subsystems.Drivetrain; + + +import edu.wpi.first.wpilibj.SerialPort; +import edu.wpi.first.wpilibj.SerialPort.Port; + +//import org.team708.robot.OI; +//import org.team708.robot.subsystems.Loader; +//import org.team708.robot.util.Gamepad; +//import org.team708.robot.commands.shooter.Fire; + +import edu.wpi.first.wpilibj.command.Command; +import edu.wpi.first.wpilibj.command.WaitCommand; + +/** + * + */ +public class SetLED extends Command { + +static public byte ledcolor = 0x00; + + public SetLED(byte ledcolor) { +// requires(Robot.led1); + this.ledcolor = ledcolor; + } + +// Called just before this Command runs the first time + protected void initialize() { + Robot.led1.send_to_led(ledcolor); + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + + Robot.led1.send_to_led(ledcolor); + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return true; + } + + // Called once after isFinished returns true + protected void end() { + } + + // Called when another command which requires one or more of the same + // subsystems are scheduled to run + protected void interrupted() { + end(); + } +} diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java index fac8efb..b679b2b 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java @@ -39,7 +39,7 @@ public void moveMotor(double speed) { public boolean hasGear() { if (gearSensor.get()) { - Robot.led1.send_to_led(Constants.SET_HAS_GEAR_TARGETING); + Robot.led1.send_to_led(Constants.SET_HAS_GEAR); return (true); } else { diff --git a/sysProps.xml b/sysProps.xml index 4a86be9373d75019e2893b4ae425802bc4cf3d5f..feb1b3c3e1436671060c16641988ce2d19467e92 100644 GIT binary patch delta 55 zcmZ2yu+CsZ37?`PgDHa{gE0^~GZ+A&0)rca3xgRDx-mF0m@pV`p2{c6!fec7w0W&i GBP#$ejtZ0j delta 55 zcmZ2yu+CsZ37?`9gDHa}gA;=ZgA0QJ5GpXZGMF=1Fc Date: Sat, 4 Mar 2017 00:28:22 -0500 Subject: [PATCH 43/69] added manual led commands --- .../frc/team708/robot/commands/feeder/ManualFeeder.java | 1 + .../frc/team708/robot/commands/intake_gear/GearIntake.java | 7 +++++++ .../frc/team708/robot/commands/shooter/ManualShoot.java | 3 ++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.java b/src/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.java index 23b5d6a..fcb836c 100644 --- a/src/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.java +++ b/src/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.java @@ -22,6 +22,7 @@ public ManualFeeder() { protected void initialize() { Robot.feeder.manualMove(Constants.FEEDER_MOTOR_FORWARD); Robot.intake_ball.moveMotor(Constants.INTAKE_FORWARD); + Robot.led1.send_to_led(Constants.SET_TARGET_FOUND); } // Called repeatedly when this Command is scheduled to run diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java index 4e7f642..1ba816e 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java @@ -23,13 +23,20 @@ protected void execute() { /// Robot.intake_gear.moveMotor(gearAngle); //Defines move speed from the operator's controller if ((!Robot.intake_gear.hasGear()) && (gearAngle>0)) + { Robot.intake_gear.moveMotor(Constants.GEAR_IN); + Robot.led1.send_to_led(Constants.SET_HAS_GEAR_TARGETING); + } else if (gearAngle<0) + { Robot.intake_gear.moveMotor(Constants.GEAR_OUT); + Robot.led1.send_to_led(Robot.ledAllianceColor); + } else { Robot.intake_gear.stop(); Robot.pivot_gear.moveMotor(Constants.GEAR_UP); + Robot.led1.send_to_led(Robot.ledAllianceColor); } } diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java b/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java index 302deb3..2a23844 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java @@ -1,6 +1,7 @@ package org.usfirst.frc.team708.robot.commands.shooter; import org.usfirst.frc.team708.robot.Constants; import org.usfirst.frc.team708.robot.RobotMap; +import org.usfirst.frc.team708.robot.commands.led_out.SetLED; import org.usfirst.frc.team708.robot.util.Gamepad; import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.OI; @@ -41,7 +42,7 @@ protected void initialize() { Robot.shooter.setSpinSpeed(Constants.SHOOTER_MOTOR_SPEED_BOILER); } - + Robot.led1.send_to_led(Constants.SET_TARGETING); // Robot.shooter.setFgain(Constants.SHOOTER_F); } From 91658372ba8304a087c2a483b70fb64660796e56 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sat, 4 Mar 2017 09:43:40 -0500 Subject: [PATCH 44/69] trying to fix LEDS --- .../usfirst/frc/team708/robot/Constants.class | Bin 3498 -> 3498 bytes .../commands/autonomous/OneGearCenter.class | Bin 2023 -> 2023 bytes .../commands/autonomous/SixtyBalls.class | Bin 1976 -> 1958 bytes .../robot/commands/autonomous/TenBalls.class | Bin 1767 -> 1767 bytes ...ightToEncoderDistanceOrTimeOrHasGear.class | Bin 2258 -> 2179 bytes .../drivetrain/RotateAndDriveToBoiler.class | Bin 2163 -> 2366 bytes .../robot/commands/feeder/ManualFeeder.class | Bin 1220 -> 1378 bytes .../commands/intake_gear/GearIntake.class | Bin 1561 -> 1720 bytes .../robot/commands/shooter/ManualShoot.class | Bin 1435 -> 1603 bytes .../robot/commands/shooter/MoveHoodHigh.class | Bin 1038 -> 1037 bytes .../robot/commands/shooter/MoveHoodLow.class | Bin 1035 -> 1035 bytes .../robot/commands/shooter/SpinShooter.class | Bin 1505 -> 1504 bytes .../robot/subsystems/Intake_Gear.class | Bin 1577 -> 1576 bytes .../usfirst/frc/team708/robot/Constants.java | 4 +- .../commands/autonomous/OneGearCenter.java | 6 +- .../robot/commands/autonomous/SixtyBalls.java | 4 +- .../robot/commands/autonomous/TenBalls.java | 4 +- ...aightToEncoderDistanceOrTimeOrHasGear.java | 2 +- .../commands/intake_gear/GearIntake.java | 4 +- .../robot/commands/led_out/SetLED.java | 118 +++++++++--------- .../robot/commands/shooter/ManualShoot.java | 7 +- sysProps.xml | Bin 6190 -> 6190 bytes 22 files changed, 75 insertions(+), 74 deletions(-) diff --git a/build/org/usfirst/frc/team708/robot/Constants.class b/build/org/usfirst/frc/team708/robot/Constants.class index 47f59ae21d687691e11bd8286ac47ba7e60bb730..884f77b433edab1476624e227ff2a943dc60a23c 100644 GIT binary patch delta 22 ecmZ1_y-IpRF*6h6gvq7M3QP<(o2N4ia{&NQmIfC9 delta 22 dcmZ1_y-IpRF*6fW!{kzC1tvzF&C{8Mxd2al1^EB~ diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class index d86a67cecdf8305578fad0f9a2109d36e370adab..f0ea807dfbb4f678a0d8b94c847bd6b69e4d36d9 100644 GIT binary patch delta 132 zcmaFP|D1n=J1e8yW)IdX##jXg76v5-F$QG@MFw>S9R>{sI|hA*00skwXa*C8GzL?K zLIyL2HU>+E84Okoi-EH180;AiFgP(>VsK`-%izxNg298~GlM512ZIlz6oW6LDnlTn k0Yea@6GQN1d3H<2@X3+v7L!l0i%ee1uF9A=`82x>0GucrKmY&$ delta 134 zcmaFP|D1n=J1e8?W)IdX##ng<76wHIF$N_dsm7qgpw3{&pvMrvpwAG^V91chV8l?! zV9e0QV8$?m!JJ_+gEhlC1{;P04E79{7#tYxGB`23U~p#m%;3Vv!Qjp)#o)oH%HYFj mz~Ia1#Nansp52l$XmTXG#pDQfp2>6Bbtg|`7nyvIof81O?;BG9 diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class index ff24ec1e5e02ee75d3635ac6836e57ffc74a77f0..c749d7e39ca30221e72bd616f51780a43d74ad89 100644 GIT binary patch delta 167 zcmdnNzl?uFBCDn}gCzq40}lfukYr@AVz36&HVkG!o;gq`kAVXu$H*|bi*?~-OSX(~ zF9so?8d(Mw1~~>X26+Yz1_hu#MFtNBC59*lWriFE6^1$nHHHZcnhf(8v>Dbg=rHVJ z&|^5tpwDof!I0q*gAv1924jZ*3?>M>f#&~V(`B@nti^7@XgfI>NIFfP!!82=kH{K? delta 165 zcmXYrxeftg7y#!>>@Eqr#fFHu#Z4T=T1TN&Nwictg=Y}8O7hnv8kIsRUVz>+XjFQQ zmFT9LnWJ^F&T~y-YGT-7VSt0s0a@es2r<=0JE)sxs;a)2jj@3^J`zMoQX)l?v}h%#{jvYCNd(q`{jeA6gQkP1myp|DBg!7e_@6SNh(KE5qND+8Kc_ D6nq^L diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class index ffaaa489743079a4b50e7f0a7bb7b9168a506032..a9e2a19dce162b8fec1f25b5e3a12b00a9896c8a 100644 GIT binary patch delta 81 zcmaFP`1IZb`&bYn>uj$@tHL7l~q^cWS$u0ObwXv)M zPv-GrGFtaS18Tt!){3q0ffs~P@j*~4My_gH9-Ax%e$|hPHNVkN&3ag@2i{{h3Y6C@ zmc?BZe{DTl@~<~*OdRZ2SP6u0CAgu&IadW!2DEz_eD=Uc_1VM6aS*VuvHD8hLPI{+oIF@ zqoT%-PxZIQ4A_B7+Ob^up!9U^Y2Z^{lxX|0WY*P&ujRrgCL$H}<@kb+$Xsi$tmP<; zs8^&DB0=@YU0tK_4P1Ku>gL<$;s;ZD?(z$Da}Fo#L}VR~nf zpzX#R$a55LMCTJvG9)x^A;w+is>vwJ$rqA?sXZi)BA-HrECty?QX)IZRtMSAHAr4d z=Sb-sPMqU6=IrKP$=O5F$?hOEklMxxC%=QVQ`mv|41G?1OV4OcXCSr1LI=~k$OxN+ zuG1klm?z1OW^`ZAqMyAHZbO>W2+ot^INsE3OS)gB4%PnP z{v>S5#9N7k!K!+g^gKr6a^^W24D0_1)-HOqwYBX%=v_|tYK({%V3Sjhzj)F^yL~if zl|-=vJH=Rm?Io1+Gt6va7kvkS?Q5PSz|dAv%?qj&!jH=5S)# zz-ci_`LxCSCO8T|Qzw1lXo>Ue!>vP@W~apQ4#ap2kzzFiM*;3K+r2{osTjcE709ER F_zMjUxK027 literal 2258 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 sLnsMZS;o9NMiw5CWk+QH_f;_q9pbGYtd)6UbO z>#@fThkfIFxgUQdS&l({^L{fo`gLZ`)MG%;n7&7u1BY7yJ3rjHzlK^Tgq)W{0X`crqJ)d11X$r>)GJ zNm(SDlS3h&h^+}4h*#pX?XRer1Qr*?dg7r#2A_3_^dgBm8-g-iN(efF4MD2d`~am? zp`t!nR&FMhABD%3#PJ-tTpla0ttSqp==AMgbhBiv8yhQYh{6a`nv$2a9TwJ=9l z@FR*wxE%}M!Iiiwwk~*srbrFhWH6z@A=@0wY)nVBxWnM} zQMfG>i&1sOo5n2rv$64ai&k5yR;^@4vV&#iNc_Zo_chCI#{qr2a9Geu(4NbYnwgr#y?#SCUct6#De<(yPTRP^G3f_ViC456qng}cJg zG&;7=5R6$F&d`|_r5UbW`)BLO<4AkUUUwH?YR1( zoz`7$-N{;(%WZwzFpEYmDR;{Zsw5CbPQ0Ty?Mc^2zuGnm zeh7uX;pw7F8dW$ObkfQ4j7R&DMsCu&O_=1=E*4y=QIl5DPV)^Rsk>?-O&uF2hK9@N zSFosI3Cjwi8Xkf^ex&{f#4OWs4bycrJi@Ai#~RiU(-6nHh7GxTf=vZm8lK{rh6J`X z?4V!69rQCS)puSmI}F1-Q`BD$p7c=<$jf)oZqXsDGMKDUP_Cv`oW}3z^F_Rfk$G&Y<{R!7$S}kk>oh zCYo@=G` zVm(fHlMUn1dFo|{TKd4X4k(;NS@Te2>Z&M|wk^^*u2sMw-Q_;-euuzhZ_{{%_OmoI znw!UefPJS$09R>LX$Bn%;s&nKN-H12b=rfZH!BWKX(t`*ogq*{Q!ko7ea6Tcl&)wA zEj0I{wS+cWbgSnjXlG~-mC*4G!=A3w*RhY~)7>p|)kBh}$>SL(B47aRbW{2;gj={v zFV`@p>9t$JIAWNf+cb$J!Zo~mKJP7$IWRp)thX!VQSvRxI|zjSC3Jrvn2R}>qnMEz zpB7s);eersYgJ$0Wqx?zI;Xm_~V}}3$ delta 657 zcmZ9JJ5L)y6otQCFCMcDPd`FPATf~eGLT>s@-WGUr^K(IL{#*NM7q?-1qBjGgJ@_l z(iRkHQXnDa*U%%*EM&D}iaU4C%sJ=YJAds_*Y@@8Ib_w#S&#h!?MUb!;bK<%B*gogQpB>cWCln`JqnkZnKRalPl42cucj8>Gx`_UqN~Qlo6dubjNf#*#8kz za7m#NW6wp+;VeffD88VZs*FdKjj8nsO>$BVO|ijTrj*TxQl5(w;Li*x4yQ#mrRj?5 zX|r$S71R4u_Rh>t%|j=NcWm1A^r|6aWAK diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class index 1dbf7768ea6116fc24512e41c69b9bd1a73f03b2..151d316976abea5cacc03ab9d9fa379403442a32 100644 GIT binary patch delta 50 zcmeC<=;hdOk%`ZRfr){Ufq_A269bcg&EyA6a>5)8G7N$YvJAXHVIGL&WI^V?0Om;t A-T(jq delta 51 zcmeC>=;PRMk%`}xfr){Ufq_AI69bbVqt4{}Omf1U3^EKt46+QoKye<3>|_DvzX0hO B2h;!n diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class index 44c23dd24e9a62ef54a44538fdb22e5375618480..83695471cd67e79a6030537f68a3ece5921015f1 100644 GIT binary patch delta 15 WcmeC?=;qjPn~8~W!sfe7dW--o5CsST delta 15 WcmeC?=;qjPn~903Ve?%kJw^a3w*>hB diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class b/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class index 128501cf93469f235fd6b0a0525dd8d86970c28e..7cdab6c448fd15d28a48a258a03fed5b2b7f4d4c 100644 GIT binary patch delta 139 zcmaFJ{eXMJ43_#D1{MZJ1_lO`O$@Bt7}!J@*r(595Z}bWBw(|RfeT2BFmP{U;9brj z3TE>G*+7OM;{>4WMxZ`s1}PvZ#lQw6^%!^=3>ZWi3>g#|Oc}Ho%ovOrEEuGLGCUAF Y7-Se^fjmVZW?^7b6l7qTEWvsb0Q-p)9smFU delta 117 zcmaFB{g8XZ3>K?e1{MZJ1_lPxO$@Bt7}!J@*r(59kl4h)B*>_g8_pPg9(r{U{C<^O&Kg09Dx`FO*T*E6J}vG0V=TAyjG}@ F6#zdn3b6nH delta 57 zcmZ2yu+CsZ37?`PgDHa{gE0^~GZ+A&0)rca3xgRDx-mF0m@pV`p2{c8!U|Ggw0W&i GBP#$w_6o-U From 7a91bfaa56338b9e7eec322881bd41f2b2d7321a Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sat, 4 Mar 2017 09:47:11 -0500 Subject: [PATCH 45/69] revert --- .../drivetrain/RotateAndDriveToGear.class | Bin 2141 -> 1971 bytes .../commands/intake_gear/AquireGear.class | Bin 1176 -> 1167 bytes .../GripPipelineLiftGear.class | Bin 8176 -> 8192 bytes .../usfirst/frc/team708/robot/Constants.java | 2 +- ...aightToEncoderDistanceOrTimeOrHasGear.java | 4 ++-- .../visionProcessor/GripPipelineLiftGear.java | 10 +++++----- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.class index 8c10b77845ad12b720a87266d798f0326c40688e..1521406babea8aaef44401f96f9ba002e870ae50 100644 GIT binary patch delta 768 zcmZWnOHUJF6g}TOVf>tGt0FB@s|6}3icqLZZ4pFXK0tiovub6jq3r9%jT=q6Vrk;C z8zkw1g~l!a!T(^w&V}*Z$GNmTt2bnAI|Z`-IEiYDHP~eJAtM^t_X9P` zoZL594MY#C&tG6$_2BEs2K*p6y77PR7;|Rbth3gnW6+mN%u@Fle2lYuo<53IZp{Qn zF}2TBE);Tx1vX4S7NbA@;ZRdC)WqRN109rLHqf?7vJp)3IT2g{2lF_{9cVf9n+^x| ix)r!eDzIqxH*mbw#bY;cX)G-5>tKf+6wU_o&iw;1@mkja delta 860 zcmYk4OH&h35QV>+%w!;3LjV;a7>u9@D5AVnK!_r5Ul>J2#i$Vw1&gp}<(@Jt+_{#8 zKvfnlaPNO`;Xm*XXxSa7NM@?e?LPP1)7^JwukvSfeQ#OTtf zJ4_F~3VjNf6fP@VQRr6~C>QadMprc&3Vr`AcJhQ7CaL^2kL$XQDBMun(J*6-YdR5C z*`yYn@|gCxx$_}mW>1jtxMjJ`9m`#2EcZxx+_yYn*78u{k-}r`h*m7E ztf!YV^9z~unxS`EHgaE`ipq)q^qA27hHjrumCy!nF`ZR`p;C`eWXIFlRC;Y8vu<#* z>#Ofc$m9)jTLF2c-9jV-$Qr^R_aJyOmvWoCnuM#y5v&!gqk?+L8)z2BiVA8t#c5d` zTKscg+#b`E`{g#qimK)V)frzE3k`{CE)?4+syYr-t+Z(m;=3t5YMtaRPM+#2v-ug< z*)C*Ye`wzw>jR diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/AquireGear.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/AquireGear.class index 752cea8c495cf03d51f4fa9c4afa15c58017c723..6802d9fdd089cbabd04096f59438897e844620b0 100644 GIT binary patch delta 467 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 delta 3345 zcmaJ@33yc175>j`FEe?W5Hpj^%N__JWQbt`MkXv7WQSlNv|@lFNemFenh;twb`&X8 zu_!)SB-VmjXtlKg(j*vbtzB$wp|ve-EwrVrtzB5Gt+rwS|NAC{=$D%B%YFYn_uO;; zd$v3GMBXZ2^6KU1Uj#5#=6g_wa~jTjV8b~#YH>jgZ)y0K2dF2XJD23g)#5#cFYbI`NwgO4yCQXu>`!^-l#^gz{%dt-PP!s< zw(RS;d%`QONX=P^Zhbvf>G!%K4@E3%1fwmW;gSdCxa>g^u5b`&A|6Z;n@8;8h!>~0 zlvvXw&V!jarzCDQcr=OUN>p^WB#2iHiAr;bCP^Mt$aNmfmt-aJsliVf&e4RVxKS>t zZV8B?^wN|pT_J18P$*L!kmV+WY>(tft|mh@8Ky~|AgQUox#7!m>k@-HFs1rG;h?g5)C?5t6`1OT&vJJG?>Tq?9^xQtd7GtqN4{d z=y(M`)X{|_<^|nIST7@VDUgx66iU!Mkd!=ZL0!%2nkF6VWt1jGx?C^Cn&j&;8XIUp zLV|#q|yra5zy@Tmg z2f^*on6UH?lfaf7@-P4kFB8vn>Z7E8lQ>nbBsX%5sLPhZOK=3qpB?5`GQt$_o38$ z+E?l;4hOyAB5%0Zhwg{;L&*?I4q z?82QyHn?Ob?m{c?8!r#yZnQ?>gjepzXAz~lhe`|Xp<*0DJm_9*h8qzcdmoW1rRms0 z6wl*F<8##0d3X`FVjB|BD(Uz3t|q{A1WjRu2s`#d~O zR7B^`#TSW+8G@O3f+)m5Ov9Im#?UVj>?gW`z6#+054n+{8HFb)8^-{R#8X6N3{yUy zCYr!t<&t76CgC7cDTM*ajJd6mK`6JVG%|+5tUsi3%si2r5^bici!-2EMY%5@o&EW^ zBBslgVrnTpXJH4N?F2S%xw`qTK{v0&SE!|mVBqGs0h^P`9V^1Ga((rnR@?)u zSVp#gtdTW?-osP$Q7h&kR)lTQx`>%*4D?vrAiCFRuN#!M{?P-U`WPcNum$sS%7ZPe zn>c=>{-B}tpuD;u;OIic>-D?3G5Ii8V)0P#Fxa(yIAU3z#PEXk5Nj|BeT`|V0_kV7 zZMC%hs+YoH$-co_jqPZso@$bO0s1)XW}QaWVoA_&4jJ2xn+#_Urc{rzhYW{3RAdiz zVX7r?P~Zp^Ih4R~c4OK#f?oCq;M=^+OHAyS2aqi3Ct1=@vV`@y*&JH(%oaQ;i-LaR80Of>q@pa%NbAPjvUDT812=CAxc0Wm*ghP$=LxtD$#6BT+!pX~ z$>_tnT8bVLkJ>#ioDs+<*!wt@@m>$+R~u=asOrK3M>jqZaKskQ7->eJ8=ve!1)1Ga zmStoafle&!z^ywRM^N2~MfTEcfA+SkQf`YF0e`l=6N~Mk9i=(e18b!Db0}G24^>qc zI3SSld>fbI=agmhP06IqR$57xTKtk$3>Cnu zSwwV_aS|35;jgI3G$Q&n5lf8dH$*NAy-vg?MA>hNJQg}dq+94Tsd_E+JIWF*^n0Qt z3;ls8*+OTC{1$5G!KrY|8osm9Kk*08L1v+PxzrISnU}m6Q9Dtpm7$f;FCkgOpXCz5 z8s5|DCrQ l_mBRcY{RVn2xv#JtQ$2dNMb#9vF2JpZ;YhmpOo8h_5)$IRGI() diff --git a/src/org/usfirst/frc/team708/robot/Constants.java b/src/org/usfirst/frc/team708/robot/Constants.java index 46b6a3e..227c65c 100644 --- a/src/org/usfirst/frc/team708/robot/Constants.java +++ b/src/org/usfirst/frc/team708/robot/Constants.java @@ -52,7 +52,7 @@ public final class Constants { public static final double SHOOTER_MOTOR_BACKWARD = -1.0; public static final int SHOOTER_MOTOR_SPEED_BOILER = 2100; - public static final int SHOOTER_MOTOR_SPEED_LEVER = 2750; + public static final int SHOOTER_MOTOR_SPEED_LEVER = 2800; public static final int SHOOTER_MOTOR_SPEED_MID = 2700; public static final int SHOOTER_CLOSE_SHOT = 40; diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTimeOrHasGear.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTimeOrHasGear.java index 440e753..0c1939e 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTimeOrHasGear.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTimeOrHasGear.java @@ -61,9 +61,9 @@ protected void execute() { // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { if(goForward) { - return (Robot.drivetrain.getEncoderDistance() >= targetDistance) || isTimedOut() || Robot.intake_gear.hasGear(); + return (Robot.drivetrain.getEncoderDistance() >= targetDistance) || isTimedOut(); } else { - return (Robot.drivetrain.getEncoderDistance() <= targetDistance) || isTimedOut() || Robot.intake_gear.hasGear(); + return (Robot.drivetrain.getEncoderDistance() <= targetDistance) || isTimedOut(); } } diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java index 5c1b57e..3e48ff4 100644 --- a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java @@ -80,9 +80,9 @@ public class GripPipelineLiftGear implements VisionPipeline { // Step RGB_Threshold0: Mat rgbThresholdInput = resizeImageOutput; - double[] rgbThresholdRed = {156.58204205866073, 255.0}; - double[] rgbThresholdGreen = {156.8172385168788, 255.0}; - double[] rgbThresholdBlue = {55.03597122302158, 143.37518287980558}; + double[] rgbThresholdRed = {124.0, 255.0}; //{156.58204205866073, 255.0}; + double[] rgbThresholdGreen = {116.0, 223.0}; //{156.8172385168788, 255.0} + double[] rgbThresholdBlue = {0.0, 139.0}; //{55.03597122302158, 115.090199944652} rgbThreshold(rgbThresholdInput, rgbThresholdRed, rgbThresholdGreen, rgbThresholdBlue, rgbThresholdOutput); // Step Find_Contours1: @@ -92,10 +92,10 @@ public class GripPipelineLiftGear implements VisionPipeline { // Step Filter_Contours1: ArrayList filterContours1Contours = findContours1Output; - double filterContours1MinArea = 5.0; + double filterContours1MinArea = 3.0; //25.0; double filterContours1MinPerimeter = 0.0; double filterContours1MinWidth = 0.0; - double filterContours1MaxWidth = 1000.0; + double filterContours1MaxWidth = 50.0; //1000.0; double filterContours1MinHeight = 0.0; double filterContours1MaxHeight = 998.0; double[] filterContours1Solidity = {0.0, 100.0}; From 6f014ee7bcda2dd118d9a2f478fdfb553af267d8 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sat, 4 Mar 2017 09:52:12 -0500 Subject: [PATCH 46/69] Revert "new 3 gear" This reverts commit 8dcc6a3db91ca225aa70c6a43bb05bf7dc6fe00d. # Conflicts: # build/org/usfirst/frc/team708/robot/Constants.class # build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class # build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class # build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class # build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class # build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class # build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class # src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java # sysProps.xml --- .../team708/robot/commands/autonomous/OneGearCenter.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java index 04da019..6eb340c 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java @@ -3,7 +3,6 @@ import org.usfirst.frc.team708.robot.Constants; import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; -import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistanceOrTimeOrGear; import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToLift; import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToGear; import org.usfirst.frc.team708.robot.commands.drivetrain.ToggleBrakeMode; @@ -31,7 +30,7 @@ protected void initialize() { public OneGearCenter() { - addSequential(new DriveStraightToEncoderDistance(55, .3, false)); + addSequential(new DriveStraightToEncoderDistance(55, .4, false)); addSequential(new RotateAndDriveToLift()); // addSequential(new DriveStraightToEncoderDistance(6, .4, false)); @@ -51,8 +50,7 @@ public OneGearCenter() { addParallel(new Intake_Gear_In()); addParallel(new RotateAndDriveToGear()); - addSequential(new DriveStraightToEncoderDistanceOrTimeOrGear(24, .4, false, 3)); -// addSequential(new AquireGear()); + addSequential(new AquireGear()); addSequential(new TurnToDegreesAlliance(.6, 120, Constants.COUNTERCLOCKWISE)); addSequential(new RotateAndDriveToLift()); @@ -70,8 +68,7 @@ public OneGearCenter() { addParallel(new Intake_Gear_In()); addParallel(new RotateAndDriveToGear()); - addSequential(new DriveStraightToEncoderDistanceOrTimeOrGear(24, .4, false, 3)); -// addSequential(new AquireGear()); + addSequential(new AquireGear()); addSequential(new TurnToDegreesAlliance(.6, 120, Constants.COUNTERCLOCKWISE)); addSequential(new RotateAndDriveToLift()); From 873f322ce4e14ce71a72b9f17adde1116a70cdd3 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sat, 4 Mar 2017 11:12:03 -0500 Subject: [PATCH 47/69] Leds fixes --- .../usfirst/frc/team708/robot/Constants.class | Bin 3498 -> 3498 bytes build/org/usfirst/frc/team708/robot/OI.class | Bin 3993 -> 4161 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 6834 -> 6872 bytes .../AllianceSelection/GetAlliance.class | Bin 1086 -> 0 bytes .../commands/autonomous/OneGearCenter.class | Bin 2023 -> 1930 bytes ...ightToEncoderDistanceOrTimeOrHasGear.class | Bin 2179 -> 2002 bytes .../drivetrain/RotateAndDriveToGear.class | Bin 1971 -> 2141 bytes .../robot/commands/feeder/ManualFeeder.class | Bin 1378 -> 1220 bytes .../commands/intake_gear/AquireGear.class | Bin 1167 -> 1176 bytes .../commands/intake_gear/GearIntake.class | Bin 1720 -> 1767 bytes .../robot/commands/shooter/ManualShoot.class | Bin 1603 -> 1603 bytes .../robot/commands/shooter/MoveHoodHigh.class | Bin 1037 -> 1037 bytes .../robot/commands/shooter/SpinShooter.class | Bin 1504 -> 1504 bytes .../robot/subsystems/Intake_Gear.class | Bin 1576 -> 1531 bytes src/org/usfirst/frc/team708/robot/OI.java | 4 +- src/org/usfirst/frc/team708/robot/Robot.java | 2 + .../AllianceSelection/GetAlliance.java | 30 ----- .../commands/autonomous/OneGearCenter.java | 3 +- .../robot/commands/autonomous/SixtyBalls.java | 3 +- .../robot/commands/autonomous/TenBalls.java | 3 +- .../commands/intake_gear/GearIntake.java | 6 +- .../robot/commands/led_out/SetLED.java | 118 +++++++++--------- .../team708/robot/subsystems/Intake_Gear.java | 5 +- sysProps.xml | Bin 6190 -> 6190 bytes 24 files changed, 76 insertions(+), 98 deletions(-) delete mode 100644 build/org/usfirst/frc/team708/robot/commands/AllianceSelection/GetAlliance.class delete mode 100644 src/org/usfirst/frc/team708/robot/commands/AllianceSelection/GetAlliance.java diff --git a/build/org/usfirst/frc/team708/robot/Constants.class b/build/org/usfirst/frc/team708/robot/Constants.class index 884f77b433edab1476624e227ff2a943dc60a23c..5147ed6ca988a485fffb36d2ea1d1ea5dc21c3f6 100644 GIT binary patch delta 14 WcmZ1_y-Iq+1t!K1n=dlmD_KLGhFN4T9K2TJ2R7eQ?Hc#uxv9Pd@1%&~aSn+-tp(hwQWV+8<}1z4tv`edT)V z$G@j81E|OM0#8cZfzc>d<0*lo5@i^bcpAr)<{5!!B_c}m9F8l^^8znOm>3l}A#ts1 z`=VlA5_nmn+zn+5ydqKIf|CNLBr09-s=#ZO#5~vYwDNpi;0=jtmw!{>Er|s#cw5o$ z2%M3)$<>Sryen~w3*HlWU!v9pA1K=o1wN8k=4w7xnzI7uBrDZL=@LE>Nt~BxR5e_X zFz~6eyQuy?6BrjLN;IJ)@VP`9mjosxnsG_-lLBAZON_B{Gt-e?-`bto+S%E@G03M3 z*gqL7N+Qr;ghM+EJp_VS` zjE|ll`^v=Eih3AXyE}9!c3FV|W!L1{CG3iDA~>k|8hcB)BD`DC$>}gB!?S~XNM8)E ziF~8nAJMjTc8xH@1!cQ(I@EwLBYV+j;vw2>j?~y^MIzk)zgsWpE%Xm(hYCIYxuu=? zzP`b1Mpd~X-I3g#(KM0UkT@U4kE zvDQQz)*7g_$K)*g_dvv67_AGB;EI9eOtR3nq6xz94Agt@nrKUYf6l}KWJ^CsYYl5P zXBt?9IVv1ab5umixmbtwZ24WPW!ONx(TCeho`GM&V>9KH##u7$|kX@ zgrqu#^fBe2sjG-&JUodtB?KJ{X@v@s>Awe+)gRl^d;)oB# z2S#Z`@ex7sO;C0v(TqjGmsM8jm!JOdWtAWD>yMV__6$1iN8dj8+(%EJ+k5WHBQt{^ z|DHSppc&sQJgu<=K{?v+jKW@xDF`&4#dG3$Uf~4|PdxkZqImWzyrkhHPNSNCjj9N|uJDG&v$tm>KbJDZH(5bp(zG{f@%B z8rMdi_Y~gOm=l3fp+8VKsxd$E923un3Lj}SL>=s@k1Kqvu|Q7!iH1{;PbKa%Sw2_z zLg7n|R-8~6(`d&@g|9Rg;iT|iE1WWU=a{+RG^bO%w6fByvYVaK=G1P-D`1z82hd~A zt2#64DU(fCWr{vZ_{PU(^qPirXXdnzalu;{cQ)N5|3WbV;PGK_`~O z!3w!htR%iIfmbnZ_5W}UZcpGfjK3p+*AlNwV5xVf;2>_WijMV(04Z=+0(TMLoxmG- zfbInDBEBbqrQy8^EcNe8;Elxh69*T+a1#q~PV5bEF07?K)^aYa@OYJgFxKKYH7oLgo#mVQneXUVbm4ctpFgp|arsUhiX`*3 F=N~0WMN9wy diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index 46ffc24354a06cd2b7307888c5163480ac36bcb9..837705bdb5013ac85a0dba7285a1ae7ca228bcb6 100644 GIT binary patch delta 2497 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 diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class index f0ea807dfbb4f678a0d8b94c847bd6b69e4d36d9..489a5a3e96afb66780256c151e7c48fa331392d6 100644 GIT binary patch literal 1930 zcmcIlNpI6Y6#ga+4!A)DRCY>LmQu=MAV3S<5|X9_B3jW1sUT5Jl4(2Oc-pZI65_xw z;0|YwTsY85AaO=qIdS2_i92V+8@secVhNiikH2~I-ZyXFGJf;<#VY`(anZ&BWKuY7 zWiLM<31E%9dt{!+HWD~vV?WNO&}U=vW^HsBs+%#DmF@Y;nM>gUgDpK7Nbbsef}y47@HK{H zUe#&RR+gT)5;m$rS9sMW$(FLJarYY6(#)5I$zV?U47sw>vrg#GNbLvCjIKF>;Elc$ z{f<^u6*x83XmGFYJ3I`Ory45sopDc$39j?P3xpnEum+7Y!^SDUNYI}X^~kB~GzyP! zt2C-QoDa;3J*h%n6Ga(0_YK?eTl@}B<0!frCYtoDuH_vOXf8dcVBn;|vvWa3je0c- zi7rS#;9gA_-h3Jbj4~8|pZux{cp!3KJ=&$B%5o-PxX>gKMS$NH)3X#frxaro#Od*n zNXD8ZS##7%sJ)6Rh*>R!pL1PlPRMZR=S+F!nOFqAiA9ki|8w<~?ElF7g1YNb5&b1g z$xCDGA7#Y^m0{=)JjyMEQb(1|Fw&&`kGg`PSJXr2?!0v3&LZT>>aDN+&+T-dY8a@Um`Kpj+S<;Ygs~S z5$j2^VQL9>3|k4NV`%g?l3sE}uZ<*|+OdTsTVtJVq`p0dI|%Mv#4h67O>j>PI|%NL z6_%|#6D!ugxo_wH-?wY^ysKfZ(tQtfQZ~Bi53rBMZtBKE7{+l-z`+ef*~v-i`U5EEk^MkMSP^j`GgX)aEWck6}AWC%&@GakU7gKOyU^v$GJaB vUz7Vp%TqJ1Nq%M3lH_snljPGct7dAAA=PbEHA$TKwc*Y07&4rU{5tgoE9>Hc literal 2023 zcmcgt&uTB+(4j&S0@i3|7M5pQ-wl1e2Qfmmrr-@bY8+qd6)Z}!>SKmP`B z0@Dui7`1WQDqgrp7QiaJI38aPQW$eEgflkII@oO7#vSxw)GAhDSMq&%-&_xD6s*GQ zB+e?%72|CiMF-n3VPn$44ioM<=*OtxEZI2cV2?3QS;dhRx?*nv9PC5cD&BZ+&LzOc zc^ef5NBT09ye;nvhMwHeEJNB;Eqd5mmA<$bbs9p~d8191?N!y}?OCp+d0sK5!$lb| zOjMO#aHC*e>L7IIb<+(6@0=PQakXlw&~2(thx@I-_44g4|VKJ<$bAFQ~(Ipv#+;0lQ`%?xNP-U3+)9Fth;y}wNXlK3tozh@r2V=oi3Kf0Fwt&H^Mwq98#8&zH(G>& z(c)(YZ)5k>>VGKvlDgwl6MZI2#n0g47pjU8mEn4q8Lbm^WV8c=|ppRIlx#sP*AP(D*mxgBX9UV;h_^8>0G!Ee~7=EDVLv%B9|3OO%M`*QT z!(O4<0UCE*+i%mVtu%DopESs+^!%1Kt!At^; z-);5m#_F{Y^q*XXx4j~{UhC-ECb@jFiA zA?-d!0smkU&*9+}%6NnG_?Lbsy)=CNbRG=g5*x;4Hi?3UOaev&V>Dm}L@_3ipay(^Z{1jwMOkiqk$tRkWtF>G zC{>nA-M9fQEM4f{rN6{qpx)aIlT;Qtb9?&U@0{+;%f#>g_OHL+e*o}sSHg1;#}v!7 zgA`81sG4Cp&2olimUqv_P{BC|Rn%DKSmq__{A{o+aMyXRE^u{GqA3t>tv-La)@nRj zZ>>IluqGfH0-LYWLe%{aVym7-K_QDVmZHKC1{LPwo6mFxWaEDtaQ2d-T=S16DZ#{X65ek-~liM)ZhN>ic zLSR4D1`g1VoOPWJo)m)CQR>MeM>;~QMMz@MTer|Z{uRcio){%{hya?D#63(^4kl?d zk35c0!JwnskSn$@HMqcF|Fu2b>_848MqwD@!XkA-h7&Rz9hWT}O|vy^Ow<0@3u4rt zj+E{(!_$Gikl}?4FJyRp<3S&1i(s546EOZ!i!I@rrXa6AigOG_ZSpgcFLUIijyORh zlTawr+SAb$bpZo`t%c*k+@Q>~J4c6&&JHl-ivB`lNON*BQn2m&X`);hW5 delta 1067 zcmZWnOHWfl7(H_z9eO*KM}0y-&_Zq10``JvRSHtEfR_3eA6R39#6%6PaoL4?6YT;a z#H|}QfWgFtKftB`!@r<@-}G|Z=%Q!7`FiG@^Ud6!t#8_^KYoAv4#34@iBSh(oMsqv zupeiFRGno=Gn`{M&;MQsVjLL<6PRSU$S@_5<@FN7G_x)MUkwP6t!;>{OdsM3eMm4Q6%OH`!U2YEhQsJp$YWljpl}V>C2lC(Wa2G` z+ep^l8c(8ka93dg_Z049Sm6O4N-Qco;!Tl>r;ywZniHZewEVnMd{$aqDiv1*M(1kp zjGo%M8EVbd`_t4<3%I-eYExf8J}s7+Az+m&FJ4mQFx?nn!{E?Vb?^ib=%m^}7yW1s zUH5n^jYRtv;`HGN;ZfSnK#~S^6S3C#R~VaA8;BC79V$R3k_`H(>V-+zf&s*6ub2ahRg5g@ip)MnG3pqdNjLHL`1~Q#tKa#1a$v1|;tN{V5Zi*YgEra(RyPny z?4W%eY6~4Zh^#?cpJ17v8=Max|Kn6W5^0+H?ZW!0#_8!YH27pwp1hZbuOkH6Z)OC# z87%%%y?`UMazLqF_cp$X`g7*!Zf2V_Wx*dZ+%w!;3LjV;a7>u9@D5AVnK!_r5Ul>J2#i$Vw1&gp}<(@Jt+_{#8 zKvfnlaPNO`;Xm*XXxSa7NM@?e?LPP1)7^JwukvSfeQ#OTtf zJ4_F~3VjNf6fP@VQRr6~C>QadMprc&3Vr`AcJhQ7CaL^2kL$XQDBMun(J*6-YdR5C z*`yYn@|gCxx$_}mW>1jtxMjJ`9m`#2EcZxx+_yYn*78u{k-}r`h*m7E ztf!YV^9z~unxS`EHgaE`ipq)q^qA27hHjrumCy!nF`ZR`p;C`eWXIFlRC;Y8vu<#* z>#Ofc$m9)jTLF2c-9jV-$Qr^R_aJyOmvWoCnuM#y5v&!gqk?+L8)z2BiVA8t#c5d` zTKscg+#b`E`{g#qimK)V)frzE3k`{CE)?4+syYr-t+Z(m;=3t5YMtaRPM+#2v-ug< z*)C*Ye`wzw>jR delta 768 zcmZWnOHUJF6g}TOVf>tGt0FB@s|6}3icqLZZ4pFXK0tiovub6jq3r9%jT=q6Vrk;C z8zkw1g~l!a!T(^w&V}*Z$GNmTt2bnAI|Z`-IEiYDHP~eJAtM^t_X9P` zoZL594MY#C&tG6$_2BEs2K*p6y77PR7;|Rbth3gnW6+mN%u@Fle2lYuo<53IZp{Qn zF}2TBE);Tx1vX4S7NbA@;ZRdC)WqRN109rLHqf?7vJp)3IT2g{2lF_{9cVf9n+^x| ix)r!eDzIqxH*mbw#bY;cX)G-5>tKf+6wU_o&iw;1@mkja diff --git a/build/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.class b/build/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.class index bb82ecc8008b5faf707266efbbfd7d819000fcc0..ac11bb7c3ae3df0c7d8da6f02907d42f6c92d530 100644 GIT binary patch delta 567 zcmYk2%}&Bl5QV>6ptYq~Q53~L#2;Uo?9R$D4 z@2+oz)tB-5*eHZd;(}Bi$x3pn_J$hD#Ud-wlZ*h8EXs#~qb8QfNtI;T5L}Rm{$)p4 zIg%mv2qy@co09dBaS1`?aaon2g&1SjFs>NJy7cO4v32y$h)1(klmX_2bgZQzS@&6q zXB{IUHhuk6ia{*{6{jZ9-UONv6(O!j2=S&0rUJ_1T}7;@#>g^;tYFAyo`$4{ZL`bR S)TY?iiZP@n42t!rbK@UCH!S)9 delta 651 zcmYk2%T7~K6o$WjTDs}!Zc8g-MXiFDwor=*^@iF+aYh(AB_uF2tw}pH=`)y)gjaB4 zP0oOUBS$`lal%Uw|K003$ys~tz1IJ&%kT8x@bJ&o#V=r&R!E+^Y3{LRSx>btzxnSh z%)*oRJ>OWsj=Y$oBmBEN8R$+()hanFSkU&vgLTfwxKfUn{xAgr`_!xw|ia7 zQ^yXwjwa76&mAxPU;)!9|d<2OswL4E5=~ zskqOb=Po!B56p_(1 y5pG^Tr+J~GtyQ&^T8x&R(QeOZI}_N#MnrZF8LzjYg>1zDff$?3=9k=48~jxd<>fG3|eds7C-?YV6(qD69i_lIdDKkxEPoiw7D2~ z8Fbhgbh#L~LF)C`8T2Q*+H$fvK-4g7Y+`3*R$`Eu+{2j2t;Ar!!(hl@#K_<{xt~#e zvOLq*G+_oQ22ln921W)!pcWYGPv*{{+R@HdPaA(^?e--H6@v5TXlj(gU~<>86TDa8q0e3cB|O zUZyxN)+C4y%)B@A=KIaOQTe9a|CqeI0Y@BqEYNh>b$TaSP;<^c?~L6$y)*|8i#>q31ykedE*#7Xrt__UH zvQB}j#=1@mi4@HR?Pe1M2g>fR`eCJiLUm7D$z4GXa` zZrQkLO|C{0UF&~fV&c-R3zvpC=Th39#mt#AGvA$WzWXu!J6!*M@aYSXr(zK&6C}&D z$&7`;Y>;!Dx46JXlR52k{;z+eSdLERwYg+5&w@@Cba>fc`te$yro|O<+7v8eTs2uV zDJuMn)$QtwC517Sd8}x>{2NJ-G+DAKaZQnJw8nOuDiU9&Y_ei=of{@MZEi84NbBrR z70Rx%W^%cn+_kyKeVYd)Z65N-WYgv>Nky^ID!yOy?5WsbZR^=`tyX=q{d8+( zr?&H4p~}0zjBoXrFxSVALWU80LZX~_CEl0)fNIIb!?0LOJcRHPW<+lGVG*O8l*r3i z7hqaq4ba!DzW~Sj8Wp4UPUop^=V!q&q_EP)V>ozM+xQ&(O@`8uS8oYRIN%W2XFeU- zdqYy5Zcvvtr!9EN&2MBEL{iD)^|Am2qpbU6Z>?1J^gbcpsqTrtO4keLg8 O2)+)2{BZ8nQ~v>u!Cz{r+d1;{=S~y{%8OB&wpRO0&SkT6u6wF&Z1_?#io&E znJX?UT-97NzG*ToSE{c&-~LFO9Ft!)`8B8W>#aElF6%UnS#=4yp}DEqIC_y*xmk*u zTOOO-?!QzkGaa@x+a7n=(cJaeWxoGiHLCZx@3F@N&AvyMhaQh8dOYTd=BY=8qGGfE zN|isgtz*@I@iR103ery$`}L}oztloR0| zQmF-R-Z3Tlkes|6G99=01A-8#%^LxBEMS4G+zVtRDhlngnO~N18*?4Ev zDy&7W;T|zP-h2@6q$%IjlC8HV(EJ3gn(T1=eGxNbkm2{O3FY+@fKYg*M+i!^8`ib| D-+)Um diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class b/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class index 8aaad6e9b6c0981d17524f1e409366a6a30bfc6c..001adef0dfd63629311cae774bea556279703c7a 100644 GIT binary patch delta 19 bcmX@ibC_p>5#xi6#5o66p<60KReVaG3OkxB8NG%5a diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class index 151d316976abea5cacc03ab9d9fa379403442a32..6706c14dd6783c0e49556870a6fdfef4dc7ce6dd 100644 GIT binary patch delta 14 VcmeC>=;he(oQd(n<`+z=i~uV}1$Y1e delta 14 VcmeC>=;he(oQZMY<`+z=i~uSc1x5e> diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class b/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class index 7cdab6c448fd15d28a48a258a03fed5b2b7f4d4c..11653c3acec939e54550c263449eaf3ce0704440 100644 GIT binary patch delta 12 TcmaFB{eXLd4da82wu@N-BX|WG delta 12 TcmaFB{eXLd4P(tl+r_K^A%q0B diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.class b/build/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.class index 09740a5a76e2f436da064dc5175d7f0f74fd2747..37ffd51045407f210480d68c9a1f902ca8bef2f1 100644 GIT binary patch delta 619 zcmYk3!A=uV6o$Xssoc)YMWEt9i_}^`rKnW_6$Gn-3hvc~alyjq!WBFKZ$L1!GVuXi zu)&zdxG*H{^c_sx`vxY)|IXCX+{~GK&iVgy{&VgJ_a}b({qL8rzygmg&4@B{mP?k) z5dl|1Mrc{CM%diB=EK*$J0FU(7;%G}C2mCmE=4SJ+p=O=J$$}rf-%O^-=-apamR6r zQA6YHeq-5jn#9qj?zqde<(}g{YnFA#10EVmueWyUuU>9#JEna8kz<2R!$NvwYH7tJ z>5sy%^jq*^YD9XWpri8HO{Mi8z@YB3m2|DxdQ(-bOi{KfJ0Y=WnADk2#0dqpEQ0Q} zoTu2FKA$s(G6hld!cgxcnjZ12;=bX}Vs+PJBXMAw5;GY-$^5X3hmdnL#4vtJ&lLKJ zFurBd{6yFxe#hWP-0(n$!Qw%1piGeI$cLF#kEVYz4d3e1lvKJ+W-@{qRn7C=b-X`O y-9A<~FLjH3%>U{P7kX=0>S~J1Cz~CHJ~RC6cp>?as}j=gD--vYa#0Ej%>DydzBfkz delta 682 zcmY+Ay>1gx5QV?%b+X>w3nUIP!3mC&5KL^afta5_{+s{_KcR$z0$E@Il7%Jn0K5Us zR&rL`Osh1Se%XBWw6)!7ce)0%6~1?#EM#>Lr1Z2oM%t`@6oZ5* z=EM1P?aj1mS<;Gm#c9Tw;gsHtDpp-kP*%`ym`&z{D{-#cfj~-Q2{9Ch2F+lw$Xv8g zT@9J&==aJW87=h)zo*?;gD)C%ZidB}A{XagpF#u7vmg=^S<)wKswY+`GOtJQ4tt2r z^f;2<7dYgoptCPtCzhCFM0g3GvhJ+Np{jP(l7;^tdnO(-6XGxR-Rg|wyV0SE(q$>F r4;}kgsp0IvrIo(EAbYIbW9$>-kN)|U(5#AXeTXI)c($ZfDawBU);2?9 diff --git a/src/org/usfirst/frc/team708/robot/OI.java b/src/org/usfirst/frc/team708/robot/OI.java index fe17dc2..3ae7678 100644 --- a/src/org/usfirst/frc/team708/robot/OI.java +++ b/src/org/usfirst/frc/team708/robot/OI.java @@ -37,6 +37,7 @@ public class OI { private static final int INTAKE_BALL_OUT = Gamepad.shoulderAxisRight; public static final int LED_BUTTON = Gamepad.button_X; + public static final int BRAKE_BUTTON = Gamepad.button_B; /* @@ -65,7 +66,7 @@ public class OI { public static final Button intakeBallIn = new JoystickButton(driverGamepad, INTAKE_BALL_IN); public static final Trigger intakeBallOut = new AxisUp(driverGamepad, INTAKE_BALL_OUT); public static final Button led = new JoystickButton(driverGamepad, LED_BUTTON); - + public static final Button brake = new JoystickButton(driverGamepad, BRAKE_BUTTON); // Operator Button Commands @@ -114,6 +115,7 @@ public OI() { hoodAdjustDown.whileActive(new HoodAdjust()); led.whenPressed(new LED_out()); + brake.whenPressed(new ToggleBrakeMode()); gearUp.whileActive(new GearAdjust()); gearDown.whileActive(new GearAdjust()); diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index 9035f5d..8f2c9e9 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -218,7 +218,9 @@ public void teleopInit() { // teleop starts running. If you want the autonomous to // continue until interrupted by another command, remove // this line or comment it out. + if (autonomousCommand != null) autonomousCommand.cancel(); + drivetrain.toggleBrakeMode(); } /** diff --git a/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/GetAlliance.java b/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/GetAlliance.java deleted file mode 100644 index a9da988..0000000 --- a/src/org/usfirst/frc/team708/robot/commands/AllianceSelection/GetAlliance.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.usfirst.frc.team708.robot.commands.AllianceSelection; -import org.usfirst.frc.team708.robot.Constants; -import org.usfirst.frc.team708.robot.Robot; -import edu.wpi.first.wpilibj.command.Command; - - public class GetAlliance extends Command { - - public GetAlliance() { - } - - protected void initialize() { - Robot.allianceColor = Constants.ALLIANCE_BLUE; - Robot.ledAllianceColor = Constants.SET_ALLIANCE_BLUE; - Robot.led1.send_to_led(Constants.SET_ALLIANCE_BLUE); - } - - protected void execute() { - } - - protected boolean isFinished() { - return true; - } - - protected void end() { - } - - protected void interrupted() { - end(); - } - } \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java index 6eb340c..a1a2c1d 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java @@ -10,6 +10,7 @@ import org.usfirst.frc.team708.robot.commands.feeder.SpinFeeder; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Off; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Out; +import org.usfirst.frc.team708.robot.commands.led_out.SetLED; //import org.usfirst.frc.team708.robot.commands.led_out.SetLED; import org.usfirst.frc.team708.robot.commands.shooter.SpinShooter; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Down; @@ -46,7 +47,7 @@ public OneGearCenter() { addSequential(new TurnToDegreesAlliance(.6, 125, Constants.CLOCKWISE)); addSequential(new Intake_Gear_Down()); -// addSequential(new SetLED(Constants.SET_HAS_GEAR_TARGETING)); + addSequential(new SetLED(Constants.SET_HAS_GEAR_TARGETING)); addParallel(new Intake_Gear_In()); addParallel(new RotateAndDriveToGear()); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java index beaa384..10bbfd2 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java @@ -12,6 +12,7 @@ import org.usfirst.frc.team708.robot.commands.feeder.SpinFeeder; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Off; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Out; +import org.usfirst.frc.team708.robot.commands.led_out.SetLED; //import org.usfirst.frc.team708.robot.commands.led_out.SetLED; import org.usfirst.frc.team708.robot.commands.shooter.StopShooter; import org.usfirst.frc.team708.robot.commands.shooter.SpinShooter; @@ -37,7 +38,7 @@ public SixtyBalls() { addSequential(new TurnToDegreesAlliance(.6, 45, 1)); -// addSequential(new SetLED(Constants.SET_TARGETING)); + addSequential(new SetLED(Constants.SET_TARGETING)); addSequential(new RotateAndDriveToBoiler(10)); addParallel(new SpinShooter(11)); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java index b2601e0..a525781 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java @@ -13,6 +13,7 @@ import org.usfirst.frc.team708.robot.commands.feeder.SpinFeeder; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Off; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Out; +import org.usfirst.frc.team708.robot.commands.led_out.SetLED; import org.usfirst.frc.team708.robot.commands.shooter.StopShooter; import org.usfirst.frc.team708.robot.commands.shooter.SpinShooter; @@ -38,7 +39,7 @@ public TenBalls() { // addSequential(new DriveStraightToEncoderDistance(85, .4, false)); //55, .4, false // addSequential(new TurnToDegreesAlliance(.6, -45)); -// addSequential(new SetLED(Constants.SET_TARGETING)); + addSequential(new SetLED(Constants.SET_TARGETING)); addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); addParallel(new SpinShooter(10)); diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java index a0de65a..7d9871b 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java @@ -25,18 +25,18 @@ protected void execute() { if ((!Robot.intake_gear.hasGear()) && (gearAngle>0)) { Robot.intake_gear.moveMotor(Constants.GEAR_IN); - Robot.led1.send_to_led(Constants.SET_HAS_GEAR_TARGETING); + // Robot.led1.send_to_led(Constants.SET_HAS_GEAR_TARGETING); } else if (gearAngle<0) { Robot.intake_gear.moveMotor(Constants.GEAR_OUT); -// Robot.led1.send_to_led(Robot.ledAllianceColor); + Robot.led1.send_to_led(Robot.ledAllianceColor); } else { Robot.intake_gear.stop(); Robot.pivot_gear.moveMotor(Constants.GEAR_UP); -// Robot.led1.send_to_led(Robot.ledAllianceColor); + Robot.led1.send_to_led(Robot.ledAllianceColor); } } diff --git a/src/org/usfirst/frc/team708/robot/commands/led_out/SetLED.java b/src/org/usfirst/frc/team708/robot/commands/led_out/SetLED.java index 4799824..62a8f8f 100644 --- a/src/org/usfirst/frc/team708/robot/commands/led_out/SetLED.java +++ b/src/org/usfirst/frc/team708/robot/commands/led_out/SetLED.java @@ -1,59 +1,59 @@ -//package org.usfirst.frc.team708.robot.commands.led_out; -//import org.usfirst.frc.team708.robot.Constants; -//import org.usfirst.frc.team708.robot.RobotMap; -//import org.usfirst.frc.team708.robot.util.Gamepad; -//import org.usfirst.frc.team708.robot.Robot; -//import org.usfirst.frc.team708.robot.OI; -//import org.usfirst.frc.team708.robot.subsystems.LED; -//import org.usfirst.frc.team708.robot.subsystems.Drivetrain; -// -// -//import edu.wpi.first.wpilibj.SerialPort; -//import edu.wpi.first.wpilibj.SerialPort.Port; -// -////import org.team708.robot.OI; -////import org.team708.robot.subsystems.Loader; -////import org.team708.robot.util.Gamepad; -////import org.team708.robot.commands.shooter.Fire; -// -//import edu.wpi.first.wpilibj.command.Command; -//import edu.wpi.first.wpilibj.command.WaitCommand; -// -///** -// * -// */ -//public class SetLED extends Command { -// -// static public byte ledcolor; -// -// public SetLED(byte ledcolor) { -//// requires(Robot.led1); -// this.ledcolor = ledcolor; -// } -// -//// Called just before this Command runs the first time -// protected void initialize() { -// Robot.led1.send_to_led(ledcolor); -// } -// -// // Called repeatedly when this Command is scheduled to run -// protected void execute() { -// -//// Robot.led1.send_to_led(ledcolor); -// } -// -// // Make this return true when this Command no longer needs to run execute() -// protected boolean isFinished() { -// return true; -// } -// -// // Called once after isFinished returns true -// protected void end() { -// } -// -// // Called when another command which requires one or more of the same -// // subsystems are scheduled to run -// protected void interrupted() { -// end(); -// } -//} +package org.usfirst.frc.team708.robot.commands.led_out; +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.RobotMap; +import org.usfirst.frc.team708.robot.util.Gamepad; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.OI; +import org.usfirst.frc.team708.robot.subsystems.LED; +import org.usfirst.frc.team708.robot.subsystems.Drivetrain; + + +import edu.wpi.first.wpilibj.SerialPort; +import edu.wpi.first.wpilibj.SerialPort.Port; + +//import org.team708.robot.OI; +//import org.team708.robot.subsystems.Loader; +//import org.team708.robot.util.Gamepad; +//import org.team708.robot.commands.shooter.Fire; + +import edu.wpi.first.wpilibj.command.Command; +import edu.wpi.first.wpilibj.command.WaitCommand; + +/** + * + */ +public class SetLED extends Command { + + static public byte ledcolor; + + public SetLED(byte ledcolor) { +// requires(Robot.led1); + this.ledcolor = ledcolor; + } + +// Called just before this Command runs the first time + protected void initialize() { + Robot.led1.send_to_led(ledcolor); + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + +// Robot.led1.send_to_led(ledcolor); + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return true; + } + + // Called once after isFinished returns true + protected void end() { + } + + // Called when another command which requires one or more of the same + // subsystems are scheduled to run + protected void interrupted() { + end(); + } +} diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java index b679b2b..1d453f0 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java @@ -39,16 +39,17 @@ public void moveMotor(double speed) { public boolean hasGear() { if (gearSensor.get()) { - Robot.led1.send_to_led(Constants.SET_HAS_GEAR); + Robot.led1.send_to_led(Constants.SET_HAS_GEAR_TARGETING); return (true); } else { - Robot.led1.send_to_led(Robot.ledAllianceColor); +// Robot.led1.send_to_led(Robot.ledAllianceColor); return (false); } } public void stop(){ intakeMotor.set(Constants.INTAKE_OFF); + } diff --git a/sysProps.xml b/sysProps.xml index a659db5c285b9197a63e0c20507855dbe6a63cbe..10e68bee9af74115bafdea53e6497dcfa4ad1d64 100644 GIT binary patch delta 55 zcmZ2yu+CsZ37?`VgA;=(gC&CtkhEYhU{GLiV=!Yd1Y#2)%ap-%^He@z7G`4xgUzdj Gnppua(h7(G delta 55 zcmZ2yu+CsZ37?`RgDZm>g8_pPg9(r{U{C<^O&Kg09Dx`FO*T*E6J}vHVKCafTBw;7 E04&N1cK`qY From 372438fb67b1ca080b149b4180b0618d3e5f4c9d Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sat, 4 Mar 2017 11:18:22 -0500 Subject: [PATCH 48/69] More Led Fixes Uncommented more stuff --- .../commands/autonomous/OneGearCenter.class | Bin 1930 -> 2023 bytes .../commands/autonomous/SixtyBalls.class | Bin 1958 -> 2050 bytes .../robot/commands/autonomous/TenBalls.class | Bin 1767 -> 1859 bytes .../robot/commands/feeder/ManualFeeder.class | Bin 1220 -> 1424 bytes .../robot/commands/led_out/SetLED.class | Bin 0 -> 982 bytes .../robot/commands/feeder/ManualFeeder.java | 1 + sysProps.xml | Bin 6190 -> 6190 bytes 7 files changed, 1 insertion(+) create mode 100644 build/org/usfirst/frc/team708/robot/commands/led_out/SetLED.class diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class index 489a5a3e96afb66780256c151e7c48fa331392d6..dc047c86824470073667f331cbe8123a3ab3611d 100644 GIT binary patch delta 835 zcmb7?PiPZS5XOHmyV;G~Knjgwt4&+0&7W%8+NQSlPtr6=8&hdS6slkdB;p}h(TX?Y zRd2E<_2k8q6iT516)%DZ?;gChc<|ueqd2>3H3%X;c*E>`^Ua(2W*>#Vgqk0|zj_Ny zaNc5wl*y!#DLs$~80k+>ob%Me#~F(gOqonu9B|UkT6B;yGDSBPlNlrZdE7llrjl`^ zCbJeH=1k@-4mqr}#bGig3l=@3q-27u$)ZKCgXS#yoSN6XnnotJUp#M8c>H|VND@<& z?J+HCZ>r%ylBFQa6u0-3t^_=%SQIdA=GO1sRHU55u1399S--n6a=D&_0uH8T6D?HYHNLelS{T39vZws36P-qj?i~Vx^sKcwvcpkv zd&P}-ZlAdQUP4HyonZ#-P5-nSuy6Sf#{Y+Nyg4ZE>Mcwu_j`=%bW6+qGVL+h*Ptj6 zl`&$>GeVhBu5y|i@~_+>#eF7u$P~|*<^^+XN!B|S_(+yr3VdaWZ!9Y%Tj`>tBCM)7 zWi`VEk*Nu;PHOh2PP#lX>ggmA<>-V@d+FFVg)g-!?EA$W+gJGStGUufR6;B`yU}Hw Qe=fE12h&^XxZBvo57QWQiU0rr delta 765 zcma)(L1+_E5Qe|EyV;GefmBGP+Qtx#iA`gpZfmQy&8C_*QP3Xr5CkPsJ>{ZjA)Zx~ zu%~+VQt%>T0=DQ?yn6B?f(P;D!LvBK8#M<-AG~?O z#H#<*sH>{~NEQ6DmGHOBQFD#j^BuFHIwP%(jrG>;R=a(pO;*a}!bW0P93qdRAopq6 zD%j7&7#tRBhk-Ox;wPdc#Q{)yiHPb2@gS$l#XhRIjnPbDriht+oF4JwwtqiXFZ9{l zW1plantdiCH!be|5JFN&qbV|e$IkiF_L$1}ReNk|ToC`w>tv;>6;=H`#C6dYGBRsc z)IK0KPe~?TW`=djT*2k0{PZp6xWhaTSzwbzp0Gp@k2h3#M~x4x@`W|N(NH$$)NU@Q zNiM43l}MmYsKP)Yiz8AXlC~sgAgy6O4eXG%mxi=8elg2Gwf+02G>3?4KwPmn`fujd MKQI-?!p4sO0O%}g2LJ#7 diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class index c749d7e39ca30221e72bd616f51780a43d74ad89..5acb1e3feaf688031d3052c808f8aea7f243bbdd 100644 GIT binary patch delta 851 zcmaixJxo(k6vuz}wY-O~HImRc7%fGL?WYbfIp?1HKaaLuZ^^v<`QkN@ zdrdbhrbpWv%|gV4X!q#wy|{Rt9*H%Q!a3qeewWX67d-a)rmmKjYC#XnM>0ZY zeX~c*++X81K2c$oR_Qn@pKW71F_I#|AiJ5OLllowrju0?+{WQPDIU|sbD82B(tKb) zU&!)JhWDME3W<0dYN+tK8bO9}MFTBkm)u%LBk)9@R5pbi*i03|7c$65L&$$mApcvU W+DIJzf8rQJJEV(0XE#>wZ2T9-htQR!!}+QCk~7;%7`nBoG%u8bRD@z@;lg zR=Oy-an+3o9caOwoBjdOmAF^@1=@2nPAaH);huZ$d){;IIq!WMdA+x|{bTbTFvV?K zOxfa$>C^>~WzKzkq1H{m67f_flyD^hnUqrIGE82V;?1SJ zW~@+qyJl=_olv9MtTrAtTCIC664K#Rzl$INjxmkKak=MZYihp{qcbDc>;nf;%7ncj zCpo1^^2o15t<8{%Y2;kA+!lI0iV-DfxL6wu<+gg?f{!~jM#vDC0TL{cWQ9>$ zjPZmN&&jeT3anFLlX2e5-+YjN`NAY$MX#Tt*gyoC)e|AWET?5|rCvc!rJioAEBl*# mGyTktr=LDZo%8kkxA3#OZ%S?dP3QlK3x6isQenQ|*}@KSYj5ZP diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class index a9e2a19dce162b8fec1f25b5e3a12b00a9896c8a..6a333f37e60c4a2109e5ef59482e6fe9a6672199 100644 GIT binary patch delta 790 zcmah{OKTHR7(I7pa&L2!sz_*qwrLXEnn!IqYHCtzI&G6av}$ZYDGDW!EK-IRN(2!k zJNIE$>e4RVh|mEmBDfF)cW(Rz{)^J@W-_)5#ew_y&bjBCbLP(P{;y}u??)d$1GtV2 zi8KlVMQ*KsAq3!azh0^5wSX3cIsZ!mN| zed8vw3{_`Ji#ac}h;zu|Arot1+{HbHC>crz%b)0oU=yId83Eh)@E zuV&i~8wpC7?q&+l2rsNbP5rR{{7R)0CH3}&`Tq+S{~}}*JfNK2I0o9OY@q-E delta 721 zcmaiyO=}ZT6o#KWH<_u^Dk7tZ(Kgl8e6$*qepst*CuwbMwWSCaNYpIm*4L`028dc z@s&1OL2K%ZHE>8RHS=~nNX>G_)VYIYplNg zr6*Nu(RA!@?Cfkb9yfwuH(*$}@-b1G6a|VXN>Y!?Qf9r8&5BDq7BY;9GSD%(!qxbo z@O6Vf>5IMnQiLkK$J+AH9%&ungs;-|mdDwMbBFYanGy4R#NZ)AQe~wYj=0qEa$6B2 zoln!llO8GQA`m9}@m7<8q;MjIbedJQUbKAor;9Oq>@?v=aRLUH%l; wsC4 z!bX(`FP*AKEBT73Io`e#xO#rJm{v!wWZ0;P;I$pfLpPAhJ`8HM;!a~_e$@^{RVceA z8V$#RwULeTw^B zU-2LaPn6yx@mMyGc z)xbjwYkIPd4FiuXJjSMlC&*jaLdn84gQ&A(M85aIi85vgPd#QLs+HpDT&R6^ep%PGasi3>!luD2;Z0m=li{!lF z2UW-O7?!)&@hrlX2uE*YscSI_97DE2T6TpJ0SWSWeSu-FdkK}N+jMoY>#ONJB`oQ2 z9w>1@*J&3@?e8R&IAIu|wJpzc9lyrQ!qci)iN0cv{;_Tu(9=bp`b#uhq><6sJM$In z3k4|*QE$=+^dn6NFH>YihcJvQG)rS7CfGwydvBzP)DY4wWSTH?EnH|KYqVgVbLI&L z!eJDDQ{-lW%$X+EnFRB2%zQm&K6ko>i|4LHPTS(SE>hTYP(V>)-|qfC==12}044o;=;8>+ zx;)W01_fWDEK#|;`bnqZNmLbTs0;Y_FQQQH4f?~;b$>LJI8|t%snEii#JNIS7ae#C z+wk6=#giBhM}r%ZD{i5W4FPg8uCi(~3+6=i9b&?Zg$$$13KF>KG1gC|2-GrAS~Q1t=g<^Y1aK%JfV)tz5a83hGOegY$Wn$ZZ^)LO Z21rg?W|x_%4cga?FeK&-0y|;n?mzkbFV_G7 diff --git a/build/org/usfirst/frc/team708/robot/commands/led_out/SetLED.class b/build/org/usfirst/frc/team708/robot/commands/led_out/SetLED.class new file mode 100644 index 0000000000000000000000000000000000000000..7017e291a7da09ca557afa0197d1eb1596600a29 GIT binary patch literal 982 zcmbVKO>fgc5Pj=7apM?T!Z)R~r459%>Vhb0`4EQ|+DpWNqE_M(InI`D!V5mHi18JTzxXq0_yW}=iPcTfj zZ@bGdmLI7_sc9$h#Cs8?hGJjpEz0Wy(aVyr$%+BJYjR*jlB7q*X8awMCXv{ZcFbB% zy>b}74FmY72be(B!$N>XG(6l2a2vG%mr!ST@LyvyG(<1u?~WwT7p7M%yNAEmLu*I!1M<9p>pIJh~W$s?~>H z6?*%qkqs!?Chw51wZ4M2_NKqU`AngMGi1-AM0N%)W(hJ!F-Xs>9Fv%$h=3U_Er)Zc z7o_V{!zkw;qjU`C1n!8_&+v;hN+aV7^2&nG#rYx25;0g7HUit(fu%7ZU2rytiwn3& zS-aCRd0XeWpRCPR$&q{v=?sx{A_elVEmy~Yqn4M4!23nZa_a=;(Y*Px4@sOyV+7@* LGsBf^zN^0gYc#Vf literal 0 HcmV?d00001 diff --git a/src/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.java b/src/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.java index fcb836c..d606110 100644 --- a/src/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.java +++ b/src/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.java @@ -38,6 +38,7 @@ protected boolean isFinished() { protected void end() { Robot.feeder.stop(); Robot.intake_ball.stop(); + Robot.led1.send_to_led(Robot.ledAllianceColor); } // Called when another command which requires one or more of the same diff --git a/sysProps.xml b/sysProps.xml index 10e68bee9af74115bafdea53e6497dcfa4ad1d64..391756380daf95b458d995ad3ab5c802627e46f4 100644 GIT binary patch delta 14 VcmZ2yu+Ct^8X-o5&1;1kSph6f1yle4 delta 14 VcmZ2yu+Ct^8X-oD&1;1kSph741zZ3C From 236f52424babf229f7180b868c9f5eb054c0ff53 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sat, 4 Mar 2017 21:06:59 -0500 Subject: [PATCH 49/69] after week one day2 --- .../commands/autonomous/OneGearCenter.class | Bin 2023 -> 2275 bytes .../commands/autonomous/OneGearLeft.class | Bin 1285 -> 1513 bytes .../commands/autonomous/SixtyBalls.class | Bin 2050 -> 2100 bytes .../robot/commands/autonomous/TenBalls.class | Bin 1859 -> 2054 bytes .../intake_gear/Intake_Gear_Down.class | Bin 1170 -> 1233 bytes .../intake_gear/Intake_Gear_Out.class | Bin 1135 -> 1079 bytes .../GripPipelineLiftGear.class | Bin 8192 -> 8185 bytes .../usfirst/frc/team708/robot/Constants.java | 2 +- .../commands/autonomous/OneGearCenter.java | 19 +++++++++--- .../commands/autonomous/OneGearLeft.java | 29 +++++++++++++++--- .../robot/commands/autonomous/SixtyBalls.java | 7 +++-- .../robot/commands/autonomous/TenBalls.java | 29 +++++++++++++++--- .../intake_gear/Intake_Gear_Down.java | 3 +- .../commands/intake_gear/Intake_Gear_Out.java | 4 +-- .../visionProcessor/GripPipelineLiftGear.java | 12 ++++---- sysProps.xml | Bin 6190 -> 6188 bytes 16 files changed, 79 insertions(+), 26 deletions(-) diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class index dc047c86824470073667f331cbe8123a3ab3611d..7afd2a7c890eced333eba9d5996cae82420b0c1a 100644 GIT binary patch literal 2275 zcmcgtOKclO82-j_ciWAtw85%S5vWZXVyBM{l+e(`wHbYoOT;bjh^P%NZk)dNr$1;N8^W#f zjTU)^%TArQR=F$Hd&e2~x1`6AFFS7247^S0dcL{o)=gjV_NB>b({(l+->f_BHn$s| z$phc9owgHr=8`Q+g1ZG_`@)@J&}J2xD~gm?B-7gxjgZtDjlw2-P^wfn*!ES#s5pUJ z7eyJ8`y1MYJNzC`;7v?2EceN*;mUi$ce%7pOPLjAH@Ez%GjG?aC9WkspWAhza90wz zfeJ%fGy?Pfwlt%Klhu+NclMTR-r~|PL`zpyRfgg}XLG~xxi9i|BcxSz%5u|ZDD(+L zE#vQs^(J-NT!?Jd^>xd+Zzph5En@CDp_T&TQ|c3BUz@9eYgZjhG+iOQe5)l@cNxYH zMk+YA+6UiL9VNX^9h}}(UQ0CAoxnFM!Y|KTs`wV^w$I|Hb#cM|PqtL;2t(#ykjdW- zq#J%m4B0;GpY{zhOdKrdj+9HT6KvD>nzF1lbz&UljYdV>4d_Frql8dW<-Txc!s8}o zsmCB;EOVE)T7nQ1^g0$&Y=;t?r zGo+R=%pip#(pbR+>NtmhB=I3h;S-X<7r2D4FpV9&g&%Mkk1>m%k-=}s<9E#APZZd3 zSZov}HifG!hcdf{>ueQ^jMHz^!wP#JH`zyY{(MTu$d{#%E>1H|lhl-2 u&(TwgKG{x#+Z%k4h|T#8xDF=u!{9W6*k7L>Ax-~ zk5z0H6RC{}2Yr~dG3DT>v6^;p3`H9y2PaT4lruKU4o;cHii6XJ^4pZsD(1JiXKhp& z92v++a$kNY7<%% z>c-)U)M4bV=(ZaP-nlk9=4!R9BDbwN9Uge0%i~A|s-xo2oeM-wa9tKbB=k6gHDR2Y zGERk6g5jF*5~r4E6anF0X;gK*9+?$qLB+Z)sxoozHMWa)`2(KAMdTUgyY$S{@_~pn zmw{U`aKYf!wWz6PgEoakS7aFRpe+n5_;d z!0(CHDh1B1r`QCsH5U^}txJ+!M{UMBXsU`>)k1_N-vEfq)Zf`}Tk730Efx`AC9@8v>0$f5C`Qfe~7F!?_`D&3Ez zPRfE|x=Z`LN{V4bc(MC%UAk#m67uEp-K}DD%V|;8w2IfM{PLB`l4$@3x#um2`!Ure zbp~R|H@e~(H^zpgp0tttjQR8u**w?W_l1u^YEI{q2DA@Z3?UDOVVYl{mzno54H=Bk zXeEMyWGR;};uCzDC{kIchU^*kn>98uvH>>oJ2H#?=;_D4o(1DU|`bcu9ABRbDB-J@e>K~@?*y15;1IN?J36h_Df{%#&6v2TMo+fxERoJ8& z%xqJ=qZ5N~bmG14dv53OJ279uaf=FEE2YQN=6N@HcKUM(yDPs?Pz;v0==!aeTRxQ#P@g(=6>U zn&y-w%;XfAo?p$l>o$D7V@dM#He~VH)@|7P8ZGTIWZQ<9{@bwi21AC+iCHq)$ diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.class index 0bd03f36dd7f6629f418cb948a4a9f6fbc52af3b..cf0a741c2651586f25048c077bb8d70b402d4acb 100644 GIT binary patch delta 679 zcmZ{hK~EDw7>1vjF1tA01Y%ZNB$k3wXr*WYD~j4mNle58Awk1&lNy34kPs3g2YT`c z;GXn1c+d+?Bq1D)Cle0F#6RFo|A6t^WvMlhN#>i$JMT05emk$sk7Vid?~g~oG;@Xw zMTZHyx^yfG*p-v1Xc#m%3|F}6P}(nfwMoMTrW~dXz1(sr8!m?IZG%TKbj~>3F{CKk zRWG_sZu|Bo9B&=&I?V3B_-^OODi(wHdNlZ=lEI$JCUe|#xz7W|qga0;wu&Mj{M4D= zXa3rDZF7Cy->AFfs0M?2LDeGXYn^uIH+ME%9)|c_EPib&tg-q0Q$^CR*BAXQztMQ! zU`Rq{qGVlI43b5O2G?b(aDI@Y8J22Cg2z?ayQha-V#kr=+GC{BP+g|(y6atEqo)FR(*^xQu*+X1RJ SSZIUgbIIy|NEJPWX8aF15m%`I delta 510 zcmaivJx&5a6vuxvEW5Z+7+nSY02F~$Kn1Z?w6U;((s&0G;{mWSu_aS!Z0v1pG_mji zUci`m0gqr~e6tv!&^XC^GxLA*|Co>Dh2MDjdU^(0Z2P1sdsN(Z_goNgci*n;y7tk8 zKC`TPto0i~sp>O9&7?6P$vlk|O|}#V z5%#I}VtHETL?5bsK`N#edp%}JtkRKG9ES{96mxQ~N-10S(lqnZ-3XXwLC&eckVSI# z5n?Xg5)FxH)-`8N-P}4sPag#Y0deOM?}5ZfFem9@MtswfB10%5TOzq5q8*VO8Fhb* x914B+EO6cN0N2L(}4@FIBdAc#=Vli*!E>ZSNzHk)`62j1J6Z{}mZnSD3o&*QldYp>q| zd${aSV9I7%dQ}A|lf^IhwB2_wIN~tEQJZ7UoSU6-SjTbc4Tpu_0>@@ndhx(_aH%xw ziN*jpf;x+a$4ybhe4fi zgM=)89&DNPdc)GQHsW0K=T})~R50T|GPnDl74;1x6)m$E<2*INL`47!^qSVUVvU=_E%JsUS(274= zPv=L}VzouE*v}|}qKbB?BlLNuE(1^9vIQg0sMqqFyofR+8VUAx^@?O$uf;*el}bJ6PW9D;8s-yy|21i$ k%T#zUsl`M%>AzPr)*(*o-Gt1^|1-xs%q~%Is3q+1AG%U$NdN!< delta 689 zcmaKoKTK3X5XOJ|-eaHcU2zG7SO^|)3a2O@f*z>H14KYQ{`eOZgvO3gX=4EiB^6{V zj3t$!A)z1^#8_C^SxRL>uZa~j#@Ty5pin2-naMZv?R+y^nWaqO^RM?iKnJsis|<&uy!}tY=(XQQDgAp1-F0 zD%pB)${&68(tZebCpzUi&Z-EwMiGTu{(?N^-ljN@Zt=PToaVaZ>A1)ZZn`E!pm-sw z1x~n{O52}R`}U)*UOf6?glg%omqBN!B})qp@^d3YG|4(S<~Yj&&8(2;E$4YhE8B9T zPqguc%k0t4cR9@g9V#V9JyfF7f0P9D5XDM_tDKTWJby#R9$%vCh$?uzL_lw{#J{&M Y9V4nkV&DIWP4V6O|H4%CSA^aA4TP*zvH$=8 diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class index 6a333f37e60c4a2109e5ef59482e6fe9a6672199..3c80005deb2a937c823047ccdafc577511001571 100644 GIT binary patch delta 897 zcmZ{i-Afcv7{-5RW}UHdDRU<^%*?gaUF~BvtF@0Ecg?TLOj~ucE*6Xk{D2CgtG(;4 zK<3K2>?-IcDhCQ82okytiv9}!gXldw>qk@v&YAap-uHRtoada+yC2u4zW#du5je>$ zhZLU8faOho5(KQwx8Cw_FvvQbAZIhUl5$HI9dA*tm$A*Ksf=I5#& z&up&SL=MJgigzF6mKPU`OY>3E z+)xaa+g6QwmGhPA@P8PM(ZS`1OHt;uO11*#foE$G1;Vq+lk*;lj)+_!*=;v%nY|+kk x%U3&Vn6LD@!`ks3RAY;JZqwTT-^tVtqS_*!|C6Y1`LElY{RdOY`SivzzX4uNgnj@3 delta 833 zcmah{TWb?R6#iy+GgBu~Vhk}zTbpRxT` zqKJyXG7wzOWZl#1qQIF>Mjeca3|kI^D6AB#E7bWP2f6%bT`~>x7l`|wir4; zzL+-3{u_2TZsSG*H*t$$+5cpX`rldHuNiaP#%+eB9`w`5uv+Mq%&h;+oS}d^!%8F| z>8GrTSOPZg`1{s)>an}A_Hc7^yS0_Ts=A<}g5SNi;>@cR?=e_~1$D%m>+ALAR3@dGbyL z7}nefl^oUPA0>PJd$@?h)a)SXJV~!TM9Om*$1tk&aCOrDfJ8hZsZU7a4ly12%U)tK zB6#<=U<((B*OMBfQ%%Y+U#UGZs_96k0Z-4$qN3ed{d36GNG9vuIr;y@`M)GG5>Aa7 GnEC~vl6eaN diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.class index d2e77f40253fd142512523f86ae4d344a29898b1..ca80aed742b30828f57d1f1ccad709c34ca7dccd 100644 GIT binary patch literal 1233 zcma)4T~8B16g@*f)-H=hY|#QL2nZBpQ6QQ~d;u{gpacjH#)NF!0S4NgW@omj|3v?Q zFTChOO?=RIe~rJuc&EFxXiT+D?%q2y_uO;ux!-?&`3hhO%QpIO(}sgv8H{4g#%+vS zm`H#7LHG1C2b0F!F^{HX)X4dL_WVXef2U9VK7 zlYtFc_NsecAWR$|CiRg}3{N&>aOj5WKm>f81qb&~V3_LO z)2j59_I#}z+{c`QMFX^if`cJs8CJVz|JOtqCV3@vPwT>sCQDvbl#b8m>8?g|rB)T! zyQ0Qrs7b=|W}xX+|xz z%^N$XLYI#iGBw%Yn^MbwI#62H%{nO4ROLmeF-AMv*IMQ@m{E;vKgBCZkVh+C{0vsi zHqrBuq8?l!dztQl43g+2>tKK)Cwh&m$WfF;zKt|Xu|Z-T088<&geX<5Vc*Pj3GiExqzPg9lf6>ZMHQ=UyjkO4&`W$Hq8?l oMVeITjKXS>l7(=9pS8r#I5x@jho4f#!iUAmLG?Lx;1$ZF&X8-^I delta 603 zcmZ9IyG{Z@6o&uV3*#)ifLufbxdz_Cff53Zly0^LxTk-hG=i+ zoA?CAf0oTMaf@@?bH4M>`BsnWnS1HcguJfu-m*hJk!15Jrm>hp)c`02uyHf@h_ zM`BxIXF3w1;3JUO_0dI7qVHpXa(E?%xgqv^>?828jzHivycYFvF3!V-H6M3Jy$b>7 z{^9lxEdtZgk`x4pqs=fsq!;vV{|#cwz(SVRqX!fm4&@m6izcih&&)v~0SuUHfHAB$ z0GY8dDU!)zGIa|e)0}4tl=>Px# diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.class index 33dfcb07bd60ce99192480858f6557148d945987..d372ff99bf0bd1157769c75bb8e1dcbbdc1d5885 100644 GIT binary patch delta 540 zcmZvYK~BOz6o$WP3)9vD3W%ao0a3K5EY!pWiP4p};ta%9W&%s~3g2$iXgV`$`rDxJS6_2eZ(IZa<7iqX#!B#%hMO~#q~LaLT;TB@&>YAx<# o+-$g57gkHYEzB9vDPlWCT;vRRe*vAgd{#F{SeZ~X7hZRM0gxsqZU6uP delta 568 zcmZ9IO-=$q5Jq1k(9jHsfC3kV8;^!O>sdCaYZ~d#Z|RXRG}*LI zTQ=LaSxd8{*}XfTlx8V9xU@BU4*MJ^TKBm`t$E$=4TiV9;Xu=IIHc`xM8)CQ_ODP> zT-m zNftxaS->(cq{?WIY(z36K_bwsKq8C@F-sw)Eq!)`iqzIKGARxcA6K!;SB}DvPVd5IRJxhKO#=fb$Q~pf1a5#0Y;T J6l=cM>MySlEiwQA diff --git a/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.class b/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.class index 7aae9cd2bc504db355aa09aa590947d4b4a8d985..6ce6dcd05c4ecc451b5f455e199c42e17d76f3ce 100644 GIT binary patch delta 3485 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 USkGm$!&WgG)s*~$avT2nE)uC-eE filterContours0Contours = findContours0Output; double filterContours0MinArea = 160.0; double filterContours0MinPerimeter = 60.0; - double filterContours0MinWidth = 6.0; + double filterContours0MinWidth = 15.0; double filterContours0MaxWidth = 70.0; double filterContours0MinHeight = 15.0; double filterContours0MaxHeight = 110.0; @@ -80,9 +80,9 @@ public class GripPipelineLiftGear implements VisionPipeline { // Step RGB_Threshold0: Mat rgbThresholdInput = resizeImageOutput; - double[] rgbThresholdRed = {124.0, 255.0}; //{156.58204205866073, 255.0}; - double[] rgbThresholdGreen = {116.0, 223.0}; //{156.8172385168788, 255.0} - double[] rgbThresholdBlue = {0.0, 139.0}; //{55.03597122302158, 115.090199944652} + double[] rgbThresholdRed = {204.73851687880463, 255.0}; + double[] rgbThresholdGreen = {122.41975650249032, 255.0}; + double[] rgbThresholdBlue = {13.758992805755396, 160.55555555555557}; rgbThreshold(rgbThresholdInput, rgbThresholdRed, rgbThresholdGreen, rgbThresholdBlue, rgbThresholdOutput); // Step Find_Contours1: @@ -92,10 +92,10 @@ public class GripPipelineLiftGear implements VisionPipeline { // Step Filter_Contours1: ArrayList filterContours1Contours = findContours1Output; - double filterContours1MinArea = 3.0; //25.0; + double filterContours1MinArea = 26.0; double filterContours1MinPerimeter = 0.0; double filterContours1MinWidth = 0.0; - double filterContours1MaxWidth = 50.0; //1000.0; + double filterContours1MaxWidth = 50.0; double filterContours1MinHeight = 0.0; double filterContours1MaxHeight = 998.0; double[] filterContours1Solidity = {0.0, 100.0}; diff --git a/sysProps.xml b/sysProps.xml index 391756380daf95b458d995ad3ab5c802627e46f4..99996522121a86be7f01e8b0dbc009455cba9ffa 100644 GIT binary patch delta 55 zcmZ2yu*P6R37@iJ HLXE5dL6i!# From b782117797243a3ec409101aa40a87c6c0ea35b7 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sun, 5 Mar 2017 15:13:32 -0500 Subject: [PATCH 50/69] after week1 --- .../usfirst/frc/team708/robot/Constants.class | Bin 3498 -> 3493 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 6872 -> 6989 bytes .../commands/autonomous/AutoGearTest.class | Bin 0 -> 831 bytes .../commands/autonomous/OneGearCenter.class | Bin 2275 -> 2406 bytes .../commands/autonomous/OneGearLeft.class | Bin 1513 -> 1570 bytes .../robot/commands/autonomous/TenBalls.class | Bin 2054 -> 2264 bytes ...DriveStraightToEncoderDistanceOrTime.class | Bin 2054 -> 2024 bytes .../drivetrain/RotateAndDriveToBoiler.class | Bin 2366 -> 2355 bytes .../commands/intake_gear/GearAdjust.class | Bin 1422 -> 1385 bytes .../commands/intake_gear/GearIntake.class | Bin 1767 -> 1589 bytes .../intake_gear/Intake_Gear_Down.class | Bin 1233 -> 1229 bytes .../intake_gear/Intake_Gear_Off.class | Bin 980 -> 980 bytes .../intake_gear/Intake_Gear_Out.class | Bin 1079 -> 1021 bytes .../commands/intake_gear/ReleaseGear.class | Bin 0 -> 1021 bytes .../robot/commands/shooter/ManualShoot.class | Bin 1603 -> 1604 bytes .../robot/commands/shooter/MoveHoodHigh.class | Bin 1037 -> 1038 bytes .../robot/commands/shooter/MoveHoodLow.class | Bin 1035 -> 1035 bytes .../robot/commands/shooter/SpinShooter.class | Bin 1504 -> 1505 bytes .../team708/robot/subsystems/Shooter.class | Bin 3070 -> 3070 bytes .../robot/subsystems/VisionBoiler.class | Bin 9202 -> 9189 bytes .../usfirst/frc/team708/robot/Constants.java | 14 +++--- src/org/usfirst/frc/team708/robot/Robot.java | 1 + .../commands/autonomous/AutoGearTest.java | 33 ++++++++++++ .../commands/autonomous/OneGearCenter.java | 25 +++++++--- .../commands/autonomous/OneGearLeft.java | 14 +++--- .../robot/commands/autonomous/TenBalls.java | 26 +++++++--- .../DriveStraightToEncoderDistanceOrTime.java | 2 +- .../drivetrain/RotateAndDriveToBoiler.java | 2 +- .../commands/intake_gear/GearAdjust.java | 2 +- .../commands/intake_gear/GearIntake.java | 4 +- .../intake_gear/Intake_Gear_Down.java | 5 +- .../commands/intake_gear/Intake_Gear_Off.java | 2 +- .../commands/intake_gear/Intake_Gear_Out.java | 7 +-- .../commands/intake_gear/ReleaseGear.java | 47 ++++++++++++++++++ .../robot/subsystems/VisionBoiler.java | 2 +- sysProps.xml | Bin 6188 -> 6190 bytes 36 files changed, 143 insertions(+), 43 deletions(-) create mode 100644 build/org/usfirst/frc/team708/robot/commands/autonomous/AutoGearTest.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.class create mode 100644 src/org/usfirst/frc/team708/robot/commands/autonomous/AutoGearTest.java create mode 100644 src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java diff --git a/build/org/usfirst/frc/team708/robot/Constants.class b/build/org/usfirst/frc/team708/robot/Constants.class index 5147ed6ca988a485fffb36d2ea1d1ea5dc21c3f6..44647029d9e5f4c8ed333bf1ae03a2db17892515 100644 GIT binary patch delta 938 zcmZ9~%}*0S7zXfXW^K1Zd+dR<_aHhLf=DFztt*5B6a{tF z3MwF2#U>__9!xy+!yabyd*_|$v(u@^YO(0=e?OZ5j-cKF3twz( z+4#C0UDn#(alh+ty$YR!`Fyf;ET7J%iWZJ4(fDJJY3C@qFn~A|f=r=toE{WT(;49tbXGV=pG3f4 zpQj7LMS4j16n&;`2WMG0CpJ7!54Rf-p)c&4zbIVd{3X$UnH~`yrOUYD2fRvO^X+Ju z!gas!-#7MoOl&yL{+q%R^ey2@dP>-Qz-?g@@J`DPkK8P{E57I+eP0AHC-Okp1b*1s zU~l~+;m4eRB5VRo3(wHAdk&cYJmMC@J&w)toQPq5W?r~LFW{+vkS5kMVbi}TyhJ}2 zenGz!cIj7bJ9y2)n|1+J`mOLXy(0XMelG%=03U=ajHyS=>7qK90&04nYs7Q4Z33?w@ZlxiH((rNaJe0os+X0ItnFS-kqHT$ii_POdMD^v~YBi zv|<>+Ea$KBC))(98-@7dXf(g(RWuwaC}&B{D+JwANjP8oRw2%Hq@dF6K#sFurW<*Q z&V`w4`L6VHed_a_n}H2%Dx^C7R_f`0tHrPjk&Gg|ghGH(3>4F0;n(yV;RszKTuMjb z_tuxu<-!&8Tj5IjUCcJBSf~~ozNbIL8t{Vt_-wvLxR&#EqW=?JFWf*k;mTS5)&YB;Z1c$VfI!@@eii0~*q_GqUuA;s1Wc%J?y zyg)lK+xX7HVyu8AdRh1fy&}9yuL=L8e~ExPz`F1hqbl&~bKK%J&vXs=)BZu7WVjc9 Zn`3}=Ac!4~3GTZezp+ax>~S=(e-EPvXRrVO diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index 837705bdb5013ac85a0dba7285a1ae7ca228bcb6..e6dd288ef5d27ac321cf0b9380e3f6a4c8de2ddc 100644 GIT binary patch delta 2166 zcmZ8hc~q2D6#rcY=FL1Fivz5_7N=>sx!8VsxEzPv7`@V0SnbZ97yUV-x&hOs)zPG=8=ScsK zbDOsSD5F}5ThJ@;u0#ZSo$zC;hW7-vN!TsV`&!#B@PUN1JUawFl!&p6j|6r~#9PM4 z0-s1ESjMLUyCjkN166w~_K7r3AGA(1jz!wtPmhq*)R}wjv@wLDK ziJ_KpP%_Ov4gC^_@QsFVwfUXI_xM3Kaai|sMBu14jydq7L@9of_!<6R9Qak@Hyjr@ zp-+F;N87dbht^K&PESevsY}{%+CH|Qr^P>Q{iP4j=vEkFG^A_D)DW*BK|_*;Yz;X$ z+~YiC&w2gM5-AaRY3b_q(5@L?G1iGth`^R+ukP_o1V zt)}pJDAhq1XqhG`UC@P{84)Em%IusPwKc-N1|5VlW05_{I1!Z*qwoS&D!ho5gf#7q zo8H*$X;oN+TNP!Y!&u~~wBLr?3B|@CXP%mNwb$FG1Ma|`MzOQhS=Z3iq;L=JWvj}z z8252Tp|Q-V?DyjVLXpmjp6Kz+)k$~ZZsVYHg#A%G7AR=cNT>ZlJVdC_k;d%ESck&H zc!W@{9f>mE?{5@A&U<(Dkop8uoTM_-a?1M7IX+2s3@BTDH^OjZ)#7D z_6$*Y8LueHrJ;lzv-kdZhfy8vtXqv$1oy;NZ*$hTrl!V*mN}lR@!sa=2A4?+v00$Xle5)JcDNyUcxFxBbWu1Xcnc4%BWn? zNbRZMq3(^o%vMQNMvj_c8%0%}3srf9Z4He!(qhw%-LdnMT=kxYCQpOUlQqfH(3&;f z<7*?-7{_CC4W**pMxo=m|&jHi}PoXp=v^+j%o2Wd)s|k(>zU{Ic+>f zMPsOjFi4X&vP6_o5T6%0mQbjN(%BLpZS(v2K>=TX=qteJ1aIGzym3?V5>3fFHzn`f zl)P_K@-|J$OEe|#%#^%zQ}WVGxg0A@`8b|7B~K3geLC?Ro;P9>Gc#AQ8+vu7d{rMq zfxvf|ajh{Xv9M?z`(j~ZEJq}Ne{qV{ z7KmEn9#pC;ySOI!mf4xI#BvPaI-xvQFt00+cg%e)SD&3!NR@meJi9)`j8un^2^aBM@qB7bos!0(-*#JUaO2uLny_36yf@8!|c7A1ZK= zXViy8^oJF2hw-w3VmWtnuu=gt(4;6t#cnzdhgF~;g`QwyST}M1YsXlhoDeqkPy=sR z*+yS-YS=zc@>Wkl@FO0Yr6cf<5&G+9K5LEKlsP={#VMmpLQ(Z$okfApVk%FQ9|)bm zEluWW>fVkTr&Cs68tH27fp6v}v~^)d{zgQ(+Iujc?d!TwZ`#-QU;*1V@VVZ|XQVaY;&_zSBjq;Ffgdi55Mhe b7sja~$mwk!Oa$J+Q!FL3dV(_WWNqqytop@m delta 2118 zcmZ`(XK++i6#mY(`*QasyDZryA((`a2y6lgq){b^Z3cBH4kLr3B4m^?$tp>(p{t?- z*5I=MiXw`IfC|A7K?o?IqKJS6ED#G~p;-bb0-pQcmiNc^<2&V^``uISecLPclt;In zS-Sy184Z=V6YT;UB^+o^!AxvY@UFmn5+2L5S!r7Ywn|9L^S;0b5~-H)p};l?zh!(R z@UcW!%h)dPiA2aUb_jebk!c!H>=f7~(ZgEWE%2E{j%9o<@P$O4Wqc{HN20(o_6mF@ z(Z@2rmYn7{3ci)thy4mVl=+>+_xM2-@uRBgfWS}6IH=)giBkL`@hhUgX*eWt7)Jz- zs?}p^X^YZ+SK1${(my5sQj{KadPa0`xA;@makY3tmBNs!pofAS1%3rx6@(PzDJZ}R z4JQTumKcL}mD4{_4W|VDmAJxkoYrtg;H<=zXx9jWNMe#w9fF(^S1Z*e$SpBhsUAT> zVyaR#K`DZyr)qRO!RyJZk?yIQWH~fS6_h4%lZy5U@=MeskM%Bs0unQnyDRsE(lrVy z84}b@P)18%$3Q1_Z@J37+2L7+W8~twb!Y$9>ybt%6P1?QF@G8 zm&PQI;xR(GZ6VFsgn7nJSy1)_p49OUnsuy0v!EV2okQ6=R$4k=okHbyIb`jHQI&Mbjg-xg%?8rcJJ!Qk@%LqpTDh}1=DBaQXBhd zcMVZZRnu;AhguH!I~~!P{F?w@YN#PIrl^scl1FGt9)&4+l&0h%nv&;cN^ZX?x!b1X z7MqgCWlCdzC8Y0CR%V z^k6>!3KpOXR@>MEiG3}xeWOD+GyD2baWu((Z7gavGkM?|;7rZpeBQElux~h9#M0Y_ zey!*qUW4M5Y&wuEZ6|Ns#R=@T9qvsW-kP8q6Qc@-jT^gVMw0~lxJUbujt(0^(3Y1I zl*W74B$x_01CWwR^@5KZGqcaaj}x@&Ux?|mv=9W_C_o9 z!Bz@m2NhxuKjCC1dlUKckH$KlpOQ8G%2n{S;f__%P0ThiU}Dh33={KB>}_IC#$*Cv zZYXGMDLhmGe&-0#AY{;BWYZAj(=dc-I7(;)DyYhqQ)MEj_2#A9fM-}r&T0W=VqsP0 Ee@?)$egFUf diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/AutoGearTest.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/AutoGearTest.class new file mode 100644 index 0000000000000000000000000000000000000000..32941275191bff3d23df8647077a8bf6ec456fb5 GIT binary patch literal 831 zcma)3O;1xn6g~6$Z1GW`tstl*#vK&nxG=#4LsSyjG%kcR(T$n*4KVQDn>rto_?z6Y zfkYF206)rjr!D0zAa*f#?#G-n=iYn$_xBZmH&{(j#ZnEA6GT`_@Bqs-tkm#?AyI{L zN@VJ%WT>pIcNyXxol>ySQHA{E^PV&ZqL)#o)zN*Cb%jwO9w%dWtSrO(jy6Z!+e2ln z$lwKo_4&i^IR0E<-$8%=v;ftKajg8g*lMcZ822e1ufe_lielP9?Nv7 z=_^@TkUy&mCyns~7b?lV_NFg)RnXQflf60-KSUk#m|@tSQWsH+Q~B+P^zhFzlfufN zt&XR7Ha*Kd-7&Of>iO9~@zH?D%T({=W-NSXG@d=9{eWRkr0Kr=?qv~HL*TW}RPe3! zE?&@ftF(2{9ixUBFg&DagANPloJ@p-Y;~AuVwU{+s7Uu*cob$wHUK}OGORV)mtgHb zh`wB+a)J1kXP#aFE&A>e7O+_2YmE6~$~VS*FX;|KqROveOG;Ks$Y_FWPL$l+!fFY~ SCcxJJfzR&%GU_7eTKorN$*JK0 literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class index 7afd2a7c890eced333eba9d5996cae82420b0c1a..74ed7403ee93661b704b769957595a2ff36c220d 100644 GIT binary patch delta 1002 zcmb7?%TE+R5XOH!J39l-Di2pfKqK#`fP#;8MP~qczeGS-S;1%mns~u@H5~i{2$|@? z#Kem?jT#a*YQo8rF)H!qiMWX;@7|0xJLv8KW9+26tG@oKze-i5i@%j5-~D{O2^?om za}>wMwcMBhvMlFwM`mdZx-@Nc+w^GiId9XeDZsIu?F<#0K20Hx&+4}s(3Ie;B@fLF zT24Cn#c~(i4B2K#Q^v5(h^Erl9Mx1aW;3p-_5BN)djFo#G>V8jABb3P!*8{VHj``b zw?i@7z2|B=FUC}aX)bvYqgB8eugL5*M{X|O@wSZKaD-WT+A?~=i;IeW&o$b;;ZTNY4AvtG=Gz-$z=DIk~0$K_F)y|`Vmi^_hd*-TLpaB~Fz>)(}} z>?M&BQQsH*Xoz|=N~vhrS)?V4WUKZ-nvM*DDMN688mh!^p^h`s{63nPl2R|w%CgMX zJ*nq?spw-)^NjckuY~rNPCjy$FF1V1WqN911d2fzqD_0OCMSjvV9 k9!!8KiT-nRZsi23KY^Wp4XhL4VCa^2iBwV(Ke2Pa0C5SMcK`qY delta 933 zcmb7?OGs2v7{`C#b-Y)v13r=nC7BtWbbOR$PG(MX$MKnueB@(F3^B+86?)Jvmr;vA zZ~Jy_Y7>Ez1wq?zSL+ajAZXdT`tDrwL2f#5&-u=GzW@I_=l{Ro%C<{qKK*+40XWOF z%}Ej#7fq*46FSV~=a$^CF-Y1p;aH?>3hA^++Z2&7lUun`EV^upNqAM=7Ckm)BvxmR zkN29%ZJ)(-t~$(>oB+;r;xcDZaZvifDq zjMFTPxT{93yKEG>KO|HXXEewd<3h}B$geswHFxV?dU1GjQfSSk%s`25r-YP;dvh(YAk$4MmpAeWaEfMx)4FTW zPrUE7P6lUmHgkz8S~L#&hbnigSESe40U9?c@Xlnztu*`HJ7#LAIFqGhor3!Jgfk^( zmWaP8%oJy_{kU3dYSt;$ny7{+{IFKTI=`SIQ%+?$u{A5Cr14}dkR{|F?c@JXn(#_P zImeXAQl`C!J|Uuy3aK6uj;f&%YV>c2a)CN}h%rh%^E7f_rFf(gtm*TgbB>p^vCeru z(#|Fwd?mqmQv9To-=w9KE~%zhTImyqK^b6WNG2JUIY#6zqwQZ);2bh zXyOmBwKB1=wX-!Q#@RbKC^Swov$NkkGT+R*_u5x^`o4bzuz-@lFcKP)+}I_6gy){; zEfG*KFA%|khDDxxv!dWe(RMT}33OnY8-XT}66i)+Lq<}r>yactV{2~5f)(2Qhd;RifctY)6LrYcHVN0$z_T8DNAPwWBR<<2^KY+oTN?MDU!C?Sj;y1_oN zJ|w=UGZQDvxZIy~sIZd5U|5;|Xt&%yFGtM&q Oyh7oZLWWsuu(==aqgmAe delta 652 zcmaixO;1xn6o#LfmOFG>1LCDc3Cfp%g@P8u4}^R9P!b6-F(I+PfSoQ4#H1|v17uim zS-N)Ph9;5_mtfqvGI8P7KVdxgw$!p9OfqNAea}2I@453a_a|HZ_V>#PFvF7NHYLNP z7ry=~3V6Yf>10?mQACT?d(!ckkckSY*MS>E|iMyzC!!*Hqper1szRNlWo)Bh4N9Q4Gk}xJ(t#&k{6) z61_z58In9#FEY&CcoSkuVho8{fPGBFp4 x6{K!>Le{ubo%$5VmR4t5NZlmwHCw&(AI+VE>vE!MlEtgZ@SJP`Rq_~`iGLt3O@9CY diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class index 3c80005deb2a937c823047ccdafc577511001571..7b7f320b24e5e282c4201efaabf0236c2c4af618 100644 GIT binary patch literal 2264 zcmbtWOLH4V5dKD1cAbq<#=1}$yvr>pH{Ack88uA`viwzl?bTM8|mjR+lg44gz!OP}j9?i!fH zJsn#Hk_vR&z**!J#C;t*2F@d=rI$N6Yd?Rk))zWT2Bu)?ct^*smcA3o4O~=E543cl zV~`&2N~ZBpM_Ef>=rR_R>Yjl`^?ujD73C-uNp(EZ@tDC7j_`%u5Fc}fvDEA?LwrNl z=rBRUmRnzBo^Ty(m z>B@@q&8loRZKvj$cHm1#Hf7+M7I!jsqv5SEXsarYn<^eJN2GViYwdXUXy*>mr-b8k z*9}^}k{Bf!xK*ALDz4LApx2M=Cw2mBSZ3HBF`k+$o^ao_g=1zFSyJ@Dp>N4er%H)% zv%>Rjr^*%XdkO60eTMwM2e$&(v1FDXxSV_IjfPN|3^T)#Hl(Ax`=0V{GtBZ@V1CpR zW|U{58lrO4&93>t7XC(*X=PAh$PLHum1Q6eJJPp(zV6i8`LJYB)P07`h(J^(`vbmz zz-`woM0B3${jI=HpsJGhzme*7hBrqHr@?FcGVsk3_luiZl@#ipTO%3|NlHdi>$wc` z!=cux+j})+*d4BYTs4L_<(6xSX1g`1m);r?-8+<$?vhz*38xg%3`-*#*Ey$4(YDRC z$^YQjm#v=PQG-5aZZOOZzYd+NkauO!q8XFQX7|*9J8jo$CH`T+9X0s~B~=^=XGIw+ zltOz=PJD#>VGDu(@v$DF$YZ-Na1n_GxEPkr!yhmi1eE#gRHohqP;xIk}J#MszZY9FZL!@ec)qbkOc=~nUY%l~-5ko62V{@Ji{ Mj3I;iQxe1GpE+4dCIA2c delta 892 zcmZ{i%TH556vlt|Qs&~Ni3KZviN-f5X#Ep@KB`)jAxY5Mi zmAY|j!p3O0i6qKO5_iVL=+1w^e?UERZz)~iBr|i)ch2`^=9~G^@HkTX^5?@x;54^v z25~G#l(V=k2&nY8A%EDIWNc27wHQ_DUw#$kj6d=ti!qx6j9X0DM3}UgvT4*>(>75Y z&785AwQ0stPBfrfT(N0eX3pZO#k_I~0d5o15(~;Xx(mcLu&A8)F3_!koJ~UO^#-U) z|9qjxON(n3OV59QS1E=J=H2a3j~fZqyMK+2`V`m0++f*YqJpoOBQ+`V?rU>E_M7fk zbH>Q})n_#=;nB5+_rnx4B~u1lYuAeg!#Zoaw|eLH+IsOsZnZc&HX0_yios-Ad*R)u z&=aFTr#LX^AG4Marx?Nz#~~@x(DSV=~`)vgy<)OKCRy$WuUCTce9NA4QLkwI%pD0dWnk(U8Lz@TCyej zxXWc82vWk~DH&do)Q_^y8!qp|G~|BzVCjDl?}Oa{ diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.class index 9c726cef5ff6a120f64e995b9d14300f95a85b9c..54e36d08171e77f0bf96d0d580087c48fbd2a269 100644 GIT binary patch delta 992 zcmZva%~BIV6opUEPnrx(2#81&2_hO8qksvBjxmvlilBl&@#hKL_yTUml`k+0p~`Y= zS>*<$VwDTFR{118f-CjhVVI;+EOPsH_wDbTdnfPmzXxCa`uk%aKou`FsvdG!l(6Js z1Xr@mmb18uYjPII_PT_cgd1{J_t3yi2`d^+S#L>LmAl)L-I46B#@g;{U#Vuatv)x4 zC>aznBcW_?0;3xD4A!w>a32p0j$_o|l!VimFnEYfjV*&mQvDcZg;tbTt%AW5JT++H znZa|+8N85!d6d8Xv8pOsa#ou;wgI@Xgvo4J)SxiN+(Lmr%EbA2vQm-zKGqa5$#^E( zcM9PY&pcLxRho>m%qC&SmD4!KRo}?F~ zKs%q{*k3wV+aG(bNU-CN!akVS`OzBOuXL%`k~U;k{m|ofLt#XMBY!@c2*uAL6Y-;C qvEkm9*4X!Y7gVRSSx9G7Nf0j0AL|8dQf{jY;3fct%NfdAsQd@zCs=9# delta 1036 zcmZ8fO;1x%5Iy&O^tO*n3k7XO#0qL@wOVLV^jWD$!2&Ayfgk9iYBeOrg>+?1o-22* z-a<)?TVvt|F_5tE2lz`|`4iNc%WG}Ac<0W{ojGS_?)w#c+vENGv-<-;5f3FM9K>*j z;jDvwn2eBhE`sxLId*~F62nD?DUOvLT*5TNWri7v3ZJtKbDVI6ttwmd5(@&+M(yRZ zdShm7y-|DdxGpwdC55Q?zW7o}VN@Z73`0&KiG;+W!c|;TxQ-=-{YWSbG7RCc!ZL11 z+*G*5*|!;1kn>*~tBE_ft8fqZ6;_c~c))jK$Zh>LiXtqZtgY7`J+J#IYtD<&n1Bs~ z$;pbdECddaZD4>t($n^#;3R4C!<3W45yD~e<{^oLqSmjFq%^V0KauAcBLMItz<4o77}AnH@a@ z3p-lF)*2Z?G3-CJ7sZIbWfwf|uc+s6TO@9a#BGtdy#64MTMi*hmAx?j(lTs`6Q(Ih ztc&_NiCi#AmDMP%?;AqfP#U{6MuU;Y={Bxs$P?ul6bj@Q^=xXdHfYPjsXbo*T`1x8 zbgpEQO5L`y?pE1pR#{BnAhwZ=r91d>f21zx)6CEW`_y^Oc7HsiDMA-RTJX~ z(~JaiRGFp)I_X3gGssi2%_0MhdPh{rN@s=c!=hIyf`hOJ;ZQ_;gw(xN&j}y0Km{M+ zJ|Y7f>Lc1ktnh{??TGrd>Z8;!9Mjq_FvRPBd-54c64ea0LNOmHa+>6*ui)JuWW_~b delta 421 zcmXYr$xZ@65QhI@mS%R_3!9?Rj5ZjAK?_L0z zn zWp*nLR#D+_O<W6M(0_tkia~3Co8`Ecg%& zdJkcM=t2-PFlb>5eTX896iv&(Lmq>4K#@-LFoXgryJ4!*xL%D4H)rWS!ql0>4#Wv0 zLK5>K)s?7vG(H+^5o;qJxQ;dwO&G;jBLlc$ra5+_-e(1NZ{Ez&$%x#>BAj664m5 ziIGWIjEU~&4dxMi2V<-sl<7<-U8z1*=hUg{)7}?%_s`q!Ct!)HOF#J-Qxr7QE;d1o z8H$=xwEFkbJXbEW%$YDBeGWkjE^)qUzG)U8_8jF8kkFJpDl92Vja@6-I99&D%y-R- z$0}=zz`*(K!-Lw<{=rdAv+nVOpB@`zJvK>ry} zlEh@=-cHw3g1J}{2Z=Bw5j?4aLt4HObhy(m`K-LArXD0%7_t$Bkq}XJiC?B=9e;8EoRTaIf$rNzp4MGs|wz%AzID(Ze`Cc`|bN zJOzpbl;!Tme7e0%<-W delta 693 zcmZ9J&rVZ86vlsZZ`)~aCj~9EV3h(zFVF(o0)iCzvoJ16hznPm=t9GxHxbg*v;mqyL^@f?`{FyV~H{Y4_$2-Ws`Tg(vPhgR4k9$nzc+3-x z@8L3?V}@CeIt|TSX5;$UuAV)Zw`L*pD{=JHV~}T>rlxhVlUDir6g7*6C6>GI)k5hx zE1Ffq3)VDk!#Y)k-~H>1b$_T_+3=DL!zNY37DdB2Ma88_Bx84~P!FFX($YWxMBx{LR;?uL=P!|$742$)|BTXKW6 z1lYa+l>|^x?nKB3G4fb=T)Ei3#7PCDUi*c^Q${XH2V{B-NH9b;z&oSj7miLC4omqS zCM+2#S;cOsc#^EdRk7pJ=!7V($)2JiBWmK)Sz|g>R0>;bN3CRKmK7d~;zt74I5*VX zvM3u9uKpJ_#M_1(_uSg>wSJ3pi58vsZ)6e?aw$S;(fc)^aQA=_*4u=twTq$vtMN2axk((@ST-!TPG00qd5YMw>Dc0S@1AUiP*5ydu8gMIzcVy($J8}6hZ-mMo3P} zUzax0`K2$I6Bz+#B_nAllcU0nEH_A^#;m*?=duRN@_mD`Vm|>*8x?j&(Odo%=DWMBCgw8cfe6$$^)21ef<0!l%V(gJ=k1*&|M`UMIoDs^jI7}AXzL)>=hnslSY zy&E^yI14qp)<3|+zrd{v7cLC(zM)S0lDYTIx%b?hbKiUCXR7&a|HEgXOx-3+F+qt5 zi%A=ksRU;@YjckC7SlR=u`j=*S&lB1b(pc4Wlk3>`u9St`s1ZOdo~yGbg0-IW8PxH zVo?!WXgq4{EGf+K;yuOg_HVb3oW+tum1RY#wQLTxo+~$7ryScn*p>U(7eLa&~O)GL=0pD+c6X(S7Lvw7RfdT1hp|FCW(+@P;QP?AA_D-( C=MHKB diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Off.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Off.class index 479b64c5170409721b402f393962a5724a6e53ce..883f5f869b853f3b273a532dc69b4eeaa65c1bc0 100644 GIT binary patch delta 13 Ucmcb@euaI55;G&qWM$@!03Tul`v3p{ delta 13 Ucmcb@euaI55;G(7WM$@!03Tfg`Tzg` diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.class index d372ff99bf0bd1157769c75bb8e1dcbbdc1d5885..ae8a09784bebab2ffd3bc3b87cee91006c4880d0 100644 GIT binary patch literal 1021 zcmbtSO>fgc5Ph336UR_ULxBPK5mE{gpdPqXj%ob2=6>k z%mW73DiOgze4u#_f5*eb5ORgyq!Yc*`>D#;6nRXzL3CWHWN7S(`%)$< zJ_rs24=x%G7Cp3a)xna7Yq;*AgNBE*XfQnf|7S2P@qXgJ9SVQ!2BCrI9UOV!uaCW8 zXdgf9g>`QH#v{uZ?)}4Po%Hm3ZFr=M_L8-$#}E5^A45HohkQ#Ksc17g8|i{*BZpX^ z6{^#!0X2~IXi)U1TA|D+S8sd)`$V9GlN4RbpbHgD;Z%y!OH`evs)92)!5Ydbf%_Sy z7Rn=3Cs~>_c)Gyi<}A&eeHCl38je*Ic-`p2sw1a!-GM zvfpPHH*nMX%NEUAH0R)!gL#JBnrut+gdtN|+-1nFtEONm)?{0}ih{Zbcl>&bJQFq5 z@LRinD6QRhX3e403>!5S9`H!-%TOD>A2zrVe(>ntDi2j%8QxGq;J2Ha%eL{~ioFBj zhx|p1pA+8Oip*mM*LEWPmi$Qd9PwT>B16cPdXsMSp=kEHd_$*b6D|;)2*apj?2Y?c zMPWm1O51Je1pD%lf9!kkFy`Sl793POETZaQ$-^Bic({v656kxYGR7F5{r^A=^P(B? zcOA)NT?n;g{b-;DUyoIx&b2T*G7u^LowzLGV9BAw%O2a3%S%9H1O&+0|v0w&1H;$p(II$-*SObOX8aziGU7(p3%ia(8| zl&~yOoUOoy$+lr&GL^`Z@|VaT55nnh<3_7pI9~|FGsMYLspQclnI2a^`9VL~q29YV nH>@2uK24&{q$r$(;z~ksKUF_}lAugV&87$jJupo5I=%WAx4YQ4 diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.class new file mode 100644 index 0000000000000000000000000000000000000000..9a598e56ce146db7277187401f0018abafee0d8e GIT binary patch literal 1021 zcmbVKU279T6g`uy8{MWhMyy&tT5Z)NO4kQLp;ALzT7+Q1lz_gJN%l6Gy4j7hvlV>u zZ|HCE#TN?-`tCpQ&xm)Dn698GU6{M~+?jLs?7j2t$EPmj(L61U!ZGd}C7NEszV^_m3om1;}CS&st-GYu8dleFI^y(8Np zSIUjJBg2-|%Hna+F+G(C)Elwx`f0MKbYlEH-SG{{{{6cTd>yxA<9FhIUq(UVtH{U~ zwA&@A{ihU?OlXVq6#@65^|C79sbrJWq-Wc}o}P20i1R5Xlh*0L*d4DKr@BL%%6cnh zw3heffh^)OW(C%cVe9e8qP4ZVoth#ls0yqeLn&iQphiLJzZxii)FaM9)!zTr8Gn7$ zp)DP!1D?DLf+oF8DYDaHa;5QK^p$E0*Z6L^JYNTMDBz^M5sY&17#A~mn(<5qml&5b z_$=!)qkEHImD}w-HB9mNLxTggHNP^4DLeW{6@! RT=+L}`42?FBe1@%{{*qD)(!vw literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class b/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class index 001adef0dfd63629311cae774bea556279703c7a..a6a4dd6cfb10a257303f74cd176f9ec9fd60de62 100644 GIT binary patch delta 126 zcmX@ibA)GtAJcq?jR7VsGHV%F7#JBC7(zEOFl}RC7GYqWK950T69c;-qu1p5EIQmw z9NQQ;Kz#NKldrKTScx$xGsrWjFlaESG8i#vGFUTcF}N^jGx##-FoZA|Fh~InqUW&>7XMgUx66iNU9 delta 125 zcmX@YbC_p>AJc-2jR7Vs(rXx47#JBC7(zBNFl}RC7GYqWK950t69c<|&Ey3vI^2vC zwlQ!3xq=)fldrQVScx(yGsrQhFsL)AG8i&wGFUNaF*q}5Gx#v*Fa$FgFh~K-;(?gR VAk82HqkW=;PRMk%`}xfr){Ufq_AI69bbVqu1p7Omf1U3^EKt46+QoKye<3>|_DvzX0ri B2l4;_ delta 50 zcmeC<=;hdOk%`ZRfr){Ufq_A269bcg&EyA6a>5)8G7N$YvJAXHVIGL&WI^V?0Om;t A-T(jq diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class index 83695471cd67e79a6030537f68a3ece5921015f1..df3e73add3f44c99b4e6afa51b0fda6f1d1d33a4 100644 GIT binary patch delta 24 gcmeC?=;qjPn~9r=V;cj@CI%)!_6wVzF{v^F09eNc-~a#s delta 24 gcmeC?=;qjPn~9ro!Zrq$O$EFpT{7viGfLw(Q6w67my*s zz`c!ucR7P7n9T=dgJhXFCSPQc)DmMbWKd!-Wzc3YV=!T`V2}nH#RD;rL54vV$WsJj M76vAz$s(+003YrYq5uE@ delta 145 zcmaFJ{eXLdC)0wAjo!X2^)(DE42%p63?`cxShq2-i7>EFpT{7+iGfMLW*Y++kQQO! z-p0VYoIw=K<^!^U3_->TK-rBzeas9}KvIf<4M^%S@G=-Mh%y*5C^DEbXfc>E7&BNf eNCRbfAa*dwFvtRVia^Z5z@#Y1z%p5a^&|iebQS^t diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class b/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class index 5d7899f4c4b034c4ce966b0c3cdd1762a41427a0..4501d60f8207c9458a0f94b995dd3f3d7c562606 100644 GIT binary patch delta 46 qcmew-{!e^Di?aO>1~6c=FR6OyzD}f?%|Qh!;=q&!1{;@$a{~ZG;tc@+ delta 46 rcmew-{!e^Di?V|V0~oN`msCA;Unf${=AZ%jmGVf*b$TFFbl?0G=AcQR}A`mDVs6ar$fXWgevTsR1gWyONqN0F2 zRKNuUByCX*<-bI<+ndGkrh z`z6uWK0kI6z(9G#!rM093F3DA*23=s#n+zVJdl9ZIHT};g+Ew08$=N2bnvdidkXI> z{88Zpg+D2LsPK`(#|nQ|_>00{75=91_k<|%AF6&5C?06`GaLRhP#nHA`cw`66)3Je zW#)ABZ-xIT{8!{I@xzfQclWx(~lBZ_*wsZ_i zC+Td(*9QWll3E-zeCzHEMB z>6}FsbE_Tf!+r;MW4(j>)a-tR2NX6bJgD%H!e)gn3S058gKY|~!gk%_5rsz;9#hz% zuoE?l9PCo{afK(;`bpKE(lEPK+k+ZQN*$RblLc{e%a;z|{r2nIXKna!U$c zcjQ)?%_B;=gS!xQWDfRQGS`uLQenw$j?Bjq2j4@JV2GQa*4}LhcImu8Z5BGRNESPI zTJu}t$WmG6V6SHU5{|g%gZY8wj;xTCZhm5?yapU{q*AH`NplLuRgJ11v#_eVeA(Oz ztyTa$`%SIhl^w7JVy)J$5q zqGHLyWfi5Xs#mP4uCioP{n?~~xTFUic}TW8_z7OO= zB)yCz!;B=!j3m#DB-M;0+l(aPj3nob+&L|#ka=c;HI2xQ zL>iFYgyHUo8NH(;534H%<7$k69|x#+V_yS)%}#up<$N0vyo3HYLz{PLbr!>L4kPg% zbmR66K8#x&#Iq(&aV&-BxR!vp{&Ax%JRip;(vJ8Hrw`NIPdS!pq`TWQQ__p6}S#_f25v6CCool&l*jr(cVfO)FWq({oU-Dsyus%+hZK{P3$WgU8( z#fqm9_7;2ZLy(ITVs5F@dk<_c>U4U?&2B`GNcTqcr1_{rECTP#-IQI`p`}1PX{;Zv&F#7jxhT9xX}WYjSm zKc(gn(Scc^S4%D@az;j5a!JMH*2`Mn=CT~bU%*IzW?byH*q6N9VsrI~QOKQhB2Aby ze{5(nGr6IxO*)1nmojNU#VxtjF>g`I0j3RwbL4AMn z6yjxfn)pwbzhaS zen(oJebn^0QML%Z)wbt7_?6x#@p8<21g*8z1R^;k>fu&zuKJTrFvuyXmemM?)6uqJxB$3r)g&6)bHLR0w6rZ(fIvQQbdX-1pQ)hx4mGd1=- z+TB8}r_pYu7BSikYCUS3qq;tmx_POgS&TE=#3|=oyINy9hiceU=Tc4b)Ol2sJ+*>r zil^R2HQRX2r?$Xo3#sL(cBy0&k;Yf`27>Ne9ZTBO;CRbJ#E)A}j$S;qo?I@udoTE7 zQ*Ez!;yI@H^rr~TdH22&cBFXv6-RnCVNnwn*EV8-r!LtgY5w84-XOYoFAk`h+k~a3 zu&f!&C+6-#L8PDoD;klia%CgG5IW|6B|CYVndG2~gRm~}kg0q5ZBm_16e~FuicP7% zuJFHdHs{m!vo*&i@=QQ=;D42_hGVN{!X4JREUvl|ARq7UA*w^XK$W z@iTHG6VK!4e2ChuT0Y~d{Q_^W9Qr{oK;i{t$_12I_+==Rdmj9Yzlf>uTlkfQH!c2Z y5DTZzBjC$q$hYX^!*663We7f*ArHvRK!R+RjBT<7S)xBQSbhn@FNxwvyDtDhe$Olb delta 3617 zcmZ`*3tW^{7XP1_VZM)#4;Y34hKGRWg9Z^Zp>|am#RS$(mxR!sf+G1u0Zk*Fv{tf* zrJto@*`_A#>aH3Lk(Ro(TUOg^+fBDxcPrah`^tU0Z0$LBz9I4#{Fwjw-*fLh_nveA z_s)D=e!e{P%4bK90~k-+HN3Cmmj>40tcG8?gIAqoKM;%6__e?X0v~Gl$bf-!()d{5 zHv+#E_?^J-1^yuLiNGHP{v_~cfxig+Rp3*B^RXeuzX|=jJ2+mgrxyH&JLvnO^-me_ zFL$u{r1DAY-va*;xFGOffj)u%8TbsJ>ja&MDLL3lPJ>(&qmx@ans{`LVl^_1IVi$8 zFF+oHYmg*eUSY|x~$7VNfPz$?zfW(wBG2Ux&N&?aS4l zLD`gJ&7hH?)s!oaJwRQ75H$y&kj15kEuu3_f9vW?I$yT=x_7EkeFEHYVFTqbG)L zLz{`USZ5-Hbp+3%x>a?BOX`+27S60+)G)8r#1q(WVgv3pagPkUSKvN@`vo=&JRtC( zz!rh6uuNH8jiG z5}OjJrWz9)(XP?8Ce_kxLVR^yb7Mnm?v$p5OB$L@nnTx_xEq_SH)A(nalMCbNYv;? z58g28CaULjXr75Xu->Hk*soE8Neie^qgzZ`h;9=vp_g!_bvQBAI$#VRwn)Y-Hfaeh zHL+Lrvdp9=T5e*W?Cu1*txt^{_X?Amsl`f-8=BpNBPO-dN~Rio7=t-*1VZj*>@bi1{} z%qduF(mD!hG{dAjxJa~KV1vM&0(a53HQH!WJKaqv;!`f_I&W?zZ4=!?7@KFUk4dwd zeDT(ygm~v_y4O09;HUe$&LkALk~W+40Btq#I^NL8B8=lAjI%0|i|C=Qb;)jWJxmy3 z9rk5g`+fPBt>!lcxC9Qcf|xnL*(l3mQkM0kEZ3T?*D_KvLz|R`b)+myNm*8tvMeZN zSyRfgtdwPCDa+zgmi479OH5f-nX)W2Wm#*=vfPwq#VOk{*Cs4H1*j}* zP+69tvaCd9S&VEULQs}9z}5$nOTyUM)t8b?^rYoUvnG9)yG(Y19QYm%aEov-GK~2l z#Bj}ksez|3p$8LvnA8|XMj+6Qj2@I)@28CpO+F&iF##nA!iguDkL0Hmcn1kMja0mg zF?bKfILl)`;!z)<6d$4t=OBxx@&cuB;rsZ3iZj*T#v$&Dg{#;#MZ;kicd;HBJK24N zhdbF;@HSGccE2ZO3bX7Tk0LJM3L~`>zEQoHVjc7k=Pcjy7ZyhsNAZ_XHBcsFKR3bwUp~*#<_1 z5s-%J;aSnW9Lg-69o+L zoy9w;u9fXr)3S2-yccBUgrZ9Tg?3;ABckbYAPo*VZ#ipz3GL{GY(*F`96jYA6NeJB zTb#60iB;Vcz7x@#@-%ww$t7HB(WF~apO}86f4U(Th;}1}9_!aT53@rEdqxS8a1_TR zm=zq77Lr>OnYou|?i*z0v-}dso}a^Udm96D$h$a)&acdYza9D~JD5oULVUmF$Ocy6 zz*o*bi67dtOL(-r74AT07$Ef^Lu+)o#b#bunL4y6r zuE~!hM`P{I9$3w%dFC^N%zV*42mW&HPierRW?a0BXF1mKL1LY~qgRnmuc;^zrDhMfRxUVvBKV&~ zUw0~C#madf^VYEB{c?}I*YdTh?Zxa`?;K{=DRw>grmNl?nDOgYT^sV=$n;X>yop&r zv74FYwJSQ8sk)ioI*wDX;>=@Te589mQ(uHOFinWi1xynow2`SNLT_Q3p@J@Cwn#D0 zVy2lw?Lt~7a%ZV)A4&XJ{}p{LnlAD=RY{k=sD0#ae=?wA6q)F8$S;hD3>@YB>`0}9 zf&3mU>A}+WFcwAVvJOgiPRfcjLQD5xztF56G@ZoqUaXjr)q#RQK{uMi{N2E|CCtyg zwE5FIH;iQE}~vv z%OQ_K0pj}Lr#_Tx__^1cbpiYz^EqnZ)bNgm(;CizH2mTM+zvm7e3vIV@E+B%^}<0n e(|t789ZL^V+BVw4l8xgIJ~uMqq0) - && (!Robot.pivot_gear.isFwdSwitch()) + // && (!Robot.pivot_gear.isFwdSwitch()) ) Robot.pivot_gear.moveMotor(Constants.GEAR_UP); else if ((gearAngle <0) diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java index 7d9871b..7b354e4 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java @@ -35,7 +35,7 @@ else if (gearAngle<0) else { Robot.intake_gear.stop(); - Robot.pivot_gear.moveMotor(Constants.GEAR_UP); +// Robot.pivot_gear.moveMotor(Constants.GEAR_UP); Robot.led1.send_to_led(Robot.ledAllianceColor); } } @@ -48,7 +48,7 @@ protected boolean isFinished() { // Called once after isFinished returns true protected void end() { Robot.intake_gear.stop(); - Robot.pivot_gear.stop(); +// Robot.pivot_gear.stop(); } protected void interrupted() { diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java index e572cfc..14ff3c3 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java @@ -22,10 +22,7 @@ protected void execute() { } protected boolean isFinished() { - if (Robot.pivot_gear.isRevSwitch()|| isTimedOut()) - return(true); - else - return(false); + return Robot.pivot_gear.isRevSwitch()|| isTimedOut(); } protected void end() { diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Off.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Off.java index c2996f8..35b6c4a 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Off.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Off.java @@ -21,7 +21,7 @@ protected void execute() { } protected boolean isFinished() { - return(false); + return(true); } protected void end() { diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java index e6caf1d..4a8292d 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java @@ -11,18 +11,19 @@ public class Intake_Gear_Out extends Command { public Intake_Gear_Out() { // requires(Robot.intake_gear); - this.setTimeout(1.0); +// this.setTimeout(1.0); } protected void initialize() { - Robot.intake_gear.moveMotor(0.4); + Robot.intake_gear.moveMotor(-.3); } protected void execute() { } protected boolean isFinished() { - return(isTimedOut()); +// return(isTimedOut()); + return false; } protected void end() { diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java new file mode 100644 index 0000000..24e8827 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java @@ -0,0 +1,47 @@ +package org.usfirst.frc.team708.robot.commands.intake_gear; + +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistanceOrTimeOrGear; +import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegrees; + +import edu.wpi.first.wpilibj.command.CommandGroup; +import edu.wpi.first.wpilibj.command.WaitCommand; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; + +public class ReleaseGear extends CommandGroup { + + + private static final double driveStraightSpeed = 0.4; + private static final double driveStraightTime = 2; + + private static final double turnSpeed = -0.4; + private static final double turnDegrees = 90; + + // Called just before this Command runs the first time + protected void initialize() { +// Robot.drivetrain.resetEncoder(); +// Robot.drivetrain.resetEncoder2(); +// Robot.drivetrain.resetGyro(); + + } + + public ReleaseGear() { + +// addParallel(new Intake_Gear_Down()); + addSequential(new Intake_Gear_Out()); + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return false; + } + + // Called once after isFinished returns true + protected void end() { + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + } +} diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java index 0f36b2a..62b5d3a 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java @@ -211,7 +211,7 @@ public void boilerProcessData() { // use the sonar to get the distance from the target (backup plan if camera distance not available) //UPDATE THIS TO FIX DISTANCE - boilerCurrentDistance = Robot.drivetrain.getSonarDistance() - 22; + boilerCurrentDistance = Robot.drivetrain.getSonarDistance(); putBoilerCurrentDistance(boilerCurrentDistance); // if robot sees the target (current X between its min and max) diff --git a/sysProps.xml b/sysProps.xml index 99996522121a86be7f01e8b0dbc009455cba9ffa..14b1e894a85b2050a50b6aa2e40119d94ca3e597 100644 GIT binary patch delta 55 zcmZ2uu+CsZ37?`FgC!6e0+h%qPmiY`|c!d9_d@ FD*!863TprW delta 53 zcmZ2yu*P6R37@ Date: Fri, 10 Mar 2017 12:24:15 -0500 Subject: [PATCH 51/69] auto rewrite --- .../usfirst/frc/team708/robot/Constants.class | Bin 3493 -> 3385 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 6989 -> 6882 bytes .../drivetrain/RotateAndDriveToBoiler.class | Bin 2355 -> 2134 bytes .../drivetrain/RotateAndDriveToGear.class | Bin 2141 -> 2030 bytes .../drivetrain/RotateAndDriveToLift.class | Bin 1971 -> 1860 bytes .../commands/visionProcessor/FindTarget.class | Bin 738 -> 0 bytes .../visionProcessor/GripPipelineGear.class | Bin 5952 -> 0 bytes .../visionProcessor/GripPipelineLift.class | Bin 6578 -> 0 bytes .../GripPipelineLiftGear.class | Bin 8185 -> 7111 bytes .../team708/robot/subsystems/Pivot_Gear.class | Bin 1689 -> 1678 bytes .../team708/robot/subsystems/Shooter.class | Bin 3070 -> 3070 bytes .../robot/subsystems/VisionBoiler.class | Bin 9189 -> 8358 bytes .../robot/subsystems/VisionLiftGear.class | Bin 12820 -> 12627 bytes .../robot/subsystems/VisionProcessor.class | Bin 2439 -> 0 bytes .../frc/team708/robot/AutoConstants.java | 20 +- .../usfirst/frc/team708/robot/Constants.java | 38 +- src/org/usfirst/frc/team708/robot/OI.java | 6 +- src/org/usfirst/frc/team708/robot/Robot.java | 49 +- .../commands/autonomous/OneGearCenter.java | 116 +- .../commands/autonomous/OneGearLeft.java | 53 +- .../robot/commands/autonomous/SixtyBalls.java | 40 +- .../robot/commands/autonomous/TenBalls.java | 53 +- .../drivetrain/RotateAndDriveToBoiler.java | 10 +- .../drivetrain/RotateAndDriveToGear.java | 168 +- .../drivetrain/RotateAndDriveToLift.java | 40 +- .../commands/intake_ball/Intake_Ball_In.java | 7 +- .../intake_ball/ManualIntake_Ball.java | 8 +- .../commands/intake_gear/Intake_Gear_Out.java | 6 +- .../commands/visionProcessor/FindTarget.java | 79 +- .../visionProcessor/GripPipelineGear.java | 374 ++-- .../visionProcessor/GripPipelineLift.java | 120 +- .../visionProcessor/GripPipelineLiftGear.java | 118 +- .../robot/subsystems/VisionBoiler.java | 40 +- .../team708/robot/subsystems/VisionLift.java | 866 +++++----- .../robot/subsystems/VisionLiftGear.java | 1497 +++++++++-------- .../robot/subsystems/VisionLift_orig.java | 425 +++++ .../robot/subsystems/VisionProcessor.java | 359 ++-- sysProps.xml | Bin 6190 -> 6190 bytes 38 files changed, 2436 insertions(+), 2056 deletions(-) delete mode 100644 build/org/usfirst/frc/team708/robot/commands/visionProcessor/FindTarget.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineGear.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.class delete mode 100644 build/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.class create mode 100644 src/org/usfirst/frc/team708/robot/subsystems/VisionLift_orig.java diff --git a/build/org/usfirst/frc/team708/robot/Constants.class b/build/org/usfirst/frc/team708/robot/Constants.class index 44647029d9e5f4c8ed333bf1ae03a2db17892515..d9c2fc2a59568753ac4224a7e425229c348b0ef3 100644 GIT binary patch delta 1019 zcmZA0OHUI~6bJDCopw5;l#PZ(r5oLlxFPZoAJGWfM1w|Cgn)ubPy{21iSiJF6Q8J{ zRmK+riVt*6x*)P(P52Og1-=2{e;e%lGnuw1E|NJBx3mG zVcEm)mC70uXB5F%vr%Yq_82z?lsQ3nY&A&7|E2bx%k?x}?m3@r&*lnocil0?swIDJBVl0Fsg zKY%6%n!^B2(`UrlpexznhYem}{-PATMCZh=}yVp2e=Z+Uln&T-|fqR zYYbc$_tJg1QF^hPbideMcq`%ovE4r?^={L5#6xtDFV7VJs(X^KjocUCrH7^S5qeZE zvW<+1?Zpow=f}kp%uj~)VV~+@7=TYd65IUah@V9KRP1s8Gilg1^jthezrf4gm-QXk zFL+f7IIst%#WVD4@f$iXeoMa-&(eYTJ^exak^c1GL!6G!49rP~wt+9=DfVi>N#nZ6 md8#QIa1XA+tP}_AE7t_WoK}3}nkxQwv4roG!4Iwue(nHu++A4! delta 1052 zcmZA0Nlz3(6bJBs^(+l7+-42}2X2$-VWI-AA(=o&h~UHq)PUL{F}NL#veRl@5LA?M z19t(p8<_*q1K~(G@d@}SjQ^U1?w7t)_wT)W)vqdDf9qE2vs=6W)&Vr(kAnn$+W2MT z_i8q;lI3!FS9hq*WTvZF(Az3g$7j3i`Q63dqUU?=dDrW46&!|3wpFimF0qzMa53ne z#7=Fd)AKtDJ^pF8;Q6J^A_$!<`6rEPmo1rGM(5K>S`v(`c_eOTD0 zj|iK5ld!38MnhQNLLU`AMjsbGL7$9l;gsH}&K`^!C~!hsGy(0jE8H^gGzZc5x|u#J z`YF=qggv@fxR1Ude39-K%MZ|(MBeQ8ax8zPMg)Al;bhN5{aa-F^r^UauV zN$bXa`QSFI?!?--D?G^ju&|jwBDxx-$Hb~;TjRo}tBF|sWaI!-oNzA+RQ`+m!Vj2# zC~VH@QOu8Hej;rCt7*}&Y3OO_z`_gzvv?MsquIf8VN>uzc#eK4{ED6z*7R%PH}qTK zcl7%`Px2-#FtE56pg+(b!wxN&20jVTuvG=#GLBz)m+}<@sRL_JtCh?3jboZ&pbFnP R)>Ph8Si&-;u)@*8kN?`mZ!Z7< diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index e6dd288ef5d27ac321cf0b9380e3f6a4c8de2ddc..48ec03597e93d80e42f6a458df34554c268d5a89 100644 GIT binary patch delta 2334 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 diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.class index 6b8937c79187254ca3114bccc42bd5d3abaa64bb..7b8cccb9eb9d07b8cae5819bdceabc9b4925a337 100644 GIT binary patch delta 880 zcmYLH$x;(h6g@qJPMVh(YC~?zP14c;m;vjqd=CqH3cLha)(GQJc%6 zz%ha20w)Ac3Y-!+EpR4+UYr$nPS|;=E!h~u1=$<7a8crfz$H1mY~hNHtC*CWYc@-+ zTOr)AaC7zZgf^Q-&cc*J8PgVSDcnXz;STO9+!L4)sNlZBtQN5=p$0h5>{rdTL<6?cXhg$*-9V@?=*$&3<9vd9HC3ryFT zHbeu%h3SWoAG-WtF~nSi19RuSm6;JMc~-iJ_`zOBx6jl%qAlL+ zE24b6>APi9`;V2ZbhPtr?K}!W$2AT>IxcwH@vYjYF9?}UZwp6WRC9}D1bga7~l delta 1095 zcmYjP+fvg|6kSPL0`U-_2#$crO`$END&P%8l%j~p#bT=nN=ge9p+J&?_|g|Yz?nYb zoA0~;5*;4=06)NA@Gl(qPD^nzS$plAbJp5>pZu;q^5uU0J^2Zs4<9vLLSH%hHQdCl z3f#sW4NbVKVF33S?lTNBJYX1Nc*yXGVYq@eN0^N;d&~k)G>qaYe;ZTrjN>@Nb6%TJ zF{xq7hiTsQf~}$|W>ma9_%tHrS`m~`7oC}$3R(8XW{Y9BB-55{WEN8@VghlzQt?_~ z7HN z%(u&-N)tT-7K4p!eqQdb-4@uv2Z3Fdy2d4r<`?AV{E0j>*PBXa!#kVl@KV~eY-Vfe z#A?`DH%vQeSSyJQ!%T*woJLMl2^E`Jdm_7@NSPAqyT(_IZ6my9WR}BG+e~Mc2O|Di z3GJ>)NSV^h&D2&lZKf;<-Cg7PKXP+bG@Gz?EjzV7;Eze@&o6lW`HUitj+8Dr*F<*; z$n;RBE~DNlmO(-*+6dbz%RqsbVpHHdq|Py)?Ee8J9yo-@ftRq;LD_+Ox`VKRP6Lhb z(3O>uekINGJn1yz3O%4qA#B1`bjFAK}L!LwGhe+ zp`s8p3c7=H#Uk=w$}Y#*N)%4A6=fcDmsFE(i$I|XQ3#dC&o{2sVWDxHPYv=@Ot*$tZol=E~(#xIK&0j!9~x$vQOI; zoK0_#N*{ubVVYKiiXWlDjJng~mU5(B^bNax$$A5IM?YM#f}vssI`!b7fefhw?d*zl z_X;Ly22*rB({=hm(+SmmHY7q95k{>NOnur$OVXzbNoLAZ&5+Q4O*4a`w#v& BrXm0U diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.class index 8c10b77845ad12b720a87266d798f0326c40688e..df1db93ef46cc4635eefc2e45618b5bac549b785 100644 GIT binary patch delta 960 zcmYjPOHUJF6g|_KcIfo$Kn)KS#I~qFDOD^A_y80sJ^)ehh0m&06pamK-=Cn#tZ--I zk_|-0#D&JKKf&l3I1$BOoRsX8WT&NfJo4o?>G-oSfl0YMW8$pDDS>lRG;N`P z87Vj)v)FmT#6=UAwqB>S<^4#Sm{pj=yot*S3%H_iRbWwI3D*>^;M4r(VBrydWX|z$Siy}P~=tpmZbS9AQ4Ww5*FF?+t zjmiWrs@4u-eyVm5--g|a=FA7gR|zprn5fIQBTV@$X$H}P99K5PEZ-oT3uOB^kiW7D zcOxqs^z?Qmv^Vb%Ha5Le>qZsI%i7*b((a;TLvHm=cIdPS_^Kn^=@?CqlXrrDc%eac zu%?<}bp(c;XwtZIK8o4|leGzKx^uCcdh`|XeU(MRrW7#C<~hVM-#~2#hOz-&{SCO- XQ{RsN1{SHj)Ibof5op|$Jg?k;X{dGU delta 1025 zcmYjQJ5v*36g``4vSImHo`OV-MnNIrrQxCSjDYg;!9!Gh291CS(QGKJ(pxc;3TG_r zEYhG7XDqb$Cpcqo<=EOdp1X+&$;`R;e&4s}oO}1%UzIEc&re|6Aj_aupWp+w^NC+#Fm|kZKZ65RfH7Q1lIA? zz=pyzDK-VRgti^Q%$#dC)1^;XzGVEx_IfgIYiMts&Af31)WY_P{nAdwHwW65KKyiP zTIP?tPm540l6j|pPgkzSW63FdGG;HvlB@BQ2Hj32o+HSvn>Z;K|Fr64G|%XT2F`$Z zg4GoFHOAV|CupJfaOL1;&>8lehfWe}pc5O2jVOnobrYJo!udJRq6Mc|>Ns8GU4h%- zZ6=pH2TwkD^TEgmAA^-cSxLwbZ>HPZkZvi^3wv{sy|u``=5zsck|75(Z@7FPDxX#C z!(uCSs0@9CwLwtyP+iighlk7|vV>8^SKvn%I(T{VO=)Rvb{1vZcrZV#ox-r9j%-b} zw(}MqJ?m6;yHHMY=(QyEIW+7Z+@v8|Je`|vFwL%KP=VP4)K;e%*YYPXEvr$vHj4L*-DqO>Lg&C1qksG+Fa0|B;?jWZyCo+$_3O(4buprq! z$?jp%#(jkcSWNZx3Qt7pvhN6T8m2$!IlrO5_Lq!*Zf3QyR%_H(ChIR6 zD|LU-toXn5DgV9s)-zYvUcN$}$L(fII{)N^8Oe+(XyDnY2e}$!)EKSe7igPdSufS$ zHqgRkX`Y#iiqMBcT$w1u2G3!H?}}T{jR1xhMKcOk6jBUs0GlDejs%l~O}jj`4=$~< zH10t^vjH|e*n%#`=>8bJ9QFc~Lff>QAb{s=qb*9+HZogqJJDYJjLb7i8&BAg;JaWE zKSY}nc4C-=8s)0of-S|^!#q+nvSrRjMpg)UyE?RYA7Pmr;i_}pgBxbqb$MuPu+Ts+ zHG)+*%5nBO!Dm&P*IHnOCTx(^CI_~g%Byc;t4%EJIm#|V*i0&E#w7=sX|S7FWcd9h i_vXf36l1&O;sfkST%wDgBYD2Xz-k(3I7)_&WB&o-foRhJ delta 989 zcmZWo%Tg0T6g@qU3=GXg2=a&+9wL(P5CJiYD4-w+C?<%CPtc&0S}F+(SFy^{wW(RL zbk7EnSmi=DuH5+v_yvA}<>|?gP~}Y3xwmikoO92uo*&M3F#GfG*KYs@uwo;Oo^l*V zuZ;$rP+6aieher$sbEmSDFtx_rxlzj=iwohomJUz;QJra@v(6Z=T&{g!l;U43N9$P zsP@K{%0$4zB@2^VZ(77+1WgvEBraoGVg|DkS8&zBoWwOGB$5i|6N( zMckG+j7Et&Dm#Qm3wI^%;l9KJED3bxb|Y?s77Q<=L*k)=M+#Ev>lm5@CUUzI?ptln ztvAM&`J%0vCnXx5+r-5 zD(Te1By%TOx^Mv9wAD-O+f&VQv!^I~3?2Tk-uc6dd$QG4;=@On#-_Kb*-)D7=HSNv zwOZEnO?{KRx;N1XEaropU>pvH(agKqic$U%W2|P!_d4OBxZg;Wxe46~g*a&5AHSy& zzb9olk2?0MTeb5wtlh-O2UlgQD0)QsRAUZoZQD?`V73X I+||(i50a69{Qv*} diff --git a/build/org/usfirst/frc/team708/robot/commands/visionProcessor/FindTarget.class b/build/org/usfirst/frc/team708/robot/commands/visionProcessor/FindTarget.class deleted file mode 100644 index 9576cb6062951852365a896f0a615050583cfb68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 738 zcmbtQyGlbr5IvixUZc?%Ei42P!56Nepr8m6unHn57IvF^R~$J4JP^~ssYE2WX_NB5E^6z57-;xt(G>yHHnY$+Iyu7xt^jdZHw)dqqE#qZuIvtfJ zPTrFvlb%@fUUw>s&Gyke_UjwdMf z+S;t^!%uW>G8^j?3Sz6jgSYO~y{e#qqQLRLWeTk5B$E$alKo{lYE$d(XGPiQuZkt) z_{!mxz*j|)ZHcoT_JVzJ{T1ScgB;3iBlf@~H%?=Wqe{OCfdd0j z9|DR2ureCB@F#E*Q#>|E-eeyLa{1?AdwTnni$loVfU-K8a(M{&t95!baP<$Mz)Vk9 F?F-aPeG~uy diff --git a/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineGear.class b/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineGear.class deleted file mode 100644 index 0cde728eed92f2e4c6a2091491297ac6da37d479..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5952 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 bnZQ~Z3j*@yls}9E3uue;NO^=f2ao;_pZn}$ diff --git a/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.class b/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.class deleted file mode 100644 index 19df1c9520f79609858fdf583e72ca228a49b791..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6578 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 Ro@k;jn#uWR^2_j}{{QWQV^DxM!Z zC#p9Px1eyWtVCL3nI?FvUU8RHrheoOzRk)XBQ+?|%k7YHr_m*GKFmesOah0DU?OZD zp-EKN#Jlu`@_*fI$@Y4}ft>7}5Bt+$o{ah-Nk8|5p%`E=WNyTV51LaZTBdYGtRYd1 z;{;Vp8*b2~w2Uh`1i5b{zT>A(zM$Q&xUo~I##*cwT111JqU~0+jgja|f8yEDOk<5{ z`+P0jt2Gq&ukTfsN!CRwXpemSpyOThcnzg8zPxhtfT_rZ!vo%-6o#KWGdtIv+#zHgk!3+ZzLZ5&|SFdNkUH%w(gE2aI6gxU=S)%jtT_{H)9C8xCwGW!8z+Pj%|8y&-cLODm%O_TBaPgN4TSR~+1^#E zEpDea$%ITY+2H**h~nw(9t%>*_R*BdB%Pdc|I`0FDG)N-Kx#^cb7Wg~{dpGUw4IFl J0(?`<-TU1#-362Y delta 15 Xcmew-{!e_vb1o+K3!7hZi82BJJE{g@ diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class index 66898544ebdb426f033223c7e95e2ba11092d2fd..5d761c0b0fe407db7e0044015debd1581b4e5e98 100644 GIT binary patch delta 2928 zcmZ`)2|!d;6g~GdGk@m$*asK{0WHdg5JFJf0L?8}Sj04Sz8 zCLZ_V2@A*KNfS?b$`9Pge!zz+JT35yz_TWvvtVJ944xNwLEuG!%>pk8ye#mFz^ejV z1YQ$(UEmFYHwCu(LX2;T`L?ILSg)rSe8*Gn|7Y~B1ia@dZ``PTGJ0R&1Az|(J`(s? z;1dg<;xjL{dGWcJUx@Qd3twTo7hj9#8}WQ=;yV*Ntiw@)O-Wq#7YoJsRi=Iu>vtcz z@rQ*T{Asc8FB3a0loBi=GB}E2JY~_T^zz115Zsz!}ME#@lJVJ;zILCvW(1q*8y%`Z6YxCM2!O$wLe z3WeiQuW*utoh;BOuvnl;;1q#V1x^z<9cL(bFo;LpvI&uMcI^NU+qf?4yO?c3vr@JyC~X~atX21Y8vO)HRVibs9#vu zsAxCZU11R#?3aDZ#*R#&J>pFYCLp3Hj|#XQDpZ(<`HJ?!6($ua8coF}l_(m67KMAz zN*HIajZd{#Te~h8D>35~?M?eATq=9nSJ8g7zrtm*yW7!17%nR}*5%BtpEs|rv2Iaq zT~7U?oXLyFH%+Wx+*HG3lS&npQMsb=G{K|;6iq~%!f{-J4#f3}4x$SCWR;yWNzr7Q zVp4{pgZT*P5P?GlD&=-c_}WUsKd5WSJd6$}6ppmdb*I@4{#d&sE;go$rrM9j1?b4| z*0^@VZcE&eY|=DE)9Dz6PDD(aK`7$hitI_rB{VDCoa`ajY(lQR)}Lj!`}0Co{5Au- zzyJ$_Ekib`nKh!BWulpnkU2?|p~nkwf@Z!O&3przSu~niH=0>Gnpr)XSwNauLtt$f zq9g5KDQRXkX=XubW=&~kS!rfvX=ZV0W_@X9iD_n)X=a^iW~pgrwP|L-X=cqKUpi*p zX$MP>8FKBK`No<3AbBMimxg;%l8Kht32Ao5l{}@`2{LdMuI3TpnrN84A#Dan1p;}+ z5|zqJ>{uGW6~>Ro6SQP59_S}R(o`t1{FKCmfLX|>E?~mBzsiG63*$! zC>z_GlZdH(t2XpoRl(hZvY3F&S@tYv-?^FPTwz{jcBr=kP~hZQ$n9N~doW?hzGcrh zMU&ZCz$0nU9qdHP8a50pWAuoVRzPa%1BctGNw^uUJiC-6m= zF@sv+rdxCgxeX~AJq)pK(FaSo6}L$-yL?z$NEVJ}uHwwLK{8jeqGZpj(B^ETe-9%E z_Hf7l_Q0Q%zGQ%W4}jO5{I6oE1B->ZSmz+c?sm>(b@XcN)~x=gxsEf}50bgYxd;9t_qEjTQil%Q z#lu`{!yvWpb!v4;OO=j7`khbOz+#Vcu_p#8w$^FsK1b*0Wfy3Hq_Pr0Ps5~Vpy*ln z>3O8ni@HiwsacN9v^YxSb`mK?n7;t>;x;4O-aMij8nfLPY0?A|#0Y)tl5{5uX07XbxWT_Zg!mh|nG9-f`6K5u2)d5sc z+<>QTp;jp%+9HC4gtbVub-`kbxUYcKw%Xdw)|OKBocksVd?d?%&OP^@|DJR1z31&5 z{pp10iEj=c15iSbXn0S@`v#Wa0}UTK%db1mb|4W=_(H0Uf@%K z&jkJ;@JE3^34AW_g}|Q${vzk`Oo|yW`xUWwAWRR~@f1L_+D%5F!P9B{G>Qp2%gLE3KQ?X7% zbSlxQRHvaj4U>I`>vXk&Qo6>V5p=D}a! zu@uWptiVbWw_~NXRnLfS#|{&#u-e2uV!l^ky}*3}_X|8A@Swm$0voW=#3lht;9;SB zMBoPkKNR?pz-ECh0zVdbR2Kh4w8w;a~++%`)I)BKdSv1?kTC5}Vw?-S8)*wfk^;Dv- zWKIgr?XJ@)Fev|6K#k_m3IPW3hQkG8i2Wn~~g!E3aR0i9#;EWpr z4gR`7y?=UOIVZdv%T&VQNPe)v?TxsrW92j{LX8?VnY08)O zVbV&vU8Bh+-NE;Yq5`V~Rtv15J2kq?q`PTt^A$-aC~h6yV|{6s<~7m1T)?Ve!?G!{ zNN#M5G&DxS8r|1imb}w(rNN^y!C;-=%caiDpS;N1?dUBUv_Q(nHt@1(gU=?#BXp?qm6{(*ey@CDqK#hyj!A`n_5a%^ORI4#Xn5wW1ULv zX)SRLh&J(;0JsVcdG)M0q{>Qi15lECfRg+uSh}PQsPP)ysU$xj-K^>~t} zOg4fXcnUw`5#i_dGHXM|9A5Q#Mq!Dp%H%CZARfE$w5&&YZ2fN56A@n=KSskd@jS)P zi17()Ql_|X&nz0+=AMcI?B!_0ePSo~B*b4ppSYCs(1hSw>=S}!J!^u5IVC&XvyA~X zH0I}^k{H)+>r8fz)@(a%%2~xOt8>bRwYj8XYWt?aPMexYxPY>_?D*KO+=o=yU+0uF z!|>eR(KZI4DCTFNPur%Pf(D0#Eg^G*6K6ISv6TE03ic!8X;vKA$>+~C=XXRMwM(#v!`|CP*vI)LNb!Gp`4VJykl9?#%(cG@uIE(=2rsmqjTOqv zP&Kf953ui{E_{C#I|}~FwkOr;Tyrmt<0x|->w@dW7}raZQ-!)=7gZ?hQnKfn?1e7K zUXCU8O6;mv_AF8x>m^RB*Sl{SZGbJXly)<%mKb&jQ8cWm~d6?PE3FR;yU;W~^L#&{Wu$Df?MmmE> z=`42AIqaoRaF{;pRK_FiZ~oO-@%Up@$d!}oQAY&!Q~9EkC)u7U4*59Rx5_bryRjTx zc|l<-7PaEmbuFm1)w(T|7B@04X5WULqUE(>@p052M6e=n3p@p${b-1`AXSvxTHsO! z)Gdtg=$<#A?taQL_3Aoxsvkz@*wE~vgraQXgKY1 z<(&urC47q+h|}$o Pw)4{=196l@CMACdhI0}Z diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionLiftGear.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionLiftGear.class index 44113399a263ce7c421713e1b1ca60a97ad553f1..9259eee7a519d961a1700a85216c4df24f597689 100644 GIT binary patch literal 12627 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 literal 12820 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 AutoConstants.SWEEP3_MAX){ - - return true; - } - //Check if the sonar distance is less then the target Distance, end -// if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.wasCentered()){ -// if (Robot.visionProcessor.isAtY() && Robot.visionProcessor.wasCentered()){ - if ((Robot.visionLiftGear.gearIsAtDistance() && Robot.visionLiftGear.gearIsCentered()) || Robot.intake_gear.hasGear()) { - return true; - } -// else if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.isHasTarget()) { - else if (Robot.visionLiftGear.gearIsAtDistance() && Robot.visionLiftGear.gearIsHasTarget()) { - return false; - } - - return false; - - } - - // Called once after isFinished returns true - protected void end() { - Robot.drivetrain.stop(); - Robot.visionLiftGear.putGearCounter(0); - } - - // Called when another command which requires one or more of the same - // subsystems is scheduled to run - protected void interrupted() { - end(); - } -} +//package org.usfirst.frc.team708.robot.commands.drivetrain; +// +//import org.usfirst.frc.team708.robot.AutoConstants; +//import org.usfirst.frc.team708.robot.Robot; +//import edu.wpi.first.wpilibj.command.Command; +// +// +// +///** +// *RotateAndDriveToGear +// * this command will utilize the vision data to drive the robot to the center of the gear +// * and stop when it is at the gear stop at target distance +// */ +//public class RotateAndDriveToGear extends Command { +// +// private double moveSpeed; +// private double rotate; +// /** +// * Constructor +// * @param targetDistance - the distance to stop in front of the target +// */ +//// VIET ARE WE STILL USING THE TARGET DISTANCE HERE - I THINK WE ARE ACTUALLY CALCULATING IT IN THE SUBSYSTEM +// public RotateAndDriveToGear() { +// // Use requires() here to declare subsystem dependencies +//// requires(Robot.drivetrain); +//// requires(Robot.visionLiftGear); +// +// } +// +// // Called just before this Command runs the first time +// protected void initialize() { +// Robot.visionLiftGear.putGearIsCentered(false); +// Robot.visionLiftGear.putGearHasTarget(false); +// Robot.visionLiftGear.putGearAtDistance(false); +// Robot.visionLiftGear.putGearCounter(0); +// Robot.visionLiftGear.putGearCurrentCenter(0); +// +// Robot.visionLiftGear.setGearCamera(); +// } +// +// // Called repeatedly when this Command is scheduled to run +// protected void execute() { +// +// Robot.visionLiftGear.gearProcessData(); +// rotate = Robot.visionLiftGear.gearGetRotate(); +// moveSpeed = Robot.visionLiftGear.gearGetMove(); // was + made - +// +// +// Robot.drivetrain.haloDrive(-1 * moveSpeed, rotate, false); +// +// } +// +// // Make this return true when this Command no longer needs to run execute() +// protected boolean isFinished() { +// if (Robot.visionLiftGear.getGearCounter() >= AutoConstants.SWEEP3_MAX){ +// +// return true; +// } +// //Check if the sonar distance is less then the target Distance, end +//// if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.wasCentered()){ +//// if (Robot.visionProcessor.isAtY() && Robot.visionProcessor.wasCentered()){ +// else if ((Robot.visionLiftGear.gearIsAtDistance() && Robot.visionLiftGear.gearIsCentered()) || Robot.intake_gear.hasGear()) { +// return true; +// } +//// else if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.isHasTarget()) { +//// else if (Robot.visionLiftGear.gearIsAtDistance() && Robot.visionLiftGear.gearIsHasTarget()) { +//// return false; +//// } +// else +// return false; +// +// } +// +// // Called once after isFinished returns true +// protected void end() { +// Robot.drivetrain.stop(); +// Robot.visionLiftGear.putGearCounter(0); +// } +// +// // Called when another command which requires one or more of the same +// // subsystems is scheduled to run +// protected void interrupted() { +// end(); +// } +//} diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java index 5f93f22..2f779f9 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java @@ -22,27 +22,29 @@ public class RotateAndDriveToLift extends Command { // VIET ARE WE STILL USING THE TARGET DISTANCE HERE - I THINK WE ARE ACTUALLY CALCULATING IT IN THE SUBSYSTEM // Mreh mreh mreh, I'm Mrs. P, I want to delete the targetDistance, mreh mreh mreh. public RotateAndDriveToLift() { - // Use requires() here to declare subsystem dependencies - requires(Robot.drivetrain); - requires(Robot.visionLiftGear); + + // requires(Robot.drivetrain); +// requires(Robot.visionLiftGear); } // Called just before this Command runs the first time protected void initialize() { - Robot.visionLiftGear.putLiftIsCentered(false); - Robot.visionLiftGear.putLiftHasTarget(false); - Robot.visionLiftGear.putLiftAtDistance(false); - Robot.visionLiftGear.putLiftCounter(0); - Robot.visionLiftGear.putLiftCurrentCenter(0); + Robot.visionLift.putLiftIsCentered(false); + Robot.visionLift.putLiftHasTarget(false); + Robot.visionLift.putLiftAtDistance(false); + Robot.visionLift.putLiftCounter(0); + Robot.visionLift.putLiftCurrentCenter(0); + +// Robot.visionLift.setLiftCamera(); } // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.visionLiftGear.liftProcessData(); - rotate = Robot.visionLiftGear.liftGetRotate(); - moveSpeed = Robot.visionLiftGear.liftGetMove(); + Robot.visionLift.liftProcessData(); + rotate = Robot.visionLift.liftGetRotate(); + moveSpeed = Robot.visionLift.liftGetMove(); Robot.drivetrain.haloDrive(-1 * moveSpeed, rotate, false); @@ -51,29 +53,29 @@ protected void execute() { // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { - if (Robot.visionLiftGear.getLiftCounter() >= AutoConstants.SWEEP3_MAX){ + if (Robot.visionLift.getLiftCounter() >= AutoConstants.SWEEP3_MAX){ return true; } //Check if the sonar distance is less then the target Distance, end // if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.wasCentered()){ // if (Robot.visionProcessor.isAtY() && Robot.visionProcessor.wasCentered()){ - if (Robot.visionLiftGear.liftIsAtDistance() && Robot.visionLiftGear.liftIsCentered()){ + else if (Robot.visionLift.liftIsAtDistance() && Robot.visionLift.liftIsCentered()){ return true; } // else if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.isHasTarget()) { - else if (Robot.visionLiftGear.liftIsAtDistance() && Robot.visionLiftGear.liftIsHasTarget()) { - return false; - } - - return false; +// else if (Robot.visionLiftGear.liftIsAtDistance() && Robot.visionLiftGear.liftIsHasTarget()) { +// return false; +// } + else + return false; } // Called once after isFinished returns true protected void end() { Robot.drivetrain.stop(); - Robot.visionLiftGear.putLiftCounter(0); + Robot.visionLift.putLiftCounter(0); } // Called when another command which requires one or more of the same diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_In.java b/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_In.java index da43669..5cd41c7 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_In.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_In.java @@ -7,8 +7,11 @@ public class Intake_Ball_In extends Command { - public Intake_Ball_In() { + private double maxTime; + + public Intake_Ball_In(double maxTime) { // requires(Robot.intake_ball); + this.setTimeout(maxTime); } protected void initialize() { @@ -19,7 +22,7 @@ protected void execute() { } protected boolean isFinished() { - return(false); + return(isTimedOut()); } protected void end() { diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java b/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java index 596b44f..9caf5d0 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.java @@ -9,6 +9,8 @@ public class ManualIntake_Ball extends Command { + private boolean isdone = false; + public ManualIntake_Ball() { } @@ -22,20 +24,24 @@ protected void execute() { if (R_Shoulderpressed == true){ Robot.intake_ball.moveMotor(Constants.INTAKE_FORWARD); + isdone = false; } else if (OI.driverGamepad.getAxis(Gamepad.shoulderAxisRight) >= Constants.AXIS_DEAD_ZONE){ Robot.intake_ball.moveMotor(Constants.INTAKE_REVERSE); + isdone = false; } else { Robot.intake_ball.moveMotor(Constants.INTAKE_OFF); + isdone = true; } } // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { - return(false); + return(false || isdone); +// return(false); } // Called once after isFinished returns true diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java index 4a8292d..3ae8b0c 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java @@ -11,7 +11,7 @@ public class Intake_Gear_Out extends Command { public Intake_Gear_Out() { // requires(Robot.intake_gear); -// this.setTimeout(1.0); + this.setTimeout(.5); } protected void initialize() { @@ -22,8 +22,8 @@ protected void execute() { } protected boolean isFinished() { -// return(isTimedOut()); - return false; + return(isTimedOut()); +// return false; } protected void end() { diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/FindTarget.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/FindTarget.java index 70f87cd..79ac4fe 100644 --- a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/FindTarget.java +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/FindTarget.java @@ -1,41 +1,40 @@ -package org.usfirst.frc.team708.robot.commands.visionProcessor; - -import org.usfirst.frc.team708.robot.Robot; - - -import edu.wpi.first.wpilibj.command.Command; - -/** - * - */ -public class FindTarget extends Command { - - public FindTarget() { - // Use requires() here to declare subsystem dependencies -// requires(Robot.visionProcessor); - } - - // Called just before this Command runs the first time - protected void initialize() { - } - - // Called repeatedly when this Command is scheduled to run - protected void execute() { +//package org.usfirst.frc.team708.robot.commands.visionProcessor; +// +//import org.usfirst.frc.team708.robot.Robot; +// +// +//import edu.wpi.first.wpilibj.command.Command; +// +///** +// * +// */ +//public class FindTarget extends Command { +// +// public FindTarget() { +//// requires(Robot.visionProcessor); +// } +// +// // Called just before this Command runs the first time +// protected void initialize() { +// } +// +// // Called repeatedly when this Command is scheduled to run +// protected void execute() { // Robot.visionProcessor.processData(); - // Robot.drivetrain.haloDrive(Robot.visionProcessor.getMove(0.5), Robot.visionProcessor.getRotate()); - } - - // Make this return true when this Command no longer needs to run execute() - protected boolean isFinished() { - return false; - } - - // Called once after isFinished returns true - protected void end() { - } - - // Called when another command which requires one or more of the same - // subsystems is scheduled to run - protected void interrupted() { - } -} +// Robot.drivetrain.haloDrive(Robot.visionProcessor.getMove(), Robot.visionProcessor.getRotate()); +// } +// +// // Make this return true when this Command no longer needs to run execute() +// protected boolean isFinished() { +// return(Robot.visionProcessor.isCentered() && Robot.visionProcessor.isAtY()); +// } +// +// // Called once after isFinished returns true +// protected void end() { +// } +// +// // Called when another command which requires one or more of the same +// // subsystems is scheduled to run +// protected void interrupted() { +// } +//} diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineGear.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineGear.java index 2a919af..4d61151 100644 --- a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineGear.java +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineGear.java @@ -1,187 +1,187 @@ -package org.usfirst.frc.team708.robot.commands.visionProcessor; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; -import java.util.HashMap; - -import edu.wpi.first.wpilibj.vision.VisionPipeline; - -import org.opencv.core.*; -import org.opencv.core.Core.*; -import org.opencv.features2d.FeatureDetector; -import org.opencv.imgcodecs.Imgcodecs; -import org.opencv.imgproc.*; -import org.opencv.objdetect.*; - -/** -* GripPipelineLift class. -* -*

      An OpenCV pipeline generated by GRIP. -* -* @author GRIP -*/ -public class GripPipelineGear implements VisionPipeline { - - //Outputs - private Mat hslThresholdOutput = new Mat(); - private ArrayList findContoursOutput = new ArrayList(); - private ArrayList filterContoursOutput = new ArrayList(); - - static { - System.loadLibrary(Core.NATIVE_LIBRARY_NAME); - } - - /** - * This is the primary method that runs the entire pipeline and updates the outputs. - */ - @Override public void process(Mat source0) { - // Step HSL_Threshold0: - Mat hslThresholdInput = source0; - double[] hslThresholdHue = {87.41007194244604, 180.0}; - double[] hslThresholdSaturation = {179.10669303814598, 255.0}; - double[] hslThresholdLuminance = {91.72661870503596, 255.0}; - hslThreshold(hslThresholdInput, hslThresholdHue, hslThresholdSaturation, hslThresholdLuminance, hslThresholdOutput); - - // Step Find_Contours0: - Mat findContoursInput = hslThresholdOutput; - boolean findContoursExternalOnly = false; - findContours(findContoursInput, findContoursExternalOnly, findContoursOutput); - - // Step Filter_Contours0: - ArrayList filterContoursContours = findContoursOutput; - double filterContoursMinArea = 200.0; - double filterContoursMinPerimeter = 50.0; - double filterContoursMinWidth = 10.0; - double filterContoursMaxWidth = 60.0; - double filterContoursMinHeight = 11.0; - double filterContoursMaxHeight = 80.0; - double[] filterContoursSolidity = {0, 100}; - double filterContoursMaxVertices = 1000000; - double filterContoursMinVertices = 0; - double filterContoursMinRatio = 0; - double filterContoursMaxRatio = 1000; - filterContours(filterContoursContours, filterContoursMinArea, filterContoursMinPerimeter, filterContoursMinWidth, filterContoursMaxWidth, filterContoursMinHeight, filterContoursMaxHeight, filterContoursSolidity, filterContoursMaxVertices, filterContoursMinVertices, filterContoursMinRatio, filterContoursMaxRatio, filterContoursOutput); - - } - - /** - * This method is a generated getter for the output of a HSL_Threshold. - * @return Mat output from HSL_Threshold. - */ - public Mat hslThresholdOutput() { - return hslThresholdOutput; - } - - /** - * This method is a generated getter for the output of a Find_Contours. - * @return ArrayList output from Find_Contours. - */ - public ArrayList findContoursOutput() { - return findContoursOutput; - } - - /** - * This method is a generated getter for the output of a Filter_Contours. - * @return ArrayList output from Filter_Contours. - */ - public ArrayList filterContoursOutput() { - return filterContoursOutput; - } - - - /** - * Segment an image based on hue, saturation, and luminance ranges. - * @param input The image on which to perform the HSL threshold. - * @param hue The min and max hue - * @param sat The min and max saturation - * @param lum The min and max luminance - * @param output The image in which to store the output. - */ - private void hslThreshold(Mat input, double[] hue, double[] sat, double[] lum, - Mat out) { - Imgproc.cvtColor(input, out, Imgproc.COLOR_BGR2HLS); - Core.inRange(out, new Scalar(hue[0], lum[0], sat[0]), - new Scalar(hue[1], lum[1], sat[1]), out); - } - - /** - * Sets the values of pixels in a binary image to their distance to the nearest black pixel. - * @param input The image on which to perform the Distance Transform. - * @param type The Transform. - * @param maskSize the size of the mask. - * @param output The image in which to store the output. - */ - private void findContours(Mat input, boolean externalOnly, - List contours) { - Mat hierarchy = new Mat(); - contours.clear(); - int mode; - if (externalOnly) { - mode = Imgproc.RETR_EXTERNAL; - } - else { - mode = Imgproc.RETR_LIST; - } - int method = Imgproc.CHAIN_APPROX_SIMPLE; - Imgproc.findContours(input, contours, hierarchy, mode, method); - } - - - /** - * Filters out contours that do not meet certain criteria. - * @param inputContours is the input list of contours - * @param output is the the output list of contours - * @param minArea is the minimum area of a contour that will be kept - * @param minPerimeter is the minimum perimeter of a contour that will be kept - * @param minWidth minimum width of a contour - * @param maxWidth maximum width - * @param minHeight minimum height - * @param maxHeight maximimum height - * @param Solidity the minimum and maximum solidity of a contour - * @param minVertexCount minimum vertex Count of the contours - * @param maxVertexCount maximum vertex Count - * @param minRatio minimum ratio of width to height - * @param maxRatio maximum ratio of width to height - */ - private void filterContours(List inputContours, double minArea, - double minPerimeter, double minWidth, double maxWidth, double minHeight, double - maxHeight, double[] solidity, double maxVertexCount, double minVertexCount, double - minRatio, double maxRatio, List output) { - final MatOfInt hull = new MatOfInt(); - output.clear(); - //operation - for (int i = 0; i < inputContours.size(); i++) { - final MatOfPoint contour = inputContours.get(i); - final Rect bb = Imgproc.boundingRect(contour); - if (bb.width < minWidth || bb.width > maxWidth) continue; - if (bb.height < minHeight || bb.height > maxHeight) continue; - final double area = Imgproc.contourArea(contour); - if (area < minArea) continue; - if (Imgproc.arcLength(new MatOfPoint2f(contour.toArray()), true) < minPerimeter) continue; - Imgproc.convexHull(contour, hull); - MatOfPoint mopHull = new MatOfPoint(); - mopHull.create((int) hull.size().height, 1, CvType.CV_32SC2); - for (int j = 0; j < hull.size().height; j++) { - int index = (int)hull.get(j, 0)[0]; - double[] point = new double[] { contour.get(index, 0)[0], contour.get(index, 0)[1]}; - mopHull.put(j, 0, point); - } - final double solid = 100 * area / Imgproc.contourArea(mopHull); - if (solid < solidity[0] || solid > solidity[1]) continue; - if (contour.rows() < minVertexCount || contour.rows() > maxVertexCount) continue; - final double ratio = bb.width / (double)bb.height; - if (ratio < minRatio || ratio > maxRatio) continue; - output.add(contour); - } - } - - - - -} - +//package org.usfirst.frc.team708.robot.commands.visionProcessor; +// +//import java.io.File; +//import java.io.FileWriter; +//import java.io.IOException; +//import java.util.ArrayList; +//import java.util.List; +//import java.util.Map; +//import java.util.stream.Collectors; +//import java.util.HashMap; +// +//import edu.wpi.first.wpilibj.vision.VisionPipeline; +// +//import org.opencv.core.*; +//import org.opencv.core.Core.*; +//import org.opencv.features2d.FeatureDetector; +//import org.opencv.imgcodecs.Imgcodecs; +//import org.opencv.imgproc.*; +//import org.opencv.objdetect.*; +// +///** +//* GripPipelineLift class. +//* +//*

      An OpenCV pipeline generated by GRIP. +//* +//* @author GRIP +//*/ +//public class GripPipelineGear implements VisionPipeline { +// +// //Outputs +// private Mat hslThresholdOutput = new Mat(); +// private ArrayList findContoursOutput = new ArrayList(); +// private ArrayList filterContoursOutput = new ArrayList(); +// +// static { +// System.loadLibrary(Core.NATIVE_LIBRARY_NAME); +// } +// +// /** +// * This is the primary method that runs the entire pipeline and updates the outputs. +// */ +// @Override public void process(Mat source0) { +// // Step HSL_Threshold0: +// Mat hslThresholdInput = source0; +// double[] hslThresholdHue = {87.41007194244604, 180.0}; +// double[] hslThresholdSaturation = {179.10669303814598, 255.0}; +// double[] hslThresholdLuminance = {91.72661870503596, 255.0}; +// hslThreshold(hslThresholdInput, hslThresholdHue, hslThresholdSaturation, hslThresholdLuminance, hslThresholdOutput); +// +// // Step Find_Contours0: +// Mat findContoursInput = hslThresholdOutput; +// boolean findContoursExternalOnly = false; +// findContours(findContoursInput, findContoursExternalOnly, findContoursOutput); +// +// // Step Filter_Contours0: +// ArrayList filterContoursContours = findContoursOutput; +// double filterContoursMinArea = 200.0; +// double filterContoursMinPerimeter = 50.0; +// double filterContoursMinWidth = 10.0; +// double filterContoursMaxWidth = 60.0; +// double filterContoursMinHeight = 11.0; +// double filterContoursMaxHeight = 80.0; +// double[] filterContoursSolidity = {0, 100}; +// double filterContoursMaxVertices = 1000000; +// double filterContoursMinVertices = 0; +// double filterContoursMinRatio = 0; +// double filterContoursMaxRatio = 1000; +// filterContours(filterContoursContours, filterContoursMinArea, filterContoursMinPerimeter, filterContoursMinWidth, filterContoursMaxWidth, filterContoursMinHeight, filterContoursMaxHeight, filterContoursSolidity, filterContoursMaxVertices, filterContoursMinVertices, filterContoursMinRatio, filterContoursMaxRatio, filterContoursOutput); +// +// } +// +// /** +// * This method is a generated getter for the output of a HSL_Threshold. +// * @return Mat output from HSL_Threshold. +// */ +// public Mat hslThresholdOutput() { +// return hslThresholdOutput; +// } +// +// /** +// * This method is a generated getter for the output of a Find_Contours. +// * @return ArrayList output from Find_Contours. +// */ +// public ArrayList findContoursOutput() { +// return findContoursOutput; +// } +// +// /** +// * This method is a generated getter for the output of a Filter_Contours. +// * @return ArrayList output from Filter_Contours. +// */ +// public ArrayList filterContoursOutput() { +// return filterContoursOutput; +// } +// +// +// /** +// * Segment an image based on hue, saturation, and luminance ranges. +// * @param input The image on which to perform the HSL threshold. +// * @param hue The min and max hue +// * @param sat The min and max saturation +// * @param lum The min and max luminance +// * @param output The image in which to store the output. +// */ +// private void hslThreshold(Mat input, double[] hue, double[] sat, double[] lum, +// Mat out) { +// Imgproc.cvtColor(input, out, Imgproc.COLOR_BGR2HLS); +// Core.inRange(out, new Scalar(hue[0], lum[0], sat[0]), +// new Scalar(hue[1], lum[1], sat[1]), out); +// } +// +// /** +// * Sets the values of pixels in a binary image to their distance to the nearest black pixel. +// * @param input The image on which to perform the Distance Transform. +// * @param type The Transform. +// * @param maskSize the size of the mask. +// * @param output The image in which to store the output. +// */ +// private void findContours(Mat input, boolean externalOnly, +// List contours) { +// Mat hierarchy = new Mat(); +// contours.clear(); +// int mode; +// if (externalOnly) { +// mode = Imgproc.RETR_EXTERNAL; +// } +// else { +// mode = Imgproc.RETR_LIST; +// } +// int method = Imgproc.CHAIN_APPROX_SIMPLE; +// Imgproc.findContours(input, contours, hierarchy, mode, method); +// } +// +// +// /** +// * Filters out contours that do not meet certain criteria. +// * @param inputContours is the input list of contours +// * @param output is the the output list of contours +// * @param minArea is the minimum area of a contour that will be kept +// * @param minPerimeter is the minimum perimeter of a contour that will be kept +// * @param minWidth minimum width of a contour +// * @param maxWidth maximum width +// * @param minHeight minimum height +// * @param maxHeight maximimum height +// * @param Solidity the minimum and maximum solidity of a contour +// * @param minVertexCount minimum vertex Count of the contours +// * @param maxVertexCount maximum vertex Count +// * @param minRatio minimum ratio of width to height +// * @param maxRatio maximum ratio of width to height +// */ +// private void filterContours(List inputContours, double minArea, +// double minPerimeter, double minWidth, double maxWidth, double minHeight, double +// maxHeight, double[] solidity, double maxVertexCount, double minVertexCount, double +// minRatio, double maxRatio, List output) { +// final MatOfInt hull = new MatOfInt(); +// output.clear(); +// //operation +// for (int i = 0; i < inputContours.size(); i++) { +// final MatOfPoint contour = inputContours.get(i); +// final Rect bb = Imgproc.boundingRect(contour); +// if (bb.width < minWidth || bb.width > maxWidth) continue; +// if (bb.height < minHeight || bb.height > maxHeight) continue; +// final double area = Imgproc.contourArea(contour); +// if (area < minArea) continue; +// if (Imgproc.arcLength(new MatOfPoint2f(contour.toArray()), true) < minPerimeter) continue; +// Imgproc.convexHull(contour, hull); +// MatOfPoint mopHull = new MatOfPoint(); +// mopHull.create((int) hull.size().height, 1, CvType.CV_32SC2); +// for (int j = 0; j < hull.size().height; j++) { +// int index = (int)hull.get(j, 0)[0]; +// double[] point = new double[] { contour.get(index, 0)[0], contour.get(index, 0)[1]}; +// mopHull.put(j, 0, point); +// } +// final double solid = 100 * area / Imgproc.contourArea(mopHull); +// if (solid < solidity[0] || solid > solidity[1]) continue; +// if (contour.rows() < minVertexCount || contour.rows() > maxVertexCount) continue; +// final double ratio = bb.width / (double)bb.height; +// if (ratio < minRatio || ratio > maxRatio) continue; +// output.add(contour); +// } +// } +// +// +// +// +//} +// diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java index 09a023f..a5bd563 100644 --- a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java @@ -29,9 +29,8 @@ public class GripPipelineLift implements VisionPipeline { //Outputs private Mat resizeImageOutput = new Mat(); - private Mat hslThresholdOutput = new Mat(); + private Mat rgbThresholdOutput = new Mat(); private ArrayList findContoursOutput = new ArrayList(); - private ArrayList filterContoursOutput = new ArrayList(); static { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); @@ -43,38 +42,23 @@ public class GripPipelineLift implements VisionPipeline { @Override public void process(Mat source0) { // Step Resize_Image0: Mat resizeImageInput = source0; - double resizeImageWidth = 320.0; - double resizeImageHeight = 240.0; + double resizeImageWidth = 320.0; + double resizeImageHeight = 240.0; int resizeImageInterpolation = Imgproc.INTER_CUBIC; resizeImage(resizeImageInput, resizeImageWidth, resizeImageHeight, resizeImageInterpolation, resizeImageOutput); - // Step HSL_Threshold0: - Mat hslThresholdInput = resizeImageOutput; - double[] hslThresholdHue = {58.273381294964025, 101.67235494880545}; - double[] hslThresholdSaturation = {114.65827338129493, 255.0}; - double[] hslThresholdLuminance = {0.0, 255.0}; - hslThreshold(hslThresholdInput, hslThresholdHue, hslThresholdSaturation, hslThresholdLuminance, hslThresholdOutput); + // Step RGB_Threshold0: + Mat rgbThresholdInput = resizeImageOutput; + double[] rgbThresholdRed = {0.0, 0.0}; + double[] rgbThresholdGreen = {74.43502824858757, 141.36363636363637}; + double[] rgbThresholdBlue = {0.0, 0.0}; + rgbThreshold(rgbThresholdInput, rgbThresholdRed, rgbThresholdGreen, rgbThresholdBlue, rgbThresholdOutput); // Step Find_Contours0: - Mat findContoursInput = hslThresholdOutput; + Mat findContoursInput = rgbThresholdOutput; boolean findContoursExternalOnly = false; findContours(findContoursInput, findContoursExternalOnly, findContoursOutput); - // Step Filter_Contours0: - ArrayList filterContoursContours = findContoursOutput; - double filterContoursMinArea = 90.0; - double filterContoursMinPerimeter = 40.0; - double filterContoursMinWidth = 5.0; - double filterContoursMaxWidth = 60.0; - double filterContoursMinHeight = 5.0; - double filterContoursMaxHeight = 80.0; - double[] filterContoursSolidity = {44.96402877697842, 100}; - double filterContoursMaxVertices = 1000000.0; - double filterContoursMinVertices = 0.0; - double filterContoursMinRatio = 0.0; - double filterContoursMaxRatio = 5.0; - filterContours(filterContoursContours, filterContoursMinArea, filterContoursMinPerimeter, filterContoursMinWidth, filterContoursMaxWidth, filterContoursMinHeight, filterContoursMaxHeight, filterContoursSolidity, filterContoursMaxVertices, filterContoursMinVertices, filterContoursMinRatio, filterContoursMaxRatio, filterContoursOutput); - } /** @@ -86,11 +70,11 @@ public Mat resizeImageOutput() { } /** - * This method is a generated getter for the output of a HSL_Threshold. - * @return Mat output from HSL_Threshold. + * This method is a generated getter for the output of a RGB_Threshold. + * @return Mat output from RGB_Threshold. */ - public Mat hslThresholdOutput() { - return hslThresholdOutput; + public Mat rgbThresholdOutput() { + return rgbThresholdOutput; } /** @@ -101,14 +85,6 @@ public ArrayList findContoursOutput() { return findContoursOutput; } - /** - * This method is a generated getter for the output of a Filter_Contours. - * @return ArrayList output from Filter_Contours. - */ - public ArrayList filterContoursOutput() { - return filterContoursOutput; - } - /** * Scales and image to an exact size. @@ -124,19 +100,18 @@ private void resizeImage(Mat input, double width, double height, } /** - * Segment an image based on hue, saturation, and luminance ranges. - * - * @param input The image on which to perform the HSL threshold. - * @param hue The min and max hue - * @param sat The min and max saturation - * @param lum The min and max luminance + * Segment an image based on color ranges. + * @param input The image on which to perform the RGB threshold. + * @param red The min and max red. + * @param green The min and max green. + * @param blue The min and max blue. * @param output The image in which to store the output. */ - private void hslThreshold(Mat input, double[] hue, double[] sat, double[] lum, + private void rgbThreshold(Mat input, double[] red, double[] green, double[] blue, Mat out) { - Imgproc.cvtColor(input, out, Imgproc.COLOR_BGR2HLS); - Core.inRange(out, new Scalar(hue[0], lum[0], sat[0]), - new Scalar(hue[1], lum[1], sat[1]), out); + Imgproc.cvtColor(input, out, Imgproc.COLOR_BGR2RGB); + Core.inRange(out, new Scalar(red[0], green[0], blue[0]), + new Scalar(red[1], green[1], blue[1]), out); } /** @@ -162,55 +137,6 @@ private void findContours(Mat input, boolean externalOnly, } - /** - * Filters out contours that do not meet certain criteria. - * @param inputContours is the input list of contours - * @param output is the the output list of contours - * @param minArea is the minimum area of a contour that will be kept - * @param minPerimeter is the minimum perimeter of a contour that will be kept - * @param minWidth minimum width of a contour - * @param maxWidth maximum width - * @param minHeight minimum height - * @param maxHeight maximimum height - * @param Solidity the minimum and maximum solidity of a contour - * @param minVertexCount minimum vertex Count of the contours - * @param maxVertexCount maximum vertex Count - * @param minRatio minimum ratio of width to height - * @param maxRatio maximum ratio of width to height - */ - private void filterContours(List inputContours, double minArea, - double minPerimeter, double minWidth, double maxWidth, double minHeight, double - maxHeight, double[] solidity, double maxVertexCount, double minVertexCount, double - minRatio, double maxRatio, List output) { - final MatOfInt hull = new MatOfInt(); - output.clear(); - //operation - for (int i = 0; i < inputContours.size(); i++) { - final MatOfPoint contour = inputContours.get(i); - final Rect bb = Imgproc.boundingRect(contour); - if (bb.width < minWidth || bb.width > maxWidth) continue; - if (bb.height < minHeight || bb.height > maxHeight) continue; - final double area = Imgproc.contourArea(contour); - if (area < minArea) continue; - if (Imgproc.arcLength(new MatOfPoint2f(contour.toArray()), true) < minPerimeter) continue; - Imgproc.convexHull(contour, hull); - MatOfPoint mopHull = new MatOfPoint(); - mopHull.create((int) hull.size().height, 1, CvType.CV_32SC2); - for (int j = 0; j < hull.size().height; j++) { - int index = (int)hull.get(j, 0)[0]; - double[] point = new double[] { contour.get(index, 0)[0], contour.get(index, 0)[1]}; - mopHull.put(j, 0, point); - } - final double solid = 100 * area / Imgproc.contourArea(mopHull); - if (solid < solidity[0] || solid > solidity[1]) continue; - if (contour.rows() < minVertexCount || contour.rows() > maxVertexCount) continue; - final double ratio = bb.width / (double)bb.height; - if (ratio < minRatio || ratio > maxRatio) continue; - output.add(contour); - } - } - - } diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java index 19f7ea4..11cf8e2 100644 --- a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLiftGear.java @@ -29,12 +29,11 @@ public class GripPipelineLiftGear implements VisionPipeline { //Outputs private Mat resizeImageOutput = new Mat(); - private Mat hslThresholdOutput = new Mat(); + private Mat rgbThreshold0Output = new Mat(); private ArrayList findContours0Output = new ArrayList(); - private ArrayList filterContours0Output = new ArrayList(); - private Mat rgbThresholdOutput = new Mat(); + private Mat rgbThreshold1Output = new Mat(); private ArrayList findContours1Output = new ArrayList(); - private ArrayList filterContours1Output = new ArrayList(); + private ArrayList filterContoursOutput = new ArrayList(); static { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); @@ -51,59 +50,44 @@ public class GripPipelineLiftGear implements VisionPipeline { int resizeImageInterpolation = Imgproc.INTER_CUBIC; resizeImage(resizeImageInput, resizeImageWidth, resizeImageHeight, resizeImageInterpolation, resizeImageOutput); - // Step HSL_Threshold0: - Mat hslThresholdInput = resizeImageOutput; - double[] hslThresholdHue = {0.0, 44.63972054996753}; - double[] hslThresholdSaturation = {0.0, 57.52525252525253}; - double[] hslThresholdLuminance = {227.023381294964, 255.0}; - hslThreshold(hslThresholdInput, hslThresholdHue, hslThresholdSaturation, hslThresholdLuminance, hslThresholdOutput); + // Step RGB_Threshold0: + Mat rgbThreshold0Input = resizeImageOutput; + double[] rgbThreshold0Red = {0.0, 0.0}; + double[] rgbThreshold0Green = {74.43502824858757, 141.36363636363637}; + double[] rgbThreshold0Blue = {0.0, 0.0}; + rgbThreshold(rgbThreshold0Input, rgbThreshold0Red, rgbThreshold0Green, rgbThreshold0Blue, rgbThreshold0Output); // Step Find_Contours0: - Mat findContours0Input = hslThresholdOutput; + Mat findContours0Input = rgbThreshold0Output; boolean findContours0ExternalOnly = false; findContours(findContours0Input, findContours0ExternalOnly, findContours0Output); - // Step Filter_Contours0: - ArrayList filterContours0Contours = findContours0Output; - double filterContours0MinArea = 160.0; - double filterContours0MinPerimeter = 60.0; - double filterContours0MinWidth = 15.0; - double filterContours0MaxWidth = 70.0; - double filterContours0MinHeight = 15.0; - double filterContours0MaxHeight = 110.0; - double[] filterContours0Solidity = {40.46762589928058, 100}; - double filterContours0MaxVertices = 1000000.0; - double filterContours0MinVertices = 0.0; - double filterContours0MinRatio = 0.0; - double filterContours0MaxRatio = 5.0; - filterContours(filterContours0Contours, filterContours0MinArea, filterContours0MinPerimeter, filterContours0MinWidth, filterContours0MaxWidth, filterContours0MinHeight, filterContours0MaxHeight, filterContours0Solidity, filterContours0MaxVertices, filterContours0MinVertices, filterContours0MinRatio, filterContours0MaxRatio, filterContours0Output); - - // Step RGB_Threshold0: - Mat rgbThresholdInput = resizeImageOutput; - double[] rgbThresholdRed = {204.73851687880463, 255.0}; - double[] rgbThresholdGreen = {122.41975650249032, 255.0}; - double[] rgbThresholdBlue = {13.758992805755396, 160.55555555555557}; - rgbThreshold(rgbThresholdInput, rgbThresholdRed, rgbThresholdGreen, rgbThresholdBlue, rgbThresholdOutput); + // Step RGB_Threshold1: + Mat rgbThreshold1Input = resizeImageOutput; + double[] rgbThreshold1Red = {255.0, 255.0}; //{156.58204205866073, 255.0}; + double[] rgbThreshold1Green = {255.0, 255.0}; //{156.8172385168788, 255.0}; + double[] rgbThreshold1Blue = {0.0, 150.0}; // {55.03597122302158, 143.37518287980558}; + rgbThreshold(rgbThreshold1Input, rgbThreshold1Red, rgbThreshold1Green, rgbThreshold1Blue, rgbThreshold1Output); // Step Find_Contours1: - Mat findContours1Input = rgbThresholdOutput; + Mat findContours1Input = rgbThreshold1Output; boolean findContours1ExternalOnly = false; findContours(findContours1Input, findContours1ExternalOnly, findContours1Output); - // Step Filter_Contours1: - ArrayList filterContours1Contours = findContours1Output; - double filterContours1MinArea = 26.0; - double filterContours1MinPerimeter = 0.0; - double filterContours1MinWidth = 0.0; - double filterContours1MaxWidth = 50.0; - double filterContours1MinHeight = 0.0; - double filterContours1MaxHeight = 998.0; - double[] filterContours1Solidity = {0.0, 100.0}; - double filterContours1MaxVertices = 1000000.0; - double filterContours1MinVertices = 0.0; - double filterContours1MinRatio = 0.0; - double filterContours1MaxRatio = 1000.0; - filterContours(filterContours1Contours, filterContours1MinArea, filterContours1MinPerimeter, filterContours1MinWidth, filterContours1MaxWidth, filterContours1MinHeight, filterContours1MaxHeight, filterContours1Solidity, filterContours1MaxVertices, filterContours1MinVertices, filterContours1MinRatio, filterContours1MaxRatio, filterContours1Output); + // Step Filter_Contours0: + ArrayList filterContoursContours = findContours1Output; + double filterContoursMinArea = 5.0; + double filterContoursMinPerimeter = 0.0; + double filterContoursMinWidth = 0.0; + double filterContoursMaxWidth = 1000.0; + double filterContoursMinHeight = 0.0; + double filterContoursMaxHeight = 998.0; + double[] filterContoursSolidity = {0.0, 100.0}; + double filterContoursMaxVertices = 1000000.0; + double filterContoursMinVertices = 0.0; + double filterContoursMinRatio = 0.0; + double filterContoursMaxRatio = 1000.0; + filterContours(filterContoursContours, filterContoursMinArea, filterContoursMinPerimeter, filterContoursMinWidth, filterContoursMaxWidth, filterContoursMinHeight, filterContoursMaxHeight, filterContoursSolidity, filterContoursMaxVertices, filterContoursMinVertices, filterContoursMinRatio, filterContoursMaxRatio, filterContoursOutput); } @@ -116,11 +100,11 @@ public Mat resizeImageOutput() { } /** - * This method is a generated getter for the output of a HSL_Threshold. - * @return Mat output from HSL_Threshold. + * This method is a generated getter for the output of a RGB_Threshold. + * @return Mat output from RGB_Threshold. */ - public Mat hslThresholdOutput() { - return hslThresholdOutput; + public Mat rgbThreshold0Output() { + return rgbThreshold0Output; } /** @@ -131,20 +115,12 @@ public ArrayList findContours0Output() { return findContours0Output; } - /** - * This method is a generated getter for the output of a Filter_Contours. - * @return ArrayList output from Filter_Contours. - */ - public ArrayList filterContours0Output() { - return filterContours0Output; - } - /** * This method is a generated getter for the output of a RGB_Threshold. * @return Mat output from RGB_Threshold. */ - public Mat rgbThresholdOutput() { - return rgbThresholdOutput; + public Mat rgbThreshold1Output() { + return rgbThreshold1Output; } /** @@ -159,8 +135,8 @@ public ArrayList findContours1Output() { * This method is a generated getter for the output of a Filter_Contours. * @return ArrayList output from Filter_Contours. */ - public ArrayList filterContours1Output() { - return filterContours1Output; + public ArrayList filterContoursOutput() { + return filterContoursOutput; } @@ -177,22 +153,6 @@ private void resizeImage(Mat input, double width, double height, Imgproc.resize(input, output, new Size(width, height), 0.0, 0.0, interpolation); } - /** - * Segment an image based on hue, saturation, and luminance ranges. - * - * @param input The image on which to perform the HSL threshold. - * @param hue The min and max hue - * @param sat The min and max saturation - * @param lum The min and max luminance - * @param output The image in which to store the output. - */ - private void hslThreshold(Mat input, double[] hue, double[] sat, double[] lum, - Mat out) { - Imgproc.cvtColor(input, out, Imgproc.COLOR_BGR2HLS); - Core.inRange(out, new Scalar(hue[0], lum[0], sat[0]), - new Scalar(hue[1], lum[1], sat[1]), out); - } - /** * Segment an image based on color ranges. * @param input The image on which to perform the RGB threshold. diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java index 62b5d3a..830dcc8 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java @@ -167,7 +167,7 @@ public VisionBoiler() { // display the current image on the driver station - if (Constants.DEBUG){ + if (Constants.BOILER_DEBUG){ outputStreamBoiler.putFrame(boilerPipeline.hsvThresholdOutput()); } } @@ -379,7 +379,7 @@ public double boilerGetMove() { public boolean boilerIsAtDistance() { double difference = boilerStopAtDistance - getBoilerCurrentDistance(); - SmartDashboard.putNumber("difference in IsAtDistance", difference); + SmartDashboard.putNumber("Boilre difference in IsAtDistance", difference); //Check if target is at correct level within threshold if (Math.abs(difference) <= thresholdDistance) { boilerIsAtDistance = true; @@ -463,24 +463,24 @@ public boolean boilerIsInSweep() { public void sendToDashboard() { if (Constants.BOILER_DEBUG) { - SmartDashboard.putNumber("b-True Center", trueCenter); - SmartDashboard.putBoolean("b-Has Target", boilerIsHasTarget()); - SmartDashboard.putBoolean("b-IsAtDistance", boilerIsAtDistance()); - SmartDashboard.putNumber("b-Center of Target", boilerCurrentCenter); - SmartDashboard.putNumber("b-Rotation", boilerRotate); - SmartDashboard.putNumber("b-Rotate Difference", boilerRotateDiff); - SmartDashboard.putNumber("b-Distance Difference", boilerMoveDiff); - SmartDashboard.putNumber("b-Sweep Counter", boilerSweepCounter); - SmartDashboard.putNumber("b-SweepDirection", boilerSweepDirection); - SmartDashboard.putBoolean("b-isCentered", boilerIsCentered()); - SmartDashboard.putNumber("b-rectX", brectX); - SmartDashboard.putNumber("b-maxY", bmaxY); - SmartDashboard.putNumber("b-rectY", brectY); - SmartDashboard.putNumber("b-rectWidth", brectWidth); - SmartDashboard.putNumber("b-rectHeight", brectHeight); - SmartDashboard.putNumber("b-Distance To Target", boilerCurrentDistance); - SmartDashboard.putNumber("b-pipelineSize", bPipelineSize); - SmartDashboard.putNumber("b-stop at distance", boilerStopAtDistance); + SmartDashboard.putNumber("b-True Center", trueCenter); + SmartDashboard.putBoolean("b-Has Target", boilerIsHasTarget()); + SmartDashboard.putBoolean("b-IsAtDistance", boilerIsAtDistance()); + SmartDashboard.putNumber("b-Center of Target", boilerCurrentCenter); + SmartDashboard.putNumber("b-Rotation", boilerRotate); + SmartDashboard.putNumber("b-Rotate Difference", boilerRotateDiff); + SmartDashboard.putNumber("b-Distance Difference", boilerMoveDiff); + SmartDashboard.putNumber("b-Sweep Counter", boilerSweepCounter); + SmartDashboard.putNumber("b-SweepDirection", boilerSweepDirection); + SmartDashboard.putBoolean("b-isCentered", boilerIsCentered()); + SmartDashboard.putNumber("b-rectX", brectX); + SmartDashboard.putNumber("b-maxY", bmaxY); + SmartDashboard.putNumber("b-rectY", brectY); + SmartDashboard.putNumber("b-rectWidth", brectWidth); + SmartDashboard.putNumber("b-rectHeight", brectHeight); + SmartDashboard.putNumber("b-Distance To Target", boilerCurrentDistance); + SmartDashboard.putNumber("b-pipelineSize", bPipelineSize); + SmartDashboard.putNumber("b-stop at distance", boilerStopAtDistance); } } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java index 4e7ca3e..367758b 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java @@ -1,425 +1,443 @@ -//package org.usfirst.frc.team708.robot.subsystems; -// -//import org.opencv.core.Rect; -//import org.opencv.imgproc.Imgproc; -//import org.usfirst.frc.team708.robot.AutoConstants; -// -//import org.usfirst.frc.team708.robot.Constants; -//import org.usfirst.frc.team708.robot.Robot; -//import org.usfirst.frc.team708.robot.commands.visionProcessor.GripPipelineLift; -//import org.usfirst.frc.team708.robot.util.Math708; -// -//import edu.wpi.cscore.AxisCamera; -//import edu.wpi.cscore.CvSource; -//import edu.wpi.cscore.UsbCamera; -//import edu.wpi.first.wpilibj.CameraServer; -//import edu.wpi.first.wpilibj.command.Subsystem; -//import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; -//import edu.wpi.first.wpilibj.tables.TableKeyNotDefinedException; -//import edu.wpi.first.wpilibj.vision.VisionThread; -// -///** -// *@authors Viet & Sue -// *This subsystem is specific to the 2017 Game FIRST Steamworks Lift Peg -// */ -// -//public class VisionLift extends Subsystem { -// -// // Camera Variables -// private double fovDegrees = AutoConstants.USB_LIFT_FOV_DEGREES; // Field of View of the Camera -// private double liftPipelineSize; // Number of Contours in the Pipline- 0 = target not in view -// private int liftImageWidth = AutoConstants.USB_LIFT_IMG_WIDTH; // Width of image from camera stream -// private int liftImageHeight = AutoConstants.USB_LIFT_IMG_HEIGHT; // Height of image from camera stream -// -// // Image OpenCV Image Processing Variables -// private VisionThread visionThreadLift; // vision processing thread - processes grip code -// private final Object imgLockLift = new Object(); // vision Lift object -// -//// private AxisCamera axisCamera; // Axis Camera -// private UsbCamera usbCameraLift; // USB Camera -// private CvSource outputStreamLift; // Output stream to the Dashboard -// -// -// // Targeting variables -// private int lrectX = 0; // the 4 values used which define the full rectangle around the target -// private int lrectY = 0; -// private int lrectWidth = 0; -// private int lrectHeight = 0; -// -// private int lminX = 0; // the 4 values used to create maximum rectangle around the target (used when evaluating each of the contour images) -// private int lminY = 0; -// private int lmaxX = 0; -// private int lmaxY = 0; -// -// private boolean liftHasTarget = false; // flag indicating whether the robot sees the target -// private boolean liftIsCentered = false; // flag indicating whether the robot sees the center of the target -// private boolean liftIsAtDistance = false; // flag indicating whether the robot is at the correct distance from the target -// -// -// private int liftTargetHeight = AutoConstants.LIFT_TARGET_HEIGHT; //height of actual target reflective tape -// private int liftTargetWidth = AutoConstants.LIFT_TARGET_WIDTH; //width of actual target reflective tape -// -// private double trueCenter = liftImageWidth/2; // horizontal value of the center of the camera image -// private double liftDistanceToStop = AutoConstants.DISTANCE_TO_LIFT_TARGET; // distance to stop at in front of lift target -// private double liftCurrentCenter = 0.0; // horizontal value of where robot is looking -// private double liftCurrentDistance = 0.0; // distance robot is from the target -// -// private double thresholdX = AutoConstants.X_THRESHOLD_CENTER; // threshold for determining center of the target -// private double thresholdDistance = AutoConstants.DISTANCE_TARGET_THRESHOLD; // threshold for determining threshold for stopping at the lift peg -// private double minThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MIN; // threshold for determining min value for whether the robot sees the target -// private double maxThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MAX; // threshold for determining max value for whether the robot sees the target -// -// -// // Sweep Variables -// private boolean liftInSweep = false; // flag indicating whether the robot is sweeping left and right looking for the target -// private double liftSweepDirection = 0.0; // value indicating the direction of the sweep -1 = right; 1 = left -// private int liftSweepCounter = 0; // value indicating when the sweep will change direction -// -// -// // drive variables -// private double liftRotateDiff = 0; // for smartdashboard - how far away from center -// private double liftMoveDiff = 0; // for smartdashboard - how far away from target -// double rotate; // speed of the rotate being returned to the command -// double move; // speed of the move forward being returned to the command -// -// // Vision Processing -// public VisionLift() { -// super("Vision Processor"); -// -// -// // define the Cameras: -// // on little bot - cam2, 1 -// usbCameraLift=CameraServer.getInstance().startAutomaticCapture("cam3", 0); -//// axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); -// usbCameraLift.setResolution(liftImageWidth, liftImageHeight); -// -// -// // define the output stream on the smart dashboard -// outputStreamLift = CameraServer.getInstance().putVideo("Target_Lift", liftImageWidth, liftImageHeight); -// -// // Vision thread which processes the image contours -// visionThreadLift = new VisionThread(usbCameraLift, new GripPipelineLift(), lPipeline -> { -// liftPipelineSize = lPipeline.filterContoursOutput().size(); -// -// // if the grip pipeline filter "filterContoursOutput" sees the target -// // loop through each contour image -// // grab the bounding rectangle values of each contour -// // to create the biggest rectangle around the 2 vertical retroreflective tapes -// // on either side of the lift peg -// if (!lPipeline.filterContoursOutput().isEmpty()) { -// -// for (int i = 0; i < lPipeline.filterContoursOutput().size(); i++) { -// Rect r = Imgproc.boundingRect(lPipeline.filterContoursOutput().get(i)); -// -// // set the min/max values to match the values form the 1st image -// if (i == 0) { -// lminX = r.x; -// lminY = r.y; -// lmaxX = r.x + r.width; -// lmaxY = r.y + r.height; -// } -// -// // compare each value to the min/max and replace if a better one is found -// if (r.x < lminX) { -// lminX = r.x; -// } -// if (r.y < lminY) { -// lminY = r.y; -// } -// if (r.x + r.width > lmaxX) { -// lmaxX = r.x + r.width; -// } -// if (r.y + r.height> lmaxY) { -// lmaxY = r.y + r.height; -// } +package org.usfirst.frc.team708.robot.subsystems; + +import org.opencv.core.Rect; +import org.opencv.imgproc.Imgproc; +import org.usfirst.frc.team708.robot.AutoConstants; + +import org.usfirst.frc.team708.robot.Constants; +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.commands.visionProcessor.GripPipelineLift; +import org.usfirst.frc.team708.robot.util.Math708; + +import edu.wpi.cscore.AxisCamera; +import edu.wpi.cscore.CvSource; +import edu.wpi.cscore.UsbCamera; +import edu.wpi.first.wpilibj.CameraServer; +import edu.wpi.first.wpilibj.command.Subsystem; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; +import edu.wpi.first.wpilibj.tables.TableKeyNotDefinedException; +import edu.wpi.first.wpilibj.vision.VisionThread; + +/** + *@authors Viet & Sue + *This subsystem is specific to the 2017 Game FIRST Steamworks Lift Peg + */ + +public class VisionLift extends Subsystem { + + // Camera Variables + private double fovDegrees = AutoConstants.USB_LIFT_FOV_DEGREES; // Field of View of the Camera + private double liftPipelineSize; // Number of Contours in the Pipline- 0 = target not in view + private int liftImageWidth = AutoConstants.USB_LIFT_IMG_WIDTH; // Width of image from camera stream + private int liftImageHeight = AutoConstants.USB_LIFT_IMG_HEIGHT; // Height of image from camera stream + + // Image OpenCV Image Processing Variables + private VisionThread visionThreadLift; // vision processing thread - processes grip code for lift + private final Object imgLockLift = new Object(); // vision Lift object + +// private AxisCamera axisCamera; // Axis Camera + private UsbCamera usbCameraLiftGear; // USB Camera + private CvSource outputStreamLift; // Output stream to the Dashboard + + + // Targeting variables + private int lrectX = 0; // the 4 values used which define the full rectangle around the target + private int lrectY = 0; + private int grectX = 0; + private int grectY = 0; + private int lrectWidth = 0; + private int lrectHeight = 0; + private int grectWidth = 0; + private int grectHeight = 0; + + private int lminX = 0; // the 4 values used to create maximum rectangle around the target (used when evaluating each of the contour images) + private int lminY = 0; + private int lmaxX = 0; + private int lmaxY = 0; + private int gminX = 0; // the 4 values used to create maximum rectangle around the target (used when evaluating each of the contour images) + private int gminY = 0; + private int gmaxX = 0; + private int gmaxY = 0; + + private boolean liftHasTarget = false; // flag indicating whether the robot sees the target + private boolean liftIsCentered = false; // flag indicating whether the robot sees the center of the target + private boolean liftIsAtDistance = false; // flag indicating whether the robot is at the correct distance from the target + + private int liftTargetHeight = AutoConstants.LIFT_TARGET_HEIGHT; //height of actual target reflective tape + private int liftTargetWidth = AutoConstants.LIFT_TARGET_WIDTH; //width of actual target reflective tape + + private double trueCenter = liftImageWidth/2; // horizontal value of the center of the camera image + private double liftDistanceToStop = AutoConstants.DISTANCE_TO_LIFT_TARGET; // distance to stop at in front of lift target + private double liftCurrentCenter = 0.0; // horizontal value of where robot is looking + private double liftCurrentDistance = 0.0; // distance robot is from the target + + private double thresholdX = AutoConstants.X_THRESHOLD_CENTER; // threshold for determining center of the target + private double thresholdDistance = AutoConstants.DISTANCE_TARGET_THRESHOLD; // threshold for determining threshold for stopping at the lift peg + private double minThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MIN; // threshold for determining min value for whether the robot sees the target + private double maxThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MAX; // threshold for determining max value for whether the robot sees the target + + + // Sweep Variables + private boolean liftInSweep = false; // flag indicating whether the robot is sweeping left and right looking for the target + private double liftSweepDirection = 0.0; // value indicating the direction of the sweep -1 = right; 1 = left + private int liftSweepCounter = 0; // value indicating when the sweep will change direction + + + // drive variables + private double liftRotateDiff = 0; // for smartdashboard - how far away from center + private double liftMoveDiff = 0; // for smartdashboard - how far away from target + + double rotate; // speed of the rotate being returned to the command + double move; // speed of the move forward being returned to the command + + // Vision Processing + public VisionLift() { + super("Vision Processor"); + + +// define the Cameras: +// on little bot - cam2, 1 +// Pipeline outputs: hsl and 0 means lift, rgb and 1 means gear +// axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); + + usbCameraLiftGear=CameraServer.getInstance().startAutomaticCapture(AutoConstants.USB_CAMERA_ID, AutoConstants.USB_VIDEO_PORT); + usbCameraLiftGear.setResolution(liftImageWidth, liftImageHeight); + usbCameraLiftGear.setBrightness(40); //40 for lift 70 for gear + usbCameraLiftGear.setExposureManual(25); //25 for lift 48 for gear + usbCameraLiftGear.setWhiteBalanceManual(10000); //10000 for lift 2800 for gear +// usbCameraLiftGear.setFPS(20); + + // define the output stream on the smart dashboard + outputStreamLift = CameraServer.getInstance().putVideo("Target_Lift", liftImageWidth, liftImageHeight); + + // Vision thread which processes the image contours + visionThreadLift = new VisionThread(usbCameraLiftGear, new GripPipelineLift(), lgPipeline -> { + + liftPipelineSize = lgPipeline.findContoursOutput().size(); + + // if the grip pipeline filter "filterContours0Output" sees the target + // loop through each contour image + // grab the bounding rectangle values of each contour + // to create the biggest rectangle around the 2 vertical retro-reflective tapes + // on either side of the lift peg + if (!lgPipeline.findContoursOutput().isEmpty()) { + + for (int i = 0; i < lgPipeline.findContoursOutput().size(); i++) { + Rect lift = Imgproc.boundingRect(lgPipeline.findContoursOutput().get(i)); + + // set the min/max values to match the values form the 1st image + if (i == 0) { + lminX = lift.x; + lminY = lift.y; + lmaxX = lift.x + lift.width; + lmaxY = lift.y + lift.height; + } + + // compare each value to the min/max and replace if a better one is found + if (lift.x < lminX) { + lminX = lift.x; + } + if (lift.y < lminY) { + lminY = lift.y; + } + if (lift.x + lift.width > lmaxX) { + lmaxX = lift.x + lift.width; + } + if (lift.y + lift.height> lmaxY) { + lmaxY = lift.y + lift.height; + } + } + + + +// // this is a second method of looping through the contours in the filterContours0Output Array of Mat Images +// for (MatOfPoint contour : pipeline.filterContours0Output()) { +// Rect r = Imgproc.boundingRect(contour); +// if (r.x < minX) { +// minX = r.x; +// } // } -// -//// // this is a second method of looping through the contours in the filterContoursOutput Array of Mat Images -//// for (MatOfPoint contour : pipeline.filterContoursOutput()) { -//// Rect r = Imgproc.boundingRect(contour); -//// if (r.x < minX) { -//// minX = r.x; -//// } -//// } -// -// -// -// synchronized (imgLockLift) { -// liftCurrentCenter = lminX + ((lmaxX - lminX) / 2); -// -// // set values for the smartdashboard -// lrectX = lminX; -// lrectY = lminY; -// lrectWidth = lmaxX - lminX; -// lrectHeight = lmaxY - lminY; -// -// // note - this formula was pulled from 1640's github code - need to find the specific reference -// // from 1640 -// //Equation to determine the distance from a target (d) given the width in pixels of a vision target in the camera image (w): -// // d = (TARGET_WIDTH*CAMERA_IMAGE_WIDTH)/(2*tan(FOV_ANGLE/2)*w) -// // i.e. d and w are inversely related. -// liftCurrentDistance = liftTargetWidth * liftImageWidth / (2*(Math.tan(Math.toRadians(fovDegrees))/2)*lrectWidth); -// -// // display the current image on the driver station -// -// -// outputStreamLift.putFrame(lPipeline.hslThresholdOutput()); -// -// } -// } -// -// -// -// // the target is not in the camera (ie, pipeline is empty) -// else { -// liftHasTarget = false; -// lminX = 0; -// lminY = 0; -// lmaxX = 0; -// lmaxY = 0; -// } -// -// }); -// visionThreadLift.start(); -// } -// -// -// /* -// * liftProcessData -// * Method to interpret the camera data received above -// */ -// public void liftProcessData() { -// try { -// -// // use the sonar to get the distance from the target (backup plan if camera distance not available) -// // currentDistance=Robot.drivetrain.getSonarDistance(); -// -// // if robot sees the target (current X between its min and max) -// if ((liftCurrentCenter > minThresholdX) && (liftCurrentCenter < maxThresholdX)) { -// liftHasTarget = true; -// } -// else { -// liftHasTarget = false; -// } -// -// } catch (TableKeyNotDefinedException e) { -// e.printStackTrace(); -// } -// } -// -// /* -// * isCentered -// * Method to determine whether the robot sees the center of the target (within the threshold value) -// */ -// public boolean liftIsCentered() { -// -// // if the robot sees the target -// // determine whether the horizontal value the robot sees is within the threshold defining the center of the target -// // set isCentered according to whether the robot is aligned with the center of the target -// if (liftHasTarget) -// { -// -// double difference = trueCenter - (liftCurrentCenter); -// if (Math.abs(difference) <= thresholdX) { -// liftIsCentered = true; -// } -// else if (Math.abs(difference) > thresholdX) { -// liftIsCentered = false; -// } -// liftRotateDiff = difference; -// } -// else{ -// liftIsCentered = false; -// } -// -// return liftIsCentered; -// } -// -// -// /* -// * getRotate -// * Method to determine whether the robot is at the center of the target so it can drive towards target -// */ -// public double liftGetRotate() { -// double difference=0; -// -// // currently we are only running 1 cycle of the sweep and stopping -// // if in the future additional sweeps are required, this is where the reset should occur -// // if (sweepCounter > 400){ -// // sweepCounter = 0; -// // } -// -// // if robot sees target and is centered - no need to rotate the robot -// if (liftHasTarget && liftIsCentered) -// { -// rotate = 0.0; -// } -// -// // if the robot sees the target but is not centered -// // check to see whether the robot is within the threshold -// // rotate based on the math function -// else if (liftHasTarget && !liftIsCentered){ -// difference = trueCenter - (liftCurrentCenter); -// -// rotate = Math708.getClippedPercentError(liftCurrentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); -// -// -// if (Math.abs(difference) > thresholdX) { -// if (liftCurrentCenter < trueCenter){ -// rotate = Math.abs(rotate); -// } -// else { -// rotate = Math.abs(rotate) * -1; -// } -// } -// } -// -// // if the robot does not have the target -// // begin the sweep -// // sweep is defined as rotating the robot right, left, right in predefined counts -// // if in the sweep the robot does not find the target, it stops after 3 sweeps -// // otherwise it will jump back into the hasTarget logic identified above -// else if (!liftHasTarget){ -// if (Math.abs(liftSweepDirection) < .1){ -// liftSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; -// rotate = -AutoConstants.SWEEP_ROTATE; -// } -// else if (liftSweepDirection > AutoConstants.SWEEP1_MIN){ -// if ((liftSweepCounter >= AutoConstants.SWEEP1_MIN && liftSweepCounter <= AutoConstants.SWEEP1_MAX) -// || (liftSweepCounter >= AutoConstants.SWEEP3_MIN && liftSweepCounter <= AutoConstants.SWEEP3_MAX)){ -// -// rotate = -AutoConstants.SWEEP_ROTATE; -// if (liftSweepCounter== AutoConstants.SWEEP1_MAX || liftSweepCounter== AutoConstants.SWEEP3_MAX){ -// liftSweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; -// } -// } -// } -// else { -// if (liftSweepCounter >= AutoConstants.SWEEP2_MIN && liftSweepCounter <= AutoConstants.SWEEP2_MAX) -// rotate = AutoConstants.SWEEP_ROTATE; -// if (liftSweepCounter== AutoConstants.SWEEP2_MAX){ -// liftSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; -// } -// } -// -// liftSweepCounter++; -// } -// liftRotateDiff = difference; -// return rotate; -// } -// -// /* -// * getMove -// * Method to determine if the robot is close enough to target so it can stop -// */ -// -// public double liftGetMove() { -// -// // if the robot sees the target -// // Method to determine whether the robot is at the correct distance to the target so stop -// if (liftHasTarget) -// { -// double difference = liftDistanceToStop - liftCurrentDistance; -// move = Math708.getClippedPercentError(liftCurrentDistance, liftDistanceToStop, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); -// -// //Check if target is at correct distance within threshold -// if (Math.abs(difference) <= thresholdDistance) { -// move = 0.0; -// liftIsAtDistance = true; -// } else { -// liftIsAtDistance = false; -// } -// liftMoveDiff = difference; -// } else { -// move = 0.0; -// } -// -// return move; -// } -// -// /** -// * GETTERS and PUTTERS to return the private variables -// * @return -// */ -// -// -// public boolean liftIsAtDistance() { -// double difference = liftDistanceToStop - liftCurrentDistance; -// //Check if target is at correct level within threshold -// if (Math.abs(difference) <= thresholdDistance) { -// liftIsAtDistance = true; -// } else { -// liftIsAtDistance = false; -// } -// return liftIsAtDistance; -// } -// -// public boolean liftIsHasTarget() { -// return liftHasTarget; -// } -// -// public void putLiftHasTarget(boolean ht) { -// liftHasTarget = ht; -// } -// -// public void putLiftCurrentCenter(double cc) { -// liftCurrentCenter = cc; -// } -// -// public int getLiftCounter() { -// return liftSweepCounter; -// } -// -// -// public void putLiftCounter(int ct) { -// liftSweepCounter = ct; -// } -// -// public void putLiftIsCentered(boolean ic) { -// liftIsCentered = ic; -// } -// -// -// public void putLiftAtDistance(boolean ay) { -// liftIsAtDistance = ay; -// } -// -// -// public boolean liftIsInSweep() { -// if (liftHasTarget) { -// liftInSweep = false; -// liftSweepCounter=1; -// } -// else { -// liftInSweep = true; -// } -// return liftInSweep; -// } -// -// public void sendToDashboard() { -// if (Constants.LIFT_DEBUG) { -// -// SmartDashboard.putBoolean("L-Has Target", liftIsHasTarget()); -// SmartDashboard.putBoolean("L-Is At Distance", liftIsAtDistance()); -// SmartDashboard.putNumber("L-Center of Target", liftCurrentCenter); -// SmartDashboard.putNumber("L-Rotation", rotate); -// SmartDashboard.putNumber("L-Rotate Difference", liftRotateDiff); -// SmartDashboard.putNumber("L-Distance Difference", liftMoveDiff); -// SmartDashboard.putNumber("L-Sweep Counter", liftSweepCounter); -// SmartDashboard.putNumber("L-SweepDirection", liftSweepDirection); -// SmartDashboard.putBoolean("L-isCentered", liftIsCentered()); -// SmartDashboard.putNumber("L-rectX", lrectX); -// SmartDashboard.putNumber("L-rectY", lrectY); -// SmartDashboard.putNumber("L-rectWidth", lrectWidth); -// SmartDashboard.putNumber("L-rectHeight", lrectHeight); -// SmartDashboard.putNumber("L-Distance To Target", liftCurrentDistance); -// SmartDashboard.putNumber("L-pipelineSize", liftPipelineSize); -// } -// } -// -// public void initDefaultCommand() { -// if (Constants.LIFT_DEBUG) { -// } -// } -// -//} \ No newline at end of file + + + + synchronized (imgLockLift) { + liftCurrentCenter = lminX + ((lmaxX - lminX) / 2); + + // set values for the smartdashboard + lrectX = lminX; + lrectY = lminY; + lrectWidth = lmaxX - lminX; + lrectHeight = lmaxY - lminY; + + // note - this formula was pulled from 1640's github code - need to find the specific reference + // from 1640 + //Equation to determine the distance from a target (d) given the width in pixels of a vision target in the camera image (w): + // d = (TARGET_WIDTH*CAMERA_IMAGE_WIDTH)/(2*tan(FOV_ANGLE/2)*w) + // i.e. d and w are inversely related. + liftCurrentDistance = liftTargetWidth * liftImageWidth / (2*(Math.tan(Math.toRadians(fovDegrees))/2)*lrectWidth); + + // display the current image on the driver station + +// outputStreamLift.putFrame(lgPipeline.resizeImageOutput()); + } + } + + // the target is not in the camera (ie, pipeline is empty) + else { + liftHasTarget = false; + lminX = 0; + lminY = 0; + lmaxX = 0; + lmaxY = 0; + } + + }); + + visionThreadLift.start(); + } + + /* + * liftProcessData + * Method to interpret the camera data received above + */ + public void liftProcessData() { + try { + + // use the sonar to get the distance from the target (backup plan if camera distance not available) + // currentDistance=Robot.drivetrain.getSonarDistance(); + + // if robot sees the target (current X between its min and max) + if ((liftCurrentCenter > minThresholdX) && (liftCurrentCenter < maxThresholdX)) { + liftHasTarget = true; + } + else { + liftHasTarget = false; + } + + } catch (TableKeyNotDefinedException e) { + e.printStackTrace(); + } + } + + /* + * isCentered + * Method to determine whether the robot sees the center of the target (within the threshold value) + */ + public boolean liftIsCentered() { + + // if the robot sees the target + // determine whether the horizontal value the robot sees is within the threshold defining the center of the target + // set isCentered according to whether the robot is aligned with the center of the target + if (liftHasTarget) + { + + double difference = trueCenter - (liftCurrentCenter); + if (Math.abs(difference) <= thresholdX) { + liftIsCentered = true; + } + else if (Math.abs(difference) > thresholdX) { + liftIsCentered = false; + } + liftRotateDiff = difference; + } + else{ + liftIsCentered = false; + } + + return liftIsCentered; + } + + /* + * getRotate + * Method to determine whether the robot is at the center of the target so it can drive towards target + */ + public double liftGetRotate() { + double difference=0; + + // currently we are only running 1 cycle of the sweep and stopping + // if in the future additional sweeps are required, this is where the reset should occur + // if (sweepCounter > 400){ + // sweepCounter = 0; + // } + + // if robot sees target and is centered - no need to rotate the robot + if (liftHasTarget && liftIsCentered) + { + rotate = 0.0; + } + + // if the robot sees the target but is not centered + // check to see whether the robot is within the threshold + // rotate based on the math function + else if (liftHasTarget && !liftIsCentered){ + difference = trueCenter - (liftCurrentCenter); + + rotate = Math708.getClippedPercentError(liftCurrentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); + + + if (Math.abs(difference) > thresholdX) { + if (liftCurrentCenter < trueCenter){ + rotate = Math.abs(rotate); + } + else { + rotate = Math.abs(rotate) * -1; + } + } + } + + // if the robot does not have the target + // begin the sweep + // sweep is defined as rotating the robot right, left, right in predefined counts + // if in the sweep the robot does not find the target, it stops after 3 sweeps + // otherwise it will jump back into the hasTarget logic identified above + else if (!liftHasTarget){ + if (Math.abs(liftSweepDirection) < .1){ + liftSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; + rotate = -AutoConstants.SWEEP_ROTATE; + } + else if (liftSweepDirection > AutoConstants.SWEEP1_MIN){ + if ((liftSweepCounter >= AutoConstants.SWEEP1_MIN && liftSweepCounter <= AutoConstants.SWEEP1_MAX) + || (liftSweepCounter >= AutoConstants.SWEEP3_MIN && liftSweepCounter <= AutoConstants.SWEEP3_MAX)){ + + rotate = -AutoConstants.SWEEP_ROTATE; + if (liftSweepCounter== AutoConstants.SWEEP1_MAX || liftSweepCounter== AutoConstants.SWEEP3_MAX){ + liftSweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; + } + } + } + else { + if (liftSweepCounter >= AutoConstants.SWEEP2_MIN && liftSweepCounter <= AutoConstants.SWEEP2_MAX) + rotate = AutoConstants.SWEEP_ROTATE; + if (liftSweepCounter== AutoConstants.SWEEP2_MAX){ + liftSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; + } + } + + liftSweepCounter++; + } + liftRotateDiff = difference; + return rotate; + } + + /* + * getMove + * Method to determine if the robot is close enough to target so it can stop + */ + + public double liftGetMove() { + + // if the robot sees the target + // Method to determine whether the robot is at the correct distance to the target so stop + if (liftHasTarget) + { + double difference = liftDistanceToStop - liftCurrentDistance; + move = Math708.getClippedPercentError(liftCurrentDistance, liftDistanceToStop, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); + + //Check if target is at correct distance within threshold + if (Math.abs(difference) <= thresholdDistance) { + move = 0.0; + liftIsAtDistance = true; + } else { + liftIsAtDistance = false; + } + liftMoveDiff = difference; + } else { + move = 0.0; + } + + return move; + } + + + + /** + * GETTERS and PUTTERS to return the private variables + * @return + */ + + + public boolean liftIsAtDistance() { + double difference = liftDistanceToStop - liftCurrentDistance; + //Check if target is at correct level within threshold + if (Math.abs(difference) <= thresholdDistance) { + liftIsAtDistance = true; + } else { + liftIsAtDistance = false; + } + return liftIsAtDistance; + } + + public boolean liftIsHasTarget() { + return liftHasTarget; + } + + public void putLiftHasTarget(boolean lht) { + liftHasTarget = lht; + } + + public void putLiftCurrentCenter(double lcc) { + liftCurrentCenter = lcc; + } + + + public int getLiftCounter() { + return liftSweepCounter; + } + + public void putLiftCounter(int lct) { + liftSweepCounter = lct; + } + + public void putLiftIsCentered(boolean lic) { + liftIsCentered = lic; + } + + public void putLiftAtDistance(boolean lad) { + liftIsAtDistance = lad; + } + + public boolean liftIsInSweep() { + if (liftHasTarget) { + liftInSweep = false; + liftSweepCounter=1; + } + else { + liftInSweep = true; + } + return liftInSweep; + } + + public void setLiftCamera() { + usbCameraLiftGear.setBrightness(40); //40 for lift 70 for gear + usbCameraLiftGear.setExposureManual(25); //25 for lift 48 for gear + usbCameraLiftGear.setWhiteBalanceManual(10000); //10000 for lift 2800 for gear + usbCameraLiftGear.setFPS(20); + } + + public void sendToDashboard() { + if (Constants.LIFT_DEBUG) { + + SmartDashboard.putBoolean("L-Has Target", liftIsHasTarget()); + SmartDashboard.putBoolean("L-Is At Distance", liftIsAtDistance()); + SmartDashboard.putNumber("L-Center of Target", liftCurrentCenter); + SmartDashboard.putNumber("L-Rotation", rotate); + SmartDashboard.putNumber("L-Rotate Difference", liftRotateDiff); + SmartDashboard.putNumber("L-Distance Difference", liftMoveDiff); + SmartDashboard.putNumber("L-Sweep Counter", liftSweepCounter); + SmartDashboard.putNumber("L-SweepDirection", liftSweepDirection); + SmartDashboard.putBoolean("L-isCentered", liftIsCentered()); + SmartDashboard.putNumber("L-rectX", lrectX); + SmartDashboard.putNumber("L-rectY", lrectY); + SmartDashboard.putNumber("L-rectWidth", lrectWidth); + SmartDashboard.putNumber("L-rectHeight", lrectHeight); + SmartDashboard.putNumber("L-Distance To Target", liftCurrentDistance); + SmartDashboard.putNumber("L-pipelineSize", liftPipelineSize); + } + } + + public void initDefaultCommand() { + if (Constants.DEBUG) { + } + } + +} \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionLiftGear.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionLiftGear.java index 91375ef..fca249f 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionLiftGear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionLiftGear.java @@ -1,739 +1,760 @@ -package org.usfirst.frc.team708.robot.subsystems; - -import org.opencv.core.Rect; -import org.opencv.imgproc.Imgproc; -import org.usfirst.frc.team708.robot.AutoConstants; - -import org.usfirst.frc.team708.robot.Constants; -import org.usfirst.frc.team708.robot.Robot; -import org.usfirst.frc.team708.robot.commands.visionProcessor.GripPipelineLiftGear; -import org.usfirst.frc.team708.robot.util.Math708; - -import edu.wpi.cscore.AxisCamera; -import edu.wpi.cscore.CvSource; -import edu.wpi.cscore.UsbCamera; -import edu.wpi.first.wpilibj.CameraServer; -import edu.wpi.first.wpilibj.command.Subsystem; -import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; -import edu.wpi.first.wpilibj.tables.TableKeyNotDefinedException; -import edu.wpi.first.wpilibj.vision.VisionThread; - -/** - *@authors Viet & Sue - *This subsystem is specific to the 2017 Game FIRST Steamworks Lift Peg - */ - -public class VisionLiftGear extends Subsystem { - - // Camera Variables - private double fovDegrees = AutoConstants.USB_LIFT_FOV_DEGREES; // Field of View of the Camera - private double liftPipelineSize; // Number of Contours in the Pipline- 0 = target not in view - private double gearPipelineSize; - private int liftGearImageWidth = AutoConstants.USB_LIFT_IMG_WIDTH; // Width of image from camera stream - private int liftGearImageHeight = AutoConstants.USB_LIFT_IMG_HEIGHT; // Height of image from camera stream - - // Image OpenCV Image Processing Variables - private VisionThread visionThreadLiftGear; // vision processing thread - processes grip code for lift - private VisionThread visionThreadGear; // vision processing thread - processes grip code for gear - private final Object imgLockLift = new Object(); // vision Lift object - private final Object imgLockGear = new Object(); // vision Lift object - -// private AxisCamera axisCamera; // Axis Camera - private UsbCamera usbCameraLiftGear; // USB Camera - private CvSource outputStreamLift; // Output stream to the Dashboard - private CvSource outputStreamGear; // Output stream to the Dashboard - - - // Targeting variables - private int lrectX = 0; // the 4 values used which define the full rectangle around the target - private int lrectY = 0; - private int grectX = 0; - private int grectY = 0; - private int lrectWidth = 0; - private int lrectHeight = 0; - private int grectWidth = 0; - private int grectHeight = 0; - - private int lminX = 0; // the 4 values used to create maximum rectangle around the target (used when evaluating each of the contour images) - private int lminY = 0; - private int lmaxX = 0; - private int lmaxY = 0; - private int gminX = 0; // the 4 values used to create maximum rectangle around the target (used when evaluating each of the contour images) - private int gminY = 0; - private int gmaxX = 0; - private int gmaxY = 0; - - private boolean liftHasTarget = false; // flag indicating whether the robot sees the target - private boolean liftIsCentered = false; // flag indicating whether the robot sees the center of the target - private boolean liftIsAtDistance = false; // flag indicating whether the robot is at the correct distance from the target - private boolean gearHasTarget = false; - private boolean gearIsCentered = false; - private boolean gearIsAtDistance = false; - - private int liftTargetHeight = AutoConstants.LIFT_TARGET_HEIGHT; //height of actual target reflective tape - private int liftTargetWidth = AutoConstants.LIFT_TARGET_WIDTH; //width of actual target reflective tape - private int gearTargetHeight = AutoConstants.GEAR_TARGET_HEIGHT; //height of actual target reflective tape - private int gearTargetWidth = AutoConstants.GEAR_TARGET_WIDTH; //width of actual target reflective tape - - private double trueCenter = liftGearImageWidth/2; // horizontal value of the center of the camera image - private double liftDistanceToStop = AutoConstants.DISTANCE_TO_LIFT_TARGET; // distance to stop at in front of lift target - private double liftCurrentCenter = 0.0; // horizontal value of where robot is looking - private double liftCurrentDistance = 0.0; // distance robot is from the target - private double gearDistanceToStop = AutoConstants.DISTANCE_TO_GEAR; // distance to stop at in front of gear - private double gearCurrentCenter = 0.0; // horizontal value of where robot is looking - private double gearCurrentDistance = 0.0; // distance robot is from the target - - private double thresholdX = AutoConstants.X_THRESHOLD_CENTER; // threshold for determining center of the target - private double thresholdDistance = AutoConstants.DISTANCE_TARGET_THRESHOLD; // threshold for determining threshold for stopping at the lift peg - private double minThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MIN; // threshold for determining min value for whether the robot sees the target - private double maxThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MAX; // threshold for determining max value for whether the robot sees the target - - - // Sweep Variables - private boolean liftInSweep = false; // flag indicating whether the robot is sweeping left and right looking for the target - private double liftSweepDirection = 0.0; // value indicating the direction of the sweep -1 = right; 1 = left - private int liftSweepCounter = 0; // value indicating when the sweep will change direction - private boolean gearInSweep = false; // flag indicating whether the robot is sweeping left and right looking for the target - private double gearSweepDirection = 0.0; // value indicating the direction of the sweep -1 = right; 1 = left - private int gearSweepCounter = 0; // value indicating when the sweep will change direction - - - // drive variables - private double liftRotateDiff = 0; // for smartdashboard - how far away from center - private double liftMoveDiff = 0; // for smartdashboard - how far away from target - private double gearRotateDiff = 0; // for smartdashboard - how far away from center - private double gearMoveDiff = 0; // for smartdashboard - how far away from target - double rotate; // speed of the rotate being returned to the command - double move; // speed of the move forward being returned to the command - - // Vision Processing - public VisionLiftGear() { - super("Vision Processor"); - - - // define the Cameras: - // on little bot - cam2, 1 - // Pipeline outputs: hsl and 0 means lift, rgb and 1 means gear - usbCameraLiftGear=CameraServer.getInstance().startAutomaticCapture(AutoConstants.USB_CAMERA_ID, AutoConstants.USB_VIDEO_PORT); -// axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); - usbCameraLiftGear.setResolution(liftGearImageWidth, liftGearImageHeight); - - - // define the output stream on the smart dashboard - outputStreamLift = CameraServer.getInstance().putVideo("Target_Lift", liftGearImageWidth, liftGearImageHeight); - outputStreamGear = CameraServer.getInstance().putVideo("Target_Gear", liftGearImageWidth, liftGearImageHeight); - - // Vision thread which processes the image contours - visionThreadLiftGear = new VisionThread(usbCameraLiftGear, new GripPipelineLiftGear(), lgPipeline -> { - liftPipelineSize = lgPipeline.filterContours0Output().size(); - gearPipelineSize = lgPipeline.filterContours1Output().size(); - - // if the grip pipeline filter "filterContours0Output" sees the target - // loop through each contour image - // grab the bounding rectangle values of each contour - // to create the biggest rectangle around the 2 vertical retroreflective tapes - // on either side of the lift peg - if (!lgPipeline.filterContours0Output().isEmpty()) { - - for (int i = 0; i < lgPipeline.filterContours0Output().size(); i++) { - Rect lift = Imgproc.boundingRect(lgPipeline.filterContours0Output().get(i)); - - // set the min/max values to match the values form the 1st image - if (i == 0) { - lminX = lift.x; - lminY = lift.y; - lmaxX = lift.x + lift.width; - lmaxY = lift.y + lift.height; - } - - // compare each value to the min/max and replace if a better one is found - if (lift.x < lminX) { - lminX = lift.x; - } - if (lift.y < lminY) { - lminY = lift.y; - } - if (lift.x + lift.width > lmaxX) { - lmaxX = lift.x + lift.width; - } - if (lift.y + lift.height> lmaxY) { - lmaxY = lift.y + lift.height; - } - } - - - -// // this is a second method of looping through the contours in the filterContours0Output Array of Mat Images -// for (MatOfPoint contour : pipeline.filterContours0Output()) { -// Rect r = Imgproc.boundingRect(contour); -// if (r.x < minX) { -// minX = r.x; -// } +//package org.usfirst.frc.team708.robot.subsystems; +// +//import org.opencv.core.Rect; +//import org.opencv.imgproc.Imgproc; +//import org.usfirst.frc.team708.robot.AutoConstants; +// +//import org.usfirst.frc.team708.robot.Constants; +//import org.usfirst.frc.team708.robot.Robot; +//import org.usfirst.frc.team708.robot.commands.visionProcessor.GripPipelineLiftGear; +//import org.usfirst.frc.team708.robot.util.Math708; +// +//import edu.wpi.cscore.AxisCamera; +//import edu.wpi.cscore.CvSource; +//import edu.wpi.cscore.UsbCamera; +//import edu.wpi.first.wpilibj.CameraServer; +//import edu.wpi.first.wpilibj.command.Subsystem; +//import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; +//import edu.wpi.first.wpilibj.tables.TableKeyNotDefinedException; +//import edu.wpi.first.wpilibj.vision.VisionThread; +// +///** +// *@authors Viet & Sue +// *This subsystem is specific to the 2017 Game FIRST Steamworks Lift Peg +// */ +// +//public class VisionLiftGear extends Subsystem { +// +// // Camera Variables +// private double fovDegrees = AutoConstants.USB_LIFT_FOV_DEGREES; // Field of View of the Camera +// private double liftPipelineSize; // Number of Contours in the Pipline- 0 = target not in view +// private double gearPipelineSize; +// private int liftGearImageWidth = AutoConstants.USB_LIFT_IMG_WIDTH; // Width of image from camera stream +// private int liftGearImageHeight = AutoConstants.USB_LIFT_IMG_HEIGHT; // Height of image from camera stream +// +// // Image OpenCV Image Processing Variables +// private VisionThread visionThreadLiftGear; // vision processing thread - processes grip code for lift +// private VisionThread visionThreadGear; // vision processing thread - processes grip code for gear +// private final Object imgLockLift = new Object(); // vision Lift object +// private final Object imgLockGear = new Object(); // vision Lift object +// +//// private AxisCamera axisCamera; // Axis Camera +// private UsbCamera usbCameraLiftGear; // USB Camera +// private CvSource outputStreamLift; // Output stream to the Dashboard +// private CvSource outputStreamGear; // Output stream to the Dashboard +// +// +// // Targeting variables +// private int lrectX = 0; // the 4 values used which define the full rectangle around the target +// private int lrectY = 0; +// private int grectX = 0; +// private int grectY = 0; +// private int lrectWidth = 0; +// private int lrectHeight = 0; +// private int grectWidth = 0; +// private int grectHeight = 0; +// +// private int lminX = 0; // the 4 values used to create maximum rectangle around the target (used when evaluating each of the contour images) +// private int lminY = 0; +// private int lmaxX = 0; +// private int lmaxY = 0; +// private int gminX = 0; // the 4 values used to create maximum rectangle around the target (used when evaluating each of the contour images) +// private int gminY = 0; +// private int gmaxX = 0; +// private int gmaxY = 0; +// +// private boolean liftHasTarget = false; // flag indicating whether the robot sees the target +// private boolean liftIsCentered = false; // flag indicating whether the robot sees the center of the target +// private boolean liftIsAtDistance = false; // flag indicating whether the robot is at the correct distance from the target +// private boolean gearHasTarget = false; +// private boolean gearIsCentered = false; +// private boolean gearIsAtDistance = false; +// +// private int liftTargetHeight = AutoConstants.LIFT_TARGET_HEIGHT; //height of actual target reflective tape +// private int liftTargetWidth = AutoConstants.LIFT_TARGET_WIDTH; //width of actual target reflective tape +// private int gearTargetHeight = AutoConstants.GEAR_TARGET_HEIGHT; //height of actual target reflective tape +// private int gearTargetWidth = AutoConstants.GEAR_TARGET_WIDTH; //width of actual target reflective tape +// +// private double trueCenter = liftGearImageWidth/2; // horizontal value of the center of the camera image +// private double liftDistanceToStop = AutoConstants.DISTANCE_TO_LIFT_TARGET; // distance to stop at in front of lift target +// private double liftCurrentCenter = 0.0; // horizontal value of where robot is looking +// private double liftCurrentDistance = 0.0; // distance robot is from the target +// private double gearDistanceToStop = AutoConstants.DISTANCE_TO_GEAR; // distance to stop at in front of gear +// private double gearCurrentCenter = 0.0; // horizontal value of where robot is looking +// private double gearCurrentDistance = 0.0; // distance robot is from the target +// +// private double thresholdX = AutoConstants.X_THRESHOLD_CENTER; // threshold for determining center of the target +// private double thresholdDistance = AutoConstants.DISTANCE_TARGET_THRESHOLD; // threshold for determining threshold for stopping at the lift peg +// private double minThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MIN; // threshold for determining min value for whether the robot sees the target +// private double maxThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MAX; // threshold for determining max value for whether the robot sees the target +// +// +// // Sweep Variables +// private boolean liftInSweep = false; // flag indicating whether the robot is sweeping left and right looking for the target +// private double liftSweepDirection = 0.0; // value indicating the direction of the sweep -1 = right; 1 = left +// private int liftSweepCounter = 0; // value indicating when the sweep will change direction +// private boolean gearInSweep = false; // flag indicating whether the robot is sweeping left and right looking for the target +// private double gearSweepDirection = 0.0; // value indicating the direction of the sweep -1 = right; 1 = left +// private int gearSweepCounter = 0; // value indicating when the sweep will change direction +// +// +// // drive variables +// private double liftRotateDiff = 0; // for smartdashboard - how far away from center +// private double liftMoveDiff = 0; // for smartdashboard - how far away from target +// private double gearRotateDiff = 0; // for smartdashboard - how far away from center +// private double gearMoveDiff = 0; // for smartdashboard - how far away from target +// double rotate; // speed of the rotate being returned to the command +// double move; // speed of the move forward being returned to the command +// +// // Vision Processing +// public VisionLiftGear() { +// super("Vision Processor"); +// +// +// // define the Cameras: +// // on little bot - cam2, 1 +// // Pipeline outputs: hsl and 0 means lift, rgb and 1 means gear +// usbCameraLiftGear=CameraServer.getInstance().startAutomaticCapture(AutoConstants.USB_CAMERA_ID, AutoConstants.USB_VIDEO_PORT); +//// axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); +// usbCameraLiftGear.setResolution(liftGearImageWidth, liftGearImageHeight); +// +//// usbCameraLiftGear.setBrightness(40); //40 for lift 70 for gear +//// usbCameraLiftGear.setExposureManual(25); //25 for lift 48 for gear +//// usbCameraLiftGear.setWhiteBalanceManual(10000); //10000 for lift 2800 for gear +//// usbCameraLiftGear.setFPS(20); +// +// +// +// // define the output stream on the smart dashboard +// outputStreamLift = CameraServer.getInstance().putVideo("Target_Lift", liftGearImageWidth, liftGearImageHeight); +// outputStreamGear = CameraServer.getInstance().putVideo("Target_Gear", liftGearImageWidth, liftGearImageHeight); +// +// // Vision thread which processes the image contours +// visionThreadLiftGear = new VisionThread(usbCameraLiftGear, new GripPipelineLiftGear(), lgPipeline -> { +// liftPipelineSize = lgPipeline.findContours0Output().size(); +// gearPipelineSize = lgPipeline.filterContoursOutput().size(); +// +// // if the grip pipeline filter "filterContours0Output" sees the target +// // loop through each contour image +// // grab the bounding rectangle values of each contour +// // to create the biggest rectangle around the 2 vertical retroreflective tapes +// // on either side of the lift peg +// if (!lgPipeline.findContours0Output().isEmpty()) { +// +// for (int i = 0; i < lgPipeline.findContours0Output().size(); i++) { +// Rect lift = Imgproc.boundingRect(lgPipeline.findContours0Output().get(i)); +// +// // set the min/max values to match the values form the 1st image +// if (i == 0) { +// lminX = lift.x; +// lminY = lift.y; +// lmaxX = lift.x + lift.width; +// lmaxY = lift.y + lift.height; +// } +// +// // compare each value to the min/max and replace if a better one is found +// if (lift.x < lminX) { +// lminX = lift.x; +// } +// if (lift.y < lminY) { +// lminY = lift.y; +// } +// if (lift.x + lift.width > lmaxX) { +// lmaxX = lift.x + lift.width; +// } +// if (lift.y + lift.height> lmaxY) { +// lmaxY = lift.y + lift.height; +// } // } - - - - synchronized (imgLockLift) { - liftCurrentCenter = lminX + ((lmaxX - lminX) / 2); - - // set values for the smartdashboard - lrectX = lminX; - lrectY = lminY; - lrectWidth = lmaxX - lminX; - lrectHeight = lmaxY - lminY; - - // note - this formula was pulled from 1640's github code - need to find the specific reference - // from 1640 - //Equation to determine the distance from a target (d) given the width in pixels of a vision target in the camera image (w): - // d = (TARGET_WIDTH*CAMERA_IMAGE_WIDTH)/(2*tan(FOV_ANGLE/2)*w) - // i.e. d and w are inversely related. - liftCurrentDistance = liftTargetWidth * liftGearImageWidth / (2*(Math.tan(Math.toRadians(fovDegrees))/2)*lrectWidth); - - // display the current image on the driver station - - -// outputStreamLift.putFrame(lgPipeline.hslThresholdOutput()); - outputStreamLift.putFrame(lgPipeline.resizeImageOutput()); - } - } - - // the target is not in the camera (ie, pipeline is empty) - else { - liftHasTarget = false; - lminX = 0; - lminY = 0; - lmaxX = 0; - lmaxY = 0; - } - - if (!lgPipeline.filterContours1Output().isEmpty()) { - - for (int i = 0; i < lgPipeline.filterContours1Output().size(); i++) { - Rect gear = Imgproc.boundingRect(lgPipeline.filterContours1Output().get(i)); - - // set the min/max values to match the values form the 1st image - if (i == 0) { - gminX = gear.x; - gminY = gear.y; - gmaxX = gear.x + gear.width; - gmaxY = gear.y + gear.height; - } - - // compare each value to the min/max and replace if a better one is found - if (gear.x < lminX) { - gminX = gear.x; - } - if (gear.y < gminY) { - gminY = gear.y; - } - if (gear.x + gear.width > gmaxX) { - gmaxX = gear.x + gear.width; - } - if (gear.y + gear.height> gmaxY) { - gmaxY = gear.y + gear.height; - } - } - -// // this is a second method of looping through the contours in the filterContours0Output Array of Mat Images -// for (MatOfPoint contour : pipeline.filterContours1Output()) { -// Rect r = Imgproc.boundingRect(contour); -// if (r.x < minX) { -// minX = r.x; -// } -// } - - - - synchronized (imgLockGear) { - gearCurrentCenter = gminX + ((gmaxX - gminX) / 2); - - // set values for the smartdashboard - grectX = gminX; - grectY = gminY; - grectWidth = gmaxX - gminX; - grectHeight = gmaxY - gminY; - - // note - this formula was pulled from 1640's github code - need to find the specific reference - // from 1640 - //Equation to determine the distance from a target (d) given the width in pixels of a vision target in the camera image (w): - // d = (TARGET_WIDTH*CAMERA_IMAGE_WIDTH)/(2*tan(FOV_ANGLE/2)*w) - // i.e. d and w are inversely related. - gearCurrentDistance = gearTargetWidth * liftGearImageWidth / (2*(Math.tan(Math.toRadians(fovDegrees))/2)*grectWidth); - - // display the current image on the driver station - - -// outputStreamGear.putFrame(lgPipeline.rgbThresholdOutput()); - outputStreamLift.putFrame(lgPipeline.resizeImageOutput()); - } - } - - // the target is not in the camera (ie, pipeline is empty) - else { - gearHasTarget = false; - gminX = 0; - gminY = 0; - gmaxX = 0; - gmaxY = 0; - } - - }); - visionThreadLiftGear.start(); - } - - /* - * liftProcessData - * Method to interpret the camera data received above - */ - public void liftProcessData() { - try { - - // use the sonar to get the distance from the target (backup plan if camera distance not available) - // currentDistance=Robot.drivetrain.getSonarDistance(); - - // if robot sees the target (current X between its min and max) - if ((liftCurrentCenter > minThresholdX) && (liftCurrentCenter < maxThresholdX)) { - liftHasTarget = true; - } - else { - liftHasTarget = false; - } - - } catch (TableKeyNotDefinedException e) { - e.printStackTrace(); - } - } - - /* - * isCentered - * Method to determine whether the robot sees the center of the target (within the threshold value) - */ - public boolean liftIsCentered() { - - // if the robot sees the target - // determine whether the horizontal value the robot sees is within the threshold defining the center of the target - // set isCentered according to whether the robot is aligned with the center of the target - if (liftHasTarget) - { - - double difference = trueCenter - (liftCurrentCenter); - if (Math.abs(difference) <= thresholdX) { - liftIsCentered = true; - } - else if (Math.abs(difference) > thresholdX) { - liftIsCentered = false; - } - liftRotateDiff = difference; - } - else{ - liftIsCentered = false; - } - - return liftIsCentered; - } - - /* - * getRotate - * Method to determine whether the robot is at the center of the target so it can drive towards target - */ - public double liftGetRotate() { - double difference=0; - - // currently we are only running 1 cycle of the sweep and stopping - // if in the future additional sweeps are required, this is where the reset should occur - // if (sweepCounter > 400){ - // sweepCounter = 0; - // } - - // if robot sees target and is centered - no need to rotate the robot - if (liftHasTarget && liftIsCentered) - { - rotate = 0.0; - } - - // if the robot sees the target but is not centered - // check to see whether the robot is within the threshold - // rotate based on the math function - else if (liftHasTarget && !liftIsCentered){ - difference = trueCenter - (liftCurrentCenter); - - rotate = Math708.getClippedPercentError(liftCurrentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); - - - if (Math.abs(difference) > thresholdX) { - if (liftCurrentCenter < trueCenter){ - rotate = Math.abs(rotate); - } - else { - rotate = Math.abs(rotate) * -1; - } - } - } - - // if the robot does not have the target - // begin the sweep - // sweep is defined as rotating the robot right, left, right in predefined counts - // if in the sweep the robot does not find the target, it stops after 3 sweeps - // otherwise it will jump back into the hasTarget logic identified above - else if (!liftHasTarget){ - if (Math.abs(liftSweepDirection) < .1){ - liftSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; - rotate = -AutoConstants.SWEEP_ROTATE; - } - else if (liftSweepDirection > AutoConstants.SWEEP1_MIN){ - if ((liftSweepCounter >= AutoConstants.SWEEP1_MIN && liftSweepCounter <= AutoConstants.SWEEP1_MAX) - || (liftSweepCounter >= AutoConstants.SWEEP3_MIN && liftSweepCounter <= AutoConstants.SWEEP3_MAX)){ - - rotate = -AutoConstants.SWEEP_ROTATE; - if (liftSweepCounter== AutoConstants.SWEEP1_MAX || liftSweepCounter== AutoConstants.SWEEP3_MAX){ - liftSweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; - } - } - } - else { - if (liftSweepCounter >= AutoConstants.SWEEP2_MIN && liftSweepCounter <= AutoConstants.SWEEP2_MAX) - rotate = AutoConstants.SWEEP_ROTATE; - if (liftSweepCounter== AutoConstants.SWEEP2_MAX){ - liftSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; - } - } - - liftSweepCounter++; - } - liftRotateDiff = difference; - return rotate; - } - - /* - * getMove - * Method to determine if the robot is close enough to target so it can stop - */ - - public double liftGetMove() { - - // if the robot sees the target - // Method to determine whether the robot is at the correct distance to the target so stop - if (liftHasTarget) - { - double difference = liftDistanceToStop - liftCurrentDistance; - move = Math708.getClippedPercentError(liftCurrentDistance, liftDistanceToStop, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); - - //Check if target is at correct distance within threshold - if (Math.abs(difference) <= thresholdDistance) { - move = 0.0; - liftIsAtDistance = true; - } else { - liftIsAtDistance = false; - } - liftMoveDiff = difference; - } else { - move = 0.0; - } - - return move; - } - - /* - * liftProcessData - * Method to interpret the camera data received above - */ - public void gearProcessData() { - try { - - // use the sonar to get the distance from the target (backup plan if camera distance not available) - // currentDistance=Robot.drivetrain.getSonarDistance(); - - // if robot sees the target (current X between its min and max) - if ((gearCurrentCenter > minThresholdX) && (gearCurrentCenter < maxThresholdX)) { - gearHasTarget = true; - } - else { - gearHasTarget = false; - } - - } catch (TableKeyNotDefinedException e) { - e.printStackTrace(); - } - } - - /* - * isCentered - * Method to determine whether the robot sees the center of the target (within the threshold value) - */ - public boolean gearIsCentered() { - - // if the robot sees the target - // determine whether the horizontal value the robot sees is within the threshold defining the center of the target - // set isCentered according to whether the robot is aligned with the center of the target - if (gearHasTarget) - { - - double difference = trueCenter - (gearCurrentCenter); - if (Math.abs(difference) <= thresholdX) { - gearIsCentered = true; - } - else if (Math.abs(difference) > thresholdX) { - gearIsCentered = false; - } - gearRotateDiff = difference; - } - else{ - gearIsCentered = false; - } - - return gearIsCentered; - } - - /* - * getRotate - * Method to determine whether the robot is at the center of the target so it can drive towards target - */ - public double gearGetRotate() { - double difference=0; - - // currently we are only running 1 cycle of the sweep and stopping - // if in the future additional sweeps are required, this is where the reset should occur - // if (sweepCounter > 400){ - // sweepCounter = 0; - // } - - // if robot sees target and is centered - no need to rotate the robot - if (gearHasTarget && gearIsCentered) - { - rotate = 0.0; - } - - // if the robot sees the target but is not centered - // check to see whether the robot is within the threshold - // rotate based on the math function - else if (gearHasTarget && !gearIsCentered){ - difference = trueCenter - (gearCurrentCenter); - - rotate = Math708.getClippedPercentError(gearCurrentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); - - - if (Math.abs(difference) > thresholdX) { - if (gearCurrentCenter < trueCenter){ - rotate = Math.abs(rotate); - } - else { - rotate = Math.abs(rotate) * -1; - } - } - } - - // if the robot does not have the target - // begin the sweep - // sweep is defined as rotating the robot right, left, right in predefined counts - // if in the sweep the robot does not find the target, it stops after 3 sweeps - // otherwise it will jump back into the hasTarget logic identified above - else if (!gearHasTarget){ - if (Math.abs(gearSweepDirection) < .1){ - gearSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; - rotate = -AutoConstants.SWEEP_ROTATE; - } - else if (gearSweepDirection > AutoConstants.SWEEP1_MIN){ - if ((gearSweepCounter >= AutoConstants.SWEEP1_MIN && liftSweepCounter <= AutoConstants.SWEEP1_MAX) - || (gearSweepCounter >= AutoConstants.SWEEP3_MIN && liftSweepCounter <= AutoConstants.SWEEP3_MAX)){ - - rotate = -AutoConstants.SWEEP_ROTATE; - if (gearSweepCounter== AutoConstants.SWEEP1_MAX || liftSweepCounter== AutoConstants.SWEEP3_MAX){ - gearSweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; - } - } - } - else { - if (gearSweepCounter >= AutoConstants.SWEEP2_MIN && liftSweepCounter <= AutoConstants.SWEEP2_MAX) - rotate = AutoConstants.SWEEP_ROTATE; - if (gearSweepCounter== AutoConstants.SWEEP2_MAX){ - gearSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; - } - } - - gearSweepCounter++; - } - gearRotateDiff = difference; - return rotate; - } - - /* - * getMove - * Method to determine if the robot is close enough to target so it can stop - */ - - public double gearGetMove() { - - // if the robot sees the target - // Method to determine whether the robot is at the correct distance to the target so stop - if (gearHasTarget) - { - double difference = gearDistanceToStop - gearCurrentDistance; - move = Math708.getClippedPercentError(gearCurrentDistance, gearDistanceToStop, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); - - //Check if target is at correct distance within threshold - if (Math.abs(difference) <= thresholdDistance) { - move = 0.0; - gearIsAtDistance = true; - } else { - gearIsAtDistance = false; - } - gearMoveDiff = difference; - } else { - move = 0.0; - } - - return move; - } - - /** - * GETTERS and PUTTERS to return the private variables - * @return - */ - - - public boolean liftIsAtDistance() { - double difference = liftDistanceToStop - liftCurrentDistance; - //Check if target is at correct level within threshold - if (Math.abs(difference) <= thresholdDistance) { - liftIsAtDistance = true; - } else { - liftIsAtDistance = false; - } - return liftIsAtDistance; - } - - public boolean gearIsAtDistance() { - double difference = gearDistanceToStop - gearCurrentDistance; - //Check if target is at correct level within threshold - if (Math.abs(difference) <= thresholdDistance) { - gearIsAtDistance = true; - } else { - gearIsAtDistance = false; - } - return gearIsAtDistance; - } - - public boolean liftIsHasTarget() { - return liftHasTarget; - } - - public boolean gearIsHasTarget() { - return gearHasTarget; - } - - public void putLiftHasTarget(boolean lht) { - liftHasTarget = lht; - } - - public void putGearHasTarget(boolean ght) { - gearHasTarget = ght; - } - - public void putLiftCurrentCenter(double lcc) { - liftCurrentCenter = lcc; - } - - public void putGearCurrentCenter(double gcc) { - gearCurrentCenter = gcc; - } - - public int getLiftCounter() { - return liftSweepCounter; - } - - public int getGearCounter() { - return gearSweepCounter; - } - - public void putLiftCounter(int lct) { - liftSweepCounter = lct; - } - - public void putGearCounter(int gct) { - gearSweepCounter = gct; - } - - public void putLiftIsCentered(boolean lic) { - liftIsCentered = lic; - } - - public void putGearIsCentered(boolean gic) { - gearIsCentered = gic; - } - - public void putLiftAtDistance(boolean lad) { - liftIsAtDistance = lad; - } - - public void putGearAtDistance(boolean gad) { - gearIsAtDistance = gad; - } - - public boolean liftIsInSweep() { - if (liftHasTarget) { - liftInSweep = false; - liftSweepCounter=1; - } - else { - liftInSweep = true; - } - return liftInSweep; - } - - public boolean gearIsInSweep() { - if (gearHasTarget) { - gearInSweep = false; - gearSweepCounter=1; - } - else { - gearInSweep = true; - } - return gearInSweep; - } - - public void sendToDashboard() { - if (Constants.LIFT_DEBUG) { - - SmartDashboard.putBoolean("L-Has Target", liftIsHasTarget()); - SmartDashboard.putBoolean("L-Is At Distance", liftIsAtDistance()); - SmartDashboard.putNumber("L-Center of Target", liftCurrentCenter); - SmartDashboard.putNumber("L-Rotation", rotate); - SmartDashboard.putNumber("L-Rotate Difference", liftRotateDiff); - SmartDashboard.putNumber("L-Distance Difference", liftMoveDiff); - SmartDashboard.putNumber("L-Sweep Counter", liftSweepCounter); - SmartDashboard.putNumber("L-SweepDirection", liftSweepDirection); - SmartDashboard.putBoolean("L-isCentered", liftIsCentered()); - SmartDashboard.putNumber("L-rectX", lrectX); - SmartDashboard.putNumber("L-rectY", lrectY); - SmartDashboard.putNumber("L-rectWidth", lrectWidth); - SmartDashboard.putNumber("L-rectHeight", lrectHeight); - SmartDashboard.putNumber("L-Distance To Target", liftCurrentDistance); - SmartDashboard.putNumber("L-pipelineSize", liftPipelineSize); - } - if (Constants.GEAR_DEBUG) { - - SmartDashboard.putBoolean("G-Has Target", gearIsHasTarget()); - SmartDashboard.putBoolean("G-Is At Distance", gearIsAtDistance()); - SmartDashboard.putNumber("G-Center of Target", gearCurrentCenter); - SmartDashboard.putNumber("G-Rotation", rotate); - SmartDashboard.putNumber("G-Move", move); - SmartDashboard.putNumber("G-Rotate Difference", gearRotateDiff); - SmartDashboard.putNumber("G-Distance Difference", gearMoveDiff); - SmartDashboard.putNumber("G-Sweep Counter", gearSweepCounter); - SmartDashboard.putNumber("G-SweepDirection", gearSweepDirection); - SmartDashboard.putBoolean("G-isCentered", gearIsCentered()); - SmartDashboard.putNumber("G-rectX", grectX); - SmartDashboard.putNumber("G-rectY", grectY); - SmartDashboard.putNumber("G-rectWidth", grectWidth); - SmartDashboard.putNumber("G-rectHeight", grectHeight); - SmartDashboard.putNumber("G-Distance To Target", gearCurrentDistance); - SmartDashboard.putNumber("G-pipelineSize", gearPipelineSize); - } - } - - public void initDefaultCommand() { - if (Constants.LIFT_DEBUG) { - } - } - -} \ No newline at end of file +// +// +// +//// // this is a second method of looping through the contours in the filterContours0Output Array of Mat Images +//// for (MatOfPoint contour : pipeline.filterContours0Output()) { +//// Rect r = Imgproc.boundingRect(contour); +//// if (r.x < minX) { +//// minX = r.x; +//// } +//// } +// +// +// +// synchronized (imgLockLift) { +// liftCurrentCenter = lminX + ((lmaxX - lminX) / 2); +// +// // set values for the smartdashboard +// lrectX = lminX; +// lrectY = lminY; +// lrectWidth = lmaxX - lminX; +// lrectHeight = lmaxY - lminY; +// +// // note - this formula was pulled from 1640's github code - need to find the specific reference +// // from 1640 +// //Equation to determine the distance from a target (d) given the width in pixels of a vision target in the camera image (w): +// // d = (TARGET_WIDTH*CAMERA_IMAGE_WIDTH)/(2*tan(FOV_ANGLE/2)*w) +// // i.e. d and w are inversely related. +// liftCurrentDistance = liftTargetWidth * liftGearImageWidth / (2*(Math.tan(Math.toRadians(fovDegrees))/2)*lrectWidth); +// +// // display the current image on the driver station +// +// +//// outputStreamLift.putFrame(lgPipeline.hslThresholdOutput()); +// outputStreamLift.putFrame(lgPipeline.resizeImageOutput()); +// } +// } +// +// // the target is not in the camera (ie, pipeline is empty) +// else { +// liftHasTarget = false; +// lminX = 0; +// lminY = 0; +// lmaxX = 0; +// lmaxY = 0; +// } +// +// if (!lgPipeline.filterContoursOutput().isEmpty()) { +// +// for (int i = 0; i < lgPipeline.filterContoursOutput().size(); i++) { +// Rect gear = Imgproc.boundingRect(lgPipeline.filterContoursOutput().get(i)); +// +// // set the min/max values to match the values form the 1st image +// if (i == 0) { +// gminX = gear.x; +// gminY = gear.y; +// gmaxX = gear.x + gear.width; +// gmaxY = gear.y + gear.height; +// } +// +// // compare each value to the min/max and replace if a better one is found +// if (gear.x < lminX) { +// gminX = gear.x; +// } +// if (gear.y < gminY) { +// gminY = gear.y; +// } +// if (gear.x + gear.width > gmaxX) { +// gmaxX = gear.x + gear.width; +// } +// if (gear.y + gear.height> gmaxY) { +// gmaxY = gear.y + gear.height; +// } +// } +// +//// // this is a second method of looping through the contours in the filterContours0Output Array of Mat Images +//// for (MatOfPoint contour : pipeline.filterContours1Output()) { +//// Rect r = Imgproc.boundingRect(contour); +//// if (r.x < minX) { +//// minX = r.x; +//// } +//// } +// +// +// +// synchronized (imgLockGear) { +// gearCurrentCenter = gminX + ((gmaxX - gminX) / 2); +// +// // set values for the smartdashboard +// grectX = gminX; +// grectY = gminY; +// grectWidth = gmaxX - gminX; +// grectHeight = gmaxY - gminY; +// +// // note - this formula was pulled from 1640's github code - need to find the specific reference +// // from 1640 +// //Equation to determine the distance from a target (d) given the width in pixels of a vision target in the camera image (w): +// // d = (TARGET_WIDTH*CAMERA_IMAGE_WIDTH)/(2*tan(FOV_ANGLE/2)*w) +// // i.e. d and w are inversely related. 10 * 320 / +// gearCurrentDistance = gearTargetWidth * liftGearImageWidth / (2*(Math.tan(Math.toRadians(fovDegrees))/2)*grectWidth); +// +// // display the current image on the driver station +// +// +//// outputStreamGear.putFrame(lgPipeline.rgbThresholdOutput()); +//// outputStreamLift.putFrame(lgPipeline.resizeImageOutput()); +// } +// } +// +// // the target is not in the camera (ie, pipeline is empty) +// else { +// gearHasTarget = false; +// gminX = 0; +// gminY = 0; +// gmaxX = 0; +// gmaxY = 0; +// } +// +// }); +// visionThreadLiftGear.start(); +// } +// +// /* +// * liftProcessData +// * Method to interpret the camera data received above +// */ +// public void liftProcessData() { +// try { +// +// // use the sonar to get the distance from the target (backup plan if camera distance not available) +// // currentDistance=Robot.drivetrain.getSonarDistance(); +// +// // if robot sees the target (current X between its min and max) +// if ((liftCurrentCenter > minThresholdX) && (liftCurrentCenter < maxThresholdX)) { +// liftHasTarget = true; +// } +// else { +// liftHasTarget = false; +// } +// +// } catch (TableKeyNotDefinedException e) { +// e.printStackTrace(); +// } +// } +// +// /* +// * isCentered +// * Method to determine whether the robot sees the center of the target (within the threshold value) +// */ +// public boolean liftIsCentered() { +// +// // if the robot sees the target +// // determine whether the horizontal value the robot sees is within the threshold defining the center of the target +// // set isCentered according to whether the robot is aligned with the center of the target +// if (liftHasTarget) +// { +// +// double difference = trueCenter - (liftCurrentCenter); +// if (Math.abs(difference) <= thresholdX) { +// liftIsCentered = true; +// } +// else if (Math.abs(difference) > thresholdX) { +// liftIsCentered = false; +// } +// liftRotateDiff = difference; +// } +// else{ +// liftIsCentered = false; +// } +// +// return liftIsCentered; +// } +// +// /* +// * getRotate +// * Method to determine whether the robot is at the center of the target so it can drive towards target +// */ +// public double liftGetRotate() { +// double difference=0; +// +// // currently we are only running 1 cycle of the sweep and stopping +// // if in the future additional sweeps are required, this is where the reset should occur +// // if (sweepCounter > 400){ +// // sweepCounter = 0; +// // } +// +// // if robot sees target and is centered - no need to rotate the robot +// if (liftHasTarget && liftIsCentered) +// { +// rotate = 0.0; +// } +// +// // if the robot sees the target but is not centered +// // check to see whether the robot is within the threshold +// // rotate based on the math function +// else if (liftHasTarget && !liftIsCentered){ +// difference = trueCenter - (liftCurrentCenter); +// +// rotate = Math708.getClippedPercentError(liftCurrentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); +// +// +// if (Math.abs(difference) > thresholdX) { +// if (liftCurrentCenter < trueCenter){ +// rotate = Math.abs(rotate); +// } +// else { +// rotate = Math.abs(rotate) * -1; +// } +// } +// } +// +// // if the robot does not have the target +// // begin the sweep +// // sweep is defined as rotating the robot right, left, right in predefined counts +// // if in the sweep the robot does not find the target, it stops after 3 sweeps +// // otherwise it will jump back into the hasTarget logic identified above +// else if (!liftHasTarget){ +// if (Math.abs(liftSweepDirection) < .1){ +// liftSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; +// rotate = -AutoConstants.SWEEP_ROTATE; +// } +// else if (liftSweepDirection > AutoConstants.SWEEP1_MIN){ +// if ((liftSweepCounter >= AutoConstants.SWEEP1_MIN && liftSweepCounter <= AutoConstants.SWEEP1_MAX) +// || (liftSweepCounter >= AutoConstants.SWEEP3_MIN && liftSweepCounter <= AutoConstants.SWEEP3_MAX)){ +// +// rotate = -AutoConstants.SWEEP_ROTATE; +// if (liftSweepCounter== AutoConstants.SWEEP1_MAX || liftSweepCounter== AutoConstants.SWEEP3_MAX){ +// liftSweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; +// } +// } +// } +// else { +// if (liftSweepCounter >= AutoConstants.SWEEP2_MIN && liftSweepCounter <= AutoConstants.SWEEP2_MAX) +// rotate = AutoConstants.SWEEP_ROTATE; +// if (liftSweepCounter== AutoConstants.SWEEP2_MAX){ +// liftSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; +// } +// } +// +// liftSweepCounter++; +// } +// liftRotateDiff = difference; +// return rotate; +// } +// +// /* +// * getMove +// * Method to determine if the robot is close enough to target so it can stop +// */ +// +// public double liftGetMove() { +// +// // if the robot sees the target +// // Method to determine whether the robot is at the correct distance to the target so stop +// if (liftHasTarget) +// { +// double difference = liftDistanceToStop - liftCurrentDistance; +// move = Math708.getClippedPercentError(liftCurrentDistance, liftDistanceToStop, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); +// +// //Check if target is at correct distance within threshold +// if (Math.abs(difference) <= thresholdDistance) { +// move = 0.0; +// liftIsAtDistance = true; +// } else { +// liftIsAtDistance = false; +// } +// liftMoveDiff = difference; +// } else { +// move = 0.0; +// } +// +// return move; +// } +// +// /* +// * liftProcessData +// * Method to interpret the camera data received above +// */ +// public void gearProcessData() { +// try { +// +// // use the sonar to get the distance from the target (backup plan if camera distance not available) +// // currentDistance=Robot.drivetrain.getSonarDistance(); +// +// // if robot sees the target (current X between its min and max) +// if ((gearCurrentCenter > minThresholdX) && (gearCurrentCenter < maxThresholdX)) { +// gearHasTarget = true; +// } +// else { +// gearHasTarget = false; +// } +// +// } catch (TableKeyNotDefinedException e) { +// e.printStackTrace(); +// } +// } +// +// /* +// * isCentered +// * Method to determine whether the robot sees the center of the target (within the threshold value) +// */ +// public boolean gearIsCentered() { +// +// // if the robot sees the target +// // determine whether the horizontal value the robot sees is within the threshold defining the center of the target +// // set isCentered according to whether the robot is aligned with the center of the target +// if (gearHasTarget) +// { +// +// double difference = trueCenter - (gearCurrentCenter); +// if (Math.abs(difference) <= thresholdX) { +// gearIsCentered = true; +// } +// else if (Math.abs(difference) > thresholdX) { +// gearIsCentered = false; +// } +// gearRotateDiff = difference; +// } +// else{ +// gearIsCentered = false; +// } +// +// return gearIsCentered; +// } +// +// /* +// * getRotate +// * Method to determine whether the robot is at the center of the target so it can drive towards target +// */ +// public double gearGetRotate() { +// double difference=0; +// +// // currently we are only running 1 cycle of the sweep and stopping +// // if in the future additional sweeps are required, this is where the reset should occur +// // if (sweepCounter > 400){ +// // sweepCounter = 0; +// // } +// +// // if robot sees target and is centered - no need to rotate the robot +// if (gearHasTarget && gearIsCentered) +// { +// rotate = 0.0; +// } +// +// // if the robot sees the target but is not centered +// // check to see whether the robot is within the threshold +// // rotate based on the math function +// else if (gearHasTarget && !gearIsCentered){ +// difference = trueCenter - (gearCurrentCenter); +// +// rotate = Math708.getClippedPercentError(gearCurrentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); +// +// +// if (Math.abs(difference) > thresholdX) { +// if (gearCurrentCenter < trueCenter){ +// rotate = Math.abs(rotate); +// } +// else { +// rotate = Math.abs(rotate) * -1; +// } +// } +// } +// +// // if the robot does not have the target +// // begin the sweep +// // sweep is defined as rotating the robot right, left, right in predefined counts +// // if in the sweep the robot does not find the target, it stops after 3 sweeps +// // otherwise it will jump back into the hasTarget logic identified above +// else if (!gearHasTarget){ +// if (Math.abs(gearSweepDirection) < .1){ +// gearSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; +// rotate = -AutoConstants.SWEEP_ROTATE; +// } +// else if (gearSweepDirection > AutoConstants.SWEEP1_MIN){ +// if ((gearSweepCounter >= AutoConstants.SWEEP1_MIN && liftSweepCounter <= AutoConstants.SWEEP1_MAX) +// || (gearSweepCounter >= AutoConstants.SWEEP3_MIN && liftSweepCounter <= AutoConstants.SWEEP3_MAX)){ +// +// rotate = -AutoConstants.SWEEP_ROTATE; +// if (gearSweepCounter== AutoConstants.SWEEP1_MAX || liftSweepCounter== AutoConstants.SWEEP3_MAX){ +// gearSweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; +// } +// } +// } +// else { +// if (gearSweepCounter >= AutoConstants.SWEEP2_MIN && liftSweepCounter <= AutoConstants.SWEEP2_MAX) +// rotate = AutoConstants.SWEEP_ROTATE; +// if (gearSweepCounter== AutoConstants.SWEEP2_MAX){ +// gearSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; +// } +// } +// +// gearSweepCounter++; +// } +// gearRotateDiff = difference; +// return rotate; +// } +// +// /* +// * getMove +// * Method to determine if the robot is close enough to target so it can stop +// */ +// +// public double gearGetMove() { +// +// // if the robot sees the target +// // Method to determine whether the robot is at the correct distance to the target so stop +// if (gearHasTarget) +// { +// double difference = gearDistanceToStop - gearCurrentDistance; +// move = Math708.getClippedPercentError(gearCurrentDistance, gearDistanceToStop, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); +// +// //Check if target is at correct distance within threshold +// if (Math.abs(difference) <= thresholdDistance) { +// move = 0.0; +// gearIsAtDistance = true; +// } else { +// gearIsAtDistance = false; +// } +// gearMoveDiff = difference; +// } else { +// move = 0.0; +// } +// +// return move; +// } +// +// /** +// * GETTERS and PUTTERS to return the private variables +// * @return +// */ +// +// +// public boolean liftIsAtDistance() { +// double difference = liftDistanceToStop - liftCurrentDistance; +// //Check if target is at correct level within threshold +// if (Math.abs(difference) <= thresholdDistance) { +// liftIsAtDistance = true; +// } else { +// liftIsAtDistance = false; +// } +// return liftIsAtDistance; +// } +// +// public boolean gearIsAtDistance() { +// double difference = gearDistanceToStop - gearCurrentDistance; +// //Check if target is at correct level within threshold +// if (Math.abs(difference) <= thresholdDistance) { +// gearIsAtDistance = true; +// } else { +// gearIsAtDistance = false; +// } +// return gearIsAtDistance; +// } +// +// public boolean liftIsHasTarget() { +// return liftHasTarget; +// } +// +// public boolean gearIsHasTarget() { +// return gearHasTarget; +// } +// +// public void putLiftHasTarget(boolean lht) { +// liftHasTarget = lht; +// } +// +// public void putGearHasTarget(boolean ght) { +// gearHasTarget = ght; +// } +// +// public void putLiftCurrentCenter(double lcc) { +// liftCurrentCenter = lcc; +// } +// +// public void putGearCurrentCenter(double gcc) { +// gearCurrentCenter = gcc; +// } +// +// public int getLiftCounter() { +// return liftSweepCounter; +// } +// +// public int getGearCounter() { +// return gearSweepCounter; +// } +// +// public void putLiftCounter(int lct) { +// liftSweepCounter = lct; +// } +// +// public void putGearCounter(int gct) { +// gearSweepCounter = gct; +// } +// +// public void putLiftIsCentered(boolean lic) { +// liftIsCentered = lic; +// } +// +// public void putGearIsCentered(boolean gic) { +// gearIsCentered = gic; +// } +// +// public void putLiftAtDistance(boolean lad) { +// liftIsAtDistance = lad; +// } +// +// public void putGearAtDistance(boolean gad) { +// gearIsAtDistance = gad; +// } +// +// public boolean liftIsInSweep() { +// if (liftHasTarget) { +// liftInSweep = false; +// liftSweepCounter=1; +// } +// else { +// liftInSweep = true; +// } +// return liftInSweep; +// } +// +// public boolean gearIsInSweep() { +// if (gearHasTarget) { +// gearInSweep = false; +// gearSweepCounter=1; +// } +// else { +// gearInSweep = true; +// } +// return gearInSweep; +// } +// +// +// public void setLiftCamera() { +// usbCameraLiftGear.setBrightness(40); //40 for lift 70 for gear +// usbCameraLiftGear.setExposureManual(25); //25 for lift 48 for gear +// usbCameraLiftGear.setWhiteBalanceManual(10000); //10000 for lift 2800 for gear +// usbCameraLiftGear.setFPS(20); +// } +// +// public void setGearCamera() { +// usbCameraLiftGear.setBrightness(70); //40 for lift 70 for gear +// usbCameraLiftGear.setExposureManual(48); //25 for lift 48 for gear +// usbCameraLiftGear.setWhiteBalanceManual(2800); //10000 for lift 2800 for gear +// usbCameraLiftGear.setFPS(20); +// } +// +// public void sendToDashboard() { +// if (Constants.LIFT_DEBUG) { +// +// SmartDashboard.putBoolean("L-Has Target", liftIsHasTarget()); +// SmartDashboard.putBoolean("L-Is At Distance", liftIsAtDistance()); +// SmartDashboard.putNumber("L-Center of Target", liftCurrentCenter); +// SmartDashboard.putNumber("L-Rotation", rotate); +// SmartDashboard.putNumber("L-Rotate Difference", liftRotateDiff); +// SmartDashboard.putNumber("L-Distance Difference", liftMoveDiff); +// SmartDashboard.putNumber("L-Sweep Counter", liftSweepCounter); +// SmartDashboard.putNumber("L-SweepDirection", liftSweepDirection); +// SmartDashboard.putBoolean("L-isCentered", liftIsCentered()); +// SmartDashboard.putNumber("L-rectX", lrectX); +// SmartDashboard.putNumber("L-rectY", lrectY); +// SmartDashboard.putNumber("L-rectWidth", lrectWidth); +// SmartDashboard.putNumber("L-rectHeight", lrectHeight); +// SmartDashboard.putNumber("L-Distance To Target", liftCurrentDistance); +// SmartDashboard.putNumber("L-pipelineSize", liftPipelineSize); +// } +// if (Constants.GEAR_DEBUG) { +// +// SmartDashboard.putBoolean("G-Has Target", gearIsHasTarget()); +// SmartDashboard.putBoolean("G-Is At Distance", gearIsAtDistance()); +// SmartDashboard.putNumber("G-Center of Target", gearCurrentCenter); +// SmartDashboard.putNumber("G-Rotation", rotate); +// SmartDashboard.putNumber("G-Move", move); +// SmartDashboard.putNumber("G-Rotate Difference", gearRotateDiff); +// SmartDashboard.putNumber("G-Distance Difference", gearMoveDiff); +// SmartDashboard.putNumber("G-Sweep Counter", gearSweepCounter); +// SmartDashboard.putNumber("G-SweepDirection", gearSweepDirection); +// SmartDashboard.putBoolean("G-isCentered", gearIsCentered()); +// SmartDashboard.putNumber("G-rectX", grectX); +// SmartDashboard.putNumber("G-rectY", grectY); +// SmartDashboard.putNumber("G-rectWidth", grectWidth); +// SmartDashboard.putNumber("G-rectHeight", grectHeight); +// SmartDashboard.putNumber("G-Distance To Target", gearCurrentDistance); +// SmartDashboard.putNumber("G-pipelineSize", gearPipelineSize); +// } +// } +// +// public void initDefaultCommand() { +// if (Constants.DEBUG) { +// } +// } +// +//} \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift_orig.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift_orig.java new file mode 100644 index 0000000..4e7ca3e --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift_orig.java @@ -0,0 +1,425 @@ +//package org.usfirst.frc.team708.robot.subsystems; +// +//import org.opencv.core.Rect; +//import org.opencv.imgproc.Imgproc; +//import org.usfirst.frc.team708.robot.AutoConstants; +// +//import org.usfirst.frc.team708.robot.Constants; +//import org.usfirst.frc.team708.robot.Robot; +//import org.usfirst.frc.team708.robot.commands.visionProcessor.GripPipelineLift; +//import org.usfirst.frc.team708.robot.util.Math708; +// +//import edu.wpi.cscore.AxisCamera; +//import edu.wpi.cscore.CvSource; +//import edu.wpi.cscore.UsbCamera; +//import edu.wpi.first.wpilibj.CameraServer; +//import edu.wpi.first.wpilibj.command.Subsystem; +//import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; +//import edu.wpi.first.wpilibj.tables.TableKeyNotDefinedException; +//import edu.wpi.first.wpilibj.vision.VisionThread; +// +///** +// *@authors Viet & Sue +// *This subsystem is specific to the 2017 Game FIRST Steamworks Lift Peg +// */ +// +//public class VisionLift extends Subsystem { +// +// // Camera Variables +// private double fovDegrees = AutoConstants.USB_LIFT_FOV_DEGREES; // Field of View of the Camera +// private double liftPipelineSize; // Number of Contours in the Pipline- 0 = target not in view +// private int liftImageWidth = AutoConstants.USB_LIFT_IMG_WIDTH; // Width of image from camera stream +// private int liftImageHeight = AutoConstants.USB_LIFT_IMG_HEIGHT; // Height of image from camera stream +// +// // Image OpenCV Image Processing Variables +// private VisionThread visionThreadLift; // vision processing thread - processes grip code +// private final Object imgLockLift = new Object(); // vision Lift object +// +//// private AxisCamera axisCamera; // Axis Camera +// private UsbCamera usbCameraLift; // USB Camera +// private CvSource outputStreamLift; // Output stream to the Dashboard +// +// +// // Targeting variables +// private int lrectX = 0; // the 4 values used which define the full rectangle around the target +// private int lrectY = 0; +// private int lrectWidth = 0; +// private int lrectHeight = 0; +// +// private int lminX = 0; // the 4 values used to create maximum rectangle around the target (used when evaluating each of the contour images) +// private int lminY = 0; +// private int lmaxX = 0; +// private int lmaxY = 0; +// +// private boolean liftHasTarget = false; // flag indicating whether the robot sees the target +// private boolean liftIsCentered = false; // flag indicating whether the robot sees the center of the target +// private boolean liftIsAtDistance = false; // flag indicating whether the robot is at the correct distance from the target +// +// +// private int liftTargetHeight = AutoConstants.LIFT_TARGET_HEIGHT; //height of actual target reflective tape +// private int liftTargetWidth = AutoConstants.LIFT_TARGET_WIDTH; //width of actual target reflective tape +// +// private double trueCenter = liftImageWidth/2; // horizontal value of the center of the camera image +// private double liftDistanceToStop = AutoConstants.DISTANCE_TO_LIFT_TARGET; // distance to stop at in front of lift target +// private double liftCurrentCenter = 0.0; // horizontal value of where robot is looking +// private double liftCurrentDistance = 0.0; // distance robot is from the target +// +// private double thresholdX = AutoConstants.X_THRESHOLD_CENTER; // threshold for determining center of the target +// private double thresholdDistance = AutoConstants.DISTANCE_TARGET_THRESHOLD; // threshold for determining threshold for stopping at the lift peg +// private double minThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MIN; // threshold for determining min value for whether the robot sees the target +// private double maxThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MAX; // threshold for determining max value for whether the robot sees the target +// +// +// // Sweep Variables +// private boolean liftInSweep = false; // flag indicating whether the robot is sweeping left and right looking for the target +// private double liftSweepDirection = 0.0; // value indicating the direction of the sweep -1 = right; 1 = left +// private int liftSweepCounter = 0; // value indicating when the sweep will change direction +// +// +// // drive variables +// private double liftRotateDiff = 0; // for smartdashboard - how far away from center +// private double liftMoveDiff = 0; // for smartdashboard - how far away from target +// double rotate; // speed of the rotate being returned to the command +// double move; // speed of the move forward being returned to the command +// +// // Vision Processing +// public VisionLift() { +// super("Vision Processor"); +// +// +// // define the Cameras: +// // on little bot - cam2, 1 +// usbCameraLift=CameraServer.getInstance().startAutomaticCapture("cam3", 0); +//// axisCamera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); +// usbCameraLift.setResolution(liftImageWidth, liftImageHeight); +// +// +// // define the output stream on the smart dashboard +// outputStreamLift = CameraServer.getInstance().putVideo("Target_Lift", liftImageWidth, liftImageHeight); +// +// // Vision thread which processes the image contours +// visionThreadLift = new VisionThread(usbCameraLift, new GripPipelineLift(), lPipeline -> { +// liftPipelineSize = lPipeline.filterContoursOutput().size(); +// +// // if the grip pipeline filter "filterContoursOutput" sees the target +// // loop through each contour image +// // grab the bounding rectangle values of each contour +// // to create the biggest rectangle around the 2 vertical retroreflective tapes +// // on either side of the lift peg +// if (!lPipeline.filterContoursOutput().isEmpty()) { +// +// for (int i = 0; i < lPipeline.filterContoursOutput().size(); i++) { +// Rect r = Imgproc.boundingRect(lPipeline.filterContoursOutput().get(i)); +// +// // set the min/max values to match the values form the 1st image +// if (i == 0) { +// lminX = r.x; +// lminY = r.y; +// lmaxX = r.x + r.width; +// lmaxY = r.y + r.height; +// } +// +// // compare each value to the min/max and replace if a better one is found +// if (r.x < lminX) { +// lminX = r.x; +// } +// if (r.y < lminY) { +// lminY = r.y; +// } +// if (r.x + r.width > lmaxX) { +// lmaxX = r.x + r.width; +// } +// if (r.y + r.height> lmaxY) { +// lmaxY = r.y + r.height; +// } +// } +// +//// // this is a second method of looping through the contours in the filterContoursOutput Array of Mat Images +//// for (MatOfPoint contour : pipeline.filterContoursOutput()) { +//// Rect r = Imgproc.boundingRect(contour); +//// if (r.x < minX) { +//// minX = r.x; +//// } +//// } +// +// +// +// synchronized (imgLockLift) { +// liftCurrentCenter = lminX + ((lmaxX - lminX) / 2); +// +// // set values for the smartdashboard +// lrectX = lminX; +// lrectY = lminY; +// lrectWidth = lmaxX - lminX; +// lrectHeight = lmaxY - lminY; +// +// // note - this formula was pulled from 1640's github code - need to find the specific reference +// // from 1640 +// //Equation to determine the distance from a target (d) given the width in pixels of a vision target in the camera image (w): +// // d = (TARGET_WIDTH*CAMERA_IMAGE_WIDTH)/(2*tan(FOV_ANGLE/2)*w) +// // i.e. d and w are inversely related. +// liftCurrentDistance = liftTargetWidth * liftImageWidth / (2*(Math.tan(Math.toRadians(fovDegrees))/2)*lrectWidth); +// +// // display the current image on the driver station +// +// +// outputStreamLift.putFrame(lPipeline.hslThresholdOutput()); +// +// } +// } +// +// +// +// // the target is not in the camera (ie, pipeline is empty) +// else { +// liftHasTarget = false; +// lminX = 0; +// lminY = 0; +// lmaxX = 0; +// lmaxY = 0; +// } +// +// }); +// visionThreadLift.start(); +// } +// +// +// /* +// * liftProcessData +// * Method to interpret the camera data received above +// */ +// public void liftProcessData() { +// try { +// +// // use the sonar to get the distance from the target (backup plan if camera distance not available) +// // currentDistance=Robot.drivetrain.getSonarDistance(); +// +// // if robot sees the target (current X between its min and max) +// if ((liftCurrentCenter > minThresholdX) && (liftCurrentCenter < maxThresholdX)) { +// liftHasTarget = true; +// } +// else { +// liftHasTarget = false; +// } +// +// } catch (TableKeyNotDefinedException e) { +// e.printStackTrace(); +// } +// } +// +// /* +// * isCentered +// * Method to determine whether the robot sees the center of the target (within the threshold value) +// */ +// public boolean liftIsCentered() { +// +// // if the robot sees the target +// // determine whether the horizontal value the robot sees is within the threshold defining the center of the target +// // set isCentered according to whether the robot is aligned with the center of the target +// if (liftHasTarget) +// { +// +// double difference = trueCenter - (liftCurrentCenter); +// if (Math.abs(difference) <= thresholdX) { +// liftIsCentered = true; +// } +// else if (Math.abs(difference) > thresholdX) { +// liftIsCentered = false; +// } +// liftRotateDiff = difference; +// } +// else{ +// liftIsCentered = false; +// } +// +// return liftIsCentered; +// } +// +// +// /* +// * getRotate +// * Method to determine whether the robot is at the center of the target so it can drive towards target +// */ +// public double liftGetRotate() { +// double difference=0; +// +// // currently we are only running 1 cycle of the sweep and stopping +// // if in the future additional sweeps are required, this is where the reset should occur +// // if (sweepCounter > 400){ +// // sweepCounter = 0; +// // } +// +// // if robot sees target and is centered - no need to rotate the robot +// if (liftHasTarget && liftIsCentered) +// { +// rotate = 0.0; +// } +// +// // if the robot sees the target but is not centered +// // check to see whether the robot is within the threshold +// // rotate based on the math function +// else if (liftHasTarget && !liftIsCentered){ +// difference = trueCenter - (liftCurrentCenter); +// +// rotate = Math708.getClippedPercentError(liftCurrentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); +// +// +// if (Math.abs(difference) > thresholdX) { +// if (liftCurrentCenter < trueCenter){ +// rotate = Math.abs(rotate); +// } +// else { +// rotate = Math.abs(rotate) * -1; +// } +// } +// } +// +// // if the robot does not have the target +// // begin the sweep +// // sweep is defined as rotating the robot right, left, right in predefined counts +// // if in the sweep the robot does not find the target, it stops after 3 sweeps +// // otherwise it will jump back into the hasTarget logic identified above +// else if (!liftHasTarget){ +// if (Math.abs(liftSweepDirection) < .1){ +// liftSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; +// rotate = -AutoConstants.SWEEP_ROTATE; +// } +// else if (liftSweepDirection > AutoConstants.SWEEP1_MIN){ +// if ((liftSweepCounter >= AutoConstants.SWEEP1_MIN && liftSweepCounter <= AutoConstants.SWEEP1_MAX) +// || (liftSweepCounter >= AutoConstants.SWEEP3_MIN && liftSweepCounter <= AutoConstants.SWEEP3_MAX)){ +// +// rotate = -AutoConstants.SWEEP_ROTATE; +// if (liftSweepCounter== AutoConstants.SWEEP1_MAX || liftSweepCounter== AutoConstants.SWEEP3_MAX){ +// liftSweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; +// } +// } +// } +// else { +// if (liftSweepCounter >= AutoConstants.SWEEP2_MIN && liftSweepCounter <= AutoConstants.SWEEP2_MAX) +// rotate = AutoConstants.SWEEP_ROTATE; +// if (liftSweepCounter== AutoConstants.SWEEP2_MAX){ +// liftSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; +// } +// } +// +// liftSweepCounter++; +// } +// liftRotateDiff = difference; +// return rotate; +// } +// +// /* +// * getMove +// * Method to determine if the robot is close enough to target so it can stop +// */ +// +// public double liftGetMove() { +// +// // if the robot sees the target +// // Method to determine whether the robot is at the correct distance to the target so stop +// if (liftHasTarget) +// { +// double difference = liftDistanceToStop - liftCurrentDistance; +// move = Math708.getClippedPercentError(liftCurrentDistance, liftDistanceToStop, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); +// +// //Check if target is at correct distance within threshold +// if (Math.abs(difference) <= thresholdDistance) { +// move = 0.0; +// liftIsAtDistance = true; +// } else { +// liftIsAtDistance = false; +// } +// liftMoveDiff = difference; +// } else { +// move = 0.0; +// } +// +// return move; +// } +// +// /** +// * GETTERS and PUTTERS to return the private variables +// * @return +// */ +// +// +// public boolean liftIsAtDistance() { +// double difference = liftDistanceToStop - liftCurrentDistance; +// //Check if target is at correct level within threshold +// if (Math.abs(difference) <= thresholdDistance) { +// liftIsAtDistance = true; +// } else { +// liftIsAtDistance = false; +// } +// return liftIsAtDistance; +// } +// +// public boolean liftIsHasTarget() { +// return liftHasTarget; +// } +// +// public void putLiftHasTarget(boolean ht) { +// liftHasTarget = ht; +// } +// +// public void putLiftCurrentCenter(double cc) { +// liftCurrentCenter = cc; +// } +// +// public int getLiftCounter() { +// return liftSweepCounter; +// } +// +// +// public void putLiftCounter(int ct) { +// liftSweepCounter = ct; +// } +// +// public void putLiftIsCentered(boolean ic) { +// liftIsCentered = ic; +// } +// +// +// public void putLiftAtDistance(boolean ay) { +// liftIsAtDistance = ay; +// } +// +// +// public boolean liftIsInSweep() { +// if (liftHasTarget) { +// liftInSweep = false; +// liftSweepCounter=1; +// } +// else { +// liftInSweep = true; +// } +// return liftInSweep; +// } +// +// public void sendToDashboard() { +// if (Constants.LIFT_DEBUG) { +// +// SmartDashboard.putBoolean("L-Has Target", liftIsHasTarget()); +// SmartDashboard.putBoolean("L-Is At Distance", liftIsAtDistance()); +// SmartDashboard.putNumber("L-Center of Target", liftCurrentCenter); +// SmartDashboard.putNumber("L-Rotation", rotate); +// SmartDashboard.putNumber("L-Rotate Difference", liftRotateDiff); +// SmartDashboard.putNumber("L-Distance Difference", liftMoveDiff); +// SmartDashboard.putNumber("L-Sweep Counter", liftSweepCounter); +// SmartDashboard.putNumber("L-SweepDirection", liftSweepDirection); +// SmartDashboard.putBoolean("L-isCentered", liftIsCentered()); +// SmartDashboard.putNumber("L-rectX", lrectX); +// SmartDashboard.putNumber("L-rectY", lrectY); +// SmartDashboard.putNumber("L-rectWidth", lrectWidth); +// SmartDashboard.putNumber("L-rectHeight", lrectHeight); +// SmartDashboard.putNumber("L-Distance To Target", liftCurrentDistance); +// SmartDashboard.putNumber("L-pipelineSize", liftPipelineSize); +// } +// } +// +// public void initDefaultCommand() { +// if (Constants.LIFT_DEBUG) { +// } +// } +// +//} \ No newline at end of file diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.java index 5e30cdc..4b5cb7d 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionProcessor.java @@ -1,149 +1,150 @@ -package org.usfirst.frc.team708.robot.subsystems; - -import org.usfirst.frc.team708.robot.AutoConstants; - -//import org.team708.robot.commands.visionProcessor.ProcessData; - -import org.usfirst.frc.team708.robot.Constants; -import org.usfirst.frc.team708.robot.util.Math708; - -//import edu.wpi.first.wpilibj.Preferences; -import edu.wpi.first.wpilibj.command.Subsystem; -import edu.wpi.first.wpilibj.networktables.NetworkTable; -//import edu.wpi.first.wpilibj.networktables2.type.NumberArray; -import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; -import edu.wpi.first.wpilibj.tables.TableKeyNotDefinedException; - -/** - * - */ -public class VisionProcessor extends Subsystem { - - private NetworkTable roboRealmInfo; -// NumberArray deprecated private NumberArray targetCrosshair; - - private boolean hasTarget; - private boolean wasCentered; - private boolean isAtY = false; - - private final double imageWidth = 320; -// private final double targetWidth = 18; //width of target in inches - - private double centerX = 0.0; -// private double targetY = AutoConstants.Y_TARGET; - private double currentX = 0.0; - private double currentY = 0.0; - -// private double thresholdX = AutoConstants.X_THRESHOLD; -// private double thresholdY = AutoConstants.Y_THRESHOLD; - - // High goal aspect ratio (11ft6in/3ft1in) in inches (3.729 repeating) -// private final double targetAspectRatio = 3.73; - - // Distance related measurements from the network table - // private double distanceToTarget = 0.0; -// private int differencePx = 0; -// private final double targetDiameterIn = 24; - - // Data sent from the network table -// private double currentAspectRatio = 0.0; -// private double upper_left_x = 0; -// private double upper_left_y = 0; -// private double upper_right_x = 0; -// private double upper_right_y = 0; -// private double lower_left_x = 0; -// private double lower_left_y = 0; -// private double radius = 0; -// private double blob_count = 0; - -// private double lowerLengthX; -// private double setProportion; - - //daisy says to set this to 43.5 deg -// private final double cameraFOVRads = Math.toRadians(47); -// private double cameraFOVRads = Math.toRadians(43.5); - double rotate; - - public VisionProcessor() { - super("Vision Processor"); - roboRealmInfo = NetworkTable.getTable("vision"); - -// Number array deprecated targetCrosshair = new NumberArray(); - centerX = imageWidth / 2; - } - - public void processData() { - try { - currentX= roboRealmInfo.getNumber("cx", 0); - currentY= roboRealmInfo.getNumber("cy", 0); -// upper_left_x = (double) roboRealmInfo.getNumber("p1x"); -// upper_left_y = (double) roboRealmInfo.getNumber("p1y"); -// upper_right_x = (double)roboRealmInfo.getNumber("p2x"); -// upper_right_y = (double)roboRealmInfo.getNumber("p2y"); -// lower_left_x = (double) roboRealmInfo.getNumber("p3x"); -// lower_left_y = (double) roboRealmInfo.getNumber("p3y"); - - if (currentX > 0) { - hasTarget = true; - } else { - hasTarget = false; - } - - - } catch (TableKeyNotDefinedException e) { - e.printStackTrace(); - } - } - - public double getRotate() { - - if (hasTarget) - { - - double difference = centerX - (currentX); - rotate = Math708.getClippedPercentError(currentX, centerX, 0.3, 0.5); - +//package org.usfirst.frc.team708.robot.subsystems; +// +//import org.usfirst.frc.team708.robot.AutoConstants; +// +////import org.team708.robot.commands.visionProcessor.ProcessData; +// +//import org.usfirst.frc.team708.robot.Constants; +//import org.usfirst.frc.team708.robot.util.Math708; +// +////import edu.wpi.first.wpilibj.Preferences; +//import edu.wpi.first.wpilibj.command.Subsystem; +//import edu.wpi.first.wpilibj.networktables.NetworkTable; +////import edu.wpi.first.wpilibj.networktables2.type.NumberArray; +//import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; +//import edu.wpi.first.wpilibj.tables.TableKeyNotDefinedException; +// +///** +// * +// */ +//public class VisionProcessor extends Subsystem { +// +// private NetworkTable roboRealmInfo; +//// NumberArray deprecated private NumberArray targetCrosshair; +// +// private boolean seesTarget; +// private boolean isCentered; +// private boolean isAtY = false; +// +// private final double imageWidth = 320; +// private final double imageHeight = 240; +// private final double targetWidth = 10.25; //width of lever in inches +// +//// Gear 11" in diameter +//// Boiler Target is 1'3" wide 9" high -- 7' off ground to center +//// lever is 10.25" wide 5" high -- 12.75" off ground to center +// +// private double centerX = 0.0; +// private double targetY = 100; //location of target when on hook +// private double currentX = 0.0; +// private double currentY = 0.0; +// +// private double thresholdX = 20; +// private double thresholdY = 20; +// +//// lift aspect ratio (12.75" / 23") .55435 +//// lift aspect ratio (4" / 23") (.174) +// private final double targetAspectRatio = .55435; +// +//// Distance related measurements from the network table +//// private double distanceToTarget = 0.0; +//// private int differencePx = 0; +//// private final double targetDiameterIn = 24; +// +//// Data sent from the network table +//// private double currentAspectRatio = 0.0; +//// private double upper_left_x = 0; +//// private double upper_left_y = 0; +//// private double upper_right_x = 0; +//// private double upper_right_y = 0; +//// private double lower_left_x = 0; +//// private double lower_left_y = 0; +//// private double radius = 0; +//// private double blob_count = 0; +// +//// private double lowerLengthX; +//// private double setProportion; +// +////daisy says to set this to 43.5 deg +//// private final double cameraFOVRads = Math.toRadians(47); +//// private double cameraFOVRads = Math.toRadians(43.5); +// +// double rotate; +// +// public VisionProcessor() { +// super("Vision Processor"); +// roboRealmInfo = NetworkTable.getTable("vision"); +// +// centerX = imageWidth / 2; +// } +// +// public void processData() { +// try { +// currentX= roboRealmInfo.getNumber("lever_x", 0); +// currentY= roboRealmInfo.getNumber("lever_y", 0); +// +//// upper_left_x = (double) roboRealmInfo.getNumber("p1x"); +//// upper_left_y = (double) roboRealmInfo.getNumber("p1y"); +//// upper_right_x = (double)roboRealmInfo.getNumber("p2x"); +//// upper_right_y = (double)roboRealmInfo.getNumber("p2y"); +//// lower_left_x = (double) roboRealmInfo.getNumber("p3x"); +//// lower_left_y = (double) roboRealmInfo.getNumber("p3y"); +// +// if (currentX > 0) { +// seesTarget = true; +// } else { +// seesTarget = false; +// } +// +// +// } catch (TableKeyNotDefinedException e) { +// e.printStackTrace(); +// } +// } +// +// public double getRotate() { +// +// if (seesTarget) +// { +// +// double difference = centerX - (currentX); +// rotate = Math708.getClippedPercentError(currentX, centerX, 0.25, 0.35); +// // if (Math.abs(difference) <= thresholdX) { // rotate = 0.0; -// wasCentered = true; +// isCentered = true; // } // else if (Math.abs(difference) > thresholdX) { -// wasCentered = false; +// isCentered = false; // } - - - /* - rotate = difference / centerX; - - - if (rotate > 0.0) { - //reverses the sign to turn left, when target is left - rotate = -Constants.VISION_ROTATE_MOTOR_SPEED; - } - else { - rotate = Constants.VISION_ROTATE_MOTOR_SPEED; - } - */ - } - - else { - //rotates if not target (default is right) if loses/doesn't have target - rotate = -0.4; - - } - - return rotate; - } - - //Returns how to move to get to target distance (targetAmount = target ratio) - - public double getMove() { - double move = 0.0; - - if (hasTarget) - { -// double difference = targetY - currentY; -// move = Math708.getSignClippedPercentError(currentY, targetY, 0.4, 0.6); +// +// rotate = difference / centerX; +// +// if (rotate > 0.0) { +// rotate = -rotate; //reverses the sign to turn left, when target is left +// } +// } +// +// else { +// //rotates if not target (default is right) if loses/doesn't have target +// //let's d0 a sweep +// +// +// } +// +// return rotate; +// } +// +// //Returns how to move to get to target distance (targetAmount = target ratio) +// +// public double getMove() { +// +// double move = 0.0; +// double difference = targetY - currentY; +// +// if (seesTarget) +// { +// move = Math708.getClippedPercentError(currentY, targetY, 0.25, 0.35); // //Check if target is at correct level within threshold // if (difference <= thresholdY) { // move = 0.0; @@ -154,20 +155,20 @@ public double getMove() { // // } else { // move = 0.0; - } - - return move; - } - - /** - * Returns if the robot sees a container - * @return - */ - public boolean isHasTarget() { - return hasTarget; - } - - public boolean isAtY() { +// } +// +// return move; +// } +// +// /** +// * Returns if the robot sees a container +// * @return +// */ +// public boolean isHasTarget() { +// return seesTarget; +// } +// +// public boolean isAtY() { // double difference = targetY - currentY; // //Check if target is at correct level within threshold // if (Math.abs(difference) <= thresholdY) { @@ -175,26 +176,28 @@ public boolean isAtY() { // } else { // isAtY = false; // } - return isAtY; - } - - public boolean wasCentered() { - return wasCentered; - } - - public void sendToDashboard() { -// SmartDashboard.putBoolean("See Target", isHasTarget()); -//// SmartDashboard.putBoolean("Was Centered", wasCentered()); -// SmartDashboard.putBoolean("Is At Y", isAtY()); -// SmartDashboard.putNumber("Current Y", currentY); -// SmartDashboard.putNumber("Center of Target", currentX); -//// SmartDashboard.putNumber("Rotation", rotate); - SmartDashboard.putString("visionProcessor", "called"); - } - - public void initDefaultCommand() { - if (Constants.DEBUG) { - } - } -} - +// return isAtY; +// } +// +// public boolean isCentered() { +// return isCentered; +// } +// +// public void sendToDashboard() { +// if (Constants.DEBUG) { +// SmartDashboard.putBoolean("See Target", isHasTarget()); +// SmartDashboard.putBoolean("Is Centered", isCentered()); +// SmartDashboard.putBoolean("Is At Y", isAtY()); +// SmartDashboard.putNumber("Current Y", currentY); +// SmartDashboard.putNumber("Center of Target", currentX); +// SmartDashboard.putNumber("Rotation", rotate); +//// SmartDashboard.putString("visionProcessor", "called"); +// } +// } +// +// public void initDefaultCommand() { +// if (Constants.DEBUG) { +// } +// } +//} +// diff --git a/sysProps.xml b/sysProps.xml index 14b1e894a85b2050a50b6aa2e40119d94ca3e597..9c614cb1dcae21268c8353bf63ee472492eccd15 100644 GIT binary patch delta 156 zcmZ2yu+Ct^G-h@)1``HX2A9c!EVi3(F$b~o8!}ijSTPtf7ywB(2Fu9@IjlFAasFd5 zbz(4QFa=7Q0Hr`sfx(5r0!TYE7z3dtRKx@*>I8(&Ky@w*3P5wMH$UNf!^G~&5X=z5 mU^@Arh~;Dfp=s=fK;ujpOg66-Qe|WXO9G{=Hw%f#umAx6u^?jr delta 160 zcmZ2yu+Ct^G-gg$1``HH215qp$rqWdH{W6oV&yktFlDe}Z~{tLF}N_8Og_kAy}69@ zAB(9OgC!6e0V!Z From 8ba42394747d1c729b19412e67cc2145a0a6c863 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Sun, 12 Mar 2017 21:36:06 -0400 Subject: [PATCH 52/69] after 1st bag --- .../frc/team708/robot/AutoConstants.class | Bin 2176 -> 2180 bytes .../usfirst/frc/team708/robot/Constants.class | Bin 3385 -> 3385 bytes build/org/usfirst/frc/team708/robot/OI.class | Bin 4161 -> 4087 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 6882 -> 6739 bytes .../commands/autonomous/OneGearCenter.class | Bin 2406 -> 1982 bytes .../commands/autonomous/OneGearLeft.class | Bin 1570 -> 2125 bytes .../commands/autonomous/SixtyBalls.class | Bin 2100 -> 2194 bytes .../robot/commands/autonomous/TenBalls.class | Bin 2264 -> 2014 bytes .../drivetrain/RotateAndDriveToGear.class | Bin 2030 -> 0 bytes .../drivetrain/RotateAndDriveToLift.class | Bin 1860 -> 1812 bytes .../commands/intake_ball/Intake_Ball_In.class | Bin 1052 -> 1142 bytes .../intake_ball/ManualIntake_Ball.class | Bin 1428 -> 1494 bytes .../intake_gear/Intake_Gear_Out.class | Bin 1021 -> 1090 bytes .../visionProcessor/GripPipelineBoiler.class | Bin 5954 -> 5954 bytes .../visionProcessor/GripPipelineLift.class | Bin 0 -> 3539 bytes .../team708/robot/subsystems/Pivot_Gear.class | Bin 1678 -> 1689 bytes .../robot/subsystems/VisionBoiler.class | Bin 8358 -> 9205 bytes .../team708/robot/subsystems/VisionLift.class | Bin 0 -> 8925 bytes .../robot/subsystems/VisionLiftGear.class | Bin 12627 -> 0 bytes .../frc/team708/robot/AutoConstants.java | 12 +++--- .../usfirst/frc/team708/robot/Constants.java | 8 ++-- .../commands/autonomous/OneGearCenter.java | 25 ++++++------ .../commands/autonomous/OneGearLeft.java | 29 +++++++++----- .../robot/commands/autonomous/SixtyBalls.java | 36 +++++++++++------- .../robot/commands/autonomous/TenBalls.java | 27 ++++++++----- .../visionProcessor/GripPipelineBoiler.java | 2 +- .../visionProcessor/GripPipelineLift.java | 6 +-- .../team708/robot/subsystems/Pivot_Gear.java | 1 + sysProps.xml | Bin 6190 -> 6190 bytes 29 files changed, 90 insertions(+), 56 deletions(-) delete mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.class create mode 100644 build/org/usfirst/frc/team708/robot/subsystems/VisionLift.class delete mode 100644 build/org/usfirst/frc/team708/robot/subsystems/VisionLiftGear.class diff --git a/build/org/usfirst/frc/team708/robot/AutoConstants.class b/build/org/usfirst/frc/team708/robot/AutoConstants.class index e5ffb2c53057237e8dd7b69bc896842e2ba312f0..4568e8b411c63ce44d0d93c8a66b8096eb5f57ec 100644 GIT binary patch delta 659 zcmZ9K%}T>i5QWc;Z7QP02n7YVf>=tCRz*?Tw2c@wttM%$zwx*Ji*HaDzCjkE8`myN z7lI4jif`af@CAGVac;$Qa27+pGw0k3cXFj&Yq7WQr)L0ZTy&uWM-d!HaMFmmBJ!DP zm47K>>GxY%cLKcy+pHL#U2=8T@GQNmWz-NY#F;=(*~xL~+^>ZmR1ez%asMS0Z)U^eLW^Sn354k;mF`n8 z8~)B{uNY%7hEM?W4unh z!FZE+>o0H7BKjyQKt+NG|N4Eo9TsCT!%!`R0GkwA^Qg2Nx$ Ch)T5p delta 658 zcmZ9KJx{`56ot=QY%vCjm|)^!;y^-F!T=hLA6TT(ss$|t@w1Bfg_uBBJB%vZ`Uf$-nVDv-f4^WK}NijWsm5^8|UGM*z|VEGL3B4fEF0#Knj^jnUPG~$=@I`-aWTG&&bp4`iNl83$B!z~NO?XeXt+l^T zK7bEt{s=CUEAWX_?f*6SG~u(@zUaVtToAqRf)2cd>*OoAL2kk=vOb_q)_~V!o$uHO z9UHkp;WiQAj;sOi69+tyAJKmzYXG0z4OSa@U#mT;rr~EB!>rfvLhhsgDsOg=x|RW1 rQw_-@cubza)7TZ6q3|9TBnJoNIs8Em;ZO1x{7nHhzz?|}tTKgvhV?sO delta 633 zcmZ9|NlF7j7zNouc#U2cZ_t}!d%%|13T}(-{7!g~ zci3gHCk3p~zSs&K{9AA+KH~gXYz0olo<0@Z{H*WvyFB6tn4E`7?(YjO#BI(maTWg5 w8eWU7;f?r~z7yZm58_9g(ik%!hnVur9~GrlgenoNfQJUXp*v{RCco{ zPxlMi{YvFb4&^D*r`Bq%-s-UjpL*-Hhc2uC{?61oD<00bfBXM^-#%ymzu|Pl?~A-2 z{ysSmpbe)K4ry$_R03UiSm65YdE5e=k%+C7?A853OFDjq#p~6QRtN96S_*lcjCnoPx z^O#lmOyP5lPJE$oTw@(_3VDrgYs>jDhtfUJ;+#CE6rx( zj^A!q#&%0iv!AuAV?)UJ({{H#V$MuS+Fy2!^NlGTE%xeF<@R3Frv1M*)5>-3MaIS5 z%$awZ{U23jY$w-eRFA#SKQF2S|r>muCCyzBqRH$?bG=HC?I&E%USZ1gRLy~qK#L=t+LurBtRpjrIL4HfF{C40v88pCM=VpL~qh{AE%9t4R!7AUZ^2IlOw5;;M7az1N|2~5{WtIETr@#JBpEKR(^!`>g zz0CXO&#BV@8u69FA&oAK$I*uS6%K0@VqD_^JZM%PQg~RyF)NSYh*^15;V}&t;|h;! z6omKP`<*`8uLSVM&VhFg&{nr@Vuw7INbSy+4-WvOBz+7{<6YRjp`64 zjQoniF^v`B%Bu>mX{-+6b%i%HYD0L__`ap^w#M3U}!FhjATH!MnQwUt_#Gr)^(*M?O z@KZ%S&S|r-8-xC-qRv=Kgc?6%t9hFf>Cr^0E14Wf4!gL`q-ZuND3;rM%m;2D*7<>5 z?0jK@+%B8j>|x`&-e~3Bnan`@z^>7~BQEx0(8aB0-#Q6%NR`?{|D4mGR!d?d{EQz| zhcjwi?-00XZg^-H`^;kc-~AI#shu&{B;h8U+5S&XUC9{ExVQw}E_%>yq1OMopwjP( zH`rsCwop&sO8;nl0r5)Ih#$zBa-}-)h*4B)Bf(&`XEwBWwcnMR*(eh6vxt z5858#ZRDFGY!dcI*u=k??EQVh1Q&Kh9ByF%HmBSOyG|@?Dwf3*%kC1(rV`7h63Z46 z%NmMh@x-#1#Ik?HvVU4-!j2Kkwh+s<5X;UG%Z?Dss?ip(EPOm1_xsiZ68x!#K<*>0=bf z_|%TG^{2S{H81cx?8lF|8^7Ql{0@&Z@PFCj_y<=!S_cQiiw3MCOvsR!$ZaNl1sgOTI_ diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index 48ec03597e93d80e42f6a458df34554c268d5a89..d538bc3239043f4c6081cb7b694b06cf0164af44 100644 GIT binary patch delta 2072 zcmZ8hX>e3U5dL~M+1Z_)9Bi^VNK8T?29iKR4hxki1jMq`lFO79lw}H5jFn`8Y*0K{ z@j^vK9hAcZ#e;wcLNG*#poj_xcpxe$r;3UfAS#N2J?|~MTfQG(A2Z$kb@zMkV9k!| z@Rn0+)&Z!db0ls?x4@ec4s?4k9qSCN7kEp;WqaN>+6IAlB&6-xDDbXCl5M;v@V-Q< zZEObw{icZnrl*4fUmN2aH@=mq!Xb(85dPkcA0!Ur zM}eQr>Cfh9gVBC5+OMY5BN9hVN*9i~F5J)4;>TFOnZx6z6^0}Oxd!qLq#8&wkYS+E zKoO3+@w>nu5+l)VIQ zhajJzw2nN7!;vhfHMTYeTP|z7E<~u&B=YrXk5`XRkoty%L*(xmmAKL2T7q^$wVvt9 z(8m(&BvDPtR(15*`l!L5oi(5`2?2f1#;3_^uI;OVEvTptXE%!M#+ z*A<>BPhCS(lfs?2i>-5=cjF$8DAV&j$~6o363R`KcSImC(FD!J9eS^4plc2ujwI9< zNRRVA+;2rOSGU4!JYX8&xb%9frMh5alZk#14-pFZAaBqWmnb}fM-|>cyFwS*1!XGA zqHIMyjc2v-O&@7~0g-*w8W|P%tdm z+}zMIQBgh>2ClsE=VnxNw zg8CX3{S=i@siHFD>CY40>Al=JfXa1|s&`gUdB+S@<8UsafjTESS5^|7qc0jx7_N^d z7wbtW;lfI)BBT#(3k6$(&B3Oicu ztsJWOC?~L*C$MJH4k~wx&G*c-vFr+9( z#br4T#$})=h1a8jaowc+uN}Q2Gc9iFu?9NrXuU5pJ8qvxc&kSta4fE(J5teMzE|e6 zR2OGW;EB)9I=?d3+32{=5_ri-*h)(K*^;CpSoIb{6bCfUt zcI@()!_t(mU5S(~+_Vxo7Agz#Ec99Ew=m1XJ{A^R*o!enL(l42Q5vgQ8?Cs8YdEkL Q^I1x+_&B9w-jMA702hz2+5i9m delta 2079 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 RV*a0r^+SksSBCp4{0RWpBWM5s delta 680 zcmah`Jx>Bb5Pf&R9xfyjIFt_wq9_WA@}UBXoQT+%potC9#)iV)nv%}MTm^-RHr6(h zXyOkrF&0)P7PfZ&0gbcAmoYI;GJCsk-t4_M`{=l|*B`!a?*XJy=9oZ2L6T|v1W>TT zbIJ$~87Yns(h8PX;mxRmX{F9a!7|4XR+#4L0T~V_vI=q>sma7925+b`IEHGmdVMv&wQ;bp)c}17sk%T*N)6&6z)$_=d1J2*&sscVpjCOvOg zy%=z-E8k3R=Y)LyLUGjxRx>>^apgXDzHjx<8RdU8O8v(8|BXdNeDt&5(_JtGEPew{ CKv6&d diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class index f1fa0ea1d8c2cefc302c0aac132fdd46a126d2cf..a853dfb9bb59aefdb7a5743bad342b546108828c 100644 GIT binary patch literal 2194 zcmbtV&u<$=6#m9>*X`CQRT`=)l+Y5Q+74tx+t9QLiS2Ccq%~=%-4v%#v$iMBmi3O= zoox#zB>n=9AnshaAf#FX3GPVz0f-A%?(~XyFm+tQRt!09~`brpy zVMj}!3T+)zxS^%5g)=Q}_Lkh#F@qa16m*%7B8^bLf7nE~P#~j{{;dTr~ zEq$*?Ij?{vEq%7TD*j!gfE*EKJ^Lo1F|EHmtlSySD!A9CqgwriNmEGoNkBuiq;t&td>Y5UT0 zYh3Y`<2b-QhWx)LF9n`k5+-kWockHau@xu7#nDWg!d2O&ud=_(kQu$auQbVJeZVVK z64=-YZ6$VP$5lk{F(i3CFdnsRBWxO3j$M7wYn5@=vgKyjHiq1oNr$AoEugS25_PL@aLemepC`L=E0A&AR}I+wpG>BBQ*OMFi3)a#`3im4X$9 z?J>b4RLKh3!5+iHXsQf-HvNsjaDDXZ{vPm;grJYcD7I|37}^XgV}cJkr@i07<~rto z$SXywpLcD{yw5x$7*eCRYj>;WJrT6%I7yi1fjZ5ev+DIC|1jXLI_8KaQ5cJ7Re=@D zPUlQanCfwo$o4Fcz9LRk(L^@6Pbcvu`ZcKQ7^3v2SO&uzG+UsXsrwrmBDhMU)^W^Y zh3t43#5G)3i)cS}fvkb!o!HY<8!YubBIRjJOyk%@8?h%iPM#Cw(WeoQv@sca)S6S| zjP}<|k>_+9&ky2fC_dm&h_l2xK+KdU+jt>df3Dodi=jEAlJx_#6nN^xyFwvh~HDVi;`@mh#kq!|@xgs~+ed!5XISi3k)!ki~f=Wqt|NFYg4 zEnpi49l)32kjjrq)=$a%8Oir0*6* vt8TqYPt~o+#Mf#ZYFB9p8R;X}d+qxBK9`4ptPkAyXW;#302#fRsw?vsh1orK literal 2100 zcmbVN&u<$=6#m9>ciW9os>(oxXqwWrbwZnMNu#8VNj9f zf3&~>@h5QL0^%<~T)5N-B*ckBZxttQNWF9Cf_SrI$B8Jxu+q-F_q}=Fd;8w(%)>vw z{}I4-G!5i&OGjC=sszxZE&lq2e7-c0!m9@6aa+f0+T!EszZ{V z(aG^QCFt1HtdmMMkcF*TTc0MXW)&5zStW(&s2CW<8#=Z$Yg`!(jKS7%N3$;WfN|I| zlQ(r#HEXPgPRM232Cm?iX5|#B<1GW%s_~%W)I35?l||k0ww%C~dKXMbdv3_EP!_?i8HY_b z2qUu@)Xj)Ht=X${W*}-JGV7w%a{NYUI&ma?(GqcJ+U|$ZN6U`qh4TzrUS_f&GYU&2 zhI_n`WVB5q_emah{fGxa+>WHhutglydC8TTjr6Ie?mG9J42mGCjRA9N1nxZ^1&-^R zMJd`+-rb8TV#TjhF@mBSMvhOyUmE9Fdz|ab?1G)v&)^pTvzfc$vZ`H-)G1V$nwO0jbZZW z4bkJmoYRHvb^zzC168C08DZXI?r>mi6Rt$raVKET>`O+;9Rq z0=S2BbjanC)9Dz}co_>|SS0;LdYOE`r6C22MlAu(V2R|6GGZA8(irX9t|R*#$EA&p zPIka1e?Y35#ZVTC2r;tAq&gT;h+K0ri&N?SHCaNQ?%>(O_P=qQKFskP z#p!c&<2+ADH_m8P>)@>79HR*5IykSiandeyaOnYZl;H$vl>TL9yHf37s-K8?D9AN3 zzNC!PBwkkp@`GlwnC&McksE!_epNT=z5>ot@yGBCwIhcYa1-aThH-4;0z6#ACxm{6 zNqj|Z`I;`D?=Xd*aTSl~-g!)S&hK=u{(%`bj9GRDbNvpn(Qb#*SV4*UB3pZzX4%@* q&^K~C(A#|9lW^7BG*)}P{pU@wbik4AJFfk^W9bQw4C_f=ulxmLlm$}& diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class index 7b7f320b24e5e282c4201efaabf0236c2c4af618..f3f496a5f27a3c0fa75e06929ad68a568ae8aedb 100644 GIT binary patch delta 813 zcmZ{h%TE(g6vlruEq8EeY#|NSAgP5|v=ypCeU^5RzQn3j9y-Cqjl_+y3o$P1(v2i$ zmTugdurUggXriv&8585m_y@T0A5hQC(AtIEdJ}-bc0JKBUKg*E*mtIwHDweqn^YSWhFYmmZ&2#uHyOXg>S( zRprTPEIJ><6HY8V;QY}J59GNXVTompS{J{i&xP`=I4|@m*;k#<`esOD-p_A_5|MK2 z(ftTFJW}2RhwrW5x!roWky~2dXjIA(^4!#@@9H&Qe+WO()<}uBNx!{5!c37vcCc}a~o)O%cR@45_gnlph*5z~B^ rdT2|o>3yF@4^!_l&vxF2)}Alh>|ttM=D99&PvYu-h#Kep#xDE?O>b@k literal 2264 zcmbtWOLH4V5dKD1cAbq<#=1}$yvr>pH{Ack88uA`viwzl?bTM8|mjR+lg44gz!OP}j9?i!fH zJsn#Hk_vR&z**!J#C;t*2F@d=rI$N6Yd?Rk))zWT2Bu)?ct^*smcA3o4O~=E543cl zV~`&2N~ZBpM_Ef>=rR_R>Yjl`^?ujD73C-uNp(EZ@tDC7j_`%u5Fc}fvDEA?LwrNl z=rBRUmRnzBo^Ty(m z>B@@q&8loRZKvj$cHm1#Hf7+M7I!jsqv5SEXsarYn<^eJN2GViYwdXUXy*>mr-b8k z*9}^}k{Bf!xK*ALDz4LApx2M=Cw2mBSZ3HBF`k+$o^ao_g=1zFSyJ@Dp>N4er%H)% zv%>Rjr^*%XdkO60eTMwM2e$&(v1FDXxSV_IjfPN|3^T)#Hl(Ax`=0V{GtBZ@V1CpR zW|U{58lrO4&93>t7XC(*X=PAh$PLHum1Q6eJJPp(zV6i8`LJYB)P07`h(J^(`vbmz zz-`woM0B3${jI=HpsJGhzme*7hBrqHr@?FcGVsk3_luiZl@#ipTO%3|NlHdi>$wc` z!=cux+j})+*d4BYTs4L_<(6xSX1g`1m);r?-8+<$?vhz*38xg%3`-*#*Ey$4(YDRC z$^YQjm#v=PQG-5aZZOOZzYd+NkauO!q8XFQX7|*9J8jo$CH`T+9X0s~B~=^=XGIw+ zltOz=PJD#>VGDu(@v$DF$YZ-Na1n_GxEPkr!yhmi1eE#gRHohqP;xIk}J#MszZY9FZL!@ec)qbkOc=~nUY%l~-5ko62V{@Ji{ Mj3I;iQxe1GpE+4dCIA2c diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToGear.class deleted file mode 100644 index df1db93ef46cc4635eefc2e45618b5bac549b785..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2030 zcma)6-E$LF6#rfFv2?o$lqn#B*iw-;&@9+OsbHZdrj4c*n^?7e;7xMdY@1{=dw1){ zU*Rjh`Ob@s#2Fv--M_}afZ?3oGzl|WlgylR_S}2U?|k0BU;ObWfJGdbxCna;H*w3v zJ6K?{$mBMYJ4}|C+-0)NyOwhUcEILEHlIAw z2cAc+Blmoo=hKu{A#P5#lqYF>_NWMtJh!H_&P$&(Db}nhKN`Vsg!444J?#eVCJpOg zI|OczUchjH!lk0(EsR{eff>CH4cT-<1w9C}`FvQiG*yYa*{=odU6CruK^OHaRf|-E zqVpEY1NE5o0(VBwr5M>UEG4rzaxz19^lUVwW)IXK?YkXJ(?fWXp3M{Vr!@^FT3q5u z2wr`n)AY4KTo6xWeuwxqymp1CNoK%##L0MuBrCdvw{Vrd;&{97pov&`mU)H~u`Xf} zi$^RGu_Uo{7Y4B|P7Y8m!ys={M5mF)6`UokON22){^xLQ2szV7zSc)>gsA}8(Crup z(1rONignom(%;Pk&RIpnlEexS%`>3-NPgF2X zmEnTThj3>m#81B<5q}zfO+JAY3TJ<2;anHzpYUPqDH+5lK_CKMqJl0{$}8md0ljjC zA<+3AXohYl5l>H?q@MCi*bCrcFMu>9*TrjuM`r-?8W+rlvUYJD#{f@iP#1xXGO17W0PNqzresYZ##4u%N6@S%rI1 z?i&_)V0g%q#b|wd(C@Q5dLA)sSXOwf)gz=VO7-oM|K6VOaNky6S6{s>SD(GH7%%%n zP9ZdHQBdM9I`6*xa$;5{DK`VQykZtGv6nG|h4d~s=zHPB#DO5YE!ay)*3-g_>_V6! z4$2rJ(>yQyDNeAL^_Rk#_`0mvs6syxzaCC5kL;??w(GO)`jx;R@*CI<_T+*gwu#$h zdp9u~#JllwUop=GT&KalmX9Bc4Aj!%*6c6e)<49s=8>Hh=|_9d2Ev`4*2m9;Lu)-)FMONsZ0u EUpoC;Z~y=R delta 905 zcmY*X%Tg0j5IvKb$(YH_wTJ;xFp?MqMvYNWUMdmL_`tV|esK=2Z#|IJ%N#B9QB8EdURYo}^FG_fP3 zO~YY&hM0vWRVRsh(NAxHvl!eWiz+NT8ct192;9IZ7cjy7 k3!BhE6JEd;zGxG>LlXZ*vs_n;+Zr<1Z3Y8}s1d>8|IjdUIsgCw diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_In.class b/build/org/usfirst/frc/team708/robot/commands/intake_ball/Intake_Ball_In.class index f0cacd37c5936396e4ddd65f57e93816aa08dd0e..ec3fe1eab647bdcd5c1cace6d33a9774fb123c97 100644 GIT binary patch literal 1142 zcma)5T~8B16g|_grOVQ4u?i|+L2N0?Vnj62m}p58lB$Uk9(*C&c96mDPO~$M=x_2x zA8O)*KfoVlywmNM##FP(%$a-VoO|ZZ?2n({z6037T^lx*Y-F*V#R_g%DA`!Wnu**r zXx*S&7RnYX43_Vm9|)f_usw#%V-X1bgdtVg+c>1DCfk(CH$=c+M1GTp2VS#7kwQbZ zyw0H)3bP&rQ~E?GhFU|0Z{0{8i%@CzIBdC^d;Wv%hi)jFQoAkb`(Dsit_ZaEjvqC> zPRHGk@iW3l`@tgy+c*(kM|`Am$%=7f@pImaG_7r+>XcU}yxmW}p^*oKXGxQXVbs+o zW51SB*y43zEYJU5V(Zj9^Bl~f=wJgm3snc3xXnRl_9| z2b#OYW0afuf@Hpj^jOjEvkS0@ZPW~t_6^ihq(0Qxq`1kkG1(Y52F67CZTdD+xPk@B zngh8sn|hf@pC(_oV&5AjanxWlM z$s0e_hceN|KTNv55j=W$?~$LVKpDTQqKL;m?aSEkx8fk+Vd!sX`E$w-w&TYPt`#DA zC_hp=N4yu^)KKP1y+tSbNc4sx_bG~)@+o2yNs{)BJ#k;FH0g>hX~oX|Nq+a3pKuQi zxDKv+Siud3waJp(D%OU_Mmt#ba1(1DT5vs_hs*G6GWI{7%djeXssFAo{meAVLKz&N zTIIJh%NSNB_j+Xw&b&BvmSOWB|Dn@Bf6zumy7&w91sju_{T;{9h}4PLQAQ;+K&=})>p94l$796bZND*Le&|{yzCOrqDfT+(>cK= z%EPnz7nGUv84#^&%I<9)2Y+5K#I61|IoZ`221JuR|7RjWg0zq{|z%Vyddhr+Z CuhhH% diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.class b/build/org/usfirst/frc/team708/robot/commands/intake_ball/ManualIntake_Ball.class index b46c8e869415d9f29882801b094cab85280dfd84..193584536fc9a6949d07646dd9d03e813c756ebb 100644 GIT binary patch delta 726 zcmZ9JKX21e6vcnfcI?_QPH2;sHY6=j{<)>4O-l;|3Uq;u8HokKzybpwAfEvRsRIie z3ldPkNF88jMdEY7ju7WL#;$n7^S$r-oO{l_FX}()55E05_yTOO8*!A=Ax+MNoaJ1= z`3R3RWQpZ~3lS@<+Lw#|&i8(P{I5R+)v>j;NYM3we!zyofBfv>(S z+%lPpz_uEqt`*Xh$m1pQt#}+E@9g6?{fye6Z@Q*em)?0{#}i!D*ZQudA93C&7!S{SM{S0c_gd*)%PG*C1v-%ajHH@flnYtY ly4DYkFDNNamK6PhqLyYf{wLU4kl5`*4F5zJ8Mj&&{{s6-M3(>n delta 682 zcmZ9J&rTCj6vlsdrk%@7r&Fv23ur~af^GfN7DN!mM0ajnyD|CzU;_I-11Sj$H||V~ z8!)K}3*8#GCO(G`V2s}##-ZUZ?m73I^PTTI=l&`kmR|h$d-@evA1-4VEbo3J;Ar%Lg~2Nornr|E%z+lgEyz1c{!XluaZktExnjNtA^Ha z-fs*)nj~4{zGXe;0UL&87hZh2yR*0ddS`#nvKjM`t(ZqVj@hOfbDgT;nX5ba-u(RB z+ckrVq`DJe5R2~1di7XF0#TA~Y5gxsxqIiu`nu+8m@|<2j z)!V?zpCS}XB6W4cT%{%|9Rj diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.class index ae8a09784bebab2ffd3bc3b87cee91006c4880d0..2fcd6588774f3f056a5e31e46dcfa17e638427cc 100644 GIT binary patch literal 1090 zcmbtST~8B16g>lN*KSv;SP}dHrJ`+71_LUI1`{C|ld6dl9(*C&c7VZdr`egskKg2r zKGehqefQNr;4d-W*=@HCG5Fv<%-%aQ=iGD8ogcryegm+IJ1$P+O777w%II_9VK$FB zT+My|xe|Xau3_Hpmu+<2MhgyZIJn7>dnh~7tTT*Psyhss4b>71#k%Z>=TXoQ;kMss z)6QgFHU0LEA4;3|H#6oyYKG0a3io-W_hhII-wT`E2tT;Lyv9S-P=+^E5cr*z=CWh_ zH)3~R_#uCq#7`*ReG!=l46aoo{kHr-^&Ig|G$TWiEAheh0SaNENYsvbC|JuKVf859{F|9?Xa z3!)YAw_V8-UnpwJ#^JyXzLB^>%C#`tG7u^L5hppL{dWmFgs$+pmD{hnNO6D;Vi8abV_H)P*fnyWSqtKaSkQQGB}@dt@XLw&&ZaL>*3Up$t6Y* zK2NwIi<`1cr7Vkd&sJbVu$2rbg_BZTOet1I>KBd^%#%~)5rTmRhD)*1%YOj0*4VND literal 1021 zcmbtSO>fgc5Ph336UR_ULxBPK5mE{gpdPqXj%ob2=6>k z%mW73DiOgze4u#_f5*eb5ORgyq!Yc*`>D#;6nRXzL3CWHWN7S(`%)$< zJ_rs24=x%G7Cp3a)xna7Yq;*AgNBE*XfQnf|7S2P@qXgJ9SVQ!2BCrI9UOV!uaCW8 zXdgf9g>`QH#v{uZ?)}4Po%Hm3ZFr=M_L8-$#}E5^A45HohkQ#Ksc17g8|i{*BZpX^ z6{^#!0X2~IXi)U1TA|D+S8sd)`$V9GlN4RbpbHgD;Z%y!OH`evs)92)!5Ydbf%_Sy z7Rn=3Cs~>_c)Gyi<}A&eeHCl3ewT(4=kUCXI&8g|2(TeR@*ZQ5B<=rrAZE}uP+`8FbH9cFr z510wRW%m@6rIUVd-S&FEvF_Ck-!ePr&%I!HZq4<1`1i3tk>;^-%_9~?oZ6i zmfdVIG2{EReaq{*ZPRCnR4EIUP<{s1N5j0T)ld+-C9Q`h66Gy_Lm)d=zcr={c zfyMDK@A6xW!ZF*+PJ4?%+*I&*ej*ZwU?;jPo~KU4&LfLqD1?WCbI}P{TnzGku%1O? zR6EFldM^Mz*%}}{%z6vMn{)@gp@%_Y5l8#HwJ820aS(3fo=Ak+3~*1>B-U}dP@sp= zRWK24|7Hj-*;=v}IrBHnV{hn->kp6WOii(av&}{Y|;AJgKau3YD>p7 z3fsPOHk%nLE_zetU_+uTP;I|rnr{hz6Ml6N? z|6z`?G~}_{rqeW*Ya3Rbl~}MEedAu&Hi9ups%_Uc1~buE4MyW&7_yl2i;E&D$)F__ zT#3$eWKSGo3bba~xH8T4O@F~{yPksS|G}ozO)@GO)}eeX@LJ_Z(cAC7cLTO&v>iJej!BE>Z8x_08DZm+!%^y~qSjAKP(0CRK&LGY& z8g>i6L1Lm|@LYg#Njq5pbZc{_y^UUNnl*xyPt!*RzB@%n2N-{~V_9aqZ zNE=12$B^K9lItmq;z^uf4BsV353J!ierAF6^Oy-dDGNwpguHu&r7@&m8N<+vsyd@h zo}Cz1v)bfekl4nEc$8A=-?g>)NOdhShS6#%EnmlQR5FfNOPSDqwptpR%%yVaTqZX} zZFL)ui$_V1&kRrI^z1O-Qrj5c3%w-6I7@)0_^~&QA%ZbNFitY)(+s=Fpf54(S8*OD zN@!vh8@Rx)vy1YG_jyPjV{k-4ohQ(|xY5T8q++ys7cWvXPTOs2m!Q&vO&i~bMjx-y zQl4-WaRo17jw!iBpYxMGbJT3&2o@-()B7+Maha>a;KayCHu(VG+RK*sLVPZ-GGwe<0psuUN>b+5?=-sSokQ+SzzB%zTQU;GsRS7b!N{o( zaB45S5hfYv((qkE(+h=I+zqj~8)6YvrdEVl#0n{)Tf_}gBG@7eBhONai93p`fcjs2 z*Z3?9TCe70z};FYJb1z#5B6gkHc++@f@vm3*54CunbU zpnHnd`i4YY{6q?dfsnsL`5#M8>?`Cnm|r2bGm>ibUf&%^Ps_>zv_IqY13WDbqsYSq Qh42g$CMI2j{1~kN0u!t_GXMYp literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class b/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class index e70c45edf98021c2bed2791f977f027776e4bc54..a9e524a9c058d6bb801923ad2b54da604438d9b0 100644 GIT binary patch delta 679 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 Irwq#cKT|zFCIA2c delta 3128 zcmZ`)3wTu35&q}yX7BFhkYqPYvYQP_3`F7$NgyPERg)NzfK(oW3i2ocBZ?r3NPTZ< zZK)4p>s5iESb;))fx6iMK1iyq4}9RORa>=M-=Zz8+G>pA%-Nf`O-;Vsf9A}YnL9J* zzh^&h+J1a||2Gfp15iWrO+4bqqZWRIKbZKVui?ZlwgUkyz+(cB3p`=sNedSC%i<}4 zrv;u7cvj$mz;go63%nrkqQFZ6e-ik!z{>)!1mcXZiuxB{Lydl)e&Jtz4dL%ruZhF! zzJ`@u+9si4?)op1J9Tt(u2oR&;~Bl#@~kY%Bk23e$Nuxw_EmL-sFQqZCh8i`#m&pd z5CWq|RgSA1Upcy3(GgUlunfyh8m4GCl@bQeYF@ddWmR$GigT8=tW=L~3%@sG{OYiYC)ZCdCv@;l}BQ0w)Vhl{2Yz*7yq(2h|;9PNV6BQDshN)^MjY zbFgOt&2SE6MrdZ@gUs!Q(;hsOW6~@|r_yYNb|g)jL#XDmtDV_7wKO-;n&TtyJVL3{ z6)to-!sYP={AmNjV1TK>njr;h$*jJ=hh<2(pw~-ru9iG~EqTUTGEKB(rfA7z z(USS1B~wOAW(}APhA>APm^@lCf3#!@X~`_ol8K}xb4g34la|aVEtynWGOx5`W@*Xf z(vtb5B~wgGW*I7^V`iE*Fxgl_PE<=iOqOAgd<2Z^5-K-`sMRUXb7I%?mSQ8wz_0LY zUJ-6cxjE0~&0(*yNO_HTbxEcwclomb+-X4^Cvb$kQf{kd?2_{Bo(FA8xbPO}>Kr}CN@`hUwva^yH zVTUor`7An?ra0yK(ZVJ+?Z8O89c9@qw<9b{kVbBW#f~RCi}K64kk(+Qp4~(CT!?>Sy-W62y$Yp{z(7ib6&Y>OB#!JC(~) zW91B2@hNy%R`Hu-b_b>}nG~AAm7LYM2t}ZBw_hx4=H>ZWt-cC8zgdroBao^IH zxQbVDHW{3F$la_MXl3+?kv2kdYOWx|%}KZwn|XH~@6>TkQk74-J~nzEtEq5{C1^7; z=r)}~h$Kl<2O!#QniGWI;C4yoOdpyTmlvlZw{qmR0V22X#~?Lt#WuH$^d8Fk_psx8 zd*F+%FW6vB1`uyYzMNM21n&CY==nKC&m$0^S=A{_Z(N?+P7f4XayZOy$iGVV9wNnHdNRZ?KmTepdDvr zZj$dqG4L~QVG=pAn9I+6UW8?XKjh#R4C;-NZ8n8mlf;V`Kl2u{J!c!=VtoeAC;t4* zm(8%d>E?GDN~Ss+ODgj+Dah>vX^2R<-59S#k@H5$;`lujLxPIYPNhhajSi~9ZoY9J z&_l9$6xHnCf!!Pz!A|Vq??5h#+TP27wY}_3kn^j+pdLi12Tdj(42251!T%YDaS}Wx z9y0N;iG3gwo!#&m5l%U}i=zzuo+?>}V9-c9g(`djI*rbt(-FnL*e*QzH#>id&+z%T DcqS`! diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionLift.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionLift.class new file mode 100644 index 0000000000000000000000000000000000000000..9bb4cca9765ecca5c16fd130592ff2d273f4677c GIT binary patch literal 8925 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 Fe*xt+`6&PZ literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionLiftGear.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionLiftGear.class deleted file mode 100644 index 9259eee7a519d961a1700a85216c4df24f597689..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12627 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 diff --git a/src/org/usfirst/frc/team708/robot/AutoConstants.java b/src/org/usfirst/frc/team708/robot/AutoConstants.java index aafb876..845ac58 100644 --- a/src/org/usfirst/frc/team708/robot/AutoConstants.java +++ b/src/org/usfirst/frc/team708/robot/AutoConstants.java @@ -18,18 +18,18 @@ public final class AutoConstants { public static final int SWEEP3_MAX = 400; public static final int SWEEP_DIRECTION_LEFT = -1; public static final int SWEEP_DIRECTION_RIGHT = 1; - public static final double SWEEP_ROTATE = .25; + public static final double SWEEP_ROTATE = .6; // Drivetrain Constants - public static final double DRIVE_ROTATE_MIN = .2; - public static final double DRIVE_ROTATE_MAX = .3; - public static final double DRIVE_MOVE_MIN = .2; - public static final double DRIVE_MOVE_MAX = .3; + public static final double DRIVE_ROTATE_MIN = .4; + public static final double DRIVE_ROTATE_MAX = .5; + public static final double DRIVE_MOVE_MIN = .3; + public static final double DRIVE_MOVE_MAX = .4; // Lift Constants (Field) public static final int LIFT_TARGET_HEIGHT = 5; public static final int LIFT_TARGET_WIDTH = 10; - public static final int DISTANCE_TO_LIFT_TARGET = 12; // Distance to stop at to place gear on lift peg + public static final int DISTANCE_TO_LIFT_TARGET = 14; // Distance to stop at to place gear on lift peg // Boiler Constants (Field) diff --git a/src/org/usfirst/frc/team708/robot/Constants.java b/src/org/usfirst/frc/team708/robot/Constants.java index 0612cfd..bca5f73 100644 --- a/src/org/usfirst/frc/team708/robot/Constants.java +++ b/src/org/usfirst/frc/team708/robot/Constants.java @@ -27,7 +27,7 @@ public final class Constants { public static final int PIVOT_GEAR_ENCODER_COUNT = 1024; public static final int PIVOT_GEAR_ENCODER_HIGH = 35; - public static final int PIVOT_GEAR_ENCODER_LOW = 0; + public static final int PIVOT_GEAR_ENCODER_LOW = 5; public static final double MOTOR_FORWARD = 1.0; @@ -85,9 +85,9 @@ public final class Constants { */ public static final double SEND_STATS_INTERVAL = .5; // Interval for reporting in seconds public static final boolean DEBUG = true; - public static final boolean LIFT_DEBUG = false; - public static final boolean BOILER_DEBUG = false; - public static final boolean GEAR_DEBUG = true; + public static final boolean LIFT_DEBUG = true; + public static final boolean BOILER_DEBUG = true; + public static final boolean GEAR_DEBUG = false; /* * Sensors diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java index 9c63eb4..e60d8d5 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java @@ -38,28 +38,30 @@ protected void initialize() { public OneGearCenter() { // go to lever - addSequential(new DriveStraightToEncoderDistance(24, .3, false)); + // addSequential(new DriveStraightToEncoderDistance(24, .3, false)); + // addSequential(new DriveStraightForTime(-.3, .5)); + // target lever - addSequential(new WaitCommand(1.0)); +// addSequential(new WaitCommand(1.0)); addSequential(new RotateAndDriveToLift()); // place gear on lever and back away - addSequential(new WaitCommand(0.5)); +// addSequential(new WaitCommand(0.5)); // addSequential(new DriveStraightToEncoderDistance(6, .4, false)); - addParallel(new Intake_Gear_Out()); + addSequential(new Intake_Gear_Out()); + addParallel(new Intake_Gear_Down()); // addSequential(new WaitCommand(0.5)); // addSequential(new Intake_Gear_Off()); - addParallel(new Intake_Gear_Down()); -// addSequential(new DriveStraightToEncoderDistance(5, .3, true)); put this back in!!!! - addSequential(new DriveStraightForTime(.3, 2)); +// addSequential(new DriveStraightToEncoderDistance(5, .3, true)); //put this back in!!!! +// addSequential(new DriveStraightForTime(.3, 1)); // get off lever and go for some balls -// addSequential(new DriveStraightToEncoderDistance(10, .3, true)); put this back in!!!! + addSequential(new DriveStraightToEncoderDistance(15, .3, true)); //put this back in!!!! // turn toward boiler - addSequential(new TurnToDegreesAlliance(.4, 50, Constants.COUNTERCLOCKWISE)); + addSequential(new TurnToDegreesAlliance(.5, 50, Constants.COUNTERCLOCKWISE)); // target Boiler addSequential(new WaitCommand(1.0)); @@ -67,8 +69,9 @@ public OneGearCenter() { addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); // unload balls - addParallel(new SpinShooter(8)); - addSequential(new SpinFeeder(6)); + addParallel(new SpinShooter(7)); + addSequential(new SpinFeeder(6)); + addSequential(new StopShooter()); //this is a test replace with 3 gear // addSequential(new TurnToDegreesAlliance(.6, 45)); //add alliance direction diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java index f51572b..4f390bd 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java @@ -5,6 +5,7 @@ import org.usfirst.frc.team708.robot.commands.intake_gear.ReleaseGear; import org.usfirst.frc.team708.robot.commands.led_out.SetLED; import org.usfirst.frc.team708.robot.commands.shooter.SpinShooter; +import org.usfirst.frc.team708.robot.commands.shooter.StopShooter; import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightForTime; import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; @@ -29,25 +30,34 @@ protected void initialize() { public OneGearLeft() { // go to lever addSequential(new DriveStraightToEncoderDistance(80, .3, false)); - addSequential(new TurnToDegreesAlliance(.4, 40, Constants.CLOCKWISE)); - addSequential(new DriveStraightToEncoderDistance(10, .3, false)); +// addSequential(new DriveStraightForTime(-.3, 3.5)); + addSequential(new TurnToDegreesAlliance(.5, 45, Constants.CLOCKWISE)); + +// addSequential(new DriveStraightForTime(-.3, .5)); +// addSequential(new DriveStraightToEncoderDistance(10, .3, false)); // target lever addSequential(new WaitCommand(1.0)); addSequential(new RotateAndDriveToLift()); // place gear on lever and back away - addSequential(new WaitCommand(0.5)); - addParallel(new Intake_Gear_Out()); +// addSequential(new WaitCommand(0.5)); + addSequential(new Intake_Gear_Out()); addParallel(new Intake_Gear_Down()); - addSequential(new DriveStraightToEncoderDistance(5, .3, true)); + +// addSequential(new DriveStraightForTime(.3, .5)); +// addSequential(new DriveStraightToEncoderDistance(5, .3, true)); // get off lever and go for some balls - addSequential(new DriveStraightToEncoderDistance(15, .3, true)); +// addSequential(new DriveStraightForTime(.3, 1)); + addSequential(new DriveStraightToEncoderDistance(42, .4, true)); // turn toward boiler - addSequential(new TurnToDegreesAlliance(.4, 130, Constants.COUNTERCLOCKWISE)); + addSequential(new TurnToDegreesAlliance(.5, 90, Constants.COUNTERCLOCKWISE)); + +// addSequential(new DriveStraightForTime(.3, 2.5)); addSequential(new DriveStraightToEncoderDistance(50, .4, true)); + addSequential(new TurnToDegreesAlliance(.5, 30, Constants.COUNTERCLOCKWISE)); // target Boiler @@ -56,8 +66,9 @@ public OneGearLeft() { addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); // unload balls - addParallel(new SpinShooter(8)); - addSequential(new SpinFeeder(6)); + addParallel(new SpinShooter(9)); + addSequential(new SpinFeeder(7)); + addSequential(new StopShooter()); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java index fccad1e..c642659 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java @@ -31,29 +31,38 @@ protected void initialize() { public SixtyBalls() { // goto Hopper - addSequential(new DriveStraightToEncoderDistance(100, .4, false)); - addSequential(new TurnToDegreesAlliance(.4, 80, Constants.COUNTERCLOCKWISE)); +// addSequential(new DriveStraightForTime(-.3, 4.0)); + addSequential(new DriveStraightToEncoderDistance(55, .4, false)); + + addSequential(new TurnToDegreesAlliance(.5, 85, Constants.COUNTERCLOCKWISE)); + + +// addSequential(new DriveStraightForTime(.3, .5)); addSequential(new DriveStraightToEncoderDistance(25, .5, true)); + addSequential(new Intake_Ball_In(4)); // back off hopper and turn toward boiler - addSequential(new DriveStraightToEncoderDistance(25, .5, false)); - addSequential(new TurnToDegreesAlliance(.4, 45, -1)); +// addSequential(new DriveStraightForTime(-.3, 2.0)); + addSequential(new DriveStraightToEncoderDistance(25, .5, false)); + + addSequential(new TurnToDegreesAlliance(.5, 45, Constants.CLOCKWISE)); // addSequential(new DriveStraightToEncoderDistance(40, .4, true)); - + // target Boiler addSequential(new WaitCommand(1.0)); addSequential(new SetLED(Constants.SET_TARGETING)); addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); - + // unload balls - addParallel(new SpinShooter(8)); - addSequential(new SpinFeeder(6)); - -// go to lever - addSequential(new TurnToDegreesAlliance(.4, 20, Constants.COUNTERCLOCKWISE)); + addParallel(new SpinShooter(6)); + addSequential(new SpinFeeder(4)); + addSequential(new StopShooter()); +// go to lever +// addSequential(new TurnToDegreesAlliance(.4, 20, Constants.COUNTERCLOCKWISE)); + // target lever addSequential(new WaitCommand(1.0)); addSequential(new RotateAndDriveToLift()); @@ -62,8 +71,9 @@ public SixtyBalls() { addSequential(new WaitCommand(0.5)); addParallel(new Intake_Gear_Out()); addParallel(new Intake_Gear_Down()); - addSequential(new DriveStraightToEncoderDistance(5, .3, true)); - } + + addSequential(new DriveStraightToEncoderDistance(15, .3, true)); + } // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java index 906bf70..856dd85 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java @@ -33,33 +33,42 @@ protected void initialize() { public TenBalls() { // go to lever addSequential(new DriveStraightToEncoderDistance(80, .3, false)); - addSequential(new TurnToDegreesAlliance(.4, 40, Constants.COUNTERCLOCKWISE)); - addSequential(new DriveStraightToEncoderDistance(10, .3, false)); +// addSequential(new DriveStraightForTime(-.3, 3.5)); + + addSequential(new TurnToDegreesAlliance(.5, 45, Constants.COUNTERCLOCKWISE)); + +// addSequential(new DriveStraightForTime(-.3, .5)); + // addSequential(new DriveStraightToEncoderDistance(10, .3, false)); // target lever addSequential(new WaitCommand(1.0)); addSequential(new RotateAndDriveToLift()); // place gear on lever and back away - addSequential(new WaitCommand(0.5)); - addParallel(new Intake_Gear_Out()); +// addSequential(new WaitCommand(0.5)); + addSequential(new Intake_Gear_Out()); addParallel(new Intake_Gear_Down()); + +// addSequential(new DriveStraightForTime(.3, .5)); addSequential(new DriveStraightToEncoderDistance(5, .3, true)); // get off lever and go for some balls - addSequential(new DriveStraightToEncoderDistance(15, .3, true)); +// addSequential(new DriveStraightForTime(-.3, 1)); +// addSequential(new DriveStraightToEncoderDistance(15, .3, true)); // target Boiler addSequential(new WaitCommand(1.0)); addSequential(new SetLED(Constants.SET_TARGETING)); - addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION1)); + addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); //drive to bumper - addSequential(new DriveStraightToEncoderDistanceOrTime(50, .3, true, 3)); +// addSequential(new DriveStraightForTime(.3, 1)); +// addSequential(new DriveStraightToEncoderDistanceOrTime(50, .3, true, 3)); // unload balls - addParallel(new SpinShooter(8)); - addSequential(new SpinFeeder(6)); + addParallel(new SpinShooter(6)); + addSequential(new SpinFeeder(4)); + addSequential(new StopShooter()); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java index 1bd6d7b..20baa90 100644 --- a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java @@ -58,7 +58,7 @@ public class GripPipelineBoiler implements VisionPipeline { double filterContoursMinPerimeter = 40.0; double filterContoursMinWidth = 20.0; double filterContoursMaxWidth = 100.0; - double filterContoursMinHeight = 10.0; + double filterContoursMinHeight = 5.0; double filterContoursMaxHeight = 1000.0; double[] filterContoursSolidity = {0, 100}; double filterContoursMaxVertices = 1000000.0; diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java index a5bd563..aeda50f 100644 --- a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java @@ -49,9 +49,9 @@ public class GripPipelineLift implements VisionPipeline { // Step RGB_Threshold0: Mat rgbThresholdInput = resizeImageOutput; - double[] rgbThresholdRed = {0.0, 0.0}; - double[] rgbThresholdGreen = {74.43502824858757, 141.36363636363637}; - double[] rgbThresholdBlue = {0.0, 0.0}; + double[] rgbThresholdRed = {0.0, 120.0}; + double[] rgbThresholdGreen = {110.0, 255.0}; + double[] rgbThresholdBlue = {0.0, 113.0}; rgbThreshold(rgbThresholdInput, rgbThresholdRed, rgbThresholdGreen, rgbThresholdBlue, rgbThresholdOutput); // Step Find_Contours0: diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java index f8dbe50..528281b 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java @@ -48,6 +48,7 @@ public boolean isFwdSwitch() { public boolean isRevSwitch() { return (pivotMotor.getPosition()<= Constants.PIVOT_GEAR_ENCODER_LOW); +// return (false); } //I believe this stops the motor diff --git a/sysProps.xml b/sysProps.xml index 9c614cb1dcae21268c8353bf63ee472492eccd15..9466f234deb49a9fc4bed7faa041401e56fcd7e2 100644 GIT binary patch delta 177 zcmW-ZF%rQ*7=_=&F48boN=1&a*cFqlNTSAY6&G3K7Ba@3AcX^H)k=jE7;jSj?|tw6 zuhzA`T{>|EgB7Nj`)B0BtFxEG87y+F8RRHoeA9Q~6#s;+2sOhJ6|Y80wZQ^QRx|pd zC5DuHWR}aR-w7AqgHI$29C4t{{8x3oQs$ F@drPvCaVAd delta 173 zcmZ2yu+Ct^G-h@)1``HX2A9c!EVi3(F$b~o8!}ijSTPtf7ywB(2Fu9@IjlFAasFd5 zbz(4QFa=7Q0Hr`sfx(5r0!TYE7z3dtRKx@*>I8(&Ky@w*3P5wMH$UNf!^G~&5X=z5 zU^@Arh~;Dfp=s=fK;ujpOeU`tI?4(%#sH|)d~$#w%j8YM3ant&K(*GJg+ydn09x54 A4gdfE From 445cec3117ad964a92efb8a5951542ae584c793d Mon Sep 17 00:00:00 2001 From: jpiergal Date: Wed, 15 Mar 2017 19:48:42 -0400 Subject: [PATCH 53/69] after testing boiler --- .../frc/team708/robot/AutoConstants.class | Bin 2180 -> 2275 bytes .../usfirst/frc/team708/robot/Constants.class | Bin 3385 -> 3385 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 6739 -> 6653 bytes .../commands/autonomous/OneGearCenter.class | Bin 1982 -> 1998 bytes .../commands/autonomous/OneGearLeft.class | Bin 2125 -> 2110 bytes .../commands/autonomous/SixtyBalls.class | Bin 2194 -> 2223 bytes .../robot/commands/autonomous/TenBalls.class | Bin 2014 -> 2030 bytes .../commands/autonomous/driveDistance.class | Bin 1431 -> 1151 bytes .../drivetrain/RotateAndDriveToBoiler.class | Bin 2134 -> 2201 bytes .../drivetrain/RotateAndDriveToLift.class | Bin 1812 -> 1812 bytes .../team708/robot/subsystems/Drivetrain.class | Bin 7371 -> 7210 bytes .../robot/subsystems/Intake_Gear.class | Bin 1531 -> 1388 bytes .../frc/team708/robot/subsystems/LED.class | Bin 1993 -> 1856 bytes .../team708/robot/subsystems/Pivot_Gear.class | Bin 1689 -> 1549 bytes .../robot/subsystems/VisionBoiler.class | Bin 9205 -> 8377 bytes .../team708/robot/subsystems/VisionLift.class | Bin 8925 -> 8205 bytes .../frc/team708/robot/AutoConstants.java | 18 ++++++------ .../usfirst/frc/team708/robot/Constants.java | 6 ++-- src/org/usfirst/frc/team708/robot/Robot.java | 7 +++-- .../commands/autonomous/OneGearCenter.java | 6 ++-- .../commands/autonomous/OneGearLeft.java | 12 ++++---- .../robot/commands/autonomous/SixtyBalls.java | 27 +++++++++--------- .../robot/commands/autonomous/TenBalls.java | 14 ++++----- .../commands/autonomous/driveDistance.java | 17 +++++++++-- .../drivetrain/RotateAndDriveToBoiler.java | 25 +++++++++------- .../team708/robot/subsystems/VisionLift.java | 20 ++++++------- sysProps.xml | Bin 6190 -> 6190 bytes 27 files changed, 83 insertions(+), 69 deletions(-) diff --git a/build/org/usfirst/frc/team708/robot/AutoConstants.class b/build/org/usfirst/frc/team708/robot/AutoConstants.class index 4568e8b411c63ce44d0d93c8a66b8096eb5f57ec..3419c776a793908fb5152c4b5ac8dd164cbd6079 100644 GIT binary patch delta 981 zcmYk*$!-%t7zE&Io3SARB*!=~Y+(@)7A25`MIewT@n8?w9^;u1TP(v8mV|w|ahMA{ zKx7Fnc>zuc<$%Niapo-$w>$)*+K^C}mcQ!izvs|?TliHd{rLU$8-Pi?9zYgP^LUoW z^TpCqaj=`z{GeKklepIQqgq(6EPgr^Ts9bpW_`ako-~4HmPhN7cpaO(Uri=fJ0B$Z z+xfXXY~C5S6vbgH@#17E4C;RS-<7#?cX=t(G#hf|>URzVdMnw^$P0tbUMGl>X|Lh8 zy(Flt$4i4vGtrbruX+pXK4$OXes9Q`Go!sXj-NU($Z<{vdAKNGaLq+}i?~D&iMP_* z#4f#Eyo25;-bL>g57T>63HCDBhyNe6pFSWyNRNmQ(?`X}=uxrlkIDSw^a=4eolZzF z$>5~e7EX!n{%N`341HF7jy^BGK$pcHJuUMpa8vja*b6Vpfhrw{FVS`BH|VA~q+8Oz zLPxT1`>{Ag>S9I?*bA;o!5)|u+Y36<@6y*~-}bMIZT|*tuDz**z9qgr&)|*(cj-A9 vP~=eqK3T30_)N$82Am^bU_STX?L)3P#^B#{p6kZ`ZwCu_L>WBhn!%GlR*+s| delta 893 zcmZA0OHUI~90l-mTZR&XBn65TH6E-*foqPUsCz;#x=uR|tdU13NAc;Tq2xB9H%?P%3V|%+N zeSX=XKEL33+0jzQp9{0LCW%{QVg_!KvFnZ*l;o=O?;vUZnuD`Y+Ekv^6#KUg8r`Cw zFQwd!mvc-0yE^esYxKLaU$Y-BVYyOp%4VQ)9|z&BBZf`1Gv!J^exY8TzB_ z+kRGT`}5Mb&(F!ek06e`1a{!ly@7)4+XFs}ZGQp9+fVp~{wiLim&D)b?=s)ybJT!W plIseu;ZW6plQ@L=U%i*BTx%JFf2SW@8>+t@l(9w`{Nx(K`XyG|O(6gP diff --git a/build/org/usfirst/frc/team708/robot/Constants.class b/build/org/usfirst/frc/team708/robot/Constants.class index 9f2525f82093b8a39fdab76b9f7dfa66f46d2646..b0aa4eff6984732fb939cae257f52fcab0819587 100644 GIT binary patch delta 256 zcmdlfwNq+CD$C|979~bjW(EcZ#?3vf!L0R>43Z3K458m bd=;|($s4%q87n6n@aO}{1RfCk0Z$|V<_sL_ delta 256 zcmdlfwNq+CDhn$!0|Nu&=2R9X#?3vf!L0RZ43Z4#45K*>0BI;=kbzrJ4&+y$IiM1W d4{~r7vi`{%xa%3yCL8eR1IYv)5c>g7Bmn+^9MS*) diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index d538bc3239043f4c6081cb7b694b06cf0164af44..97f63fb15d6ed7e05f949b69d6270e76731461cf 100644 GIT binary patch delta 2036 zcmYjRX>e3U5dL~M*?F1F?#4|vhlwHNAP`~#Bp?XUfGB^k3Q#GmREa5xn5rZTF~kFL z5f#M?^?4$K3IP=aNgxLxh~kBSB3^*X;RUD&c#D8N^OoJ+AK%yAucznh?)P?g<>`v> zwlnKD0jQ)w61Sj7V7-J3JxOTA1`Qhp-jMJ(kxkm#Ebyj;bRt^>-jeV-&f5Z8B~l#c z9f5ZxQXS_#f%hfS9p?jqZ4z0=3FAY7?Gic8qa6Y}C3-o|M*<&9Tx zBAl>rQs6gvG4666+?;Hj=TCvYkyTI3NVBpP*wB`8T^nl>f(PRSOjWNml_`2_hpQe7o( zIl{Jf1nYn^0kocl8U5t8WdpOdeBL%c=L^UP8IO z%T;bE+=(!uROeV@FCVS&5FX~jgFSO`U*xR4NP5)R`Wssm?#DdBV4ciCpZftkXs?z< zm5*S)LMPf3)}c*Ms-iRsDoWRpwK|faBbf>>;w42{bUvZTv{mi#k5qU8iwVIinnR6w zBO4m(YnyJU%eySp*jU>%MNu~82)aN~F7+a)Q4KTd&gBToQ`DRC?WW|?!l&_!!XhkI zRKT}Vp}w_9Q6DN+)K^FP@!&QkU+FHP{x%LWwS;9a)IK8uD0dITC8CSTK zKWgwR2=J~LlfY{-%-b={(>BaoGRzw?%qua>Q#Z_mHp~+?%v&+clQ#S)9y9zno-)ks z1EcxEXR&|-&@Yf-euoV6XbkhL4f7@pFVP2~K;UkS| zIg$rt;}yKh9$`h~OitPYT5flxjmeH>&5LHOjAUg63plGPm=Tv1h-SSO$qEIhbJoFN zd2y`P^^vSqe5(fu1Kr+izJ2w%x*0ifinnvd4*sjy8K*coddusPGjr1WgkxRq;coXL z4g2EG1mo^>gM5798s{*J=x^HR5v*au1zpL*3BaMa3KYGyJ$kT;vvgi^H|*jJUz~=+ zT;T}oJ{ngcrn@6r;o?XIs~goNT_}$!a5i?F_jUpTC*$f^5hX7DIr8~ste}fGOZM7~ z8lHAa=I}wWX-|mjJP~vXBh~07B&*th^ZX{uRS5FAe;}Izu6^Jgq73>>-cMpDd~*r=6{!n?)j1a ztJ>l3#*B7k8&n2!4F(Jb4Q3iFG+1n~H)BjjO&OATk7e*sITQ^*fCeIy1|gR!P)L<1 lp&=MR7hwnu#RwV}r>-ihu8ZgCLN}gdmaNa_Aw5x@^*`ZGn&toi delta 2209 zcmZ`(X>e0j6#h=q<|el1qRA(3JlI|bgCNH>jL0=p%$3?qa+0v|}^m|GtT?3KtfjgJKON#vWx#{!>76q&}S z0-s3?FpbY8%iOQvfW#O0Qo%uGekJiW4yh)-Q9T_N_*NO;+3~$ZC4P|j5uqb?9F;hR zp9FqZyT7Qdt!i~#t$tOVo{%`HO4@MBcF7^WE&eI%H??_MwZh<3kfR_^L9&7r1?dX% z6%^sL9ls0wA#oMDm8L&KcKjvqx5Px#@sAy61pbwngl;>|3iL?Ss^vLBeAsooBobti z@T#R%P@F`aTE+{q2@Nfo5NmhG(%{!*f_p z$W}3~iS-T2JqNdIl&(@M^*+vA{g5L;Uuf5Cb8!cuEaF;c5%C&AxKr=rsC10>`u!U2 z#yxCZXuB8lW3x9}rCq~)SU~VZ@{e0=oPQVQ>6;zpwnca(ws@X&*zU&zF-2T8_09Ex z#&PvG1vNZ~hX_L=r540#T>oJ#B)FAx*!aseJc`8{-b9OrPP7Qh&?u9#H0rB79m8%MQyQMf3XO_c4h>Lp&ey1f25K}& zc?P3JZ%w$;T1p<>qSaW-$kSG)iTM=cMeuW1H${`rN^Qdvu`Q z?`v|83rz6_`KH|E`Z?zu_bMtU{C`k|J~wf#wSp>jPg0hxf~p7w#=ZKJO5=tQ1{tqs zt;^ZAC8@^}n$6!D@IM3Ul`uNMufkw{2nO>&4d$m{Fh2!@dHM$PR1M}48q8BOm>+<_ zJT`-MJZA9Yc+z0LGGHtp_%xnj2h{5|m>;mge4PgKv<&948oW{^LIZ*S4veeyc`1WD zYuJ|vD`OSna4nKhgO|f`KsH{%t85Wo3+Eh6Sw?I0S*e$0N2BhKM6C@+9Y`(UsGih} zm?&2yYF#+0ENwbRtw{3}M{C^>j(VL>wIQzD>dfZTTYKxK=fo)9#Sy#tqp~MPaYE#j zws6jv^!}k}m;1Tf14!jhZ1l{um@}=QL_To6nam;v8twBHC`A^iN;VDv4#!lW$f<8c z5=U~Bic9E(ek46HM#B-VaFlf)i>VOR-5#khJY2!viRzLLc%ll-iJjoNorJ)tm^${b z5{vq8bN*^p(7}@>eMUwt-}c^&5f#zSC&Y9f4?2UZxkdg=n2G$SG+W)FUz|CAe4NYQ zg{hNM(a?cg+EG)o9`UX~7p6__!1Q)ZFzlu-G_xJ#eb)@->BLOet-OfiMYMt8NL-v% z5X!_7>W7t-k9I1=W-7vVJ~XOtN2DA6fQ7qR#H{XhWGj+7F{>5X25JW88t5`G&A?0p z3k@tbupgtT~5R}nS45bTj5e;lbTt%7#SHj7#JBC7#2^KXKUaTkL2IZAhC^sW%3+0Wo9b|zR8E! zv?aY5IvKnfrZf03EMjP2FaWCNf$Cvm*JW&(Y`|{8*f}|q-9okxNtThpkiiJ3mXW~% JNHQ^40su^j71IC! delta 107 zcmX@dzmI>yL`Ip7lbTt%7(Oy^FfcMOFif8;&(<(`HJbvn83XU+b8On8o($a#UJTP1 u>KF`w@;p#gLhQPXO_LqiEg0J;SF&5k_8`eJG8i%#0o5`xSO7^T21@`!=o8%l diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.class index 0d50441b6d80ff7e07c06348a420fae9649cc33f..3aa65b7b78240288c06b4cdf97d564d21c1c2252 100644 GIT binary patch delta 702 zcmaiw!D>@c5Qe{djpx+UK%<6I#6@c@t)|+hHMSaUZqp>KHJY}G+H0*vu(%O)Q5UX! z06_?M;Z6{rpa{L7(C!s+Aqaxt#x8sa#W}f2%|dbDoSFIm`G=YLkl0S7-~D>C4V+=k zFiu`Gqr92`Vk-A(ykQ2Hf?4BSvXnf>zD@aDCgfKQ;3$(4$0L$+oVP{Nv?+9| zbTqi#proFyCj73DgIjc*d`q9NLXJgozn^3vWH8ExBs&q3+M-A5+BL(%oC+C<>PG#L zw1mx>f(boPOmk1hek>C{4JH`dk$il%(efY_r k9p~F>-M!kW){g%^PNhxg>)SAU?;esZ`MTbk8408_intg_QS(7#Q70p3r4dZI_ z;lQHpO+_6Y>Y9G8Ib3&Gu)Wm?*5phVsXN*R@&;J4z1}u3Y=C9Wi0QxL;5UE$NVrS{ zAJk%x%Z)UvtSPF&*W_UE$La~{R>^j`sTd08yN>K%Zrpo3^I&76asN&lms^TTT)LT9 zXDxV{n3VF{idqaGe$$uyq*lgcE5^D=a*7EQrzI-LQRciBXK_Zn-2!@Ejx z3@Jvr5kF*9p0SePn3H=t&RvoDME-v!3SQvxiV|-*&qvC9qry+B{HE5Sb|+SwWQu9g yXvRD)w;9t)Y#QG&=UfNV+GTptoR6e<&kfZ(m}-|KgrIlP_Y0S{bxb{v5b-0wZ*AimGZYtUvSq?&%2}3It zmkWkA+kVoJwEL7HMbS2$)?R0*)%nl8!El)|baBz;lFMc7&2RNi+g7uk+UwY2vX;4G z=(hWup~p6_x?Ek^_^Jo#S4`F7v2^XH%Iq3szKLrrC`JRW;8djKx?(5@-#N+1AUA5? zob`yJ5O5D8t&PQd_wP1wlZD!k$bblLDM~i^W;FU;&Gm_GcEpHsl71AYB+AHCcD|Oy z!5XClBE^8R^ z%|81=+*b8z4`EW^{t%`F9$2G8CO9PW&4%^zuB!Gq9E#FXdBi7E2*a#|$9#^5 zZR$nclG)>v3+sC1tX_fJZ=NAhTXfr(a@-LQ9?09DaE_HpV3<#o*kFub zjPskaiZZe7l!|RS6%}SFgm;e9( delta 890 zcmaixO-~b16o#LfwljEXqDUnKu!2aiMaySZtjZK=%a>3Eg^Gd;i5n6(n7FHniF=$C z#+bNrV`2;mlSra_qd!1RSnFOkE{x}PXq}C5lDYSs_nha<-1oj|c-qka@%Ov;zz}y7 zgN)i-ww$R)qJTB>Wm7-T6eeSe0dh9^js949{%%tTE`SMElk=>E86sTt|;P+>Zvm}vx*Ka78RXbwYg?9XE{sNkzE>`x145QXjLS&a$S+q z`wc~(rWb4$H@<(hGNcWP?#ocOTMXB`zl`?!45cVHSu!Zp^aV33t+x!aBBk6<<`GG6 z8zkJ_NZgHtHX~7%S#n>5@*#t?=9<=4@2=c`u--ejx;~v7i;`i*U|g5Bis4;jaX?Je zPlT{|n#SOaWIgg4`h6>l$yr&giV)|V#8JP5Gd+rl!w%im$g*@zS z>XJK{r5MdIBH^0SQab3->Q~!J9!LGKMH*GD5SPNSZQ5l*hlI!dFo<@RERPdD+a+wb zM?z=i9g>pvc%1g3lw^$_y?$$-OzW5M?-^%kl=HNU6`eHE#Yqx!!XC!ymAe>ZP0V>H zZafxsLr(pi3%tT%i!2`)>{meo`z4%-Y*GD=f%Gu}HgoN_OqC8G5bPfX(v( g(yWn}sy6@oeo6t*n5dB>|0kD&WbJ01%8zCL0Po&~6aWAK diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class index f3f496a5f27a3c0fa75e06929ad68a568ae8aedb..6a2c5528c29c47a42d96445098aace6d3953e9da 100644 GIT binary patch delta 176 zcmcb||Bin`5u?h)Vs#+}1~A}aP-1XlXYgZlkl45;g_TpCfrEh&D06VKB-=brfk^)C z41(JjI3{mlQ}%aa5CF<3GO#cxGl(&$GH5VpGng>wFxWE~FnBQ-GK2zo=?vx!#S9h< z^$eB_y$lWvvl$#2mNPgpY-Mm}IKbe-U<5RQ2Wo>7yDp>0e@s*GVkmMFUwP!$t{H2@Xg B9S{Hj diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.class index f89eebd1391d15ce28d01fd852aeabac9767023f..a6757db0c89e01eb241890b86488d1898379bb20 100644 GIT binary patch delta 541 zcmaKo%}&BV6otQ;+Ln~!4-$>mDSQI}MQ7uAp2APZ(dA+4Q2=LsjaQ1g{eiXPiQDGDfCbpBTmR sRrKYy)|0d}vyknKR8OVb(~N)K?ldD*Q(^FrFqpi{*)K{(m+CKDpZpv8 z8+_3RNHo!R|ABwTcxPK+H3;m(ojG^s+;i`pJ3oJa{SIIj`A&>u!oXcjDq|`$Wgv-r zI;OQOol&0w4KoIMFsoxu%a&SRZROVo^?fuD$9*01Iu;m`H7Ry^(UX?g+V+Y~&T9-T z&(M`~Y}d1FuWZ$Q&d~GM!IEf@uha9T9dNWC?cfY?<;?Rf$+@d#%kKkq21D4w6INZk zBVsf?R%VFhoEm|P1!41Next%=$*R=JlPow@t6sLGP`K@kdE3HeSS>hm%k`uFwC8C$*x~<_gs%R+*ZXw@pQ2> zr%RnkV@OEuad2xZYw3J` zW2}r}dZ9^r9We}`7kyy3OelhG!dF6ACww)8`w0((@HKQ$j2lQ%gh7h%lvYM-?-#Ir zL;@QPZ0vI&Fhn*<6p)NYp%dsQJU|J7_5l?)F+zx`@g=LmzQ%>%-)QCl9hq;?UiCpg zK<7RTLUBTgK6FP9aEUzs3SB3;6p0K{z~PY4Xj>?TQQU3|P0*^6h(tdriy^XFOFG1i j95L@4r8rI}6_Xvyw}_b#ksT4!XA{j6i1eIEBZAByZ|_O# diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.class index 7b8cccb9eb9d07b8cae5819bdceabc9b4925a337..98a902d99b6f5b9420905735b630e7c55816fc15 100644 GIT binary patch delta 1075 zcmYjPO-~b16g|^U8JIq>1zJc2L{QNVU-BWKh)@Iy_zCy{iXu`0MZmTs?wT0?fa$7B z_qc$_n6U5%n7DQC${%53Ja?wF?Mu(SbMJfS-23kP703lMKmHwm2hfK-6HVx=KtHY+ z7$_TEWRyP>gBTLHDsW9;Sm3(Ah` zdIPsj+`(PhanIy|`v&F=%zyg$#qVEDrFVAYiOuzm?3DJw-vZ0Pg2Dql%r<*E69yhB zJVvX+B9;`M2s{;77I=o|3M-O*A+QQd;U(4-&Z1c%A>JABUSZw9hQcOZE4;y$!drAI zYzypQH@oa;fG!r_O{vRVJx)Q&RmvBn zbGLIebX3m&2R5H-=SsOCSwLTiiiVfZLNK!!mCFoXz(+384$ zWV9gJ!O~pC6mN%(XJ9#6p&)*LhELyjzQQ?#9H%ZP{ni^cBKp2}pE_RWz9UovVo(@o z%M-lUNoq_{ceX^=%IkJ!wN7VZtKnR$# delta 1016 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 delta 3070 zcmZ`)d0bRg6#mY@@Mhjz5J6^SFhn6m(%4i|Qqa`?$ZXM~%q&7A6d@58Y#D7)TQuvH zm6h$gX-Z9Inc8aEqV2Y;?WSe>V%jQH*zxn;XbMJj;`R+OAo_Y9~%>yE@?qB;X zfW9=uK-7mPO`L%>epKNpfwclp3p^vRPT*OA^#(SW2w`?6s?a8d~Bk?j{Aw6d@Asnz~=(n1$KzaPKo@5z?TNTG7;&Ajk5b% z;2RU);yZy|0vxRh-wWy8vf3lTe~_#GC|icT_(?eYEZbjX`>Tm;{N~5+_(PQc6!^=; z-`FSY{}I^l#{q(m$RrOX__8Tc7G57E`N&{L@+DHBZHadl^=hSL zg|jeD;cSdoI0xq{R0}l8*#&Yo72^rH)?zbgt)S!%3ayx}a3;noO2KTa-lzz*VwJ*q zs8N_8P%AJIHP(8gG`W@7qz>mREMx5hM)#6dN>!-GB!$VCL`a!bJ)^p?p}MiI@WkpC z)@$JS)RA3M8kQ?c#{%n9e>dxM!)vwr(o#E7XXZee3RBQX$Yy3CYkY!Hq|l6M3M~TD z1!f4$6qv<8VJuLXFK`tW5Gt(g{%p(e=SH%qi=rba+n}zBa&V2JZq!{-F5i>#Fi&AF zE*10T3fE$>K}Ra;K|K}aW3j?b4Acv^C@P?%4C<}uXev}xM8%3qu+pGXMSaC*KaNcO z#lB3@F&Ibi4sEWUTx*;{0~8IUaze(iF*(B*BC*+wIOm7+5)YMR0&Djd(kBp^zbW3x6 zV_o^!USq9UDLtvux-(^Jq>3La5Q0Za%qx$yhnCzST5^+U$$g?F7hX%Qy_Q^lEx7}< z)GP z(PRlMAgtHc=&EjZD=@lbHs{o0Nb&i&-F5??Zlsa6_s|3B0ta@<; zuMKz$Qv<0!R+)==+TqpdT_Q08&oGg7nm~>=4!EuZuIqr~nxxak2Rp80`f>r^Y7}Kf zQF8djHgM>T+HcU-bN%{oWrX<=|M<=P*IjXY?p|PbFaDo9$J^Do#_?9Dy#wBY$KhSh zEbWvh@iDLo7l&Esx^b2c=6j*d#aiDf)GwBv*I48AxVTB~HIihy={Sq*id%tZE?DOSNA%{|Lqx>N5z=!;Ee2y)Azah z*Td4jw`UZcE&6G?XLd24-TVgk@NnO&?d)Fa>fWd;Zg6_3D{j=i!q7l6vT!@E{7$!f_8~VxT8sY}BrLm};ylCB0&8NZjNj6-P*zs##g)2w zyTi%zJE2jhN#4T3hzgNPMaZIJ^x)ZBOr`IFhkuGVXJ3S)Lh=brTI|gX7yZxZkPuoXogd)2KMzSm!<9=x#Vf zcTBsw586Dg4`;@v5uF8t#dkbC+5IvG59`0__Yk$3pr$Fq-f+VPQyhi!VCxDqFU z;v=~ziprII7&jznO1lmo!Ez3Mp|vTTr%CIVPSfF~8Azj<+QzP5x?8_=Jj(qk_2WNL zvF1oe>phUT8Ydn$o@jPlC_6_>aO5@}9c{DX6iXCPMdf1t!~ zb5pp$c@iViMsWiCYj9Fk+R4&OQH)%JQ>xNVwR3B4Mi)deX1+c@jh90f+3V8_CPXnz zj$;+b<|hfd5hg7`h;Bk2Ekz;SigLOQ!)aOE)kZj1^Wbrv`X_iC$f)vA1`VblkLTaf Jf%;Tt{tFp~>puVh diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.class b/build/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.class index 37ffd51045407f210480d68c9a1f902ca8bef2f1..a7dd0468133eb95bc369b5c8f7737c76dd793c03 100644 GIT binary patch delta 551 zcmZ{gy-or_6ot?10>kc3L=jOzeic?gL51}fT`etaeFA$Q!8fp(Cm}Hw7ACenPlePJ9EBs?|gZm?&a(E(=&h(&Lw;oIc!RFB)Tqa^c>7#OJduFoF;u! z9+-5;!7lb(3^9@jB=#rQ_rfkkiTfl+BJQj4{^6PmlDjcGsaD;}$vBC+)5~m7h z2n9x3*j0UHd%7k({bIeh(V%aRU0GbDL=h=GGZ3H&_o8m526xM><&olE;$G(4HB`7( zSW$chRI$oCFfLDZjC)be+Ju1x12JHro)C&Zp+VA+_ZJ-B=IL}Fknta(-%>I#a+erj z16i~pL@~;p7(oI1s1YJ)(J(Nr(*AhXeTRfDC+TszL86IbOlXpBLlh`okH^1Fmu_a( cLs|z3;jgt|Q_*)3@bB1RLO2_{MTv#>5A!D|w*UYD delta 636 zcmYk3!A=uV6o$V$(|FtIM5W?Xt6~wbw5X$&DoC+{fI`?|G+}oQq+qZ$)9Oo@xS6eq z@e$Y<5=Gn#9f z>mDvQGK>&vZhGh=aLbl&TUgDArsi>nyJ_Y;A;xaka#}+=!U8ge|PgwF3629H5lU}m*iBEB`nEj z5-hbtNgN6iZ5t>u5URfLvea$+da6*fTu(GGNt&sIA0#-_<3mQ)y&?)_Unfz%O_l0a znIk2!EFCKLCyJ49XkyUoFeMxpH7e4pJ!ijDg=jFkDx+&d!sF43Qs3jeEM+Zab0;gG bIQ5y+&jxOf94yKnjiEN#zT;^TI+XtdIMhml diff --git a/build/org/usfirst/frc/team708/robot/subsystems/LED.class b/build/org/usfirst/frc/team708/robot/subsystems/LED.class index 96ea536e9d2937ca9a8f1512c0e4e66b38ac64b9..e3369a968398058d91f9360e7fe0523d65c50b8f 100644 GIT binary patch delta 529 zcmaixH&O#Z5Jlgt*d10(f$$O(a#-OJPI!Uv-V<^QQW7`-rG$(lP%32W3sd=tGd;NHL0>(Ji42G#?$fuEEp9mwGtj{Q8KI2S;ahbI3oX-@~ zww$r$tj*?Zn78GECa+n%InSx3((RRsBuE+xL=6o@70KdFC^@59HmtIySvPF5Wk|4X zsH0x9W7uQgaKNDk-Nq^xC8|k@ zsiO7@DqY<260PmRFw%o89drsRy66sA*Iq_g_g?d*Wi{bQjDE9h)AuZ7p0`g#gM(Wq7_y5719lZEn@n^D9jDm}Za!;TymxzQPE6bQrnHuY^0{3vR mbQ@au4*k-17@%1&O@(}{OH)23f9kR#I4-y$I3>87k9`8p#V{8D delta 680 zcmYk3OH&h35Ju0PIGN0F5r`TH7zqJ15j4s}z^FtCJ|l`zqxh;|DAbZ*CBbbrR=IJZ zm0uFGu`J7Ss~i1AmVHN17SmsM-}(BUp82--d)Jd6zdwHkrg-dd!ebvNU3!^t2{Y+1 z0IzwAm^~?aPdQNR$Xenf1^5wNN6t8 zuZhs#9I{52uV}83cet*(!A;E&%bNWhaJZ$p%^l5MikblqYVL7gvqD1AnP1GspKg}d z;*Z4I+3IGgT22>CncFE9?yIf(($>c6 zT2&EA=3kUvm(njwmGyL?UVUC!&*V}oLKK!Sg6!rRFv(m)@2g<>8sm_!!Xav-#Fdb! zhMVu~1vS$AWe*OF%8`~POmLVZqKYIbiNj4Vm}-njC(Is+;{-WI569&%q%pn-mc+ho zpUIBORdNAi{zb!bI!8ci=m>Xxr2FkBdWtP6EzDrgA22C8?GOA5((w;uoQ455bH?N` zbJTx#&~MD{a;j}-NI-XtN&hWbvfKL-YNG>fy3Gu=iy($0;Fhdr$kIeb6S8zKF`K?@ SRPb!Biq42GiDpC#+2|kkvrZ=iyr+!XM_;srIaw6(Ob_W`V|v@lfGJ^`__@Bys! zbxbt=vw~nnHaT-<_y5kE%s!6a>x;MVmsg;|sZB0KguKnF%~}W_1&1)}#%&lWI+Q3I zS20pGvT0;1=(cVo1cGkVTd}Fx)Vr5g$`>Qv`B2SbjD{x4gl3z#W`|vyJxz;!%>jp+ zBQww@tvTjIQGR$YKi^pmm10hML?l>YnFMjRcnKDr>@@vtmFV317tWLNMaw&=GR3q< z%=}J?&wG1G>58#Phz7mkECW#efhp2n{FgsjHM1dMAjg;lnfaKvcY5>SFe^osJo7Ag z0wX*u+k_j+q;I(K=OLfvnD<3LukLJVrle+G>5?c Wg;*?0S&J21SwqsdB)`7tCVl{J7A!RY delta 734 zcmaiwPfrt36vcmUhIVXyC8oBO0wTzNs#FUo2(_(N6h*+WATcp=FYiq?m73|^Fe=%lz;yD`VE-pnZva(ajrYeI;6wc z+z1ilra>7~=0Y;IV9+g7Zkw`b%2F_2crPLl%*XsM=eQGQnH7hu!`Zjgoutdbj4*OX+RX7SCEm=-pvs<8XhsTvsHf*59~CZu+fT z-Aivb>Xqu=a&h`OBXV+FZctdpq##GIc$eDmeYaQDfOo!Uv^gk$w7kIrml^UIS5Bt{ zr~F=2js;i@NDcbK6Lg5GO&pfBA}><~iPM&EXy!A)$rE%(AS^;KBhjW9921!EA3`k^ z;c%5v(NT;sZuGogJ>!|q?%A&0u@-AWbOKn>yrE6DX>l(bxX?w-{Es@-3aAv# zW*5cmQWy2it75tx)r#C}V(g7Z&CMr7zHo8p-?Ots$aN|8w)|TXh)Fob1AnVxJ}834 GeDW{mMN(@3 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class index 309f8062e678abe6674e763cc1f4111173f9240a..f8737c429940fcae58a9604328263ed357c25548 100644 GIT binary patch literal 8377 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 bcjg!HE&Nr!6@j1-^9TcAHit)X5f}d-zm8kR diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionLift.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionLift.class index 9bb4cca9765ecca5c16fd130592ff2d273f4677c..dfcba7eb72dfa023ff2904b8ac89f4657a1f0344 100644 GIT binary patch delta 3417 zcmai033yc175>jm^4`qLBbiJl$z&yfKr$r6CNaho$OH_5BuW%Si7bgBK-dzphzmMe zwYbr$uL1^H6QC-HG|Uh{AZ_h}wRTZ!wN2UXt-$XDelPF`fj>F}jDHgI&jNoD_*mc*fxim;P2leW z|IqyTDkYWEr{emjz`rzq$*}+5n%^@#IwuSMqxm}ql}|=P0{;~_??hlNF0e@wlE@$% z*&P%k94j8pAe|frTTTZV;*JxysnaN(;tf>deK$ZJ1Aa=DnG~^7b@CdhrZj`nDMQ?u zTE#oh$frlEI2+E+pe)MP0;fL?54DP8(FGqBtB-a%YE--t_DH1Bl2MMp7=f_@<2Vtz z!l3aqL6%GuD_0;-C!ax+DBnp1G+Cff;7WndX?{Lgl}geq5-8TGM5n9zZ?L^cb%@b<~kN@y;Me+WEC3O)?1E*QSDe~q7z*vy3u8Q;z$nkqR+$~xYNYF z;tmMhCvd;O7X%&qL*q-+>Z4o)k&l>>uhY<9Fwj?pHA1CG>7UmsMPQl0 zaz2PwP(7ho_3)+G#nUgnP)W3?5)ZEs7XMJmX z%j(v(EpxiN+Pk|tbz0N^X8hA+>G4xct+Sy8FA`8qw|6hNL>af^DqCeAvKJV#_Aaq?lEun1!X7tHidl_{S&)iZlZsiEidmV8S)7Vl zpNd(cidm(KS*VIxtBP5!idnIIJ}0m_;$YpX36`#6R zVwN;BL{N%ZOU!N%_;NDt?hk7Kg6H)VgpYOBf|6HRIK|`%UrV#%Ou7l7uB$1pLHg6T#0N-;m~=A!3#K`R!oj;Kge@V z#N@?Sj|&u69Tm!TsMF@LDWnfz-)eS-Z7av4}m5`BU zO1=%z@Ff|=BRWxbu@mzz?L>t=Cen!~BW>NDk;V-@nlU;cLQ6p`D`*7_T8R`|g=|`b zanz<{CW-;;C@eDr+0oqDtHU;gY`e7hNH{P%3wb1Zh~-qX4zLjxv$`GBIV@d1lVh5^ zfDlB8aj(^snR=BZWXPek96LH-FUw9oZDhtJmu7t5r5US)PvTT$^E6IXDx~=W89|f`-`;R04{|0CT_%&${F;$x z7z{r>2N@2=v9d3X^)SbJ>H6%zMeI*l#lb)O_$mF%}6OwR8Ng*r=p>bmnO=0u49xAj?&5Zc>V4ql-Av6zS=>S@; z&+I{guiyxl1(7VgJctxEW_v|r5UI+^gH|4RWg(X;c@N@z^)ldHOv~AqB0jM>fXwiB zMI-xD`}hrU(ZK;_4S!o@(i@pn4$By`D1Ie-^#QCNz#0!$THRx6xZ8tcHmYv>xVuIC zkKwEM9>2l7coDC$NaZpvj9xyrzK_?rE~143#0|kqL#WpA1GhW#9QZHx0$(w^jvwmy zk&YjObi8p6n$620-{eg;yhXE_-TZ4=O{-~^=A?E??V@!^qXeE{C6fzwN+dTW{SS|A Bjo1JH delta 4193 zcmZ`+3w)E+75|^4&6lJfZ5q=P$erpok7@_>&bM+wmYi(eP(W>DcpZ2W)7HNqgyrVZO3SQ>IA5t9izx2J^e)+ppn;(33R)i3h53p zf7Md*)-L&Lv6OrOL?kRb4WvPqbC*#8jkD5tE8SgYr3qG=C=Ms_ zF34x6$uvb^s=zdjrrW8UX4q&Z-7RpBz$}5;meP2{yn#ZRBQRH^c^Xx;IZSVx$=mix z@-3!r^OdbP7mh~v8cyrImKZG{^f#s_=jM!T42MRCY8%4-+Hix8hp=A9!)VsA5zWR) zYepo7Gddo{W*yta{J4N2@Pxp2fhPra2<#NtCD0Yy!uYhP#|2IZJR|U|z;iP1q-dvP-t(fhVZBBRb@J09LQy1l1%lJ(9UZ6* z2kP@e)g3eGAzDwc`@H3$us<9O)e<7z6RiL{sICsw2iOH6!{_br_a%Fp&pTsfAW)Y# zI@Bo6)%waZCRiV+jQiwpgAMV;1Dwah5{~BcO8@LmZ4M`qZS&YTD_9j?tad3w$^yZf z#bJW0O9(SVi7gOPecrlYU0_+THZUW&ns>WF(zJmd)~H#hjd)F`O}L=bBlM{8vAtLR zW}UVWALM+U9^*5otpZY+B$Y`9r=6al)opjAtRv&i)ZxZSz1X~+o-{7$gL9f_2cdgq zsBYD?#F|qZ!*z|}290*LjqJ9a(k%^v@VIF+xN-_6^qWfB zzR{pDZMkU{N^j9=H|^8$4&K#hKVhImAQd<)HO;7T45ou^dmR=^Iz;GWP?QNxsfXa%8gcSz7Zep&88<;Ir2NQ;p%o$2DZ79jip(K-slFT1UGKDC~ETSY62}{T&R+8^8 zOD70SiHz;M=ulW#gNe$GQ1`0~PGgv(Aco-{QLiJMMIraNEisTMVU9 zjP$&SQFCO-ix@rU490j~z*w;FaZ!wC^Y|FbPVtf^oMpU#JB+BSb#Rb0EFlM$(k%$l z?Wm`Tc!j3pyLf>|=@Jf=<3)UnTZEV5p&FYqhB_vml1}tN0VcqVv&O}Y-bFIW%}ew{ z5?;nRHRATf^z+$R?wrl86NUqP zxN5;U>?Ubp6h)r=CXMRq`V+2RNRpnP+=k;Ch{h7Bq?_y11d2mB@T#RAvqw9Zxxq{nPmYl+=oB;HD&6A&Sm%FvwuIkN2J3w zk4ZSRBe%;AHJGj-*DUAGk6*%VAxkNeWOmu}1S|2nR~L*Lu2naZ6Fvz)zz-9XNAPG9 z&#`!VL=owE?b_JIOe>L0_bV4t>pU#sLbO+z2V~_R;m4iM%xZ%c$zR{=eXU_%Yj5J~ zC#ukGgrDLyab{2tcfQ=-_%7Dna2G$rMKyLrkIaaSjfcFRm)UTWWq!_7B_Y3l`HnX!WH*xl6!r3nqL~(0Qq1uw04-NcQYy4Ep zOYNfV$fg}#(vjPx@{(Y3Np1Y9gJs7%6Q94Vx5s&}Cx!*>SUAh+XKj(vDmjY2?WmgN46w#D#9B3L zgOygp+7P8JX00gFtn?u3OiVm-3Hw>9{48Tzw|Mt*R#W3@EvxBqHN>hjuGX=duja2{ ztzNWiyBq}vZ}JHL3^>ZEJ%(IrMFBm9fy7^+htty-PscHxPGBBAgKByfE9g0_rITo; zQ`kn&V>g}dl94@~8F{-SBk0fBkc{wzFW=0wT_#d|qQfNLUU;}Xk&#M%L*xu9JpE&6 zh#}k@MSWatY@tGPaZbX12**UriQ&HUSlN#Ir{uK2>+zn(swgrVAYJ@fvyknXN0>G{4eXHh)%;m2omq)aWiW>2 z&QE=Sty()G?O5l+1IE$ZiA;Exa+?+5d6*Ul^0%q?@N2G~EdGV^K3`K|pNd32Mf(81 z;l!NhBzhIi(-n-@@LQ)d=Q8*|`6^bxtl>iqztix0@MHgn%dnWT*yTqm^M7P6lsCde fD`+RxTez?(^8iV@`~`sez)XE9p9;PJr+|V! diff --git a/src/org/usfirst/frc/team708/robot/AutoConstants.java b/src/org/usfirst/frc/team708/robot/AutoConstants.java index 845ac58..5e2bcf2 100644 --- a/src/org/usfirst/frc/team708/robot/AutoConstants.java +++ b/src/org/usfirst/frc/team708/robot/AutoConstants.java @@ -7,15 +7,15 @@ public final class AutoConstants { public static final double X_THRESHOLD_CENTER = 20; // threshold for determining center of the target public static final double X_THRESHOLD_HAS_TARGET_MIN = 20; // threshold for determining min value for whether the robot sees the target public static final double X_THRESHOLD_HAS_TARGET_MAX = 300; // threshold for determining max value for whether the robot sees the target -// public static final double HEIGHT_THRESHOLD = 20; + public static final double Y_HEIGHT_THRESHOLD = 5; // threshold for determining the stop location of height // Sweep Constants public static final int SWEEP1_MIN = 0; - public static final int SWEEP1_MAX = 100; - public static final int SWEEP2_MIN = 101; - public static final int SWEEP2_MAX = 300; - public static final int SWEEP3_MIN = 301; - public static final int SWEEP3_MAX = 400; + public static final int SWEEP1_MAX = 75; + public static final int SWEEP2_MIN = 76; + public static final int SWEEP2_MAX = 150; + public static final int SWEEP3_MIN = 151; + public static final int SWEEP3_MAX = 225; public static final int SWEEP_DIRECTION_LEFT = -1; public static final int SWEEP_DIRECTION_RIGHT = 1; public static final double SWEEP_ROTATE = .6; @@ -37,6 +37,8 @@ public final class AutoConstants { public static final int BOILER_TARGET_WIDTH = 14; public static final double DISTANCE_TO_BOILER_LOCATION1 = 54; // A distance to stop at and shoot for high goal in inches public static final double DISTANCE_TO_BOILER_LOCATION2 = 108; // A distance to stop at and shoot for high goal in inches (9') + + public static final double STOP_AT_BOILER_HEIGHT = 100; // y value when the robot is about 108" from boiler // Gear Constants (Game piece) public static final double DISTANCE_TO_GEAR = 15; @@ -66,8 +68,8 @@ public final class AutoConstants { public static final int USB_LIFT_IMG_HEIGHT = 240; // height of the USB image - resolution - // USB Camera Constants - public static final double USB_BOILER_FOV_DEGREES = 43.5; // Field of View of the AXIS Camera + // AXIS Camera Constants + public static final double USB_BOILER_FOV_DEGREES = 47.5; // Field of View of the AXIS Camera - from RoboRealm public static final int USB_BOILER_IMG_WIDTH = 320; // width of the USB image - resolution public static final int USB_BOILER_IMG_HEIGHT = 240; // height of the USB image - resolution diff --git a/src/org/usfirst/frc/team708/robot/Constants.java b/src/org/usfirst/frc/team708/robot/Constants.java index bca5f73..5078a15 100644 --- a/src/org/usfirst/frc/team708/robot/Constants.java +++ b/src/org/usfirst/frc/team708/robot/Constants.java @@ -84,9 +84,9 @@ public final class Constants { * Smart Dashboard */ public static final double SEND_STATS_INTERVAL = .5; // Interval for reporting in seconds - public static final boolean DEBUG = true; - public static final boolean LIFT_DEBUG = true; - public static final boolean BOILER_DEBUG = true; + public static final boolean DEBUG = false; + public static final boolean LIFT_DEBUG = false; + public static final boolean BOILER_DEBUG = false; public static final boolean GEAR_DEBUG = false; /* diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index b69daf7..11896d1 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -275,9 +275,10 @@ private void queueAutonomousModes() { autonomousMode.addObject("10 Ball", new TenBalls()); autonomousMode.addObject("60 Ball", new SixtyBalls()); - autonomousMode.addObject("Rotate And Drive To Lift", new RotateAndDriveToLift()); - autonomousMode.addObject("Drive to Boiler Location 1", new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION1)); - autonomousMode.addObject("Drive to Boiler Location 2", new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); + autonomousMode.addObject("Drive To Lift", new RotateAndDriveToLift()); + autonomousMode.addObject("Drive to Boiler", new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); + +// autonomousMode.addObject("Drive to Boiler Location 2", new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); // autonomousMode.addObject("Rotate And Drive To Gear", new RotateAndDriveToGear()); // autonomousMode.addObject("Drive Straight for time", new DriveStraightForTime(.5, 3)); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java index e60d8d5..464184d 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java @@ -69,8 +69,10 @@ public OneGearCenter() { addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); // unload balls - addParallel(new SpinShooter(7)); - addSequential(new SpinFeeder(6)); + addParallel(new SpinShooter(8)); + + addSequential(new WaitCommand(1)); //this work? spin shooter up for x secs + addSequential(new SpinFeeder(6)); //then shoot addSequential(new StopShooter()); //this is a test replace with 3 gear diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java index 4f390bd..ccbc270 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java @@ -45,11 +45,7 @@ public OneGearLeft() { addSequential(new Intake_Gear_Out()); addParallel(new Intake_Gear_Down()); -// addSequential(new DriveStraightForTime(.3, .5)); -// addSequential(new DriveStraightToEncoderDistance(5, .3, true)); - // get off lever and go for some balls -// addSequential(new DriveStraightForTime(.3, 1)); addSequential(new DriveStraightToEncoderDistance(42, .4, true)); // turn toward boiler @@ -57,7 +53,8 @@ public OneGearLeft() { // addSequential(new DriveStraightForTime(.3, 2.5)); addSequential(new DriveStraightToEncoderDistance(50, .4, true)); - addSequential(new TurnToDegreesAlliance(.5, 30, Constants.COUNTERCLOCKWISE)); + +// addSequential(new TurnToDegreesAlliance(.5, 30, Constants.COUNTERCLOCKWISE)); // target Boiler @@ -66,8 +63,9 @@ public OneGearLeft() { addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); // unload balls - addParallel(new SpinShooter(9)); - addSequential(new SpinFeeder(7)); + addParallel(new SpinShooter(8)); + addSequential(new WaitCommand(1)); + addSequential(new SpinFeeder(6)); addSequential(new StopShooter()); } diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java index c642659..5c4ccfc 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java @@ -50,16 +50,6 @@ public SixtyBalls() { // addSequential(new DriveStraightToEncoderDistance(40, .4, true)); -// target Boiler - addSequential(new WaitCommand(1.0)); - addSequential(new SetLED(Constants.SET_TARGETING)); - addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); - -// unload balls - addParallel(new SpinShooter(6)); - addSequential(new SpinFeeder(4)); - addSequential(new StopShooter()); - // go to lever // addSequential(new TurnToDegreesAlliance(.4, 20, Constants.COUNTERCLOCKWISE)); @@ -68,11 +58,22 @@ public SixtyBalls() { addSequential(new RotateAndDriveToLift()); // place gear on lever and back away - addSequential(new WaitCommand(0.5)); - addParallel(new Intake_Gear_Out()); +// addSequential(new WaitCommand(0.5)); + addSequential(new Intake_Gear_Out()); addParallel(new Intake_Gear_Down()); + addSequential(new DriveStraightToEncoderDistance(10, .3, true)); + +// target Boiler + addSequential(new WaitCommand(1.0)); + addSequential(new SetLED(Constants.SET_TARGETING)); + addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); - addSequential(new DriveStraightToEncoderDistance(15, .3, true)); +// unload balls + addParallel(new SpinShooter(8)); + addSequential(new WaitCommand(1)); + addSequential(new SpinFeeder(4)); + addSequential(new StopShooter()); + } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java index 856dd85..22171b2 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java @@ -34,7 +34,6 @@ public TenBalls() { // go to lever addSequential(new DriveStraightToEncoderDistance(80, .3, false)); // addSequential(new DriveStraightForTime(-.3, 3.5)); - addSequential(new TurnToDegreesAlliance(.5, 45, Constants.COUNTERCLOCKWISE)); // addSequential(new DriveStraightForTime(-.3, .5)); @@ -49,13 +48,9 @@ public TenBalls() { addSequential(new Intake_Gear_Out()); addParallel(new Intake_Gear_Down()); -// addSequential(new DriveStraightForTime(.3, .5)); - addSequential(new DriveStraightToEncoderDistance(5, .3, true)); - // get off lever and go for some balls -// addSequential(new DriveStraightForTime(-.3, 1)); -// addSequential(new DriveStraightToEncoderDistance(15, .3, true)); - + addSequential(new DriveStraightToEncoderDistance(10, .3, true)); + // target Boiler addSequential(new WaitCommand(1.0)); addSequential(new SetLED(Constants.SET_TARGETING)); @@ -66,8 +61,9 @@ public TenBalls() { // addSequential(new DriveStraightToEncoderDistanceOrTime(50, .3, true, 3)); // unload balls - addParallel(new SpinShooter(6)); - addSequential(new SpinFeeder(4)); + addParallel(new SpinShooter(8)); + addSequential(new WaitCommand(1)); + addSequential(new SpinFeeder(6)); addSequential(new StopShooter()); } diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java index 60cefc9..8ed6b50 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java @@ -3,6 +3,9 @@ import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; import org.usfirst.frc.team708.robot.commands.drivetrain.ToggleBrakeMode; +import org.usfirst.frc.team708.robot.commands.feeder.SpinFeeder; +import org.usfirst.frc.team708.robot.commands.shooter.SpinShooter; +import org.usfirst.frc.team708.robot.commands.shooter.StopShooter; import edu.wpi.first.wpilibj.command.CommandGroup; import edu.wpi.first.wpilibj.command.WaitCommand; @@ -19,9 +22,9 @@ public class driveDistance extends CommandGroup { // Called just before this Command runs the first time protected void initialize() { - Robot.drivetrain.resetEncoder(); - Robot.drivetrain.resetEncoder2(); - Robot.drivetrain.resetGyro(); +// Robot.drivetrain.resetEncoder(); +// Robot.drivetrain.resetEncoder2(); +// Robot.drivetrain.resetGyro(); } @@ -30,6 +33,14 @@ public driveDistance() { addSequential(new WaitCommand(2.0)); addSequential(new DriveStraightToEncoderDistance(80, .4, false)); +// addSequential(new WaitCommand(2)); //this work? spin shooter up for x secs +// +// addParallel(new SpinShooter(8)); +// addSequential(new WaitCommand(1)); //this work? spin shooter up for x secs +// +// addSequential(new SpinFeeder(6)); //then shoot +// addSequential(new StopShooter()); + } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java index ac1d6e5..3f91f47 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java @@ -21,18 +21,20 @@ public class RotateAndDriveToBoiler extends Command { * Constructor * @param targetDistance - the distance to stop in front of the target */ -// VIET ARE WE STILL USING THE TARGET DISTANCE HERE - I THINK WE ARE ACTUALLY CALCULATING IT IN THE SUBSYSTEM -// IN THE METHOD ISATDISTANCE -// BUT WE NEED TO FIGURE OUT HOW WE ARE GOING TO MAKE THIS WORK WITH MULITPLE DISTANCES FOUND - public RotateAndDriveToBoiler(double bstopAtDistance){ - double test = bstopAtDistance; -// SmartDashboard.putNumber("Bstop at distance", test); + +// public RotateAndDriveToBoiler(double bstopAtDistance){ + public RotateAndDriveToBoiler(double bstopHeight){ // requires(Robot.drivetrain); // requires(Robot.visionBoiler); // save the distance - Robot.visionBoiler.putBoilerStopAtDistance(bstopAtDistance); +// Robot.visionBoiler.putBoilerStopAtDistance(bstopAtDistance); + + // save the height +// Robot.visionBoiler.putBoilerStopAtHeight(bstopHeight); + Robot.visionBoiler.putBoilerStopAtHeight(AutoConstants.STOP_AT_BOILER_HEIGHT); + } @@ -41,8 +43,10 @@ protected void initialize() { Robot.visionBoiler.putBoilerIsCentered(false); Robot.visionBoiler.putBoilerHasTarget(false); Robot.visionBoiler.putBoilerAtDistance(false); + Robot.visionBoiler.putBoilerAtHeight(false); Robot.visionBoiler.putBoilerCounter(0); Robot.visionBoiler.putBoilerCurrentCenter(0); + Robot.visionBoiler.putBoilerCurrentHeight(0); } // Called repeatedly when this Command is scheduled to run @@ -52,7 +56,7 @@ protected void execute() { rotate = Robot.visionBoiler.boilerGetRotate(); moveSpeed = Robot.visionBoiler.boilerGetMove(); - + Robot.drivetrain.haloDrive(moveSpeed, rotate, false); } @@ -60,14 +64,13 @@ protected void execute() { // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { if (Robot.visionBoiler.getBoilerCounter() >= AutoConstants.SWEEP3_MAX){ - return true; } - //Check if the sonar distance is less then the target Distance, end - else if (Robot.visionBoiler.boilerIsAtDistance() && Robot.visionBoiler.boilerIsCentered()){ + else if (Robot.visionBoiler.boilerIsAtHeight() && Robot.visionBoiler.boilerIsCentered()){ Robot.led1.send_to_led(Constants.SET_TARGET_FOUND); return true; } + else { return false; } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java index 367758b..7674578 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java @@ -102,10 +102,10 @@ public VisionLift() { usbCameraLiftGear=CameraServer.getInstance().startAutomaticCapture(AutoConstants.USB_CAMERA_ID, AutoConstants.USB_VIDEO_PORT); usbCameraLiftGear.setResolution(liftImageWidth, liftImageHeight); - usbCameraLiftGear.setBrightness(40); //40 for lift 70 for gear - usbCameraLiftGear.setExposureManual(25); //25 for lift 48 for gear - usbCameraLiftGear.setWhiteBalanceManual(10000); //10000 for lift 2800 for gear -// usbCameraLiftGear.setFPS(20); +// usbCameraLiftGear.setBrightness(40); //40 for lift +// usbCameraLiftGear.setExposureManual(0); //was 25 for lift +// usbCameraLiftGear.setWhiteBalanceManual(10000); //10000 for lift 2800 for gear + setLiftCamera(); // define the output stream on the smart dashboard outputStreamLift = CameraServer.getInstance().putVideo("Target_Lift", liftImageWidth, liftImageHeight); @@ -293,13 +293,13 @@ else if (liftHasTarget && !liftIsCentered){ else if (!liftHasTarget){ if (Math.abs(liftSweepDirection) < .1){ liftSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; - rotate = -AutoConstants.SWEEP_ROTATE; + rotate = AutoConstants.SWEEP_ROTATE; } else if (liftSweepDirection > AutoConstants.SWEEP1_MIN){ if ((liftSweepCounter >= AutoConstants.SWEEP1_MIN && liftSweepCounter <= AutoConstants.SWEEP1_MAX) || (liftSweepCounter >= AutoConstants.SWEEP3_MIN && liftSweepCounter <= AutoConstants.SWEEP3_MAX)){ - rotate = -AutoConstants.SWEEP_ROTATE; + rotate = AutoConstants.SWEEP_ROTATE; if (liftSweepCounter== AutoConstants.SWEEP1_MAX || liftSweepCounter== AutoConstants.SWEEP3_MAX){ liftSweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; } @@ -307,7 +307,7 @@ else if (liftSweepDirection > AutoConstants.SWEEP1_MIN){ } else { if (liftSweepCounter >= AutoConstants.SWEEP2_MIN && liftSweepCounter <= AutoConstants.SWEEP2_MAX) - rotate = AutoConstants.SWEEP_ROTATE; + rotate = -AutoConstants.SWEEP_ROTATE; if (liftSweepCounter== AutoConstants.SWEEP2_MAX){ liftSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; } @@ -408,9 +408,9 @@ public boolean liftIsInSweep() { } public void setLiftCamera() { - usbCameraLiftGear.setBrightness(40); //40 for lift 70 for gear - usbCameraLiftGear.setExposureManual(25); //25 for lift 48 for gear - usbCameraLiftGear.setWhiteBalanceManual(10000); //10000 for lift 2800 for gear + usbCameraLiftGear.setBrightness(40); //40 for lift + usbCameraLiftGear.setExposureManual(0); //25 for lift + usbCameraLiftGear.setWhiteBalanceManual(10000); //10000 usbCameraLiftGear.setFPS(20); } diff --git a/sysProps.xml b/sysProps.xml index 9466f234deb49a9fc4bed7faa041401e56fcd7e2..03a03344243f59b17b3bfbab451d374913a1d0eb 100644 GIT binary patch delta 153 zcmZ2yu+Ct^G-h@)1``HX2A9c!EVi3(F$b~o8!}ijSTPtf7ywB(2Fu9@Ijk3#ak3g4 zFc>pf07VSIPywjTiNOpgX2{?O#D)wC3@$)17oeyUgEQDr1)!nUo1gH#VPbb>2xbUj lFr9o*#B#EL&@^^K22-FGv(0OTR2f;pl0Yfz%|aqFEC5Wf9}NHi delta 157 zcmZ2yu+Ct^G-gg$1``HH215qp$rqWdH{W6oV&yktFlDe}Z~{tLF}N_8Og_kAy||2% z)!2!_04U?a;0mM-7!-gkHwH5X3!pl4Am14*VgeKe8U_?I1sba`IgrJA^Ao-|Osvif sp$s8FuKDB-LTr2QsposNmArToC01*-(tN;K2 From 325515c7e2d27e1d904b690063872661cf096f4c Mon Sep 17 00:00:00 2001 From: jpiergal Date: Wed, 15 Mar 2017 19:51:07 -0400 Subject: [PATCH 54/69] boiler --- .../robot/subsystems/VisionBoiler.java | 121 +++++++++--------- 1 file changed, 59 insertions(+), 62 deletions(-) diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java index 830dcc8..d9445cb 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java @@ -34,7 +34,7 @@ public class VisionBoiler extends Subsystem { private VisionThread visionThreadBoiler; // vision processing thread - processes grip code private final Object imgLockBoiler = new Object(); // vision boiler object - private UsbCamera usbCameraBoiler; // USB Camera +// private UsbCamera usbCameraBoiler; // USB Camera private AxisCamera axisCameraBoiler; // Axis Camera private CvSource outputStreamBoiler; // Output stream to the Dashboard @@ -54,23 +54,25 @@ public class VisionBoiler extends Subsystem { private boolean boilerHasTarget = false; // flag indicating whether the robot sees the target private boolean boilerIsCentered = false; // flag indicating whether the robot sees the center of the target private boolean boilerIsAtDistance = false; // flag indicating whether the robot is at the correct distance from the target -// private boolean boilerIsAtHeight = false; // Determine if the robot is at height (eyy, that's the name of the boolean!) + private boolean boilerIsAtHeight = false; // Determine if the robot is at height (eyy, that's the name of the boolean!) -// private int boilerTargetHeight = AutoConstants.BOILER_TARGET_HEIGHT; //actual height of the boilers tape -// private int boilerTargetWidth = AutoConstants.BOILER_TARGET_WIDTH; //actual width of the boilers tape + private int boilerTargetHeight = AutoConstants.BOILER_TARGET_HEIGHT; //actual height of the boilers tape + private int boilerTargetWidth = AutoConstants.BOILER_TARGET_WIDTH; //actual width of the boilers tape private double trueCenter = bImageWidth/2; // horizontal value of the center of the target -// private double boilerDistanceToStop = 0.0; // distance to stop at in front of lift target +// private double boilerDistanceToStop = 0.0; // distance to stop at in front of boiler target private double boilerCurrentCenter = 0.0; // horizontal value of where robot is looking - private double boilerCurrentDistance = 0.0; // distance robot is from the target -// private double boilerStopAtHeight = 0.0; // distance to stop at based on height + private double boilerCurrentHeight = 0.0; // height value of where robot is looking + private double boilerStopAtHeight = 0.0; // distance to stop at based on height private double boilerStopAtDistance = 0.0; // distance to stop at based on sonar + private double thresholdX = AutoConstants.X_THRESHOLD_CENTER; // threshold for determining center of the target private double thresholdDistance = AutoConstants.DISTANCE_TARGET_THRESHOLD; // threshold for determining threshold for stopping at the target private double minThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MIN; // threshold for determining min value for whether the robot sees the target private double maxThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MAX; // threshold for determining max value for whether the robot sees the target + private double thresholdHeight = AutoConstants.Y_HEIGHT_THRESHOLD; // threshold for deteriming threshold for stopping at the specified height in the target // Sweep Variables private boolean boilerInSweep = false; // flag indicating whether the robot is sweeping left and right looking for the target @@ -157,16 +159,12 @@ public VisionBoiler() { brectWidth = bmaxX - bminX; brectHeight = bmaxY - bminY; - // note - this formula was pulled from 1640's github code - need to find the specific reference - // from 1640 - //Equation to determine the distance from a target (d) given the width in pixels of a vision target in the camera image (w): - // d = (TARGET_WIDTH*CAMERA_IMAGE_WIDTH)/(2*tan(FOV_ANGLE/2)*w) - // i.e. d and w are inversely related. - // test the fovDegrees values - // boilerCurrentDistance = boilerTargetWidth * bImageWidth / (2*(Math.tan(Math.toRadians(fovDegrees))/2)*brectWidth); - - // display the current image on the driver station + // brectY - represents where the height the robot is looking + boilerCurrentHeight = brectY; + + + // display the current image on the driver station if (Constants.BOILER_DEBUG){ outputStreamBoiler.putFrame(boilerPipeline.hsvThresholdOutput()); } @@ -208,11 +206,7 @@ public VisionBoiler() { public void boilerProcessData() { try { - // use the sonar to get the distance from the target (backup plan if camera distance not available) - -//UPDATE THIS TO FIX DISTANCE - boilerCurrentDistance = Robot.drivetrain.getSonarDistance(); - putBoilerCurrentDistance(boilerCurrentDistance); + // using the Y value which is calculated above for processing the how high the robot is seeing // if robot sees the target (current X between its min and max) if ((boilerCurrentCenter > minThresholdX) && (boilerCurrentCenter < maxThresholdX)) { @@ -280,7 +274,7 @@ else if (boilerHasTarget && !boilerIsCentered){ difference = trueCenter - (boilerCurrentCenter); boilerRotate = Math708.getClippedPercentError(boilerCurrentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); - boilerRotate = .3; +// boilerRotate = .3; if (Math.abs(difference) > thresholdX) { if (boilerCurrentCenter < trueCenter){ @@ -300,13 +294,13 @@ else if (boilerHasTarget && !boilerIsCentered){ else if (!boilerHasTarget){ if (Math.abs(boilerSweepDirection) < .1){ boilerSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; - boilerRotate = -AutoConstants.SWEEP_ROTATE; + boilerRotate = AutoConstants.SWEEP_ROTATE; } else if (boilerSweepDirection > AutoConstants.SWEEP1_MIN){ if ((boilerSweepCounter >= AutoConstants.SWEEP1_MIN && boilerSweepCounter <= AutoConstants.SWEEP1_MAX) || (boilerSweepCounter >= AutoConstants.SWEEP3_MIN && boilerSweepCounter <= AutoConstants.SWEEP3_MAX)){ - boilerRotate = -AutoConstants.SWEEP_ROTATE; + boilerRotate = AutoConstants.SWEEP_ROTATE; if (boilerSweepCounter== AutoConstants.SWEEP1_MAX || boilerSweepCounter== AutoConstants.SWEEP3_MAX){ boilerSweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; } @@ -314,7 +308,7 @@ else if (boilerSweepDirection > AutoConstants.SWEEP1_MIN){ } else { if (boilerSweepCounter >= AutoConstants.SWEEP2_MIN && boilerSweepCounter <= AutoConstants.SWEEP2_MAX) - boilerRotate = AutoConstants.SWEEP_ROTATE; + boilerRotate = -AutoConstants.SWEEP_ROTATE; if (boilerSweepCounter== AutoConstants.SWEEP2_MAX){ boilerSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; } @@ -338,11 +332,21 @@ public double boilerGetMove() { if (boilerHasTarget) { - //maxY is used as height of the target - double difference = boilerStopAtDistance - boilerCurrentDistance; - boilerMove = Math708.getClippedPercentError(boilerCurrentDistance, boilerStopAtDistance, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); - boilerMove = .3; + double difference; + double boilerCurrentDistance; + double boilerStopAtValue; + double differenceY = boilerStopAtHeight - boilerCurrentHeight; + + //using the y value + difference = differenceY; + boilerCurrentDistance = boilerCurrentHeight; + boilerStopAtValue = boilerStopAtHeight; + + + + boilerMove = Math708.getClippedPercentError(boilerCurrentDistance, boilerStopAtValue, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); +// boilerMove = .3; //if the target distance is farther than the current distance move backwards if(difference >= 0){ boilerMove = boilerMove * -1; @@ -372,39 +376,25 @@ public double boilerGetMove() { * @return */ + + + + /* - * isAtDistance + * isAtHeight * Method to determine whether the robot is at the distance from the target based on the threshold value */ - - public boolean boilerIsAtDistance() { - double difference = boilerStopAtDistance - getBoilerCurrentDistance(); - SmartDashboard.putNumber("Boilre difference in IsAtDistance", difference); + public boolean boilerIsAtHeight() { + double difference = boilerStopAtHeight - boilerCurrentHeight; //Check if target is at correct level within threshold - if (Math.abs(difference) <= thresholdDistance) { - boilerIsAtDistance = true; + if (Math.abs(difference) <= thresholdHeight) { + boilerIsAtHeight = true; } else { - boilerIsAtDistance = false; + boilerIsAtHeight = false; } - return boilerIsAtDistance; + return boilerIsAtHeight; } - /* - * isAtHeight - * Method to determine whether the robot is at the distance from the target based on the threshold value - */ -// VIET update this -// public boolean isAtHeight() { -// double difference = stopAtHeight - maxY; -// //Check if target is at correct level within threshold -// if (Math.abs(difference) <= thresholdHeight) { -// isAtHeight = true; -// } else { -// isAtHeight = false; -// } -// return isAtHeight; -// } - public boolean boilerIsHasTarget() { return boilerHasTarget; } @@ -423,9 +413,7 @@ public int getBoilerCounter() { return boilerSweepCounter; } - public double getBoilerCurrentDistance() { - return boilerCurrentDistance; - } + public void putBoilerCounter(int ct) { boilerSweepCounter = ct; @@ -440,8 +428,13 @@ public void putBoilerStopAtDistance (double sad) { // :( } - public void putBoilerCurrentDistance (double cd) { - boilerCurrentDistance = cd; + public void putBoilerStopAtHeight (double sah) { + boilerStopAtHeight = sah; + } + + + public void putBoilerCurrentHeight (double ch) { + boilerCurrentHeight = ch; // :( } @@ -450,6 +443,10 @@ public void putBoilerAtDistance(boolean ad) { boilerIsAtDistance = ad; } + public void putBoilerAtHeight(boolean ah) { + boilerIsAtHeight = ah; + } + public boolean boilerIsInSweep() { if (boilerHasTarget) { boilerInSweep = false; @@ -465,11 +462,11 @@ public void sendToDashboard() { if (Constants.BOILER_DEBUG) { SmartDashboard.putNumber("b-True Center", trueCenter); SmartDashboard.putBoolean("b-Has Target", boilerIsHasTarget()); - SmartDashboard.putBoolean("b-IsAtDistance", boilerIsAtDistance()); + SmartDashboard.putBoolean("b-IsAtHeight", boilerIsAtHeight()); SmartDashboard.putNumber("b-Center of Target", boilerCurrentCenter); SmartDashboard.putNumber("b-Rotation", boilerRotate); SmartDashboard.putNumber("b-Rotate Difference", boilerRotateDiff); - SmartDashboard.putNumber("b-Distance Difference", boilerMoveDiff); + SmartDashboard.putNumber("b-Distance Move Difference", boilerMoveDiff); SmartDashboard.putNumber("b-Sweep Counter", boilerSweepCounter); SmartDashboard.putNumber("b-SweepDirection", boilerSweepDirection); SmartDashboard.putBoolean("b-isCentered", boilerIsCentered()); @@ -478,9 +475,9 @@ public void sendToDashboard() { SmartDashboard.putNumber("b-rectY", brectY); SmartDashboard.putNumber("b-rectWidth", brectWidth); SmartDashboard.putNumber("b-rectHeight", brectHeight); - SmartDashboard.putNumber("b-Distance To Target", boilerCurrentDistance); SmartDashboard.putNumber("b-pipelineSize", bPipelineSize); SmartDashboard.putNumber("b-stop at distance", boilerStopAtDistance); + SmartDashboard.putNumber("b-boiler current height (y)", boilerCurrentHeight); } } From c5fe94a4e09368c5fbd33da86737381bdf1ac15d Mon Sep 17 00:00:00 2001 From: jpiergal Date: Thu, 16 Mar 2017 20:37:26 -0400 Subject: [PATCH 55/69] after bag window --- .../frc/team708/robot/AutoConstants.class | Bin 2275 -> 2266 bytes .../usfirst/frc/team708/robot/Constants.class | Bin 3385 -> 3333 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 6653 -> 6980 bytes .../commands/autonomous/OneGearLeft.class | Bin 2110 -> 2118 bytes .../commands/autonomous/SixtyBalls.class | Bin 2223 -> 2238 bytes .../robot/commands/autonomous/TenBalls.class | Bin 2030 -> 2045 bytes .../drivetrain/RotateAndDriveToBoiler.class | Bin 2201 -> 2201 bytes .../robot/commands/feeder/ManualFeeder.class | Bin 1424 -> 1424 bytes .../robot/commands/feeder/SpinFeeder.class | Bin 1381 -> 1381 bytes .../commands/feeder/SpinFeederBack.class | Bin 1039 -> 1039 bytes .../commands/intake_gear/GearAdjust.class | Bin 1385 -> 1340 bytes .../robot/commands/shooter/ManualShoot.class | Bin 1604 -> 1603 bytes .../robot/commands/shooter/MoveHoodHigh.class | Bin 1038 -> 1037 bytes .../robot/commands/shooter/MoveHoodLow.class | Bin 1035 -> 1035 bytes .../robot/commands/shooter/SpinShooter.class | Bin 1505 -> 1244 bytes .../visionProcessor/GripPipelineLift.class | Bin 3539 -> 3517 bytes .../team708/robot/subsystems/Drivetrain.class | Bin 7210 -> 7283 bytes .../team708/robot/subsystems/Pivot_Gear.class | Bin 1549 -> 1689 bytes .../robot/subsystems/VisionBoiler.class | Bin 8377 -> 9320 bytes .../team708/robot/subsystems/VisionLift.class | Bin 8205 -> 8196 bytes .../frc/team708/robot/AutoConstants.java | 6 ++-- .../usfirst/frc/team708/robot/Constants.java | 23 ++++++++------- src/org/usfirst/frc/team708/robot/Robot.java | 9 ++++-- .../commands/autonomous/OneGearCenter.java | 4 ++- .../commands/autonomous/OneGearLeft.java | 11 +++---- .../robot/commands/autonomous/SixtyBalls.java | 27 ++++++++++-------- .../robot/commands/autonomous/TenBalls.java | 14 ++++++--- .../commands/autonomous/driveDistance.java | 3 +- .../commands/intake_gear/GearAdjust.java | 4 +-- .../robot/commands/shooter/SpinShooter.java | 16 +++++------ .../visionProcessor/GripPipelineLift.java | 6 ++-- .../team708/robot/subsystems/Drivetrain.java | 2 +- .../team708/robot/subsystems/Pivot_Gear.java | 2 +- sysProps.xml | Bin 6190 -> 6190 bytes 34 files changed, 71 insertions(+), 56 deletions(-) diff --git a/build/org/usfirst/frc/team708/robot/AutoConstants.class b/build/org/usfirst/frc/team708/robot/AutoConstants.class index 3419c776a793908fb5152c4b5ac8dd164cbd6079..13ba8a43005020df5e33eeea7d50067a791fd1b2 100644 GIT binary patch delta 595 zcmYk)$x6de6b9h`rY03pp-LAn1rZgsB2^ScNe8rQ6kFp|HO}*l`#eORqAMv~h%S5p zmu`e^eG3=je*>mxbIAAKb8a9f--&u6`SJVq4j_%k7Q}EJ$4wl!)#R%RzSNKEseKyH zs_#yr-QFyeysYiyi?&zDHRE2P%`IhQ^bk~;97H*Y~eQ=e_|w;6{M~J+LkYHs~#JuKTxzb$=N<(RbaY_k=xq zU-*DN{GWHYm`;u=aBr+9TvaMGU=F-MRm0t#vRaJ6pX7|SHGDR4jtffRlGVV~ANBA! A>i_@% delta 589 zcmYk)J4?e*7zW_?v?ftep-Kiv>IALrHo(-Jhj8ZsfjNsxQ D7}q=s diff --git a/build/org/usfirst/frc/team708/robot/Constants.class b/build/org/usfirst/frc/team708/robot/Constants.class index b0aa4eff6984732fb939cae257f52fcab0819587..f6074707b81eba619e4f3e1dd1885e07b08960fd 100644 GIT binary patch delta 1034 zcmZA0TW<_u90u^`eRpT3yEGwbCEb*ARjIHEz0sh~nh4qul!`NvkWh-a*_PI^D1Sj+IrrNbRIhwZ|3*>-@|_|`{qx0H)b7~ zxz?BYZN1rrQHIl8c_}41;_zw@ z;NbM*hXW4P_^|j0>qo_5{xR9_xXqeTEQPjCOBzl+BR)mLZBUd}afn15Y-gT9%%gj)W zJL0?anD`!jUu^UP@k4rC8Vn6Q5)ZRg2mVAHpYStBu^IqT+ef&`>d*6(W6T(+!!wRE QtM?I};|1mLlB36~zYU9Owg3PC delta 1106 zcmZA0$xjqP6bIl})zjTfiwBb-h7JaZ2PSA3w+o8O=Rl`%vlc)qAgADya$gv)l0f@0YJcw1(a} zWYDZlZ)|!y*N_onscIK)3VWvN5tSA}nQqU^dw!`<+*$NXzBlOk1D^HmS4DqS<;b$M zf2i}aB{eT-vAQTTMxi&as?s$Lw8^TE@~D(`s@Yhg1ENoL8Gq8&#-G^4r&gr0wb7I% z!fa6+GaaGI*1YwUo(XDGuHB}l>?YyYKG;REGE0rLj7$<_p;*##xPy5ioMX0CeY$y( zgXk)1imFzt{&X(rM0737T?emc-T-f6Rh!{0%v<3+vj=xGZ-aZ7d*Qy=0c}U1pB-3$ zi_AMU}1te^z%W8M!Rpo7u9=>rZWd^q7F z-0HWJ3&v4ZW?l7I$C&l0$C-8hiD*noC*f1PD}0*y416|Ge=fFqzo0d^fSgNljPwkb z6TXu01hb9&t86BH<~8O?_&VMA@1}0X4oDZ=iUV{TzQa5P-(|iB-)C-x74rl5A@d{n zG4m6+5)C*a!vU&MK++^;6@*uY^*P>BE;QbK`zI1};p2LN)k2u4j;68JhyNzc&`U_r JE3A@U{{!@abzA@d diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index 97f63fb15d6ed7e05f949b69d6270e76731461cf..bdb36510c2f4a32c500716fbec5927007beddc35 100644 GIT binary patch delta 2709 zcma)8YjjlA75?_jWX{aV$?N7pVlV+D5)xzx2?U6dgec2sd;y{uTNuI!gOd!-Ot9MO zbXjdFzP-NR&nj9)Cvp>+YP40`TD7&U)<+*yv=wbF+J{yPy3f7y`r}&7TG@Ml`|R_b zZ|{5VO%Aj_yD<5}!QD>*=%8aHzKKbJrzKpN^y7Ryqs@;6ej?#@GSBMhIf3UTq?7rn zz|SN~9Po327bMCZ@C$(#B`O{8lEBLnH4gZtz^^3gY>>n&0>74+>MZ?6;I|Tu4tQ1I zHHjGx_?^J(5={@ehgp_{fKkCH{$j3H)0x{ztDor=w4F^r`OszY?EmN-sY5 zF5ScP;~$Owrxy?C=Gc^IGgX^LZOXN&)TTz88QL@@alnUz0$)h1!X%3#_=p6#Bu;m* z+eaQjMG|LX(nnrFLSn5BeS-WF>vbpv6-$J4s05WrY|>$=pfW+_-k!m%z_Y2sM~0wE ziF0&Cl{l2DB@#NW;ofPAk7~8A6Lg56`Z3{Zanqq=^NaRUlNcQe4u@hv!XX2p4Wof` zw}b;j@u6re6gV}$zRzCkGAqSi?*rID=rDWBYs`J+<@KSF4Z-!1P~WC#G#-j6+<`k4 z?!ujfdR=3z3Nx+3w{U@?2EDc2tSD(P_xOv=D}2g(A(Di7xzwXBVJiP3|FU2tqHr-T zF)RFwz2C+63imzfmOh1T_&yO$H^>Gy8Or3EC$>To<9 z9T^Cpl~A}0mlGD`sJ3|&^Iw503Db0P)k*yd*T59isAw8ZCwO>RZHi{lVS;8VYNEpx zeuNzgY3vX*OII~3nyoXtb*4pUS{3fY4;0OzBM41;I4g&u!^6Rm4S_z#E8L5F2-VAD z(cx*mkw`c=G8CGYU8K1b5HwFw8_g%EWs%WPwnk99q7GU>n56|X-$*@ZWsC%C)mDAT1@yO+{YV}q*E<$i#A%nM3)x_fDv z87Qms_EI0=Fndaovbmn433KdQu+u0ppDC-P85%V@S7l`=wlx$Z6mJYA`fV*kA;RI! zv(2D)O0uw~i~D7*u|)4^B03yQgopZqTN0x&E)O&hYz}S>1|q?cje(VkSa@V(SO4s< zzMh2Iue!Q~l6WYwA{38CMiZs{;0Z;|{r$7g&=b>F`Gc}bcdH|htp09xI@3;3U5cq{+ z`=EJI<(#gEc&!v}wjJ=`RFq*ge#l7I0rhwokFY1~boOvq!__X%-EQuy{C3L(T8%j# z3r7sJR$zYx^;npDTFW>B{5$V4E^|R2aU2Zu!m7@}^RS)2eAltP376tFei8IxH4b6s zusneK zN0EhvPor}e78#2fF0!y>0$rzNLgPpa-8VtH#<28$2oF2G@;szd(4#51Z-=6nK`*bB zYHy)OOLF5O^X}?EfuwaANssfY7oIkENjzoUZosBlrkO zfsYG_e3`af`a8+nA7p}YzWJJH1rNz*;g~8czu^`vchIr+$of;Lw{TnvWfqQ4p~1pH z3ezo|kb+_1#1yJ6oRmVXg_Bd5Y2lO#{hQ#(Ks>S-c^Q5aYA5cw-uy z7>BcXa~fx_slxC$qE4#F*pkLMToSXenvX0p;%Ow-j5lDE3yiHgHGy-DZ)iCjWTtI? zR@=2X-)0oz6CU+#Pl8 dt@-1+bH_c&2e|MQe^&IrPJ|n1DsJql`x2_jU|9eF delta 2374 zcmah}XLM9W6#iy6yR$nxDZ43<1e1Uuuz`dUKuRPD0YN$_h$sSK#T-*80SoGKRL-HO za2ym76hy!-uz{C^Rf-}i)!qxm0$3<^5cJM_o8A3q&dI&^yEF66ckkS{dwO2%9^7|n z`wjp_tee2?XyVu|U_+A|a}n0&RgTvLoK|Lsj&^eF5)f8qH^=J&i57T+V~;?J1>WS? zE0Ah|w>aJw$gsdW9Qy<^O%TL>jspU%tfhk-hXishaG2v=fi@O+kK=uTb{6=6<3oWC z7Whbz%#XGCMBr0=rp@OXej)HBzS2c}t!w&*( z)l+(Dr;dKq(NDV4p9Ox=lun#>_CG@1qCbt!=*6?T6f%k0w9+P5n-pzQwaL(?jW+FY z)`fE%zY2^(lh*WG(1qVQ{t&poaYB zJM-3;JB~9of**CR#|DNXHQJM*hPv`RtFT()NvvkbHghF5N20_XxKlEp-q~HvOz5cQ z+k{KvF3e--q7!oLt+lmvfmsrF;~tgd?yWrTo@$vrfp*=8`E16ZJTyNjIn zBFNB5ANLF!ST6A(9*WR82UJy7PYtN~?rv(CkoJXGq}GT&&c#^5kVhwSdW;+*@i3N3 z7}y}O4I4O1l`M^=OO~NCTXm*|&a{+x8tWv>WLav2$8TSYHENzGt6es0#o1+&<*-}^ zSynYCP+C=0Ii;o|z*(MTtyvp}_WG{E0kt)=>!#Gy&6Ze!$0eS^8p$rFTUc9tOFPM~ zVC^OApfeq@L2)_U?q~UGyc}om#PaJm%UqjW&pI>M#|$iIDA%lNf1+EBO7^L=+W6I;XC-rnb6v&g{IgfvP}7U1e>JWCg5?TAMtQbya7Qdn=pQ@AXU%)D1BuRRkFF zJ9JcDM+=qd_12H~F0^INrEeTGkgF$4Ao)!m3V?YK+kS^dU?}R ziKeG!nVvdm`e)2@5)3pqWH+jHX`T8$OKVB6lPy95u0t}$;W#!^v4MVCq}?psPtt%U zYUg%poI0P86O2_pIim3u+Tuh)S9@YMRlO;yx0sObf+yC6Sozii9iW2;>5fBjrF){K zZ;n!picqEdv*MLr6@oO-KcZJ{X^|QyFFj5kJ#P|GY>5))lP;}|#S}Ts#IZOfEUF|F zJ@`LG1@+jSpsG$%Rj1;(VpY{gx%xz^ay6nv&qz#*)txi+3TMG_E{?|)(PY!VDRh1# z-Pb^)q>CBj-#QL11EpywTd@j*=v4`on@t)RLbicHAtW2PI)oepgF|R-U`Pl)1J{I* zZeVB#Ee#9{p{;@8A+$FzqPev#Gy9gsUVcnmYaL)0Fq$Tle)TLpEQRXVdJH{dzL8;! zn$UpJ2F9obnYqDnX7+|KCQ|lB0~Wq1j7fxVZpM?tm_m4JGp-0@8sR`Qz9o$56Vg!G zfZME;!&enXHEpS(i|7i6uQrSsglE#aZxm_v;;tu$?pY3W0!e7b2{nzpTJ+ncsE+1T3_z(aFa04FPiWL@B6>Oxjd aeyqF2Q4I}rs|}5Kl)NAfidwt8B=bMTAM-%~ diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.class index 3aa65b7b78240288c06b4cdf97d564d21c1c2252..5ecfbd4dc6c789f3ac1bd302d9e05c884bd56705 100644 GIT binary patch delta 251 zcmdlda7C$-<$~ov$z21cOJ+sU?U@g}S++ZoumF>q+@X5fqzVc-&BkY?J>zz-2& z0*c6rFd(TB0E);@KF4OrgDf|hl|4*-CW9TrQU-g5%?wTq2N|3hE;G0?JY;ZVc*Ee% tU;(s`2Wo2*yDp>mmuuouuh*k_ix2HUQ+p@(QNwaKcVBf~Tp|zWVGg5?sON2p|X*&ZyM1%<_ zA}_*#q(&f;fAR%3LpC72ok4IiFMF8!bOt+y#SHcg8yTD!_A@v$oMv!gxXIwk@PxsQ i!2)Ox57f3Uc3noV$vfCB82u-I1d<^@Qh2g02PXjj9Wm$t diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class index 7bcfbb0013a8271e1cd58c6fd8b7597ad2ac6cb5..00448c3c192d8bbc20c04e7a4ab906554a15de0d 100644 GIT binary patch delta 923 zcmah_O>7cD7=5$AEDl6%Lk(&}z_bc2rKQ%kXqBZu&fTCI%DZL2BaB z3+}<#lip2?9=eGpjc4`b#puC+C>?uftr^=ccy z2r2?&NUO+jExSPsz>}XI%WqRa!K}b2=2V<+#(j;fz%JytmN5IEVxDVzEiBN9JlE12 zW~t(gfFF4k1%U%NtKyuB1+Fc(n!Ba8$hBaL2q7>3be?N-7Nuf|YyOrTmi+@ofv9}z z1%a46O9DgkyeKe?G}n4s)@2o!n%_S2BoYh-{i)-KUT}K!pDgG};<6VjSY^ok;fqR& zTCXsqh>Gd&l`bmF3=#c{E3ms*zFwbNUt25Rs4yIprhT<)Wp({leQ=>#&&^DGk;GMo zS^K^RZZEFMAB>v>cNO$b#|H<)gjwHpZ8n_Y$;c9er(CHN$~VikTD67{jX!1%;DQt5 zNPyuu)%~=XTrX%-aDsMj5&=vQ_F5uN;*@Nnr`Sez4{oV3PoDwS_Zmvc2Zs+XhoL{> zwFWnEa0_k{x=9Ea2wGK$szU~Pw$N*v4wK1gK(+KR=@A3{RuwH77_gwfw8y}H3&)5a zwBQiIxCMs^9<}f7qH9Ll7u&<>O|`c%irbXLeahe=jr)Ygd`V-yfrfWT<0CToiY&e( zhaZ?{0)=)E%wq@Pr0x`rFB6Q?DHBv2&*Z)%!o{|ecq>BZ9Za?|{CD`J9ZuGAV(S0K NmA@Dnrp<@V{07IzkiGx_ delta 879 zcmaiw%}*0S7{-6I-Ol3D1klEyVuc7IAIg^%QEC?`P-syQK`ScMlv@*{!NlO9Bp$q( zkUfD1xocv)u!$yIym25Qp7i1$U_5yAVw~A6frAN?%*^}oJkQMgY}I_I>DvDLX$!c- zBbzuWi(%ox`>w!(~Bq*uG5r7@c$j7z7_$6=9?PIVC593?BAkrh9+ zn6RlOYjMNoq?W&FQ>X7qn;0oAIwhUPfGd+jnb*# ztF-IN9h**l-?i!1;yH_ZtG~a867;$|Vx}^|T!i~P5RAIJqT5|C24sSVf&rB_yE{gm zg3i0YjEiE#2W**dD$V^0$f$MdaFmp<+0oi ztEtq-b2ZdUuJf8CYdE}P2#*wB7-p9=KN#aDAr z?SxV3y$*(>7}GqTWL)u4F(JLB0{&AeS2=gomM*Q!h({FbMWSm7oqyIVlvU+iO^-FSNZEbmdB|@C6AQiM- zxmEr@XWPxO;BUHphVn^}wxxqB_m9Z7nmySF6QZ3C1fAy9Y>u#J-z0}FlVt$BGP{LH zp-2zCw#n!fiK2yypmydzlY4DWE=qlra43)ZMMcvQ4F+k<(_DDPa(Pbe$WA>H2-v5(kJ1|?u6nD&b Q4>K(>dk<0YJ}~y-7D-N6YXATM delta 644 zcmaiwO;1x%5Qd*~E$6_oNl^(g5F#OlhVoG@Uir4SrIf0me5o`p+{liE4K5A-1#*`p zY}t_zqfI0sbnAi*2`d)-0{jIU=iE~4LgOT7&Ybt1d1uc2Ok5_mzW@4m1U#Z_8D!Eh zrGpg##B}y_I5LaJ6UzWuL!h%45sMCrpQ6Z+v$T*mOj}wh7-lTDomSD(=I&WbJCjbK zq=Wmla>G+gXOU-y=Y}~QyshDuE+;XsgYG)ei3e|Pt*#8Tc$aMT=72|?=O#BAx`caSo diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.class index 98a902d99b6f5b9420905735b630e7c55816fc15..a0817d34c093eab3812dbc6f8ab700a19ea2913f 100644 GIT binary patch delta 12 TcmbO!I8$(fB%{hksd^3o7>5IO delta 12 TcmbO!I8$(fBxB@8sd^3o8IS|2 diff --git a/build/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.class b/build/org/usfirst/frc/team708/robot/commands/feeder/ManualFeeder.class index 75654744df28cda7e5c59e5a253e1a6a14db3c9a..6d3ccd054bbb753f3f08c863b8ae828abaa8fb2c 100644 GIT binary patch delta 18 WcmbQhJ%M|IB>MvfFxaS2zzP5>v;++R delta 18 XcmbQhJ%M|IB>T&mATVpALIEoPM*#<| diff --git a/build/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.class b/build/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.class index ebdfee991c83eeb619c969c9696b0f1feb6e6b85..bf0715ad779273cbdce62d9a4000b8ac860f55fb 100644 GIT binary patch delta 18 WcmaFL^^|LZGW!DtFxaSN%?bcF6a`|th;UV@YN@8?&bMl)cT`6LT0YDxhvOG%bl@sB@lthEAGS+lO} zzr|YX0Vy^#o0_fmsiy`3I;x=e`-Yd#905S;x=O9oc>mFvIw~wA$3=kX5Qe{=vE6twjKT3Efy5XL7{9_}AV5gMf(@HUkvIVtFhcekF2K$U9*VM! zB1K3xl95nE_PGH^;0{rg>hWkYq8C+N)&2kV*ZL)*FWm%bFF1 zN$gj>^RHwEBy;E?>2FL|y^Am8r8C62!VR9D$&(Rklk3$Il~W_H5XkjId1GSkl+0JW zk~fX@hbg-#(_T}Ordhiw*@(34A0`Gnk7T!EvaM)eaWO=0gh(Bz8t)%R_>pI8Vz3|M d&=E&D;`nd+5bvq!TOxEjMvx2%6tlsoxqqK=K%W2r diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class b/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class index a6a4dd6cfb10a257303f74cd176f9ec9fd60de62..672c5a6beb5ab55acc9460117ff82a8287729afc 100644 GIT binary patch delta 212 zcmXYqOAf(c6otQ1rB$z}M36>;h<95Zb=1VvK(GjlF_0LTiHVq)sN~-Od$1jU%T4a% z+;fueZNAKd?fE37(`RfjVXB4Kdh&|ZEFMm5x&|I|Exha=D_>pTQBh=U8<7&EEi$Jw z{fKPY7Ubl%&;@yURE)jAj3{V=;*DP7mHwV`_@yg3|M*ecL5&VJUCHa=G9X~cf)Pu` YY;b5ur1=BWq$QOtTP5W_-Aq;a0#A$|{Qv*} delta 192 zcmX@ibA)GtoRJFy7;rMEGw5(J=rZWBIV^nu76S3~L4*NF(vXY6h{2f6VZOu0023Cy zwG1o_j6h|fn;4k3F))iTuuh-Hps|U8U69dh8v_TBA;Q49je#2^!u4VDMiwbM*H{#+#2AzrgM0gdN@Si&I9AOqyd P0Wk{$lhI}aR$)c}{1Y80 diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class index 7526f921e10f5b28f4153762a8550bd492c416f9..aa0675843d6f0b12d9c5937a60cd83e795928648 100644 GIT binary patch delta 75 zcmeC<=;hdOk;&eLfr){Ufq_A269bcg+%^UlAT7w%vyFjuBT$ryfd@$PF)#y3X$B4k U83sWHSq5Gpj|ZY_vLN$c0MNn;1^@s6 delta 76 zcmeC>=;PRMk;%c8fr){Ufq_AI69bbVqt`YD77&B$!!`!ijX+^01|A^E$G{9Er5QLG UWEg}PWEpsYJRXR)$pXxO0r3Y4od5s; diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class index df3e73add3f44c99b4e6afa51b0fda6f1d1d33a4..83695471cd67e79a6030537f68a3ece5921015f1 100644 GIT binary patch delta 24 gcmeC?=;qjPn~9ro!Zrq$O$s@5Jq1Q#^V_p6aQex#1J50uz}b>360UpPQ9yFQ>ls$H>?eH6>;>bIfaD$Gx9wda$fn zAg)W$hNBVs2iRuvX~yb~1`9V0F=;XQYas-!m@N?-O%CM7jU zE=5{)qfCd8cu&UE%iWYLW!AL>i=;#YgaQVkUy~g~hylNGldg6yaf6j4+#(_(rhc_> z1a;YAMWqVLIA$&^1(*q+`GKsEjG3bB=I!o63-`B(prO@3bGP3tqwO@8JI%KEXf^2h m_aV1Ehc)@wdVpd3j3J*fA26W*2W-gTHUoe+6N-;*tHUq8)jY`n literal 1505 zcma)6%Tg0T6g{1U3=D%39un~p0g(`p;T1qY4H6J2KqV9lcax-n#$+bW1JNqK!=0`y zH*RDRt6ca2euZCRc{>@Bl#58Fa_8RL-RGYB==t^M$4>yW*izAhcpFBMP|=MsDaNIF zU&RFUaB7#f(NDpoiYZKoQ=flV9MYNzr#_{8s~fY@m6QN;3g#6oFepXiY+n>P14}c6 zmxU?ZM+~8Odh~!^t5%+tu5JsH?|Q{7xA%=~fjnK?R?a9K7`BkM?+m%e!eLn6w(KL_ za}I^=xcZ@;(_L;9=O-6*+saz5p0kQY!^}Inb8J~IxAja(n3<}+#GpzF!YGJ$6ek#$ zG!%ZubDm3fN5(aBuXc=*A5s<0I_-CkdA_pwB}s0Q-Y!gnw!M-oSJaH<**U&0B=^pS zcoQeasiC0{F$E7aEMiH+G9GGpgs6tcNGVv+@C2(2Bh9l~wM@q~OxID6*06?k4NoP; z28J|jBBtRkVhoGTQJU3;VVLJV{Y^>e)zXqy5ZRN9g6gZ)!ZHjs53(oQKvnhY&oKR; zjyYb|dF!~m=;-x6wc7l(Cu~j~ACGT0XO_7DSd#5j9q!7Rvpiy<=52AxUE2^QL-O)O z(zRnWGc(N-Zs1=(MuTv~-Hc@#c3Q~R<*M^W*I@F}aDF)$T8q{x->@tiworUiX4ytV z?iq!>=R0zy9hq?cnanukxK;@RbPIdvW-i$=qK5Q5XnB0QM8k%6F2AqfdxoLa1*!aEj1Z{0^>GfKKvN@nf%w`WPBh| zfzYapK12w2Y6ssFjNF$zM@t#u9w;9^B1-%sY^w~FlpeH~(eVYn75xh7ay8IOt1?)y z!o8o;1%1CdFiG5|Fo-0^Fh}3Jg$4pipTGd^4IwZXAvuU4A|Oko(_2z$NtDs~m6U2( zs(CCoz_irzpgZUvPWp!xB3DMFUIw*Ny%h0VX@F2_5W_WynTGgX{{p0m>RJQ91qX(E I6{aJ90dg)y>i_@% diff --git a/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.class b/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.class index 0f2300b1c681061c1b51076b29ee29ce2a55612d..cfbce549c96676deca23cef81f1619618fc91e71 100644 GIT binary patch delta 1400 zcmZuwYjYD-7=CuMyC>P4rec%YrPYE>xMW+_6)9S4n{p9R!X@Pv6t#o^McS0~qSQ;k z3pX!ccKja}oM}gt;WJKL`=4PkNj?ij{|}p(D`rj+{gvvJyFDiCmmmnDFN3CNFto_4>q>1Cz6J5}U9&cx3i&--{0= z4xlJe!nlTXt$yCC%~Yo=3tpvGuX^K?i&cp{zL)p`4T-C`7I;>7E{`7tevC%3Z!15lqlhC#Y&N)&a1W+RLkaU=QI4h2 zUMd@DtSb%KA&}xHZv*rTET10C*i$XO^}T=&W4dk*do1}O(|_(_y9`#h-544 z4E9q~vz5Weq&@QZgm!}W+=ylke=@qd^IgXjE9i2}ZTH}m`(yq<%y*2Kzl`-EVE6+D z0Yd?fxq|K&BXdM{6xGB=Rr#%|{8m*y4)Q%!RXz?;i-p=@YN|e;0Ca*SeVYmah#xaf-`rLNenJp zd(*d=uhDYoPG*DT;WlM{G92(h&Greec_-1;tt+eL9eP+ TgIen7!LlSaN90Q)Iwqb2%d(_I delta 1431 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 delta 2917 zcmah~c~q2D6#w0U;hXv9u{bQl%t$DNz?hLDVW%TVTK!Sjf~IMyWJVZ5q99o|R_0Q+ zeywJvt!A1jL1tQ7T4Y*jtL^(@tJ!ASa_^hZnK>NJ>C8F5``-KR^1I7>b707-A>keW zYWnq_XR!>_)y>@QTbRRemqT_eKjl%Xh-vJCPm%Em%P zehMfGa>CRbS1ZiHm14J2;d(4KC`Zvzl&h!@7Asf`)EBoa%AD1wkViy+;3;A01{YmRuDh08dM&y7T5&8~Q$ z7-zNn(v}dlS?hbX2QTAKiVs1HFdLWij&Map&6?}Y>EFgDCI<&@;Hz^ZqWWxgM4y`_ zZmlkF8+)xvuMCS;2#Jh!wwA2IoEb;r)m&aB=#^B@iK}>Rz*&;!NprEv99%69`LG&E z{2B0s3X4Ne!r6(6b-Z;T#%mMv+pKx@(LOzxou?CFt7u4%9g<`YHQBxy{<4^pEgXKU zc9Nx&bwz2ra4l0L{_*f?%ccx}IA*zxEw}%VI`VaPYfs6{(>bK*lD!TWb|VdY z;t2GL65tzXvoGcFLe$OdlRGhN)>_^~dJ)NBZ=3^n)WHprpsahmCIPtEK^c2U>7K)9 zT+PqpoE+%`@#x(oEUeyH$MKL=XZhlWEH|2IE^fAmEEl)vA#?Giy_HvyA!C|{5lCQ9 z{ECP_CN;>;N=OxVVtDtY4))0Bwj|uH34NP&f-a?3=AAN;Og`lEqgFrxZCJr03=~Bv z7U2$?ViE4t6y@t(nxd?Pwt-{>aW}8r_T6wCMt*`!A;0Q2?`hmS=|*YDTH!0_qU`kr zWA_=Q(fZ$GH$63bBx_B`&Mk}G;-R*d+`tStPB*ahUtSVRI2a`4y;vq8t@YUzY`;G{ zSRnS1i!vaZ*8qN??qfZ|ay#BYe;{^IXc+%do)lNg*nF&rrc@p`U^xk$IIY`!(8=uN z)E=GO-(x?m9e%S=E~}nT8X0FA8?6T-rq&_9KTda4kGc=qxt$pB$KFO74};F@QU4)Z zKOBgAG-v|rPwYWI5fAs6hFrF8V@cC`w0{IErB|Hs89egx#-@h~J7Dl^TfSi02~rDv z>8S-yYK50(X+M!}rboM(jz@X=q?`N~DITp!!A#xFNF`^-MNf=Q+G?z^qYq^%ZQ5^G+Wb>cklfHsH)L-m`dFbz@|GHm^s> xX)I9WHZFmO?tzb%qAx9rW1MF*cHjx-=)gKkW$A^3l4&rd@PFF@q*B2!|9^I!!2wLf^9f%{lHwSR!w;Y;*VcMO6j*NqRq2 zVXdEnCc!05k)&pYdp7qqt31>^Vomed6g**6v(8gRbgOz)Z;VuGuj=KBYqO!*WJ{6t zeyib+JJzNOn51qcULNc_ZlmlRyxy%lZaKYe($ZO~2){dQY#i?IR$N75di{-a!i#mP#|v8I_gevV+1hLkhA5%j^;dyzhZkHRzr18EX#7kCr!>=Q6`S%CP{8L5U&1c#;lLwTUCrR^+8>MeGd79iII}XzB#r5r~Ko%!;)shQoqyNP6Q$6l)Z3ch5<`r`DIWM;6}gZI HmWs*056@D3 delta 583 zcmaixyG{Z@7=^!CF6)x90R%w>Z=iyr+!XM_;srIaw6(Ob_W`V|v@lfGJ^`__@Bys! zbxbt=vw~nnHaT-<_y5kE%s!6a>x;MVmsg;|sZB0KguKnF%~}W_1&1)}#%&lWI+Q3I zS20pGvT0;1=(cVo1cGkVTd}Fx)Vr5g$`>Qv`B2SbjD{x4gl3z#W`|vyJxz;!%>jp+ zBQww@tvTjIQGR$YKi^pmm10hML?l>YnFMjRcnKDr>@@vtmFV317tWLNMaw&=GR3q< z%=}J?&wG1G>58#Phz7mkECW#efhp2n{FgsjHM1dMAjg;lnfaKvcY5>SFe^osJo7Ag z0wX*u+k_j+q;I(K=OLfvnD<3LukLJVrle+G>5?c Wg;*?0S&J21SwqsdB)`7tCVl{J7A!RY diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class index f8737c429940fcae58a9604328263ed357c25548..89d53fad94cbeeaea0180461d645bc15d0aa2a5f 100644 GIT binary patch delta 4054 zcmZ`+34D~*5&zF_vfr1@my?kDSVT$)YytrkL@|U2K?zs5@7-jREF{^my9or)MMaQ9 z5Izt^L5q~5lnR7k1P`jUwzO67LP62i9<@Lz#%1g_Xh2B{n*34*O8 z<=TkEWU-a_Pb!;?tO8L2(E>IBO+Xijv6G!*bux5{6E$9p2_x;4NJ%;+i>aHKQZ(wW zQK}tx;LBuyvh5g3IWm(gTAoG@J4&dBoo=C?V!qWJK`GW=^euBb-5L^0Z=Le()Q1Xm z>TBn5KN&c6DwIKyPW^Qnpi{9<19cjt(_o!$lbPFf8luxso$kgG_hUIBae=GFRaEb4tSuVv zUf`(;8rXxq23Fuf1FK}&YJo=u)(ET>SSPSv;4y&>*l6H!flUIN1x%UPBCu6D8#I^Z8Bth?N6a4f4SDku$(5jy zI}v9Ms-jvxIMo?=03n0C*lWIRzbmu=do@~UP(3vm*ewY(8swuU1K&X_Z{T)L_BVSR zBR!2lk6)uj2KgyKFx<{^SHKb8-oObQF(^pQYGO=aM6lfBt*zrqZ^jWqvfCNIdMdq3JqDIak@$Rpps&f{3OcGI=@PQsPPe)hM^&?*&l7ai zshT+QTl*N)LW?z8Vo+i$-Y{sXly4bvvu2v-5;FT~biY9lP)MUngH~{V(1QXG2|O&Y zk{;1$l|ifN(Y6(_r^vd7)|wS@gR@&`9T&68*VH;8lIQs5U{iB2pwVM(JL9$y4K&Z# zQ$v9Ump@qT3e>rME`N1Vr3}kDhun4SGOoG7Emcj;AA9WuRR;au#@b)nX)RS##_&~Gt$=>^fmhf;dIP<6V4ZN;pze{lk5DRK%K9?Iy^&2%kMMR z=dUgDHE|QP6jk~Bo}vm@a2U^+{o~Sx5_H~pl;73B9g?1Z!?k^;YP7+ijkMXohd8T| zNhp?soAcu1%$-R#^V#?qb3x)@+S>M9qK%@SAoMbOB;}ZICG`un@J9sb4GWk`ShL7A zE6J>)Bom90{FGQG3zw)dKTak21uDt(q9iknl1ws6GS4WkZG*74baylb`iXwg%azXJglMkXgvc(LxDPLK?p8Q(4?0+j<}RzmORQu~kh$d81# zBe(O|?5DwU8M#&o$$T#%*;vFMl2Gf$U)uBW+YM)s6F>eB%aB5njeCjQh+* znQ4P%v7MbjTM$iKyCh+YBq70GRrg4E4JVc7E17BPC}Gd1*mL_$Jb%FbD;d6yH^h^7 z>zc9i`iys6pRr2#hj=sMJe*VIWML}^Wwpb3nAPxs!RONk?0WDfuBRfU{At)zrD5eplQZ>hNAC4$ z9O77qZxZWgkyt;MSRqy2;T-B}u$=3IwR5l+ZxZb7NU(QqT%WY-W1ZkwFL#NR)wN+x zN3Q)$q+#N7y0+SD?0T|`Ygf;ABcAU?Ud_y$BBq74IawijAK_lkjkKn)Q4}mG@+965 z^B6a>lM5hE;zaT!eiT_9sGOEOx!@S4bYSYV=~epR&&5IP+B;7u(`iE2Ep$l(1UGYJ6C&W;G$KdRR>it2M0FDz7@$ z@|5OfEl0F##U6)le5Q9`57B9)&>5zScacx;p_tyso%8`l(TA8wXEBRDf`>jv6P?2{ zI*(QK2{zHEc!nUR!b$PC=Q^KOm`g5(x_DC9 zGtnYncV5r$+A^81LWpflLEmFoa10Aqx1%s{Fq`!4JeE&CW6PNJ~`zH!;x z;Vf_-MN>PHL@sJavKq7QpWlvdG6*eV2=FL{WfK=FX%}KUz1XyfP010H1dvtyde{Ih(NeLN`=_Fs)&f^moXTt{@Q4` zpy4z5@O*v=Hp}32j`<7rvf!6g!!j8bs;2eivBl8iw1qYygVNZ}%|N`CGANU>{s+I% BQL+F4 delta 3184 zcmZ`*33yc175>l6WZul=g(QfpD6rP;b#gzS2(Wl3x!`Q{7T{13cpeKZ7@lEMcv;iysGefg+C~q@V8Di zHJBp)=x>d@JNlC@__M#YZ_vba^qRt76#lC4H-*;~{;u#w2>-x81Nc_}|5o=u8hrDD z5dMpk0lcN5Ar1Y{!rK;3g>W8T4g-=C!gTR-MlAILmIOm+l~71>#ny11GgBhoF_P~r zlW}wWGhUiv{&cEP-31?#%5?@Fxi>RFRm zuyS4Zs(u?=u+_#|th2E}m-Q-KtI(%#okG9DMuqDYZorK;HYwbs@F9f{>%>PCKC0iC zRQMQHCT)CN-J2CYp>T`BClzj0*sSm=Ww=ef+m+!C_3p$+*%Z1`ZR2{WV$Wq$@w-utp&W#mS$4e*RSpAKEG~Bh$2`ZC|b3lchhiq!N&gHjs4eIa&c;2{tj`j zDtx`jl0~+3$PydRV$hPMf+m-)$T<~mk>#nDBER@96^wU!BQa-nWK!}<9$a7oJfI%v zd9-|EDGg((4rAF5+OP`3jM-sh*+yfj5o0M6W2qElDHda?7h@?IW2qWY4IWjF2~a%7 zQa{F0LdH@>#!^VeQcK2CPR3GE#!^(qQdY)NS;kUa#!_F#QewtZWtgu!rqWD+Vl$R{ zGnSGwmZ~$B!lQ*ge`ERRX^SCxQi$79$BP?9wmW&H`zsty*$hIeaX0SaNbs4=GUvt8 zcCIRo)=t$`B`l#1KJ37~x*iSg`upey;j8hrS=j00)F$jAZgYB~%b9*OnmA`Ty%2HS z&uTP%c2;^Wd_x%TEjS5F33lTFB}mnmwQ89?1^!JMl#GJrM?$KSgf1@SQq z#C>U$?nfZ*rHxNWBcTH`!>mX6g2EUWi zusJ380`?KNIr&wkrl1g$Aa^52?#U{`?-rqC`^^IvJcKW5CRtjT!z}pY6=@V7qL=yN z4A*_++Bpi>mneO$`2Y?=l7=jM6ZIoEv3uku%pM-bm(Ns5{m4olWF>n?spJv8=e3ka zGuv_+W7!Sa&(w!TNj>Cl;;~FCO+&nti#CK(s~%a#0dhS&3RlW)?qTK1G^B-8r^#X? z$sQ%yp;5@vF4>VY7gjZrD^0G)v$!g>nWG(X%)SPx_z@ck#&%sgC)neUO?_|7aFK^D%0rKg3ey-5Th&$=>JNwRB z>I7;VN=v1j+u?6QwbZO$J~yMrnP0mmc|gYDkksKZX+TP*;IK?XTADFnniOX%n)sXM ztN0r8qCC&f@g=A?QOoenL+^RKz}D&Oq29b6WC-mRz8(%&o&^7S^>)C^tJcCdEF9Ha v_nRl-_e4oK`53c2_?GBT^e{ZqBnxGVKPZc3nOs7pFs$!Q5qQNTUh%yHvydLC diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionLift.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionLift.class index dfcba7eb72dfa023ff2904b8ac89f4657a1f0344..ff7b413d8a2cd5054e4607e51976c6110e2ff475 100644 GIT binary patch delta 3015 zcmai03wV^p6+L%fe|9s3%_iAw%(77_BrL?(7^tKIi`JqdpwqRDO$B_ zEf%rhgI}xCQcD1Btrl&vX{3tuX=`8F+J}!;Tie=dAN1W~s=a4+Nm44GeB_)vckaD& zXXgBqY)frQWuAOv{{a9E((mAz0{ke14fwHxp9E589#lUNL??bqc$V;-gXcpC;ROzU zM)*15MZ!yjUl4vtc$x4k!mkOxA-qEPE#Y^BSA!YF*J%Ep@CU*l34bCSBK(=~7s6iy zsaduq+tc6Z`a9ttfmFk||DSGW-ikp+@6_#mzp%xGQLU$?QRqpq!^*S+6gxV>nS`+TsiYGGJTpX|sPVLV~v zJ#v=8E;-vEjeaBNV8Cq(&0De<1CE?)WQi;_xQD$gGjg7sZ}4gDPA*sdrlL5?vheA=y!+tHRW-P00 zEbE~tN2nZ*-4h}uncR#j$VRA$EUS(ztCTFOnk=iJEUTt0tE?=mvMj5(EUUgOtHdm; z$}FqUEUVTmZ_QwvHB@qzRdtqCc$QUrmQ{Y1Re_do&$G(Vj#Y`4Rg9KZkCs)EmQ|IO zRhX7lo0ey&KCPh=RR-l@S(Tw2fj~bt#odD~C5uJ&xcf>UuiUFsMxBsG+>85kB=}4& z%-vG9NTZ%Eo7%vrs9whm`0!cW&v=}akN=$7LHLgMo$lZPpHAJ32Nid_HPMxtetooV z&XM$DB=LFehUsTbNH2tM6w|!n!*Ez&A0A?X!B?UwwpkPFo_C}Iq%NQ5k=lGMHV{GK zC}Q5%aY6CaSV={&q9~{(9?lhVpNZ9^7MEhl2$p5BqIv{pCx=jb*G`0!Me0cUvZ%Tb z1xc@RvO0@79N3v5tk|dJz1ZWPR&mONjhs5Rk&BMr$O5k~zmZ$=C$YC;uI}T-iptE` zK2VcS3n4LK9}YaDNO*Y)U&tlv>UBEek@>ajDG#XO!5+l`oze%^v{wj!zNTOhLpr-# zXXb0PhtbK(EHYCbRx_6#qFXk?FIUSntETVR-c3V>x<<_Z#b{)hRm|Q-DvH=tx$zqb8Ry6No0fy;MTa)_B_vni;=FozS z*PnJy#`2Ta;Wj2#7p+&XGlI)TaCs@#yL%Jo=qqq2vDqGaQlHX#eJj6-Z|Nr$(>LHr z)h<8DRYyKSwZ4t-=(+HPtFP7_`ZXuAP$~BjDRPm rC4Znv9{f-iDM#RuGvzXQZy+dLQr;`wDzZsBp;s?O@XBNfOYwgJ)fy$d delta 2983 zcmai033yc175>l6C<+rABbWVen$8?;TJA`>A}NZ4t_=0 zN7zqzi|{t#*M#2?eoJ_V@H@iq34b8`k?^NzM)A)y|3Y||@E+l>gufB~PWT7mpH6zB zEy>pOFS`Csc;89aAM}6Vq>B%Z4sgPMoOI`I>*HvU@L$4*QDj!(BQ=F7MLY>fI9DR% z9C{p2T*>v+isp((cOKowm3&tUJWR*lB0!2gq@{#U;`F&JULdza>_Vb)r9e`q&%4* z6Qfci#}R4?#}iI)(%F^3GA0q~T&Z_uvcPNYSa)hmTW3qlT0u`dv?nZyp0{#Fhw`V` zDFu4Wu6)9e<}Pv`kg0+R{?!FZ|Hj-=nblZhuohhgm!eA$Yj0ZDRJ)>SRa@VE*+4KBmw23K=hhOmKf4dHWy&l5Hht|fedu!(RT;d;Uigc}Jr5jGQU#w{6xTXBoQ zZGnWH)VROeJLasju-%ojjm(jA4DM$Y=NdUr&NtYm zb;$+TW#lu2xrBLgp^=MZzAG0SS%7B@Iyq}0b{bhEi~apxWvbCglPqy%ijijBpDZP` z5LyXsx{xfBa|Crf&z_liTg6>2?SkX0{eAg0?)bUX`Xzp4enM9EOwE5gRJh7Whjbb| zj~84~wM?=*eIkF9zbH0YF73HJ=7_BG?mQ^yAwHwMs zREZsHr!8wQEvs-Wt9C4_d@QSiEUSnttBx$Il%PTjQBKyOin6StvaGtYtkSZq>awf? zv#c7ktTMB#O0%q5v#fHntctU&qO+{Jv#iq7^|b(%pLM7LEvpDEs}3!z6fLV7Evq0c zt0pb0EG?@tEvq<{L3vnKWhfUx_?jv1&_xq))I!hFBc_XV``yLQmOrSI44pC!58+`Q z3BH;Q@Hdpq&{@xyRMm4$eqk}r9Kf7D%pW&^S*c#s+;uNvsRDKQ1!ZMszPje`)FQ&@_Up>( zMie-8xWKuG7T6Gu1O?s}>~L$@iJ5Lq6Gx8rZJFMm?TE`INXkl7Ne70jMs<+PLvpBU zjdKwiL^8}h_hwV7vsOoJP>vQk=2105;2QSiWUb9<4@}q812g(a(1(7-9e(5JQd^Lx zL6G&xk;_ID;RHo6+1FK0TxS4JF;cUftlbE6q13oOjD1qA?84bxS7@#)50mR@d!&MI z;2B89CL6hl`a?Id;m}RkJ$w_phARoNeyyau5A}yuvQaC!_Ar$^tCyGE*6yGo*OZq| zX7{q2xK2Z_KTPOzK|{V3M85p7$eT2B^I;;t9YlU7P(@iqt*UlbMfpOWfA*}BBg7Oz zsF+8tKNP`+8+E%p^09j4(_+>AxR^$`9}CEZ<6`|-Xde~#W6`{zA^vj}<(Y#kj15*0 zd~Z1K1kK63af?bK-WahE@BHjmLd|*?@MTz#n$VBM{b=0O zho-E#WQ){>PpSy~+t5v`q94t>v2*|}XIE@NO{%6Bt$ipVxAh@z$7(NY>_e$_>R`DJ z5}cTt*Nc*E$Qz1ckoGAaxR`*`^t-H4{iWOW5*T)9LeAIkaz0E153R#LA-S-iUA^uA zRt#WeG1~pD$usm=-$`z=O;71fI7$D{coBQ_tx4c0#f2qBpvD`ch< ZmDN((C2LS7qx6A_OJWF1p%lpx{{ySfAVvTH diff --git a/src/org/usfirst/frc/team708/robot/AutoConstants.java b/src/org/usfirst/frc/team708/robot/AutoConstants.java index 5e2bcf2..5da37c6 100644 --- a/src/org/usfirst/frc/team708/robot/AutoConstants.java +++ b/src/org/usfirst/frc/team708/robot/AutoConstants.java @@ -23,8 +23,8 @@ public final class AutoConstants { // Drivetrain Constants public static final double DRIVE_ROTATE_MIN = .4; public static final double DRIVE_ROTATE_MAX = .5; - public static final double DRIVE_MOVE_MIN = .3; - public static final double DRIVE_MOVE_MAX = .4; + public static final double DRIVE_MOVE_MIN = .4; + public static final double DRIVE_MOVE_MAX = .5; // Lift Constants (Field) public static final int LIFT_TARGET_HEIGHT = 5; @@ -38,7 +38,7 @@ public final class AutoConstants { public static final double DISTANCE_TO_BOILER_LOCATION1 = 54; // A distance to stop at and shoot for high goal in inches public static final double DISTANCE_TO_BOILER_LOCATION2 = 108; // A distance to stop at and shoot for high goal in inches (9') - public static final double STOP_AT_BOILER_HEIGHT = 100; // y value when the robot is about 108" from boiler + public static final double STOP_AT_BOILER_HEIGHT = 10; //100; // y value when the robot is about 108" from boiler // Gear Constants (Game piece) public static final double DISTANCE_TO_GEAR = 15; diff --git a/src/org/usfirst/frc/team708/robot/Constants.java b/src/org/usfirst/frc/team708/robot/Constants.java index 5078a15..340fc22 100644 --- a/src/org/usfirst/frc/team708/robot/Constants.java +++ b/src/org/usfirst/frc/team708/robot/Constants.java @@ -26,8 +26,8 @@ public final class Constants { public static final int PIVOT_GEAR_ENCODER_COUNT = 1024; - public static final int PIVOT_GEAR_ENCODER_HIGH = 35; - public static final int PIVOT_GEAR_ENCODER_LOW = 5; + public static final int PIVOT_GEAR_ENCODER_HIGH = 20; //35; + public static final int PIVOT_GEAR_ENCODER_LOW = -19; // 5; public static final double MOTOR_FORWARD = 1.0; @@ -39,8 +39,8 @@ public final class Constants { public static final double VISION_ROTATE_MOTOR_SPEED = 0.8; - public static final double FEEDER_MOTOR_FORWARD = 0.8; //1.0; - public static final double FEEDER_MOTOR_REVERSE = -0.8; //-1.0; + public static final double FEEDER_MOTOR_FORWARD = 0.5; //1.0; + public static final double FEEDER_MOTOR_REVERSE = -0.5; //-1.0; public static final double FEEDER_OFF = 0.0; // public static final double LOADER_MOTOR_FORWARD = 1.0; @@ -51,10 +51,11 @@ public final class Constants { public static final double SHOOTER_MOTOR_OFF = 0.0; public static final double SHOOTER_MOTOR_BACKWARD = -1.0; - public static final int SHOOTER_MOTOR_SPEED_BOILER = 2000; - public static final int SHOOTER_MOTOR_SPEED_LEVER = 2800; - public static final int SHOOTER_MOTOR_SPEED_MID = 2700; - public static final int SHOOTER_CLOSE_SHOT = 40; + public static final int SHOOTER_MOTOR_SPEED_BOILER = 2100; + public static final int SHOOTER_MOTOR_SPEED_LEVER = 2700; + +// public static final int SHOOTER_MOTOR_SPEED_MID = 2700; + public static final int SHOOTER_CLOSE_SHOT = 20; //encoder value for bumper public static final double SHOOTER_PEAK_POS = 12.0; @@ -62,9 +63,9 @@ public final class Constants { public static final int HOOD_MIN = 30; public static final int HOOD_MAX = 2050; - public static final int HOOD_BOILER = 520; + public static final int HOOD_BOILER = 400; public static final int HOOD_MID = 300; - public static final int HOOD_LEVER = 330; + public static final int HOOD_LEVER = 30 ; //330; public static final int SHOOTER_ENCODER_PULSES = 12; @@ -86,7 +87,7 @@ public final class Constants { public static final double SEND_STATS_INTERVAL = .5; // Interval for reporting in seconds public static final boolean DEBUG = false; public static final boolean LIFT_DEBUG = false; - public static final boolean BOILER_DEBUG = false; + public static final boolean BOILER_DEBUG = true; public static final boolean GEAR_DEBUG = false; /* diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index 11896d1..8f4ffca 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -118,9 +118,9 @@ public void robotInit() { oi = new OI(); // Initializes the OI. // This MUST BE LAST or a NullPointerException will be thrown -// UsbCamera ucamera=CameraServer.getInstance().startAutomaticCapture("cam0", 0); -// AxisCamera camera=CameraServer.getInstance().addAxisCamera("cam1", "10.7.8.11"); - + UsbCamera ucamera=CameraServer.getInstance().startAutomaticCapture("cam1", 1); + ucamera.setResolution(240, 320); + // pwr0 = new Solenoid(RobotMap.PWR0); // pwr1 = new Solenoid(RobotMap.PWR1); // pwr2 = new Solenoid(RobotMap.PWR2); @@ -216,6 +216,9 @@ public void teleopInit() { if (autonomousCommand != null) autonomousCommand.cancel(); drivetrain.toggleBrakeMode(); + + Robot.drivetrain.setGearLight(false); + Robot.drivetrain.setBoilerLight(false); } /** diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java index 464184d..e0d50fd 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java @@ -70,8 +70,10 @@ public OneGearCenter() { // unload balls addParallel(new SpinShooter(8)); + addSequential(new DriveStraightToEncoderDistance(50, .4, true)); - addSequential(new WaitCommand(1)); //this work? spin shooter up for x secs +// addSequential(new WaitCommand(1)); //this work? spin shooter up for x secs + addSequential(new SpinFeeder(6)); //then shoot addSequential(new StopShooter()); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java index ccbc270..2f53d0d 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java @@ -29,9 +29,9 @@ protected void initialize() { public OneGearLeft() { // go to lever - addSequential(new DriveStraightToEncoderDistance(80, .3, false)); + addSequential(new DriveStraightToEncoderDistance(70, .4, false)); // addSequential(new DriveStraightForTime(-.3, 3.5)); - addSequential(new TurnToDegreesAlliance(.5, 45, Constants.CLOCKWISE)); + addSequential(new TurnToDegreesAlliance(.6, 40, Constants.CLOCKWISE)); // addSequential(new DriveStraightForTime(-.3, .5)); // addSequential(new DriveStraightToEncoderDistance(10, .3, false)); @@ -49,7 +49,7 @@ public OneGearLeft() { addSequential(new DriveStraightToEncoderDistance(42, .4, true)); // turn toward boiler - addSequential(new TurnToDegreesAlliance(.5, 90, Constants.COUNTERCLOCKWISE)); + addSequential(new TurnToDegreesAlliance(.6, 85, Constants.COUNTERCLOCKWISE)); // addSequential(new DriveStraightForTime(.3, 2.5)); addSequential(new DriveStraightToEncoderDistance(50, .4, true)); @@ -58,13 +58,14 @@ public OneGearLeft() { // target Boiler - addSequential(new WaitCommand(1.0)); + addSequential(new WaitCommand(.75)); addSequential(new SetLED(Constants.SET_TARGETING)); addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); // unload balls addParallel(new SpinShooter(8)); - addSequential(new WaitCommand(1)); + addSequential(new DriveStraightToEncoderDistance(50, .4, true)); +// addSequential(new WaitCommand(1)); addSequential(new SpinFeeder(6)); addSequential(new StopShooter()); } diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java index 5c4ccfc..fa172cf 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java @@ -49,30 +49,33 @@ public SixtyBalls() { addSequential(new TurnToDegreesAlliance(.5, 45, Constants.CLOCKWISE)); // addSequential(new DriveStraightToEncoderDistance(40, .4, true)); + +// target Boiler + addSequential(new WaitCommand(.75)); + addSequential(new SetLED(Constants.SET_TARGETING)); + addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); + +// unload balls + addParallel(new SpinShooter(8)); + addSequential(new DriveStraightToEncoderDistance(50, .4, true)); + +// addSequential(new WaitCommand(1)); + addSequential(new SpinFeeder(6)); + addSequential(new StopShooter()); // go to lever // addSequential(new TurnToDegreesAlliance(.4, 20, Constants.COUNTERCLOCKWISE)); // target lever - addSequential(new WaitCommand(1.0)); + addSequential(new WaitCommand(.75)); addSequential(new RotateAndDriveToLift()); // place gear on lever and back away // addSequential(new WaitCommand(0.5)); addSequential(new Intake_Gear_Out()); addParallel(new Intake_Gear_Down()); - addSequential(new DriveStraightToEncoderDistance(10, .3, true)); + addSequential(new DriveStraightToEncoderDistance(15, .4, true)); -// target Boiler - addSequential(new WaitCommand(1.0)); - addSequential(new SetLED(Constants.SET_TARGETING)); - addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); - -// unload balls - addParallel(new SpinShooter(8)); - addSequential(new WaitCommand(1)); - addSequential(new SpinFeeder(4)); - addSequential(new StopShooter()); } diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java index 22171b2..1039b8c 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java @@ -32,9 +32,9 @@ protected void initialize() { public TenBalls() { // go to lever - addSequential(new DriveStraightToEncoderDistance(80, .3, false)); + addSequential(new DriveStraightToEncoderDistance(70, .4, false)); // addSequential(new DriveStraightForTime(-.3, 3.5)); - addSequential(new TurnToDegreesAlliance(.5, 45, Constants.COUNTERCLOCKWISE)); + addSequential(new TurnToDegreesAlliance(.6, 45, Constants.COUNTERCLOCKWISE)); // addSequential(new DriveStraightForTime(-.3, .5)); // addSequential(new DriveStraightToEncoderDistance(10, .3, false)); @@ -49,20 +49,26 @@ public TenBalls() { addParallel(new Intake_Gear_Down()); // get off lever and go for some balls - addSequential(new DriveStraightToEncoderDistance(10, .3, true)); + addSequential(new DriveStraightToEncoderDistance(10, .4, true)); // target Boiler addSequential(new WaitCommand(1.0)); addSequential(new SetLED(Constants.SET_TARGETING)); addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); +// addSequential(new DriveStraightToEncoderDistance(40, .4, true)); + //drive to bumper // addSequential(new DriveStraightForTime(.3, 1)); // addSequential(new DriveStraightToEncoderDistanceOrTime(50, .3, true, 3)); // unload balls addParallel(new SpinShooter(8)); - addSequential(new WaitCommand(1)); + addSequential(new DriveStraightToEncoderDistance(50, .4, true)); + +// addSequential(new DriveStraightToEncoderDistance(1, .3, false)); +// addSequential(new WaitCommand(1)); + addSequential(new SpinFeeder(6)); addSequential(new StopShooter()); } diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java index 8ed6b50..7e090a0 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java @@ -31,8 +31,7 @@ protected void initialize() { public driveDistance() { addSequential(new WaitCommand(2.0)); - addSequential(new DriveStraightToEncoderDistance(80, .4, false)); - +// addSequential(new DriveStraightToEncoderDistance(80, .4, false)); // addSequential(new WaitCommand(2)); //this work? spin shooter up for x secs // // addParallel(new SpinShooter(8)); diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java index 746422c..ce1326b 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java @@ -32,11 +32,11 @@ protected void execute() { if ((gearAngle >0) // && (!Robot.pivot_gear.isFwdSwitch()) ) - Robot.pivot_gear.moveMotor(Constants.GEAR_UP); + Robot.pivot_gear.moveMotor(.8); else if ((gearAngle <0) && (!Robot.pivot_gear.isRevSwitch()) ) - Robot.pivot_gear.moveMotor(Constants.GEAR_DOWN); //Defines move speed from the operator's controller + Robot.pivot_gear.moveMotor(-.8); //Defines move speed from the operator's controller } diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java index f21fead..58ee0ed 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java @@ -43,16 +43,16 @@ protected void initialize() { // Called repeatedly 50 times/sec when this Command is scheduled to run protected void execute() { - if (Robot.drivetrain.getSonarDistance() > 60) - { - Robot.shooter.moveHood(Constants.HOOD_LEVER); - Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_LEVER); - } - else - { +// if (Robot.drivetrain.getSonarDistance() > 60) +// { +// Robot.shooter.moveHood(Constants.HOOD_LEVER); +// Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_LEVER); +// } +// else +// { Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_BOILER); Robot.shooter.moveHood(Constants.HOOD_BOILER); - } +// } } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java index aeda50f..1e16139 100644 --- a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java @@ -49,9 +49,9 @@ public class GripPipelineLift implements VisionPipeline { // Step RGB_Threshold0: Mat rgbThresholdInput = resizeImageOutput; - double[] rgbThresholdRed = {0.0, 120.0}; - double[] rgbThresholdGreen = {110.0, 255.0}; - double[] rgbThresholdBlue = {0.0, 113.0}; + double[] rgbThresholdRed = {0.0, 0.0}; + double[] rgbThresholdGreen = {79.0, 255.0}; + double[] rgbThresholdBlue = {0.0, 0.0}; rgbThreshold(rgbThresholdInput, rgbThresholdRed, rgbThresholdGreen, rgbThresholdBlue, rgbThresholdOutput); // Step Find_Contours0: diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java index d3e4b85..a46fee0 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java @@ -402,11 +402,11 @@ public void sendToDashboard() { // SmartDashboard.putNumber("DT Rt Slave", rightSlave.getTemperature()); // SmartDashboard.putNumber("DT Lft Master", leftMaster.getTemperature()); // SmartDashboard.putNumber("DT Lft Slave", leftSlave.getTemperature()); - SmartDashboard.putBoolean("Brake", brake); // Brake or Coast SmartDashboard.putNumber("DT Encoder 1 Distance", encoder.getDistance()); // Encoder reading SmartDashboard.putNumber("DT Encoder 2 Distance", encoder2.getDistance()); // Encoder reading } + SmartDashboard.putBoolean("Brake", brake); // Brake or Coast SmartDashboard.putNumber("AllianceColor", getAlliance()); SmartDashboard.putNumber("Gyro angle", ( (int)getAngle())); // Gyro angle SmartDashboard.putNumber("DT Sonar Distance", getSonarDistance()); // Sonar distance reading diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java index 528281b..2521f94 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java @@ -57,8 +57,8 @@ public void stop(){ } public void sendToDashboard() { + SmartDashboard.putNumber("Pivot encoder", pivotMotor.getPosition()); if (Constants.DEBUG) { - SmartDashboard.putNumber("Pivot encoder", pivotMotor.getPosition()); } } } diff --git a/sysProps.xml b/sysProps.xml index 03a03344243f59b17b3bfbab451d374913a1d0eb..8596039727ef242c1ffb57a2721db0ee3f43b11e 100644 GIT binary patch delta 155 zcmZ2yu+Ct^G-gg$1``HH215qp$rqWdH{W6oV&yktFlDe}Z~{tLF}N_8Og_kAy||2% z)!3B56)ft^U;u;)3~mg@49-B!=0KhqkX8Vx24bLLK-v@}GC7dNdh-*$H%zR~4517m pK(6`Z4?=8{g@mTCnlM-}m~UP!q|V3+lwxq6d{D%Cvyg}k3jo>(Addh5 delta 151 zcmZ2yu+Ct^G-h@)1``HX2A9c!EVi3(F$b~o8!}ijSTPtf7ywB(2Fu9@Ijk3#ak3g4 zFc>pf07VSIPywjTiNOpgX2{?O#D)wC3@$)17oeyUgEQDr1)!nUo1gH#VPbb>2xbUj kFr9o*#B#EL&@@&<22%#Z&8vmf8Ck(nKnd&3LLxFO02HPk)c^nh From 3782686f9a44929292a6dce2ffed2500927aa82b Mon Sep 17 00:00:00 2001 From: jpiergal Date: Fri, 17 Mar 2017 09:57:00 -0400 Subject: [PATCH 56/69] tuned auto for command group --- .../commands/autonomous/AutoFireBalls.java | 35 +++++++ .../commands/autonomous/AutoGearTest.java | 33 ------- .../commands/autonomous/OneGearCenter.java | 32 ++----- .../commands/autonomous/OneGearLeft.java | 22 ++--- .../robot/commands/autonomous/SixtyBalls.java | 13 +-- .../robot/commands/autonomous/TenBalls.java | 31 ++---- .../commands/autonomous/driveDistance.java | 10 +- .../commands/intake_gear/ReleaseGear.java | 94 +++++++++---------- 8 files changed, 116 insertions(+), 154 deletions(-) create mode 100644 src/org/usfirst/frc/team708/robot/commands/autonomous/AutoFireBalls.java delete mode 100644 src/org/usfirst/frc/team708/robot/commands/autonomous/AutoGearTest.java diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/AutoFireBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/AutoFireBalls.java new file mode 100644 index 0000000..4125586 --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/AutoFireBalls.java @@ -0,0 +1,35 @@ +package org.usfirst.frc.team708.robot.commands.autonomous; + +import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; +import org.usfirst.frc.team708.robot.commands.feeder.SpinFeeder; +import org.usfirst.frc.team708.robot.commands.shooter.StopShooter; + +import edu.wpi.first.wpilibj.command.CommandGroup; + + +public class AutoFireBalls extends CommandGroup { + + protected void initialize() { + + } + public AutoFireBalls() { + addSequential(new DriveStraightToEncoderDistance(48, .4, true)); + +// addSequential(new DriveStraightToEncoderDistance(1, .3, false)); + + addSequential(new SpinFeeder(6)); + addSequential(new StopShooter()); + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return true; + } + + protected void end() { + } + + protected void interrupted() { + } + +} diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/AutoGearTest.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/AutoGearTest.java deleted file mode 100644 index 0af1c60..0000000 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/AutoGearTest.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.usfirst.frc.team708.robot.commands.autonomous; - -import org.usfirst.frc.team708.robot.Robot; -import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightForTime; -import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegrees; -import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegreesAlliance; -import org.usfirst.frc.team708.robot.commands.intake_gear.ReleaseGear; - -import edu.wpi.first.wpilibj.command.CommandGroup; -import edu.wpi.first.wpilibj.command.WaitCommand; -import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; - -public class AutoGearTest extends CommandGroup { - - protected void initialize() { - - } - public AutoGearTest() { - addSequential(new ReleaseGear()); - } - - // Make this return true when this Command no longer needs to run execute() - protected boolean isFinished() { - return false; - } - - protected void end() { - } - - protected void interrupted() { - } - -} diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java index e0d50fd..d1f95f2 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java @@ -14,7 +14,7 @@ import org.usfirst.frc.team708.robot.commands.feeder.SpinFeeder; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Off; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Out; -import org.usfirst.frc.team708.robot.commands.intake_gear.ReleaseGear; +//import org.usfirst.frc.team708.robot.commands.intake_gear.ReleaseGear; import org.usfirst.frc.team708.robot.commands.led_out.SetLED; //import org.usfirst.frc.team708.robot.commands.led_out.SetLED; import org.usfirst.frc.team708.robot.commands.shooter.SpinShooter; @@ -36,51 +36,37 @@ protected void initialize() { } public OneGearCenter() { - - // go to lever - // addSequential(new DriveStraightToEncoderDistance(24, .3, false)); - // addSequential(new DriveStraightForTime(-.3, .5)); - +// go to lever +// addSequential(new DriveStraightToEncoderDistance(24, .3, false)); // target lever -// addSequential(new WaitCommand(1.0)); +// addSequential(new WaitCommand(.75)); addSequential(new RotateAndDriveToLift()); // place gear on lever and back away -// addSequential(new WaitCommand(0.5)); -// addSequential(new DriveStraightToEncoderDistance(6, .4, false)); - addSequential(new Intake_Gear_Out()); addParallel(new Intake_Gear_Down()); -// addSequential(new WaitCommand(0.5)); -// addSequential(new Intake_Gear_Off()); -// addSequential(new DriveStraightToEncoderDistance(5, .3, true)); //put this back in!!!! -// addSequential(new DriveStraightForTime(.3, 1)); // get off lever and go for some balls - addSequential(new DriveStraightToEncoderDistance(15, .3, true)); //put this back in!!!! + addSequential(new DriveStraightToEncoderDistance(15, .4, true)); //put this back in!!!! // turn toward boiler addSequential(new TurnToDegreesAlliance(.5, 50, Constants.COUNTERCLOCKWISE)); // target Boiler - addSequential(new WaitCommand(1.0)); + addSequential(new WaitCommand(.75)); addSequential(new SetLED(Constants.SET_TARGETING)); addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); // unload balls addParallel(new SpinShooter(8)); - addSequential(new DriveStraightToEncoderDistance(50, .4, true)); -// addSequential(new WaitCommand(1)); //this work? spin shooter up for x secs - +// addSequential(new AutoFireBalls()); + addSequential(new DriveStraightToEncoderDistance(48, .4, true)); addSequential(new SpinFeeder(6)); //then shoot addSequential(new StopShooter()); -//this is a test replace with 3 gear -// addSequential(new TurnToDegreesAlliance(.6, 45)); //add alliance direction -// addSequential(new DriveStraightToEncoderDistance(110, .4, false)); - + // get gear 2 // addSequential(new TurnToDegreesAlliance(.6, 125, Constants.CLOCKWISE)); // addSequential(new Intake_Gear_Down()); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java index 2f53d0d..5a216e1 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java @@ -2,7 +2,7 @@ import org.usfirst.frc.team708.robot.AutoConstants; import org.usfirst.frc.team708.robot.Constants; -import org.usfirst.frc.team708.robot.commands.intake_gear.ReleaseGear; +//import org.usfirst.frc.team708.robot.commands.intake_gear.ReleaseGear; import org.usfirst.frc.team708.robot.commands.led_out.SetLED; import org.usfirst.frc.team708.robot.commands.shooter.SpinShooter; import org.usfirst.frc.team708.robot.commands.shooter.StopShooter; @@ -30,18 +30,13 @@ protected void initialize() { public OneGearLeft() { // go to lever addSequential(new DriveStraightToEncoderDistance(70, .4, false)); -// addSequential(new DriveStraightForTime(-.3, 3.5)); - addSequential(new TurnToDegreesAlliance(.6, 40, Constants.CLOCKWISE)); + addSequential(new TurnToDegreesAlliance(.5, 45, Constants.CLOCKWISE)); -// addSequential(new DriveStraightForTime(-.3, .5)); -// addSequential(new DriveStraightToEncoderDistance(10, .3, false)); - // target lever - addSequential(new WaitCommand(1.0)); + addSequential(new WaitCommand(.75)); //was 1.0 addSequential(new RotateAndDriveToLift()); // place gear on lever and back away -// addSequential(new WaitCommand(0.5)); addSequential(new Intake_Gear_Out()); addParallel(new Intake_Gear_Down()); @@ -49,10 +44,8 @@ public OneGearLeft() { addSequential(new DriveStraightToEncoderDistance(42, .4, true)); // turn toward boiler - addSequential(new TurnToDegreesAlliance(.6, 85, Constants.COUNTERCLOCKWISE)); - -// addSequential(new DriveStraightForTime(.3, 2.5)); - addSequential(new DriveStraightToEncoderDistance(50, .4, true)); + addSequential(new TurnToDegreesAlliance(.5, 85, Constants.COUNTERCLOCKWISE)); + addSequential(new DriveStraightToEncoderDistance(47, .5, true)); // addSequential(new TurnToDegreesAlliance(.5, 30, Constants.COUNTERCLOCKWISE)); @@ -64,8 +57,9 @@ public OneGearLeft() { // unload balls addParallel(new SpinShooter(8)); - addSequential(new DriveStraightToEncoderDistance(50, .4, true)); -// addSequential(new WaitCommand(1)); + +// addSequential(new AutoFireBalls()); + addSequential(new DriveStraightToEncoderDistance(48, .4, true)); addSequential(new SpinFeeder(6)); addSequential(new StopShooter()); } diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java index fa172cf..2ed71f7 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java @@ -57,10 +57,10 @@ public SixtyBalls() { // unload balls addParallel(new SpinShooter(8)); - addSequential(new DriveStraightToEncoderDistance(50, .4, true)); - -// addSequential(new WaitCommand(1)); - addSequential(new SpinFeeder(6)); + +// addSequential(new AutoFireBalls()); + addSequential(new DriveStraightToEncoderDistance(48, .4, true)); + addSequential(new SpinFeeder(6)); addSequential(new StopShooter()); // go to lever @@ -71,12 +71,9 @@ public SixtyBalls() { addSequential(new RotateAndDriveToLift()); // place gear on lever and back away -// addSequential(new WaitCommand(0.5)); addSequential(new Intake_Gear_Out()); addParallel(new Intake_Gear_Down()); - addSequential(new DriveStraightToEncoderDistance(15, .4, true)); - - + addSequential(new DriveStraightToEncoderDistance(15, .4, true)); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java index 1039b8c..111bb58 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java @@ -15,7 +15,7 @@ import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Down; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Off; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Out; -import org.usfirst.frc.team708.robot.commands.intake_gear.ReleaseGear; +//import org.usfirst.frc.team708.robot.commands.intake_gear.ReleaseGear; import org.usfirst.frc.team708.robot.commands.led_out.SetLED; import org.usfirst.frc.team708.robot.commands.shooter.StopShooter; import org.usfirst.frc.team708.robot.commands.shooter.SpinShooter; @@ -33,18 +33,13 @@ protected void initialize() { public TenBalls() { // go to lever addSequential(new DriveStraightToEncoderDistance(70, .4, false)); -// addSequential(new DriveStraightForTime(-.3, 3.5)); - addSequential(new TurnToDegreesAlliance(.6, 45, Constants.COUNTERCLOCKWISE)); - -// addSequential(new DriveStraightForTime(-.3, .5)); - // addSequential(new DriveStraightToEncoderDistance(10, .3, false)); + addSequential(new TurnToDegreesAlliance(.5, 45, Constants.COUNTERCLOCKWISE)); // target lever - addSequential(new WaitCommand(1.0)); + addSequential(new WaitCommand(.75)); //was 1.0 addSequential(new RotateAndDriveToLift()); // place gear on lever and back away -// addSequential(new WaitCommand(0.5)); addSequential(new Intake_Gear_Out()); addParallel(new Intake_Gear_Down()); @@ -52,25 +47,17 @@ public TenBalls() { addSequential(new DriveStraightToEncoderDistance(10, .4, true)); // target Boiler - addSequential(new WaitCommand(1.0)); + addSequential(new WaitCommand(.75)); addSequential(new SetLED(Constants.SET_TARGETING)); addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); -// addSequential(new DriveStraightToEncoderDistance(40, .4, true)); - -//drive to bumper -// addSequential(new DriveStraightForTime(.3, 1)); -// addSequential(new DriveStraightToEncoderDistanceOrTime(50, .3, true, 3)); - // unload balls - addParallel(new SpinShooter(8)); - addSequential(new DriveStraightToEncoderDistance(50, .4, true)); + addParallel(new SpinShooter(8)); -// addSequential(new DriveStraightToEncoderDistance(1, .3, false)); -// addSequential(new WaitCommand(1)); - - addSequential(new SpinFeeder(6)); - addSequential(new StopShooter()); +// addSequential(new AutoFireBalls()); + addSequential(new DriveStraightToEncoderDistance(48, .4, true)); + addSequential(new SpinFeeder(6)); + addSequential(new StopShooter()); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java index 7e090a0..f15c4b1 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java @@ -32,13 +32,9 @@ public driveDistance() { addSequential(new WaitCommand(2.0)); // addSequential(new DriveStraightToEncoderDistance(80, .4, false)); -// addSequential(new WaitCommand(2)); //this work? spin shooter up for x secs -// -// addParallel(new SpinShooter(8)); -// addSequential(new WaitCommand(1)); //this work? spin shooter up for x secs -// -// addSequential(new SpinFeeder(6)); //then shoot -// addSequential(new StopShooter()); + + addParallel(new SpinShooter(8)); + addSequential(new AutoFireBalls()); } diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java index 24e8827..3cd2928 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java @@ -1,47 +1,47 @@ -package org.usfirst.frc.team708.robot.commands.intake_gear; - -import org.usfirst.frc.team708.robot.Robot; -import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistanceOrTimeOrGear; -import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegrees; - -import edu.wpi.first.wpilibj.command.CommandGroup; -import edu.wpi.first.wpilibj.command.WaitCommand; -import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; - -public class ReleaseGear extends CommandGroup { - - - private static final double driveStraightSpeed = 0.4; - private static final double driveStraightTime = 2; - - private static final double turnSpeed = -0.4; - private static final double turnDegrees = 90; - - // Called just before this Command runs the first time - protected void initialize() { -// Robot.drivetrain.resetEncoder(); -// Robot.drivetrain.resetEncoder2(); -// Robot.drivetrain.resetGyro(); - - } - - public ReleaseGear() { - -// addParallel(new Intake_Gear_Down()); - addSequential(new Intake_Gear_Out()); - } - - // Make this return true when this Command no longer needs to run execute() - protected boolean isFinished() { - return false; - } - - // Called once after isFinished returns true - protected void end() { - } - - // Called when another command which requires one or more of the same - // subsystems is scheduled to run - protected void interrupted() { - } -} +//package org.usfirst.frc.team708.robot.commands.intake_gear; +// +//import org.usfirst.frc.team708.robot.Robot; +//import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistanceOrTimeOrGear; +//import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegrees; +// +//import edu.wpi.first.wpilibj.command.CommandGroup; +//import edu.wpi.first.wpilibj.command.WaitCommand; +//import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; +// +//public class ReleaseGear extends CommandGroup { +// +// +// private static final double driveStraightSpeed = 0.4; +// private static final double driveStraightTime = 2; +// +// private static final double turnSpeed = -0.4; +// private static final double turnDegrees = 90; +// +// // Called just before this Command runs the first time +// protected void initialize() { +//// Robot.drivetrain.resetEncoder(); +//// Robot.drivetrain.resetEncoder2(); +//// Robot.drivetrain.resetGyro(); +// +// } +// +// public ReleaseGear() { +// +//// addParallel(new Intake_Gear_Down()); +// addSequential(new Intake_Gear_Out()); +// } +// +// // Make this return true when this Command no longer needs to run execute() +// protected boolean isFinished() { +// return false; +// } +// +// // Called once after isFinished returns true +// protected void end() { +// } +// +// // Called when another command which requires one or more of the same +// // subsystems is scheduled to run +// protected void interrupted() { +// } +//} From 30a6ef39fe706d0c8a4d949b16c7be22d36f7b39 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Fri, 17 Mar 2017 13:21:03 -0400 Subject: [PATCH 57/69] added auto gear up --- .../frc/team708/robot/commands/autonomous/SixtyBalls.java | 2 ++ .../frc/team708/robot/commands/autonomous/driveDistance.java | 1 + .../frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java | 3 ++- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java index 2ed71f7..47b76bf 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java @@ -12,6 +12,7 @@ import org.usfirst.frc.team708.robot.commands.feeder.SpinFeeder; import org.usfirst.frc.team708.robot.commands.intake_ball.Intake_Ball_In; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Down; +import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Up; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Off; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Out; import org.usfirst.frc.team708.robot.commands.led_out.SetLED; @@ -67,6 +68,7 @@ public SixtyBalls() { // addSequential(new TurnToDegreesAlliance(.4, 20, Constants.COUNTERCLOCKWISE)); // target lever + addSequential(new Intake_Gear_Up()); addSequential(new WaitCommand(.75)); addSequential(new RotateAndDriveToLift()); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java index f15c4b1..5254eba 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java @@ -6,6 +6,7 @@ import org.usfirst.frc.team708.robot.commands.feeder.SpinFeeder; import org.usfirst.frc.team708.robot.commands.shooter.SpinShooter; import org.usfirst.frc.team708.robot.commands.shooter.StopShooter; +import org.usfirst.frc.team708.robot.commands.autonomous.AutoFireBalls; import edu.wpi.first.wpilibj.command.CommandGroup; import edu.wpi.first.wpilibj.command.WaitCommand; diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java index e9ad31d..3e7e3f6 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java @@ -8,6 +8,7 @@ public class Intake_Gear_Up extends Command { public Intake_Gear_Up() { // requires(Robot.pivot_gear); + this.setTimeout(.5); } protected void initialize() { @@ -24,7 +25,7 @@ protected boolean isFinished() { if (Robot.pivot_gear.isFwdSwitch()) return(true); else - return(false); + return(isTimedOut()); } protected void end() { From d203f9faf6087c165ac0991557114e4a63912c20 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Tue, 21 Mar 2017 20:03:59 -0400 Subject: [PATCH 58/69] after round 2 --- .../frc/team708/robot/AutoConstants.class | Bin 2266 -> 2262 bytes .../usfirst/frc/team708/robot/Constants.class | Bin 3333 -> 3333 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 6980 -> 7249 bytes .../commands/autonomous/AutoFireBalls.class | Bin 0 -> 1081 bytes .../commands/autonomous/AutoGearTest.class | Bin 831 -> 0 bytes .../commands/autonomous/OneGearCenter.class | Bin 1998 -> 2277 bytes .../commands/autonomous/OneGearLeft.class | Bin 2118 -> 2375 bytes .../commands/autonomous/SixtyBalls.class | Bin 2238 -> 2497 bytes .../robot/commands/autonomous/TenBalls.class | Bin 2045 -> 2324 bytes .../commands/autonomous/driveDistance.class | Bin 1151 -> 1073 bytes .../DriveStraightToEncoderDistance.class | Bin 1863 -> 1900 bytes .../drivetrain/RotateAndDriveToBoiler.class | Bin 2201 -> 2200 bytes .../drivetrain/RotateAndDriveToLift.class | Bin 1812 -> 2014 bytes .../commands/intake_gear/Intake_Gear_Up.class | Bin 1164 -> 1177 bytes .../commands/intake_gear/ReleaseGear.class | Bin 1021 -> 0 bytes .../robot/commands/shooter/ManualShoot.class | Bin 1603 -> 1319 bytes .../robot/commands/shooter/MoveHoodLow.class | Bin 1035 -> 1035 bytes .../robot/commands/shooter/SpinShooter.class | Bin 1244 -> 1244 bytes .../visionProcessor/GripPipelineLift.class | Bin 3517 -> 5858 bytes .../team708/robot/subsystems/Drivetrain.class | Bin 7283 -> 7048 bytes .../robot/subsystems/Intake_Gear.class | Bin 1388 -> 1531 bytes .../frc/team708/robot/subsystems/LED.class | Bin 1856 -> 1993 bytes .../team708/robot/subsystems/Pivot_Gear.class | Bin 1689 -> 1689 bytes .../robot/subsystems/VisionBoiler.class | Bin 9320 -> 8428 bytes .../team708/robot/subsystems/VisionLift.class | Bin 8196 -> 8366 bytes .../frc/team708/robot/AutoConstants.java | 28 ++--- .../usfirst/frc/team708/robot/Constants.java | 10 +- src/org/usfirst/frc/team708/robot/Robot.java | 16 +-- .../commands/autonomous/OneGearCenter.java | 13 ++- .../commands/autonomous/OneGearLeft.java | 11 +- .../robot/commands/autonomous/SixtyBalls.java | 12 ++- .../robot/commands/autonomous/TenBalls.java | 15 ++- .../commands/autonomous/driveDistance.java | 16 ++- .../DriveStraightToEncoderDistance.java | 5 +- .../drivetrain/RotateAndDriveToBoiler.java | 9 +- .../drivetrain/RotateAndDriveToLift.java | 5 +- .../commands/intake_gear/Intake_Gear_Up.java | 4 +- .../robot/commands/shooter/ManualShoot.java | 16 +-- .../visionProcessor/GripPipelineLift.java | 98 +++++++++++++----- .../team708/robot/subsystems/Drivetrain.java | 26 ++--- .../robot/subsystems/VisionBoiler.java | 91 ++++++++-------- .../team708/robot/subsystems/VisionLift.java | 43 ++++---- sysProps.xml | Bin 6190 -> 6190 bytes 43 files changed, 242 insertions(+), 176 deletions(-) create mode 100644 build/org/usfirst/frc/team708/robot/commands/autonomous/AutoFireBalls.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/autonomous/AutoGearTest.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.class diff --git a/build/org/usfirst/frc/team708/robot/AutoConstants.class b/build/org/usfirst/frc/team708/robot/AutoConstants.class index 13ba8a43005020df5e33eeea7d50067a791fd1b2..91f5be5f58716a4a67507e8c81af37fc87b48cd3 100644 GIT binary patch delta 749 zcmYk4%Su8~6o&tG>}W(+!+|smx|)_6MK?N{#iwGGgzGOU;n>0?6p4{-WxnGKMzj;!Z@pf0|zb~x^Q&idAI8bRq6Ry zEE&wl?Sz9p^+K_-TInh&p_0chlt0gq3ezOLsRDV`6?t5rq2i|=>73lE$LKQkq*|3T z_9>yBjVAKleHn_{jtR9^)=uZ6Ry>xn^7dFIP6#!bbVN$0>aya-v5pNjZ7x!`x;DS9 zW_Zy869gyEHqgr4E?DaC^BGn+=Fh5 byWQgIWEuQ?x4Bjq|4r;*mx-{))xiEQu|`tc delta 791 zcmYk4&q^Cn6vn?h=}bgg@ef(JaMw!Wzi1MRrKRaL8RDo(bY`M48pmq?SX*t?2goy& z3oR9QUAYtsg)aI4K7gPgRQeQd#B&ppoVz&8?>pajF5EL0Jy$)E^SeKP0i3{ZFj)VE{RTX1r;BiCM3CHtgA!7%AG054{wO);# z-55$lKMQopvf~9AnYUdTIN1(-5qMPcrn$7Qjvt(aw(v&Hm=%#wKh4{TLG&XE69N|9 zV<1L6%vkqF7{}DL6|W^oO`^Az8YfOM*8NGAdP+RS_!;qY#xICpGENgqHgB3Z)8-oV zg;^G`iF1r+h-cdY%n{Es&J!1yzev2u`r7X@)_$+$uNlx6_{^XKCB{0i)Cw3_CSGBE z?XNJ_{#C5CUbITQ&Nv|6XmXVn^_qlDHlUB90<>JJZ)uhBIs@j=Z-~?SZr@S0NCy4r U@2Nhlf1B9G2O@zTss=vZ19~1{KL7v# diff --git a/build/org/usfirst/frc/team708/robot/Constants.class b/build/org/usfirst/frc/team708/robot/Constants.class index f6074707b81eba619e4f3e1dd1885e07b08960fd..a263ffef0e1283118ba0726e184169da2d9c1302 100644 GIT binary patch delta 429 zcmZpbYL(ic$;ikxS&LDY@%d&CMpH({`pI=nW~|H%3=AThw=lUgPGYeE^B5=Fu*htV zWszg8w`7oHuwr0kU}RteDq~`>2J&r@_;x_P1A`1)-Vw-mLgG6E`7TI&S0LXFiSG{N zdm!;a`aKc+dIm3`fH#tbK0v-765k)l4@BYz0r??F{7@i29AO|s1dtzzB+m=vN1@3_ z!}-ii4Dyp}xbzK^fXb2?65;*?@l(+FsYv{Y$#=Nw1wodTB8etV&f)H7Oq%?MTOKUe S&d`Q1ak36iJy329Pb2^ftt)u| delta 429 zcmZ9{xeftg5C`y?wX0YZ5)E^oiMy@lP^NpW%Xi}lY4z|f1<}SI%+$Rs1hvd<3 zA&kirmb=K)zkFudCc#|n)mYpdTfx%$)AX8IBX5|;;;HIxvunqyn%FunsEM~D^v%w2 OvNmcW>eMN_Ij0|td@C^k diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index bdb36510c2f4a32c500716fbec5927007beddc35..c573523ecd57337aa6c3c3ee57de2f463de17758 100644 GIT binary patch delta 2798 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 YBkx|;6Tl9BCgooo!j&`uS9Om64l_y^KmY&$ diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/AutoFireBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/AutoFireBalls.class new file mode 100644 index 0000000000000000000000000000000000000000..bd1feb4b2a0e8fc10ca17079b15e52cb2664e9da GIT binary patch literal 1081 zcma)4(M}UV6g^W)3u}Q|D2mXxl&K65eBzBX%d*;rbbI;7ZKYo4v4&X619OQ93i#wU!SCpV9v-9(V zeLgx!Vb#F`?q+c>v%56hb});zEbcp)v%CjcJY;ZGpduxF^!{%(j1DGPnkkpyTWe@qwM-DnT|RtWZ0`~bHd}WtxOp4wsCnRMeoVx7B{-3Bkt;6 zPXu1bMI7ls_jDZcJ%Tl5Q$*r(1k~*tG+r<39DLRIMJ{37Hd~*N|^x8Q9Swl~R2oo$X}2O4V``t2CYYWG<(X z#$^=1aD~?E^fLQ?rjSCBVkSw<<0|3Ya1)ETW`D8`rf7*>%p`l8l>u1g8&XF_OcgPm z9w7S#GnAR7j59!PxSBf}V4mQ4okdKO&H~xVlYS9vRFM-pue*6xH;wC9KC8PyUu!s( m{$%5rrto_?z6Y zfkYF206)rjr!D0zAa*f#?#G-n=iYn$_xBZmH&{(j#ZnEA6GT`_@Bqs-tkm#?AyI{L zN@VJ%WT>pIcNyXxol>ySQHA{E^PV&ZqL)#o)zN*Cb%jwO9w%dWtSrO(jy6Z!+e2ln z$lwKo_4&i^IR0E<-$8%=v;ftKajg8g*lMcZ822e1ufe_lielP9?Nv7 z=_^@TkUy&mCyns~7b?lV_NFg)RnXQflf60-KSUk#m|@tSQWsH+Q~B+P^zhFzlfufN zt&XR7Ha*Kd-7&Of>iO9~@zH?D%T({=W-NSXG@d=9{eWRkr0Kr=?qv~HL*TW}RPe3! zE?&@ftF(2{9ixUBFg&DagANPloJ@p-Y;~AuVwU{+s7Uu*cob$wHUK}OGORV)mtgHb zh`wB+a)J1kXP#aFE&A>e7O+_2YmE6~$~VS*FX;|KqROveOG;Ks$Y_FWPL$l+!fFY~ SCcxJJfzR&%GU_7eTKorN$*JK0 diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class index e62ed5aef10177ab8478c2a3e82248ee67d58d50..e565cfbff82de4f7cb60c1a4a7fec74bf91071c3 100644 GIT binary patch delta 977 zcmZ`%&rcIU6#iy+yHm$XTT+D>34%fkl!{ceTBS=V^oI&nX|+_XKjOgyiP4h>Qe$E~ zc`)NeV`98}@zPDyXyVa>@!-YCfs02I{{rKi4lOn4Haqj)_r34U^n3f+|07uc^!v?w z0Ecj0AdWQ0tbl=xz$E54<~gzg9^^Rk0$#-z1ccg83i#B1N}vmARezde!FFQQjUGGo z?Wua62?VjoQM6O*O#-%4befSs4{B#P&T^cyovLO9`jFvRvYovxU{C=i+sSFbb^% z5nAmgFoXofK272%j;SI#a6`xnG!!LV8+E}(-@>T)U6>766niQG+XZi+t}<`M#Wqa{ z3b*UfN8t_~c2VeWAV9UjN(kK{ge(`kG}%K)ZwR{$7kf1F_euI7bxt2u_PZF+RfCl6 ztGgJ|jfW`>tHvRWxER~oDM|(7E)HmBg06Is!cA8S=%#-gCi9{QV4Oah7$P+GIQ^!{ z&^&opC6`uk0(S{{fD~jMX}rW78komNWbp+#d?$L-+O-X9EgUDIo=KE;WvyYpQftRh nRy&kNTRGht%9d%?NUz6vzeCB|%G7_AZQ;Xz2pOE_#b*8hyeN{q delta 882 zcmaiyyH6BR7{z~gcJ>Zl(1p0+8RHUpEYC$(9-`}xu)I-G1hTPE5^0PH4VGq2w4pIE zQ`k#up$(I0qOrBGv9L2V{uvs-I|Iwc#CVgrbG~!FGxy$e=V#N`ROQR>_aA|aY#0WZ z^tfzrm^Acr#iL+ITJoyFi^-ygul-@M$k4@a`Dhpn*F2_l@gNe={z42qrVWjhJZ20n z%zDfj+L-rP@L1FZ|8Cr8=&<6F_A^IB#uCfgZ#^QqEOFhCwOhL3ar5Pm1D$6`F&k_; zy}_?Ueem5$*EO)hEya|O#b7A0q;K1DrP}j0krCUfV(yU21UY9gk>^hESq+P{rWmzS z^P{Z?_qHGJbwBwj=+TAXq0Us?Y^hJ$-0W1}I-L^a zKy-j4E`toAu<2P&+2@^14mp{1M07DCxFHrf&js5g3m+PlqAt?*`a@Lz2b^+9Vjovv zQlQ?iMA#Etx6cWoO*u_{nv-rwDsF5PrYX&7C!{%MTFR-A))=>ybx3=RJEZeW$l18c zNYxo~F8*$NS`R_~Etud;q Vas2eSH7` diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.class index 5ecfbd4dc6c789f3ac1bd302d9e05c884bd56705..3bcefbf46cd9df1802c244e22d1252b0fee1cf73 100644 GIT binary patch literal 2375 zcmbtW%W@k<6g_P#Gs#4hg`)%$UJ0pSSx!8mVpmKY$0JLYV(YY@(`A@B!otvdfYcAHag*_KYQqszec>s_8y`yYIPo`rPi(Z+|`c z6~Hv^8<@kYj*m6#&H-5fZQi2_zAruT;$0s^&YYWfAS!h=NAVfOW44lBajynbt zxT~XRU=$@C8wQe!vuxmu>NgFHss2*~XR)dnE1I>`q1&)Rq*==c5m@*=?4e^z$34xu z7Yz+uROFv&*13)$tqh-Q)~(2(S&7cf6u!{0tyyCo!?arZrGZ(Mh^?c_U$~p~33c}&HgI1NhCA-=r%V}J_^g&H3kWB#u27#0fB-7y2NAzaTl z8*a_?x!t;UW!7|MRr+R4wpzAR_e?wRr6XH1@XR%bFLT>1@P8R+w zr=m9)X8JGh?sb#bw`Jg)MeY}ta>{v!VS?8K^WnZQBdG{AMRl(ukhy6KKO2dq9CjHp z14bit?E8Fsha@#uBCO=y-q>fz56ID@!(HjyKF>JyP>_-=h=$LwI3Ur>l35FgB>O)} za`K@Qhfp!1tT3~D2>-)d`EtMeR`UbKeeo5Lu!xs6)d)skTSe)gw=`N21pG)zh0EN?Di${i2Jq~uV`;JuB=#D5R|I-6qhnUbRc@3NEYK&l=eW_` z00I)Y#*K~!5RyPaARB@u07;2lo*0$JMZ!?tlTN5 zH`doz?yb5I!xBTzOlnc{rR^2Jfkj62q}K1hySBQ#@t{07w^p9cW@P0}hKYKm+k9-l z&&FioR@HHcna{cRmOYRP&eKt%WUXut*vaWpFr1;;0R2qiI8mU>qmrCLs z&dVZNu1;hnIBU6m^PnD%v{`81hV#^Wc#0OhD)do!ScQHHk8GoZ3bdjRN6o74t8{7> z+EiYG$9-_vE$9ky6LO-d+Ee5fdR3;6GAAwct66|%K??)F#sAa^Q9f*8P*q20A43$% z(^k}R^Yl!BE^?)t9!M_&^o<~h1j5MUGzu8PZ9*QAIZtpAn~38zWw(&RN2Ku;S?nN( z9~f`3Y`<=q9T$kBybjSQz1D1RWM64(3pV7= Gko*PRK!=S0 diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class index 00448c3c192d8bbc20c04e7a4ab906554a15de0d..88cfe27cb3a87283d851b0e5f6fbc8d08751fefe 100644 GIT binary patch delta 931 zcmah`O-~a+7=C8k&fv6(tu|PJ12uty6l0-5T0gqg+E&U(`Dn2P5!9jxDAB|iFXiCf z;GWcriB~Vi*e04Z;pzdyQSK&QJm?QFzSCt}4jMPv*>|6hnfHCB=Gi_P`uzK24L}$h z5;2SmOmIE3NeIAWUtg%_rG$p8#05+WOl^g{n&z2aRhm;CpYWA z0<#i6xX5*%g#^_O zOA@D5^EV_0FwSG&O;+Hh#E>FxNeruRNg_%D{gfqG7P!6jbI+DS+}L3`X9{;*SixO} zl(EYOj72TZQ&?q0@3MfgqjivU&G?}$6THrluB&QxxADsMkl$0rJV9CK#DkfY^^yxI z+&4V-C(QB-Bkk}wavKauWqn_>KVl^Y(UV9N6TNx(Y5G{bI|uC05eLIX`tPHcsrMZ% z8ZObw>p&+GRJ%+PmyuK=I(Fa4Dv*j}VdEKp)7@S0BH)F??nQ4EeHFBv`~+X&a23bR zI!JK`DwbYJMwm3VH(F?Ash+;hM4obNmLW7qnQ?5Ce^*MTu^8OABN zOlhyQA`#H}uTSjv)ZkDw9AVn!+-f%2C>gdfqrF_K4wtg_wg=d-lZy5VD=pV$){vs& zQZ?-1yvv-+1?|lrI3}C93XtF!N zLlPbi;E2F%07nHLUZYQ@*tuivxowhjB!y6qXxYau8hxbc7hV~P46{gHjw_|J9fX-{(w=+1X!+d24I{ diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class index 9bcdd7fbd29828168dee13b9ee7da8846a50235a..2d7e7a54dad5a10b89314b5b09e77f8fb5bcf003 100644 GIT binary patch delta 1007 zcmah|O-~b16g_Vo-ji1XwQWoVKZ=%*mIw&6QbjwhrJz(P-xgFXwwNYG4WbJZGyDZI zZZvV{#*GOvVG>Q;nHYb7iKYuz{sOmt+}E+xM2$0;=I5G9{*gef*a}0Y9ufr(TI$|MF}@92~0|O zkQJDc@F~q{iT!Gwk?^Z^R-zSYrD)D^BUaOkI)T8vzyddxoK&J+XH^xUfg*BE5!R%xS@FP9z^*;eHpk0ZvAwYIeZtHJ`V zIF_4m9eIYaDi+fcL|I{oP}=1!7Yoa`?``zW6gM)XsV2m6!+NOo5~aY9P!wx*k6)X+ zW4+Km@S@TgCp2j_>UY_ERk6YjH&3q5mez`@eU)KYwY_|%yO@~_%`@oTDYdxrg+eyJ zo-db+Wd_lmN-Yvjc0_4Z>S%zDVZ^|2in1QMn7X#Lo9uf_ zMtvfizQ73LE4BSVvhE}q<~XUtpc;+9ni5{K?s~e;rD@c-$(rl`9@oTgjcm8^-2WT1 O7-{{>pw(ZZVe}`r#hsx5 delta 846 zcmaix&rTCj6vlruZSUZ;3AJeqrV=QKwv<0&(F!UZ3YHcTT9Ha+VVYpvbfpha6W1=x zxKS6rfG&&)lStxH5+8uX#GNnT11Ry#O#fhvaguxQoO8bKyXSoOMeJ99>&wx{PrxiY zCeth!32A}N1xe5@zE1? zhe`SE4O1Z6lFpMd^r*b=7%3TfR^B2nCalUdTM|8#xgK+c7IQqKz-yLxM~QvPd=^yC ziG#KiK|#;?PKcJ~IiUyM%1y^TT=$qQ-$cDjo$r|VZ}&Hk-KlknSN~7k{+nn@ch|hm GuKxxiaCGbd diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.class index a6757db0c89e01eb241890b86488d1898379bb20..020854d6eba703c8400c303dc545ae9ac371b9bd 100644 GIT binary patch delta 518 zcmah_u}%U(5PiD`x5s)B#1l_cP80PJ-O25IF(0GX^ zTAKI=c7BJ2I?EcoLgOSeJF{=z&YS(TM%K~G$NeLKUDPBp@B~)OCe_L$IEoT!tO~42 z2!)o+=CMZ2z1J&c*AgkL3v39KgWEU5MK%oB_LPf?jZOFr`@wrT-#@?Xp7lB>z3!lX zsPhBLJFScGnYD;j4L$xeOp^#@NhC0XEEr~~s**G1BMKZ2MRR=NVvcfKgUDfCHGw2h zRK!zQW31svVEzMm+kp`wc?Xj!(T-s0G(~`PFtiDsrmLSpInn~;NzW2JTfj0r)KQ8J zZhQ|;V1fGd;2NDuF*j~hj7hGL~U`0@A3k!Vw#~Wg4lc8m)^h|?YgqHv+u}z$)#BvxU&SWfF;~!cyYpd zlC-u@q35T2)==wVn|`F;FVKqLVOTk#?s5N#q4Mu~hP6D?D(+J=OTO*tI1hrlcoU1z zHk&j`wG*iv zA(SUHIt7;^1&SPs7b!bPEJqa;F^f4=Q;Ft>iR|g@Fj1Ah)?p_5$*wrGxRhdM4w%;u ZEFN3i{S=WM5a<3+eDoJ0!+hfF#vdb(_%8qe diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistance.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistance.class index 9d6616c07b0d6b5927b97cbac3b1c88eb18c446f..202305d2f9c4b65d627c6ced63bdf58219d02ef6 100644 GIT binary patch literal 1900 zcmb7FT~ixn6n-|@%_dEy)(PhHTv36zd<+ zj^lN2ywMSu@uEM#AEkZHn@z|tP8>6n^PczPJkN8^d*0-)zyEv-;3l?A%;izUyqKGL zOrVmZcPoe6xFc(KW%{|81u^&X_yUV!?u%J6@j%8e#Vm`dO3*_SD;kQi8}52>)sJGg zRrfS#RSlUih~1cz!gA1(jdD za&=~#!*b9d&S=eVdF!419WUH+cbZ%ouLX6tx$TC&%#%eu-t!|38?_+Zbvn^=Ka67M zd02O1&)vU$QM2$^4z7!N0$an=;avZ}$`+oAo^P;WVN+;kg=X4o zbew~>?{u$|Uen)s(Yr)vxqF!`&~P~$a`mj~$(?Jc{70iiot@}a6npzow?9;?NH2um zcO5_U*lX9ywc+|Udl(DS1M|a0{wtvdi&S2m^d#GDa5~3Fq~@!y!hrss+YD5zXqe!` zJk`iN&3>!$VMTG!#$~?a2|h_3DYlG^&hEoN znxko#MvsyDO&y$~%`*^$%rN*ey|Zd=;$vLli~;yW(FoXd0``cf4en*_(u{tL^l7y7 zjJlxErW9$mkCsi)M4re^E0I?dTtX2UsMyEQ?cyN}`*&oHU``sZF=m$z$vAU}+#8JA zr2{pi&DoR2A@U+3jVW52Nr7)cXU%eyJ;n-5a_1r?Nm^x!m_>=dw`C>L=1G$FMOOME zD~U+im8u$y0`XG+@UU*8oK9=N2;*nS+O6~&M=oMQNgq+xQnqkXr*TDjo!QR9g2T(4 zQ&OyMXd*?&r+wH3o)y>vq3l19E2fVydIH$J##;otI{;MZ16{*)hD#^3Ni9GQQSz^G zPDvZ%B>UsfF!eXk)4!gq{q#$3jUnCg7CD0dEhZLOl%)YWC!v!fxeFrd)hZ3_c`f-I} z&V`40hoZp20vEMtY?hD3qSRfd}kx48edMDd`U5~2{k6z`WZm{iDM ziosVniKN7uLJ8{%8@Quz0!f85!)ct6xT|oF8#m#HJH{h#i>ceVuke7&Gw{FsFp{F> z)GLijbNxlVCg42XeO4>htIsO}-jhmmZLeH=T&WkUjppuNnTqDLUlgz!&DuW3$fHNA zTQGPwMIO6?z%a!IQuL4=9g`zES6=1_eShWU%QA%BE2erpYBumk-&Lxc* zrwovo(BdpH$r9lwD_!U^PfML_>G?Q5{gh0NYMzn=`cV zB`A!{YVYcZ5jn8PkyZ=GVyRZ5%RRcRfOw1lrCq?q$izNbViWn?SGaGG(k=!liNAUa zX?=iYe(cs>ziZcsV)ocvhHPPl7BBS7%SSf(DjeA9Re>RTEdIHo@d2GYUg{Zx$2Ta^ o_8UEl?ayt|owOz9B8de%cZi|m3R^U8yGOx}JPG7!tbxn_07*Pr!~g&Q diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.class index a0817d34c093eab3812dbc6f8ab700a19ea2913f..4b3c3ceeaf98b08fc38ac0ff076b97121d49ddca 100644 GIT binary patch delta 227 zcmXAhu}%U}6hzNHcG(4<21tPHVyQxa01XMnR$?RpBvBfTzaV1lfy!R;8kUZJ8z7Ey;mr6p7JP@OSVj4i6J`l4oF!4zNNdpFLpqvWBWG)U3&LE&M!3?|%A(O2+Y*-_K K(ovIZIAj1l9w(6i diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.class index a1c92c28094d35fbcab66b9637042d269c6c796a..2aab09bdc614e1fab94acc0b7e56eae5e80e4a2a 100644 GIT binary patch delta 838 zcmYk4T~ks~6o#J-2TtIYEI%?T!_xTB2vV{F(?HA2KD1K%Bnv95!I|K$3;shi({R~6 zH`)x%bW!*Hh<-v-f1qh?V1RRG-o4IV>wVX|_c|YazxJ1Z{`>YFnC6X_Bb@ONBktua zQwF9DBn+H0Fk|4nfeRk|Tr^SAL@7g?b^rJyO7eKQ#GFaa+gvuOv`xm#0*hwzih--9 zX32}k&o!H6o9nypN7dSK0yZm}8{D+HrMbA64B3SvWM#eKcg<@%|P%7HwH7|Inc|};WZQ!+0ognZf z=Gb=Zv)<-&aYgil6|q+q7m|v}in7AP5-WO&`9dyR+Q~|h!V0Cs>y=MdH0PIF1c$t0 zrxA%kS=}h)bb_PuH6^Q()fM@Q+HI7b5cCQS5wN82q(r(|#2Dl9WpS!0Pzk#dNmK6^ zStM&q-Y3~Xg3>l5+=(v!SeqYg@vE-6vf&Tm5{!vToIaU~p9H6w>EcG)+z{cG`FG;d zn2+q?sB@q%^%=cKzg=h0sx|h8s`whgp(-w`=B!DzlaAvgJ!MiHWR?NaVmu?Jm%G|V zT5Tgjv~Udc3(8zt2IgA^q(^U^Vd>2+0Cz4xlSe-6Ko8$bSj`397E6>)^QH1m`q&T`IR z!C=u~$)IeoY;Zo!I2SBhvFM`FR#V^qNJ(GB8kekiIb_||ib2)3uS9CU8gebfg&x1q<=0b{hVjP;g!57pqfLrQurz|3*{V@P&`~Ek;K8^?@L{ z-_Az&h}*&8J=;s{t1m&{Yei>T)vT3V*x-E-Hr+O?JbP>YOQ z5-n2w%Zp`%UOB}MLwe}Evd#s@y+fSosjc^)pv72UrSk;4a;^<11YHG>8L9fr{sSYH BNgDtF diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.class index 8558afd3ab2420998517b1c2b15e4c1845747ccf..bcd875ae118a5166dcd15aa6427b058762e0f086 100644 GIT binary patch literal 1177 zcmbu7-%b-j6vn@$Th`q!E%Hymsvw|HltqzfBGDKO##qz{a$!u!c00g8x6|y*g8C-# z0^V?=7d7$12k=dN3FDdW+SbJ2h1+C$&di+OIp;g`{pZ(j0PbMPfs0EHa=2{c3ML#( z;%e{1AIJJT(cY9^ruB^(yVbjG?A(?Cb5&HCfkK(r+4DH8uxQh- z)M#g*ECRo_87dnxHPa@7SXO3%N-s`wIt8YX3!NI!UNOL+|uF*}o$EvNO z-_XkHWao&^q9|@Ced270I11Pr*ToP1nQUR-KlEMnA@5=iB@6Q|Zs4Yc1s5JhT`Z#H z;+8(Xt=%!?4Lthq9u3T}YU~{~xR)qJR*hHof9vC|COT2^lBrD|G7&2p$?Ri2nW?k$ zztT!mWP=|H)l%5N@;~MxJvK6L>L6cZIJJnyqwElAKsJd~)Rj_Bk4#go` z7fM9bfmEWQ2P}0{)fcg%x0s_BtG`~*jFG3cK;8;6WC2d;3ye~siJnj7^`M{DJe>hH zOp3KB`aF4VavK8}B+tZ9n>0_pCK(-oP6bNS38Z(O1`f9a-=-xLKO@tGd4d8NL&!E^ zeT3cGJg1qNR#5|#6hyI!GfcmW80q2{Q~n6uG0`)erS$?vsSe%jGy2yR^(UE*ku^_C zP1vWjm(Y`z$A~^oO&7b!{as{|EJt8^rYU$i1zVkJ6A2xX5||*-C%afyTZQp9Vkt#r YsUW8#VFH+@Y%^VeYzi=_eLbz>FCc;Gy8r+H literal 1164 zcma)4+fEcg5IwyY#+jW3|ARsqoOps`z(U>)e2^b^FgE1k!vkf%tPH(1rK>ZW= z0bh902TXkM1N;Mj##lYO?yknH&O=poP1mW@r|R2}FJA%NM&O}oOA0l3H2BFL}92nf`SZ z^6D0kr9C&3IkP7d=wqb`k2GKg9RUp7-pF5{*;o6wBeD_K5pQq zk0lg+TtboIQTM|C(12k^RFdGRE`x@W6jfz;|CfG2si7moRQFyltm-5|T^=fvs?D(S zj~VHttlw!PYC3qHmf6A3RF=E9`fHh;gk1%t?+!TA6;O`fxavMHf{Y6?PeiNFvBF-o?L zKi0$_qB}WchVo=DVwmvl8`sENM#V;_W8`zE*;7h1pnJ)KHp|5by>_$%w%7qnWDA5! w3)nu zZ|HCE#TN?-`tCpQ&xm)Dn698GU6{M~+?jLs?7j2t$EPmj(L61U!ZGd}C7NEszV^_m3om1;}CS&st-GYu8dleFI^y(8Np zSIUjJBg2-|%Hna+F+G(C)Elwx`f0MKbYlEH-SG{{{{6cTd>yxA<9FhIUq(UVtH{U~ zwA&@A{ihU?OlXVq6#@65^|C79sbrJWq-Wc}o}P20i1R5Xlh*0L*d4DKr@BL%%6cnh zw3heffh^)OW(C%cVe9e8qP4ZVoth#ls0yqeLn&iQphiLJzZxii)FaM9)!zTr8Gn7$ zp)DP!1D?DLf+oF8DYDaHa;5QK^p$E0*Z6L^JYNTMDBz^M5sY&17#A~mn(<5qml&5b z_$=!)qkEHImD}w-HB9mNLxTggHNP^4DLeW{6@! RT=+L}`42?FBe1@%{{*qD)(!vw diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class b/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class index 672c5a6beb5ab55acc9460117ff82a8287729afc..a6aaacf505801a9ab2aca4a3e9f3c9d3498e1d37 100644 GIT binary patch delta 626 zcmZ9JxlY4S5Jit26DQ`yU;<%Z!;*xs?+{1|kf1^01L&YZLO~R?5fv2@;2)r)p@G5$ z1q~e%zrrUV=9yq3EbG3pXXf6S``*-pv;Y3}@(L_cacE&M$q>UfBk{`pm;45YETbC6 zG>q%~ghP(J{w!#ibZ{x!OxaA|p4|D$IB0IgvzbxMGUuNeg=w34#R7|pC6*N{8dh1e zSyyaOQf#uNDB~%5@%#_t+W$1q{qtDbO`KLQj(4loBLge9=U>Ji)2>XapEw4hB-rLx ztV}H(&T9&GV$nytL`t&IL33B5P`?+K*N?(&~z|N_8z)nB@&Y52^IG+8Cv~v#S_V$E{7?poK`V|+0g3enj(wvc;Y7<7+?!w^ea_K{w64u$Qw z`k|fCU2f#(rxtYEN?Wd;vGRGt%sRSrY*{Y1^=-o}8o89*EifwMGZ?>RuI$h0QB)A^*2icW{pyXt2amroW z5GKRif6C?*)6N^m<#|U>RLrPev-Ly$(~L@S#NCu-8g@d+TxO^`)N%<1#qSD+nZ|*< z-r+XUOf^j7+c31`ty8{fS=24T(Jk5bt<;~?k-N{gr6?gqnnSz=VWtXPwpB34v(pTd zjUy)46NER>Fdm(!UUsOZ4_xbj!by}h4@IV~ib84IBAw$}1q{($?(^<<2u$`ijq)*= zrJ2#(9Qh9RjTQl1rBS6BbSQ`$xJE0jdImOSp8=L4v+`y~aVa?|@PMBx(2$vS(t$ diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class index 83695471cd67e79a6030537f68a3ece5921015f1..1db3096920368486918235316d415b315b32fe31 100644 GIT binary patch delta 14 VcmeC?=;qk)l!>u^^D`z@MgS;M1pfd4 delta 14 VcmeC?=;qk)l!?(~^D`z@MgS&|1hfDE diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class b/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class index 7f696265741025c3e241746bac0f75c4b6adf0d8..31f9f6741700be04117571912bd77a00ba193e45 100644 GIT binary patch delta 12 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 QQ6UaaFQZCLJO0rB0@zq*Hvj+t literal 7283 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 bIQ5y+&jxOf94yKnjiEN#zT;^TI+XtdIMhml delta 551 zcmZ{gy-or_6ot?10>kc3L=jOzeic?gL51}fT`etaeFA$Q!8fp(Cm}Hw7ACenPlePJ9EBs?|gZm?&a(E(=&h(&Lw;oIc!RFB)Tqa^c>7#OJduFoF;u! z9+-5;!7lb(3^9@jB=#rQ_rfkkiTfl+BJQj4{^6PmlDjcGsaD;}$vBC+)5~m7h z2n9x3*j0UHd%7k({bIeh(V%aRU0GbDL=h=GGZ3H&_o8m526xM><&olE;$G(4HB`7( zSW$chRI$oCFfLDZjC)be+Ju1x12JHro)C&Zp+VA+_ZJ-B=IL}Fknta(-%>I#a+erj z16i~pL@~;p7(oI1s1YJ)(J(Nr(*AhXeTRfDC+TszL86IbOlXpBLlh`okH^1Fmu_a( cLs|z3;jgt|Q_*)3@bB1RLO2_{MTv#>5A!D|w*UYD diff --git a/build/org/usfirst/frc/team708/robot/subsystems/LED.class b/build/org/usfirst/frc/team708/robot/subsystems/LED.class index e3369a968398058d91f9360e7fe0523d65c50b8f..96ea536e9d2937ca9a8f1512c0e4e66b38ac64b9 100644 GIT binary patch delta 680 zcmYk3OH&h35Ju0PIGN0F5r`TH7zqJ15j4s}z^FtCJ|l`zqxh;|DAbZ*CBbbrR=IJZ zm0uFGu`J7Ss~i1AmVHN17SmsM-}(BUp82--d)Jd6zdwHkrg-dd!ebvNU3!^t2{Y+1 z0IzwAm^~?aPdQNR$Xenf1^5wNN6t8 zuZhs#9I{52uV}83cet*(!A;E&%bNWhaJZ$p%^l5MikblqYVL7gvqD1AnP1GspKg}d z;*Z4I+3IGgT22>CncFE9?yIf(($>c6 zT2&EA=3kUvm(njwmGyL?UVUC!&*V}oLKK!Sg6!rRFv(m)@2g<>8sm_!!Xav-#Fdb! zhMVu~1vS$AWe*OF%8`~POmLVZqKYIbiNj4Vm}-njC(Is+;{-WI569&%q%pn-mc+ho zpUIBORdNAi{zb!bI!8ci=m>Xxr2FkBdWtP6EzDrgA22C8?GOA5((w;uoQ455bH?N` zbJTx#&~MD{a;j}-NI-XtN&hWbvfKL-YNG>fy3Gu=iy($0;Fhdr$kIeb6S8zKF`K?@ SRPb!Biq42GiDpC#+2|kkvrW3sd=tGd;NHL0>(Ji42G#?$fuEEp9mwGtj{Q8KI2S;ahbI3oX-@~ zww$r$tj*?Zn78GECa+n%InSx3((RRsBuE+xL=6o@70KdFC^@59HmtIySvPF5Wk|4X zsH0x9W7uQgaKNDk-Nq^xC8|k@ zsiO7@DqY<260PmRFw%o89drsRy66sA*Iq_g_g?d*Wi{bQjDE9h)AuZ7p0`g#gM(Wq7_y5719lZEn@n^D9jDm}Za!;TymxzQPE6bQrnHuY^0{3vR mbQ@au4*k-17@%1&O@(}{OH)23f9kR#I4-y$I3>87k9`8p#V{8D diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class b/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class index 3a15f8969d268d4f70329d7ebee106ce20e8acd6..e3f5cf303846d36b9df639bfb4128411d96e8f20 100644 GIT binary patch delta 21 ZcmbQqJCk>UJC_Or7_c3%+!*M=1^_gT1fc)` delta 21 ZcmbQqJCk>UJC_Lq7_c2M-Wce?1^_ir1gii5 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class index 89d53fad94cbeeaea0180461d645bc15d0aa2a5f..e360bac3b00f51ce4163b1c01659a3c0bab09cbd 100644 GIT binary patch delta 3399 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 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionLift.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionLift.class index ff7b413d8a2cd5054e4607e51976c6110e2ff475..d307f5ac4de1e78baba2d2bb44513142f1271e8a 100644 GIT binary patch delta 1975 zcmZuyd2Ewq82|k?)^Gj#ZEHtY+TAb*Yhef5U>v)U!3J~_=m5td6c{*mx^>8hpFe{^6JOd7txr?zcOukIgba z`Saul07|)ix7p9)-N$tX`I!uC=U5EsOi3XEQ)ZmL`fGH+s)1xJ0 zH0CwvGclj3CexU%*%`K~izU&|R`tyYVltCiw$sfbFy>uGcEsE?fH_ z8_#hjb9jsRW3I{ZoS}oba$?lFaC?!(3RYU! zf~^LtELL-t#anU8;%p6Sa7sOHPjSrQTnpQpUQZgB-yT3p3D46e4g1}80aX{#_^x44$;)YoQKV74oohS8-RlcOnymSUBababZneiqi=F=XlaWycdN{#>n;hhhnp>&#W{m_6UEUw zznPGv?r=`w*1;#8HgenGGp-M5uY?VhNo`acM*kIl2Qy-aQ63mMEA;7_;2cI}U>H?_ z6DUir7GAvk?8BHfgj)meVRn;Ndk-~D$1x{x5_5s$s2xI`uGAOP9|eNlI6(UFLx#mp?-i46*DHMufdIl zC$LyJ+J$zz_jz29bG-bP%So&}#y@-^?C{}P7OQT46Kk9E-ji?;Fp<8|kr6LH)tpm_8 zlscV${j$mv@d_v5Qx@W)wE8M1<0nofS;lxyql?q&k*6b@Rm^2| zbO1auG65+(j$%N9h>@#~p;IDwRj6b*{(v|3cPw`0cwJt*H$k28mZbgLho&2S$d~pz zb*q|GqR&^U=d|f&N(FF8NE_AO*k z4g37A7I`vT;b9vx*?}B(scXIvBdR8~B5n)fxK-^+t&Q6u*gfh(>RjHZd}$SN4+_0Y ztw^hldq}W{)qr4+3ig=#C2h59x5Tjr78Trl8b0n*>(Xab{@*6bvN_$uSibD$VtEiJ zsXPlipOaLcM;Z?zmxt8l^sLh9(m}mHj^q`Rzf@-Be+*42Gx)aTGjwzB;858alX!Bl zKBJ#~y|Rou;K9AfK_7~7zii3_vL!oZ(H}$zyRZfiqZN;!2ak%@W5Rg?Ph&Uwp)iOi zaYndjWpB@miz|2u-{EE1wO8;LUZsV%S%TyGZ-TXWU)u2j7vZ#&{|r~)BOFnkS#AFM fXwzf3fL#pQ?2K>=d!`QNE| delta 1903 zcmYLJc~F&A6#xBz_dedoeem7`ADa(MMc}DOfS?3CP?1$daRH;m3=BabmNrsauxYU= zx#OM-VbL;dR8QOszIiLta92E8WA z7;7?)@s>Hk9{Bu-^&PbbuE^r@nM~wN`-NX8kv;IrfBZMu!OwnSN^zjCjXsk$CRrlc z60yRX|O=CkVOh_;YlK5{npOyP2F3nWqri}ixuud zFOjbIM0f{0PJPAEJiEljWl;u~yYQZp-IOZ~vO=L7J&KjqDoZSHy~mupstQjUtX5pb z)e0xkZg7oa4c981Lc8KRysB7hiS?G)z>SKVSZA-bXZ>3;|0YA-k`6V$^IJ^ zx3JM*j^b8yD&Ay?ZI-y%5=|0_&0I}n>k()6Xm3O%HJyc_+j)yFapono5YgM(JMOG$ z>1b+e+10eBr@N!4yUSqf=z#M8^*gFyhP|t)du2_nTvl2|`ewq@+_LLteI)8{cbno) zb|}1y_YB@jWKG^nwEoal#IDgOx1C|#M2ar)B#q{I2I+`{9h6ec*AvlK%f?aQKZ`t1 zq5llR<#&vuXbb`Wc@)Dw^9{o>e|#0i+-eWe5#UPJ$tpj}V8CF$GIh8YrcX* zVt|Vx%Vo>HBk;(ObOaIp$T3t7)1`-E=k!&@VAWZy5liY>REUTF&*5v<%te6@zs$$>Wb2L$*H#>w`YKEizITt`a5Z7?d@* zs!k)e&(hpDG>FZU+QblQrshpLorH6WIfYzdYGmPIEC`a-gNT_V4-UZ;a-)QsGMtip z1~*YJ5yBeBkmFAs!(w48Uy>W2y!{=0NDy!pAqz3_@!8Y)sGG{i!o$bmvQk#(4;w@BupBE?M(Z%S76>wD zP&a+33`9tbDi~Y^H&@Gf)*?$#kIjtLOA|9~y@KuzqP>ZWc#n9@&=(Wa zZ2e;28?;Bx%(Oiy=%FCmENGvgM+I$hKQ0^H55)n*@Brd@NMD_qUli=V(D7hdBr zecjTSz3^f;=3o!9aIf^xebPVoV7{UNXq49>y zeOJ)?(#Ky*I)A`3(t*!PF+E3x5oTkY%W$4$c$L+7O_K0BH{yc4o^RqQ9Y3ory-Z5L eBSlck9b9R5a2Gq-E;ry5yF43=L@1-^qWfRN+?!

      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 +// { +// Robot.intake_gear.moveMotor(Constants.GEAR_IN); +// } +// else if (gearAnglex<0) +// { +// Robot.intake_gear.moveMotor(Constants.GEAR_OUT); +// } + if ((gearAngle >0) // && (!Robot.pivot_gear.isFwdSwitch()) ) @@ -48,6 +59,8 @@ protected boolean isFinished() { // Called once after isFinished returns true protected void end() { Robot.pivot_gear.stop(); +// Robot.intake_gear.stop(); + } // Called when another command which requires one or more of the same diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java index cd2fcaa..0118b25 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java @@ -33,14 +33,14 @@ else if (gearAngle<0) } else { - Robot.intake_gear.stop(); +// Robot.intake_gear.stop(); // Robot.pivot_gear.moveMotor(Constants.GEAR_UP); } - if (Robot.intake_gear.hasGear()) - Robot.led1.send_to_led(Constants.SET_HAS_GEAR_TARGETING); - else - Robot.led1.send_to_led(Robot.ledAllianceColor); +// if (Robot.intake_gear.hasGear()) +// Robot.led1.send_to_led(Constants.SET_HAS_GEAR_TARGETING); +// else +// Robot.led1.send_to_led(Robot.ledAllianceColor); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java index d00192e..9fcc25c 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.java @@ -19,13 +19,13 @@ protected void initialize() { } protected void execute() { - if (!Robot.intake_gear.hasGear()) +// if (!Robot.intake_gear.hasGear()) Robot.intake_gear.moveMotor(Constants.GEAR_IN); - else - { - Robot.intake_gear.stop(); - Robot.pivot_gear.moveMotor(Constants.GEAR_UP); - } +// else +// { +// Robot.intake_gear.stop(); +// Robot.pivot_gear.moveMotor(Constants.GEAR_UP); +// } } protected boolean isFinished() { @@ -34,7 +34,7 @@ protected boolean isFinished() { protected void end() { Robot.intake_gear.stop(); - Robot.pivot_gear.stop(); +// Robot.pivot_gear.stop(); } protected void interrupted() { diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java index 0f0eca7..9dce5b5 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java @@ -1,40 +1,40 @@ -package org.usfirst.frc.team708.robot.commands.intake_gear; - -import org.usfirst.frc.team708.robot.Robot; -import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; -import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistanceOrTimeOrGear; -import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegrees; - -import edu.wpi.first.wpilibj.command.CommandGroup; -import edu.wpi.first.wpilibj.command.WaitCommand; -import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; - -public class ReleaseGear extends CommandGroup { - - protected void initialize() { - - } - - public ReleaseGear() { - // place gear on lever and back away - addSequential(new Intake_Gear_Out()); - addParallel(new Intake_Gear_Down()); - - // get off lever and go for some balls - addSequential(new DriveStraightToEncoderDistance(15, .4, true)); - } - - // Make this return true when this Command no longer needs to run execute() - protected boolean isFinished() { - return false; - } - - // Called once after isFinished returns true - protected void end() { - } - - // Called when another command which requires one or more of the same - // subsystems is scheduled to run - protected void interrupted() { - } -} +//package org.usfirst.frc.team708.robot.commands.intake_gear; +// +//import org.usfirst.frc.team708.robot.Robot; +//import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; +//import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistanceOrTimeOrGear; +//import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegrees; +// +//import edu.wpi.first.wpilibj.command.CommandGroup; +//import edu.wpi.first.wpilibj.command.WaitCommand; +//import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; +// +//public class ReleaseGear extends CommandGroup { +// +// protected void initialize() { +// +// } +//// +// public ReleaseGear() { +// // place gear on lever and back away +//// addSequential(new Intake_Gear_Out()); +//// addParallel(new Intake_Gear_Down()); +// +// // get off lever and go for some balls +//// addSequential(new DriveStraightToEncoderDistance(15, .4, true)); +// } +// +// // Make this return true when this Command no longer needs to run execute() +// protected boolean isFinished() { +// return true; +// } +// +// // Called once after isFinished returns true +// protected void end() { +// } +// +// // Called when another command which requires one or more of the same +// // subsystems is scheduled to run +// protected void interrupted() { +// } +//} diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java index 3a3333e..8f65775 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java @@ -6,6 +6,7 @@ import com.ctre.CANTalon; import com.ctre.CANTalon.FeedbackDevice; +import com.ctre.CANTalon.TalonControlMode; import edu.wpi.first.wpilibj.DigitalInput; import edu.wpi.first.wpilibj.command.Subsystem; @@ -26,6 +27,9 @@ public class Intake_Gear extends Subsystem { public Intake_Gear() { intakeMotor = new CANTalon (RobotMap.intakeMotorGear); gearSensor = new DigitalInput(RobotMap.gearSensorSwitch); + +// intakeMotor.reset(); +// intakeMotor.changeControlMode(TalonControlMode.Voltage); } public void initDefaultCommand() { diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java index 2521f94..2514b80 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java @@ -47,8 +47,8 @@ public boolean isFwdSwitch() { } public boolean isRevSwitch() { - return (pivotMotor.getPosition()<= Constants.PIVOT_GEAR_ENCODER_LOW); -// return (false); +// return (pivotMotor.getPosition()<= Constants.PIVOT_GEAR_ENCODER_LOW); + return (false); } //I believe this stops the motor diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java index d46b09d..7a7772c 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java @@ -48,7 +48,7 @@ public Shooter() { shooterSlave.changeControlMode(CANTalon.TalonControlMode.Follower); shooterSlave.set(shooter.getDeviceID()); - shooter.reset(); +// shooter.reset(); shooter.enable(); shooter.reverseSensor(true); diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java index 8f0836c..9685726 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java @@ -165,7 +165,7 @@ public VisionBoiler() { // display the current image on the driver station - if (Constants.BOILER_DEBUG){ + if (Constants.BOILER_CAMERA_OUTPUT_DEBUG){ outputStreamBoiler.putFrame(boilerPipeline.hsvThresholdOutput()); } } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java index 28ccfca..9e2d32b 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java @@ -178,8 +178,10 @@ public VisionLift() { liftCurrentDistance = liftTargetWidth * liftImageWidth / (2*(Math.tan(Math.toRadians(fovDegrees))/2)*lrectWidth); // display the current image on the driver station - -// outputStreamLift.putFrame(lgPipeline.resizeImageOutput()); + if (Constants.LIFT_CAMERA_OUTPUT_DEBUG){ + // outputStreamLift.putFrame(lgPipeline.resizeImageOutput()); + outputStreamLift.putFrame(lgPipeline.rgbThresholdOutput()); + } } } diff --git a/sysProps.xml b/sysProps.xml index 6d423535af4088c29e1e0730ac38d1be44e686ed..607d251b488fbc50dd2eec4e072b23c8f1037f07 100644 GIT binary patch delta 81 zcmZ2yu+CsZ37@GGgBgP{5SlPpFc<)#0+8(nNgDZm(kTw891t8Cm!I8mmNJdhe!kebPX VEY_Q!@Eu`hH34bcyjG}@6#!234;laf From 2f9ffe667fc65165b8dde545bad2f913f69e821a Mon Sep 17 00:00:00 2001 From: jpiergal Date: Thu, 30 Mar 2017 13:47:10 -0400 Subject: [PATCH 62/69] added send and relesae gear --- .../frc/team708/robot/AutoConstants.class | Bin 2271 -> 2271 bytes .../usfirst/frc/team708/robot/Constants.class | Bin 3398 -> 3407 bytes build/org/usfirst/frc/team708/robot/OI.class | Bin 4031 -> 4030 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 7194 -> 7105 bytes .../commands/autonomous/driveDistance.class | Bin 929 -> 1674 bytes .../robot/commands/drivetrain/Send.class | Bin 0 -> 965 bytes .../intake_gear/Intake_Gear_Out.class | Bin 1090 -> 1079 bytes .../commands/intake_gear/Intake_Gear_Up.class | Bin 1177 -> 1149 bytes .../commands/intake_gear/ReleaseGear.class | Bin 0 -> 1173 bytes .../team708/robot/subsystems/Drivetrain.class | Bin 7333 -> 7264 bytes .../team708/robot/subsystems/Pivot_Gear.class | Bin 1640 -> 1597 bytes .../robot/subsystems/VisionBoiler.class | Bin 8288 -> 8249 bytes .../team708/robot/subsystems/VisionLift.class | Bin 8357 -> 8347 bytes .../frc/team708/robot/AutoConstants.java | 8 +- .../usfirst/frc/team708/robot/Constants.java | 10 +-- src/org/usfirst/frc/team708/robot/OI.java | 6 +- src/org/usfirst/frc/team708/robot/Robot.java | 6 +- .../commands/autonomous/OneGearCenter.java | 4 + .../commands/autonomous/OneGearLeft.java | 3 + .../robot/commands/autonomous/SixtyBalls.java | 5 +- .../robot/commands/autonomous/TenBalls.java | 5 +- .../commands/autonomous/driveDistance.java | 44 ++++++++-- .../robot/commands/drivetrain/Send.java | 39 +++++++++ .../commands/intake_gear/Intake_Gear_Out.java | 2 +- .../commands/intake_gear/Intake_Gear_Up.java | 6 +- .../commands/intake_gear/ReleaseGear.java | 81 +++++++++--------- .../team708/robot/subsystems/Drivetrain.java | 4 +- .../team708/robot/subsystems/Pivot_Gear.java | 5 +- .../robot/subsystems/VisionBoiler.java | 25 +++--- .../team708/robot/subsystems/VisionLift.java | 22 +++-- sysProps.xml | Bin 6190 -> 6186 bytes 31 files changed, 184 insertions(+), 91 deletions(-) create mode 100644 build/org/usfirst/frc/team708/robot/commands/drivetrain/Send.class create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.class create mode 100644 src/org/usfirst/frc/team708/robot/commands/drivetrain/Send.java diff --git a/build/org/usfirst/frc/team708/robot/AutoConstants.class b/build/org/usfirst/frc/team708/robot/AutoConstants.class index a416415be44cf6a067136a0773dd90a5ec583425..29ab9026bd750609b48caef2f0457bec026ca2fd 100644 GIT binary patch delta 76 zcmcaFcwcaW8zaL+cR5CpiD}BrZ1x`}rYW*HMzA@QFicz}wehS3t0FIhBm+MKD+40~ W8v_Fa6N3PdFNDPB+RVmwlL-K_%MHf> delta 107 zcmcaFcwcaW8>7QScR5Cri9L!;o_-T^q%|EQ*c^%uFn|CfgHU9=hpVT%M@W2#N04i< thrf>tn}Y~gl40Xn306fe21y2923DX_HlQdI10RqtfW#Nv%*J+;2>>h(6CeNp diff --git a/build/org/usfirst/frc/team708/robot/Constants.class b/build/org/usfirst/frc/team708/robot/Constants.class index 5efaf16f97a82b3af0f1adf333f45ee898da6d69..cbc403fffe25b49a850cc29a1b8026a6a5e449df 100644 GIT binary patch delta 690 zcmZ9~xlY4C6a~=h9gtI|NQ9I!5)B1(An_YWh$U=d6Z;~d7$6WJ?3gWKhaVtHfuNwI zpy7`YcU;&{cJbtM^=9VTn(ypyHvRMW`30aIuT8M<Ols*=z{^5>rM320|^%r9u&^8e<qG;=@a2o`b_wo4umi0 zOEI7x;7Yj2Q4R3=uvX9sw1xrTw7kQpg_ozw>M{lzaLek4?+)&8PZ@Y%HSzclVM|7c delta 673 zcmZ9~xk|)P7zN;yZ6Yq^6b=IemRi_|FJdFOFDMS~3n~h6-1kw(efJTDDFh2k3mf0Y zQam?Ba=6V6-^riclW>1>U%Bk}-^V9_4!qUF!*ht25UgQ5y{HY% z=s_3lJ}2tek^r_aRw7@3UZvN>=Ki|6^4m~|LZ*?_GTUy5OY|nT zlG^4!Zi~(Qj(C^e6YtXp;zRlf-4i)2cw# diff --git a/build/org/usfirst/frc/team708/robot/OI.class b/build/org/usfirst/frc/team708/robot/OI.class index e21fcd9640624ca2df63e039cb4c3af87df2b701..5ca52be2be2222cef36277ff2f8f306479c20dbb 100644 GIT binary patch delta 60 zcmdllzfXR{BSv=NAXgt($KcH`7>gO%xrTb% PnphO?nYTHIHHZrUfBF;p diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index 0edd25c61076d53a9e818831d675b3a59ca63203..e41e7b9fe9db0c6271e972566e33e22b5d9ff1e3 100644 GIT binary patch delta 2129 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 O3zz>QWVjgAHTWAn&6YL* delta 465 zcmZ`!J5Iwu5PiGrc!_cNn1o-5L!bZ>Bnr|{1qq~F012f+ktm=DH1zJ%flokBLxUxd zH~>eW;tCu9#2aHQ3&Bb=^JZt>yqR(3*6zN1K0X8JV%>v>C5vTupSe5_8g&n4tXMQW zSgD2<&Fix_H-N9O6~CLXc04@4I=CE-h8L$k0<8LIVJ-epebu|s8*ya%#@RfKUrjG! zrOdJNN^md<9|{#_9hwrmr_-3CchiqLrirCZ8fGw?MyfLt;t>Z)Eo>)H?I-9#6(&LH z0WLE;NH9T|O^w(XP#0*>H;G$Boq|M|NjR88HIvw86bWta#21#^DKK@;tmVu7zUqYh Z@3XoE=FeFU=Kp2p#JxX=3Jd9Ci(kc&Cb<9r diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/Send.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/Send.class new file mode 100644 index 0000000000000000000000000000000000000000..e5b37a5861f4a373ea6a9b4e0e3a8788965576c4 GIT binary patch literal 965 zcmbVKO>fgc5Pj=7apRa43~hn((E@>zA{MC#ia=ZnIYnGj6{)vPyiK-B>}b6%h~LBo zi7#>B2k@g1v$oSjB3zJ_iQmq=H*Y-q>-UeJ03M_1!^71&YS>u9H6Pb;!zXal!={HV zhFX%DNoE+r&WSh`d?exl?;5S*!E?&KP_Z&E8CJLdPTxOdaQBl)GOTn|EZ=0~p411T zH=>iUlk~;tP-tawdFYy}Q6suhKT<)1i#=h;^fpqx zlj)dzzZjQccX3@h7TQE29rhBTBi^;})fCbMw7z0t4EGkSX~E)-utj&kqYJ|5M-x-5 z(YucZ#eh&74n2V1`Uck8`2yz?AqVFuE~7#*fJ>-OXqnJjQH>RxCq%qlmF@>FAS^YX zQH|}_2rI46aK6KRI}`PDfslw7bHSh}Ed^aVoyzQxgq2}4vh@zE&k^ZL=1yE(!YXC$ zOb_Va);aD+8}nHT=EfY;Ib+h&OXfdYZq5;BE!WS8yJgF2>no}=zs0ak`Z{;#1gd3c KhReCXD}MmW8?tBs literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.class index 2fcd6588774f3f056a5e31e46dcfa17e638427cc..ac925e526443d14bed09218c073619779f1ef193 100644 GIT binary patch delta 537 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 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class b/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class index 6135b073c2c5f1ea4a20862ac7f7ce0f08cdbd19..2aafd0eca940d2b37938c7d009f8c6e564ec38c9 100644 GIT binary patch delta 359 zcmZvYO-lk%6o#J}nXV3ZrZUVFg2+Cn5389zG%fqo%0=L!A5bpZBt*2RU(nL#mqZc~ z delta 407 zcmYjL+e!ja6kRi3jt*xgHKxfRi0o=*)>x@oPFK4q1qQtZlg&dHGD7+fnTLWtpqE~v zkO=anx4xu)BHG6!d^l^bv-aA1uXp~%%b!1QO#msB7{(NYG0qTYm{8!sWDp@t36>Br z9Yhi{g3Ssr1*8Pb1u(B*0cnN|L$+T2*3@#%uAG!>0 z8S)&fSmRj72FE7IP(VM&7Pcj*`=>Y6+JJLesh&933_BdVC`vHvP4oFo{*a3Wcp*{r zNc;u<22}0#9?bgyuji3e4-7(o%aK4YasKB<6n*p?r00VivLupY?vXEMm>o8`ZIdwM z-udEtX#|kz=m-D%!_a9%53S45Q4vUsXzfU^=sJ8NMQ(*rs0x>gyc_oG#z?C(iWRB~ KO(tpHvZB8mFfzvg diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class index 7528c53adf26a47899f7159ce410076d0a013a32..10d248ae23bf0a17507a694e2f4abc0721100d5e 100644 GIT binary patch delta 3810 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 bg^FQZi;PwtA-61#sXUHqIC8nIc1rvQTFYU- delta 1529 zcmZuxTTEMJ9RK}k0V#yFP)-rrVkA&JTn44vaKZpV$CTm#fz^!--56|hUbY7{GpP?I zYU0e69W{y*uEhaO@xR<@`MPp2i#z*x{P3B_!ec$PT2T$^y|NZ{|zM0O8 zo#(!(j6r{SIF3JaIvfIu`b+)(&gnRHu%Q z$zkb*I3cAtDM7p>jW{j6_*MpKxybGnWD0j1l}!yFeTo2sRP!`VeT;n5Z6mb8{8+Ps zy|pPkc|}>E3N`HGKI2TJm)hpkCysV_1^!4Hnn!QiGHgcJE$fakC2`9NR44oV*qg?H zjrb$jXCcUme#eu8@LF|{MAY6|0@vt2GM@P8a-+%jvebUFDoch*Ig${}!uC96nmgls@QL-rw8_QEIqsFoo_WjKi)GJesJEd&OTJO?E!q!k(am(}Y$O|y!MTF&LRLbe~;NW&SAw39Z(on&3k#!egYp$$L zUa@YKwPl|{w!CgN1_M@gd1H2x)Ek;QRUR&iU8Y5rZoG57-?SFW>x|fyb+(6M$lJ7f zM_c_vAMcVnOKNxaIb!EE-wIYYM^(pTs>y^=))!Uoow*vwrl0rOPL`2jjq@Eel!)i(7zKePZtOaP4wV7V fgc6o!gqmU9438GplAD{xWE#i#4qt7qn3VqjFL!1T diff --git a/src/org/usfirst/frc/team708/robot/AutoConstants.java b/src/org/usfirst/frc/team708/robot/AutoConstants.java index 1987ec8..6840d2d 100644 --- a/src/org/usfirst/frc/team708/robot/AutoConstants.java +++ b/src/org/usfirst/frc/team708/robot/AutoConstants.java @@ -3,10 +3,10 @@ public final class AutoConstants { // Threshold Constants - public static final double DISTANCE_TARGET_THRESHOLD = 2; // threshold for determining the distance to stop in front of the lift - public static final double X_THRESHOLD_CENTER = 20; // threshold for determining center of the target - public static final double X_THRESHOLD_HAS_TARGET_MIN = 20; // threshold for determining min value for whether the robot sees the target - public static final double X_THRESHOLD_HAS_TARGET_MAX = 300; // threshold for determining max value for whether the robot sees the target + public static final double DISTANCE_TARGET_THRESHOLD = 0; //5; // threshold for determining the distance to stop in front of the lift + public static final double X_THRESHOLD_CENTER = 5; //20; // threshold for determining center of the target + public static final double X_THRESHOLD_HAS_TARGET_MIN = 1; // threshold for determining min value for whether the robot sees the target + public static final double X_THRESHOLD_HAS_TARGET_MAX = 320; // threshold for determining max value for whether the robot sees the target public static final double Y_HEIGHT_THRESHOLD = 5; // threshold for determining the stop location of height // Sweep Constants diff --git a/src/org/usfirst/frc/team708/robot/Constants.java b/src/org/usfirst/frc/team708/robot/Constants.java index 07d3ebd..2bf3fe1 100644 --- a/src/org/usfirst/frc/team708/robot/Constants.java +++ b/src/org/usfirst/frc/team708/robot/Constants.java @@ -84,11 +84,11 @@ public final class Constants { /* * Smart Dashboard */ - public static final double SEND_STATS_INTERVAL = .5; // Interval for reporting in seconds - public static final boolean DEBUG = true; - public static final boolean LIFT_DEBUG = true; - public static final boolean BOILER_DEBUG = true; - public static final boolean GEAR_DEBUG = false; + public static final double SEND_STATS_INTERVAL = .1; // Interval for reporting in seconds + public static final boolean DEBUG = true; + public static final boolean LIFT_DEBUG = true; + public static final boolean BOILER_DEBUG = true; + public static final boolean GEAR_DEBUG = false; public static final boolean LIFT_CAMERA_OUTPUT_DEBUG = false; public static final boolean BOILER_CAMERA_OUTPUT_DEBUG = false; diff --git a/src/org/usfirst/frc/team708/robot/OI.java b/src/org/usfirst/frc/team708/robot/OI.java index 62c4f0f..65fe37e 100644 --- a/src/org/usfirst/frc/team708/robot/OI.java +++ b/src/org/usfirst/frc/team708/robot/OI.java @@ -38,7 +38,7 @@ public class OI { public static final int LED_BUTTON = Gamepad.button_X; public static final int BRAKE_BUTTON = Gamepad.button_B; - public static final int INTAKE_GEAR_BUTTON = Gamepad.button_A; + public static final int RELEASE_GEAR_BUTTON = Gamepad.button_A; /* @@ -68,7 +68,7 @@ public class OI { public static final Trigger intakeBallOut = new AxisUp(driverGamepad, INTAKE_BALL_OUT); public static final Button led = new JoystickButton(driverGamepad, LED_BUTTON); public static final Button brake = new JoystickButton(driverGamepad, BRAKE_BUTTON); - public static final Button intakeGear = new JoystickButton(driverGamepad, INTAKE_GEAR_BUTTON); + public static final Button releaseGear = new JoystickButton(driverGamepad, RELEASE_GEAR_BUTTON); // Operator Button Commands @@ -104,7 +104,7 @@ public OI() { // intakeBallOut.whileActive(new Intake_Ball_Out()); intakeBallIn.whileHeld(new ManualIntake_Ball()); intakeBallOut.whileActive(new ManualIntake_Ball()); - intakeGear.whenPressed(new Intake_Gear_In()); + releaseGear.whenPressed(new ReleaseGear()); // Operator diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index 665c1f6..53b6bb7 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -250,8 +250,8 @@ public void testPeriodic() { * Sends data from each subsystem periodically as set by sendStatsIntervalSec */ private void sendStatistics() { - if (statsTimer.get() >= Constants.SEND_STATS_INTERVAL) { - statsTimer.reset(); + // if (statsTimer.get() >= Constants.SEND_STATS_INTERVAL) { + // statsTimer.reset(); // Various debug information drivetrain.sendToDashboard(); @@ -265,7 +265,7 @@ private void sendStatistics() { // visionProcessor.sendToDashboard(); visionLift.sendToDashboard(); visionBoiler.sendToDashboard(); - } +// } } /** diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java index efe8986..c129cc4 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java @@ -8,6 +8,7 @@ import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightForTime; import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToBoiler; import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToLift; +import org.usfirst.frc.team708.robot.commands.drivetrain.Send; //import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToGear; import org.usfirst.frc.team708.robot.commands.drivetrain.ToggleBrakeMode; import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegreesAlliance; @@ -37,6 +38,9 @@ protected void initialize() { } public OneGearCenter() { + + addSequential(new Send("In OneGearCenter")); + // go to lever // addSequential(new DriveStraightToEncoderDistance(24, .3, false)); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java index 90cd701..c989e69 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java @@ -12,6 +12,7 @@ import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistanceOrTime; import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToBoiler; import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToLift; +import org.usfirst.frc.team708.robot.commands.drivetrain.Send; import org.usfirst.frc.team708.robot.commands.drivetrain.ToggleBrakeMode; import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegreesAlliance; import org.usfirst.frc.team708.robot.commands.feeder.SpinFeeder; @@ -30,6 +31,8 @@ protected void initialize() { } public OneGearLeft() { + addSequential(new Send("In OneGearLeft")); + // go to lever addSequential(new DriveStraightToEncoderDistance(70, .4, false)); addSequential(new TurnToDegreesAlliance(.5, 45, Constants.CLOCKWISE)); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java index 2a809f6..97d4fff 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java @@ -8,6 +8,7 @@ import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistanceOrTime; import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToBoiler; import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToLift; +import org.usfirst.frc.team708.robot.commands.drivetrain.Send; import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegreesAlliance; import org.usfirst.frc.team708.robot.commands.feeder.FeederOff; import org.usfirst.frc.team708.robot.commands.feeder.SpinFeeder; @@ -31,7 +32,9 @@ public class SixtyBalls extends CommandGroup { protected void initialize() { } - public SixtyBalls() { + public SixtyBalls() { + addSequential(new Send("In Sixty Ball")); + // goto Hopper // addSequential(new DriveStraightForTime(-.3, 4.0)); // addSequential(new DriveStraightToEncoderDistance(100, .4, false)); //RED to close hopper diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java index 57e09e5..22bd196 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java @@ -9,6 +9,7 @@ import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistanceOrTime; import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToBoiler; import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToLift; +import org.usfirst.frc.team708.robot.commands.drivetrain.Send; import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegreesAlliance; import org.usfirst.frc.team708.robot.commands.feeder.FeederOff; import org.usfirst.frc.team708.robot.commands.feeder.SpinFeeder; @@ -31,7 +32,9 @@ public class TenBalls extends CommandGroup { protected void initialize() { } - public TenBalls() { + public TenBalls() { + addSequential(new Send("In Ten Ball")); + // go to lever addSequential(new DriveStraightToEncoderDistance(73, .4, false)); addSequential(new TurnToDegreesAlliance(.5, 43, Constants.COUNTERCLOCKWISE)); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java index 264883b..fa26072 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java @@ -2,14 +2,17 @@ import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; +import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistanceOrTime; import org.usfirst.frc.team708.robot.commands.drivetrain.ToggleBrakeMode; +import org.usfirst.frc.team708.robot.commands.drivetrain.Send; import org.usfirst.frc.team708.robot.commands.feeder.SpinFeeder; import org.usfirst.frc.team708.robot.commands.shooter.SpinShooter; import org.usfirst.frc.team708.robot.commands.shooter.StopShooter; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Up; -//import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_In; +import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Down; +import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_In; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Out; -//import org.usfirst.frc.team708.robot.commands.intake_gear.ReleaseGear; +import org.usfirst.frc.team708.robot.commands.intake_gear.ReleaseGear; import org.usfirst.frc.team708.robot.commands.autonomous.AutoFireBalls; import edu.wpi.first.wpilibj.command.CommandGroup; @@ -23,23 +26,52 @@ protected void initialize() { // Robot.drivetrain.resetEncoder(); // Robot.drivetrain.resetEncoder2(); // Robot.drivetrain.resetGyro(); - + } public driveDistance() { + addSequential(new Send("In DriveDistance")); + + addSequential(new Send("Calling wait 2")); addSequential(new WaitCommand(2.0)); + addSequential(new Send("Calling Intake Gear Out")); addSequential(new Intake_Gear_Out()); -// addSequential(new Intake_Gear_In()); + +// addSequential(new Send("Calling wait 2")); +// addSequential(new WaitCommand(2.0)); +// addSequential(new Send("Calling Intake Gear IN")); +// addSequential(new Intake_Gear_In()); + + addSequential(new Send("Calling wait 2")); + addSequential(new WaitCommand(2.0)); + + addSequential(new Send("Calling Gear Up")); + addSequential(new Intake_Gear_Up()); + + addSequential(new Send("Calling wait 2")); + addSequential(new WaitCommand(2.0)); + + addSequential(new Send("Calling Gear Down")); + addSequential(new Intake_Gear_Down()); -// addSequential(new Intake_Gear_Up()); -// addSequential(new DriveStraightToEncoderDistance(60, .5, false)); + addSequential(new Send("Calling wait 2")); + addSequential(new WaitCommand(2.0)); + + addSequential(new Send("Calling Release Gear")); + addSequential(new ReleaseGear(), 1); + + +// addSequential(new WaitCommand(2.0)); +// addSequential(new Send("drive for 1 sec")); +// addSequential(new DriveStraightToEncoderDistanceOrTime(10, .4, false, 1)); // addSequential(new SpinShooter(8)); // addSequential(new AutoFireBalls()); + addSequential(new Send("finished")); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/Send.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/Send.java new file mode 100644 index 0000000..d71ad1c --- /dev/null +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/Send.java @@ -0,0 +1,39 @@ +package org.usfirst.frc.team708.robot.commands.drivetrain; + +import org.usfirst.frc.team708.robot.Robot; + +import edu.wpi.first.wpilibj.command.Command; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; + +public class Send extends Command { + + String output; + + public Send(String output) { + this.output = output; + } + + // Called just before this Command runs the first time + protected void initialize() { + SmartDashboard.putString("Event", output); + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return true; + } + + // Called once after isFinished returns true + protected void end() { + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + end(); + } +} diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java index 3ae8b0c..99a0a88 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java @@ -11,7 +11,7 @@ public class Intake_Gear_Out extends Command { public Intake_Gear_Out() { // requires(Robot.intake_gear); - this.setTimeout(.5); + this.setTimeout(1.0); } protected void initialize() { diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java index 852a923..c49b8d0 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java @@ -22,9 +22,9 @@ protected void execute() { } protected boolean isFinished() { - if (Robot.pivot_gear.isFwdSwitch()) - return(true); - else +// if (Robot.pivot_gear.isFwdSwitch()) +// return(true); +// else return(isTimedOut()); } diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java index 9dce5b5..7b9641a 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java @@ -1,40 +1,41 @@ -//package org.usfirst.frc.team708.robot.commands.intake_gear; -// -//import org.usfirst.frc.team708.robot.Robot; -//import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; -//import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistanceOrTimeOrGear; -//import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegrees; -// -//import edu.wpi.first.wpilibj.command.CommandGroup; -//import edu.wpi.first.wpilibj.command.WaitCommand; -//import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; -// -//public class ReleaseGear extends CommandGroup { -// -// protected void initialize() { -// -// } -//// -// public ReleaseGear() { -// // place gear on lever and back away -//// addSequential(new Intake_Gear_Out()); -//// addParallel(new Intake_Gear_Down()); -// -// // get off lever and go for some balls -//// addSequential(new DriveStraightToEncoderDistance(15, .4, true)); -// } -// -// // Make this return true when this Command no longer needs to run execute() -// protected boolean isFinished() { -// return true; -// } -// -// // Called once after isFinished returns true -// protected void end() { -// } -// -// // Called when another command which requires one or more of the same -// // subsystems is scheduled to run -// protected void interrupted() { -// } -//} +package org.usfirst.frc.team708.robot.commands.intake_gear; + +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistanceOrTime; +import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistanceOrTimeOrGear; +import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegrees; + +import edu.wpi.first.wpilibj.command.CommandGroup; +import edu.wpi.first.wpilibj.command.WaitCommand; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; + +public class ReleaseGear extends CommandGroup { + + protected void initialize() { + } +// + public ReleaseGear() { + this.setTimeout(1.0); + + // place gear on lever and back away + addParallel(new Intake_Gear_Out(), 1); + addParallel(new Intake_Gear_Down(), 1); + + // get off lever and go for some balls + addSequential(new DriveStraightToEncoderDistanceOrTime(10, .4, true, 1), 1); + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return(isTimedOut()); + } + + // Called once after isFinished returns true + protected void end() { + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + } +} diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java index 84919ee..0c10eb5 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java @@ -402,6 +402,7 @@ public void sendToDashboard() { // SmartDashboard.putNumber("DT Rt Slave", rightSlave.getTemperature()); // SmartDashboard.putNumber("DT Lft Master", leftMaster.getTemperature()); // SmartDashboard.putNumber("DT Lft Slave", leftSlave.getTemperature()); +// SmartDashboard.putNumber("Sonar Mode", sonarOverride); SmartDashboard.putNumber("DT Encoder 1 Distance", encoder.getDistance()); // Encoder reading SmartDashboard.putNumber("DT Encoder 2 Distance", encoder2.getDistance()); // Encoder reading } @@ -409,7 +410,6 @@ public void sendToDashboard() { SmartDashboard.putBoolean("Brake", brake); // Brake or Coast SmartDashboard.putNumber("AllianceColor", getAlliance()); SmartDashboard.putNumber("Gyro angle", ( (int)getAngle())); // Gyro angle - SmartDashboard.putNumber("DT Sonar Distance", getSonarDistance()); // Sonar distance reading -// SmartDashboard.putNumber("Sonar Mode", sonarOverride); +// SmartDashboard.putNumber("DT Sonar Distance", getSonarDistance()); // Sonar distance reading } } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java index 2514b80..6fa8a62 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java @@ -44,11 +44,12 @@ public void moveMotor(double speed) { public boolean isFwdSwitch() { return (pivotMotor.getPosition()>= Constants.PIVOT_GEAR_ENCODER_HIGH); +// return (false); } public boolean isRevSwitch() { -// return (pivotMotor.getPosition()<= Constants.PIVOT_GEAR_ENCODER_LOW); - return (false); + return (pivotMotor.getPosition()<= Constants.PIVOT_GEAR_ENCODER_LOW); +// return (false); } //I believe this stops the motor diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java index 9685726..bda915f 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java @@ -331,20 +331,17 @@ public double boilerGetMove() { // if the robot sees the target // Method to determine whether the robot is at the correct distance to the target so stop if (boilerHasTarget) - { - - + { double difference; double boilerCurrentDistance; double boilerStopAtValue; - double differenceY = boilerStopAtHeight - boilerCurrentHeight; +// double differenceY = boilerStopAtHeight - boilerCurrentHeight; + double differenceY = boilerCurrentHeight - boilerStopAtHeight; //using the y value difference = differenceY; boilerCurrentDistance = boilerCurrentHeight; - boilerStopAtValue = boilerStopAtHeight; - - + boilerStopAtValue = boilerStopAtHeight; boilerMove = Math708.getClippedPercentError(boilerCurrentDistance, boilerStopAtValue, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); // boilerMove = .3; @@ -354,7 +351,8 @@ public double boilerGetMove() { // } //Check if target is at correct distance within threshold - if (Math.abs(difference) <= thresholdDistance) { +// if (Math.abs(difference) <= thresholdDistance) { + if (difference <= thresholdDistance) { boilerMove = 0.0; boilerIsAtDistance = true; } else { @@ -362,8 +360,8 @@ public double boilerGetMove() { } boilerMoveDiff = difference; } else { // no target - where is it? -// boilerMove = 0.0; - boilerMove = 0.2; //move forward slowly + boilerMove = 0.0; +// boilerMove = 0.2; //move forward slowly } return boilerMove; @@ -387,9 +385,12 @@ public double boilerGetMove() { * Method to determine whether the robot is at the distance from the target based on the threshold value */ public boolean boilerIsAtHeight() { - double difference = boilerStopAtHeight - boilerCurrentHeight; +// double difference = boilerStopAtHeight - boilerCurrentHeight; + double difference = boilerCurrentHeight - boilerStopAtHeight; + //Check if target is at correct level within threshold - if (Math.abs(difference) <= thresholdHeight) { +// if (Math.abs(difference) <= thresholdHeight) { + if (difference <= thresholdHeight) { boilerIsAtHeight = true; } else { boilerIsAtHeight = false; diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java index 9e2d32b..3c2211d 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java @@ -333,20 +333,24 @@ public double liftGetMove() { // Method to determine whether the robot is at the correct distance to the target so stop if (liftHasTarget) { - double difference = liftDistanceToStop - liftCurrentDistance; - move = Math708.getClippedPercentError(liftCurrentDistance, liftDistanceToStop, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); -// move = .6; +// double difference = liftDistanceToStop - liftCurrentDistance; + double difference = liftCurrentDistance - liftDistanceToStop; + + liftMoveDiff = difference; //Check if target is at correct distance within threshold - if (Math.abs(difference) <= thresholdDistance) { +// if (Math.abs(difference) <= thresholdDistance) { + if (difference <= thresholdDistance) { move = 0.0; liftIsAtDistance = true; } else { + move = Math708.getClippedPercentError(liftCurrentDistance, liftDistanceToStop, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); +// move = .6; liftIsAtDistance = false; } - liftMoveDiff = difference; + } else { - move = 0.0; + move = 0.0; } return move; @@ -361,9 +365,11 @@ public double liftGetMove() { public boolean liftIsAtDistance() { - double difference = liftDistanceToStop - liftCurrentDistance; +// double difference = liftDistanceToStop - liftCurrentDistance; + double difference = liftCurrentDistance - liftDistanceToStop; //Check if target is at correct level within threshold - if (Math.abs(difference) <= thresholdDistance) { +// if (Math.abs(difference) <= thresholdDistance) { + if (difference <= thresholdDistance) { liftIsAtDistance = true; } else { liftIsAtDistance = false; diff --git a/sysProps.xml b/sysProps.xml index 607d251b488fbc50dd2eec4e072b23c8f1037f07..92ce303314cc570aaf96599ff93f9e0920e9cd97 100644 GIT binary patch delta 150 zcmZ2yu*zV=G-h@)1``HX2A9c!EVi3(F$b~o8!}ijSTPtf7ywB(2Fu9@IjlFAasFd5 zbOWk$W3T{97%(URX=k89Lm+el@?C)|vU$0XIwLDkiotnuqL}q&J`ouf0DG??Q~&?~ From 0daf6d917a2c42739501fe09038071a8f9eaa7a0 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Thu, 6 Apr 2017 22:38:47 -0400 Subject: [PATCH 63/69] after day 1 MAR champs --- .../frc/team708/robot/AutoConstants.class | Bin 2271 -> 2271 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 7105 -> 7105 bytes .../commands/autonomous/JustTenBalls.class | Bin 1742 -> 1874 bytes .../commands/autonomous/OneGearCenter.class | Bin 2261 -> 2692 bytes .../commands/autonomous/OneGearLeft.class | Bin 2359 -> 2490 bytes .../commands/autonomous/SixtyBalls.class | Bin 2534 -> 2573 bytes .../robot/commands/autonomous/TenBalls.class | Bin 2268 -> 2696 bytes .../commands/autonomous/driveDistance.class | Bin 1674 -> 1731 bytes .../drivetrain/RotateAndDriveToBoiler.class | Bin 2200 -> 2298 bytes .../visionProcessor/GripPipelineLift.class | Bin 5858 -> 5858 bytes .../team708/robot/subsystems/Drivetrain.class | Bin 7264 -> 7296 bytes .../team708/robot/subsystems/Pivot_Gear.class | Bin 1597 -> 1678 bytes .../robot/subsystems/VisionBoiler.class | Bin 8249 -> 8258 bytes .../team708/robot/subsystems/VisionLift.class | Bin 8347 -> 8347 bytes .../frc/team708/robot/AutoConstants.java | 2 +- src/org/usfirst/frc/team708/robot/Robot.java | 2 +- .../commands/autonomous/JustTenBalls.java | 5 +- .../commands/autonomous/OneGearCenter.java | 16 +++++- .../robot/commands/autonomous/SixtyBalls.java | 48 ++++++++++++------ .../robot/commands/autonomous/TenBalls.java | 17 ++++++- .../DriveStraightToEncoderDistanceOrTime.java | 5 +- .../drivetrain/RotateAndDriveToBoiler.java | 6 ++- .../commands/intake_gear/Intake_Gear_Out.java | 2 +- .../visionProcessor/GripPipelineLift.java | 2 +- .../robot/subsystems/VisionBoiler.java | 5 ++ .../team708/robot/subsystems/VisionLift.java | 1 + sysProps.xml | Bin 6186 -> 6190 bytes 27 files changed, 85 insertions(+), 26 deletions(-) diff --git a/build/org/usfirst/frc/team708/robot/AutoConstants.class b/build/org/usfirst/frc/team708/robot/AutoConstants.class index 29ab9026bd750609b48caef2f0457bec026ca2fd..9af0f72251a6b237a1c12af72dc6d405fda0f7dd 100644 GIT binary patch delta 530 zcmcaFcwcZrDx=E89>t06Zk%imA`D=#@$5gw%~zNVnd^laBpE~*#26SE*nl!j4B|k( z1QK5o$d^LmO9S~bNPJl!Uk-^c59BK#@fCr5B_zHwkgtN^*E6UB1=JW=;SNv-@-@-; zT1b3tpu8>;AEaIni4T(3M_9mM0OT7Y@r{6dV>rK_iNORYUV|9iMM+S{AfSb%3 z+;Xgo)JEtyK_q*i%iM$e?1BOO&OC%i%pdTWc>;g3^QQ3ZVLyJkW^RH-*?ocq29~6l e=b-AT->AR;>JMsG^3JYM7t%Q5o*Od{($@`BrzA`O diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index e41e7b9fe9db0c6271e972566e33e22b5d9ff1e3..0989ddab6ecc9f70e57d1f27ab3d14cf871bbb08 100644 GIT binary patch delta 17 ZcmX?Te$afwZ&8*lf(#!v{}(;P3IIwa2lxO0 delta 17 ZcmX?Te$afwZ&8*Hf{YHE|BD`C1pr7W2ZaCt diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/JustTenBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/JustTenBalls.class index 58b6bd4e96281de84f584005d414f69590d1f8e7..38e1b3ac3abe7889b5c0c23727f2ee1883ffb307 100644 GIT binary patch delta 822 zcmaJ<&rcIU6#iy+JEQBifG(h7$Vv(Qg%&DBpjx(2kplj#m8_haXo#k1qE_Rr2NM%7 zCS^~0@(<917uIOPk%I>h-n?-3uQ0ypwsjB6Br|#6d*Amm-<$a!{t;<@`~77PzzjBZ zBrz|ra0EFW3NGnL;IcrT+ZCG_0AKw1R<3tCI2HwL9R>;lO9IO}A}9)65m@2&R+|nT z1G0RT+g3L*go13lDp2C~dCImL!($^@6Ikc=$u27@Wg9wT@;=uDuD3oO@C+syX5ALc zSmg)x`wV@hy0!M~X~UYHvX-i~nt=>%7`TaB?i*Gi{%wYY`(7J$4JAyl%#bB{%w16y z2;N~>mEGLW%1gCEqP)6A>AMVbZPvcJXAZ_U9#x-L)3s`SJ6&!(d05}hxv#ZCh{ub? zd+xrLY9?rEa)qEFg-I}+Bb1`el%rQS>G@U*VVIM>s?xEk02Z(yY!=R6b2n~BUwTsi#W`xig z6Qi05%fncwQ=n0l2;&|m{7TI65U233l?)jGqU3nINpBpZFiE~r$dQi{MVsWSMy_7q z0$$PIY9Sl&z0>inQFVsg%7ID$(zl|1kY`|G^8uyOQ)W98dwj^O^8qF6DQA1L{_i6# M|3k=dv3;?*KM<~TumAu6 delta 749 zcmZ{iJ8u&~6otRp$4s(*fXFHsA;2*vPE4>#AR)vF-hg?9SDGLh3g{^K1ypWGLlfP#Vs(M0?JgoNl3cXkuU;xW?9-gE9fqkHbor{c##@58Tm+rW8N18U3} zF6d}25(aep%S*dn1vtzHjC0Yj5HL*3uxMBc$Z^TgHbgplm}&?p+VrxH%6r5JEi1lk zxT2#*#_IOhG}w5NuaxK*uIi|?Cn(z+t_4(WKi3U6Hnw)$CX?}ZwU%pgGtUaQl;FTW z9zSsky2)+DZ2Uvj;@8fCl-`MVoGpFVR^1nRHU8!fN!2~Yd|EZ;ZTotn(|Hj8^p@i# zzt$TU_jdVsOfZR}F6gvuW%pY-oD}MmC^IEYK1*^2YfB+L%4vn4We`@lUQbZ<_c+}U zH^g@n%qBy^40jJC1X-Nx_H;ra14Su4m~bdVBZ9(&(M=AEs3hn}$WbrkSi*_FZz@Z{ zSi;FHQ|%_4l5oHKhWs+9h{-CWV!0w_8`5=eQ4Fm}_()7V`%5(oy?hB)T2$j5S+t}=Hph02y diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class index 525352dbc0491cf3150cbbe3e823ca0ad3d7d9f8..58cffccd6a04089ba4e5dcff9cdd93415cc15aa1 100644 GIT binary patch literal 2692 zcmbtW&vV;E6#h1GC0B8qA9Vs9Xfe7gtH>pz~$oAS%Dr;R? zN*In@IrPG%+_*E$aH(g?3X*Ns z{|MkJKGSd$ITd%KSkcgfRSh?=7R84u?rBhwS5Z)LU&BePtJu&Glim+BoJKB+qKZuo zgHrWS!x`ix`Xdz|E9r5fr=K$W+f(`bTEhrFiDFB|r^@W_z70xxE$vGh&cTSHq@t{% zqNE=Nb`2MhkAkbHD(OT=my$u%l=P)Qp`?R1G>l_A3RA_7l76-0Jt4gxX}BiiwN%tq z*bJI!o33eC=I5NDH#xe_5Xp!N4f=DY%~!m7i8}?OWRYelC(4GkZaAhKx0Mlh+iWt- z<%Cnyy=K*Pnyy}T%DT&q`qbrV-4P|>>Sa-{8+N6s8=fm{Q5RlQU$yxXH=GQ&UGB^< zC^uvl=-6R2X}~Ve8<=|VpzZ|!(^9{ zRUC7dyN+SndfuOHVA)O_VwHpbrfb-4Q%)lbbi8|5AIh-t zh;P-XF#2*J%OY*vZ!j!&$#Ec)_k?S>e9o?9Wp)c9=O<~PlRQbCpj9!^N2w2_>wDeF+?vJM`@NN4G;=h(7sN`m^A z`e5nhCoB*}L1cN&;k-F#S!QRR-2?sU8cvP7;WW2jewr6+INy$V?0Bj<+Ua2zGQ>Lz zZ#GOj(cBh-wlc%@<4MB4Yyq4OQ^dY9m?i?r$#%(`Eyy%!^{a!%DuFidwjX#ns8 zUi7j5VX>}ggo_=lw$DU)C?(|1VVLbQmZMHxhSc%rRr{=3a)d_*z;H4r4_4hW?3zxU zPUqi@yfRK1l}esJ_UI(1yM#!Sxvpq^a3q=aubt$)eDx94n&B9h#feBsX0w}8Ern$% zs8T}!yh%6gP5*K`fe3D477X$R9HT#z|L^J1gE@LCzTzV0Nsa|ZWRR6kv?<#__7h#4 z1Z2~x7Fg;B^c07BTZlZviD00F1GU)SLNqX(EDn&NFBrs%Eu0F((=;k6L-dI&m4=JRnRdRllZG`}615680~&IN*9Y#|v!Mng!7 zOk*v)8%#e=Bb}y*#PMDWS3>`*q5lMVOtvr`n66Re*F&$Fz-vF>Rh*^VCaEkb`X;)J z^LU@6E1071ta(i0E`5Y-Vg{T_*r5D>LE0x&k8iMq@34&L_y9lS4t~W7{=gdkM1e)H z&IYl;-oOKv!X}%-m;3c()9rdjut*$1BV3}lY=oZPZ{_nqCp_6ll0N8!2yS;e;pi6n a>Hv^#8^47j6!5?H-qU{oGFqjK>(1XiR@dbK delta 928 zcmah{yKWOf6g{)Mo-t#S*l58PA|eDO&cg{#LU_awZyYDi6Pq`S34}*Ofv5o?0|L>| zppoe5X=uC>h(|#KP14X&@CS61D0g&<%r2XS3u z97TZ{2@55OG0Y0g36v!wm={=(i0b;Hgw*?zL|pI75*;XN{))hf=WA{~iHbm#7rs+p zdbn5h!ayR0lLDs%PIIpoLe#1YC4n>C>uv%)8aT_ntO2-ZcB1y-oWObRrJK~Ore2W9 z>4W$J7a8PDWwCE|9uul!jYRXP#c>I%>Vb8G=W&@~T7Bdh_0vwP0egiNTiIuOiC@7g zLp6kAR!l8B-K1G#D7T<@PKtV8RX?12>S5#s#n;p*zpFm*+qTnRQbjSNo{3z2jLg(e z1P*yS0fs}A4bjW=`1=wSd zKfko~p)O+X4Y1F!dMMi;px5;6^Xo1$)X8x%5Man~vcwqso4TTaX&NjJ=p zVOb>WNFt{TJ|fwwhiHa+Yqdla;iCme^2jGn~;UV66hL*|0|#VrPOox!h=n30vFPU AX#fBK diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.class index e2c6a0872cc0d80222825deb4b5db1ca4eac1900..9d7aa8d117d44f6c11341776d019f6449ee8a579 100644 GIT binary patch delta 1081 zcmah{OHUI~6#nkC+>x=$qf?&p5ETK71>_aWV|arW5GvpRilZ&aYpSHOa8q_}ObnTo zF8Bp3bi*VV`2oZqpotqduHBm$&+RSLm>4ISx#xWMJLfxdzv~tr`n!&Q9UcK_#g>L1 zjH{S9gGmhv?r7-7l!|F?OzjW@;Jshoi07>aj;M;eyUludMuQKtD&{o!aZiP*A%J-m z3mS?=yG0G9V!f}ST&xc?RA5~6UfSKMU3{p*;>JR{KQz>d(ns8=J^>m9@R%Dx32;NM zL~TY)MVuQYC)5r>UDgm5GAk;cI12m9hhZ?ZJAFz^RWxqL7|xH`)suF7ByMd*;>$@N zhOz3y8rGd}Y{oN;4W~!hrm{_jHY&SXv=NUjC7vfk(Rea4G${BsL%mbLEB$lUYH}d4 zxoO!kfhQRHM2R!$`N5xJoncf6JA0md=cV@(HGRg=nP%+deAEMVku_`E3T;^SN+_D# zTD4cgPCp-F^G=Glrn<=w@#MgZUKpU}lwG5jiT6Ey6!g=Vr-3RAQ0$YN7{rhu(NLK} z_L|O&3R$4R1#9>K#Vqu=@E#zC5^m~Hb>tFqRwBL>LFaVjd0iAr$ZzIz7rIOWW}b^8 z85f%_N@Q3{VVMleDZC)V3JNO^P?b@tCM9Znq9lcClv5!w&E*uyXGsBqYEK3IW_FM| z+M! zah(8w?BjiEwI`k#P)1}gU@RFBy@ls9)*}!NO?_f#D2Uy>ys5 zYjhbX(#`9@0l1_`wG+b_A&Y?uqniTRWBMBkWZ{ei%e;Z%IWQfBObNS&Fd-2_goCIh z(Ncr2pqLlq5^?QMcr6mGT6a8&U0Q7;b+=ZNr0&sbiqyR|?Av16PfV2ePo{%Lok(2MqI-x_=vFRY&^Ty&YOjHN20HRBR}T968WWx%u;#^7lxCf=mapDn3?j{u0=rB(k3el8Q|Y z-MHO>J1TNYA{DBYL|_Fp^kGZIT_tfj)M&VbZJF$ziu)RLY6?5qaSm1yQM(cF{FV-xIc|2;Vg_*0FaoZ7a0&j9;bq6S zZObm{p6`Trq3?-ml{*Ye&z>_&C|Qx@C5Ll&u3WZcDu%buMp_WIEXs3bQIz^7`9S*sE>gUB@3B03SmJm5Qdnvt;_%5q*i%QUSNye{~1WJA2@ z8%I^k2)Rj8*~;%X7-`%#EpH)YC&R0a73a;ufo>j|C;F}l-;6YL0eg zG<}BN#%kQEW$W&q5VZ3crp^Y5rd|&)G8CO@1b0W6Qo}IWBG@kHv|R$MR3QG3Iy_O0 z>bS65KV5X!@{Uh*$sUH87OQ#c@x?HFHplAxT5^O>gzSr_6T!FU?rYRZb=j=EK5O^nq+XI$AeoZ;jfzxt(OyeEIvQ9i2-{3 z%m%NBbBN(45}@rz&m;6_^8YPe+AvR7B~T1tf#j~xh$I%J6VbIE$o{1F90jt#1QNihU!Bm6-?smRXm{nw{T_oa=SG6>F{|9+{hy4CRy>hQov- zgg9D*5v3oCLdMB-wT5e9m2x3h|G5zA#P!I(ImHBd->Bie5Oyk8!*rBkCX6^8l1<+f zz#z@?3SOk|g+ZF+7)EJ;<5;7QogyaSU=p9v)W4vieMOe9X^h{|2%q3X{Dc+!idFnZ z-oImmX~?pE++m~GVpG^=DcoaO+-Ey@z{>PWjL5($buz@Tgj+-b$)b1YE?Lyp{*Amg m(a1fGBz;Ju7?v9}`gi^vHwCgN@Pq#j{PZb-j8-h`O8*5+<)C2z literal 2534 zcmbtWOLH4V5dKD1cFD$+4VXZ1Qs4xL{7BY$kQm$8D_fRrBK(s4kOMI*X=IHf?TCHE zz=N}{+U@ze`|FX7ArbdH7id5UE1tVU#jaX12L=_n8CV^4Q=+RbZlx?`m+$z zA{AhuA6q)MHS27sAmB816j@%!u7N@9XjUpxY1UFC=(ufQ2=D9oK*t@;y4`ZUfE^us zn)P}MNGRY#&3d^7j48l2Fs}AeFmM$s+U##F+MMT}p`P5pBpFzjTLxtv`wWI~ zgfHx>_>?pBB!;&b;`6dZi@uC-_)1VKa5rZcs)RhBkwv?@WxGPHn_%3p2#;YVBi(&7 z@XEsVe6#EpO`qGfo8uFvD+|&$i?UX;oswtTfiE3dlYwVu#mD|9b9S}rO)+TGDw7$N zk(VaXtMF2o(JtM&L-Hx%_}q1ay00`wRt9d7r-jO_?}+O1fql>J#UhdnYhC74a>YIF zyS8x5loGQ_-mmyMx!@G37;Z{sb;;r;T;DBNA>B)0}>*QpL@4K9P$!b+7PKJw} zndYUVqWhkTewSgZvw6GHUGHku&52sLw<<%jOLl68eV6YQsD0*gB&$~LEjudBS}z<` zq+wnP%)`1cqq!idDhda!X)w2K;m=2t!SGg>k*mD4Cj;NiazC?>Qqd&CQkTxhin1Yn z+viEA6!ttP=OoRN%P`uRDoF#}ZVAI=XX|!1yo!`GzGk*AoNOdBOmyj7=A5Q5^i7B2 ze~9bLdOPk@HhG`hZmY?QB=2q38PZ+m-l5_dQT7?;x+H2&+`p1p4Txm^f0Cr+p~EoU zCCg)9Vhkglr@cApi>?f)ep(`x+Ewq{XYEoc%RdUZqh7?slE`$$Go_pr%d!%5MVAWS z--+;XifGqtmwuC+NaKmQ;Vn97X6Wcs*9pX7Aqgr!tw!m~)c0Gu#V}8IEd*YJIQ69)^@!0WXH;592qiUUhn+{ DPve`Q3ZYy?1~8`^TRF z+`y*_ZX+w>qd3+SbYWe=EH-4^lTvHsKtE~j_pin88wC>X$B~nfm*)NmY>-k*Uj&kj z2MYSI8OK8zj}-KyAY)6xIc&>#tl+#z@3hn+&lgmG#c*6tt2iai<9h9b@oCMmi?*kg>{?B?%C4sSo^9DR+jq4*w-$8MbY~c(S;6Cu z;Nvcn=W|)_K?Qq}F!u}x1G>Uu8uFxLphPN1YhzRf*<~z(r zU7GfMoSCaw>{nC^Hw=1UEaHf>>sTkS!jPHF^bIf~9TgEu=2ZkbF_%VW3Ux|26*!Dc+9qompVL2icW4zpD_ zr=1-zT@J+mFiX$gk7ha0vd6$h$j z>Q+^w^`k>-MqChmdbynA&wOr)n}a};*^Xd?U@4hSZwVA3WPuzRdxa~+`$|e#C4WvQ>asscBrYF>pxi>QRk@;i-r@QKSBQhrt z%6)}+ChHi9@{C3yV`O@-4lTqVrxD?wj3qEp$MwknM&v(99#eHpho+lE?N;P96M7w0 zU=J5)wTGxsm+?BTk~B=8B%@T3Ygi}gF($B!_u=9?KF1Wk#5BI550h`H$Ujh7e<9D` zsAeyyYJXw{e<8ydvg|C@*bp|@1n#j}b>;Pv4@;tSN+ literal 2268 zcmbtVTW=dh6#m9`cj?wuLNFy1P+Le<=R!A7LPHZ0-{Lf_X-w=UxCO%6J4vS4J7zDf z#0$Lh0}#CP#tW*{l|bSd@dJ=}gZ>c2nO)oULt_kB^3He8&iT&S@66@bzkd7~z*}e; zxPpR?qL$mqkq6M$fB#1PzBQ0Q$-tY~&{5Xb|A^i~%WZraAsw3rPU5rgu`zIohEnd zR

    1. sfuh_?On?i%I-N+{*mw)Rx8pyGz0HIxSnqwxGmG?R_E&CvgyjE^v#y+bS%gA zOe^rEBRewi%sO`pR=e%3Flei)jx|+}S0?BkaXYGqN=$Nx@G0T=+;xMluih9n8MrN8 z7OJk(eWJ_vtov3PD_CNvj#-cGiu>GmE#a6Y1#1c)9{F{-;j~Byw(ph5AG(}-`F2|ffW*pa^F^Son64XMkDIPe(?V-g)#%yvK|#s5iCk`J6TEVTx%k4ZJ+!wQntugfq$ znkr9QX0Q+#u8p2OSOeaXl(c2cT30x=7&GjS89Y>V)P-ZW#kN})ooI738J5RnKj55p zR#aIzg8$*GeAyj*)wq&83Zhmsmj5ogtM=}hFrsH;@u#|63wu0&_}38d&MS^~q{WY5!|ss9i3 zNZ=|xwa9TE%Y@VMOT2??Y7%YfULdQ|<)8u|&xK%fKOxb`Aeq65WC;Bco*~ak@)#MU z6CoyI&tzj#3-N4hOf@D#JQw3kBgFGDJVWq>7)}#>F@|RezVrw$_Y%EAiBf|^!%UNn zCmGIB0T)8N7E{cSbuq-Hm?cXVu^6cgW<$)!Qx?eidI&SN7AfZ&1fM8#gRWfQRT6N9 zF58QAIc7!Q?3Q4(#%V@$xhs6GZJw_!NMXgE4B;$%YlTJt`74`T=WXfY&G9#H4sKQ=hzpzy- zly(Gm(myFZMB=mv#!sz8a3H$9ICD|v$p&X4Ysbl5zKC7nn$kkBY(Lt9RPb&mH<$bk zI<hruD<@`L^=+ aAJ#+S+V4*|^#0GxSFIG4m4ZZQEcppd5jE=o delta 479 zcmaivyGlbr5Qe`!IVXEq5`=)n7>&kjOyWJ>FR@lIDbfThD{XuRdpkMLpp}gT6clXi zd;kkUuoUwS;_NYoV<9fg>_0pE|MSmd@+^7$^m+FHRHzy<6f{#lMT0}h&_~&4S~C;h zkuUZbG_yW)nt4Nlg3p3x(a>XIMYCi`S-7lOG4xuvs#(*lpP#(N@??X$+V}HpB-mst zxKven+-|+ABNa4a&j;jXXeJ!x;nGhQ#emc$31#D2lEa|nc=(VbCphulWQbv@l*n|5 z>JTsNwS$)XlD@$!-s3b=>04YWI%>g%S37-Wmk;(LdhL#$%Lt>QVvUsLwnm)TmCX?+ jwFuMcGRJ?|;6212BNs8rpEN2A43X zV#pT_k(V9~!x&+VGR7E}8RLvAj40zOV}dbRgCJsTO|do26|ZTS!7Tgc4&l0ndE8+4 zO%<)TG~C7=-nz>{agA~oR4l5vx4S(e`8yF&u_SOG4n$gd_X!%pdO{*3K^O3*fng$c{brj4A0KzM%5*fjL4 zk;~}uf^Ft9qlun`v*rER8KheSWP0gLu0^M$)dvZk2oX;^!@joRF7o-|A+|sv|6z2~ z3j`>Wcf#nQm91XNmnfzW5jXp-Z&K=Ve)_swIbM(txKNE(aHbm7sE(FcBLFXPko1R8 zN4MI7F{(W7YVGCr{>wcJofRm)KwWU%a2aw1$KRvjXh8Xb#-%cv)CyXZ9e1O(ZtN4h z%8qA;Vm)BJAXMT6Y7i@t;1n7$jb{3jLYSq1`2)h?s_;2VP#`x8BHdQCg=n<}e;ExG zoFF|<1+}{rE4xB_!;90w7HD{j2kPz*Z%(1P?3e4OvV0)T&4&=RH8+ML@p9AnjoTp+#(`D2zUj&fEQFGDvE#s%Vo-En2orx z+-F0q%EE;Y;0w6)8Qi+C>>eVraHi^;o}Sa^{L{Z8?<2);zrTD1`gjwfg}xg4Ip;7C z9P5y-TpN#i-(fVoY&SF+B63)5TK{Q7pjkY91X2RyPRLWMlQM6KCPmtt{u#_#oo>IAjH}*A56)Kge!8lv zx6VjWGol291Cl>Tm?25ah~uc2wKtpEpFKslCWyWur%>Ni8M{Km4h>!r-NBSO;#6qz zm%L6aocTn+U-Fei?L!k|k_F=&Dw3s%3F1sj+?4##%zt7}i`b7HH$qu+^#Ehl1Jsu} zTp=!5z6!OwqP4w{z17W1)SRqt{($e_)%nSt*|+NzTm7Fvs>0EKE+KE(3zEEez#&jw Kh$U;)yxu>`+Fok_ diff --git a/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.class b/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.class index a31ed6368b893ed9cc1fc96f28316124ad3ee191..eb578c08eddf18e59bf5fe83ff4efce21185baeb 100644 GIT binary patch delta 18 WcmaE)`$%_!0lN*%bL<2@ZW${1- z1(88eKt%CEA}9&*Mo?5#P{jK}1o1#X!3zbC|9gko71v7D`#rtCU%&46e`iaJ}93*$mfq1a&gFq!}v*(e-`+~ z!ms#EG#?T8-G@JL)Wk6hf8s9_f13mz5~Z5tVIqn%Dc&HjK?%*bkr_|k=7rv=RMJR> z!UY(qFbbm;F2qF&7Yo$N+$5Q+!)QXm0yEQYqNHSnMqI6MK1L`qakX7zRQMaQMqv!b zDpU!K6Bv)Ngs%1>U#`8=NK0xYpTZ@mR#?i5{xmw4HIk)pDQXlZpoY-qvZ}_aU~N@h zO>k({lnDwGSp_9BGbyZ6l!RIKxn}Q_Hk8H^C|%()Tu#WfS6Es06Q-}Q9#<$_DbOG= zSzwC5RSeV?vj`Ph&QY@J*>%s@yMtx~uha}CN< zlusQLb;MkSg$z`HMT!ck$e>P&im60VDV?O~WHcGnMNwDb3}Tj|ZnD0+qB4vmWSmu* zKd^3mR{bT_4f);k&zd-SN>$zXYJ++xI)!@LExwLLy{Md!G@!P2qWpAbeQkY%!fG_J zp@XJ1)aUaR)mHOebZAbtQi=LBcSvlBi$9f6u8%h=F~?3xF6X)%&TW?kk9fr+kJzju zJFO#|tt0!bBRi-go2VoEs3TjcBipAVo2DcCrXxG0BOAhzq;!BGydjs5{(&oqqYrG6 zj_i_-Y?O}dm5ywej_er6c1*>!#yGV(EoDB@G<#+0>cDjVN%15oglljue-W+=r`Z$J z+MhIyXDr?vn9Dsi4{koMI-bw&3a$NQ+EivOO|LjxvPu!pSmR{LXeOVGcjD3YJc`pJ zxjip#;IRR3FeNd?Q4_9BZx@OPc%Fs4pataX#fdI;qD!6VP!n##Ea70{{w!Y( zV6H>AKr70gPE;-J z<~!OGm2bNFcVNEe_GWg|)~D$z`kwV1;O;xfZ}TC&E?ixC?uqhnr&C>dSfH!ROuSlz0~wX^A^B`$QyC29hWX z1(b~<8~dCo!2wc)TcXH z(vWT88Dikxzj;U;;b9OV%W;%^Sj+zgMaL8FMNN0w;57TQK(IRPywX-w z%)8}j3>^_6_Dc`aBJRz_@Y50$(ozIz8T!)lD5a-4N<9d#Tt}&_F%2F{rrwmo5Ab0m JQ|JCU{{RRj#X$f7 delta 2913 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 delta 638 zcma)&%Pxaa6otR@m;TzE7Nuz2Z$*o`wC)jg4jn3!Q;f{2(&-#{XL4HF?E62@ZS zJ&e48*ymSmV`Q?=I_K=Q_FDVO_pG9L7=aS`)SL9ao5ru2J= zGhoo5DMO|Vmys}M(#r^=He)v9*Lxq?9d+ueCYXIyv*~IkGy$qKlLR$WOxw(8=9t$k zu&7xw4QUz`zOAE+lk=9tkc|HP-Jot#?&lAr3)d89_m|V3{MeCOcA+ zR<+s7lJ-oU{AhWDBq72MqyDE$aLl=j%B=v4TB&ZQIYNP`^27!jjl6WtNl=%Zp6EU9 zt_O5Mz$-!!rA*Z8G6HLy2Tx8#I5g2LI*Jxrb9%kbT|BsMgi-7yUgX5eJ8Am|Ga<~- zZ~6kYJ-4IJ(s0HE{_#65ekY1X{n}M@leX76Tmfn-Ut3A+gq#Don=AiTmW2}B+ic?d{|Vo5^N03uKbSo(0) z+EO0c>Q%v16saYxT9hUmVrYS4pS0Rq`+m35(pK8qcZ;d?KeLyxUrO?^|Cu>6=btlY z{+Y{*wP$MMXW#BU31E`kYT+vZd^Lz$@HGox_t(xpO+S#12Aoy+hQc>3yc|RjuW096 z3g1?ERpC1duPJ<2;d=_-SNMU#4;6l-@MDFaDEu@%PW+iRf3ENggxADa{9fS?3U4S}2;z_UQviPs;7x7*MV)_*2k|%j zJ%E3x>!0fSmxX^@_)iei@k)rimx7oknt+J5JeGKas1;vO(!{TB%U|=_MDypbc|F+( zN@0KD#sgo5bblwOIi{FaXHr|OfHX5-; zkh!60M^nYdrcJFCOPV*dtZlQg8+&Z5#k*{**J&FRZdcf-aEHPsh0O|E6yAfaHnu6W zDQs8Rp#yg+yjNG;sqj9mj@x*@Hb0>7L4~^%;tF>w+@o->GJHr|_bJ1Nwe=CKw&WUH zM#*S_Z*9{Z6L|y^#+OemuPUEVY0I@T#zqU?ZOL`E6ibO<$cm<|tu1Xub2hKv*s|4@ zu@bW_v|^oLtTQ_;*J&I}UnoswYlsM1UsH_VcBRtqA{WzA;2qP5$%Zf)7rRCv|wlmg{A%GdE*o!8}{$%K}RZZMlI3kas97RJajq zI`7FiE8a!2*jYSeaV=N_PELCJIg#;?Vqhc}+>d9D2%2=w(SPIKnYRg#4 z%UCMRSc=S8>daUw%~*=fSnADKO3qlS&R7Z$i*&~npK(xs#!`aDQiaA+h{jTjw9w-> zmM2e}1JTPv-0QRt?~0cs5Q}*eD2)wGV4Swfv{kN95$nPD(1cKBHzp=9Db{6v0owF# zOs+ShQ`mDoQxm9)oxrpPop=J%8;)Z}tQRwZ~mht89hmZa!E86K0Jtr%#3n3+~HU{ zd_}%F79RF-Xd50O?sZCXi>A+E9-|H%L`KY)KyC-Ji+f;v`=8)WSb*GEF$>UfxzmN* z=g6n)-kV!7+j3uV4W_ju||iaPgsH?>E@b^WOU z2i=4`_=KCJmc*o%=Y0#yvQ!3-xv34ytDM!J)WTx2j%Il>RRIgNMq#%UVO_LBJ7%N{ z3okEzS6)qA>oN&x6xa-R$q|@>c2>xXB8+Dut2r7%H6CZn;_TZ}suqRs66PVz!a*

      viyC;Evi*we#IBU_H1cv7T(b;?8N7b$mfS)@+we&xb1FuJ<9a)ik&iR-;2@Dt^99hHKZPT18mW6I8@Pu< zSKUJgKJ5lqGgYmbKNgQrX9M?egqd^x(AumU*mEm~wx8@MPlsO}GBPj}c zu&93EF3%w-=S`|f!i@fl)zeQ?N(!YBH#p9A@=9JviIikyrbqt+!TG$Bp1FJ|(im7B zEA7VOZYHlt`((iL)DN}wbB)i=^V{ArfD-$6c|&)+H?%ytKp z4)WjUk&a8cg59vldAM*FU%BYWUFMaGag&wY{0V%X_0Gdle1TU{pPXv9nA$ptQ!I*p z0?Lrlhdk-Sd<&;Tq3A{MU)m)shnH`yg)dq-qtEV37vcBhk@8Cn^5Dxdfi?t>RLD{p a?@yN%5?&=YBOezzpvU(XC->pMc>8~%Wn@eM delta 3451 zcmZ`*30RcZ6+L%mm>-580>dy2GC_(lz)V0uP+UOJsL?1%6h&-pF^P@YG*QxYpL9u4 zvo-#0G)A)+D>0@T3qy#uYE7G@S(>hCo9?Y`y4coquc0yLzWG5u5`a1Pz5Cv~@4S1@ zd&7z5r<)Tmymj~}fI8{0@QrkQGk_I%*1~iC=K06z2Qtu(=M}!C@PdUG0|?+H?Yyk; zZG~49zN7G6h3_eRU*QJ|KU8>C;YSKTR``j+YZ(dRPqq0og`X?@LgAMRzw$SS3!f*Y}UFZBK)%81t-z&VX@CSuID*P#cKjTz7{*sQrYV&XEJRQIr_Io5Uh&Z_X-UC#Sq3&V6aO%DCQa z{|ZkaN@~o!CFeUgrFZ(frC1PmPG=WKTW;xEKWF{Aja{qPb#1iKft5DihgCM-k5x`i zMt-6jn{2Gcl{T(X_gaN(6|PgbUf~9X8x__mtjA3@ZdTZ!uu-8)2X0aLknV7+!iN<; zqVQ3Lk12dy;S&mjJKsk-Xri`wfe@%f{dE#s;N~C zRW-G?l*$AfSK(?)F0f^yTqwwDTfO0$HC-jM*I#?Xnhmy;Nx6+R_@JP|xh;Ew6A!E{ zt;mtsd6vX;Fks6?Qf;GKYHWM}own3slc0f9!%k;fDYu@CO_tQzQZG|%+^&44+R`A? zYr&vm|QEd>&9P zQCOg`5UT|BTBzRrnft`LR2B)U%bi5_1x_L>%iAuCoqMt(a#`M@oA zGL{-LmNGJyN-~yWGM0KWmXb1-s={JDal&;_TV{arGL{N6mLfBjI-`Zw*I1U8HXj0B z4B}?z(Y(GyNfPBTZxR);>?C5^ifij4h053fs)Cb()%~bRqBhoNKIya>{g~WtM(fyf zJ@rXUi55#?xt7h9ay@+Z{kqA&whz=wPAc{8KRU4AdeGTeIRi^~{vz%(JD(1hNQ;wOaN*k7AzVCwc}cX4*my2U zMfoY(z7x4IHd;uEQ+ikqw->_v>y4+7j{F@6#ya{C_jS4zYcZ^K?m?IBLj`k&*#f&< zjvhSV^42UFwh`}}Sdy#C*ygg0L~0v{c`hhp)CtU3j*4P|rmeuuPJwP(sU0)YhXq5M zcSmNe(NxtTjhdU`ZaEH9u$@Wsq6F2rpRF|B(I)I*%i`=+BN7>f?=0pa&B6m-{y@7H zgk3htb)#F;c;UF~%7^M1afwApIpUU$al_mPaytUD8F{h=MRF%f)DE7F)CYe5v#ze(6 zQK>7LI@QDPda5sBZ))*E9?PYoOyZ-N>?M<)F_`qQ#>(We)Ulkbq5_l7R6-u-%Kc-k z+~=O*@pn(|_|Ys5FxHb}#M#{4$|v1qG)6}z<0w}i8)M}mHyK}fr#iGGk%rr#}xxu(i+{t zZ_3I(EKTz1rfo~|ZPq?N%lJI!87Di-*$L?YkC?lgUqIUCBAPb3g6eA24g=^AKg&8f zkhg~w7d|iQ~Hy`n1J(s#<=PK8?dna0CZ%gx61Bo~EIf zhOMvSYs|vEoL`B|K}2K_^DP_=2BT-dzqGSh3NN2s3&$)R*BAKfXW;il81e)cdGL%( iq7A|$mC`Cz{tQ_n1SYM`CuA7ec`X9@*Njb1o>eT zzgW(1R`G{o{<5BFN|{L%doQSF7AZ<+zUGl>kLAiup}cHV7FF`IR{;x>O@s1i(PFx^ zgkB4CTg!;6fEOy_rB?7+E1A+7NozGn#d2w#Jldd;q6(|j1bm};m85DbE^Wi39b{`K zIod_O_7KrN%5;EDI>;8)n4i8gt~%0mngy!Iud{@7-ki&-R->8BDse91sM!<-ye8LQ z=(JkZmQ;2A0=1g~e~Hs!z0RaJV-v=zZmY_jUOV+AeG{l~^;@DFr0XUbx`j^z=3C&f zYlykJV>$2I%fo~fH-~~z=Yi!JGb6#(dXo4QjH#)fbQO;#ddp{GFqvo zjs3J!%N0&?l}0+OdyVUK5u=*~J&fDk2?m*Dh>r~Og}D9H2>%$hFG<*1?<>lf${E*Y T9;%8*+RkI`wp%eXJJjE)f)6rvVPxhl zjSRvj%SW4>8E4;iW%o`%SC!e=Oc}F21Oo!)cWPwb+;^G@27HwmR zBEGYgAC&Tw9sFV!e^RBnZ91AkhE}p#tMDqDJbN%E54+`~T7GI3up`#cu6()`Wl$R! z)<#BE$fP#$LPfk(F`u=CMU_a}rsdi$mrCW)PK6a$L>j!SgoejU!!(2?=N$l#i1?}3+9@ zg>KuOckJbHBAPJup@ie1-7{^bLM3{d`V>m4vl%CCc<5jqofOk${hqUKyD6uK8hWXt zj|R@u#0A^xw`71JE|J8L;xaRq&T)%*#`wrM3ryHwn&cl-a&q4)eV_!>s^F3KGGpaE P)_$H?VY4L7vhbDv{s@JU diff --git a/src/org/usfirst/frc/team708/robot/AutoConstants.java b/src/org/usfirst/frc/team708/robot/AutoConstants.java index 6840d2d..a275076 100644 --- a/src/org/usfirst/frc/team708/robot/AutoConstants.java +++ b/src/org/usfirst/frc/team708/robot/AutoConstants.java @@ -4,7 +4,7 @@ public final class AutoConstants { // Threshold Constants public static final double DISTANCE_TARGET_THRESHOLD = 0; //5; // threshold for determining the distance to stop in front of the lift - public static final double X_THRESHOLD_CENTER = 5; //20; // threshold for determining center of the target + public static final double X_THRESHOLD_CENTER = 10; //20; // threshold for determining center of the target public static final double X_THRESHOLD_HAS_TARGET_MIN = 1; // threshold for determining min value for whether the robot sees the target public static final double X_THRESHOLD_HAS_TARGET_MAX = 320; // threshold for determining max value for whether the robot sees the target public static final double Y_HEIGHT_THRESHOLD = 5; // threshold for determining the stop location of height diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index 53b6bb7..21a72ca 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -119,7 +119,7 @@ public void robotInit() { // This MUST BE LAST or a NullPointerException will be thrown UsbCamera ucamera=CameraServer.getInstance().startAutomaticCapture("cam1", 1); - ucamera.setResolution(240, 320); + ucamera.setResolution(180, 240); // pwr0 = new Solenoid(RobotMap.PWR0); // pwr1 = new Solenoid(RobotMap.PWR1); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/JustTenBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/JustTenBalls.java index 14f3d3d..97ee617 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/JustTenBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/JustTenBalls.java @@ -9,6 +9,7 @@ import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistanceOrTime; import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToBoiler; import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToLift; +import org.usfirst.frc.team708.robot.commands.drivetrain.Send; import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegreesAlliance; import org.usfirst.frc.team708.robot.commands.feeder.FeederOff; import org.usfirst.frc.team708.robot.commands.feeder.SpinFeeder; @@ -31,7 +32,9 @@ public class JustTenBalls extends CommandGroup { protected void initialize() { } - public JustTenBalls() { + public JustTenBalls() { + addSequential(new Send("In Just 10 Ball")); + // go to baseline addSequential(new DriveStraightToEncoderDistance(85, .4, false)); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java index c129cc4..9a115d1 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java @@ -45,13 +45,17 @@ public OneGearCenter() { // addSequential(new DriveStraightToEncoderDistance(24, .3, false)); // target lever + addSequential(new Send("running drive to lift")); + addSequential(new WaitCommand(1.0)); addSequential(new SetLED(Constants.SET_HAS_GEAR_TARGETING)); addSequential(new Intake_Gear_Up()); addSequential(new RotateAndDriveToLift()); -// place gear on lever and back away +// place gear on lever and back away + addSequential(new Send("running Gear out")); + addSequential(new Intake_Gear_Out()); addParallel(new Intake_Gear_Down()); @@ -59,22 +63,32 @@ public OneGearCenter() { addSequential(new DriveStraightToEncoderDistance(15, .4, true)); //put this back in!!!! // turn toward boiler + addSequential(new Send("running turn to boiler")); + addSequential(new TurnToDegreesAlliance(.5, 65, Constants.COUNTERCLOCKWISE)); // target Boiler + addSequential(new Send("running target boiler")); + addSequential(new WaitCommand(1.0)); addSequential(new SetLED(Constants.SET_TARGETING)); addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); // unload balls + addSequential(new Send("running spin shooter")); + addParallel(new SpinShooter(8)); // addSequential(new AutoFireBalls()); + addSequential(new DriveStraightToEncoderDistanceOrTime(14, .5, true, 2)); // addSequential(new WaitCommand(1.0)); + addSequential(new Send("running spin feeder ")); addSequential(new SpinFeeder(6)); //then shoot addSequential(new StopShooter()); + addSequential(new Send("finished One Gear")); + // get gear 2 // addSequential(new TurnToDegreesAlliance(.6, 125, Constants.CLOCKWISE)); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java index 97d4fff..df1f7d8 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java @@ -37,13 +37,17 @@ public SixtyBalls() { // goto Hopper // addSequential(new DriveStraightForTime(-.3, 4.0)); -// addSequential(new DriveStraightToEncoderDistance(100, .4, false)); //RED to close hopper - addSequential(new DriveStraightToEncoderDistance(100, .4, false)); //BLUE to close hopper - - addSequential(new TurnToDegreesAlliance(.5, 85, Constants.COUNTERCLOCKWISE)); //red +// addSequential(new DriveStraightToEncoderDistance(100, .4, false)); //RED to far hopper + addSequential(new DriveStraightToEncoderDistance(100, .4, false)); //BLUE to far hopper + + addSequential(new Send("running turning to hopper")); + + addSequential(new TurnToDegreesAlliance(.5, 82, Constants.COUNTERCLOCKWISE)); //generic +// addSequential(new TurnToDegreesAlliance(.5, 85, Constants.COUNTERCLOCKWISE)); //red // addSequential(new TurnToDegreesAlliance(.5, 80, Constants.COUNTERCLOCKWISE)); //blue - + addSequential(new Send("running drive to hopper")); + // addSequential(new DriveStraightForTime(.3, .5)); addSequential(new DriveStraightToEncoderDistanceOrTime(45, .5, true, 2)); //25 @@ -54,42 +58,56 @@ public SixtyBalls() { // back off hopper and turn toward boiler // addSequential(new DriveStraightForTime(-.3, 2.0)); + + addSequential(new Send("running back away from hopper")); + addSequential(new DriveStraightToEncoderDistance(40, .4, false)); //30 addSequential(new WaitCommand(.5)); - addSequential(new TurnToDegreesAlliance(.5, 48, Constants.CLOCKWISE)); //50 + addSequential(new Send("running turn to boiler")); + + addSequential(new TurnToDegreesAlliance(.5, 58, Constants.CLOCKWISE)); //50 bigboard in way // addSequential(new DriveStraightToEncoderDistance(40, .4, true)); // target Boiler + addSequential(new Send("running target boiler")); + addSequential(new WaitCommand(1.0)); addSequential(new SetLED(Constants.SET_TARGETING)); addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); // unload balls + addSequential(new Send("running spin shooter")); + addParallel(new SpinShooter(10)); // addSequential(new AutoFireBalls()); // addSequential(new DriveStraightToEncoderDistance(43, .4, true)); addSequential(new DriveStraightToEncoderDistanceOrTime(10, .5, true, 2)); //48 + + addSequential(new Send("running shoot")); + addSequential(new WaitCommand(1.0)); addSequential(new SpinFeeder(6)); addSequential(new StopShooter()); + addSequential(new Send("finished sitxy ball")); + // go to lever // addSequential(new TurnToDegreesAlliance(.4, 20, Constants.COUNTERCLOCKWISE)); // target lever - addSequential(new Intake_Gear_Up()); - addSequential(new SetLED(Constants.SET_HAS_GEAR_TARGETING)); - addSequential(new WaitCommand(.75)); - addSequential(new RotateAndDriveToLift()); - -// place gear on lever and back away - addSequential(new Intake_Gear_Out()); - addParallel(new Intake_Gear_Down()); - addSequential(new DriveStraightToEncoderDistance(15, .4, true)); +// addSequential(new Intake_Gear_Up()); +// addSequential(new SetLED(Constants.SET_HAS_GEAR_TARGETING)); +// addSequential(new WaitCommand(.75)); +// addSequential(new RotateAndDriveToLift()); +// +//// place gear on lever and back away +// addSequential(new Intake_Gear_Out()); +// addParallel(new Intake_Gear_Down()); +// addSequential(new DriveStraightToEncoderDistance(15, .4, true)); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java index 22bd196..496c097 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java @@ -36,16 +36,23 @@ public TenBalls() { addSequential(new Send("In Ten Ball")); // go to lever - addSequential(new DriveStraightToEncoderDistance(73, .4, false)); + addSequential(new DriveStraightToEncoderDistance(60, .4, false)); //was 73 moved bot over + + addSequential(new Send("running turn to lift")); + addSequential(new TurnToDegreesAlliance(.5, 43, Constants.COUNTERCLOCKWISE)); // target lever + addSequential(new Send("running drive to lift")); + addSequential(new SetLED(Constants.SET_HAS_GEAR_TARGETING)); addSequential(new WaitCommand(1.0)); //was 1.0 addSequential(new Intake_Gear_Up()); addSequential(new RotateAndDriveToLift()); // place gear on lever and back away + addSequential(new Send("running release gear")); + addSequential(new Intake_Gear_Out()); addParallel(new Intake_Gear_Down()); @@ -54,18 +61,26 @@ public TenBalls() { // addSequential(new TurnToDegreesAlliance(.5, 22, Constants.CLOCKWISE)); // target Boiler + addSequential(new Send("running target boiler")); + addSequential(new WaitCommand(1.0)); addSequential(new SetLED(Constants.SET_TARGETING)); addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); // unload balls + addSequential(new Send("running spin shooter")); + addParallel(new SpinShooter(8)); // addSequential(new AutoFireBalls()); addSequential(new DriveStraightToEncoderDistanceOrTime(10, .5, true, 2)); // addSequential(new WaitCommand(1.0)); + addSequential(new Send("running shoot")); + addSequential(new SpinFeeder(6)); addSequential(new StopShooter()); + + addSequential(new Send("finished 10 ball")); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.java index 1e64b24..f9a4147 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.java @@ -46,6 +46,7 @@ public DriveStraightToEncoderDistanceOrTime(double distance, double speed, boole // Enables the PIDController (if it was not already) before attempting to drive straight protected void initialize() { Robot.drivetrain.resetEncoder(); + Robot.drivetrain.resetEncoder2(); Robot.drivetrain.resetGyro(); // Robot.drivetrain.enable(); // Robot.drivetrain.disable(); @@ -61,9 +62,9 @@ protected void execute() { // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { if(goForward) { - return (Robot.drivetrain.getEncoderDistance() >= targetDistance) || isTimedOut(); + return (Robot.drivetrain.getEncoderDistance2() >= targetDistance) || isTimedOut(); } else { - return (Robot.drivetrain.getEncoderDistance() <= targetDistance) || isTimedOut(); + return (Robot.drivetrain.getEncoderDistance2() <= targetDistance) || isTimedOut(); } } diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java index db18d2b..6b8febb 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java @@ -63,8 +63,10 @@ protected void execute() { // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { - if (Robot.visionBoiler.boilerIsAtHeight() && Robot.visionBoiler.boilerIsCentered()){ - Robot.led1.send_to_led(Constants.SET_TARGET_FOUND); + if (Robot.visionBoiler.boilerIsAtHeight()){ +// if (Robot.visionBoiler.boilerIsAtHeight() && Robot.visionBoiler.boilerIsCentered()){ + SmartDashboard.putBoolean("boiler is done", true); + Robot.led1.send_to_led(Constants.SET_TARGET_FOUND); return true; } else if (Robot.visionBoiler.getBoilerCounter() >= AutoConstants.SWEEP3_MAX){ diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java index 99a0a88..3ae8b0c 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Out.java @@ -11,7 +11,7 @@ public class Intake_Gear_Out extends Command { public Intake_Gear_Out() { // requires(Robot.intake_gear); - this.setTimeout(1.0); + this.setTimeout(.5); } protected void initialize() { diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java index 72a5228..e86c369 100644 --- a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java @@ -43,7 +43,7 @@ public class GripPipelineLift implements VisionPipeline { // Step RGB_Threshold0: Mat rgbThresholdInput = source0; double[] rgbThresholdRed = {0.0, 0.0}; - double[] rgbThresholdGreen = {79.02135918383937, 255.0}; + double[] rgbThresholdGreen = {56, 255.0}; double[] rgbThresholdBlue = {0.0, 0.0}; rgbThreshold(rgbThresholdInput, rgbThresholdRed, rgbThresholdGreen, rgbThresholdBlue, rgbThresholdOutput); diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java index bda915f..c3a9069 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java @@ -317,6 +317,11 @@ else if (!boilerHasTarget){ boilerSweepCounter++; boilerRotate = 0.0; //no sweep sit there till time out or find target rolling forward slowly } + else + { + boilerRotate = 0.0; + SmartDashboard.putBoolean("boiler in dead end if", true); + } boilerRotateDiff = difference; // what is this for???? return boilerRotate; diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java index 3c2211d..924c106 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java @@ -102,6 +102,7 @@ public VisionLift() { usbCameraLiftGear=CameraServer.getInstance().startAutomaticCapture(AutoConstants.USB_CAMERA_ID, AutoConstants.USB_VIDEO_PORT); usbCameraLiftGear.setResolution(liftImageWidth, liftImageHeight); + usbCameraLiftGear.setBrightness(0); //40 for lift usbCameraLiftGear.setExposureManual(0); //was 25 for lift usbCameraLiftGear.setWhiteBalanceManual(10000); //10000 for lift 2800 for gear diff --git a/sysProps.xml b/sysProps.xml index 92ce303314cc570aaf96599ff93f9e0920e9cd97..acdad2b0092aebd31bc278729cac6189afa0cfde 100644 GIT binary patch delta 160 zcmZ2wu+Ct^G-gg$1``HH215qp$rqWdH{W6oV&yktFlDe}Z~{tLF}N_8Og_kAy}69@ zAB(9YgC&D8g9U>*gDZmp5GpV@19dtBm6`(;TY^P^8W`MwVx~Z73B(GM16iy$Kj3@A w#Ollt$`AtNnos^9z%rRfXd1f-P>ThF!RD1hs*J2aNe1W1iDK59`9x$`0J}&bf&c&j delta 152 zcmZ2yu*zV=G-h@)1``HX2A9c!EVi3(F$b~o8!}ijSTPtf7ywB(2Fu9@IjlFAasFd5 zbOWk$W3T{97%(URX=k89Lm+el@?C)bs0sx_eAMpSH From 090d343969611834b49cd6e48d20ec92bf24b564 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Fri, 7 Apr 2017 21:32:08 -0400 Subject: [PATCH 64/69] after champs day2 - no boiler vision --- .../frc/team708/robot/AutoConstants.class | Bin 2271 -> 2271 bytes .../commands/autonomous/JustTenBalls.class | Bin 1874 -> 1562 bytes .../commands/autonomous/OneGearCenter.class | Bin 2692 -> 2501 bytes .../commands/autonomous/OneGearLeft.class | Bin 2490 -> 1797 bytes .../commands/autonomous/SixtyBalls.class | Bin 2573 -> 2308 bytes .../robot/commands/autonomous/TenBalls.class | Bin 2696 -> 2537 bytes ...DriveStraightToEncoderDistanceOrTime.class | Bin 2024 -> 2061 bytes .../drivetrain/RotateAndDriveToBoiler.class | Bin 2298 -> 2334 bytes .../drivetrain/RotateAndDriveToLift.class | Bin 2014 -> 2015 bytes .../intake_gear/Intake_Gear_Out.class | Bin 1079 -> 1090 bytes .../commands/intake_gear/ReleaseGear.class | Bin 1173 -> 1169 bytes .../visionProcessor/GripPipelineBoiler.class | Bin 5954 -> 5917 bytes .../team708/robot/subsystems/Drivetrain.class | Bin 7296 -> 7252 bytes .../robot/subsystems/VisionBoiler.class | Bin 8258 -> 8271 bytes .../team708/robot/subsystems/VisionLift.class | Bin 8347 -> 8507 bytes .../frc/team708/robot/AutoConstants.java | 15 +++++++------ .../commands/autonomous/JustTenBalls.java | 8 +++---- .../commands/autonomous/OneGearCenter.java | 17 ++++++++------- .../commands/autonomous/OneGearLeft.java | 18 ++++++++-------- .../robot/commands/autonomous/SixtyBalls.java | 13 ++++++------ .../robot/commands/autonomous/TenBalls.java | 11 +++++----- .../drivetrain/RotateAndDriveToBoiler.java | 5 ++++- .../drivetrain/RotateAndDriveToLift.java | 13 ++++++------ .../commands/intake_gear/ReleaseGear.java | 10 ++++----- .../visionProcessor/GripPipelineBoiler.java | 20 +++++++++--------- .../team708/robot/subsystems/Drivetrain.java | 2 +- .../robot/subsystems/VisionBoiler.java | 11 +++++----- .../team708/robot/subsystems/VisionLift.java | 5 ++++- sysProps.xml | Bin 6190 -> 6190 bytes 29 files changed, 79 insertions(+), 69 deletions(-) diff --git a/build/org/usfirst/frc/team708/robot/AutoConstants.class b/build/org/usfirst/frc/team708/robot/AutoConstants.class index 9af0f72251a6b237a1c12af72dc6d405fda0f7dd..732854f116cfc61993f49c68206689628fc01770 100644 GIT binary patch delta 97 zcmcaFcwcbBU(Xaq2Cm?6SJwcecwbLHW(Ed^R3s6{2$0ALn20e<%}FE?uo_04$!?65 P><@sdfnf77MoD%6qfZtz delta 97 zcmcaFcwcbBUr&BU2Cm?6SJwcecwbLHW(EcZ0VEN}2#|;_OvD(bMh{5@qQ+*j8)GH= NV`DJbe2h_&9RNaM6_@}3 diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/JustTenBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/JustTenBalls.class index 38e1b3ac3abe7889b5c0c23727f2ee1883ffb307..1daa6b52bd082d9bacdaf8270263d6d28b2eaade 100644 GIT binary patch delta 680 zcmZ{hy>1gh6otRBcW0ep$q!l~J3&c|O`MqDI6uSz>;)$QM1znLutY&58bksOy{YNY zROA_G5Rw-G;sGcq=x7iRfRK0r#2s&9T#y;f-81*xGdlO~*Wtae^ZC#FPrxEK4JVlo zsO4BNWLPv5SqfOz@n$R)pqt-bxwU7|Tnt#z@pO;C5K?#bs{xmEy!E`7*3BO&t>e)Y z7{<69aK%ud9?;P7c>aKyaG9oI%9)4*uD*QtT~{e9mhEpn3Bvg=ZX-!5}mLsGjYNl`_Z56 zL>x^R=`vdVz*sxtSVZJS98bu1@g-Skk0gwzctQ$JBuu8asdmD&z<&m27?Oue;KyzC8X++l$S@-rW^G+?l^v+vN8hR*CebYJH%lYQ;tKyUQ{X{N6{+wbkrp)>}B WsxLf8<6tU>DqH_iD(TA^yYLs_Qc^Sk delta 839 zcmZ`%O-~b16g_Wdc&|>zN@GP3B}j=av|1f0Qcyb676rvGpkgJ)kT469rlT+zcip*% zS;22GF~+2mXyOkrCMNFO7?=DC<9!`lx{#OLH}~V5n{)4*1LH@u@%7KAF90U6s$(2^ zf$0clbSSu~V+^+hX1P_d2m$cI&wY6gbZ`^|EFA`HfucZ3M-*j&If2{UT5G|fBPPpt zxHa5P^ud;G=LHtHb%nBdGG6!{*0~jai8+Y70{6JpA7*qUWUECTNvZL^z=PfWU))57 zVbXu4nErd#A2IRJz#}~Nzq5*JV#)ueWFiJkEHmT?m5kM#jTi2YmtA(e#kn#=lCndw zl3U;Q*6ZH3#I7*R%Z>v}uD9+vc73C~wfWjvaf|L|&Dml|OHQx7@z01>d4S%~k5%J19pFqD^-**-z(5n{ z2scR4`8bBOIEDj^gb<^8)F?rK(EyjiO0pUtMedPIlf;3ZNW&-^F?yo}4Va~YW=P`# zd8?$kMvC9yI^NRHwu@ZXOnd)k(x^H?lgMSr+2l-$`cB?m+sJn@l@2r4-p0%0_c+_d UWF6*Yn|VC3^dBO_jh3*fzY!>S9{>OV diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class index 58cffccd6a04089ba4e5dcff9cdd93415cc15aa1..fe8253b859bddbe2a5b771c7743f75fb824ec343 100644 GIT binary patch delta 864 zcmZuv%}*0S9DTFh?ret!rL=@-B%3JM76MgK6hBxHtRGlF1-hWvVn0}@tv1zbIe63r zGx6fzU}B63O(Zd1Jm}r4(KB}wFUH??ZA;Wi=C?C%-rM=TxBDdYu`~7g*Sq%shVf9~ zG~yhWbzBipa8+Og*K|yCT<1s#aLjPb3JA<`+z{|P?3)7Zi0in;F)z^JKnnt$h&$>< zj^y)HSJl$7#IdZ6eWRObXlC492pqy~9d~rBaNO0*a0Bjj?nr6oiVJ9FuyGPWTE{BK zJ}vNN>1-WpQ`+RTY7o09OKSF@ ziPE08R?_8swqmT7>_WCI*SxQZ_u%aTZG-6(kp%`dJSm^?q2vg~?hG$foWUp<&eE=* zCUfQ+Dhkd~)#^YW&ePiO9^wMV91_SKRT8o-`aUFN0U6W}x9`_#@NL5z-GQ+7$tiua zs#t*|HK;DwYX#9)LwFk@qC{vH4WdU4VxWdWmqPrZCO<}uV>O&`kA|%pPBvMmTvn^$ zC3I19Ve%EFKO=@797n%g_eH7+>|hR`FpsZT#4eKf35%&%W*vCiGROjd45}E%gliB3 z^mLL@Jg=O(Cz`F6l5jT~6&D-Pv@*@LdUQj5u}8_8%E^C~e+ys!N60W$Z|u@<7@&cj delta 978 zcmZ`%O;1xn6g|^EW?r8aLBQz3+5}SDf}lvXAj;#T3Q}to1PXpoq{RxnYI&eLT$s2p z#^7_~e=s42gl8~uVWJD8i3@jbaO=ijpz%&0lrChF`M77!xik07e5`p~H~IPR#(My5 zc&Onl;sTdcBs92iSwkn1Dy|4z)gUk=Ff4FQg9jr5qZ+)DJ*J@&aTO_naShcHn$S># zxKv*kxUn*MVELwsTLP23Ym-i*#`UCLTxd9qw2CQ#+XB;EpD3cx(10No8G$U<{o7br zUSWpoO%A|yXC`(t?x@HK+~xYgZFWSmXEn4V?olx(FfU-N{MvNK&}DsPiTW7wUfjcd zhPuL{VdRV%|8ya@l<}K+|6DF>GK8!z+*dQ2&Y8XW`T4Xl?L`a)hKTiz9knv94j#h- zL$?gq{EsIn+ z$ZhO#2o0%P1Z)JI$d%e3vY|LZn6?^i99u^nWoo9Vr4~M=7AI_+Eb-e){0K2l*@!w@ z?I{}_C05{!L))nOVq8Wy*^U{sTc2pjrR` diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.class index 9d7aa8d117d44f6c11341776d019f6449ee8a579..2b5d4837f3502aab17e3fd468a831c46d5203f40 100644 GIT binary patch delta 561 zcmaiwPcH*O7{;I3t(nbaD-l6xM5rpZT2}ol)h*g8ZG}V}d;woV+KZc>=ET7#a3F3y z_y7_gK;j^AmG}nYovqeh#3u7TGy6WjdEQK`|Dw14^woLnR{Kt{sGy1<4+Ke7Uw5(CHycoIYU`n<%j z)-8z$X$0F6qi}WD4)+S}`veLCMHObRrh}OJU=_TCs2|gV5GD}=!xWtzT1>BdDhA?I zx&LDf)3mqSP0V0co5={4a>7UyZ`_I delta 1062 zcmZ`$T~8B16g@L7Gcpt;uq_%RpfQSkiXlKi=mNDx<@=*p@C&6#6}njJb9v!aWA;fN zNPIU2U)Tf_egMA!qYwIG{0}C^JG-SNQ8$^n_ndq0*_kt275mk>!{7S{06LIS=*OtU z*eQ%Fa7-xlVNzmBn3J2-0f_MDxBA;w5SW&j5#euc0m6)Kx|zhRLI81zIfZK6l}IQA zF)y*8P^0DVDV){uzQQ?*IXqA}k5T=zhr+yhtT$`AnJ{CUUK0N4Mo2u8SQO@h2NfE$ z`eR|%9}_K_cp}VZj}WF8q0o*ciKH;k9JhAiH1#ek^y(u$l~{SR{Z&L^GIZMS_!WDc zm)Rd!O<5GF0G{DF!$g7Syq;QD8De>A#23Yyy~BGbrtL4hmC6>wfc@PUw#R%&VqFUi z7X-F^m8FALYBiZ*XddUgDC(wv$z`qef?S^~SI$Cq%DmA6X!cMG zp;iai_E1O4?S!st9RnQ>I=z-IBD)>*xG03)go7KD7cUq`&@LBkxlZh$3%lgZ0eN#s zt{jm8Kj^Bz5M!knW(IB*ZD7H?4SvKhOqbXGHB;37ao>BrpD=K=I7z%`pr7>e2BInL gI!YE6Pv%)abz+hgCT|xf|2H`Ik3ohz?!iX>0D-)*YXATM diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class index 592d4f2ca79da0cc1258573c7aa4c34e3f281611..dae249f4ec80b782d398fde29c51a9c1f4d0a0e8 100644 GIT binary patch delta 812 zcmaixO=}ZT7=@pkOzs`WC|ctOHK@^oB%vjkYPGRuYU)>NzihRRZIf1O{Z=T58!-s( z)P>GU!C&A?ghmwIxa%JfyHfEN_yfc@8I!nB9JqJh_nvcR&U^0T*n_t6^3S&)fNpL% zM|S(AP+G97{-e-S zd0+Dr;oG{vbwz(2{uqvn<|hGH(3V)R?A(9&EjO24AH@Ql2WC~EYKwe zGmMaBp1mwetoOv~LmB9Wn13n8-*ALwihN>>?~L<8| C(r(QF delta 979 zcmah{TTc@~7(KIHW;Sc_LMq}V3V}qS5-x$NsIWj;Q7Ir)WT8;NRz*t}+b#N{HO4n% z4DJ&qJov0H#)LJR_yhO@MiLVfefQnO%eP%xc+j}X%zT$~X6KxlM-@*3@%3NtJ^*OL z9TlC32n;G1QXyej#aUbu7~z^h0Qz{>rxo{mu7YD!K~&%}@A^{cfostRg-BpbMLDi0 z7#A>>f*Gzwit((#oQir}6-Wpqxi(qc zBk0nu30&t|U9r~U)@}&QbFHda3n3sP5zfpnC8K7KIiE^q7=qM2T;83t%w98{wPw>+_RWO+ zjm^FpBpy%hVsCc@}*L3ET&BKr;1 z?Xd-Wg>U4mja?3E)=<{)9`y!y(BQ>EBY;K+Oc(jG;Un!)`f|GfpLb?3k!`WnVIwWzB%W74@!Q-v#Y<~egIP3(;THo zaoVL<jlCfmL~v-Vsg8FU#^oRMwc*J?}3~OSHxSUmtYDySW zWHdWCr#P?KX`5Wo?54+MJgb<{l-b-xO_Cnl^^)}V7k;hHJ1&zhQ;KQnCG#0grTuY6 zdYJ;YxKOF#vdb04Rq2%$aw&_xrfIZ&XBF2KHv~__7n!D2Q12&YxgU)b`B5iPl;&oX zIpzfeL4MpxhSDtfOU`5S-tvn>Lxy@=Q0f1YW%1F;*~N~9xw*;tnJ8)Q2-+=m`C~|l z&|T*J)$lHVJo4Ib7yX!gD2kU~NG--%jO^ATggHhlf;JN!G)LI;##|1bx#e17FYU&U z=8GJs!$iXLTPKS5Xj>EYzT>WBW0?e76C4QVh_4W-dWVzQUY;Wy1QkJ0X|Po}s#n-& za5W~XHRN!DLpcry_#**6We{~a8uF#aOpc}i)tpDgHm0AV)F0bYo=tI|1|HGGQ<`~c zR$exeu%U)5!_5tre`=yjCzL^vd3w l6w7Qdak2sRWI?ijYdx`vDFR~G|B2IoAqq~J!9ot*e*l*meNq4b delta 982 zcmah{O-vI(6#izr%q+u?Mp{6PO%Vm97$N)w6zu|50V|dtg^H*}5Q}uHrKl&$(P%vA zCMJ6GZek1xn`mP6YCIFXaWe7b!K*R8>9)nh7$=#T_w#-4?R;;)RXy-!KmB_99zZ+p zOPoMN;GBVB2@U5ZdJq*D;pQ*_Xz|dO=W4x>;21S9CNR!JTe%##8D7m<0v9AIaM8eo zz@&r^F@Z}GHJB2(EU{ZPnU>g#h=D6vfvXaJ6}u)8Kty$obMt^()xeCvb%9xKPPq|@ z222^46S%?6Kq1zwiqCV?^&!!Mn+6gB3*4+NfI1ZDmPEJeyeNPUvJ%#OAQMl|&t(ELsl?)3nqi>WwL;%n+Lw<8DeAB2UCyNX zQ`S-@Ze^D2E&VlhzGpuzd01LosJ6C`OE%dm3PfL>C$deFkBDr@&WiP{7Ta~ufxeECrgx}`?Ql@*+P)ZfQ0>|cF)t1| zXmUNG1dEhrN*!@GUR3H{v^r=j;@gY(4nlM~=yFrtbukCWim>A@Z2LtE z*kgY*8nbO!K_?!e3(si0FXKH|dREaRxsy$QUB58pEs}QPzqP)`KxN zi1BSr*ic>*9jA%oirGxJ5>xZMQs*CPPAX4%?zX1napv?dP diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistanceOrTime.class index 54e36d08171e77f0bf96d0d580087c48fbd2a269..0033571d685f6527db028a662fc179972f33eddf 100644 GIT binary patch delta 1067 zcmZ8f%T7~K6kYe#(_T(nXsfLVSgG2FR!bi$mTD1-QtJa$e4qn@)i}YVbYx8G4=}m| zB{5Eoi4(*?;=m8^OC0$L>fVRj+H`Q&+2@?S*IIj@`zyFL-1+(E`wsv`JQXO}2;w}$ z1sjKO(MQp=50_Bpvl-r27%nqh;j^lZSzKk9W0)7H@w&ipjT5eOw8&9i;D&}kd#&}N z*`9y7*c*1v6$nO5uQ(C~^YHl{$wT<;x&zh~g6EPE! zFgbD$y2kQO-5l=(X$pV^owX?nu`6geLa~lf`pAxo$K92j(cViraU3U{q+K0?IOsH! z45s&?@2H9dp-l`RZb8*2D2l@%^x`B=(TWa*NhQdKEMX|(luNuqr-JhAOfqf8tbG`R z)T8j>sG`omtg_umnyUhDKsTJpqLC*D5{MEDd3u9{6kHCA+(!l(mPl^7kHK;oG!#fyNAVvn9&XA2 delta 1038 zcmZva%W@Jy6o&tv3j>o55X5NAg@6~xh=vH!=!jq-DhZlIBVKk^LMe+Rmf#wF09Pzb zsw}sbRc@jwta9N4xX5$(2(Hv~COA-(i~0L>_v!EaeWu?8e+HiY`2FoWfD9fR$e8eB zmgS;}FfREhn)Bf@uJD@8)2l35mTSD0Gm*!2mU#mO9*Zmsymy16n;hLTP}EH+zK5hhr4QLNP)Pqx;p0%~HaC}7s=Yqibl z#`4RCfL3p8KSz|jhN&4k6!t(-h}}WpIK>J^=p$QBJk}Y>AP)WTwh0`>0bjB&j5tmRMaGb%daecJZWt@PI%rL`( zMryhY(`A^BU9Mm{G~J;k9NKHWEMlz#J>6tR#xZQW4BKVcF2m;E(aB?P9!$~6At-+k zgKof5RYA1|$j(_Lxd?6NXcROKeuk$F>F8j$AAYD!+D#E`29j*B8F_f3V@AU{mu6Gm zKbo}bw(4`%Aca8w|e?jLlO~={RD>BKTthL{Sxr+(MSdf_Bx9?zDZ4B+g&^|y@ zKXtcu-uG=0L8Z%s9u9XoNB=cX^ZB0Y+0He%R|7D{)Vx5LMdPPRCYtPLmIC%;IK@K! oS1QrHmwKRv+nX7;H|Y*SC-X=80V`B)wFjVg00I|0R8~RyFE*BCi2wiq diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.class index e3d7632578dfc78ff98e33ee922949418fee0bee..ac6552f3821a181039a0ef532862230c70a53f7b 100644 GIT binary patch delta 850 zcmYk5%T5zv6vuzlPCGDs5I_R~l~w_(l}Z(ntB4d3@Pb#syCMTtvBeg|TY^vEX57fa z#624@A;yId;7geJ1}@yVFrEVym?ppP%(?x~cQXA`@v(C0``@qMfD^oNiE^@-HrgFJ z!o3aRmB*!%E=9NEl%hv*TG6XGqv%tl6#d0S7*K0at+U#3$Yq!j^_?r?yvqeHs(aL- z?vl%8u4w3L5!W>Dx+`U44&x3JtIM5MNdpOo8-|dAFlJYY1Ue24cXz|N~RsQ?X&-#e$9s=@{={78xSI#gN4KxZ5`X9oPj+pq$2nuVl zB~nU^L-JN7l^QurTu!x)NWCRFO(Zs|e}z+4%x`sKdoPTO$x$ zr(_lK64+kXm|SIC)-|!C@&9$%v~0C&k+yn;P<)*_=~8Io%87h+wtRHk`wJB&v*hoi HnXUf-;pA(} delta 791 zcmYk3OHWf_5Qd-A+eeQd4N9URNI_dDmMSWE160aQQ1AwL0dF7$s@N($c-!z3T%5Hg z?%4nd3m5(XUHNx3G0rr__MGJTCNuB%&YU@44*fp3`Qz`m??5jfU0OL8 z=8l%`s%YAkJ2Qq^!@cd#eNHSv#&F;AfQJrUz7vjbW;eXzaIsMG77AX;FlU)3X?etB z%M-;@#WTeMi3nP<*;ZWMkgoa)F>@C971%FDeI$V zSoBjS)vS6eIXGLJ;7TB{x0krw*NdeO>Ej!@yUe%7*9xYWDx4gYM={#R!5Uxz-&{OW$ F`wz*7W3>PP diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.class index 2aab09bdc614e1fab94acc0b7e56eae5e80e4a2a..6ad08c7e674215f04fb3ce72a143ae8e4c2afb1e 100644 GIT binary patch delta 276 zcmcb|f1iIsoCFtx5rZR$aAIe0=43EnaA9X~7h3a8s&;{yZV$cHsj~Fpq delta 309 zcmYj}y-vbl6o#MgYoP%ut%5%>#t141L}Og713#MRq%7#5i9*pD!vKwogNgA1jGY+W zy9f!FqZi;!_@y{FoG0gf-*et?>&tq(S~936*rjGrPtxEp$sR`vpO3FXzY$b|6>T*r zNGsl^BPd4lLZ)ojq|2?z9VHWw()eCp%HT(T&)W}P*FPRq{f0O2uX}A*ke*s~x97Wk zw=;ff8xNd_jKqT&W#Lg`Uzk3~6aaw~U~Bnw5elvZg!%QU1avEo?g8B0G=Zr~?Wa+011 z5&=|2m}9iVG#zFreRhP()z&jK3qs|DtF*GWjO1(k%5g&VL6X@cX5vY^pe{SLY$;Qp sW$HlOC+K{*PMt@xxK05PIK-Mmj0*GOQ3aAAf6KYNZPKh+*fHT5?b2u609f5EE=-c8L& z%vk!&2vw+!W9XEGDxbe8_3R}RIZaeRE$!_WJ?9wh9f_f=|P$H5ww1dfwwTTR5E=wJ__K$J|k)wgJiebv%#%X9H? zcsjbc9!;*!V z`2sEq%vvFHW-6>;m7T}~5k2xVYV!+WkU+xkO@KuhG9+g7_FdggC5%&CGYs4D(Z&8#8$OetZV7iyezuv@M$GXml-{U$Lywv+&T?SgE!n zuYpzRsSdvU1oHth3<&%DL2GRx5D1wRLyJ3xK@n-I2ftYT@oLKgDkTkI;rT-I#{OP>>04x742LJ#7 diff --git a/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.class b/build/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.class index ce3a01d25ade388d31115d641582c84bc10177ad..ca446e931fa12228208f9907d3be8c5651c12235 100644 GIT binary patch delta 2607 zcmZuz34D{~8UMfezT`{NuT4vmHeVzn`ce9!Z||L1t$ zFV8mL-@N3=i6;&Nm?R80W@Dd$N8GSsp9{0_Ed!6bVJ`}gNzHyoJWgYN9P#Dx6384? zz|H3eFR8H~t)|A^~q+*u58x>7QapW62HptDff<9vNE+U zl{K*tzcz5x#BcDHfj3S37K>!8-w6ar!CyYNgIoO`e=zY!{3*ZN6$<Sy^(Xg27a#V9|WTs81L^JBqf;0Iy9TQod zNvz6Q%xDUdh~hHDuoCBBHKt-crXfqKD{(GvKpeMV2DW1+?&O)>LC;=RRMzDPd|V5q zx=3^}a&uT38y?3phPQFsZhVRxXxw}U2_>PEKo>3{vNP01e42I+{&(V1lHh1_{R|u9 zamun7VDUc>~xX9d=e1MbA7SXtQ-f87OG|Y32dsw4y9bE%Av+2 z$Fzp#8UpU>GI1 z7Soj|%Rb8eTiMqnJtf*iBz;@4nMeo1gj;B6rva~^Qia~2Y|tz`09&#EEv7g1 zJtf}|JDy_{$EofY?XRZ&HS{%M8-!)x+CkXV&5>is>-f)Wvq)S^(|HVUg)IX(gTxzR z0jq}01+>YQ-wO95EU;HB5BsftG}`bCnqomK*oWrWNNeOFv~&d=J9mjmCG5O+Hyqt! zoD|RO3b^^mDq&MT%5@93^o~Sp1GN)&-bZ5`8$fH)3ie`R0h9DToE6ZE4~|+vE6|6@ z185?%vtxBuofYWCltYMa*AF7ri*vNeA%CcANK3c474V0&UQE>@+b54!*NqkQkEUjt z7D*%<^dU))Bx3be9gVH}UQA!MEhM^67I<9+YS&tIWSHOYt2^!7u0Yk!U6?NE5qng6 zXenl^63f5s8&wszVc9lIbf4HW)ayEbM)jKI$7^WddEScAd_9!$@<{T`7I-jjq%Oqz z&c;o+nP<6GOyg<46(f=16yByz^1@ZcIrYRfl;`Fs2*Oif_K4I?!g8Q zO%c&uoEVW)$~+A@MpWKS#Q7z=DNiHL%yf zL%~5*YJuYzOHsU!`GXj%QCF{>lZ3ker delta 2716 zcmaJ@33yaj89jI2HZyrin9P#*hL9lyD9vQ)08N=G&?!wRfd=dZh@rML4KW~)2?64Q zbx>)e*3#CoHZ8PTtVUcLf|-Q0Rol8ztJP}Nx`1^TYb&nQ0G|6M#I*XE@5_DXp7(F} zU+$X+YM-dh96xvLaR3WNp%*JLXyAw!E)06mh#><=oM-1CyF{h@@;@*|0UEFHYy zVFW+%;-~nTfu9>VVc?`d$>yECLo3A&ks?^Txu;|2=Jd8rja}WlcL@|v_?zc%n26Tijp z47_OK_gE_}|3Scdtx7hcY1uB1QE&=>H1QJtM7J`?>?^uaYT{+Q!V{VJGxnM|EtkLG zuh~IQMbqE#cj@LICjN;tCSJwAOq{~FfwNMu)4(|s=cynd1Pu$9DHNfaLZcs{3&Rv{ z;W32Q6a~T@ig*{ROB&ha0;`~~$(bScpi3r)+#4Kx9rw)Bl)Zp8^|jy_BL!4=j|E8;dq+j~cB?0G?E<8bCp6^~Ao=*%zl0>IC6) z2!AS}RaMv6s;yNWg_=W9J`%c8Z&cZO(BRIGbR)Mc;`mtYyEWd+eHT#6P>+zp81W+c#w%driMu>(uk zZ%eTUSFqcXxD!|6L)5wlSK)p%;24%u4>*nh*RhF2O7td{hVz3_+HB&p1cz}WHZq_} z^y4OEHbSN2KD3e47{pFGZi3EGy3vkJFsOJVI#@|J-?ZY*49dg*wb;zHfZ?sd7NSB1 zxe{+7DrTrxV=Ix50VgTZ2|vS*VLN>U8GJRm$c1=>i!(?QT0F^II_yN4=c%BnPL!dC zXOXRu58yfmAlPa<^R2=AhTTdDr@oI6xSSm84%y_SBi~orWM8euE=sYl{-d0cjqrNy zb^k*<-_^TmJ@wyKWTjtkojn$|mR7u#{2&!dgNFA|`N1Y={Q!QOtMo z>$D&dw!n3!%)KZ;BHEWQ7LSU7>*_dW=HK+KWb`aa9cSM~%p<*Uqq@Jj8=;$>FZ zy#9j}#+flJYPG||i06<{M{v2N=3kt&!?rbo#ba2&$d)9^?Q+{1#?qs>V!wI>$zfcn z)JKAmz6&hXlC~9$D8pE$#P-+Ebgm&g9Gpq!DkYX`tx_-S)L1G}VV6_bt{6r`%f5&h zIG^J+W|eKV%Nb$z_CWcptNScp{{bwO;Sm=*$3tEIw9dh@PX}iBmb=ih&lUsc9=cHL zGl8^IYo;I1@mIwMS*4l$a1`JUwoCB2t*a3FxF1zqlFq(uyq$c%h4k`q?ppb3%9@1=&VK_Ynvt-D_+H_am-f8RVe2< z1JewA+Q4TN=g+`r<&%490Q^X66Q9!0@l=aGpZ{_)f=cO^f5s79GlCVeNCNWnB7biJ Pvzd)KWWGS`!Xy6%?->W< diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Drivetrain.class b/build/org/usfirst/frc/team708/robot/subsystems/Drivetrain.class index ff7b7c5599eec582f24f195e097a7256a3633530..a943323dc2a0da0449d9eabce1b42b2d11674175 100644 GIT binary patch delta 2960 zcmZ`)3wVuX9RK~#cJ_Ve+dG@hZf9(>88b09%z7S%sOQP03pF8YnCnNfgpW_ed9_*8L*-|KIcZ&S{;V^E|)*`@Y}*{k^~U{r%tf%qTwE$+!Rf z)*S%aQ?Y@KCTcA7$0iT@VY5K3z>5M~1YQ!@D)6#_Z5E=jT{=6YwbQ^Z1G_E6;uRTu zRbY?6UV+yPylx>0`=s-R#jxMNo0bn=9FU=d0&f|3JE~-;YPav?sW~!mNazk*oODEB zr*z*jaMXk5c-LZhPqN-O@PUQAz`Dm|3x3%}r3 z(fpgh?;iYtKTZ5);T--pabDsDlhA-!h)i-B6k$+g%|bFGDWYbndkVFzCbvQ<1}NNs zfeM2#Sm8#2u`*UEW8*N8knLY@CHdD;OsqmRCM#Tr>lH;|vVV+Gl3b0o3PVt)aFal} zz)+O=cNv8-)nq6P!*GRVn7r7`>QGIlLIp-BjKm05H>P}Yd46U2_>uX2$|sFd7{$wz zhZ)JjDn-$lO(^uwG}8UmW^$aOI95On6-HwWA)R$4`^zGX<_hCcrEs&rEdmn+CJIbq zpm^aa(LCqPY+nL3Qj|zZ1|=&>!8}E&5Q`DSVD9WXlit@19pjL`55zf|_t*DL6&sWqI0|<#d`e*hWKdiWF zc*TUwg3KPHCr&CKKdi!_c8Ut9kl^k7IUU(N z9oat}**YEBF&)`79oZ%w*#?dz1q1Zv1-WSS2d*2A9dL_Vy1GoxU(BsQb+N{C@J28n`Ba zlVdjd>|55N+d6Is3PbNGouB<+xd$aafF)Yu@ucFQL`p;qB_o@kyd3iCd0qHmfLupn zE*`Wc=3=RqC|@7a5~U@w4a6V~4|B_7UkcYbWJgE^@+)ua9>*Su?!r9(vgD#7u^@@J z32Fw5a?prcu#Q|5P|Fbgh0YN#w=FSK`to%xP08pG++}AwOD<$1xOy8{aen0$@y1=&3_`Sp^a;CWj#ZwZ^-c(-M3^ z7ZV&86Yw0@qPWQakdn^_(nj}z$c^Y#@5Q2NA!|iC6}JX!?YW&f%3JJCt3j`SpN>!d zf+A^#W(ZW%#V3#R@dE!1ijH;8L5;SrL4JI1zQE$w7W65N@5>#}7F<;te|26hu9>R` zujOXRLfsCo8n`q|`Qk1^GId^#ELwp!v@&E5`Su=MSg%WA1I2QThl^sUBQ@Zsxel?E H(>3)U3%15& delta 3008 zcmah~32;kq8Jeo zL>2+@!~;d6D1nHGh&LVxDjs;F;sJt+Cx>A7?DBUjwN=(uy`Gsr-TiuA&+N`#vwQpA zI<|2$fbP`CK%0qm7Di&d3sqUk7j3#H>66bU(Y9d47 zB8*nJ7-JMJ!KDgg1?psNvaHo(3?Xl^nc{Dy*m#8|G%H+)QHo47`)iF#ZxfzUxD1yo zR11s~7>~;d-TbBQJpW{eTinQ{a0O}sUn1rhcS;B0MY2`QIYK3bA8U>~ZOcj{M zKuKsJR5G6|{}D6KmrN;&QYp=#bVXjwQR2?OO}siJ)9V$jKo3aLm@F`c65RJ0n@RZ%yIS%MZtr-^^5qB4voBoC^}8C*Yp zM8g#|jX9+`gC_FXQPh(v2(bg|>L!ZcnGJOf zjS5eowe2HUB~kCT6!*HQ=+g-mTxx~i8DGH-IFj#QDjXsjj~t@6wk)}}th%-=ytXW* zwydVMEU31uskW@5wyd4DET6V4n6|77Taq3EhH^sgBmIF}iLDDPmA0&wwk(*oteLhf zo3^YR+s+({n~rgMn~|`HXoi1zrzbLI@+ZZMARlJoTAmTE3vBa`^<+Ri5b_H9N7=C%cLf%~%`UC8OC~8E4|r4Lpj{BRM@MZsf56XGwxP z!Q?I1V~zym#bJoy&w#tQps08qobBlQ3{M>h@!G`vUeLU9bWAs9NPts{ zX|*ef;bmZJ*y%d$)4es2mcRFBYNA9;ab?DOI6EH1JA6{x!kEO^HN?ofq%+SCN}HdY zt80kUN45hd-a`W345eB+0-u%Yt03* zdqAnF7t1~9&n*lT+Jp+REJ&yj%QYeSdY2|7BOz%Z78zKjnOqSs#8bf;>Hh)3>(e>_ diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.class index 09569173b7a3db199b11de97ad822b479077d092..fa10248a2f638149ab71a1b64559985138890f86 100644 GIT binary patch delta 3305 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 WIU8j?m6gE;mJi8= AutoConstants.SWEEP3_MAX){ + SmartDashboard.putBoolean("boiler is in sweep", true); return true; } else { +// SmartDashboard.putBoolean("boiler is running", false); + return false; } diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java index 9fd05a4..9dab2e9 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java @@ -56,16 +56,17 @@ protected void execute() { // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { - if (Robot.visionLift.getLiftCounter() >= AutoConstants.SWEEP3_MAX){ - Robot.led1.send_to_led(Constants.SET_TARGET_FOUND); - return true; - } //Check if the sonar distance is less then the target Distance, end // if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.wasCentered()){ // if (Robot.visionProcessor.isAtY() && Robot.visionProcessor.wasCentered()){ - else if (Robot.visionLift.liftIsAtDistance() && Robot.visionLift.liftIsCentered()){ + if (Robot.visionLift.liftIsCentered() && Robot.visionLift.liftIsAtDistance() ){ return true; - } + } + else if (Robot.visionLift.getLiftCounter() >= AutoConstants.SWEEP3_MAX){ + Robot.led1.send_to_led(Constants.SET_TARGET_FOUND); + return true; + } + // else if (Robot.drivetrain.getSonarDistance() < targetDistance && Robot.visionProcessor.isHasTarget()) { // else if (Robot.visionLiftGear.liftIsAtDistance() && Robot.visionLiftGear.liftIsHasTarget()) { // return false; diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java index 7b9641a..7d254e7 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java @@ -12,17 +12,17 @@ public class ReleaseGear extends CommandGroup { protected void initialize() { + this.setTimeout(1.0); } -// + public ReleaseGear() { - this.setTimeout(1.0); // place gear on lever and back away - addParallel(new Intake_Gear_Out(), 1); - addParallel(new Intake_Gear_Down(), 1); + addSequential(new Intake_Gear_Out()); + addParallel(new Intake_Gear_Down()); // get off lever and go for some balls - addSequential(new DriveStraightToEncoderDistanceOrTime(10, .4, true, 1), 1); + addSequential(new DriveStraightToEncoderDistanceOrTime(10, .4, true, 1)); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java index 20baa90..59bae74 100644 --- a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java @@ -28,7 +28,7 @@ public class GripPipelineBoiler implements VisionPipeline { //Outputs - private Mat hsvThresholdOutput = new Mat(); + private Mat rgbThresholdOutput = new Mat(); private ArrayList findContoursOutput = new ArrayList(); private ArrayList filterContoursOutput = new ArrayList(); @@ -41,14 +41,14 @@ public class GripPipelineBoiler implements VisionPipeline { */ @Override public void process(Mat source0) { // Step HSV_Threshold0: - Mat hsvThresholdInput = source0; - double[] hsvThresholdHue = {37.7043113245079, 93.36633212673053}; - double[] hsvThresholdSaturation = {77.96510683088461, 254.9818279249991}; - double[] hsvThresholdValue = {56.50179856115108, 255.0}; - hsvThreshold(hsvThresholdInput, hsvThresholdHue, hsvThresholdSaturation, hsvThresholdValue, hsvThresholdOutput); + Mat rgbThresholdInput = source0; + double[] rgbThresholdRed = {0.0, 32.0}; + double[] rgbThresholdGreen = {105.0, 255.0}; + double[] rgbThresholdBlue = {0.0, 255.0}; + rgbThreshold(rgbThresholdInput, rgbThresholdRed, rgbThresholdGreen, rgbThresholdBlue, rgbThresholdOutput); // Step Find_Contours0: - Mat findContoursInput = hsvThresholdOutput; + Mat findContoursInput = rgbThresholdOutput; boolean findContoursExternalOnly = false; findContours(findContoursInput, findContoursExternalOnly, findContoursOutput); @@ -73,8 +73,8 @@ public class GripPipelineBoiler implements VisionPipeline { * This method is a generated getter for the output of a HSV_Threshold. * @return Mat output from HSV_Threshold. */ - public Mat hsvThresholdOutput() { - return hsvThresholdOutput; + public Mat rgbThresholdOutput() { + return rgbThresholdOutput; } /** @@ -103,7 +103,7 @@ public ArrayList filterContoursOutput() { * @param val The min and max value * @param output The image in which to store the output. */ - private void hsvThreshold(Mat input, double[] hue, double[] sat, double[] val, + private void rgbThreshold(Mat input, double[] hue, double[] sat, double[] val, Mat out) { Imgproc.cvtColor(input, out, Imgproc.COLOR_BGR2HSV); Core.inRange(out, new Scalar(hue[0], sat[0], val[0]), diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java index 0c10eb5..595c2e3 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java @@ -403,7 +403,7 @@ public void sendToDashboard() { // SmartDashboard.putNumber("DT Lft Master", leftMaster.getTemperature()); // SmartDashboard.putNumber("DT Lft Slave", leftSlave.getTemperature()); // SmartDashboard.putNumber("Sonar Mode", sonarOverride); - SmartDashboard.putNumber("DT Encoder 1 Distance", encoder.getDistance()); // Encoder reading +// SmartDashboard.putNumber("DT Encoder 1 Distance", encoder.getDistance()); // Encoder reading SmartDashboard.putNumber("DT Encoder 2 Distance", encoder2.getDistance()); // Encoder reading } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java index c3a9069..06ec143 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java @@ -166,7 +166,7 @@ public VisionBoiler() { // display the current image on the driver station if (Constants.BOILER_CAMERA_OUTPUT_DEBUG){ - outputStreamBoiler.putFrame(boilerPipeline.hsvThresholdOutput()); + outputStreamBoiler.putFrame(boilerPipeline.rgbThresholdOutput()); } } @@ -365,11 +365,12 @@ public double boilerGetMove() { } boilerMoveDiff = difference; } else { // no target - where is it? - boilerMove = 0.0; -// boilerMove = 0.2; //move forward slowly +// boilerMove = 0.0; + boilerMove = 0.2; //move forward slowly } - return boilerMove; +// return boilerMove; + return 0; } @@ -486,7 +487,7 @@ public void sendToDashboard() { // SmartDashboard.putNumber("b-pipelineSize", bPipelineSize); // SmartDashboard.putNumber("b-stop at distance", boilerStopAtDistance); - SmartDashboard.putNumber("b-boiler current height (y)", boilerCurrentHeight); +// SmartDashboard.putNumber("b-boiler current height (y)", boilerCurrentHeight); } } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java index 924c106..d217360 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java @@ -237,6 +237,7 @@ public boolean liftIsCentered() { double difference = trueCenter - (liftCurrentCenter); if (Math.abs(difference) <= thresholdX) { + SmartDashboard.putBoolean("Lift is centered", true); liftIsCentered = true; } else if (Math.abs(difference) > thresholdX) { @@ -372,6 +373,8 @@ public boolean liftIsAtDistance() { // if (Math.abs(difference) <= thresholdDistance) { if (difference <= thresholdDistance) { liftIsAtDistance = true; + SmartDashboard.putBoolean("Lift is at distance", true); + } else { liftIsAtDistance = false; } @@ -430,7 +433,7 @@ public void sendToDashboard() { // SmartDashboard.putBoolean("L-Has Target", liftIsHasTarget()); // SmartDashboard.putBoolean("L-Is At Distance", liftIsAtDistance()); -// SmartDashboard.putNumber("L-Center of Target", liftCurrentCenter); + SmartDashboard.putNumber("L-Center of Target", liftCurrentCenter); // SmartDashboard.putNumber("L-Rotation", rotate); // SmartDashboard.putNumber("L-Rotate Difference", liftRotateDiff); // SmartDashboard.putNumber("L-Distance Difference", liftMoveDiff); diff --git a/sysProps.xml b/sysProps.xml index acdad2b0092aebd31bc278729cac6189afa0cfde..e7000310888b38e9f97823d1c9c8f9931c3ff3bf 100644 GIT binary patch delta 53 zcmZ2yu+CsZ37?`9g9U>L5E=q$10YmjaAh!MFk^57i&`)^Zl1~~%ED-}d9_e8D*zjF B3Qhn3 delta 53 zcmZ2yu+CsZ37?`PgC&D8g9U>*gDZmp5GpV@GZ+G~6HvqiC}*&FDxW9|qs8XcLd~oI D9!Uyb From bc100935f95cdde48ba47bce2dc59c7a75b5b250 Mon Sep 17 00:00:00 2001 From: jpiergal Date: Tue, 18 Apr 2017 21:15:03 -0400 Subject: [PATCH 65/69] before worlds --- .../frc/team708/robot/AutoConstants.class | Bin 2271 -> 2362 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 7105 -> 7105 bytes .../commands/autonomous/OneGearCenter.class | Bin 2501 -> 2501 bytes .../commands/autonomous/SixtyBalls.class | Bin 2308 -> 2319 bytes .../commands/autonomous/driveDistance.class | Bin 1731 -> 1329 bytes .../drivetrain/RotateAndDriveToBoiler.class | Bin 2334 -> 2227 bytes .../visionProcessor/GripPipelineBoiler.class | Bin 5917 -> 5906 bytes .../team708/robot/subsystems/Shooter.class | Bin 3019 -> 2885 bytes .../robot/subsystems/VisionBoiler.class | Bin 8271 -> 8340 bytes .../frc/team708/robot/AutoConstants.java | 3 + src/org/usfirst/frc/team708/robot/Robot.java | 1 + .../commands/autonomous/JustTenBalls.java | 6 +- .../commands/autonomous/OneGearCenter.java | 72 +++--------------- .../robot/commands/autonomous/SixtyBalls.java | 28 +++---- .../robot/commands/autonomous/TenBalls.java | 17 ++--- .../commands/autonomous/driveDistance.java | 31 ++------ .../drivetrain/RotateAndDriveToBoiler.java | 19 +++-- .../visionProcessor/GripPipelineBoiler.java | 35 +++++---- .../frc/team708/robot/subsystems/Shooter.java | 4 +- .../robot/subsystems/VisionBoiler.java | 10 +-- sysProps.xml | Bin 6190 -> 6190 bytes 21 files changed, 75 insertions(+), 151 deletions(-) diff --git a/build/org/usfirst/frc/team708/robot/AutoConstants.class b/build/org/usfirst/frc/team708/robot/AutoConstants.class index 732854f116cfc61993f49c68206689628fc01770..6b7f9eef1faf4f313bbfac0ae2a2a445cbdffeb4 100644 GIT binary patch delta 657 zcmYk)%TB^T6b9gbiUmW&L=76AK;uSZj0P{k(vDIC7TThCiQ@(D_bW>tf@g5yl8|V^ z!Uu5W8~7&1GnnA%V$$!-f6gSGeh;(4EHfSG?Sx7I#p3&&X+;X z%R9=JYoYX2)^qdH7a00`QN9;ip;SRpN++86qCxbu<_y~ydlcxmDsG@`s~~+#xlS*h z1QO*S%S+FVm!8+iDb5-tvnnQAZ)RE4O$bD3l7R$Ln8Cki$!QFC_ov8n%=6?0mR}@i zn3u>|<~Z4AcF4usc{pb*6sC=L`ve4q%itr%)m8l%Nm)K**HFVJB(;6$XbPH}k{BH*BnH=){k8>fXJ@h^3e*LvS0nFejgA{HY+&Z{xx?{TaqCGu+uQ1@1 z{UFME#eB(&{9G>{6#BzpMM{tHPtSX*inI9DRMlkb*MzDt423jzYfNJlv*_|1c^;42dRa%E?RP^+;4H2=NrVWO+K1z#Ng^(C^vPlg61MFD*RAMlRy@}0N zTGYpcozTsMi7v!DKTqzfnyF^W%eJ-2K3g2HZ3^~chr!D(ZIlR7HWm9Qc|w3wVw@A_ zf?+D8xFpLJGhDMkjTLTL<&HJ(%}#jEdeFwBHl9q~37Nm}Z17ndFLd*&oj3ZanvG{O{tSsC!@}YI-}~0 TsWYz5gw`h2$*Ge!rC8!0&do$= delta 313 zcmWN~yDvj=7{>AMtF%sCqSBt8wup$qsS*-xky4jfg^(C^vPlg61I(EELt-$AnZ!gY z)TK<=iOXcdMjB(DH=7M?3EO5ml*QOAjv~IL{jTp1eP^vtJbdBf+qjXuD|n@XTJg{*l{ivGi+E`lA91OsNBpFuhK$si za^yD|q(MToimgkS5pkH32sw$eBuy+!Ge$bt5tjq$q$mk4rQ7^O^KPFyNp(`{q}AzH VXF#1nbuwBTQfFA5tl5Yq{sE;mL?ZwI diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class index fe8253b859bddbe2a5b771c7743f75fb824ec343..1a7dbd1d9877fcff4e85d42e101abd6628477a1a 100644 GIT binary patch delta 18 ZcmX>qd{lTsCu76JE;Xj;hK-wqIRQp$2Iv3) delta 18 ZcmX>qd{lTsCnLkeE;Xh&hK-wqIRQR=1?vC+ diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class index dae249f4ec80b782d398fde29c51a9c1f4d0a0e8..d119214ad44c2624f0512ea3793a16805b392ed8 100644 GIT binary patch delta 884 zcmaix%TE(g6vlsdTJ9Z&qDifosEH-wBT$1OKt#cgV(|f05EN>``oJfOkHoMsDKTyh z!CB$PxYva-VG>Amt??g##Ke_l23aOh&d=BDA6;r9HmRh=WN==9!LZC=7^sLOFD!Cj^lgOysz zO2=~C^PX8R#oza~#h!?t_U2-Jc8&)L9y0aeTWr!A>lV?1Q$w7iWKp=1wa8V$eJ{r1 zm{?sYG;&|Ug%c^RvaZ1RbRi7uqrlcF}} zQx{g!QrWbTye}fx2T+Rrai1;GtmX)o!7Wje5$*w>)3Pb#0n4gTQS_-Ox zan;0xYNe#QnO;{-^{lBDr;n4NYGlL*a$B*tf!(0@)vxP-tZs-|t6aV%QjG4)j^{I7Q(fiCX2 z#&7Jaf^EIE)%j==?$zLwn=##xUm6$hgBv!>PyR zHI)g&r1qL(*kwI_)cUmHj7u}V!<6>=W7MIfy`kEE+M#SXtG&%NZ9Bg9rsGU|D{I7a zhV$B6TVr+N8!otXQ*^kf4VMg;gOvK3D$pA&sKNRIR~op=HN{9UthNOuD=XObVAgsf z>y4l}bx#+#spzZ1pHfXCxz)h!NYWPksN3+y*ad5{M?8y09X9*vMR7o~tV|Wn*Agu9 z5_PrEf+zci7^IJbk}2d+5=E#!;6|9r1uyhWWkpEK9ChvQvHWyvh#e=|&#)=OvQ$WY zTxpid@}=Z03Ar(XGHkU&Rwcc*C$KbbOOkfsWzvU3~6#2|3-x%X36UyML3{$F= zlIozWdc^X?GnHHP%%)$ovDrIhjm)-EucElb?Yn=JQtzu&?Y0@H+5PW#npvWhe_&B~ R`2WKDe-SEx^g3e0~SQ+uA46U2l`9IGcz>?v={E-yyu?h@}Bdv`^0(o>+1XhSYXAWpJx^m zHW>$vNryhNHaUwa2aCK#!CZfPDb3)}Mc!PuLm{e^pso` z+!F~JPb8XQVT3`+*yIWc16epESW{(_(v^1QX&RLyj!3D6q{U6_z@@?*H>@ z@RSj8m}&`}mn1N&>Bm9r7<07))!OK2d(8jtXQKmDZ7_WoEZj~KZMJj|sTd25jb8(M C#Z8R> literal 1731 zcmbu9-A)rh6vzKl3fnA|LIqJot=}ymi-LfFd^Qrb(P$NeH)PrlFu2{t{eZ-4pTHOJ z-gx5;O*HY&8!vqTUqGJ0cxIQbHSwd7CObW6&isFS=A4=R{Qdn$0ApCx(TALdfdmG1 z#4x1e1g<17tifoTrzPsAL&Hb{S2bMIkwh+mQ4M1{Qp&upVO&RAnG+f&b@U*oAU6`2 z(lD)IhC!E>^dvXs3&GHm&8;xRm+T5Tse-h`J-=EK&LdtjX(nB;%iLVyj#U1^WZc`7 zF2h2>b~X&(U6+pQ8S75j@C2_;j7%DiU9vr+Y*(w?s<;OCJ=?OYw(lAhNA8HcbUkjB z#WX|Pj7nx!CFR~C)7=!6AgQM`3XAM^X?enN{B2J~^rG!MWpPUe$^Akb-r_qviF4>@ z7;iGO0N^=XT1GK=Tjy;nlW)vX0dFQTi#djlC2pG1+Q{s3>1D1lXsehl}b@O_l2ddA3?K)rm%rHp3N)9 zV6z%pjk9#~`+|=~E8;kbelVOOe~=!go_93FaGJ)pVB$2+kev*J$Php+q$@=u30VoP zL2Q4Z1~%{kvDI`-4e>p+hE7}LXsg{w)SyS9_9&EGt>H*C{})L|BuSB^vl&TOBuSIx zXfu-TNYX=+W2rs#hMPGa27cD)A-bs^87k#Dbm0Qk?IMP788?tc9wT^wt60M*O!}1X zVjM3qfmalLjVZjr3~IQEPng3O%;PKW;2Z8X)O-J+-f^5KcG##P`e*dcSj$^AHgxKK ggEAH=FV;Kt=N3O|5VA;k>EFWD-v}A)Ugeej0sa4{WB>pF diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.class index ac6552f3821a181039a0ef532862230c70a53f7b..be03627ca30cefb22745bd504683ec7b79909d5f 100644 GIT binary patch delta 932 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 Jlh}cE{{Xa()>Qxi diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class b/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class index d41399719054647570a8ca08a00cd2b9f36530e1..82e4670557b456ea01a401b7cd204e77fed04e2e 100644 GIT binary patch delta 1088 zcmZ`&OHUJF6g@MAdHGS38X=WLYru#_EGiaJgep`}S^+_MC@8ceqR1d3Dn5!&d@GJF zU6|<3m=Kj17sibn{RQs*1G+Ua-aDO48xy;@-|hX*Iro0&X1Hl^m46_LqCT@91e3B&@qT3oE>G{kTOe({NvKF606Am zQ$D*1ms1?l%6w*d%v5pAz^ZJ!5pH*!!zgQ=;ER(Q#tfXoxCYChn+Xl4nLerFjEbp+ zAHO7D6t(tuxv@KnxWEQP1ga5HaaQ0wE(pxvqQE7z2wX;^z!lUAWH77Zs=#&J5V(n3 z0&@(#jXMH&IoxBd`*>iF`9gggu}NSvY6P}$c*xL4h)d9u*0dRFwXC#?#{%Ud(}m$&R(jub#J2^K{enNwxga- z2|KbV$}64!R9m1#Mjb`P0k;RFSTw%011avOgg|am%~{M zJBcM>m&;zFmuGV9c4BuByYoNnCYRleIQJ&)2I{~)lyK>Ll;tKjoN6Cg)}N=Pc#|kJ zNsTkf?k2RjViBi6K8N3->@}(8yD*sNLZRnEt84O4eMKd|BinZv8d7<9-NV!VxtSd` z!nBkjqht+xoAoK^O&25|v(vS?K0P-E2>;tC&E)V251$}B`~?alqbE#*3)Kq z>Ha{N9;Pg!@&nfP{Oi>Wis+ljZQAdu%h*R;8SOYnXCOdn4+&1kg7mTba4i=63kJ!B A%>V!Z delta 1225 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 delta 3751 zcmZ`*31F1P75?6CvVXGqLz2xVYz{&s#K49m5bi4pcaSR_3gHsO6cH3eDAh{0R9jlP ztUncqLR+-Nwoy!z4FN3DR$8HgQtV-CtJd06TZ?UNk&54&{R7(+0{{1B-psuB=FRtJ zcITLvY9gmTI&uuaAX#MLg(RHxVO=e30~>_NhkbS;V%mBD7>riS3mxS_mc4UB%Igg`>Om$#E*aCUrG2t zRsUAie=J zEGe+0XX_Dp$190WQ{o0GXzl5n=kXUZW}b~D*EyS#miV?vFF~nuS6YFSn4Ffn2#akj z!BQKyV5xIma#myuw%TaGCv2=#^(uus6z)`5t*}PnE`_xUcVnH6^$MR<*r4z!9k@r~ zUiI*4h5HmXDttyEqVQRTO$wh=xF5F?A5aUQ*ZvpO!e(uK5sNJ;vZc2a3lf$sy(xp7jl8SUZYfFC_WMhjAwy_Mi+A;)N1;aQs+j-63J2VtqEg5FZa2a9a zOB&5cTSm!fCp{%MTxCnO)Yy2Cp~@H;YsolU#^XsFH>+j>cG)sfCJAz#2h($VT2gDv zWVykTLR+SAk1|zZn!i* ztY3GxC9_*kr%n=QO;hlJqc=si6!gLrkA3Htk_0l695RwL0;%9pDj5aYWF!e?BspayX=NmtWhBXEB>80|DP|;DW+aJb zB)MiJ>1HGuXCz5yBzcE=-SPddg6uN`B%qPxppm4Zkz^tzlmkZc%qg=VVCfLI@osn% zKDHov&V|hFksu1A=oRi3MNv2{ir(QMilZo@=o3Xa?2V#S2m5KOOk3p&72yu_4-5!Y zwqsxvgTig*OQK9}$KbhUbO?K{W@r?{!bdT@UMC*Ki26eq89sthK=2SoM^Qz6RXeI% z7_0}|ot&(dk)5c;9!$nQ+<SN|6Fl6R0QM8;1>8v+^7-}NwGZ9hcFFF?kP=RaqA;t8(R0%(r95!By)j?eO$e5Bz~~r@ahn}3VXoa6vN=1unfBE0E7=v1PQMulV>i!OBdd+`n}URk zDE6jbfTf=Ipiw598pej%&iUn0BdZ8!?|Ek6-@s+OP`k z1~EPu!Nd;KazR|wb2=w5gBdz|9Cu`Fj_B+KF?prY^x<$;BeKHvZ754v;xdcw(@YqF zDG42zI@e@C4IPZ_oH!8~dX~=n-7_14m>}ITQ$koIIXwJ)Y?SNqfQ-g=slp>N7LUp} z?B@m7B$Es!^rX0TH%}gX%gvphl#RrT2zfumtc*|!T|62~nX@ufnKnM??sr-V!zpr_ zL%Eq1P4KfwrbjWYn;W0=YN)zFPi7DjS#u*@>$w<$$9P6w6rw-&vX#g?s*1#342!cD z#+_R}5-xF*i59-<zJEHP@ZwW|wTI$=JoQ`$~P$MQ43|9s8AIPE~IA zh|cwEvSlw4WnY|2pF3Y|J#L6Ac!Kq9*vX`L%n|v*c`Q8lHn?nSKW#mJ4O<6zF$(`R z;YmnDsg4Sx01}y&GEEC_7Gi7<2d=t@Z;}#MiKMJ+B+ZQEscS^?ZT(rGp)|*~<=mVX zpO9y`wB;I0pK>?xbS#w&wu-FLa`kB~^z0f&8*Q~;!`4AJxzDJrSVI2CSV31~hiNQ! zbH>Uf{-j!5W8b-YU_H9pI!0T^;{wZzH`eMJYjg9nBR@Vr&vWUCxTWzcqi%lMuTGdy z*Dzk7t&`WVb;z~Vp%jnh=N2+VFVX@MhBsq+?D6AUP^JY&S;~RZt_AiYEIAEZ&LAjf zkt64fL-YEeAg;9e<^;8-4qtwUO6g1eNlSzn&(3$_Y{=ybJ93qkT^64I|Apxu{k=s; ztO?HqzEgTDRE7DX)wN^h<|t;Bwnwx*yHPT{qx0Q?{Wzel{C3RYOWT2)rsp^E2S8aH z=0@z6fMdfwrgM#;{6c7i&b`i=k&l94_ADT4(NCr{{;E@3` cODcWIa+7qQFLRNDiyY7+|1T$hgiC^t0mO`(RR910 diff --git a/src/org/usfirst/frc/team708/robot/AutoConstants.java b/src/org/usfirst/frc/team708/robot/AutoConstants.java index b585dfd..f3f0332 100644 --- a/src/org/usfirst/frc/team708/robot/AutoConstants.java +++ b/src/org/usfirst/frc/team708/robot/AutoConstants.java @@ -34,6 +34,9 @@ public final class AutoConstants { // Boiler Constants (Field) + public static final double X_THRESHOLD_CENTER_BOILER = 1.0; + public static final double BOILER_ROTATE_SPEED = .25; + public static final int BOILER_TARGET_HEIGHT = 10; public static final int BOILER_TARGET_WIDTH = 14; public static final double DISTANCE_TO_BOILER_LOCATION1 = 54; // A distance to stop at and shoot for high goal in inches diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index 21a72ca..a4eb451 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -121,6 +121,7 @@ public void robotInit() { UsbCamera ucamera=CameraServer.getInstance().startAutomaticCapture("cam1", 1); ucamera.setResolution(180, 240); + // pwr0 = new Solenoid(RobotMap.PWR0); // pwr1 = new Solenoid(RobotMap.PWR1); // pwr2 = new Solenoid(RobotMap.PWR2); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/JustTenBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/JustTenBalls.java index 5b86f22..9c62683 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/JustTenBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/JustTenBalls.java @@ -39,9 +39,9 @@ public JustTenBalls() { addSequential(new DriveStraightToEncoderDistance(85, .4, false)); // target Boiler -// addSequential(new WaitCommand(1.0)); -// addSequential(new SetLED(Constants.SET_TARGETING)); -// addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); + addSequential(new WaitCommand(1.0)); + addSequential(new SetLED(Constants.SET_TARGETING)); + addSequential(new RotateAndDriveToBoiler(111), 3); // unload balls addParallel(new SpinShooter(8)); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java index 3ecc9c1..25b6253 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java @@ -38,17 +38,13 @@ protected void initialize() { } public OneGearCenter() { - addSequential(new Send("In OneGearCenter")); -// go to lever -// addSequential(new DriveStraightToEncoderDistance(24, .3, false)); - -// target lever +// target lift addSequential(new Send("running drive to lift")); addSequential(new SetLED(Constants.SET_HAS_GEAR_TARGETING)); - addSequential(new WaitCommand(1.0)); + addSequential(new WaitCommand(.5)); //was working at 1.0 addSequential(new Intake_Gear_Up()); addSequential(new RotateAndDriveToLift()); @@ -65,78 +61,28 @@ public OneGearCenter() { // turn toward boiler addSequential(new Send("running turn to boiler")); - addSequential(new TurnToDegreesAlliance(.5, 46, Constants.COUNTERCLOCKWISE)); + addSequential(new TurnToDegreesAlliance(.5, 47, Constants.COUNTERCLOCKWISE)); // target Boiler addSequential(new Send("running target boiler")); -// addSequential(new WaitCommand(1.0)); -// addSequential(new SetLED(Constants.SET_TARGETING)); -// addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); + addSequential(new WaitCommand(.5)); //was working at 1.0 + addSequential(new SetLED(Constants.SET_TARGETING)); + addSequential(new RotateAndDriveToBoiler(111), 3); // unload balls addSequential(new Send("running spin shooter")); -// addParallel(new SpinShooter(8)); addParallel(new SpinShooter(12)); - -// addSequential(new AutoFireBalls()); - addSequential(new DriveStraightToEncoderDistanceOrTime(120, .5, true, 5)); -// addSequential(new WaitCommand(1.0)); + addSequential(new DriveStraightToEncoderDistanceOrTime(110, .5, true, 5)); + +// addSequential(new WaitCommand(.5)); //commented out - check to see if we need to pause a bit addSequential(new Send("running spin feeder ")); addSequential(new SpinFeeder(6)); //then shoot addSequential(new StopShooter()); addSequential(new Send("finished One Gear")); - - -// get gear 2 -// addSequential(new TurnToDegreesAlliance(.6, 125, Constants.CLOCKWISE)); -// addSequential(new Intake_Gear_Down()); -// -// addSequential(new SetLED(Constants.SET_HAS_GEAR_TARGETING)); -// addSequential(new WaitCommand(1.0)); -// addParallel(new Intake_Gear_In()); -// addParallel(new RotateAndDriveToGear()); -// addSequential(new AquireGear()); -// -// addSequential(new TurnToDegreesAlliance(.6, 120, Constants.COUNTERCLOCKWISE)); -// addSequential(new RotateAndDriveToLift()); -// -//// addSequential(new DriveStraightToEncoderDistance(6, .4, false)); - -// addParallel(new Intake_Gear_Down()); -// addSequential(new Intake_Gear_Out()); -// addParallel(new Intake_Gear_Out()); -// addSequential(new WaitCommand(0.5)); -// addSequential(new Intake_Gear_Off()); -// -// addSequential(new DriveStraightToEncoderDistance(5, .3, true)); -// addSequential(new DriveStraightToEncoderDistance(45, .4, true)); -// -// get gear 3 -// addSequential(new TurnToDegreesAlliance(.6, 120, Constants.CLOCKWISE)); -// addSequential(new Intake_Gear_Down()); -// -// addSequential(new SetLED(Constants.SET_HAS_GEAR_TARGETING)); -// -// addParallel(new Intake_Gear_In()); -// addParallel(new RotateAndDriveToGear()); -// addSequential(new AquireGear()); -// -// addSequential(new TurnToDegreesAlliance(.6, 120, Constants.COUNTERCLOCKWISE)); -// addSequential(new RotateAndDriveToLift()); -// -//// addSequential(new DriveStraightToEncoderDistance(6, .4, false)); -// -// addParallel(new Intake_Gear_Out()); -// addSequential(new WaitCommand(0.5)); -// addSequential(new Intake_Gear_Off()); -// -// addSequential(new DriveStraightToEncoderDistance(5, .4, true)); -// addSequential(new Intake_Gear_Out()); -// addSequential(new DriveStraightToEncoderDistance(12, .4, true)); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java index dca0163..b8cc40c 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java @@ -36,7 +36,6 @@ public SixtyBalls() { addSequential(new Send("In Sixty Ball")); // goto Hopper -// addSequential(new DriveStraightForTime(-.3, 4.0)); // addSequential(new DriveStraightToEncoderDistance(100, .4, false)); //RED to far hopper addSequential(new DriveStraightToEncoderDistance(100, .4, false)); //BLUE to far hopper @@ -47,25 +46,18 @@ public SixtyBalls() { addSequential(new Send("running drive to hopper")); -// addSequential(new DriveStraightForTime(.3, .5)); addSequential(new DriveStraightToEncoderDistanceOrTime(45, .5, true, 2)); //25 - addParallel(new Intake_Ball_In(7)); - addSequential(new WaitCommand(1.0)); + addSequential(new WaitCommand(.2)); //if we can start getting balls from hopper increase this - -// back off hopper and turn toward boiler -// addSequential(new DriveStraightForTime(-.3, 2.0)); - +// back off hopper and turn toward boiler addSequential(new Send("running back away from hopper")); addSequential(new DriveStraightToEncoderDistance(40, .4, false)); //30 - addSequential(new WaitCommand(.5)); addSequential(new Send("running turn to boiler")); - addSequential(new TurnToDegreesAlliance(.5, 58, Constants.CLOCKWISE)); //50 bigboard in way // addSequential(new DriveStraightToEncoderDistance(40, .4, true)); @@ -73,23 +65,21 @@ public SixtyBalls() { // target Boiler addSequential(new Send("running target boiler")); -// addSequential(new WaitCommand(1.0)); -// addSequential(new SetLED(Constants.SET_TARGETING)); -// addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); + addSequential(new WaitCommand(.5)); //was 1.0 + addSequential(new SetLED(Constants.SET_TARGETING)); + addSequential(new RotateAndDriveToBoiler(111), 3); // unload balls addSequential(new Send("running spin shooter")); - addParallel(new SpinShooter(10)); + addParallel(new SpinShooter(12)); -// addSequential(new AutoFireBalls()); -// addSequential(new DriveStraightToEncoderDistance(43, .4, true)); - addSequential(new DriveStraightToEncoderDistanceOrTime(120, .5, true, 4)); //48 + addSequential(new DriveStraightToEncoderDistanceOrTime(110, .5, true, 3)); //48 addSequential(new Send("running shoot")); -// addSequential(new WaitCommand(1.0)); - addSequential(new SpinFeeder(6)); +// addSequential(new WaitCommand(1.0)); + addSequential(new SpinFeeder(8)); addSequential(new StopShooter()); addSequential(new Send("finished sitxy ball")); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java index ef40dc8..910c5c2 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java @@ -46,7 +46,7 @@ public TenBalls() { addSequential(new Send("running drive to lift")); addSequential(new SetLED(Constants.SET_HAS_GEAR_TARGETING)); - addSequential(new WaitCommand(1.0)); //was 1.0 + addSequential(new WaitCommand(1.0)); //was 1.0 do we need to shorten this? addSequential(new Intake_Gear_Up()); addSequential(new RotateAndDriveToLift()); @@ -64,21 +64,20 @@ public TenBalls() { // target Boiler addSequential(new Send("running target boiler")); -// addSequential(new WaitCommand(1.0)); -// addSequential(new SetLED(Constants.SET_TARGETING)); -// addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); + addSequential(new WaitCommand(.5)); //was 1.0 + addSequential(new SetLED(Constants.SET_TARGETING)); + addSequential(new RotateAndDriveToBoiler(111), 3); // unload balls addSequential(new Send("running spin shooter")); - addParallel(new SpinShooter(8)); + addParallel(new SpinShooter(12)); -// addSequential(new AutoFireBalls()); addSequential(new DriveStraightToEncoderDistanceOrTime(100, .5, true, 4)); -// addSequential(new WaitCommand(1.0)); +// addSequential(new WaitCommand(1.0)); //do we need to add this back + addSequential(new Send("running shoot")); - - addSequential(new SpinFeeder(6)); + addSequential(new SpinFeeder(7)); //was 6 addSequential(new StopShooter()); addSequential(new Send("finished 10 ball")); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java index fa26072..d6bafb7 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java @@ -3,6 +3,8 @@ import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistanceOrTime; +import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightForTime; +import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToBoiler; import org.usfirst.frc.team708.robot.commands.drivetrain.ToggleBrakeMode; import org.usfirst.frc.team708.robot.commands.drivetrain.Send; import org.usfirst.frc.team708.robot.commands.feeder.SpinFeeder; @@ -34,34 +36,13 @@ public driveDistance() { addSequential(new Send("In DriveDistance")); addSequential(new Send("Calling wait 2")); - addSequential(new WaitCommand(2.0)); + addSequential(new WaitCommand(1.0)); - addSequential(new Send("Calling Intake Gear Out")); - addSequential(new Intake_Gear_Out()); + addSequential(new RotateAndDriveToBoiler(111), 3); -// addSequential(new Send("Calling wait 2")); -// addSequential(new WaitCommand(2.0)); +// addSequential(new RotateAndDriveToBoiler(111)); -// addSequential(new Send("Calling Intake Gear IN")); -// addSequential(new Intake_Gear_In()); - - addSequential(new Send("Calling wait 2")); - addSequential(new WaitCommand(2.0)); - - addSequential(new Send("Calling Gear Up")); - addSequential(new Intake_Gear_Up()); - - addSequential(new Send("Calling wait 2")); - addSequential(new WaitCommand(2.0)); - - addSequential(new Send("Calling Gear Down")); - addSequential(new Intake_Gear_Down()); - - addSequential(new Send("Calling wait 2")); - addSequential(new WaitCommand(2.0)); - - addSequential(new Send("Calling Release Gear")); - addSequential(new ReleaseGear(), 1); + addSequential(new DriveStraightForTime(.3, 3)); // addSequential(new WaitCommand(2.0)); diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java index a5258bd..e27606c 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java @@ -17,6 +17,9 @@ public class RotateAndDriveToBoiler extends Command { private double moveSpeed; private double rotate; + + private int count; + /** * Constructor * @param targetDistance - the distance to stop in front of the target @@ -47,6 +50,7 @@ protected void initialize() { Robot.visionBoiler.putBoilerCounter(0); Robot.visionBoiler.putBoilerCurrentCenter(0); Robot.visionBoiler.putBoilerCurrentHeight(0); + count = 0 ; } // Called repeatedly when this Command is scheduled to run @@ -54,10 +58,11 @@ protected void execute() { Robot.visionBoiler.boilerProcessData(); rotate = Robot.visionBoiler.boilerGetRotate(); - moveSpeed = Robot.visionBoiler.boilerGetMove(); +// moveSpeed = Robot.visionBoiler.boilerGetMove(); - Robot.drivetrain.haloDrive(moveSpeed, rotate, false); +// Robot.drivetrain.haloDrive(moveSpeed, rotate, false); + Robot.drivetrain.haloDrive(0, rotate, false); } @@ -69,12 +74,12 @@ protected boolean isFinished() { Robot.led1.send_to_led(Constants.SET_TARGET_FOUND); return true; } - else if (Robot.visionBoiler.getBoilerCounter() >= AutoConstants.SWEEP3_MAX){ - SmartDashboard.putBoolean("boiler is in sweep", true); - return true; - } +// else if (Robot.visionBoiler.getBoilerCounter() >= AutoConstants.SWEEP3_MAX){ +// SmartDashboard.putBoolean("boiler is in sweep", true); +// return true; +// } else { -// SmartDashboard.putBoolean("boiler is running", false); +// SmartDashboard.putNumber("boiler is running", count++); return false; } diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java index 59bae74..0ec7a3f 100644 --- a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineBoiler.java @@ -40,11 +40,11 @@ public class GripPipelineBoiler implements VisionPipeline { * This is the primary method that runs the entire pipeline and updates the outputs. */ @Override public void process(Mat source0) { - // Step HSV_Threshold0: + // Step RGB_Threshold0: Mat rgbThresholdInput = source0; - double[] rgbThresholdRed = {0.0, 32.0}; - double[] rgbThresholdGreen = {105.0, 255.0}; - double[] rgbThresholdBlue = {0.0, 255.0}; + double[] rgbThresholdRed = {0.0, 0.0}; + double[] rgbThresholdGreen = {15.0, 255.0}; + double[] rgbThresholdBlue = {0.0, 0.0}; rgbThreshold(rgbThresholdInput, rgbThresholdRed, rgbThresholdGreen, rgbThresholdBlue, rgbThresholdOutput); // Step Find_Contours0: @@ -58,7 +58,7 @@ public class GripPipelineBoiler implements VisionPipeline { double filterContoursMinPerimeter = 40.0; double filterContoursMinWidth = 20.0; double filterContoursMaxWidth = 100.0; - double filterContoursMinHeight = 5.0; + double filterContoursMinHeight = 10.0; double filterContoursMaxHeight = 1000.0; double[] filterContoursSolidity = {0, 100}; double filterContoursMaxVertices = 1000000.0; @@ -70,8 +70,8 @@ public class GripPipelineBoiler implements VisionPipeline { } /** - * This method is a generated getter for the output of a HSV_Threshold. - * @return Mat output from HSV_Threshold. + * This method is a generated getter for the output of a RGB_Threshold. + * @return Mat output from RGB_Threshold. */ public Mat rgbThresholdOutput() { return rgbThresholdOutput; @@ -95,19 +95,18 @@ public ArrayList filterContoursOutput() { /** - * Segment an image based on hue, saturation, and value ranges. - * - * @param input The image on which to perform the HSL threshold. - * @param hue The min and max hue - * @param sat The min and max saturation - * @param val The min and max value + * Segment an image based on color ranges. + * @param input The image on which to perform the RGB threshold. + * @param red The min and max red. + * @param green The min and max green. + * @param blue The min and max blue. * @param output The image in which to store the output. */ - private void rgbThreshold(Mat input, double[] hue, double[] sat, double[] val, - Mat out) { - Imgproc.cvtColor(input, out, Imgproc.COLOR_BGR2HSV); - Core.inRange(out, new Scalar(hue[0], sat[0], val[0]), - new Scalar(hue[1], sat[1], val[1]), out); + private void rgbThreshold(Mat input, double[] red, double[] green, double[] blue, + Mat out) { + Imgproc.cvtColor(input, out, Imgproc.COLOR_BGR2RGB); + Core.inRange(out, new Scalar(red[0], green[0], blue[0]), + new Scalar(red[1], green[1], blue[1]), out); } /** diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java index 7a7772c..4e1447f 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java @@ -118,9 +118,9 @@ public void hoodAdjust(double angle) { public void sendToDashboard() { if (Constants.DEBUG) { } - SmartDashboard.putNumber("Encoder Position", shooter.getEncPosition()); +// SmartDashboard.putNumber("Encoder Position", shooter.getEncPosition()); SmartDashboard.putNumber("Encoder Speed", shooter.getSpeed()); - SmartDashboard.putNumber("Encoder Velocity", shooter.getEncVelocity()); +// SmartDashboard.putNumber("Encoder Velocity", shooter.getEncVelocity()); } } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java index 06ec143..e00bb94 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java @@ -68,7 +68,7 @@ public class VisionBoiler extends Subsystem { private double boilerStopAtDistance = 0.0; // distance to stop at based on sonar - private double thresholdX = AutoConstants.X_THRESHOLD_CENTER; // threshold for determining center of the target + private double thresholdX = AutoConstants.X_THRESHOLD_CENTER_BOILER; // threshold for determining center of the target private double thresholdDistance = AutoConstants.DISTANCE_TARGET_THRESHOLD; // threshold for determining threshold for stopping at the target private double minThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MIN; // threshold for determining min value for whether the robot sees the target private double maxThresholdX = AutoConstants.X_THRESHOLD_HAS_TARGET_MAX; // threshold for determining max value for whether the robot sees the target @@ -273,8 +273,8 @@ public double boilerGetRotate() { else if (boilerHasTarget && !boilerIsCentered){ difference = trueCenter - (boilerCurrentCenter); - boilerRotate = Math708.getClippedPercentError(boilerCurrentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); -// boilerRotate = .3; +// boilerRotate = Math708.getClippedPercentError(boilerCurrentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); + boilerRotate = AutoConstants.BOILER_ROTATE_SPEED; if (Math.abs(difference) > thresholdX) { if (boilerCurrentCenter < trueCenter){ @@ -472,7 +472,6 @@ public void sendToDashboard() { // SmartDashboard.putNumber("b-True Center", trueCenter); // SmartDashboard.putBoolean("b-Has Target", boilerIsHasTarget()); // SmartDashboard.putBoolean("b-IsAtHeight", boilerIsAtHeight()); -// SmartDashboard.putNumber("b-Center of Target", boilerCurrentCenter); // SmartDashboard.putNumber("b-Rotation", boilerRotate); // SmartDashboard.putNumber("b-Rotate Difference", boilerRotateDiff); // SmartDashboard.putNumber("b-Distance Move Difference", boilerMoveDiff); @@ -486,8 +485,9 @@ public void sendToDashboard() { // SmartDashboard.putNumber("b-rectHeight", brectHeight); // SmartDashboard.putNumber("b-pipelineSize", bPipelineSize); // SmartDashboard.putNumber("b-stop at distance", boilerStopAtDistance); - // SmartDashboard.putNumber("b-boiler current height (y)", boilerCurrentHeight); + + SmartDashboard.putNumber("b-Center of Target", boilerCurrentCenter); } } diff --git a/sysProps.xml b/sysProps.xml index e7000310888b38e9f97823d1c9c8f9931c3ff3bf..a7a79519d84a39a84f0c796ad2cbc90c7bc6d40f 100644 GIT binary patch delta 156 zcmZ2yu+Ct^G-h@)1``HX2A9c!EVi3(F$b~o8!}ijSTPtf7ywB(2Fu9@IjlFAasFd5 zbpxt2VlZcL29pL13Ji`wrLI7Qu0YxhD6YWZ!e9#2Y63RX0;pC2Xs-3?S}%fOzv-Ayr0Jpd^Fy Date: Thu, 11 Jan 2018 09:55:21 -0500 Subject: [PATCH 66/69] FIxed Drivetrain Errors Fixed imports, fixed references in the Drivetrain method, and removed unused imports. --- .metadata/.lock | 0 .metadata/.log | 254 ++ .metadata/.mylyn/.taskListIndex/segments_1 | Bin 0 -> 71 bytes .metadata/.mylyn/.taskListIndex/write.lock | 0 .metadata/.mylyn/.tasks.xml.zip | Bin 0 -> 235 bytes .metadata/.mylyn/repositories.xml.zip | Bin 0 -> 567 bytes .metadata/.mylyn/tasks.xml.zip | Bin 0 -> 235 bytes .../.root/.indexes/history.version | 1 + .../.root/.indexes/properties.index | Bin 0 -> 57 bytes .../.root/.indexes/properties.version | 1 + .../org.eclipse.core.resources/.root/1.tree | Bin 0 -> 81 bytes .../.safetable/org.eclipse.core.resources | Bin 0 -> 405 bytes .../edu.wpi.first.wpilib.plugins.core.prefs | 3 + .../edu.wpi.first.wpilib.plugins.java.prefs | 2 + .../org.eclipse.core.resources.prefs | 2 + .../org.eclipse.epp.logging.aeri.ide.prefs | 4 + .../.settings/org.eclipse.jdt.ui.prefs | 7 + .../.settings/org.eclipse.m2e.discovery.prefs | 2 + .../org.eclipse.mylyn.context.core.prefs | 2 + .../org.eclipse.mylyn.monitor.ui.prefs | 2 + .../org.eclipse.mylyn.tasks.ui.prefs | 5 + .../.settings/org.eclipse.team.ui.prefs | 2 + .../.settings/org.eclipse.ui.editors.prefs | 2 + .../.settings/org.eclipse.ui.ide.prefs | 5 + .../.settings/org.eclipse.ui.workbench.prefs | 3 + .../org.eclipse.e4.workbench/workbench.xmi | 2314 +++++++++++++++++ .../http-cache.lucene60/segments_1 | Bin 0 -> 71 bytes .../http-cache.lucene60/write.lock | 0 .../local-history.lucene60/_0.cfe | Bin 0 -> 129 bytes .../local-history.lucene60/_0.cfs | Bin 0 -> 314 bytes .../local-history.lucene60/_0.si | Bin 0 -> 362 bytes .../local-history.lucene60/segments_1 | Bin 0 -> 136 bytes .../local-history.lucene60/write.lock | 0 .../server-config.json | 72 + .../assumedExternalFilesCache | Bin 0 -> 4 bytes .../org.eclipse.jdt.core/externalFilesCache | Bin 0 -> 4 bytes .../.plugins/org.eclipse.jdt.core/index.db | 0 .../org.eclipse.jdt.core/nonChainingJarsCache | Bin 0 -> 4 bytes .../variablesAndContainers.dat | Bin 0 -> 110 bytes .../org.eclipse.jdt.ui/OpenTypeHistory.xml | 2 + .../QualifiedTypeNameHistory.xml | 2 + .../org.eclipse.jdt.ui/dialog_settings.xml | 12 + .../0.log | 1 + .../logback.1.8.2.20171007-0217.xml | 43 + .../org.eclipse.oomph.setup/workspace.setup | 6 + ...2Fwww.eclipse.org%2Fhome%2Feclipsenews.rss | 325 +++ ...lipse.org%2Frecommenders%2Ffeeds%2Fide.rss | 13 + .../org.eclipse.ui.ide/dialog_settings.xml | 3 + .../.plugins/org.eclipse.ui.intro/introstate | 2 + .../dialog_settings.xml | 15 + .../org.eclipse.ui.workbench/workingsets.xml | 4 + .metadata/version.ini | 3 + 52 files changed, 3114 insertions(+) create mode 100644 .metadata/.lock create mode 100644 .metadata/.log create mode 100644 .metadata/.mylyn/.taskListIndex/segments_1 create mode 100644 .metadata/.mylyn/.taskListIndex/write.lock create mode 100644 .metadata/.mylyn/.tasks.xml.zip create mode 100644 .metadata/.mylyn/repositories.xml.zip create mode 100644 .metadata/.mylyn/tasks.xml.zip create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.root/1.tree create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/edu.wpi.first.wpilib.plugins.core.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/edu.wpi.first.wpilib.plugins.java.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.logging.aeri.ide.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.m2e.discovery.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.tasks.ui.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs create mode 100644 .metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi create mode 100644 .metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/http-cache.lucene60/segments_1 create mode 100644 .metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/http-cache.lucene60/write.lock create mode 100644 .metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/local-history.lucene60/_0.cfe create mode 100644 .metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/local-history.lucene60/_0.cfs create mode 100644 .metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/local-history.lucene60/_0.si create mode 100644 .metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/local-history.lucene60/segments_1 create mode 100644 .metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/local-history.lucene60/write.lock create mode 100644 .metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/server-config.json create mode 100644 .metadata/.plugins/org.eclipse.jdt.core/assumedExternalFilesCache create mode 100644 .metadata/.plugins/org.eclipse.jdt.core/externalFilesCache create mode 100644 .metadata/.plugins/org.eclipse.jdt.core/index.db create mode 100644 .metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache create mode 100644 .metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat create mode 100644 .metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml create mode 100644 .metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml create mode 100644 .metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml create mode 100644 .metadata/.plugins/org.eclipse.m2e.logback.configuration/0.log create mode 100644 .metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.8.2.20171007-0217.xml create mode 100644 .metadata/.plugins/org.eclipse.oomph.setup/workspace.setup create mode 100644 .metadata/.plugins/org.eclipse.recommenders.news.impl/downloads/http%3A%2F%2Fwww.eclipse.org%2Fhome%2Feclipsenews.rss create mode 100644 .metadata/.plugins/org.eclipse.recommenders.news.impl/downloads/http%3A%2F%2Fwww.eclipse.org%2Frecommenders%2Ffeeds%2Fide.rss create mode 100644 .metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml create mode 100644 .metadata/.plugins/org.eclipse.ui.intro/introstate create mode 100644 .metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml create mode 100644 .metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml create mode 100644 .metadata/version.ini diff --git a/.metadata/.lock b/.metadata/.lock new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.log b/.metadata/.log new file mode 100644 index 0000000..28c3177 --- /dev/null +++ b/.metadata/.log @@ -0,0 +1,254 @@ +!SESSION 2018-01-11 09:19:01.705 ----------------------------------------------- +eclipse.buildId=4.7.2.M20171130-0510 +java.version=1.8.0_151 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY org.eclipse.ui.intro 4 0 2018-01-11 09:19:21.167 +!MESSAGE C:\Users\zjmakovi\Desktop\eclipse\WPILib Intro\sample.xml (The system cannot find the path specified) +!STACK 0 +java.io.FileNotFoundException: C:\Users\zjmakovi\Desktop\eclipse\WPILib Intro\sample.xml (The system cannot find the path specified) + at java.io.FileInputStream.open0(Native Method) + at java.io.FileInputStream.open(Unknown Source) + at java.io.FileInputStream.(Unknown Source) + at java.io.FileInputStream.(Unknown Source) + at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source) + at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source) + at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source) + at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source) + at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) + at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) + at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) + at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source) + at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source) + at javax.xml.parsers.DocumentBuilder.parse(Unknown Source) + at org.eclipse.ui.internal.intro.impl.model.loader.IntroContentParser.parse(IntroContentParser.java:89) + at org.eclipse.ui.internal.intro.impl.model.loader.IntroContentParser.(IntroContentParser.java:55) + at org.eclipse.ui.internal.intro.impl.model.IntroModelRoot.loadDOM(IntroModelRoot.java:891) + at org.eclipse.ui.internal.intro.impl.model.IntroModelRoot.processConfigExtension(IntroModelRoot.java:420) + at org.eclipse.ui.internal.intro.impl.model.IntroModelRoot.resolveConfigExtensions(IntroModelRoot.java:390) + at org.eclipse.ui.internal.intro.impl.model.IntroModelRoot.resolveChildren(IntroModelRoot.java:250) + at org.eclipse.ui.internal.intro.impl.model.AbstractIntroContainer.getChildren(AbstractIntroContainer.java:86) + at org.eclipse.ui.internal.intro.impl.model.IntroModelRoot.loadModel(IntroModelRoot.java:164) + at org.eclipse.ui.internal.intro.impl.model.loader.BaseExtensionPointManager.loadModel(BaseExtensionPointManager.java:96) + at org.eclipse.ui.internal.intro.impl.model.loader.ExtensionPointManager.loadCurrentModel(ExtensionPointManager.java:61) + at org.eclipse.ui.internal.intro.impl.model.loader.ExtensionPointManager.getCurrentModel(ExtensionPointManager.java:73) + at org.eclipse.ui.intro.config.CustomizableIntroPart.init(CustomizableIntroPart.java:151) + at org.eclipse.ui.internal.ViewIntroAdapterPart.init(ViewIntroAdapterPart.java:190) + at org.eclipse.ui.internal.ViewReference.initialize(ViewReference.java:126) + at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:333) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) + at java.lang.reflect.Method.invoke(Unknown Source) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:55) + at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:990) + at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:955) + at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:124) + at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:399) + at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:318) + at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162) + at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:105) + at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:74) + at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:56) + at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:129) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:992) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:661) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$1.run(PartRenderingEngine.java:546) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:530) + at org.eclipse.e4.ui.workbench.renderers.swt.ElementReferenceRenderer.createWidget(ElementReferenceRenderer.java:70) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:992) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:661) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:767) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:738) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:732) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:716) + at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.showTab(StackRenderer.java:1293) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.lambda$0(LazyStackRenderer.java:68) + at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:40) + at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:233) + at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:144) + at org.eclipse.swt.widgets.Display.syncExec(Display.java:4889) + at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:212) + at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:36) + at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:201) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) + at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) + at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135) + at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78) + at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39) + at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:52) + at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:60) + at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374) + at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:173) + at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:102) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:679) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:767) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:738) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:732) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:716) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.subscribeTopicToBeRendered(PartRenderingEngine.java:154) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) + at java.lang.reflect.Method.invoke(Unknown Source) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:55) + at org.eclipse.e4.core.di.internal.extensions.EventObjectSupplier$DIEventHandler.handleEvent(EventObjectSupplier.java:88) + at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:201) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) + at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) + at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135) + at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78) + at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39) + at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:52) + at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:60) + at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374) + at org.eclipse.e4.ui.model.application.ui.impl.UIElementImpl.setToBeRendered(UIElementImpl.java:303) + at org.eclipse.e4.ui.workbench.addons.cleanupaddon.CleanupAddon.subscribeRenderingChanged(CleanupAddon.java:314) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) + at java.lang.reflect.Method.invoke(Unknown Source) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:55) + at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler$1.run(UIEventObjectSupplier.java:64) + at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:233) + at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:144) + at org.eclipse.swt.widgets.Display.syncExec(Display.java:4889) + at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:212) + at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler.handleEvent(UIEventObjectSupplier.java:61) + at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:201) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) + at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) + at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135) + at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78) + at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39) + at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:52) + at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:60) + at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374) + at org.eclipse.e4.ui.model.application.ui.impl.UIElementImpl.setToBeRendered(UIElementImpl.java:303) + at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.showElementInWindow(ModelServiceImpl.java:615) + at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.bringToTop(ModelServiceImpl.java:584) + at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.delegateBringToTop(PartServiceImpl.java:769) + at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.activate(PartServiceImpl.java:743) + at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.activate(PartServiceImpl.java:681) + at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.activate(PartServiceImpl.java:676) + at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.showPart(PartServiceImpl.java:1179) + at org.eclipse.ui.internal.WorkbenchPage.showPart(WorkbenchPage.java:1287) + at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:1278) + at org.eclipse.ui.internal.WorkbenchPage$12.run(WorkbenchPage.java:4329) + at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) + at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:4325) + at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:4305) + at org.eclipse.ui.internal.WorkbenchIntroManager.createIntro(WorkbenchIntroManager.java:175) + at org.eclipse.ui.internal.WorkbenchIntroManager.showIntro(WorkbenchIntroManager.java:122) + at org.eclipse.ui.application.WorkbenchWindowAdvisor.openIntro(WorkbenchWindowAdvisor.java:190) + at org.eclipse.ui.internal.ide.application.IDEWorkbenchWindowAdvisor.openIntro(IDEWorkbenchWindowAdvisor.java:572) + at org.eclipse.ui.internal.WorkbenchWindow.setup(WorkbenchWindow.java:782) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) + at java.lang.reflect.Method.invoke(Unknown Source) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:55) + at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:990) + at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:124) + at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:91) + at org.eclipse.e4.core.contexts.ContextInjectionFactory.inject(ContextInjectionFactory.java:73) + at org.eclipse.ui.internal.Workbench.createWorkbenchWindow(Workbench.java:1494) + at org.eclipse.ui.internal.Workbench.getActiveWorkbenchWindow(Workbench.java:1468) + at org.eclipse.ui.internal.services.WorkbenchSourceProvider.updateActiveShell(WorkbenchSourceProvider.java:907) + at org.eclipse.ui.internal.services.WorkbenchSourceProvider.getCurrentState(WorkbenchSourceProvider.java:115) + at org.eclipse.ui.internal.services.WorkbenchSourceProvider.lambda$2(WorkbenchSourceProvider.java:668) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:86) + at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1271) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1078) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1103) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1088) + at org.eclipse.swt.widgets.Decorations.WM_ACTIVATE(Decorations.java:1698) + at org.eclipse.swt.widgets.Shell.WM_ACTIVATE(Shell.java:2277) + at org.eclipse.swt.widgets.Control.windowProc(Control.java:4840) + at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:359) + at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1657) + at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2199) + at org.eclipse.swt.widgets.Display.windowProc(Display.java:5178) + at org.eclipse.swt.internal.win32.OS.BringWindowToTop(Native Method) + at org.eclipse.swt.widgets.Decorations.bringToTop(Decorations.java:232) + at org.eclipse.swt.widgets.Shell.open(Shell.java:1270) + at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.postProcess(WBWRenderer.java:784) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:679) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:767) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:738) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:732) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:716) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1076) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1039) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:680) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:594) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:151) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) + at java.lang.reflect.Method.invoke(Unknown Source) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590) + at org.eclipse.equinox.launcher.Main.run(Main.java:1499) + +!ENTRY edu.wpi.first.wpilib.plugins.core 1 0 2018-01-11 09:19:22.459 +!MESSAGE Installing tools if necessary + +!ENTRY edu.wpi.first.wpilib.plugins.core 1 0 2018-01-11 09:19:22.579 +!MESSAGE Install necessary for tools + +!ENTRY org.eclipse.egit.ui 2 0 2018-01-11 09:19:22.831 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\zjmakovi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY edu.wpi.first.wpilib.plugins.core 1 0 2018-01-11 09:19:25.698 +!MESSAGE Installedtools + +!ENTRY edu.wpi.first.wpilib.plugins.core 1 0 2018-01-11 09:19:25.864 +!MESSAGE Installing common if necessary + +!ENTRY edu.wpi.first.wpilib.plugins.core 1 0 2018-01-11 09:19:26.764 +!MESSAGE Install necessary for common + +!ENTRY edu.wpi.first.wpilib.plugins.core 1 0 2018-01-11 09:19:28.477 +!MESSAGE Installedcommon + +!ENTRY edu.wpi.first.wpilib.plugins.core 1 0 2018-01-11 09:19:28.483 +!MESSAGE Installing java if necessary + +!ENTRY edu.wpi.first.wpilib.plugins.core 1 0 2018-01-11 09:19:28.489 +!MESSAGE Install necessary for java + +!ENTRY edu.wpi.first.wpilib.plugins.core 1 0 2018-01-11 09:19:44.325 +!MESSAGE Installedjava + +!ENTRY WPILib_Java_Robot_Development 1 0 2018-01-11 09:19:44.331 +!MESSAGE Updating projects + +!ENTRY riolog 1 0 2018-01-11 09:47:30.113 +!MESSAGE exiting listener diff --git a/.metadata/.mylyn/.taskListIndex/segments_1 b/.metadata/.mylyn/.taskListIndex/segments_1 new file mode 100644 index 0000000000000000000000000000000000000000..1bfc38c26aa0bae1171a5f8bb794a66a3346688f GIT binary patch literal 71 zcmcD&o+HjtoSL4SnpaZHz`($ktg0NC$NZ;2G|4xmxZC8k1kZ KI3HK1>jD6bP7mt< literal 0 HcmV?d00001 diff --git a/.metadata/.mylyn/.taskListIndex/write.lock b/.metadata/.mylyn/.taskListIndex/write.lock new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.mylyn/.tasks.xml.zip b/.metadata/.mylyn/.tasks.xml.zip new file mode 100644 index 0000000000000000000000000000000000000000..f7164442675354c1d8e166bdb5951c864eecc3ad GIT binary patch literal 235 zcmWIWW@Zs#;Nak3nBk@E!+->Mfb5dQ;_RHv;u5`z+?>rD*Pl2WsNt=vb?(gh&7nqD zj01u^&U&BoKY7M`dngxg;pMFXo3?M}^wc@`?WB%gAV>2`6Q)%y9oFj8mMnWN9;#KL z@@(moB}}DHRh?UmRtE)75&0ujY{>HUZO)g(v|Ee}0p9E!dhup9i9m~6fH=ULkx7IB d;W%VDkmFDRvQq=RS=m6cj6i4wq-TSb0svAoL52VT literal 0 HcmV?d00001 diff --git a/.metadata/.mylyn/repositories.xml.zip b/.metadata/.mylyn/repositories.xml.zip new file mode 100644 index 0000000000000000000000000000000000000000..898dbf8d942e4d324a214d41932460ad5c79ce1b GIT binary patch literal 567 zcmWIWW@Zs#;Nak3nBk@E!+-z4TLpJ!6~Lb-8^s`iz+PtU}h@9AHEN&1X%pHaZ9 z&MU{opU5bCFbi%n`SkJji-&L6_*F3WCt={9kM|kq$8A})T zA2*9KIH&0rRw(b^JMq`G&t18`3J-j;6r5b2vc+95bY1tlRN=5tM2ARC&Gd#O#;@}d zzWr1T=?PT)q&wq@jen=+tA{?)i_EyxgE}ky*0c$zT`78;yjbVW{Pme^&a1xqtoU%@ zPU`n7vtG`33F9@fLiCu~-5w3oW;hHfxFx%E-pypXqB zMYeo3nYQuXww?bHw#Beav0h&Kdh6!-f4+Fw*T(o3>8D4_EtHOV^XN(9|Lcck6!z~9 z*ET6_USV66|J{7ef7SqRc8*^&oNp~k@MdKL QsbB;`J0SfSXet8(00HLh6951J literal 0 HcmV?d00001 diff --git a/.metadata/.mylyn/tasks.xml.zip b/.metadata/.mylyn/tasks.xml.zip new file mode 100644 index 0000000000000000000000000000000000000000..92fb4cb672c0cc67f9e621f64701e638d49d2262 GIT binary patch literal 235 zcmWIWW@Zs#;Nak3Q1jLHVL$>rKz2!Dadu8-afx0rb2w)bQ5TI(O#$=1`+6 z#sNVdXT8t)pFHEeJ(P>L@bcDxP1`qfdg`3}c2Y+#kfV8}3Dc^U4r}#kOO`zs57nwr zdA9V)5~k9ps?IG&tAm24i2M;MHe~twHs?!X+AT(g0B?2FG|--P0qyJm CSO?Dl literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources new file mode 100644 index 0000000000000000000000000000000000000000..b088a4309b7bdbd89940e7cdc93ab88810d3c53b GIT binary patch literal 405 zcmZ?R*xjhShe1S2b=vdAllRFf=Oz}Hq!uZZBqrsg@^UGMWRxm+CFUs@8Y&oATA7$z z85=0L28SpZ85mmda;2o^lq9-V6l4}9mSpDV#pf5L>!l{=WEK>s>Sd*r=q2YDrP>;r z8k(9}7#Wxvm>2-{= + + + activeSchemeId:org.eclipse.ui.defaultAcceleratorConfiguration + ModelMigrationProcessor.001 + + + + + + + + topLevel + + + + + persp.actionSet:org.eclipse.mylyn.doc.actionSet + persp.actionSet:org.eclipse.mylyn.tasks.ui.navigation + persp.actionSet:org.eclipse.ui.cheatsheets.actionSet + persp.actionSet:org.eclipse.search.searchActionSet + persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo + persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet + persp.actionSet:org.eclipse.ui.actionSet.keyBindings + persp.actionSet:org.eclipse.ui.actionSet.openFiles + persp.actionSet:edu.wpi.first.wpilib.plugins.core.actionSet + persp.actionSet:org.eclipse.debug.ui.launchActionSet + persp.actionSet:org.eclipse.jdt.ui.JavaActionSet + persp.actionSet:org.eclipse.jdt.ui.JavaElementCreationActionSet + persp.actionSet:org.eclipse.ui.NavigateActionSet + persp.viewSC:org.eclipse.jdt.ui.PackageExplorer + persp.viewSC:org.eclipse.jdt.ui.TypeHierarchy + persp.viewSC:org.eclipse.jdt.ui.SourceView + persp.viewSC:org.eclipse.jdt.ui.JavadocView + persp.viewSC:org.eclipse.search.ui.views.SearchView + persp.viewSC:org.eclipse.ui.console.ConsoleView + persp.viewSC:org.eclipse.ui.views.ContentOutline + persp.viewSC:org.eclipse.ui.views.ProblemView + persp.viewSC:org.eclipse.ui.views.ResourceNavigator + persp.viewSC:org.eclipse.ui.views.TaskList + persp.viewSC:org.eclipse.ui.views.ProgressView + persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer + persp.viewSC:org.eclipse.ui.texteditor.TemplatesView + persp.viewSC:org.eclipse.pde.runtime.LogView + persp.newWizSC:org.eclipse.jdt.ui.wizards.JavaProjectWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewPackageCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewClassCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewInterfaceCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewEnumCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewAnnotationCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewSourceFolderCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewSnippetFileCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewJavaWorkingSetWizard + persp.newWizSC:org.eclipse.ui.wizards.new.folder + persp.newWizSC:org.eclipse.ui.wizards.new.file + persp.newWizSC:org.eclipse.ui.editors.wizards.UntitledTextFileWizard + persp.perspSC:org.eclipse.jdt.ui.JavaBrowsingPerspective + persp.perspSC:org.eclipse.debug.ui.DebugPerspective + persp.viewSC:org.eclipse.mylyn.tasks.ui.views.tasks + persp.newWizSC:org.eclipse.mylyn.tasks.ui.wizards.new.repository.task + persp.showIn:org.eclipse.jdt.ui.PackageExplorer + persp.showIn:org.eclipse.team.ui.GenericHistoryView + persp.showIn:org.eclipse.ui.views.ResourceNavigator + persp.showIn:org.eclipse.ui.navigator.ProjectExplorer + persp.actionSet:org.eclipse.debug.ui.breakpointActionSet + persp.actionSet:org.eclipse.jdt.debug.ui.JDTDebugActionSet + persp.actionSet:org.eclipse.eclemma.ui.CoverageActionSet + persp.showIn:org.eclipse.eclemma.ui.CoverageView + persp.showIn:org.eclipse.egit.ui.RepositoriesView + persp.newWizSC:org.eclipse.jdt.junit.wizards.NewTestCaseCreationWizard + persp.actionSet:org.eclipse.jdt.junit.JUnitActionSet + persp.viewSC:org.eclipse.ant.ui.views.AntView + + + + org.eclipse.e4.primaryNavigationStack + active + + + + + + + + + + + + + + + + + + + org.eclipse.e4.secondaryNavigationStack + + + + + + + + + org.eclipse.e4.secondaryDataStack + + + + + + + + + + + + + + + + + + + + + + + + + + View + categoryTag:Help + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Help + + + + org.eclipse.e4.primaryDataStack + EditorStack + + + + + + + View + categoryTag:Java + active + activeOnClose + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Java + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Java + + + + + View + categoryTag:Java + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:General + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:Mylyn + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Git + + + + + View + categoryTag:Java + + + + + View + categoryTag:Ant + + + + toolbarSeparator + + + + Draggable + + + + toolbarSeparator + + + + Draggable + + + Draggable + + + Draggable + + + Draggable + + + toolbarSeparator + + + + Draggable + + + + toolbarSeparator + + + + toolbarSeparator + + + + Draggable + + + stretch + SHOW_RESTORE_MENU + + + Draggable + HIDEABLE + SHOW_RESTORE_MENU + + + + + stretch + + + Draggable + + + Draggable + + + + + TrimStack + Draggable + + + + + + + + + platform:win32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + platform:win32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Editor + + + + + View + categoryTag:Ant + + + + + View + categoryTag:Gradle + + + + + View + categoryTag:Gradle + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Java + + + + + View + categoryTag:Git + + + + + View + categoryTag:Git + + + + + View + categoryTag:Git + + + + + View + categoryTag:Git + + + + + View + categoryTag:Git + + + + + View + categoryTag:General + + + + + View + categoryTag:Help + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Java + + + + + View + categoryTag:Java + + + + + View + categoryTag:Java + + + + + View + categoryTag:Java Browsing + + + + + View + categoryTag:Java Browsing + + + + + View + categoryTag:Java Browsing + + + + + View + categoryTag:Java Browsing + + + + + View + categoryTag:Java + + + + + View + categoryTag:General + + + + + View + categoryTag:Java + + + + + View + categoryTag:Java + + + + + View + categoryTag:Maven + + + + + View + categoryTag:Maven + + + + + View + categoryTag:Mylyn + + + + + View + categoryTag:Mylyn + + + + + View + categoryTag:Mylyn + + + + + View + categoryTag:Mylyn + + + + + View + categoryTag:Oomph + + + + + View + categoryTag:Code Recommenders + + + + + View + categoryTag:Code Recommenders + + + + + View + categoryTag:Code Recommenders + + + + + View + categoryTag:Code Recommenders + + + + + View + categoryTag:Code Recommenders + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:Team + + + + + View + categoryTag:Team + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:Help + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:XML + + + + + View + categoryTag:XML + + + + + View + categoryTag:General + + + + + + + + + + glue + move_after:PerspectiveSpacer + SHOW_RESTORE_MENU + + + move_after:Spacer Glue + HIDEABLE + SHOW_RESTORE_MENU + + + glue + move_after:SearchField + SHOW_RESTORE_MENU + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/http-cache.lucene60/segments_1 b/.metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/http-cache.lucene60/segments_1 new file mode 100644 index 0000000000000000000000000000000000000000..ae2d345e94690964909db9c6a115469101965689 GIT binary patch literal 71 zcmcD&o+HjtoSL4SnpaZHz`($ktg0NC$NZ;2G|4xmxZC8k1kZ KIB!z6^#cHmvk+1M literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/http-cache.lucene60/write.lock b/.metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/http-cache.lucene60/write.lock new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/local-history.lucene60/_0.cfe b/.metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/local-history.lucene60/_0.cfe new file mode 100644 index 0000000000000000000000000000000000000000..e2e014c3bef850d41a57575988dad242fb1b8864 GIT binary patch literal 129 zcmcD&o+B>qQ<|KbmuhO@oS$2eUz(TVnpaYknOe*M1j(w(fqBe-3Ph89Q;NH-uP`vP t=%uApfTVyx4?-~ng9J;UoJJ@e1{BQ8g>tULR36Zn`~u2mn3!^Q6#z|h97+HH literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/local-history.lucene60/_0.cfs b/.metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/local-history.lucene60/_0.cfs new file mode 100644 index 0000000000000000000000000000000000000000..1432292075811a9f890b2d1fe4ce6fe780103d11 GIT binary patch literal 314 zcmcD&o+B>eQ<|KbmuhO@oS$2eUz(TVl30?+00haZ%7J;ze+opCd{c_Mt**H=6fmSx%L;lVxc{FS?t8=_uM zzYS-(wNMu(Y};EA%6rT?5ie?h;QBM3VKAcx%l@szX+Z}ULY6{eoeRD(m!&eGi$Dlq zf_${q(##ke#T)v-(8m)r+$@^Q7K#%91mK!b0LyghU`B$`PUDsp*Eyq$#@=#xJ;ha` zk|}kvqEb`OxaW&j5d^SX`;^A4?3ty05W + diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml b/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml new file mode 100644 index 0000000..9e390f5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml @@ -0,0 +1,2 @@ + + diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml new file mode 100644 index 0000000..3bf8f90 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml @@ -0,0 +1,12 @@ + +

      +
      + + + + + +
      +
      +
      +
      diff --git a/.metadata/.plugins/org.eclipse.m2e.logback.configuration/0.log b/.metadata/.plugins/org.eclipse.m2e.logback.configuration/0.log new file mode 100644 index 0000000..f1e87de --- /dev/null +++ b/.metadata/.plugins/org.eclipse.m2e.logback.configuration/0.log @@ -0,0 +1 @@ +2018-01-11 09:19:22,469 [Worker-0] INFO c.g.t.t.d.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read. diff --git a/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.8.2.20171007-0217.xml b/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.8.2.20171007-0217.xml new file mode 100644 index 0000000..e33758c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.8.2.20171007-0217.xml @@ -0,0 +1,43 @@ + + + + %date [%thread] %-5level %logger{35} - %msg%n + + + OFF + + + + + ${org.eclipse.m2e.log.dir}/0.log + + ${org.eclipse.m2e.log.dir}/%i.log + 1 + 10 + + + 100MB + + + %date [%thread] %-5level %logger{35} - %msg%n + + + + + + WARN + + + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup b/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup new file mode 100644 index 0000000..1f73e14 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup @@ -0,0 +1,6 @@ + + diff --git a/.metadata/.plugins/org.eclipse.recommenders.news.impl/downloads/http%3A%2F%2Fwww.eclipse.org%2Fhome%2Feclipsenews.rss b/.metadata/.plugins/org.eclipse.recommenders.news.impl/downloads/http%3A%2F%2Fwww.eclipse.org%2Fhome%2Feclipsenews.rss new file mode 100644 index 0000000..92f8d4e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.recommenders.news.impl/downloads/http%3A%2F%2Fwww.eclipse.org%2Fhome%2Feclipsenews.rss @@ -0,0 +1,325 @@ + + + + Eclipse News + http://www.eclipse.org + Eclipse News + + http://eclipse.org/eclipse.org-common/themes/Nova/images/eclipse.png + eclipse.org + http://www.eclipse.org + + + <![CDATA[Eclipse Newsletter | Capella: open source MBSE solution]]> + + + Thu, 14 Dec 2017 10:10:00 EST + news + 0 + + + <![CDATA[Open Source Community Accelerates Big Data Analytics for Geospatial Solutions]]> + + + Thu, 14 Dec 2017 08:00:00 EST + news + 1 + + + <![CDATA[Announcing Open IoT Challenge 4.0 Scholars]]> + + + Wed, 13 Dec 2017 09:45:00 EST + news + 0 + + + <![CDATA[Eclipse Newsletter | Location Matters]]> + + + Wed, 22 Nov 2017 06:23:00 EST + news + 0 + + + <![CDATA[Open IoT Challenge 4.0 | Extended Deadline Nov 20]]> + + + Wed, 15 Nov 2017 05:30:00 EST + news + 0 + + + <![CDATA[EclipseCon + Ludwigsburg = Great Partners]]> + + + Sun, 22 Oct 2017 08:00:00 EST + news + 0 + + + <![CDATA[New Industry 4.0 Open Testbed Addresses Performance Monitoring and Management in Manufacturing]]> + + + Thu, 19 Oct 2017 11:00:00 EST + news + 1 + + + <![CDATA[Eclipse Science Advances Open Source Technology for Scientific Research]]> + + + Wed, 18 Oct 2017 09:00:00 EST + news + 1 + + + <![CDATA[Eclipse Newsletter | Utility Belt: Projects and Tools]]> + + + Wed, 18 Oct 2017 05:02:00 EST + news + 0 + + + <![CDATA[On Naming Eclipse Enterprise for Java (EE4J)]]> + + + Wed, 04 Oct 2017 08:48:00 EST + news + 0 + + + <![CDATA[EclipseCon Europe: Last Chance for the Early Price]]> + + + Tue, 03 Oct 2017 11:30:00 EST + news + 0 + + + <![CDATA[Annual Donation Campaign: End User Support for the Eclipse Foundation]]> + + + Fri, 29 Sep 2017 11:00:00 EST + news + 0 + + + <![CDATA[Eclipse IoT Announces Fourth Edition of the Open IoT Challenge]]> + + + Thu, 28 Sep 2017 09:10:00 EST + news + 1 + + + <![CDATA[Eclipse IDE Now Supports Java 9]]> + + + Tue, 26 Sep 2017 14:30:00 EST + news + 0 + + + <![CDATA[Special Notice for Eclipse IDE Users on macOS 10.13 in non-English mode]]> + + + Mon, 25 Sep 2017 08:30:00 EST + news + 0 + + + <![CDATA[Get the Early Price for EclipseCon Europe]]> + + + Thu, 21 Sep 2017 08:30:00 EST + news + 0 + + + <![CDATA[Eclipse Newsletter | Eclipse MicroProfile]]> + + + Wed, 20 Sep 2017 10:30:00 EST + news + 0 + + + <![CDATA[Java EE Moves to the Eclipse Foundation]]> + + + Tue, 12 Sep 2017 17:00:00 EST + news + 0 + + + <![CDATA[First Release of Eclipse Papyrus for Real Time: Modeling Tool for UML-RT]]> + + + Thu, 07 Sep 2017 09:00:00 EST + news + 1 + + + <![CDATA[Eclipse Public License Version 2.0 Approved By OSI and Eclipse Foundation Board of Directors]]> + + + Tue, 29 Aug 2017 14:20:00 EST + news + 0 + + + <![CDATA[Eclipse Newsletter | Exciting New Eclipse Projects]]> + + + Tue, 22 Aug 2017 09:00:00 EST + news + 0 + + + <![CDATA[EclipseCon Europe: Schedule and Keynotes]]> + + + Mon, 21 Aug 2017 10:10:00 EST + news + 0 + + + <![CDATA[Launching Eclipse IoT Newsletter]]> + + + Fri, 18 Aug 2017 05:40:00 EST + news + 0 + + + <![CDATA[Eclipse IoT Day @ ThingMonk]]> + + + Thu, 17 Aug 2017 08:55:00 EST + news + 0 + + + <![CDATA[Potential adware plugin on Eclipse Marketplace - Eclipse Class Decompiler]]> + + + Mon, 14 Aug 2017 10:40:00 EST + news + 0 + + + <![CDATA[Eclipse Newsletter | Summer Issue]]> + + + Tue, 25 Jul 2017 10:05:00 EST + news + 0 + + + <![CDATA[EclipseCon Europe 2017 | Submissions Close in One Week]]> + + + Mon, 10 Jul 2017 09:05:00 EST + news + 0 + + + <![CDATA[Eclipse Oxygen Now Available]]> + + + Wed, 28 Jun 2017 10:05:00 EST + news + 0 + + + <![CDATA[Eclipse Newsletter | Eclipse Oxygen]]> + + + Wed, 28 Jun 2017 10:26:00 EST + news + 0 + + + <![CDATA[Early Submission Deadline for EclipseCon Europe 2017]]> + + + Mon, 26 Jun 2017 22:00:00 EST + news + 0 + + + <![CDATA[Capella Industry Consortium (IC) Announced at PolarSys]]> + + + Tue, 20 Jun 2017 04:00:00 EST + news + 0 + + + <![CDATA[RC3 Available for Eclipse Oxygen | Download Now]]> + + + Mon, 12 Jun 2017 15:45:00 EST + news + 0 + + + <![CDATA[Last Chance to Register for EclipseCon France 2017]]> + + + Thu, 08 Jun 2017 10:45:00 EST + news + 0 + + + <![CDATA[Eclipse Newsletter - Language Server Protocol 101]]> + + + Wed, 24 May 2017 05:35:00 EST + news + 0 + + + <![CDATA[It’s time to organise Eclipse Oxygen DemoCamps]]> + + + Tue, 23 May 2017 04:35:00 EST + news + 0 + + + <![CDATA[Case Study: Deploying Eclipse IoT on Germany's DB Railway System]]> + + + Thu, 18 May 2017 04:55:00 EST + news + 0 + + + <![CDATA[EclipseCon Europe 2017 | Call for Papers Open]]> + + + Wed, 17 May 2017 09:29:00 EST + news + 0 + + + <![CDATA[Program Ready for EclipseCon France 2017]]> + + + Thu, 27 Apr 2017 17:10:00 EST + news + 0 + + + <![CDATA[New Eclipse IoT Open Testbeds]]> + + + Thu, 27 Apr 2017 09:05:00 EST + news + 1 + + + diff --git a/.metadata/.plugins/org.eclipse.recommenders.news.impl/downloads/http%3A%2F%2Fwww.eclipse.org%2Frecommenders%2Ffeeds%2Fide.rss b/.metadata/.plugins/org.eclipse.recommenders.news.impl/downloads/http%3A%2F%2Fwww.eclipse.org%2Frecommenders%2Ffeeds%2Fide.rss new file mode 100644 index 0000000..b6219a4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.recommenders.news.impl/downloads/http%3A%2F%2Fwww.eclipse.org%2Frecommenders%2Ffeeds%2Fide.rss @@ -0,0 +1,13 @@ + + + + Code Recommenders In-IDE News + https://www.eclipse.org/recommenders/ + The latest news about Code Recommenders, delivered to your Eclipse IDE + + Insert Knowledge Here - A Guide to Intelligent Code Completion Using Eclipse Code Recommenders + https://medium.com/codetrails/insert-knowledge-here-a2f71c2862d2?utm_source=rss-eclipse&utm_medium=eclipse&utm_campaign=cc + Tue, 10 Oct 2017 16:00:00 GMT + + + diff --git a/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml new file mode 100644 index 0000000..5ca0b77 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml @@ -0,0 +1,3 @@ + +
      +
      diff --git a/.metadata/.plugins/org.eclipse.ui.intro/introstate b/.metadata/.plugins/org.eclipse.ui.intro/introstate new file mode 100644 index 0000000..236d56c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.intro/introstate @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml new file mode 100644 index 0000000..851c296 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml @@ -0,0 +1,15 @@ + +
      +
      + + + + + + + + + + +
      +
      diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml b/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml new file mode 100644 index 0000000..368cae9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.metadata/version.ini b/.metadata/version.ini new file mode 100644 index 0000000..2e7da2e --- /dev/null +++ b/.metadata/version.ini @@ -0,0 +1,3 @@ +#Thu Jan 11 09:19:14 EST 2018 +org.eclipse.core.runtime=2 +org.eclipse.platform=4.7.2.v20171130-0510 From d04265e47dd6dece3739fab2f3fb95a70cebaffd Mon Sep 17 00:00:00 2001 From: James Makovics Date: Thu, 11 Jan 2018 10:08:19 -0500 Subject: [PATCH 67/69] Revert "FIxed Drivetrain Errors" This reverts commit 6394ad6776526fce575340edb595fb2faf6585fd. --- .metadata/.lock | 0 .metadata/.log | 254 -- .metadata/.mylyn/.taskListIndex/segments_1 | Bin 71 -> 0 bytes .metadata/.mylyn/.taskListIndex/write.lock | 0 .metadata/.mylyn/.tasks.xml.zip | Bin 235 -> 0 bytes .metadata/.mylyn/repositories.xml.zip | Bin 567 -> 0 bytes .metadata/.mylyn/tasks.xml.zip | Bin 235 -> 0 bytes .../.root/.indexes/history.version | 1 - .../.root/.indexes/properties.index | Bin 57 -> 0 bytes .../.root/.indexes/properties.version | 1 - .../org.eclipse.core.resources/.root/1.tree | Bin 81 -> 0 bytes .../.safetable/org.eclipse.core.resources | Bin 405 -> 0 bytes .../edu.wpi.first.wpilib.plugins.core.prefs | 3 - .../edu.wpi.first.wpilib.plugins.java.prefs | 2 - .../org.eclipse.core.resources.prefs | 2 - .../org.eclipse.epp.logging.aeri.ide.prefs | 4 - .../.settings/org.eclipse.jdt.ui.prefs | 7 - .../.settings/org.eclipse.m2e.discovery.prefs | 2 - .../org.eclipse.mylyn.context.core.prefs | 2 - .../org.eclipse.mylyn.monitor.ui.prefs | 2 - .../org.eclipse.mylyn.tasks.ui.prefs | 5 - .../.settings/org.eclipse.team.ui.prefs | 2 - .../.settings/org.eclipse.ui.editors.prefs | 2 - .../.settings/org.eclipse.ui.ide.prefs | 5 - .../.settings/org.eclipse.ui.workbench.prefs | 3 - .../org.eclipse.e4.workbench/workbench.xmi | 2314 ----------------- .../http-cache.lucene60/segments_1 | Bin 71 -> 0 bytes .../http-cache.lucene60/write.lock | 0 .../local-history.lucene60/_0.cfe | Bin 129 -> 0 bytes .../local-history.lucene60/_0.cfs | Bin 314 -> 0 bytes .../local-history.lucene60/_0.si | Bin 362 -> 0 bytes .../local-history.lucene60/segments_1 | Bin 136 -> 0 bytes .../local-history.lucene60/write.lock | 0 .../server-config.json | 72 - .../assumedExternalFilesCache | Bin 4 -> 0 bytes .../org.eclipse.jdt.core/externalFilesCache | Bin 4 -> 0 bytes .../.plugins/org.eclipse.jdt.core/index.db | 0 .../org.eclipse.jdt.core/nonChainingJarsCache | Bin 4 -> 0 bytes .../variablesAndContainers.dat | Bin 110 -> 0 bytes .../org.eclipse.jdt.ui/OpenTypeHistory.xml | 2 - .../QualifiedTypeNameHistory.xml | 2 - .../org.eclipse.jdt.ui/dialog_settings.xml | 12 - .../0.log | 1 - .../logback.1.8.2.20171007-0217.xml | 43 - .../org.eclipse.oomph.setup/workspace.setup | 6 - ...2Fwww.eclipse.org%2Fhome%2Feclipsenews.rss | 325 --- ...lipse.org%2Frecommenders%2Ffeeds%2Fide.rss | 13 - .../org.eclipse.ui.ide/dialog_settings.xml | 3 - .../.plugins/org.eclipse.ui.intro/introstate | 2 - .../dialog_settings.xml | 15 - .../org.eclipse.ui.workbench/workingsets.xml | 4 - .metadata/version.ini | 3 - 52 files changed, 3114 deletions(-) delete mode 100644 .metadata/.lock delete mode 100644 .metadata/.log delete mode 100644 .metadata/.mylyn/.taskListIndex/segments_1 delete mode 100644 .metadata/.mylyn/.taskListIndex/write.lock delete mode 100644 .metadata/.mylyn/.tasks.xml.zip delete mode 100644 .metadata/.mylyn/repositories.xml.zip delete mode 100644 .metadata/.mylyn/tasks.xml.zip delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.root/1.tree delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources delete mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/edu.wpi.first.wpilib.plugins.core.prefs delete mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/edu.wpi.first.wpilib.plugins.java.prefs delete mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs delete mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.logging.aeri.ide.prefs delete mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs delete mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.m2e.discovery.prefs delete mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs delete mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs delete mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.tasks.ui.prefs delete mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs delete mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs delete mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs delete mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs delete mode 100644 .metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi delete mode 100644 .metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/http-cache.lucene60/segments_1 delete mode 100644 .metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/http-cache.lucene60/write.lock delete mode 100644 .metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/local-history.lucene60/_0.cfe delete mode 100644 .metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/local-history.lucene60/_0.cfs delete mode 100644 .metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/local-history.lucene60/_0.si delete mode 100644 .metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/local-history.lucene60/segments_1 delete mode 100644 .metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/local-history.lucene60/write.lock delete mode 100644 .metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/server-config.json delete mode 100644 .metadata/.plugins/org.eclipse.jdt.core/assumedExternalFilesCache delete mode 100644 .metadata/.plugins/org.eclipse.jdt.core/externalFilesCache delete mode 100644 .metadata/.plugins/org.eclipse.jdt.core/index.db delete mode 100644 .metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache delete mode 100644 .metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat delete mode 100644 .metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml delete mode 100644 .metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml delete mode 100644 .metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml delete mode 100644 .metadata/.plugins/org.eclipse.m2e.logback.configuration/0.log delete mode 100644 .metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.8.2.20171007-0217.xml delete mode 100644 .metadata/.plugins/org.eclipse.oomph.setup/workspace.setup delete mode 100644 .metadata/.plugins/org.eclipse.recommenders.news.impl/downloads/http%3A%2F%2Fwww.eclipse.org%2Fhome%2Feclipsenews.rss delete mode 100644 .metadata/.plugins/org.eclipse.recommenders.news.impl/downloads/http%3A%2F%2Fwww.eclipse.org%2Frecommenders%2Ffeeds%2Fide.rss delete mode 100644 .metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml delete mode 100644 .metadata/.plugins/org.eclipse.ui.intro/introstate delete mode 100644 .metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml delete mode 100644 .metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml delete mode 100644 .metadata/version.ini diff --git a/.metadata/.lock b/.metadata/.lock deleted file mode 100644 index e69de29..0000000 diff --git a/.metadata/.log b/.metadata/.log deleted file mode 100644 index 28c3177..0000000 --- a/.metadata/.log +++ /dev/null @@ -1,254 +0,0 @@ -!SESSION 2018-01-11 09:19:01.705 ----------------------------------------------- -eclipse.buildId=4.7.2.M20171130-0510 -java.version=1.8.0_151 -java.vendor=Oracle Corporation -BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US -Framework arguments: -product org.eclipse.epp.package.java.product -Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product - -!ENTRY org.eclipse.ui.intro 4 0 2018-01-11 09:19:21.167 -!MESSAGE C:\Users\zjmakovi\Desktop\eclipse\WPILib Intro\sample.xml (The system cannot find the path specified) -!STACK 0 -java.io.FileNotFoundException: C:\Users\zjmakovi\Desktop\eclipse\WPILib Intro\sample.xml (The system cannot find the path specified) - at java.io.FileInputStream.open0(Native Method) - at java.io.FileInputStream.open(Unknown Source) - at java.io.FileInputStream.(Unknown Source) - at java.io.FileInputStream.(Unknown Source) - at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source) - at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source) - at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source) - at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source) - at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) - at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) - at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) - at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source) - at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source) - at javax.xml.parsers.DocumentBuilder.parse(Unknown Source) - at org.eclipse.ui.internal.intro.impl.model.loader.IntroContentParser.parse(IntroContentParser.java:89) - at org.eclipse.ui.internal.intro.impl.model.loader.IntroContentParser.(IntroContentParser.java:55) - at org.eclipse.ui.internal.intro.impl.model.IntroModelRoot.loadDOM(IntroModelRoot.java:891) - at org.eclipse.ui.internal.intro.impl.model.IntroModelRoot.processConfigExtension(IntroModelRoot.java:420) - at org.eclipse.ui.internal.intro.impl.model.IntroModelRoot.resolveConfigExtensions(IntroModelRoot.java:390) - at org.eclipse.ui.internal.intro.impl.model.IntroModelRoot.resolveChildren(IntroModelRoot.java:250) - at org.eclipse.ui.internal.intro.impl.model.AbstractIntroContainer.getChildren(AbstractIntroContainer.java:86) - at org.eclipse.ui.internal.intro.impl.model.IntroModelRoot.loadModel(IntroModelRoot.java:164) - at org.eclipse.ui.internal.intro.impl.model.loader.BaseExtensionPointManager.loadModel(BaseExtensionPointManager.java:96) - at org.eclipse.ui.internal.intro.impl.model.loader.ExtensionPointManager.loadCurrentModel(ExtensionPointManager.java:61) - at org.eclipse.ui.internal.intro.impl.model.loader.ExtensionPointManager.getCurrentModel(ExtensionPointManager.java:73) - at org.eclipse.ui.intro.config.CustomizableIntroPart.init(CustomizableIntroPart.java:151) - at org.eclipse.ui.internal.ViewIntroAdapterPart.init(ViewIntroAdapterPart.java:190) - at org.eclipse.ui.internal.ViewReference.initialize(ViewReference.java:126) - at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:333) - at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) - at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) - at java.lang.reflect.Method.invoke(Unknown Source) - at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:55) - at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:990) - at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:955) - at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:124) - at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:399) - at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:318) - at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162) - at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:105) - at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:74) - at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:56) - at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:129) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:992) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:661) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$1.run(PartRenderingEngine.java:546) - at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:530) - at org.eclipse.e4.ui.workbench.renderers.swt.ElementReferenceRenderer.createWidget(ElementReferenceRenderer.java:70) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:992) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:661) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:767) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:738) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:732) - at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:716) - at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.showTab(StackRenderer.java:1293) - at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.lambda$0(LazyStackRenderer.java:68) - at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:40) - at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:233) - at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:144) - at org.eclipse.swt.widgets.Display.syncExec(Display.java:4889) - at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:212) - at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:36) - at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:201) - at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197) - at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) - at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) - at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) - at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135) - at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78) - at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39) - at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:52) - at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:60) - at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374) - at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:173) - at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:102) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:679) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:767) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:738) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:732) - at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:716) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.subscribeTopicToBeRendered(PartRenderingEngine.java:154) - at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) - at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) - at java.lang.reflect.Method.invoke(Unknown Source) - at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:55) - at org.eclipse.e4.core.di.internal.extensions.EventObjectSupplier$DIEventHandler.handleEvent(EventObjectSupplier.java:88) - at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:201) - at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197) - at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) - at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) - at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) - at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135) - at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78) - at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39) - at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:52) - at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:60) - at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374) - at org.eclipse.e4.ui.model.application.ui.impl.UIElementImpl.setToBeRendered(UIElementImpl.java:303) - at org.eclipse.e4.ui.workbench.addons.cleanupaddon.CleanupAddon.subscribeRenderingChanged(CleanupAddon.java:314) - at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) - at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) - at java.lang.reflect.Method.invoke(Unknown Source) - at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:55) - at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler$1.run(UIEventObjectSupplier.java:64) - at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:233) - at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:144) - at org.eclipse.swt.widgets.Display.syncExec(Display.java:4889) - at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:212) - at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler.handleEvent(UIEventObjectSupplier.java:61) - at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:201) - at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197) - at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) - at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) - at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) - at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135) - at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78) - at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39) - at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:52) - at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:60) - at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374) - at org.eclipse.e4.ui.model.application.ui.impl.UIElementImpl.setToBeRendered(UIElementImpl.java:303) - at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.showElementInWindow(ModelServiceImpl.java:615) - at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.bringToTop(ModelServiceImpl.java:584) - at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.delegateBringToTop(PartServiceImpl.java:769) - at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.activate(PartServiceImpl.java:743) - at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.activate(PartServiceImpl.java:681) - at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.activate(PartServiceImpl.java:676) - at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.showPart(PartServiceImpl.java:1179) - at org.eclipse.ui.internal.WorkbenchPage.showPart(WorkbenchPage.java:1287) - at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:1278) - at org.eclipse.ui.internal.WorkbenchPage$12.run(WorkbenchPage.java:4329) - at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) - at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:4325) - at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:4305) - at org.eclipse.ui.internal.WorkbenchIntroManager.createIntro(WorkbenchIntroManager.java:175) - at org.eclipse.ui.internal.WorkbenchIntroManager.showIntro(WorkbenchIntroManager.java:122) - at org.eclipse.ui.application.WorkbenchWindowAdvisor.openIntro(WorkbenchWindowAdvisor.java:190) - at org.eclipse.ui.internal.ide.application.IDEWorkbenchWindowAdvisor.openIntro(IDEWorkbenchWindowAdvisor.java:572) - at org.eclipse.ui.internal.WorkbenchWindow.setup(WorkbenchWindow.java:782) - at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) - at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) - at java.lang.reflect.Method.invoke(Unknown Source) - at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:55) - at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:990) - at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:124) - at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:91) - at org.eclipse.e4.core.contexts.ContextInjectionFactory.inject(ContextInjectionFactory.java:73) - at org.eclipse.ui.internal.Workbench.createWorkbenchWindow(Workbench.java:1494) - at org.eclipse.ui.internal.Workbench.getActiveWorkbenchWindow(Workbench.java:1468) - at org.eclipse.ui.internal.services.WorkbenchSourceProvider.updateActiveShell(WorkbenchSourceProvider.java:907) - at org.eclipse.ui.internal.services.WorkbenchSourceProvider.getCurrentState(WorkbenchSourceProvider.java:115) - at org.eclipse.ui.internal.services.WorkbenchSourceProvider.lambda$2(WorkbenchSourceProvider.java:668) - at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:86) - at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1271) - at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1078) - at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1103) - at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1088) - at org.eclipse.swt.widgets.Decorations.WM_ACTIVATE(Decorations.java:1698) - at org.eclipse.swt.widgets.Shell.WM_ACTIVATE(Shell.java:2277) - at org.eclipse.swt.widgets.Control.windowProc(Control.java:4840) - at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:359) - at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1657) - at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2199) - at org.eclipse.swt.widgets.Display.windowProc(Display.java:5178) - at org.eclipse.swt.internal.win32.OS.BringWindowToTop(Native Method) - at org.eclipse.swt.widgets.Decorations.bringToTop(Decorations.java:232) - at org.eclipse.swt.widgets.Shell.open(Shell.java:1270) - at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.postProcess(WBWRenderer.java:784) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:679) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:767) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:738) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:732) - at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:716) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1076) - at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336) - at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1039) - at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153) - at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:680) - at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336) - at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:594) - at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148) - at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:151) - at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) - at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) - at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) - at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388) - at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243) - at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) - at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) - at java.lang.reflect.Method.invoke(Unknown Source) - at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653) - at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590) - at org.eclipse.equinox.launcher.Main.run(Main.java:1499) - -!ENTRY edu.wpi.first.wpilib.plugins.core 1 0 2018-01-11 09:19:22.459 -!MESSAGE Installing tools if necessary - -!ENTRY edu.wpi.first.wpilib.plugins.core 1 0 2018-01-11 09:19:22.579 -!MESSAGE Install necessary for tools - -!ENTRY org.eclipse.egit.ui 2 0 2018-01-11 09:19:22.831 -!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git -user global configuration and to define the default location to store repositories: 'C:\Users\zjmakovi'. If this is -not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and -EGit might behave differently since they see different configuration options. -This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. - -!ENTRY edu.wpi.first.wpilib.plugins.core 1 0 2018-01-11 09:19:25.698 -!MESSAGE Installedtools - -!ENTRY edu.wpi.first.wpilib.plugins.core 1 0 2018-01-11 09:19:25.864 -!MESSAGE Installing common if necessary - -!ENTRY edu.wpi.first.wpilib.plugins.core 1 0 2018-01-11 09:19:26.764 -!MESSAGE Install necessary for common - -!ENTRY edu.wpi.first.wpilib.plugins.core 1 0 2018-01-11 09:19:28.477 -!MESSAGE Installedcommon - -!ENTRY edu.wpi.first.wpilib.plugins.core 1 0 2018-01-11 09:19:28.483 -!MESSAGE Installing java if necessary - -!ENTRY edu.wpi.first.wpilib.plugins.core 1 0 2018-01-11 09:19:28.489 -!MESSAGE Install necessary for java - -!ENTRY edu.wpi.first.wpilib.plugins.core 1 0 2018-01-11 09:19:44.325 -!MESSAGE Installedjava - -!ENTRY WPILib_Java_Robot_Development 1 0 2018-01-11 09:19:44.331 -!MESSAGE Updating projects - -!ENTRY riolog 1 0 2018-01-11 09:47:30.113 -!MESSAGE exiting listener diff --git a/.metadata/.mylyn/.taskListIndex/segments_1 b/.metadata/.mylyn/.taskListIndex/segments_1 deleted file mode 100644 index 1bfc38c26aa0bae1171a5f8bb794a66a3346688f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71 zcmcD&o+HjtoSL4SnpaZHz`($ktg0NC$NZ;2G|4xmxZC8k1kZ KI3HK1>jD6bP7mt< diff --git a/.metadata/.mylyn/.taskListIndex/write.lock b/.metadata/.mylyn/.taskListIndex/write.lock deleted file mode 100644 index e69de29..0000000 diff --git a/.metadata/.mylyn/.tasks.xml.zip b/.metadata/.mylyn/.tasks.xml.zip deleted file mode 100644 index f7164442675354c1d8e166bdb5951c864eecc3ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235 zcmWIWW@Zs#;Nak3nBk@E!+->Mfb5dQ;_RHv;u5`z+?>rD*Pl2WsNt=vb?(gh&7nqD zj01u^&U&BoKY7M`dngxg;pMFXo3?M}^wc@`?WB%gAV>2`6Q)%y9oFj8mMnWN9;#KL z@@(moB}}DHRh?UmRtE)75&0ujY{>HUZO)g(v|Ee}0p9E!dhup9i9m~6fH=ULkx7IB d;W%VDkmFDRvQq=RS=m6cj6i4wq-TSb0svAoL52VT diff --git a/.metadata/.mylyn/repositories.xml.zip b/.metadata/.mylyn/repositories.xml.zip deleted file mode 100644 index 898dbf8d942e4d324a214d41932460ad5c79ce1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 567 zcmWIWW@Zs#;Nak3nBk@E!+-z4TLpJ!6~Lb-8^s`iz+PtU}h@9AHEN&1X%pHaZ9 z&MU{opU5bCFbi%n`SkJji-&L6_*F3WCt={9kM|kq$8A})T zA2*9KIH&0rRw(b^JMq`G&t18`3J-j;6r5b2vc+95bY1tlRN=5tM2ARC&Gd#O#;@}d zzWr1T=?PT)q&wq@jen=+tA{?)i_EyxgE}ky*0c$zT`78;yjbVW{Pme^&a1xqtoU%@ zPU`n7vtG`33F9@fLiCu~-5w3oW;hHfxFx%E-pypXqB zMYeo3nYQuXww?bHw#Beav0h&Kdh6!-f4+Fw*T(o3>8D4_EtHOV^XN(9|Lcck6!z~9 z*ET6_USV66|J{7ef7SqRc8*^&oNp~k@MdKL QsbB;`J0SfSXet8(00HLh6951J diff --git a/.metadata/.mylyn/tasks.xml.zip b/.metadata/.mylyn/tasks.xml.zip deleted file mode 100644 index 92fb4cb672c0cc67f9e621f64701e638d49d2262..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235 zcmWIWW@Zs#;Nak3Q1jLHVL$>rKz2!Dadu8-afx0rb2w)bQ5TI(O#$=1`+6 z#sNVdXT8t)pFHEeJ(P>L@bcDxP1`qfdg`3}c2Y+#kfV8}3Dc^U4r}#kOO`zs57nwr zdA9V)5~k9ps?IG&tAm24i2M;MHe~twHs?!X+AT(g0B?2FG|--P0qyJm CSO?Dl diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources deleted file mode 100644 index b088a4309b7bdbd89940e7cdc93ab88810d3c53b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 405 zcmZ?R*xjhShe1S2b=vdAllRFf=Oz}Hq!uZZBqrsg@^UGMWRxm+CFUs@8Y&oATA7$z z85=0L28SpZ85mmda;2o^lq9-V6l4}9mSpDV#pf5L>!l{=WEK>s>Sd*r=q2YDrP>;r z8k(9}7#Wxvm>2-{= - - - activeSchemeId:org.eclipse.ui.defaultAcceleratorConfiguration - ModelMigrationProcessor.001 - - - - - - - - topLevel - - - - - persp.actionSet:org.eclipse.mylyn.doc.actionSet - persp.actionSet:org.eclipse.mylyn.tasks.ui.navigation - persp.actionSet:org.eclipse.ui.cheatsheets.actionSet - persp.actionSet:org.eclipse.search.searchActionSet - persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation - persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation - persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo - persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet - persp.actionSet:org.eclipse.ui.actionSet.keyBindings - persp.actionSet:org.eclipse.ui.actionSet.openFiles - persp.actionSet:edu.wpi.first.wpilib.plugins.core.actionSet - persp.actionSet:org.eclipse.debug.ui.launchActionSet - persp.actionSet:org.eclipse.jdt.ui.JavaActionSet - persp.actionSet:org.eclipse.jdt.ui.JavaElementCreationActionSet - persp.actionSet:org.eclipse.ui.NavigateActionSet - persp.viewSC:org.eclipse.jdt.ui.PackageExplorer - persp.viewSC:org.eclipse.jdt.ui.TypeHierarchy - persp.viewSC:org.eclipse.jdt.ui.SourceView - persp.viewSC:org.eclipse.jdt.ui.JavadocView - persp.viewSC:org.eclipse.search.ui.views.SearchView - persp.viewSC:org.eclipse.ui.console.ConsoleView - persp.viewSC:org.eclipse.ui.views.ContentOutline - persp.viewSC:org.eclipse.ui.views.ProblemView - persp.viewSC:org.eclipse.ui.views.ResourceNavigator - persp.viewSC:org.eclipse.ui.views.TaskList - persp.viewSC:org.eclipse.ui.views.ProgressView - persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer - persp.viewSC:org.eclipse.ui.texteditor.TemplatesView - persp.viewSC:org.eclipse.pde.runtime.LogView - persp.newWizSC:org.eclipse.jdt.ui.wizards.JavaProjectWizard - persp.newWizSC:org.eclipse.jdt.ui.wizards.NewPackageCreationWizard - persp.newWizSC:org.eclipse.jdt.ui.wizards.NewClassCreationWizard - persp.newWizSC:org.eclipse.jdt.ui.wizards.NewInterfaceCreationWizard - persp.newWizSC:org.eclipse.jdt.ui.wizards.NewEnumCreationWizard - persp.newWizSC:org.eclipse.jdt.ui.wizards.NewAnnotationCreationWizard - persp.newWizSC:org.eclipse.jdt.ui.wizards.NewSourceFolderCreationWizard - persp.newWizSC:org.eclipse.jdt.ui.wizards.NewSnippetFileCreationWizard - persp.newWizSC:org.eclipse.jdt.ui.wizards.NewJavaWorkingSetWizard - persp.newWizSC:org.eclipse.ui.wizards.new.folder - persp.newWizSC:org.eclipse.ui.wizards.new.file - persp.newWizSC:org.eclipse.ui.editors.wizards.UntitledTextFileWizard - persp.perspSC:org.eclipse.jdt.ui.JavaBrowsingPerspective - persp.perspSC:org.eclipse.debug.ui.DebugPerspective - persp.viewSC:org.eclipse.mylyn.tasks.ui.views.tasks - persp.newWizSC:org.eclipse.mylyn.tasks.ui.wizards.new.repository.task - persp.showIn:org.eclipse.jdt.ui.PackageExplorer - persp.showIn:org.eclipse.team.ui.GenericHistoryView - persp.showIn:org.eclipse.ui.views.ResourceNavigator - persp.showIn:org.eclipse.ui.navigator.ProjectExplorer - persp.actionSet:org.eclipse.debug.ui.breakpointActionSet - persp.actionSet:org.eclipse.jdt.debug.ui.JDTDebugActionSet - persp.actionSet:org.eclipse.eclemma.ui.CoverageActionSet - persp.showIn:org.eclipse.eclemma.ui.CoverageView - persp.showIn:org.eclipse.egit.ui.RepositoriesView - persp.newWizSC:org.eclipse.jdt.junit.wizards.NewTestCaseCreationWizard - persp.actionSet:org.eclipse.jdt.junit.JUnitActionSet - persp.viewSC:org.eclipse.ant.ui.views.AntView - - - - org.eclipse.e4.primaryNavigationStack - active - - - - - - - - - - - - - - - - - - - org.eclipse.e4.secondaryNavigationStack - - - - - - - - - org.eclipse.e4.secondaryDataStack - - - - - - - - - - - - - - - - - - - - - - - - - - View - categoryTag:Help - - - - - View - categoryTag:General - - ViewMenu - menuContribution:menu - - - - - - - View - categoryTag:Help - - - - org.eclipse.e4.primaryDataStack - EditorStack - - - - - - - View - categoryTag:Java - active - activeOnClose - - ViewMenu - menuContribution:menu - - - - - - - View - categoryTag:Java - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - - View - categoryTag:General - - ViewMenu - menuContribution:menu - - - - - - - View - categoryTag:Java - - - - - View - categoryTag:Java - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - - View - categoryTag:General - - ViewMenu - menuContribution:menu - - - - - - - View - categoryTag:General - - - - - - View - categoryTag:General - - ViewMenu - menuContribution:menu - - - - - - - - View - categoryTag:Mylyn - - ViewMenu - menuContribution:menu - - - - - - - View - categoryTag:Git - - - - - View - categoryTag:Java - - - - - View - categoryTag:Ant - - - - toolbarSeparator - - - - Draggable - - - - toolbarSeparator - - - - Draggable - - - Draggable - - - Draggable - - - Draggable - - - toolbarSeparator - - - - Draggable - - - - toolbarSeparator - - - - toolbarSeparator - - - - Draggable - - - stretch - SHOW_RESTORE_MENU - - - Draggable - HIDEABLE - SHOW_RESTORE_MENU - - - - - stretch - - - Draggable - - - Draggable - - - - - TrimStack - Draggable - - - - - - - - - platform:win32 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - platform:win32 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Editor - - - - - View - categoryTag:Ant - - - - - View - categoryTag:Gradle - - - - - View - categoryTag:Gradle - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Java - - - - - View - categoryTag:Git - - - - - View - categoryTag:Git - - - - - View - categoryTag:Git - - - - - View - categoryTag:Git - - - - - View - categoryTag:Git - - - - - View - categoryTag:General - - - - - View - categoryTag:Help - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Java - - - - - View - categoryTag:Java - - - - - View - categoryTag:Java - - - - - View - categoryTag:Java Browsing - - - - - View - categoryTag:Java Browsing - - - - - View - categoryTag:Java Browsing - - - - - View - categoryTag:Java Browsing - - - - - View - categoryTag:Java - - - - - View - categoryTag:General - - - - - View - categoryTag:Java - - - - - View - categoryTag:Java - - - - - View - categoryTag:Maven - - - - - View - categoryTag:Maven - - - - - View - categoryTag:Mylyn - - - - - View - categoryTag:Mylyn - - - - - View - categoryTag:Mylyn - - - - - View - categoryTag:Mylyn - - - - - View - categoryTag:Oomph - - - - - View - categoryTag:Code Recommenders - - - - - View - categoryTag:Code Recommenders - - - - - View - categoryTag:Code Recommenders - - - - - View - categoryTag:Code Recommenders - - - - - View - categoryTag:Code Recommenders - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:Team - - - - - View - categoryTag:Team - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:Help - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:XML - - - - - View - categoryTag:XML - - - - - View - categoryTag:General - - - - - - - - - - glue - move_after:PerspectiveSpacer - SHOW_RESTORE_MENU - - - move_after:Spacer Glue - HIDEABLE - SHOW_RESTORE_MENU - - - glue - move_after:SearchField - SHOW_RESTORE_MENU - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/http-cache.lucene60/segments_1 b/.metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/http-cache.lucene60/segments_1 deleted file mode 100644 index ae2d345e94690964909db9c6a115469101965689..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71 zcmcD&o+HjtoSL4SnpaZHz`($ktg0NC$NZ;2G|4xmxZC8k1kZ KIB!z6^#cHmvk+1M diff --git a/.metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/http-cache.lucene60/write.lock b/.metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/http-cache.lucene60/write.lock deleted file mode 100644 index e69de29..0000000 diff --git a/.metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/local-history.lucene60/_0.cfe b/.metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/local-history.lucene60/_0.cfe deleted file mode 100644 index e2e014c3bef850d41a57575988dad242fb1b8864..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129 zcmcD&o+B>qQ<|KbmuhO@oS$2eUz(TVnpaYknOe*M1j(w(fqBe-3Ph89Q;NH-uP`vP t=%uApfTVyx4?-~ng9J;UoJJ@e1{BQ8g>tULR36Zn`~u2mn3!^Q6#z|h97+HH diff --git a/.metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/local-history.lucene60/_0.cfs b/.metadata/.plugins/org.eclipse.epp.logging.aeri.ide/org.eclipse.epp.logging.aeri.ide.server/local-history.lucene60/_0.cfs deleted file mode 100644 index 1432292075811a9f890b2d1fe4ce6fe780103d11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmcD&o+B>eQ<|KbmuhO@oS$2eUz(TVl30?+00haZ%7J;ze+opCd{c_Mt**H=6fmSx%L;lVxc{FS?t8=_uM zzYS-(wNMu(Y};EA%6rT?5ie?h;QBM3VKAcx%l@szX+Z}ULY6{eoeRD(m!&eGi$Dlq zf_${q(##ke#T)v-(8m)r+$@^Q7K#%91mK!b0LyghU`B$`PUDsp*Eyq$#@=#xJ;ha` zk|}kvqEb`OxaW&j5d^SX`;^A4?3ty05W - diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml b/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml deleted file mode 100644 index 9e390f5..0000000 --- a/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml deleted file mode 100644 index 3bf8f90..0000000 --- a/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml +++ /dev/null @@ -1,12 +0,0 @@ - -
      -
      - - - - - -
      -
      -
      -
      diff --git a/.metadata/.plugins/org.eclipse.m2e.logback.configuration/0.log b/.metadata/.plugins/org.eclipse.m2e.logback.configuration/0.log deleted file mode 100644 index f1e87de..0000000 --- a/.metadata/.plugins/org.eclipse.m2e.logback.configuration/0.log +++ /dev/null @@ -1 +0,0 @@ -2018-01-11 09:19:22,469 [Worker-0] INFO c.g.t.t.d.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read. diff --git a/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.8.2.20171007-0217.xml b/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.8.2.20171007-0217.xml deleted file mode 100644 index e33758c..0000000 --- a/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.8.2.20171007-0217.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - %date [%thread] %-5level %logger{35} - %msg%n - - - OFF - - - - - ${org.eclipse.m2e.log.dir}/0.log - - ${org.eclipse.m2e.log.dir}/%i.log - 1 - 10 - - - 100MB - - - %date [%thread] %-5level %logger{35} - %msg%n - - - - - - WARN - - - - - - - - - - - - - - - diff --git a/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup b/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup deleted file mode 100644 index 1f73e14..0000000 --- a/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup +++ /dev/null @@ -1,6 +0,0 @@ - - diff --git a/.metadata/.plugins/org.eclipse.recommenders.news.impl/downloads/http%3A%2F%2Fwww.eclipse.org%2Fhome%2Feclipsenews.rss b/.metadata/.plugins/org.eclipse.recommenders.news.impl/downloads/http%3A%2F%2Fwww.eclipse.org%2Fhome%2Feclipsenews.rss deleted file mode 100644 index 92f8d4e..0000000 --- a/.metadata/.plugins/org.eclipse.recommenders.news.impl/downloads/http%3A%2F%2Fwww.eclipse.org%2Fhome%2Feclipsenews.rss +++ /dev/null @@ -1,325 +0,0 @@ - - - - Eclipse News - http://www.eclipse.org - Eclipse News - - http://eclipse.org/eclipse.org-common/themes/Nova/images/eclipse.png - eclipse.org - http://www.eclipse.org - - - <![CDATA[Eclipse Newsletter | Capella: open source MBSE solution]]> - - - Thu, 14 Dec 2017 10:10:00 EST - news - 0 - - - <![CDATA[Open Source Community Accelerates Big Data Analytics for Geospatial Solutions]]> - - - Thu, 14 Dec 2017 08:00:00 EST - news - 1 - - - <![CDATA[Announcing Open IoT Challenge 4.0 Scholars]]> - - - Wed, 13 Dec 2017 09:45:00 EST - news - 0 - - - <![CDATA[Eclipse Newsletter | Location Matters]]> - - - Wed, 22 Nov 2017 06:23:00 EST - news - 0 - - - <![CDATA[Open IoT Challenge 4.0 | Extended Deadline Nov 20]]> - - - Wed, 15 Nov 2017 05:30:00 EST - news - 0 - - - <![CDATA[EclipseCon + Ludwigsburg = Great Partners]]> - - - Sun, 22 Oct 2017 08:00:00 EST - news - 0 - - - <![CDATA[New Industry 4.0 Open Testbed Addresses Performance Monitoring and Management in Manufacturing]]> - - - Thu, 19 Oct 2017 11:00:00 EST - news - 1 - - - <![CDATA[Eclipse Science Advances Open Source Technology for Scientific Research]]> - - - Wed, 18 Oct 2017 09:00:00 EST - news - 1 - - - <![CDATA[Eclipse Newsletter | Utility Belt: Projects and Tools]]> - - - Wed, 18 Oct 2017 05:02:00 EST - news - 0 - - - <![CDATA[On Naming Eclipse Enterprise for Java (EE4J)]]> - - - Wed, 04 Oct 2017 08:48:00 EST - news - 0 - - - <![CDATA[EclipseCon Europe: Last Chance for the Early Price]]> - - - Tue, 03 Oct 2017 11:30:00 EST - news - 0 - - - <![CDATA[Annual Donation Campaign: End User Support for the Eclipse Foundation]]> - - - Fri, 29 Sep 2017 11:00:00 EST - news - 0 - - - <![CDATA[Eclipse IoT Announces Fourth Edition of the Open IoT Challenge]]> - - - Thu, 28 Sep 2017 09:10:00 EST - news - 1 - - - <![CDATA[Eclipse IDE Now Supports Java 9]]> - - - Tue, 26 Sep 2017 14:30:00 EST - news - 0 - - - <![CDATA[Special Notice for Eclipse IDE Users on macOS 10.13 in non-English mode]]> - - - Mon, 25 Sep 2017 08:30:00 EST - news - 0 - - - <![CDATA[Get the Early Price for EclipseCon Europe]]> - - - Thu, 21 Sep 2017 08:30:00 EST - news - 0 - - - <![CDATA[Eclipse Newsletter | Eclipse MicroProfile]]> - - - Wed, 20 Sep 2017 10:30:00 EST - news - 0 - - - <![CDATA[Java EE Moves to the Eclipse Foundation]]> - - - Tue, 12 Sep 2017 17:00:00 EST - news - 0 - - - <![CDATA[First Release of Eclipse Papyrus for Real Time: Modeling Tool for UML-RT]]> - - - Thu, 07 Sep 2017 09:00:00 EST - news - 1 - - - <![CDATA[Eclipse Public License Version 2.0 Approved By OSI and Eclipse Foundation Board of Directors]]> - - - Tue, 29 Aug 2017 14:20:00 EST - news - 0 - - - <![CDATA[Eclipse Newsletter | Exciting New Eclipse Projects]]> - - - Tue, 22 Aug 2017 09:00:00 EST - news - 0 - - - <![CDATA[EclipseCon Europe: Schedule and Keynotes]]> - - - Mon, 21 Aug 2017 10:10:00 EST - news - 0 - - - <![CDATA[Launching Eclipse IoT Newsletter]]> - - - Fri, 18 Aug 2017 05:40:00 EST - news - 0 - - - <![CDATA[Eclipse IoT Day @ ThingMonk]]> - - - Thu, 17 Aug 2017 08:55:00 EST - news - 0 - - - <![CDATA[Potential adware plugin on Eclipse Marketplace - Eclipse Class Decompiler]]> - - - Mon, 14 Aug 2017 10:40:00 EST - news - 0 - - - <![CDATA[Eclipse Newsletter | Summer Issue]]> - - - Tue, 25 Jul 2017 10:05:00 EST - news - 0 - - - <![CDATA[EclipseCon Europe 2017 | Submissions Close in One Week]]> - - - Mon, 10 Jul 2017 09:05:00 EST - news - 0 - - - <![CDATA[Eclipse Oxygen Now Available]]> - - - Wed, 28 Jun 2017 10:05:00 EST - news - 0 - - - <![CDATA[Eclipse Newsletter | Eclipse Oxygen]]> - - - Wed, 28 Jun 2017 10:26:00 EST - news - 0 - - - <![CDATA[Early Submission Deadline for EclipseCon Europe 2017]]> - - - Mon, 26 Jun 2017 22:00:00 EST - news - 0 - - - <![CDATA[Capella Industry Consortium (IC) Announced at PolarSys]]> - - - Tue, 20 Jun 2017 04:00:00 EST - news - 0 - - - <![CDATA[RC3 Available for Eclipse Oxygen | Download Now]]> - - - Mon, 12 Jun 2017 15:45:00 EST - news - 0 - - - <![CDATA[Last Chance to Register for EclipseCon France 2017]]> - - - Thu, 08 Jun 2017 10:45:00 EST - news - 0 - - - <![CDATA[Eclipse Newsletter - Language Server Protocol 101]]> - - - Wed, 24 May 2017 05:35:00 EST - news - 0 - - - <![CDATA[It’s time to organise Eclipse Oxygen DemoCamps]]> - - - Tue, 23 May 2017 04:35:00 EST - news - 0 - - - <![CDATA[Case Study: Deploying Eclipse IoT on Germany's DB Railway System]]> - - - Thu, 18 May 2017 04:55:00 EST - news - 0 - - - <![CDATA[EclipseCon Europe 2017 | Call for Papers Open]]> - - - Wed, 17 May 2017 09:29:00 EST - news - 0 - - - <![CDATA[Program Ready for EclipseCon France 2017]]> - - - Thu, 27 Apr 2017 17:10:00 EST - news - 0 - - - <![CDATA[New Eclipse IoT Open Testbeds]]> - - - Thu, 27 Apr 2017 09:05:00 EST - news - 1 - - - diff --git a/.metadata/.plugins/org.eclipse.recommenders.news.impl/downloads/http%3A%2F%2Fwww.eclipse.org%2Frecommenders%2Ffeeds%2Fide.rss b/.metadata/.plugins/org.eclipse.recommenders.news.impl/downloads/http%3A%2F%2Fwww.eclipse.org%2Frecommenders%2Ffeeds%2Fide.rss deleted file mode 100644 index b6219a4..0000000 --- a/.metadata/.plugins/org.eclipse.recommenders.news.impl/downloads/http%3A%2F%2Fwww.eclipse.org%2Frecommenders%2Ffeeds%2Fide.rss +++ /dev/null @@ -1,13 +0,0 @@ - - - - Code Recommenders In-IDE News - https://www.eclipse.org/recommenders/ - The latest news about Code Recommenders, delivered to your Eclipse IDE - - Insert Knowledge Here - A Guide to Intelligent Code Completion Using Eclipse Code Recommenders - https://medium.com/codetrails/insert-knowledge-here-a2f71c2862d2?utm_source=rss-eclipse&utm_medium=eclipse&utm_campaign=cc - Tue, 10 Oct 2017 16:00:00 GMT - - - diff --git a/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml deleted file mode 100644 index 5ca0b77..0000000 --- a/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml +++ /dev/null @@ -1,3 +0,0 @@ - -
      -
      diff --git a/.metadata/.plugins/org.eclipse.ui.intro/introstate b/.metadata/.plugins/org.eclipse.ui.intro/introstate deleted file mode 100644 index 236d56c..0000000 --- a/.metadata/.plugins/org.eclipse.ui.intro/introstate +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml deleted file mode 100644 index 851c296..0000000 --- a/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml +++ /dev/null @@ -1,15 +0,0 @@ - -
      -
      - - - - - - - - - - -
      -
      diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml b/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml deleted file mode 100644 index 368cae9..0000000 --- a/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/.metadata/version.ini b/.metadata/version.ini deleted file mode 100644 index 2e7da2e..0000000 --- a/.metadata/version.ini +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Jan 11 09:19:14 EST 2018 -org.eclipse.core.runtime=2 -org.eclipse.platform=4.7.2.v20171130-0510 From ec3b5921988a0b872299ab353cd80763f3f91b11 Mon Sep 17 00:00:00 2001 From: James Makovics Date: Sat, 13 Jan 2018 14:14:55 -0500 Subject: [PATCH 68/69] Changed DriveTrain imports changed multiple Talon methods to include the 2018 Talon libraries --- .classpath | 5 ++-- .../frc/team708/robot/subsystems/Climber.java | 6 ++--- .../team708/robot/subsystems/Drivetrain.java | 23 +++++++++++-------- .../frc/team708/robot/subsystems/Feeder.java | 6 +++-- .../team708/robot/subsystems/Intake_Ball.java | 5 ++-- .../team708/robot/subsystems/Intake_Gear.java | 5 ++-- .../frc/team708/robot/subsystems/LED.java | 1 - .../team708/robot/subsystems/Pivot_Gear.java | 5 ++-- .../frc/team708/robot/subsystems/Shooter.java | 9 ++++---- .../team708/robot/subsystems/VisionLift.java | 2 +- 10 files changed, 38 insertions(+), 29 deletions(-) diff --git a/.classpath b/.classpath index fa153a5..edece6e 100644 --- a/.classpath +++ b/.classpath @@ -6,7 +6,8 @@ - - + + + diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Climber.java b/src/org/usfirst/frc/team708/robot/subsystems/Climber.java index 80dd2e5..abf397b 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Climber.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Climber.java @@ -5,7 +5,7 @@ import org.usfirst.frc.team708.robot.RobotMap; import org.usfirst.frc.team708.robot.commands.Climber.ManualMoveClimber; -import com.ctre.CANTalon; +import com.ctre.phoenix.motorcontrol.can.*; //import org.usfirst.frc.team708.robot.RobotMap; //import edu.wpi.first.wpilibj.DigitalInput; @@ -20,14 +20,14 @@ * @author James McPeak */ public class Climber extends Subsystem { - public static CANTalon climberMotor; // Uses the Motor CanTalon + public static WPI_TalonSRX climberMotor; // Uses the Motor CanTalon /** * Constructor */ public Climber() { // Initializes the motor for the Climber - climberMotor = new CANTalon (RobotMap.climberMotor); + climberMotor = new WPI_TalonSRX (RobotMap.climberMotor); } public void initDefaultCommand() { diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java index 595c2e3..4bb6922 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java @@ -14,8 +14,11 @@ import edu.wpi.first.wpilibj.BuiltInAccelerometer; import com.ctre.CANTalon; -import com.ctre.CANTalon.FeedbackDevice; -import com.ctre.CanTalonJNI; +import com.ctre.phoenix.motorcontrol.ControlMode; +//import com.ctre.CANTalon.FeedbackDevice; +//import com.ctre.CanTalonJNI; +import com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX; + import edu.wpi.first.wpilibj.DigitalInput; import edu.wpi.first.wpilibj.Encoder; import edu.wpi.first.wpilibj.Solenoid; @@ -24,7 +27,7 @@ //import edu.wpi.first.wpilibj.AnalogGyro; import edu.wpi.first.wpilibj.ADXRS450_Gyro; import edu.wpi.first.wpilibj.Talon; -import edu.wpi.first.wpilibj.TalonSRX; +//import edu.wpi.first.wpilibj.TalonSRX; import edu.wpi.first.wpilibj.command.PIDSubsystem; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; @@ -41,7 +44,7 @@ public class Drivetrain extends PIDSubsystem { private double moveSpeed = 0.0; private double pidOutput = 0.0; - private CANTalon leftMaster, leftSlave, rightMaster, rightSlave; // Motor Controllers + private WPI_TalonSRX leftMaster, leftSlave, rightMaster, rightSlave; // Motor Controllers private HatterDrive drivetrain; // FRC provided drivetrain class @@ -76,10 +79,10 @@ public Drivetrain() { // Initializes motor controllers with device IDs from RobotMap - leftMaster = new CANTalon(RobotMap.drivetrainLeftMotorMaster); - leftSlave = new CANTalon(RobotMap.drivetrainLeftMotorSlave); - rightMaster = new CANTalon(RobotMap.drivetrainRightMotorMaster); - rightSlave = new CANTalon(RobotMap.drivetrainRightMotorSlave); + leftMaster = new WPI_TalonSRX(RobotMap.drivetrainLeftMotorMaster); + leftSlave = new WPI_TalonSRX(RobotMap.drivetrainLeftMotorSlave); + rightMaster = new WPI_TalonSRX(RobotMap.drivetrainRightMotorMaster); + rightSlave = new WPI_TalonSRX(RobotMap.drivetrainRightMotorSlave); drivetrain = new HatterDrive(leftMaster, rightMaster, Constants.DRIVE_USE_SQUARED_INPUT); // Initializes drivetrain class @@ -289,8 +292,8 @@ public double moveByUltrasonic(double targetDistance, double minSpeed, double ma * talon is doing */ public void setupMasterSlave() { - leftSlave.changeControlMode(CANTalon.TalonControlMode.Follower); - rightSlave.changeControlMode(CANTalon.TalonControlMode.Follower); + leftSlave.changeControlMode(WPI_TalonSRX.set(ControlMode.Follower)); + rightSlave.changeControlMode(WPI_TalonSRX.set(ControlMode.Follower)); leftSlave.set(leftMaster.getDeviceID()); rightSlave.set(rightMaster.getDeviceID()); diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Feeder.java b/src/org/usfirst/frc/team708/robot/subsystems/Feeder.java index 1315900..a764096 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Feeder.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Feeder.java @@ -11,6 +11,8 @@ import com.ctre.CANTalon; import com.ctre.CANTalon.FeedbackDevice; import com.ctre.CANTalon.TalonControlMode; +import com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX; + import edu.wpi.first.wpilibj.command.Subsystem; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; @@ -21,12 +23,12 @@ */ public class Feeder extends Subsystem { - private CANTalon feedMotor; + private WPI_TalonSRX feedMotor; /** * Constructor */ public Feeder() { - feedMotor = new CANTalon(RobotMap.feederMotor); //initializes the loading motor + feedMotor = new WPI_TalonSRX(RobotMap.feederMotor); //initializes the loading motor } public void initDefaultCommand() { diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.java b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.java index b938c68..85f6708 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.java @@ -4,6 +4,7 @@ import org.usfirst.frc.team708.robot.RobotMap; import com.ctre.CANTalon; +import com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX; import edu.wpi.first.wpilibj.command.Subsystem; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; @@ -16,10 +17,10 @@ public class Intake_Ball extends Subsystem { - private CANTalon intakeMotor; + private WPI_TalonSRX intakeMotor; public Intake_Ball() { - intakeMotor = new CANTalon (RobotMap.intakeMotorBall); + intakeMotor = new WPI_TalonSRX (RobotMap.intakeMotorBall); } public void initDefaultCommand() { diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java index 8f65775..c1068db 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java @@ -7,6 +7,7 @@ import com.ctre.CANTalon; import com.ctre.CANTalon.FeedbackDevice; import com.ctre.CANTalon.TalonControlMode; +import com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX; import edu.wpi.first.wpilibj.DigitalInput; import edu.wpi.first.wpilibj.command.Subsystem; @@ -20,12 +21,12 @@ public class Intake_Gear extends Subsystem { - private CANTalon intakeMotor; + private WPI_TalonSRX intakeMotor; private DigitalInput gearSensor; //I'm trying to link the right motor to the intake code here public Intake_Gear() { - intakeMotor = new CANTalon (RobotMap.intakeMotorGear); + intakeMotor = new WPI_TalonSRX (RobotMap.intakeMotorGear); gearSensor = new DigitalInput(RobotMap.gearSensorSwitch); // intakeMotor.reset(); diff --git a/src/org/usfirst/frc/team708/robot/subsystems/LED.java b/src/org/usfirst/frc/team708/robot/subsystems/LED.java index 84db850..e1b0e7f 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/LED.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/LED.java @@ -13,7 +13,6 @@ import edu.wpi.first.wpilibj.networktables.NetworkTable; //import edu.wpi.first.wpilibj.networktables2.type.NumberArray; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; -import edu.wpi.first.wpilibj.tables.TableKeyNotDefinedException; import edu.wpi.first.wpilibj.SerialPort; import edu.wpi.first.wpilibj.SerialPort.*; diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java index 6fa8a62..3abe5ca 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java @@ -8,6 +8,7 @@ import com.ctre.CANTalon; import com.ctre.CANTalon.FeedbackDevice; import com.ctre.CANTalon.TalonControlMode; +import com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX; import edu.wpi.first.wpilibj.command.Subsystem; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; @@ -20,11 +21,11 @@ public class Pivot_Gear extends Subsystem { - private CANTalon pivotMotor; + private WPI_TalonSRX pivotMotor; //I'm trying to link the right motor to the intake code here public Pivot_Gear() { - pivotMotor = new CANTalon (RobotMap.pivotGearMotor); + pivotMotor = new WPI_TalonSRX (RobotMap.pivotGearMotor); pivotMotor.enable(); // pivotMotor.reverseSensor(true); diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java index 4e1447f..f7bc620 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java @@ -11,6 +11,7 @@ import com.ctre.CANTalon; import com.ctre.CANTalon.FeedbackDevice; import com.ctre.CANTalon.TalonControlMode; +import com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX; import edu.wpi.first.wpilibj.DigitalInput; import edu.wpi.first.wpilibj.Encoder; @@ -28,7 +29,7 @@ public class Shooter extends Subsystem { // Put methods for controlling this subsystem here. Call these // from Commands. - private CANTalon shooter, shooterSlave; // Motor Controllers + private WPI_TalonSRX shooter, shooterSlave; // Motor Controllers private Servo hood; private int hoodLocation; private int spinSpeed; @@ -42,10 +43,10 @@ public Shooter() { // Initializes the motor - shooter = new CANTalon(RobotMap.shooterMotorMaster); - shooterSlave = new CANTalon(RobotMap.shooterMotorSlave); + shooter = new WPI_TalonSRX(RobotMap.shooterMotorMaster); + shooterSlave = new WPI_TalonSRX(RobotMap.shooterMotorSlave); - shooterSlave.changeControlMode(CANTalon.TalonControlMode.Follower); + shooterSlave.changeControlMode(WPI_TalonSRX.TalonControlMode.Follower); shooterSlave.set(shooter.getDeviceID()); // shooter.reset(); diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java index d217360..b0e4c30 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java @@ -15,7 +15,7 @@ import edu.wpi.first.wpilibj.CameraServer; import edu.wpi.first.wpilibj.command.Subsystem; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; -import edu.wpi.first.wpilibj.tables.TableKeyNotDefinedException; +//import edu.wpi.first.wpilibj.tables.TableKeyNotDefinedException; import edu.wpi.first.wpilibj.vision.VisionThread; /** From a0868d8272ffed1a628deea2be9191bb0f2260d3 Mon Sep 17 00:00:00 2001 From: James Makovics Date: Sat, 13 Jan 2018 16:21:29 -0500 Subject: [PATCH 69/69] Updated Talons and DriveTrain --- .../org/usfirst/frc/team708/robot/Robot.class | Bin 7105 -> 7085 bytes .../commands/autonomous/JustTenBalls.class | Bin 1562 -> 387 bytes .../commands/autonomous/OneGearCenter.class | Bin 2501 -> 390 bytes .../commands/autonomous/SixtyBalls.class | Bin 2319 -> 381 bytes .../robot/commands/autonomous/TenBalls.class | Bin 2537 -> 375 bytes .../drivetrain/RotateAndDriveToBoiler.class | Bin 2227 -> 2187 bytes .../drivetrain/RotateAndDriveToLift.class | Bin 2015 -> 1977 bytes .../commands/intake_gear/GearAdjust.class | Bin 1340 -> 681 bytes .../intake_gear/Intake_Gear_Down.class | Bin 1229 -> 473 bytes .../commands/intake_gear/Intake_Gear_Up.class | Bin 1149 -> 467 bytes .../robot/commands/shooter/HoodAdjust.class | Bin 1175 -> 447 bytes .../robot/commands/shooter/ManualShoot.class | Bin 1319 -> 450 bytes .../robot/commands/shooter/MoveHoodHigh.class | Bin 1037 -> 453 bytes .../robot/commands/shooter/MoveHoodLow.class | Bin 1035 -> 450 bytes .../robot/commands/shooter/SpinShooter.class | Bin 1244 -> 450 bytes .../commands/shooter/SpinShooterBack.class | Bin 1048 -> 462 bytes .../robot/commands/shooter/StopShooter.class | Bin 1104 -> 450 bytes .../team708/robot/subsystems/Climber.class | Bin 909 -> 967 bytes .../team708/robot/subsystems/Drivetrain.class | Bin 7252 -> 7434 bytes .../frc/team708/robot/subsystems/Feeder.class | Bin 906 -> 964 bytes .../robot/subsystems/Intake_Ball.class | Bin 922 -> 980 bytes .../robot/subsystems/Intake_Gear.class | Bin 1331 -> 1389 bytes .../frc/team708/robot/subsystems/LED.class | Bin 1993 -> 1993 bytes .../team708/robot/subsystems/Pivot_Gear.class | Bin 1678 -> 780 bytes .../team708/robot/subsystems/Shooter.class | Bin 2885 -> 735 bytes .../robot/subsystems/VisionBoiler.class | Bin 8340 -> 8003 bytes .../team708/robot/subsystems/VisionLift.class | Bin 8507 -> 8172 bytes .../frc/team708/robot/util/HatterDrive.class | Bin 2402 -> 2150 bytes src/org/usfirst/frc/team708/robot/Robot.java | 2 +- .../commands/autonomous/JustTenBalls.java | 2 ++ .../commands/autonomous/OneGearCenter.java | 2 ++ .../robot/commands/autonomous/SixtyBalls.java | 3 ++ .../robot/commands/autonomous/TenBalls.java | 3 ++ .../drivetrain/RotateAndDriveToBoiler.java | 2 +- .../drivetrain/RotateAndDriveToLift.java | 2 +- .../commands/intake_gear/GearAdjust.java | 22 ++++++------ .../intake_gear/Intake_Gear_Down.java | 10 +++++- .../commands/intake_gear/Intake_Gear_Up.java | 8 ++++- .../robot/commands/shooter/HoodAdjust.java | 9 +++++ .../robot/commands/shooter/ManualShoot.java | 8 +++++ .../robot/commands/shooter/MoveHoodHigh.java | 8 +++++ .../robot/commands/shooter/MoveHoodLow.java | 9 +++++ .../robot/commands/shooter/SpinShooter.java | 8 +++++ .../commands/shooter/SpinShooterBack.java | 8 +++++ .../robot/commands/shooter/StopShooter.java | 7 ++++ .../team708/robot/subsystems/Drivetrain.java | 33 +++++++++--------- .../frc/team708/robot/subsystems/Feeder.java | 2 -- .../team708/robot/subsystems/Intake_Gear.java | 2 -- .../team708/robot/subsystems/Pivot_Gear.java | 22 ++++++------ .../frc/team708/robot/subsystems/Shooter.java | 15 ++++---- .../robot/subsystems/VisionBoiler.java | 5 +-- .../team708/robot/subsystems/VisionLift.java | 3 +- .../frc/team708/robot/util/HatterDrive.java | 9 ++--- 53 files changed, 143 insertions(+), 61 deletions(-) diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index 496ccba24b899c4300a9077c43502f005585f5ac..f19d0427bfa948a38b21b6ba72069868dccc803f 100644 GIT binary patch delta 2176 zcmZuxX?T-G5Pm0Vv*~7gklsz9(8EHhh1x;{1Pc`S19Dd@AeI`WQW}945yg0ciVErn zqIiLLP!N$83lgQGf`SL&Eh65EqJS6R0Xn-$oBlA*llR?szL}kwoo~OL-i_YC-m}|x z04Svq64#+s;AIILT4S&PJ2ku_@T!C(WO+@mb_wj3kRi+K0&hsfhQuC$y%Gr_@ut9A z5{V)4w!k|QDIu{>V82AV5djz!{kONKDpCr=S>#sd^~|xg@6P zr4ke?;nT}FLGcnZ^fEzECqZsU*(9DW|0HHoqLY#YB}>fK9w~xSWd`c?I*l8rbSGtK z_6W)p)VbMXE3i{m^YG}SHpeBcYg<3jC4l7r<2lw*UeH=@0XE-{(qGoQ5ziwpB^m>K6aJRKa z_O~y^GV8F+8+9KnLERK(Qw|}jx@uOjqFl-obdI8Y>aOr28Wn!8b(`w$*hcpPgLolpG~_17?f6VU}a(LhCm&}hY|QT7X|%&Jrs_Q6!v+@$
      1j->k04}8DqesGt3h+%;#^ICuf+aW|+rh znCD=a58f~zykVY`VIF|tb%Zjim95XF>6K$~EDWmhWR|V1US#+RBwL7 zt1j%dg?Dlws@NXu;Y`nmBethzcIajwd+g^-2RdYNwP$Gw$3&-jJ&j*!05G+!kEag!~qaj?`NKX{}1n3b@dl6#8<5 zk>0)SJMzsA?MS)d4tE!9L6mz;5MwL1Vq6Qx8$BV2iL5JHaIw*s1X0QQ(l$LQh{>#{ zwCT%&n9BO{mOwb5Du`)psBUw(A_yPr>23PTAZDtGsh0k(X_$&uDA$}XK zZGy+3GT6nS+hDT6G=sSY^9^=mY|94}!No65A2_Hl6nWt$YrdyT&qxge+iQ5qyj?r+ PAhYBuR#F!{P?r85DMZDL delta 2182 zcmYjT30PEB6#ma__s!+8IKUu+f&zg^f{CK0DT-R(S7N3nn&kvo8jGT~sZIMri`8pi zwam&T6b#5I!xkzlxAuK6%Tn9aGPQH>n_=Ml=0E2@_iXo^_uj{bl5Hiy?Z>xl1yD?< zODsc&z%~g7I=onlR}{P|@S23jw!E&iPJuThq-}Xq;4O(*n`{?&TOz?G?+Cmrk!X`0 z0y`!AHrXYxTOw7HAod8nCy{O+y)W>AM21a16!=J@pG`g%_(USdCZ7s?CXr{8&n3RV zmj=F4@@t82@U7&=zf1xx{gGCx%!B=?XFwBq&H!;8)O3K@N@^ zI3Wl!h$-mcUWg2G2y#kHx4Fw8w;+$iOmr9|1Q`;umFg8FCFUqKMvy5{snl3OaT0Tt z8ZRh8VxCfa2=WO^^o*IsE9O6m8cH%KS&(0%L3w1P22z0cu%7Hh3SW4N&rt4utBRn`I{(^!tHOzO)g0a;)zcSyrT5LXk5tZm-@ z)(OMwxdzt~iZvbWjN$VeaAVXUyc4Sf4JK~F%{oPs*L2>3Mr*6L*mE7OClsj2m@~(h znYasgM-s=mgxkcexQ&B`d2YuYgdw`bWS7UK(J~3D@dzF@@g!E8G@M45bgF`p+zX9Ty_{y!Xr8vqJj*$TO0B8p zbmv$qZP{Sf^MYucl@Z_METi$(?)X$s8BHK$sr*)ga9fE9{aq8)KvnPgNwF=J35`xi zUY@nUlj5EfsI9KDJW0jDrTifPKdk`omeH#gswHnyOWuo?yhts1cUtn^wB)sD$!pP) zccCTkPfK2gmiOX5E$_#}TJp_-GA{TS9%loZ$eAhf0;jv{a5-^(xO>?U0FAWz4rKn>@_8&Bsc0+7xsFdD|p}<AhT&1XI+U#hRtZr4Dpg1nkZo6~Y0sJHN+r;32 znw3Wz_I9g7U3FfF_7;rJbw9@(;NA{)i;4EOrK{Ko&a8?V?U<0?hQZOA_I?iWmJUPU zNVhyjxVA&RgB-n%<5#FWE>=ca6H^O%_iV+aW@NXbycxNzm>f+z5HVI`YDUnDB8tIK zGBJ|xA05r8uH^j6+sP?AJb=#p&2ah74q-|~8_sFPRL!S_FrE3it(c*CMF=yQ&x-K# zLYU3`{0P4wggF(#HUuJu3qz=6hpGs#4q-0yiz58u5auzTAK{mTP*ahFx;8AZO>W=9 z5E|HJk=>Kqw>X3)%rE70-(}pDyB(MNu2Ai2m)FXJJWk_$gT8F+9^ F>i?YJ%;x|A diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/JustTenBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/JustTenBalls.class index 1daa6b52bd082d9bacdaf8270263d6d28b2eaade..864a6b62d10d6bc9f50805bcd80294704ba4918a 100644 GIT binary patch delta 134 zcmbQm)66V)>ff$?3=9k=3<6vX%nZEj41DYi{EQ52Hko;uC3X{+HB1g;RAgphV4YmR zoEOZX$iM_t1_F#g2owgAY(Snqn9sn#sewp@h5)ukUP7^ zp-GQ-*85~if|dydD|)LzI!Ab*VB)jqV92{x;V9@JNBXN=|#I*HLQ}W z8@^{-cGdP>{ju+QyWDzcn5MhRpsYzQ>yne3Bh#($Qo!keT5gfuDJ+jWj$iX+L@U_7 zQ{*`zx%D)IO&%L3Mhp`eVOVI9SIH44+;a?J>4jjj__mdlpvmc}q@*bE9>$PCmSN}L zL9-ISASWnSyj^?KDpHl5tZ+TUDsljp1r4FL#`78dh1SH5OKRRi30Sqf{#J*FLx85hKu4 zz9rZoSxIHH2f=wvW#zAvz;+CWb|NPzRYu8A_rVa|De`GY6vG$+!)@x_p^wS$6EzWx zQmX`xA&ik73xh~uTn>_Fg<6?-N;i#6G$-m{6JHS7?`^9idWv@HDEkSh33QOBGxWsB z(^W_O6x|f>pgWrH^zX;(xE|UAG~h-ZH^biGejQ0Ne{&o~2hBZ9Qby<= z8zW1{G`%^@;2CD|l5Wvgm~YZxHZ(*@^4*38`Ij0ZZ69UZq<*<6Gjg7J?_B+bWm|7b TWao*Ke^1Q(A(4?P$!qEtJ;Zv< diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.class index 1a7dbd1d9877fcff4e85d42e101abd6628477a1a..7526cfd311d044c24906c6635d59783ce40eb409 100644 GIT binary patch delta 134 zcmX>q+{P?->ff$?3=9k=3<6vX%nZEj41DYi{EQ52Hko;uC3X|PH%?x`sKm^|z&hE0 zEkBq+k%0-Q3HKFrR^eRcku~<3^wW69YStWCIE_Feor^07)J&o0Wl+ PfeXlEWZ(vpObk2#%2y8b literal 2501 zcmbtW&u<%55dL1`?wXC;{HPN^(8?5AoKR&0P1BH+#)+MnfSaVXlhg?i*7mcr>3W~L zKU#?s;*3Nu9O#WZLgG?ORN`L#11^X=e*qW7yj^>fNF*4rUk1&~Qh^T@4B8UDR+6`8Y}{HZ=@O z)s}|y$V>FLihD|ClETwRS@`7}`FWyY4COd>RO~7XzXdiZnf&L0q~QWSisR!rK2fo! zWYVEs!)2NEQzf$-`YD-Y*D?+xj*5z^l6k4Co08r&jkZO#aTRqH4F=7$P0ute^E1xS zpB~?0h-F2M7J~)T=4*bl!kv;)u}Cvg5LLt4G8|K`JIa{1Z@LVN1>rPw->sXD>*;l; zs(ajM-k6%z9Z?aUUKP!zVb@&U@I7IRrtn>T-R602I9YCc+?i)kZpvbA$)em965V}X z3yRvIC$~u+Fr};Gw>)Xlio$oQe8mikI~Hy7z<6jRkii_oOple-9P=Uf9K*ErVvucU z)lMCYDg*8(VB&yb)bVZGv>T}amhwc(GV310^&YcXytXHNk5YMsF*2Gi$oZyQhTYKVz|k0*my`RfQL7dC1D^&ejdTi{F7y;O0LRix!Sqk(GIOd{3S#-+&o zdSs?b--s5M$@fYd=`ip(ttJQ@OX6x9lMz^t{HMs{?KZB3rfI6_dgL_|dL1&kL;n|m zG!Z^Qe=w$S5$_P;*QgcKSi%f$QzLe$4V-vy5yM}Q_ABJ@E%NvtYj}n`c#ci{if#Ok zd-wxo7Q-$Z#+QfPVI!UH#IQ*Cu&r0=SGKjU|2z3S($~j_NYaOWjUn6Z>&XY=>mxuG S0dxNheDXIyhUK8HmA?QMuARjI diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class index d119214ad44c2624f0512ea3793a16805b392ed8..96ac668a84a015fffc6837a1d462032e6e151aab 100644 GIT binary patch delta 142 zcmeAd`pYDD>ff$?3=9k=3<6vX%nZEj41DYi{EQ52Hko;uC3ceq80#kQW0YrOVPIus zu$k=7Xft^Vt8OrZA_EgpIS4QUAy5`bvH^MeU_Ju_tJZb~#*IJ$CI)sO$p#c=V31|t X0FpdlHY)=s0~e6T$iNLGnHYEga@-Hx literal 2319 zcmbVN+j84P82&bKCD%z>Xq^;j0c9GfbD+vV4{38!8aE-}HYqjnA-f_hfaLw?qWGi8&1Q*Rn`u9J4`|W?Z(M z@F;;}R-O{*(&nFkt*&np(C|qdSsgiT{`VjT&B}#_j!zR9 zz%Q?o9Fo&?TgOHFoP#{+Htm(Cmpw&HlGS?Mq>j&04l z)3HB~!`4yItam#g6WG$Mt%G2wS@BL{QAbI$jBuF1Rcz_t3EV&?j(?izOz9R}-z>WIy6u!a({B2%7(6b7@QuTB0ZKp{4E7QXBZKuc;c#Yw8*>oJ? zR1Ci#tje6I2bDD7DhB|R2liHAiOASaG4MqW5 zR=6MelO4a;5RTzhU6*>8;bxaBY!{eWs?K(b2O>=6VVLR?tjswzUVya}nE!)^?=~VH zXUpyH)bND=WZzIaFwAtx=7k3V!`Sg^wUt_yZnHtVp311t-K^P8#iUP+KA>rJgbmoG zQkFkzaz~wQ1e(fp1sfD=sdRc%p(tZT8M^YMgR?Oey!r@#&6c!YUc)dQ;IqLgdjc`c zVIB+?jmPO`>i&TqJy@Wp7C44+i|qa|h()Mlo>9ZL3)#=~r=UVMJJtdl`w>0)GrcXu zp5g=zw0shJ5+}*i7kVh%AB6`fd@6}odRjOeg_BWukitWh5liB=7TyRm&Xe;(3vWHe z+cbeequ~}VM%5!xwVL~#f6T3tPaRFZ6eYKrq+&;z(2CmYAlBp2V1i)YYrzZ|D3X&Q z$@e3Ylz%14ze*X`T9^ts-pIFbGom{kW*u(&L!6@xzDU}P;8l#0HI7MKCJ`pFiVskt zU!%lz9FU4%kqF<&q$Kr@DZNl9{xZUe`153M4k=dJ{!RUW@4Moz&R9?&9=pi zVF}A5p+)mf&|7suPw#i?d87^GVI}#)Hi+TFP8GE48Ti;4_!$}4Y%=pQOYA0dGS(8qurRPr)@92IW>92c0vZ4Uj6et!29j(*o<5k*z`&}t poq=&9P=JYn9Z0ePg&7!R890C>517r$z{$V`l3xBIkW}O~ z^kOH0T^08=4B#Ub1r6u0r{ZG`7i5qJ8ZKfzflpLC)Nom<_BH5Omq9;O(pTG{qoI(1 znLtrRNlELWM#HcKEGy|kdu@N)aveN@ii)a|KHt`j%hfdv(=x23;y}eC2FQ8Mehren!@OBwfSmdh}g6;9Rg-HPS7 zo>6g1hR4mu)Y!D)h@$X}l4vwcyX+dK?+IHpgzp-8ZZDekx;x9D%t;=%B_DT%M7PGv z0iQh@xlMAnWqaIl{6kM#w4Csr5?`?-uiiG$=z;mf>_G+uG}$4avSU5ro?}|JkqZN@ z**XF0lA6S#p#hs=>*WD65<4fst2Hk#mhBRqtdp@^&$LTif(wSE(~*{hE%|t^1I%n_l9(_x|n*Litg z_#U06mtD?C(8mnJyzCoK4=p3C50dIu@t|E5#(mTBmcj~=4i3XYhta4i%tw5`%1y^u z3*}Xk_jhO~D;;7SD}im{nI2!T%R%b$A{*o)N|D3s+;q7v!!ay&h<_5tO`r0-^glr| z;;G#OS5|10InQ*e+|!GKt_Sgq=(~rOt-CcL=q54DbQrniVC2X<*LL3R(D~Te21k10 zZP;}3RwK9*bSS;;8Vq7HOm`Tq!Z}^Afayvg{)b(9;xO7}f2Gxn^c!P(ks3nhcrWO4 z3?rvsgVq&Tb%ZZ3Vk#^9nNc_GszK*QJz`e&=U%g1&hf`Sw`Jod&{Vb~*uYsyWiopb zMG9*{yH72KpN#x;6Zn?t&{jD?t8z8zF-U)H1bydIg8k$IrduQc&SXgOEtYvOz;Unn&3W++}H@vX@BQsjG?^lyiHoy5WC zc&EkZ3h{|Yd|DLVCCw3qp$LZPrlQF((WPBp3$d=#Y?S!NlNf8_X2jwBX#F^?m}p`u zG))tYThXeSaMjUi7a@P}S12i0@fwCm8parv|@~V>M7X@+5s&197ajYvAPKd3el`+H6ofaU%JzRabg}Bg0z2>&`!b4V)+d diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.class index be03627ca30cefb22745bd504683ec7b79909d5f..751845882e20d230de3246aea03ddd41af048eb4 100644 GIT binary patch delta 796 zcmYk3NmCP16otR;3~iccOo%385F&$Uf{215iW)>Afb)dPpaxK)ND%i@uH9&5W%&;* zHYA#|T)4LU7yc2;dz(n;#d){yaL#%6Rif{s>%ag0_zCp0=F&`mh*O+)7zk!NBrBiG z83q;3Dx6aoQaG=0LE)l8HbjzPjV@_4qCA&ft}v>(v0da`#+lIcq{CI0Yh2f|x#3Ft zO@~_!w>LkGS`BSv9PSwIaRq~Tn4;bAfQN=h3eyTR3bV`^9&7c9LW)C%r{oQ- zv>4`Da9A`vMo7<$QA z2kHxOy`ASpd42~$pk~bC Jq>R|~{R8h#S!w_P delta 858 zcmYk3%Tg0z5QV=$WcBa~X?e#cOhkJZ}s-^M$44 zio2LCxW(jRAzl7$)W(MMIk%X~6BnxO$UKFnqLm0HtE_h5{<1!hP7&7wZ zWIv7|GzzEg9Or~YojIal$V?XrQxlgzhQ^GJ@}E#wNiQg=L7%^1a*~8EKk3^GJ?2q2yr({T z!2Cwz)CLEw3Qgu(a824lI?6w+*dDtvpRL>L8ciZCxA$oWeb%t}tZ+!U#c0j0(e1NM vi_sZ5+w2~b|IcP}W{0guShdG0r?*0Em&NuDJuk}XJq%U8F@ql23DElwIi7FP diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.class index 6ad08c7e674215f04fb3ce72a143ae8e4c2afb1e..971cd6b178648cb460572b133f5d952e43984a69 100644 GIT binary patch delta 788 zcmYk4NmCP16otRn>2#aUBaxU=5u}YGv>lv)h_fhy^N0gM#R-Qhm;3;>?t8_OeKrJX zORLnqf5Nppe*xuvohC_l)w$=@yYHOyhCjt`#g*S%-+uxVeDv7Iu^h)a;c=2N1LFoJ z4AcyqGBBB=kJE;oG3=~aanAYmPekPNIL`$$dC|Zn15+-SP16;ZX^*SSn4Vcr)?Rb5 zue;n>|6EZEgZM5tHMh9!az}HQdz$+O9vFDYoaPaaHBWe|+0TGx-mred>MXcC(>&*e zW|2Vi(!eWTE2_~zW-uDIiq0F}Dn^oF-OBG;(!Arn<^#Sa#8=EFbFKZSx`x_a!)=?z#1?|Ei50VBlU$2=o8+75GCkoJ@}C59nV4cHNlDz0+wd5p zOpOsHyAlQ4UNbTgqKNE%mC=HFT4*8?)PPWE#?*p%Q7g zdneUY{YbKBt6Y{Wa^9)URB9vYI%bauOLC`^yda9mBXHym^f1?zy0D#^YFn*+5w$R8 XZ%3td6Z7I+?^4L73W`zjusHf3pwU*= delta 856 zcmYk4$x{-+TRa_jdeOy!7MW*KfceMVAAdh|ovB%Si?l z1{LxOrxb=1PAi;=km9VebIQ(Z*@f`;-{K^n%P=FlII3__;gZ8;6^%JuaT({TYOc9N zQe1bq;c#>PLx(kch_u5k!)@+3+%-%vX_!*Dr*NMKhKD>dOp`Xu@YvAKLBkVeZOWeV z%;C9VmKTNsJ%*PGbIe<0%l&qHxy_CT7FaCj?B14Fh9#B_uhlL~+G1Qan;-3>m59Gt zUR<4c_jYb!Wo4|eTG;#(cyG<8hW zL2d)P%C3wzM7D5iZ1)ysgJ_ai<};=!;0CHB{GIM85fYm|vFRrvH<%*NafWup<{Gix z^wj%akp{Kzte4lcM$9A4YlMOokG3>fy`MC^)v2;KSP4`_9>DK*m}W*umj8z1CI5`F z^{|YngV@QWpj=ozcC;QVY0)bCBuKgm``yGO0VbuHDWdY0eBW53iQa}=Bb5Pb^==z*drQdn7-_!ZYg6G{9I5gTHop|CLvx40ysd)hJ_^?Ni1hj%wUBfeXKkco-!miHtP&l#djn_ zzNS2R9k~suZ$+a=okGoTie6o4W$>tJg&h?zoYj2Y=26g6ItY17H+d+9d$?ET+Hd$F zZ~Cq)JSX7F3&n%HZ%d*16@?3@8wKGJgKd^jqNkoo%2q*@aL|#?V68if(xW;{e5rNR z56z2x<43wFtIDjGpN`w@ibs({3h5m3NHd)LYdeN@=|udgulUd(RXx?{j$QG}&>hz3 ztQMUaB+ZOG#SEc+%FJ}P-oaj}NMMGdO&KT>rG#0ka>Gy5&l0i-j|XfMHUna0^8~EM zh;)w;aSrqJYLs^cmIk1!5GhMYiWonZF1(!nREHRb7uDEpKsp*Oku%995-U<$4vtRCc?NC z!ytyDi@)CM-?52djA$_${ZVBaGtq?G2F4B84AFU+m+ApScxZTsA+qeG1w(v8=EV~~ zmlW=Ep3IV^Wy4AF><)LO-j|ILwI@A>#SO>J*uJ+bT~FD&Zpv1I=Vm5mZP!UU%1$}C z9M7jcTjmu%5HB-=yY?E1rS!hee@qJ$87A~RLz=VZ6 zm}D5KO~qF-Yp?N~DDbp}1f~p3TeyoE1G5(H;l71AbX%B5vxOcsGc43jctLL%21MGo z4-3*Rb(gfPOz!{dsl8n4EyMNNb)K#hb*CU)t{k^afMM){$yL*(F&P=5mX7quBSY)M zG?4z}Nrko)^_l)GqbkFuFlGrzkcZ;;b>R z=quhJy)9APK9nl8M@COM1@zIAh|{YAqG0+$kZhq{f>uUr-N;w4FQkNUnWRZ8(1r*) z&`O$Baw1DR?X>k@f>GM*1XaPh0?<_z$SQ$XDuHh(O_=-=CkRDO5qUh=^!6j-C#Y*h z^c3}<&^6ff?gQG$a*Eh7tl-F`BaJg0;Ov1xdN1lRN(9Hz37b9_6ZA=#q<nC} zlp$!(tK`QBASgQY8=c_}!g3AWWYj$wqg68qg+FT<6e@9=t>P4_aH3aGj+`z>8UbeO nd_Nbc`46j77?l*gl@wKxl83foF1Sh&o;4gN|%*!m!NKIj6VAjx#nk>ht z&c?#P%E;h6Ie}4b@*YOtdIm)XCZHw|U}9io0LlVMHXu(QNHYRyR;}#}j2pqy>_CzY zEXdBl0c7()6fkfyZ~=KN4BTK5kY*jIW+vt}KpqnVLMIQBP9_FUKCo6s241i-J^%>< B6Kntg literal 1229 zcma))-%b-j6vn@yOV=(7MWofr9|c69Ad3RgL}E;e7?Yv~2p7hLY})|_+TCVnwy1BS zFTjmAdQlTE^xmiO35;jDOWPPzZIiR-%*^?nZ_b$?zrKD0u!eODgP62n<3J)G^(xX4 zo^nt5!4Y=@=UL=GCI4X4Kl2_kSXzp3tKuCMH2E7|4i$NWyUHz}ZoBokswLzWos`GC z(vtm(EceJCAU+R*u&(ruwd;pLnQsX#Kl5j~zy|e$TBMh^=5;|vf;Y6J!uPRC>7yWb!QD5n* zlB+#Y<9?`Ug!7wvk~6&(?C8l*W?eLV)tU&y`ak9Wh+e&kLI@8yVPIP z^t9v-Z|t54RX%1&)%*tE_LU#d4W#nx`Z-8_smhB`VT#`DVCyj_!SvL~4pY2=1bOtt z^IyR7=_dLsZ40XC#_1J|IobD3VQFI!CItn9|HdOVkJz1rbw3%Furd*)INg%)d%!4D@CC$zDT_ zbm+?#>8llGFDhC2Cam``jdK`@kF*ojh;-+=xY;gl5{co&W9qVgsWEvyCYv3(Q4cNZ pB`|>`CcAKEyA5M)#A=M_CrtyL9!7vEsy5vP=#K#mKxl83foF1SdN7@fW*g=4BRVq^2-3Fl%T=O_pR- zWn*DrWn^%itjHucxtr0uo3utfU-c64an06(u_cwRcku~<3_MFJCI}p z3$inC0NFec1q_@FTtFTR12F~e}Df0;4T(jc)09h09PDb#e|DV zT!VpmCYmy4+T17^bKS-b8#5OAmqkP9hZZt3vzr#OE3(Ed6jnupKaayIk2d^j zopy#+W#HF0{YaQN-OTD;p)9Pd%4mnhYFk7~v+XEgn)~6sh5Ia$RjFAZ!_aTk6cY{Y z@AIu4?nmrd;y)#S>vi*i1=k1>eqDT^bT)s-gIJR{xUT(Rf6Z^EIbESDbW`o}T3hrR zvb;h50I~BZiksS;xa%^G0$veD{P5q&=J)&q-@_pC9%fOtG3VhXZrPakz%cG%0c8)j z&G8)*UO?W$b=rDRP1FNW`;qNSUf$|i7?ZDRXMD!9||4pT5v*nz}KXf z5mlhHY?=WpQ&jCmtm!Qd(2F&zA2eg+$rdPDMut4VEq{YmF0|11g`z&3C7Y)+z(JO< z4x!IcyH0_l9pKwkLh&myEo6^SAZG-*7VJ-O z+M8z#XQnM`h?0U>9O4Kxl83foF1ScA{@fW*g=4BRVq^2-3Fl%T=O=e_N zWMg4qWn{3NEXX7`ak}*64U8J~42ld)Kz$&<#K6b^Q~)H|fINL5%?PAfwYD=bZUjrS z14%Zppa260kj(>8z`)7C1>~_XaDzoansuO>nV8oAc}xrlouWuOnHV_vz*-p@c)`l} E05y;kr~m)} literal 1175 zcmah|T~8B16g|@}UAkRqt%?e$AOdZv3{(>}7?TEqkTjZz;la0UcW9?+JI(H_qQA)( zd8mmG{s4cJ@$QFh6JvRqnLBguIp==Nuirm@0(gp=g)Ek{SiwCL_bsIHAd6M3S$K$b z3-fqnV#CBHL*}I%Nd1Z-T`He37zfG~4Ecr}h&MsMDZKYivqv|@hH5#zGslymom?8a zBYlSbhVt4x@Xw{^YkuyvxE4FW9~~POawfKHlu%}<%$6N!+2gOBz8E^LjS99+RBb%QjtOpK7kf5tBggP! zHq4Cd88(C)@J~a@la}|jnYY(ioZUa^j+9o3QM}mP`iT951RgGUyHuaPvc1-*4^18|He>{qalgrC)9da zKEoQ#be2XR$bcM>qtzzs3GIybxypC2Z*)lE8m$)XKoJHOu|Ov~c0wKnvJ6}w12pLG zr0K43iPZcE#_=WQwnoTIuoj~CB@(bq@hcJDVuW8v@aE~Qh#SOV;N}>4n@~e(Q?f$s zpf5U+L~TtZ-6E-RPF31Nzm)McT%&~I$jzz9)HsrcG>QB#WpyfWLV0H#I4R=@<|OsF TjC+(;Z309~(K!Wv! diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class b/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class index b5c75ed436e64f6e0593ad9606b7e5aa673c3fd9..f1e6ec32ad8bfafa48b738ff96481cacdb191631 100644 GIT binary patch delta 207 zcmZ3^b%Kxl83foF1Sk5n^B22i=4BRVq^2-3Fl%T=P3C7* zVq;-oWn{3LoX8|Mc`Kt!J%b_x6HpTfFflMP0A+zB8<3|Dq#1!UtJZb~#*JWUb|A?H z78GIN0J3=?3K%#UxPUws25ztjNV5)9GZXU~AdiUwp;Hn`CldoFA6P3R120$^9{|OY B6CeNp literal 1319 zcma)5TTc@~6#k|xUAionBH|4%P>}+aMJ{ryNaPYpiZRsiU}DI&9bibi)9mcxG0J zDRBRlTPV}XKu#9j^1kZ}y>A>E!Ld*b*_`x`oKPJKUj@#gUvvWQRu*TL9A6e>;1p%0 z;(8_JsADMu?mN4#7rN!V-mNlNT7huO;sf!R{2ecb0eO~C+Z0j9yi`;7nk@Io?-m|` z_+d5B5i2i4zsR?RR@r|JdHTdXb#3$`X~MBFgGUVG?S*bgPX(?QC=;_b<}hz#0gr7g zYO{o86Du}Wk+tyzYc`%DY2y}>3@hz%+ZBLejF&>^ZB;n+`jJ-_g_A#3b2jSLV@S0p z+0(VA0yc`wF#DgjsIZ{ktAJOOQ)>nHsTnivN&d}YNKkXBoqI2LX@1h1dW^a%@{~W9 zlKNw$cl3#^c#y9OFJI-lYet!us2|gpmzdkyBzc)j%cK8kR1{6jK_Cx^PD^=KlXCQz z6dL>;im5;UcOXl1l^PJRRXN=^({$Xc`l*I-~6gXG!upKujJ zv@$(8T z=Q3l>OnM59%!Nj#zFY+RBKaEP^mtn2W)ot#3DGKfgr184n^fGba{!$U0EXK&rFVV< D0y7lc diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.class index aa0675843d6f0b12d9c5937a60cd83e795928648..a554ca012d3cf186983b260f3952a5c75859d9f3 100644 GIT binary patch delta 206 zcmeC>ILa(~>ff$?3=9k=3_@HC%nbbO30{#^D>JwQd1Zim^Cz`CcaZ< zV_{%rWU!umkWp@OC8KLSgCYYHP!9+&F)%U!Wq~9ckf#r%8G$sb)^-NQjbLeZAjt+6 z6ky;0vUwm17&sZYfIJokZmFNG$jOJ_>Os4vr;6*xY+(e9yV(9?#ET-+usjgl!KMT%E%;Tz9eJVHImOtb1^A z!^KS(8w|5gWh~8ehMC6pF@w`opE36{79XPL#4t)dD`1&@T>$G z^yNnyXxMNG9>e~0?9??G>LN_}yMg4HO;q(|=j@L; zyqTHAusMCoYilXlH1?9=!GGM>X-9w1MnsyoGylo*z3D^##xPW(@n54?(s*efi?4-g z4`kdP2oYj~o>he&9xw}LO{X|dr-zgoVIqa) zz#7TScDYB{_LZE^HjWm_ko5wxlq2ccjFJBwxl;g6MqbW=6Z?jkoh+Q$cb|;fEfAE) LlNqjz^ez7eO;^vb diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class index 65baa893ddd5d03fe5d7d73003140c704bd867df..504f4243eba9e158664cce31cd9fd61e060c1dc1 100644 GIT binary patch delta 206 zcmeC?IK(V^>ff$?3=9k=3_@HC%nbbO3JwQd1Zim^Cz`Ccaf- zV_{%rWU!k2o>6XcIipKGgCYYHP!9+&F)%U!Wq~9ckf#r%8G$sb)^-NQjbLeZAjt+6 z6ky;0vUwm17&sZYfIJokZmfgc5Ph3Eaq60WBtU_-Kq;YVfo=szAgH)RR3HTo1ognpiMM2{*c*A*E$}P& zAza`PBo6!leiULh4vr;6xXjM3=e>FJJU@SZ{{i3uc05#ZX&#qx#l@P3b!^yh)q{&` zF0Q-SWT+g-SemB{bIqM22B)P$!LZbpv3Qk6U6H&Ax&wNtwN)<|90iHA_sOGU`cg9- zv{mwsr}|hX+VJC~$BhW0hx?CsqPoiPo{FL%4mH<(rHn}UOLZ!qD;2iY*%JoODv-fI zexyFGcrSXXq0E!|kiO`?2*>K)QWP=e3o<5>Bpn+2#p|dv>4`&WRW28p_fCS-z{fm1 z7dL!t;U>fOY@sa`YZJsqyJ+~hg>4^A8_vUHcsv_BYeJQq8Nb^o+J{i70yUE`ehH5nVWwavA7j{#8Elg)9 zo=Iki_HC{H>w JTpa6L{S8>l&aeOg diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class b/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class index e3935e32972fffe46ea87ea9cc41b4993148f364..7c123a63d0372729528fac34b21cc89b38ff374d 100644 GIT binary patch delta 219 zcmcb^d5Br*)W2Q(7#J8#7=*YOm>Kxl83foF1Q{9FY%=pQOY9gKm^CJ*R`D0R0lCE) zsVN`<&8W%pj7n@Q46KX{RudOkO}@#fQO}^rzyve^1eh2Y8Gw>Nk`2hy2hxl{npJB% z1LH=pG&_)F0}Bc>Z~)mn5CsgJ3|v4S3j;S;1f*F9s+oy-4UosgfY2#{q?3t(lMk$w Kk%1Sij1K@hoEA9% literal 1244 zcmaiz-A)rh6vzJqOP4My&=$oCejs8?K^8#-ffx)Q(WHJ+!i9I+c90?6ow~D&=u`Lz zK7coRQ4=qG03XVDX8RdUYMRcRnKS2i{&VK+uirm@0(gKe3!|7x;x=Y2T*4ha%$c~G z*!gVG0l-2Ic|FW)S3z3~+FCSm&%_dg>A4q2!s85Vk0G%wd=WloF!Foz$29HAD!Imr z!sjm{ugrrZw_Ky0bWv8^+OZo5y>4w9;i*sz+eI0?bs}{l0u?$ZLB$EV>#Z+uIDst7 z(5XnzbN#Av)Txvq51dk6_@$=3#b9X(!mWvqlxHxnWtjYeSE7*CmQV-eSEsxhJKxaA zeX>V{PpBZOhuUM6WE52RfzVpVd-zLd?zw9tg{%q3#xm~PSi!1IwM;YQ`U~Hcz6xDG zR3_GJJVe^YIyP)P!nBP|WNlnWmSM9$rQh`#=6E%7-q(fGtR7i4Q9f(e%-L<$j$yWc zl0#i-DqO3?3@iV66cv@#2NiNpIo+oi4*0uB1e_jqF<zJXY9;Jq77{D0D$x4u& zLYl@5tzKi0en6`59jx#T0}Tuoat#$M*G^U}ynMoS2Vg%O+GKI^ubA|jANb@Ak z+R_OqF`dh{@C&rh^uLSK`GG==u$#^n!XS7%aGzA^a~YB}fkXqtWTe=q29jOWXe@mV zN!@hV=s{*W$SF({NMF^VStExE4Om~uXkM?WXS*kOs1rKxl83foF1Sgty^B22i=4BRVq^2-3Fl%T=P5hVFnH$n+KwRfs=s?$YWvP28)0+>p(R#F|Psgm>3W`C6IJ7F>vyMwK6jBf|cYx15PeRTEOi$OC49F)DWPeCaQG6HKoz2>r-%bVJ#ce2E^$fL(b~(`Z{h-n zAaQ^@zlL9c7$@mA3R1d9 zS6hZ>O_RPAncdf^bz(n_g;TQsxUnTt(>6}Trr(!I#|qmu#;H`a20Cetzj2ONls}hPAbwWUCHgG<}TP90mwW~eT@(lXj1NmM? zSVR=!R)h*}Gi=N!ykipUWa4ayjR;k2MyMf*Z~+m+_Wa)CewLx4I+^$|&|<6?MLpd< zI8;gOjMZXTpFil8*OtVZh{|yPm}jtA+kUc6^{tqQPr^6m5Ba}`w5P|+WUn<)Ui+Z> zVzfBcnE}>lwfJb=N}xhSWKYrg0eMFLMD07+R|*O^O_q}fsT$xCmMHS&RD?4)OFqDI z4zPvdD968{P)0CBX%=OLMz2nx@Eqk_j#4L7KVgc3=LzC{G@j*+Wt^w1=YNO1uPYS4 zcsn9L?yO987V=J7lu75KNoPpJhX`j`*HA)z3L?xQF6IzN;tg?f7N9{g-J1e96pxXl Hp6TU(JV?_r diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/StopShooter.class b/build/org/usfirst/frc/team708/robot/commands/shooter/StopShooter.class index e989fafab6492cd27fa212e560cf9848778d2619..4ef3190d88e68b9583539c23ff5b81851878c87c 100644 GIT binary patch delta 199 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 S20tU698(ZkD4XRXSU&};^U`tv literal 7252 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 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Feeder.class b/build/org/usfirst/frc/team708/robot/subsystems/Feeder.class index d76e06d46d829ef5c1b9b112bd86d063387ec795..c03996fa88c2b4e867a0266c43152cbf2f8168e1 100644 GIT binary patch delta 119 zcmeBTKf*r2+Q7gkIX_oFxuhsnzaS$&H7~P5KR3T5zbH9BucRnHM?X0+Pd_}sGd?6S fCqFMZC}N|ZFr$$kX?hqL)F!WEl-oRo@f#xmEz>Ix delta 54 ucmX@Y-o-w_T3Fa8IX_oFxuhsn-`UYGBrzvHZ)3JFqmUqm@aDCQ;!FVM6A_&N diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.class b/build/org/usfirst/frc/team708/robot/subsystems/Intake_Ball.class index bfb80d31e5ad3173db686512763d3debdb0ea7df..2986cd3221544127dd5ca8e7dc246368533d22e7 100644 GIT binary patch delta 165 zcmbQmeuaI4t$~40a(=FUa!FCDenCclYF=iAer|qAeo=CMUP)1Yj(&1to_=_MXM9Lv zPJUi+P{hUn8Ag3Q()3KOWBkY|#=ycL&LGGjF}Z@tf>C<%MkWVVc?J#!g~{KTyjYci XES1Tw%odDVKp9bXDFy}xCI)E$piwdm delta 99 zcmcb@K8t;Vt+239a(=FUa!FCDzO$oWNMcTY-o{)RMj=5A;mJD~KXQsPurP=*2r`II n-o#|VC^h*tlLM<90|$frWCLa|RwW=yd2&6o1*7KV9n3NS+{_x( diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.class b/build/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.class index b5c8e807f808409372e204e21eed62f92630a046..5335219023ec6c3c9d2990efaaef46b6b5c1146f 100644 GIT binary patch delta 204 zcmdnY^_FWwjDdkqa(=FUa!FCDenCclYF=iAer|qAeo=CMUP)1Yj(&1to_=_MXM9Lv zPJUi+P{hXk0!Dp3()4Wp$heM?SBim!L7G93L54w=L1FS5W(!8;$xoRbSk)Og7&Inp zvG{Z9FmN&GG4L=LO>ScGWHkedTTH&d;-u&R6nA2fWMBZwF#<_$1}UIP3_!LTkYr*| F2LK0*HJShb delta 122 zcmaFMwV7)|jIgjza(=FUa!FCDzO$oWNMcTY-o~B+Mj=5A;mz7i>lk^Z8CV!(7z7z) zflzVsGiD1$mC5of4y+ms91NP1Q&{{tbs4xA^ci>)^Brwi-pn2*!aEhk_HqLQz2-NeKl5ZEmSS9QgPF5hPzC zJ_-tcfd8bpZ;;lhlgmDjz0NuJK6jV)Kfm8T0BmB>L%QB$g}V@}7s zfZ6jeWZ00Q>?m&O5Y|f;~X;1*u17HRSo`=>aP2tYVz_F-FQy7YfWMdT~fxi(}wgj0owt zd+Co;44o4wv8s02<{UN2aGsG`c}02zP(Kc=@)ReAl;ha=h0uaYl!+0TVxNZTAG=UQ AasU7T literal 1678 zcmai!;Zqw$7{;GXjvNU`AOUHswT0T!5R|K>NLy%yCI!)e*f4eEi?d0VaBXs%x!r{E zoBxH*IDYnvUvxBe>Wt%O|0u_IFGq-gIGNdd_ww#w3UMqXk%eobJ7#!4iMv=d(LFOPnc)L7EGPb4|C%7cFz%=D01s`f*jQyqwY-kh z+fvJbVWL!(O}DB8;TG0+_IN}3D-4NM&-e6WhInr7IfGS@HNh}e@_ez=ZdOFF$14qb zlP$?AZ#?ILXXepMOCNfQVW}j8y4zLS;-NDEBgenfzP7A+E?Fwv^9BgBUVe#S(&us)%Dr#-_sO7o622#}UDlc3r$h5>Q zAGeR}k=rs2NeI8^im_hsB;YTpXT~{JZr@}~pE-@28`Q%J^{FU2UX?P_r(ZZ*zAu78 zgDWM-RU@CZdF^ShLWUb>-Fu2ihRP_RPg8H@{(q%We7P$91Fs%!Xs&_U6#@B(Tt-;Z zQx|$yDo=aT51mJDTs;5eRFem~cI-5_Y^DRoOSam&cexm*awTIox553oTh@W+*H?;j z`!Wgd5c#W{Yn*@6c8C)gwbxhMQj~nz+dWZf2oZd#1ag}BaZ}&ya zhjV&&0!)O-vjYoRf8jNP_tdY`XDd#NlSb3+E}RoUij;x&AI5wLnF{C02trFp-3(#K z5~Qz(+l&q)Yj9nRroZ_Pw)F$7_>aVjhn4n(Eer_DM$DU(Glbaqnt|TxL$@O6WCWc= z`rGgS1G_kYo%}a88)9esXSPgwOyk1R)8~}_fJ%Qjz&kFT?r9&g8bQ+8@krfo$b5eK f5FcR_YXhWoq%4LU35a111$w4P&Rya?S-bKNCkI`d diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class b/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class index 82e4670557b456ea01a401b7cd204e77fed04e2e..f3ce078f2469bc5d371b0be065bab8f7a8b4761f 100644 GIT binary patch delta 387 zcmX>qcAqum)W2Q(7#J8#7-ZNPB)Aw@7$n&lq}Umx85!7%GxGCGQi~WF41ALFbM=!; zic<9pGV)XNGAs0R^GouJlJoOQit=;xlN0mw!vj3yLlSfH^MZpSCVsxC!e5-4mlBfi zl31LPl%H6X!pI<$nU`7OlA4xSnp5JOpPQSQH@TL{lZ}^w4`{>WiHru5Sy{B|859|q zfv#X+U}azeVm2U)iGdwTb1-m%`CJU#V44R^GczzU08Igs{6JBCAk7G*S+%w^Fl_`Y z69AHIU_nU+K_Ht4qJTk&K^VwmWDtRC*3JV900q%?RwL;I`UR|$g+Uad6PLzDEE*XZ K#DL0~7{mcFRW@4y literal 2885 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 T-Z5?Q4F{BiSK(xZ5pjGAJ3Z6t diff --git a/build/org/usfirst/frc/team708/robot/subsystems/VisionLift.class b/build/org/usfirst/frc/team708/robot/subsystems/VisionLift.class index 768dbc08f0cfa072c766a7424a1e6c4566e81031..1f702b115b66f14467ece0e8c4e8d5e7e978a799 100644 GIT binary patch delta 3459 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 F{TI@d=Y0SG diff --git a/build/org/usfirst/frc/team708/robot/util/HatterDrive.class b/build/org/usfirst/frc/team708/robot/util/HatterDrive.class index 95195bf9adfa7eff1b228d4039e34b5fc3f70785..4763d89810d4d37eb9b5e07ab884cf8615fbad1d 100644 GIT binary patch delta 1185 zcmZ`&Nl#Nz6#iZxeTDY6KzA<;J@4Id~sL4dve+%%U%!CUhds;*yqK59I)Pe%Y}&kpk(Qh<&X!xGb2OB zG3T?{Kl9iFj5K;L_O$NID$5Xow76| zrmz(;1NF{~5s3~>j8117)1$+~nTgD$snNmlv}l}9=BeVM$;{O8!Qsr*weCxU=f^Wc zPE%gA4;u(CNThji$>o$>a=+erA@`s_fq_!3D}#q}Io5GqPt6UOj0LKbwRO&HUTn02 zhYC7@VHWb?hnMLB3@@d=44W8SNoz6}hAKjkuNoU^GqhAq$)zQMU{YIySnfjOJ#!Y( zw(NX#Ck*BMa39V3@7zbJt?c{|{B~eu>_SRWN(COH(iVy4h#kn8m6!u!R!KYX427vc z(pIvoIi@uU5}4Mt)$kN!5pgJNMj;a9qLzT_SVlcP8VIwA9@%DgVk=rXFCEy1Zfr*{ zPp7d1XOTjN&ANg%T*WS2M>}rP>lQlk2wixB-FS*L78$j~xe;at*b>&a%FHqWgfuhD zgb^Yru_g$_P5CX7St>35uZS*0dK4CjF+}1EF;Ao+YJ!*}UTH)l!%JcPCinsmnoQF$ z z+aOD8=Pv#~_X*}cxkl<1)*{2=BjJAG#31Xfg4;QlABjs7E$uL%6DTdaSFjoEOiKGc z$d6{lH&@IMtIcTth%U}rt;Lep#|T3no3?bpqw((x2y;H9D0ztOluX?!R`C-hQeOvCy3qLtXP}Bv literal 2402 zcmb_dS#KLv6#mA`II$<=ByHSD(=}acP5oCR4O4&HRmJC*KM{ zspiaI%a@jIyTY`5&#l#L@5nQ53-avl#8;4h#)D+^5j+Kn@{(;gZUz|%gA)@i2CuuT z228l216thWYbr6 zJ3yu;d#_ommWJ&(r(pmo4O?W` zia`Z?pRaQ?%wbG}fkAP1K86b#F5$MFfn9tJHuI`R z5EAAng@n9dCJCJTg-2fHp+L6{U6i+D2gjY%e1I^|0=siV+wMZiZANGf5l+!H#B$*^ zbmhW#5YKI2L*kpj!!XAkh;i(LN^d=ocSvW9e(E>jMXq+ynrr#R3)INBo4=PBRiu|G zg#t-1h66w-oS|swi`BBJQIc~z4UuS0 zF-~CC#4Kk_EobO=&}-^BLz7w7BK1ir!x-lH9x0NNgjo`mh0%~k5*ZdV$41&i>PFZu zuaLw%t^4pQUgHgV9i#kPo5X$;aR3*nc^8LZ^IEOoFmB)o-p5gVh-3JOJHNmfzTyr1 z7UQ^&3H-#94>1)K!fxG!X*!K^dm@+4 zvc!qI=zrAk@t`@1j4~ad9u9CNI;ayJ)QL7~g$2|T1) zyE@sb^1jlC!kQj$`>OJ~3w;CnNx1-o6XV2AkETy%zowzpZvDZl;L_m=-w%)PMf0(& e2Rb1J@K%s@h&#rEtfiDp>kn)a1}3-)Ve)S>`@q=% diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index a4eb451..45ff220 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -262,7 +262,7 @@ private void sendStatistics() { climber.sendToDashboard(); intake_ball.sendToDashboard(); intake_gear.sendToDashboard(); - pivot_gear.sendToDashboard(); + // pivot_gear.sendToDashboard(); // visionProcessor.sendToDashboard(); visionLift.sendToDashboard(); visionBoiler.sendToDashboard(); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/JustTenBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/JustTenBalls.java index 9c62683..6b5d1fb 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/JustTenBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/JustTenBalls.java @@ -28,6 +28,7 @@ public class JustTenBalls extends CommandGroup { + /* // Called just before this Command runs the first time protected void initialize() { } @@ -65,4 +66,5 @@ protected void end() { // subsystems is scheduled to run protected void interrupted() { } + */ } diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java index 25b6253..4eee7d8 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java @@ -31,6 +31,7 @@ public class OneGearCenter extends CommandGroup { + /* protected void initialize() { // Robot.drivetrain.resetEncoder(); // Robot.drivetrain.resetEncoder2(); @@ -98,4 +99,5 @@ protected void end() { // subsystems is scheduled to run protected void interrupted() { } + */ } diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java index b8cc40c..395bb0e 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java @@ -27,6 +27,8 @@ import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; public class SixtyBalls extends CommandGroup { + + /* // Called just before this Command runs the first time protected void initialize() { @@ -112,4 +114,5 @@ protected void end() { // subsystems is scheduled to run protected void interrupted() { } + */ } diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java index 910c5c2..5b6b417 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java @@ -27,6 +27,8 @@ import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; public class TenBalls extends CommandGroup { + + /* // Called just before this Command runs the first time protected void initialize() { @@ -96,4 +98,5 @@ protected void end() { // subsystems is scheduled to run protected void interrupted() { } + */ } diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java index e27606c..8bd58b7 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java @@ -56,7 +56,7 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.visionBoiler.boilerProcessData(); + // Robot.visionBoiler.boilerProcessData(); rotate = Robot.visionBoiler.boilerGetRotate(); // moveSpeed = Robot.visionBoiler.boilerGetMove(); diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java index 9dab2e9..f4ddf6b 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java @@ -45,7 +45,7 @@ protected void initialize() { // Called repeatedly when this Command is scheduled to run protected void execute() { - Robot.visionLift.liftProcessData(); + // Robot.visionLift.liftProcessData(); rotate = Robot.visionLift.liftGetRotate(); moveSpeed = Robot.visionLift.liftGetMove(); diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java index daee4b4..345b614 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.java @@ -27,8 +27,8 @@ protected void initialize() { } // Called repeatedly when this Command is scheduled to run - protected void execute() { - double gearAngle = OI.operatorGamepad.getAxis(Gamepad.leftStick_Y); //Gets Input from operator's controller + // protected void execute() { + // double gearAngle = OI.operatorGamepad.getAxis(Gamepad.leftStick_Y); //Gets Input from operator's controller // double gearAnglex = OI.operatorGamepad.getAxis(Gamepad.leftStick_X); //Gets Input from operator's controller // if ((gearAnglex>0)) @@ -40,15 +40,15 @@ protected void execute() { // Robot.intake_gear.moveMotor(Constants.GEAR_OUT); // } - if ((gearAngle >0) + // if ((gearAngle >0) // && (!Robot.pivot_gear.isFwdSwitch()) - ) - Robot.pivot_gear.moveMotor(.8); - else if ((gearAngle <0) - && (!Robot.pivot_gear.isRevSwitch()) - ) - Robot.pivot_gear.moveMotor(-.8); //Defines move speed from the operator's controller - } + // ) + // Robot.pivot_gear.moveMotor(.8); + // else if ((gearAngle <0) + // && (!Robot.pivot_gear.isRevSwitch()) + // ) + // Robot.pivot_gear.moveMotor(-.8); //Defines move speed from the operator's controller + // } // Make this return true when this Command no longer needs to run execute() @@ -58,7 +58,7 @@ protected boolean isFinished() { // Called once after isFinished returns true protected void end() { - Robot.pivot_gear.stop(); + // Robot.pivot_gear.stop(); // Robot.intake_gear.stop(); } diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java index 14ff3c3..ef2c3fa 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Down.java @@ -6,6 +6,13 @@ public class Intake_Gear_Down extends Command { + @Override + protected boolean isFinished() { + // TODO Auto-generated method stub + return false; + } + + /* public Intake_Gear_Down() { // requires(Robot.pivot_gear); this.setTimeout(1.0); @@ -32,6 +39,7 @@ protected void end() { protected void interrupted() { end(); } + */ } - + diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java index c49b8d0..27e062d 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java @@ -6,6 +6,12 @@ public class Intake_Gear_Up extends Command { + @Override + protected boolean isFinished() { + // TODO Auto-generated method stub + return false; + } +/* public Intake_Gear_Up() { // requires(Robot.pivot_gear); this.setTimeout(1.0); @@ -35,6 +41,6 @@ protected void end() { protected void interrupted() { end(); } - + */ } diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/HoodAdjust.java b/src/org/usfirst/frc/team708/robot/commands/shooter/HoodAdjust.java index fcb8969..a5b38fa 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/HoodAdjust.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/HoodAdjust.java @@ -14,6 +14,14 @@ import edu.wpi.first.wpilibj.command.WaitCommand; public class HoodAdjust extends Command { + + @Override + protected boolean isFinished() { + // TODO Auto-generated method stub + return false; + } + + /* public HoodAdjust() { // requires(Robot.shooter); @@ -48,4 +56,5 @@ protected void end() { protected void interrupted() { end(); } + */ } diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java b/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java index 2816512..34d5b2e 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java @@ -19,6 +19,13 @@ */ public class ManualShoot extends Command { + @Override + protected boolean isFinished() { + // TODO Auto-generated method stub + return false; + } + + /* public ManualShoot() { // requires(Robot.feeder); @@ -67,4 +74,5 @@ protected void end() { protected void interrupted() { end(); } + */ } diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java index 0bb9ca3..fb9815b 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodHigh.java @@ -15,6 +15,13 @@ public class MoveHoodHigh extends Command { + @Override + protected boolean isFinished() { + // TODO Auto-generated method stub + return false; + } + + /* public MoveHoodHigh() { // requires(Robot.shooter); @@ -44,4 +51,5 @@ protected void end() { protected void interrupted() { end(); } + */ } diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java index 60b5856..9b7e7ba 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.java @@ -15,6 +15,14 @@ public class MoveHoodLow extends Command { + @Override + protected boolean isFinished() { + // TODO Auto-generated method stub + return false; + } + + + /* public MoveHoodLow() { // requires(Robot.shooter); @@ -44,4 +52,5 @@ protected void end() { protected void interrupted() { end(); } + */ } diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java index 58ee0ed..b8f82ea 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.java @@ -18,6 +18,13 @@ */ public class SpinShooter extends Command { + @Override + protected boolean isFinished() { + // TODO Auto-generated method stub + return false; + } + + /* private double maxTime; public SpinShooter(double maxTime) { @@ -67,4 +74,5 @@ protected void end() { protected void interrupted() { end(); } + */ } diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.java b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.java index 6ed5325..b4cea91 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/SpinShooterBack.java @@ -18,6 +18,13 @@ */ public class SpinShooterBack extends Command { + @Override + protected boolean isFinished() { + // TODO Auto-generated method stub + return false; + } + + /* public SpinShooterBack() { // requires(Robot.shooter); @@ -47,4 +54,5 @@ protected void end() { protected void interrupted() { end(); } + */ } diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/StopShooter.java b/src/org/usfirst/frc/team708/robot/commands/shooter/StopShooter.java index e0ec00f..594d958 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/StopShooter.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/StopShooter.java @@ -18,7 +18,13 @@ */ public class StopShooter extends Command { + @Override + protected boolean isFinished() { + // TODO Auto-generated method stub + return false; + } +/* public StopShooter() { requires(Robot.shooter); } @@ -48,4 +54,5 @@ protected void end() { protected void interrupted() { end(); } + */ } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java index 4bb6922..716fa88 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java @@ -15,6 +15,7 @@ import edu.wpi.first.wpilibj.BuiltInAccelerometer; import com.ctre.CANTalon; import com.ctre.phoenix.motorcontrol.ControlMode; +import com.ctre.phoenix.motorcontrol.NeutralMode; //import com.ctre.CANTalon.FeedbackDevice; //import com.ctre.CanTalonJNI; import com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX; @@ -99,8 +100,8 @@ public Drivetrain() { distancePerPulse = (Constants.DRIVETRAIN_WHEEL_DIAMETER * Math.PI) / (Constants.DRIVETRAIN_ENCODER_PULSES_PER_REV); - leftMaster.configEncoderCodesPerRev(Constants.DRIVETRAIN_ENCODER_PULSES_PER_REV); - rightMaster.configEncoderCodesPerRev(Constants.DRIVETRAIN_ENCODER_PULSES_PER_REV); + leftMaster.set(ControlMode.PercentOutput,Constants.DRIVETRAIN_ENCODER_PULSES_PER_REV); + rightMaster.set(ControlMode.PercentOutput,Constants.DRIVETRAIN_ENCODER_PULSES_PER_REV); encoder.setDistancePerPulse(distancePerPulse); // Sets the distance per pulse of the encoder to read distance properly encoder.reset(); // Resets the encoder so that it starts with a 0.0 value @@ -108,10 +109,10 @@ public Drivetrain() { encoder2.setDistancePerPulse(distancePerPulse); encoder2.reset(); - leftMaster.enableBrakeMode(brake); - leftSlave.enableBrakeMode(brake); - rightMaster.enableBrakeMode(brake); - rightSlave.enableBrakeMode(brake); + leftMaster.setNeutralMode(NeutralMode.Brake); + leftSlave.setNeutralMode(NeutralMode.Brake); + rightMaster.setNeutralMode(NeutralMode.Brake); + rightSlave.setNeutralMode(NeutralMode.Brake); // drivetrainIRSensor = new IRSensor(RobotMap.gearIRSensor, IRSensor.GP2Y0A21YK0F); drivetrainUltrasonicSensor = new UltrasonicSensor(RobotMap.dtSonar, UltrasonicSensor.MB1010); @@ -292,8 +293,8 @@ public double moveByUltrasonic(double targetDistance, double minSpeed, double ma * talon is doing */ public void setupMasterSlave() { - leftSlave.changeControlMode(WPI_TalonSRX.set(ControlMode.Follower)); - rightSlave.changeControlMode(WPI_TalonSRX.set(ControlMode.Follower)); + leftSlave.follow(leftMaster); + rightSlave.follow(rightMaster); leftSlave.set(leftMaster.getDeviceID()); rightSlave.set(rightMaster.getDeviceID()); @@ -304,17 +305,17 @@ public void setupMasterSlave() { */ public void toggleBrakeMode() { brake = !brake; - leftMaster.enableBrakeMode(brake); - leftSlave.enableBrakeMode(brake); - rightMaster.enableBrakeMode(brake); - rightSlave.enableBrakeMode(brake); + leftMaster.setNeutralMode(NeutralMode.Brake); + leftSlave.setNeutralMode(NeutralMode.Brake); + rightMaster.setNeutralMode(NeutralMode.Brake); + rightSlave.setNeutralMode(NeutralMode.Brake); } public void setBrakeMode(Boolean brake) { - leftMaster.enableBrakeMode(brake); - leftSlave.enableBrakeMode(brake); - rightMaster.enableBrakeMode(brake); - rightSlave.enableBrakeMode(brake); + leftMaster.setNeutralMode(NeutralMode.Brake); + leftSlave.setNeutralMode(NeutralMode.Brake); + rightMaster.setNeutralMode(NeutralMode.Brake); + rightSlave.setNeutralMode(NeutralMode.Brake); } /** * Sets encoder direction depending on which side of the drivetrain it is on diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Feeder.java b/src/org/usfirst/frc/team708/robot/subsystems/Feeder.java index a764096..b17b01c 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Feeder.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Feeder.java @@ -9,8 +9,6 @@ import org.usfirst.frc.team708.robot.commands.visionProcessor.SonarOverride; import com.ctre.CANTalon; -import com.ctre.CANTalon.FeedbackDevice; -import com.ctre.CANTalon.TalonControlMode; import com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX; import edu.wpi.first.wpilibj.command.Subsystem; diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java index c1068db..5359321 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java @@ -5,8 +5,6 @@ import org.usfirst.frc.team708.robot.RobotMap; import com.ctre.CANTalon; -import com.ctre.CANTalon.FeedbackDevice; -import com.ctre.CANTalon.TalonControlMode; import com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX; import edu.wpi.first.wpilibj.DigitalInput; diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java index 3abe5ca..f8e53c8 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.java @@ -6,8 +6,6 @@ import org.usfirst.frc.team708.robot.util.Math708; import com.ctre.CANTalon; -import com.ctre.CANTalon.FeedbackDevice; -import com.ctre.CANTalon.TalonControlMode; import com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX; import edu.wpi.first.wpilibj.command.Subsystem; @@ -26,13 +24,13 @@ public class Pivot_Gear extends Subsystem { //I'm trying to link the right motor to the intake code here public Pivot_Gear() { pivotMotor = new WPI_TalonSRX (RobotMap.pivotGearMotor); - pivotMotor.enable(); + // pivotMotor.Enabled(); // pivotMotor.reverseSensor(true); - pivotMotor.enableBrakeMode(true); - pivotMotor.setFeedbackDevice(FeedbackDevice.QuadEncoder); +// pivotMotor.enableBrakeMode(true); +// pivotMotor.setFeedbackDevice(FeedbackDevice.QuadEncoder); // pivotMotor.changeControlMode(com.ctre.CANTalon.TalonControlMode.Position); - pivotMotor.configEncoderCodesPerRev(Constants.PIVOT_GEAR_ENCODER_COUNT); +// pivotMotor.configEncoderCodesPerRev(Constants.PIVOT_GEAR_ENCODER_COUNT); } public void initDefaultCommand() { @@ -42,12 +40,12 @@ public void initDefaultCommand() { public void moveMotor(double speed) { pivotMotor.set(speed); } - - public boolean isFwdSwitch() { - return (pivotMotor.getPosition()>= Constants.PIVOT_GEAR_ENCODER_HIGH); +} +// public boolean isFwdSwitch() { + // return (pivotMotor.getPosition()>= Constants.PIVOT_GEAR_ENCODER_HIGH); // return (false); - } - +// } +/* public boolean isRevSwitch() { return (pivotMotor.getPosition()<= Constants.PIVOT_GEAR_ENCODER_LOW); // return (false); @@ -64,4 +62,4 @@ public void sendToDashboard() { } } } - +*/ diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java index f7bc620..f5d575f 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Shooter.java @@ -9,8 +9,6 @@ import org.usfirst.frc.team708.robot.commands.visionProcessor.SonarOverride; import com.ctre.CANTalon; -import com.ctre.CANTalon.FeedbackDevice; -import com.ctre.CANTalon.TalonControlMode; import com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX; import edu.wpi.first.wpilibj.DigitalInput; @@ -18,7 +16,6 @@ import edu.wpi.first.wpilibj.ADXRS450_Gyro; import edu.wpi.first.wpilibj.Talon; -import edu.wpi.first.wpilibj.TalonSRX; import edu.wpi.first.wpilibj.Servo; import edu.wpi.first.wpilibj.command.PIDSubsystem; @@ -37,12 +34,12 @@ public class Shooter extends Subsystem { /** * Constructor */ - public Shooter() { +// public Shooter() { // Initializes the encoder // Initializes the motor - +/* shooter = new WPI_TalonSRX(RobotMap.shooterMotorMaster); shooterSlave = new WPI_TalonSRX(RobotMap.shooterMotorSlave); @@ -120,9 +117,15 @@ public void sendToDashboard() { if (Constants.DEBUG) { } // SmartDashboard.putNumber("Encoder Position", shooter.getEncPosition()); - SmartDashboard.putNumber("Encoder Speed", shooter.getSpeed()); +// SmartDashboard.putNumber("Encoder Speed", shooter.getSpeed()); // SmartDashboard.putNumber("Encoder Velocity", shooter.getEncVelocity()); } + + @Override + protected void initDefaultCommand() { + // TODO Auto-generated method stub + + } } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java index e00bb94..a721d3a 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java @@ -15,7 +15,6 @@ import edu.wpi.first.wpilibj.CameraServer; import edu.wpi.first.wpilibj.command.Subsystem; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; -import edu.wpi.first.wpilibj.tables.TableKeyNotDefinedException; import edu.wpi.first.wpilibj.vision.VisionThread; /** @@ -203,6 +202,8 @@ public VisionBoiler() { * ProcessData * Method to interpret the camera data received above */ + + /* public void boilerProcessData() { try { @@ -220,7 +221,7 @@ public void boilerProcessData() { e.printStackTrace(); } } - + */ /* * isCentered * Method to determine whether the robot sees the center of the target (within the threshold value) diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java index b0e4c30..ef8beeb 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java @@ -204,6 +204,7 @@ public VisionLift() { * liftProcessData * Method to interpret the camera data received above */ + /* public void liftProcessData() { try { @@ -222,7 +223,7 @@ public void liftProcessData() { e.printStackTrace(); } } - + */ /* * isCentered * Method to determine whether the robot sees the center of the target (within the threshold value) diff --git a/src/org/usfirst/frc/team708/robot/util/HatterDrive.java b/src/org/usfirst/frc/team708/robot/util/HatterDrive.java index 2ef6438..7332e71 100644 --- a/src/org/usfirst/frc/team708/robot/util/HatterDrive.java +++ b/src/org/usfirst/frc/team708/robot/util/HatterDrive.java @@ -1,9 +1,9 @@ package org.usfirst.frc.team708.robot.util; -import edu.wpi.first.wpilibj.RobotDrive; import edu.wpi.first.wpilibj.SpeedController; +import edu.wpi.first.wpilibj.drive.DifferentialDrive; -public class HatterDrive extends RobotDrive { +public class HatterDrive extends DifferentialDrive { private double turnSensitivity = 1.5; // How sensitive turning is for the // drivetrain @@ -13,12 +13,13 @@ public class HatterDrive extends RobotDrive { private final boolean USE_SAFETY = false; + /* public HatterDrive(int leftMotorChannel, int rightMotorChannel, boolean squaredInputs) { super(leftMotorChannel, rightMotorChannel); this.setSafetyEnabled(USE_SAFETY); this.squaredInputs = squaredInputs; } - +*/ public HatterDrive(SpeedController leftMotor, SpeedController rightMotor, boolean squaredInputs) { super(leftMotor, rightMotor); this.setSafetyEnabled(USE_SAFETY); @@ -66,7 +67,7 @@ public void cheesyDrive(double move, double rotate, boolean quickTurn) { lPower = correctDriveStall(lPower); rPower = correctDriveStall(rPower); - setLeftRightMotorOutputs(lPower, rPower); + // setLeftRightMotorOutputs(lPower, rPower); HATTERS DRIVE DOES NOT USE THIS James Makovics } /**
    2. (); SendableChooser allianceSelection = new SendableChooser<>(); @@ -125,15 +125,15 @@ public void robotInit() { // pwr1 = new Solenoid(RobotMap.PWR1); // pwr2 = new Solenoid(RobotMap.PWR2); // pwr3 = new Solenoid(RobotMap.PWR3); -// gearLight = new Solenoid(RobotMap.GEARLIGHT); -// boilerLight = new Solenoid(RobotMap.BOILERLIGHT); + gearLight = new Solenoid(RobotMap.GEARLIGHT); + boilerLight = new Solenoid(RobotMap.BOILERLIGHT); // // pwr0.set(true); // pwr1.set(true); // pwr2.set(true); // pwr3.set(true); -// gearLight.set(true); -// boilerLight.set(true); + gearLight.set(true); + boilerLight.set(true); sendDashboardSubsystems(); // Sends each subsystem's currently running command to the Smart Dashboard queueAutonomousModes(); // Adds autonomous modes to the selection box @@ -217,8 +217,8 @@ public void teleopInit() { if (autonomousCommand != null) autonomousCommand.cancel(); drivetrain.toggleBrakeMode(); - Robot.drivetrain.setGearLight(false); - Robot.drivetrain.setBoilerLight(false); +// Robot.drivetrain.setGearLight(false); +// Robot.drivetrain.setBoilerLight(false); } /** diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java index d1f95f2..46c615a 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearCenter.java @@ -14,6 +14,7 @@ import org.usfirst.frc.team708.robot.commands.feeder.SpinFeeder; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Off; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Out; +import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Up; //import org.usfirst.frc.team708.robot.commands.intake_gear.ReleaseGear; import org.usfirst.frc.team708.robot.commands.led_out.SetLED; //import org.usfirst.frc.team708.robot.commands.led_out.SetLED; @@ -40,7 +41,10 @@ public OneGearCenter() { // addSequential(new DriveStraightToEncoderDistance(24, .3, false)); // target lever -// addSequential(new WaitCommand(.75)); + addSequential(new WaitCommand(1.0)); + addSequential(new SetLED(Constants.SET_HAS_GEAR_TARGETING)); + addSequential(new Intake_Gear_Up()); + addSequential(new RotateAndDriveToLift()); // place gear on lever and back away @@ -51,10 +55,10 @@ public OneGearCenter() { addSequential(new DriveStraightToEncoderDistance(15, .4, true)); //put this back in!!!! // turn toward boiler - addSequential(new TurnToDegreesAlliance(.5, 50, Constants.COUNTERCLOCKWISE)); + addSequential(new TurnToDegreesAlliance(.5, 65, Constants.COUNTERCLOCKWISE)); // target Boiler - addSequential(new WaitCommand(.75)); + addSequential(new WaitCommand(1.0)); addSequential(new SetLED(Constants.SET_TARGETING)); addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); @@ -62,7 +66,8 @@ public OneGearCenter() { addParallel(new SpinShooter(8)); // addSequential(new AutoFireBalls()); - addSequential(new DriveStraightToEncoderDistance(48, .4, true)); + addSequential(new DriveStraightToEncoderDistanceOrTime(48, .4, true, 4)); + addSequential(new WaitCommand(1.0)); addSequential(new SpinFeeder(6)); //then shoot addSequential(new StopShooter()); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java index 5a216e1..8f1d16a 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/OneGearLeft.java @@ -9,6 +9,7 @@ import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightForTime; import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; +import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistanceOrTime; import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToBoiler; import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToLift; import org.usfirst.frc.team708.robot.commands.drivetrain.ToggleBrakeMode; @@ -17,6 +18,7 @@ import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Down; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Off; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Out; +import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Up; import edu.wpi.first.wpilibj.command.CommandGroup; import edu.wpi.first.wpilibj.command.WaitCommand; @@ -33,7 +35,9 @@ public OneGearLeft() { addSequential(new TurnToDegreesAlliance(.5, 45, Constants.CLOCKWISE)); // target lever - addSequential(new WaitCommand(.75)); //was 1.0 + addSequential(new SetLED(Constants.SET_HAS_GEAR_TARGETING)); + addSequential(new WaitCommand(1.0)); //was 1.0 + addSequential(new Intake_Gear_Up()); addSequential(new RotateAndDriveToLift()); // place gear on lever and back away @@ -59,8 +63,9 @@ public OneGearLeft() { addParallel(new SpinShooter(8)); // addSequential(new AutoFireBalls()); - addSequential(new DriveStraightToEncoderDistance(48, .4, true)); - addSequential(new SpinFeeder(6)); + addSequential(new DriveStraightToEncoderDistanceOrTime(48, .4, true, 4)); + addSequential(new WaitCommand(1.0)); + addSequential(new SpinFeeder(6)); addSequential(new StopShooter()); } diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java index 47b76bf..647c14f 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.java @@ -5,6 +5,7 @@ import org.usfirst.frc.team708.robot.Robot; import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightForTime; import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; +import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistanceOrTime; import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToBoiler; import org.usfirst.frc.team708.robot.commands.drivetrain.RotateAndDriveToLift; import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegreesAlliance; @@ -41,7 +42,7 @@ public SixtyBalls() { // addSequential(new DriveStraightForTime(.3, .5)); addSequential(new DriveStraightToEncoderDistance(25, .5, true)); - addSequential(new Intake_Ball_In(4)); + addSequential(new Intake_Ball_In(3)); // back off hopper and turn toward boiler // addSequential(new DriveStraightForTime(-.3, 2.0)); @@ -52,7 +53,7 @@ public SixtyBalls() { // addSequential(new DriveStraightToEncoderDistance(40, .4, true)); // target Boiler - addSequential(new WaitCommand(.75)); + addSequential(new WaitCommand(1.0)); addSequential(new SetLED(Constants.SET_TARGETING)); addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); @@ -60,8 +61,10 @@ public SixtyBalls() { addParallel(new SpinShooter(8)); // addSequential(new AutoFireBalls()); - addSequential(new DriveStraightToEncoderDistance(48, .4, true)); - addSequential(new SpinFeeder(6)); +// addSequential(new DriveStraightToEncoderDistance(43, .4, true)); + addSequential(new DriveStraightToEncoderDistanceOrTime(48, .4, true, 4)); + addSequential(new WaitCommand(1.0)); + addSequential(new SpinFeeder(6)); addSequential(new StopShooter()); // go to lever @@ -69,6 +72,7 @@ public SixtyBalls() { // target lever addSequential(new Intake_Gear_Up()); + addSequential(new SetLED(Constants.SET_HAS_GEAR_TARGETING)); addSequential(new WaitCommand(.75)); addSequential(new RotateAndDriveToLift()); diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java index 111bb58..89b8466 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.java @@ -15,6 +15,7 @@ import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Down; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Off; import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Out; +import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Up; //import org.usfirst.frc.team708.robot.commands.intake_gear.ReleaseGear; import org.usfirst.frc.team708.robot.commands.led_out.SetLED; import org.usfirst.frc.team708.robot.commands.shooter.StopShooter; @@ -36,7 +37,9 @@ public TenBalls() { addSequential(new TurnToDegreesAlliance(.5, 45, Constants.COUNTERCLOCKWISE)); // target lever - addSequential(new WaitCommand(.75)); //was 1.0 + addSequential(new SetLED(Constants.SET_HAS_GEAR_TARGETING)); + addSequential(new WaitCommand(1.0)); //was 1.0 + addSequential(new Intake_Gear_Up()); addSequential(new RotateAndDriveToLift()); // place gear on lever and back away @@ -44,10 +47,11 @@ public TenBalls() { addParallel(new Intake_Gear_Down()); // get off lever and go for some balls - addSequential(new DriveStraightToEncoderDistance(10, .4, true)); - + addSequential(new DriveStraightToEncoderDistance(25, .4, true)); + addSequential(new TurnToDegreesAlliance(.5, 22, Constants.CLOCKWISE)); + // target Boiler - addSequential(new WaitCommand(.75)); + addSequential(new WaitCommand(1.0)); addSequential(new SetLED(Constants.SET_TARGETING)); addSequential(new RotateAndDriveToBoiler(AutoConstants.DISTANCE_TO_BOILER_LOCATION2)); @@ -55,7 +59,8 @@ public TenBalls() { addParallel(new SpinShooter(8)); // addSequential(new AutoFireBalls()); - addSequential(new DriveStraightToEncoderDistance(48, .4, true)); + addSequential(new DriveStraightToEncoderDistanceOrTime(40, .5, true, 2)); + addSequential(new WaitCommand(1.0)); addSequential(new SpinFeeder(6)); addSequential(new StopShooter()); } diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java index 5254eba..ae98997 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java @@ -6,6 +6,7 @@ import org.usfirst.frc.team708.robot.commands.feeder.SpinFeeder; import org.usfirst.frc.team708.robot.commands.shooter.SpinShooter; import org.usfirst.frc.team708.robot.commands.shooter.StopShooter; +import org.usfirst.frc.team708.robot.commands.intake_gear.Intake_Gear_Up; import org.usfirst.frc.team708.robot.commands.autonomous.AutoFireBalls; import edu.wpi.first.wpilibj.command.CommandGroup; @@ -13,13 +14,6 @@ import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; public class driveDistance extends CommandGroup { - - - private static final double driveStraightSpeed = 0.4; - private static final double driveStraightTime = 2; - - private static final double turnSpeed = -0.4; - private static final double turnDegrees = 90; // Called just before this Command runs the first time protected void initialize() { @@ -32,10 +26,12 @@ protected void initialize() { public driveDistance() { addSequential(new WaitCommand(2.0)); -// addSequential(new DriveStraightToEncoderDistance(80, .4, false)); + + addSequential(new Intake_Gear_Up()); + addSequential(new DriveStraightToEncoderDistance(80, .4, false)); - addParallel(new SpinShooter(8)); - addSequential(new AutoFireBalls()); +// addSequential(new SpinShooter(8)); +// addSequential(new AutoFireBalls()); } diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistance.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistance.java index 96e458f..7ccd50c 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistance.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistance.java @@ -43,6 +43,7 @@ public DriveStraightToEncoderDistance(double distance, double speed, boolean goF // Enables the PIDController (if it was not already) before attempting to drive straight protected void initialize() { Robot.drivetrain.resetEncoder(); + Robot.drivetrain.resetEncoder2(); Robot.drivetrain.resetGyro(); // Robot.drivetrain.enable(); // Robot.drivetrain.disable(); //JNP disabled @@ -58,9 +59,9 @@ protected void execute() { // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { if(goForward) { - return (Robot.drivetrain.getEncoderDistance() >= targetDistance); + return ( Robot.drivetrain.getEncoderDistance2() >= targetDistance); } else { - return (Robot.drivetrain.getEncoderDistance() <= targetDistance); + return ( Robot.drivetrain.getEncoderDistance2() <= targetDistance); } } diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java index 3f91f47..db18d2b 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.java @@ -63,14 +63,13 @@ protected void execute() { // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { - if (Robot.visionBoiler.getBoilerCounter() >= AutoConstants.SWEEP3_MAX){ + if (Robot.visionBoiler.boilerIsAtHeight() && Robot.visionBoiler.boilerIsCentered()){ + Robot.led1.send_to_led(Constants.SET_TARGET_FOUND); return true; } - else if (Robot.visionBoiler.boilerIsAtHeight() && Robot.visionBoiler.boilerIsCentered()){ - Robot.led1.send_to_led(Constants.SET_TARGET_FOUND); - return true; + else if (Robot.visionBoiler.getBoilerCounter() >= AutoConstants.SWEEP3_MAX){ + return true; } - else { return false; } diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java index 2f779f9..9fd05a4 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToLift.java @@ -1,7 +1,10 @@ package org.usfirst.frc.team708.robot.commands.drivetrain; import org.usfirst.frc.team708.robot.AutoConstants; +import org.usfirst.frc.team708.robot.Constants; import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.commands.led_out.SetLED; + import edu.wpi.first.wpilibj.command.Command; @@ -54,7 +57,7 @@ protected void execute() { // Make this return true when this Command no longer needs to run execute() protected boolean isFinished() { if (Robot.visionLift.getLiftCounter() >= AutoConstants.SWEEP3_MAX){ - + Robot.led1.send_to_led(Constants.SET_TARGET_FOUND); return true; } //Check if the sonar distance is less then the target Distance, end diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java index 3e7e3f6..852a923 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_Up.java @@ -8,7 +8,7 @@ public class Intake_Gear_Up extends Command { public Intake_Gear_Up() { // requires(Robot.pivot_gear); - this.setTimeout(.5); + this.setTimeout(1.0); } protected void initialize() { @@ -16,7 +16,7 @@ protected void initialize() { protected void execute() { if (!Robot.pivot_gear.isFwdSwitch()) - Robot.pivot_gear.moveMotor(Constants.GEAR_UP); + Robot.pivot_gear.moveMotor(.8); else Robot.pivot_gear.stop(); } diff --git a/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java b/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java index 31ee9c5..2816512 100644 --- a/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java +++ b/src/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.java @@ -29,14 +29,14 @@ public ManualShoot() { // Called just before this Command runs the first time protected void initialize() { - if (Robot.drivetrain.getSonarDistance() > Constants.SHOOTER_CLOSE_SHOT) - { - Robot.shooter.moveHood(Constants.HOOD_LEVER); - Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_LEVER); - Robot.shooter.setSpinSpeed(Constants.SHOOTER_MOTOR_SPEED_LEVER); - Robot.led1.send_to_led(Constants.SET_TARGETING); - } - else +// if (Robot.drivetrain.getSonarDistance() > Constants.SHOOTER_CLOSE_SHOT) +// { +// Robot.shooter.moveHood(Constants.HOOD_LEVER); +// Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_LEVER); +// Robot.shooter.setSpinSpeed(Constants.SHOOTER_MOTOR_SPEED_LEVER); +// Robot.led1.send_to_led(Constants.SET_TARGETING); +// } +// else { Robot.shooter.manualRPM(Constants.SHOOTER_MOTOR_SPEED_BOILER); Robot.shooter.moveHood(Constants.HOOD_BOILER); diff --git a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java index 1e16139..72a5228 100644 --- a/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java +++ b/src/org/usfirst/frc/team708/robot/commands/visionProcessor/GripPipelineLift.java @@ -28,9 +28,9 @@ public class GripPipelineLift implements VisionPipeline { //Outputs - private Mat resizeImageOutput = new Mat(); private Mat rgbThresholdOutput = new Mat(); private ArrayList findContoursOutput = new ArrayList(); + private ArrayList filterContoursOutput = new ArrayList(); static { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); @@ -40,17 +40,10 @@ public class GripPipelineLift implements VisionPipeline { * This is the primary method that runs the entire pipeline and updates the outputs. */ @Override public void process(Mat source0) { - // Step Resize_Image0: - Mat resizeImageInput = source0; - double resizeImageWidth = 320.0; - double resizeImageHeight = 240.0; - int resizeImageInterpolation = Imgproc.INTER_CUBIC; - resizeImage(resizeImageInput, resizeImageWidth, resizeImageHeight, resizeImageInterpolation, resizeImageOutput); - // Step RGB_Threshold0: - Mat rgbThresholdInput = resizeImageOutput; + Mat rgbThresholdInput = source0; double[] rgbThresholdRed = {0.0, 0.0}; - double[] rgbThresholdGreen = {79.0, 255.0}; + double[] rgbThresholdGreen = {79.02135918383937, 255.0}; double[] rgbThresholdBlue = {0.0, 0.0}; rgbThreshold(rgbThresholdInput, rgbThresholdRed, rgbThresholdGreen, rgbThresholdBlue, rgbThresholdOutput); @@ -59,14 +52,21 @@ public class GripPipelineLift implements VisionPipeline { boolean findContoursExternalOnly = false; findContours(findContoursInput, findContoursExternalOnly, findContoursOutput); - } + // Step Filter_Contours0: + ArrayList filterContoursContours = findContoursOutput; + double filterContoursMinArea = 5.0; + double filterContoursMinPerimeter = 0.0; + double filterContoursMinWidth = 0.0; + double filterContoursMaxWidth = 1000.0; + double filterContoursMinHeight = 0.0; + double filterContoursMaxHeight = 1000.0; + double[] filterContoursSolidity = {0, 100}; + double filterContoursMaxVertices = 1000000.0; + double filterContoursMinVertices = 0.0; + double filterContoursMinRatio = 0.0; + double filterContoursMaxRatio = 1000.0; + filterContours(filterContoursContours, filterContoursMinArea, filterContoursMinPerimeter, filterContoursMinWidth, filterContoursMaxWidth, filterContoursMinHeight, filterContoursMaxHeight, filterContoursSolidity, filterContoursMaxVertices, filterContoursMinVertices, filterContoursMinRatio, filterContoursMaxRatio, filterContoursOutput); - /** - * This method is a generated getter for the output of a Resize_Image. - * @return Mat output from Resize_Image. - */ - public Mat resizeImageOutput() { - return resizeImageOutput; } /** @@ -85,20 +85,15 @@ public ArrayList findContoursOutput() { return findContoursOutput; } - /** - * Scales and image to an exact size. - * @param input The image on which to perform the Resize. - * @param width The width of the output in pixels. - * @param height The height of the output in pixels. - * @param interpolation The type of interpolation. - * @param output The image in which to store the output. + * This method is a generated getter for the output of a Filter_Contours. + * @return ArrayList output from Filter_Contours. */ - private void resizeImage(Mat input, double width, double height, - int interpolation, Mat output) { - Imgproc.resize(input, output, new Size(width, height), 0.0, 0.0, interpolation); + public ArrayList filterContoursOutput() { + return filterContoursOutput; } + /** * Segment an image based on color ranges. * @param input The image on which to perform the RGB threshold. @@ -137,6 +132,55 @@ private void findContours(Mat input, boolean externalOnly, } + /** + * Filters out contours that do not meet certain criteria. + * @param inputContours is the input list of contours + * @param output is the the output list of contours + * @param minArea is the minimum area of a contour that will be kept + * @param minPerimeter is the minimum perimeter of a contour that will be kept + * @param minWidth minimum width of a contour + * @param maxWidth maximum width + * @param minHeight minimum height + * @param maxHeight maximimum height + * @param Solidity the minimum and maximum solidity of a contour + * @param minVertexCount minimum vertex Count of the contours + * @param maxVertexCount maximum vertex Count + * @param minRatio minimum ratio of width to height + * @param maxRatio maximum ratio of width to height + */ + private void filterContours(List inputContours, double minArea, + double minPerimeter, double minWidth, double maxWidth, double minHeight, double + maxHeight, double[] solidity, double maxVertexCount, double minVertexCount, double + minRatio, double maxRatio, List output) { + final MatOfInt hull = new MatOfInt(); + output.clear(); + //operation + for (int i = 0; i < inputContours.size(); i++) { + final MatOfPoint contour = inputContours.get(i); + final Rect bb = Imgproc.boundingRect(contour); + if (bb.width < minWidth || bb.width > maxWidth) continue; + if (bb.height < minHeight || bb.height > maxHeight) continue; + final double area = Imgproc.contourArea(contour); + if (area < minArea) continue; + if (Imgproc.arcLength(new MatOfPoint2f(contour.toArray()), true) < minPerimeter) continue; + Imgproc.convexHull(contour, hull); + MatOfPoint mopHull = new MatOfPoint(); + mopHull.create((int) hull.size().height, 1, CvType.CV_32SC2); + for (int j = 0; j < hull.size().height; j++) { + int index = (int)hull.get(j, 0)[0]; + double[] point = new double[] { contour.get(index, 0)[0], contour.get(index, 0)[1]}; + mopHull.put(j, 0, point); + } + final double solid = 100 * area / Imgproc.contourArea(mopHull); + if (solid < solidity[0] || solid > solidity[1]) continue; + if (contour.rows() < minVertexCount || contour.rows() > maxVertexCount) continue; + final double ratio = bb.width / (double)bb.height; + if (ratio < minRatio || ratio > maxRatio) continue; + output.add(contour); + } + } + + } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java index a46fee0..cc43d3d 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java @@ -64,8 +64,8 @@ public class Drivetrain extends PIDSubsystem { public static Solenoid pwr1; public static Solenoid pwr2; public static Solenoid pwr3; - public static Solenoid gearLight; - public static Solenoid boilerLight; +// public static Solenoid gearLight; +// public static Solenoid boilerLight; public Drivetrain() { // Passes variables from this class into the superclass constructor @@ -119,16 +119,16 @@ public Drivetrain() { pwr1 = new Solenoid(RobotMap.PWR1); pwr2 = new Solenoid(RobotMap.PWR2); pwr3 = new Solenoid(RobotMap.PWR3); - gearLight = new Solenoid(RobotMap.GEARLIGHT); - boilerLight = new Solenoid(RobotMap.BOILERLIGHT); +// gearLight = new Solenoid(RobotMap.GEARLIGHT); +// boilerLight = new Solenoid(RobotMap.BOILERLIGHT); pwr0.set(true); pwr1.set(true); pwr2.set(true); pwr3.set(true); - setGearLight(true); - setBoilerLight(true); +// setGearLight(true); +// setBoilerLight(true); } @@ -188,13 +188,13 @@ public void haloDrive(double move, double rotate) { haloDrive(move, rotate, this.usePID); } - public void setGearLight(boolean on) { - gearLight.set(on); - } - - public void setBoilerLight(boolean on) { - boilerLight.set(on); - } +// public void setGearLight(boolean on) { +// gearLight.set(on); +// } +// +// public void setBoilerLight(boolean on) { +// boilerLight.set(on); +// } public boolean getUsePID() { return usePID; diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java index d9445cb..8f0836c 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionBoiler.java @@ -292,31 +292,32 @@ else if (boilerHasTarget && !boilerIsCentered){ // if in the sweep the robot does not find the target, it stops after 3 sweeps // otherwise it will jump back into the hasTarget logic identified above else if (!boilerHasTarget){ - if (Math.abs(boilerSweepDirection) < .1){ - boilerSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; - boilerRotate = AutoConstants.SWEEP_ROTATE; - } - else if (boilerSweepDirection > AutoConstants.SWEEP1_MIN){ - if ((boilerSweepCounter >= AutoConstants.SWEEP1_MIN && boilerSweepCounter <= AutoConstants.SWEEP1_MAX) - || (boilerSweepCounter >= AutoConstants.SWEEP3_MIN && boilerSweepCounter <= AutoConstants.SWEEP3_MAX)){ - - boilerRotate = AutoConstants.SWEEP_ROTATE; - if (boilerSweepCounter== AutoConstants.SWEEP1_MAX || boilerSweepCounter== AutoConstants.SWEEP3_MAX){ - boilerSweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; - } - } - } - else { - if (boilerSweepCounter >= AutoConstants.SWEEP2_MIN && boilerSweepCounter <= AutoConstants.SWEEP2_MAX) - boilerRotate = -AutoConstants.SWEEP_ROTATE; - if (boilerSweepCounter== AutoConstants.SWEEP2_MAX){ - boilerSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; - } - } +// if (Math.abs(boilerSweepDirection) < .1){ +// boilerSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; +// boilerRotate = AutoConstants.SWEEP_ROTATE; +// } +// else if (boilerSweepDirection > AutoConstants.SWEEP1_MIN){ +// if ((boilerSweepCounter >= AutoConstants.SWEEP1_MIN && boilerSweepCounter <= AutoConstants.SWEEP1_MAX) +// || (boilerSweepCounter >= AutoConstants.SWEEP3_MIN && boilerSweepCounter <= AutoConstants.SWEEP3_MAX)){ +// +// boilerRotate = AutoConstants.SWEEP_ROTATE; +// if (boilerSweepCounter== AutoConstants.SWEEP1_MAX || boilerSweepCounter== AutoConstants.SWEEP3_MAX){ +// boilerSweepDirection = AutoConstants.SWEEP_DIRECTION_LEFT; +// } +// } +// } +// else { +// if (boilerSweepCounter >= AutoConstants.SWEEP2_MIN && boilerSweepCounter <= AutoConstants.SWEEP2_MAX) +// boilerRotate = -AutoConstants.SWEEP_ROTATE; +// if (boilerSweepCounter== AutoConstants.SWEEP2_MAX){ +// boilerSweepDirection = AutoConstants.SWEEP_DIRECTION_RIGHT; +// } +// } boilerSweepCounter++; + boilerRotate = 0.0; //no sweep sit there till time out or find target rolling forward slowly } - boilerRotateDiff = difference; + boilerRotateDiff = difference; // what is this for???? return boilerRotate; } @@ -348,9 +349,9 @@ public double boilerGetMove() { boilerMove = Math708.getClippedPercentError(boilerCurrentDistance, boilerStopAtValue, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); // boilerMove = .3; //if the target distance is farther than the current distance move backwards - if(difference >= 0){ - boilerMove = boilerMove * -1; - } +// if(difference >= 0){ +// boilerMove = boilerMove * -1; +// } //Check if target is at correct distance within threshold if (Math.abs(difference) <= thresholdDistance) { @@ -360,8 +361,9 @@ public double boilerGetMove() { boilerIsAtDistance = false; } boilerMoveDiff = difference; - } else { - boilerMove = 0.0; + } else { // no target - where is it? +// boilerMove = 0.0; + boilerMove = 0.2; //move forward slowly } return boilerMove; @@ -460,23 +462,24 @@ public boolean boilerIsInSweep() { public void sendToDashboard() { if (Constants.BOILER_DEBUG) { - SmartDashboard.putNumber("b-True Center", trueCenter); - SmartDashboard.putBoolean("b-Has Target", boilerIsHasTarget()); - SmartDashboard.putBoolean("b-IsAtHeight", boilerIsAtHeight()); - SmartDashboard.putNumber("b-Center of Target", boilerCurrentCenter); - SmartDashboard.putNumber("b-Rotation", boilerRotate); - SmartDashboard.putNumber("b-Rotate Difference", boilerRotateDiff); - SmartDashboard.putNumber("b-Distance Move Difference", boilerMoveDiff); - SmartDashboard.putNumber("b-Sweep Counter", boilerSweepCounter); - SmartDashboard.putNumber("b-SweepDirection", boilerSweepDirection); - SmartDashboard.putBoolean("b-isCentered", boilerIsCentered()); - SmartDashboard.putNumber("b-rectX", brectX); - SmartDashboard.putNumber("b-maxY", bmaxY); - SmartDashboard.putNumber("b-rectY", brectY); - SmartDashboard.putNumber("b-rectWidth", brectWidth); - SmartDashboard.putNumber("b-rectHeight", brectHeight); - SmartDashboard.putNumber("b-pipelineSize", bPipelineSize); - SmartDashboard.putNumber("b-stop at distance", boilerStopAtDistance); +// SmartDashboard.putNumber("b-True Center", trueCenter); +// SmartDashboard.putBoolean("b-Has Target", boilerIsHasTarget()); +// SmartDashboard.putBoolean("b-IsAtHeight", boilerIsAtHeight()); +// SmartDashboard.putNumber("b-Center of Target", boilerCurrentCenter); +// SmartDashboard.putNumber("b-Rotation", boilerRotate); +// SmartDashboard.putNumber("b-Rotate Difference", boilerRotateDiff); +// SmartDashboard.putNumber("b-Distance Move Difference", boilerMoveDiff); +// SmartDashboard.putNumber("b-Sweep Counter", boilerSweepCounter); +// SmartDashboard.putNumber("b-SweepDirection", boilerSweepDirection); +// SmartDashboard.putBoolean("b-isCentered", boilerIsCentered()); +// SmartDashboard.putNumber("b-rectX", brectX); +// SmartDashboard.putNumber("b-maxY", bmaxY); +// SmartDashboard.putNumber("b-rectY", brectY); +// SmartDashboard.putNumber("b-rectWidth", brectWidth); +// SmartDashboard.putNumber("b-rectHeight", brectHeight); +// SmartDashboard.putNumber("b-pipelineSize", bPipelineSize); +// SmartDashboard.putNumber("b-stop at distance", boilerStopAtDistance); + SmartDashboard.putNumber("b-boiler current height (y)", boilerCurrentHeight); } diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java index 7674578..35507e0 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java @@ -102,9 +102,10 @@ public VisionLift() { usbCameraLiftGear=CameraServer.getInstance().startAutomaticCapture(AutoConstants.USB_CAMERA_ID, AutoConstants.USB_VIDEO_PORT); usbCameraLiftGear.setResolution(liftImageWidth, liftImageHeight); -// usbCameraLiftGear.setBrightness(40); //40 for lift -// usbCameraLiftGear.setExposureManual(0); //was 25 for lift -// usbCameraLiftGear.setWhiteBalanceManual(10000); //10000 for lift 2800 for gear + usbCameraLiftGear.setBrightness(0); //40 for lift + usbCameraLiftGear.setExposureManual(0); //was 25 for lift + usbCameraLiftGear.setWhiteBalanceManual(10000); //10000 for lift 2800 for gear +// usbCameraLiftGear.setFPS(20) setLiftCamera(); // define the output stream on the smart dashboard @@ -113,17 +114,17 @@ public VisionLift() { // Vision thread which processes the image contours visionThreadLift = new VisionThread(usbCameraLiftGear, new GripPipelineLift(), lgPipeline -> { - liftPipelineSize = lgPipeline.findContoursOutput().size(); + liftPipelineSize = lgPipeline.filterContoursOutput().size(); // if the grip pipeline filter "filterContours0Output" sees the target // loop through each contour image // grab the bounding rectangle values of each contour // to create the biggest rectangle around the 2 vertical retro-reflective tapes // on either side of the lift peg - if (!lgPipeline.findContoursOutput().isEmpty()) { + if (!lgPipeline.filterContoursOutput().isEmpty()) { - for (int i = 0; i < lgPipeline.findContoursOutput().size(); i++) { - Rect lift = Imgproc.boundingRect(lgPipeline.findContoursOutput().get(i)); + for (int i = 0; i < lgPipeline.filterContoursOutput().size(); i++) { + Rect lift = Imgproc.boundingRect(lgPipeline.filterContoursOutput().get(i)); // set the min/max values to match the values form the 1st image if (i == 0) { @@ -417,21 +418,21 @@ public void setLiftCamera() { public void sendToDashboard() { if (Constants.LIFT_DEBUG) { - SmartDashboard.putBoolean("L-Has Target", liftIsHasTarget()); - SmartDashboard.putBoolean("L-Is At Distance", liftIsAtDistance()); - SmartDashboard.putNumber("L-Center of Target", liftCurrentCenter); - SmartDashboard.putNumber("L-Rotation", rotate); - SmartDashboard.putNumber("L-Rotate Difference", liftRotateDiff); - SmartDashboard.putNumber("L-Distance Difference", liftMoveDiff); - SmartDashboard.putNumber("L-Sweep Counter", liftSweepCounter); - SmartDashboard.putNumber("L-SweepDirection", liftSweepDirection); - SmartDashboard.putBoolean("L-isCentered", liftIsCentered()); - SmartDashboard.putNumber("L-rectX", lrectX); - SmartDashboard.putNumber("L-rectY", lrectY); - SmartDashboard.putNumber("L-rectWidth", lrectWidth); - SmartDashboard.putNumber("L-rectHeight", lrectHeight); +// SmartDashboard.putBoolean("L-Has Target", liftIsHasTarget()); +// SmartDashboard.putBoolean("L-Is At Distance", liftIsAtDistance()); +// SmartDashboard.putNumber("L-Center of Target", liftCurrentCenter); +// SmartDashboard.putNumber("L-Rotation", rotate); +// SmartDashboard.putNumber("L-Rotate Difference", liftRotateDiff); +// SmartDashboard.putNumber("L-Distance Difference", liftMoveDiff); +// SmartDashboard.putNumber("L-Sweep Counter", liftSweepCounter); +// SmartDashboard.putNumber("L-SweepDirection", liftSweepDirection); +// SmartDashboard.putBoolean("L-isCentered", liftIsCentered()); +// SmartDashboard.putNumber("L-rectX", lrectX); +// SmartDashboard.putNumber("L-rectY", lrectY); +// SmartDashboard.putNumber("L-rectWidth", lrectWidth); +// SmartDashboard.putNumber("L-rectHeight", lrectHeight); SmartDashboard.putNumber("L-Distance To Target", liftCurrentDistance); - SmartDashboard.putNumber("L-pipelineSize", liftPipelineSize); +// SmartDashboard.putNumber("L-pipelineSize", liftPipelineSize); } } diff --git a/sysProps.xml b/sysProps.xml index 8596039727ef242c1ffb57a2721db0ee3f43b11e..daa7babc2ce9d37362d3b51e67662c6b743f2db3 100644 GIT binary patch delta 81 zcmZ2yu+CsZ37@GkgC&Cz7#c8upaO#1%nxbF_2W4 X9LQq5`3c_!-m*JSfrp+;5!I`a<1 delta 81 zcmZ2yu+CsZ37@GegDHb6gA;=ZgENBx5GpXZF&G2cjtu5No*9r! afg+OwS*$ld;XA_2Y5`Pcwt1~kBP#$?=?^jh From 59370b64fc89378e0e26112f28ac6eed1ba6cc9c Mon Sep 17 00:00:00 2001 From: jpiergal Date: Wed, 22 Mar 2017 19:05:36 -0400 Subject: [PATCH 59/69] bag window --- build/org/usfirst/frc/team708/robot/OI.class | Bin 4087 -> 4265 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 7249 -> 7083 bytes .../commands/autonomous/driveDistance.class | Bin 1073 -> 1073 bytes .../DriveStraightToEncoderDistance.class | Bin 1900 -> 1821 bytes .../commands/intake_gear/GearIntake.class | Bin 1589 -> 1597 bytes .../commands/intake_gear/ReleaseGear.class | Bin 0 -> 1096 bytes .../team708/robot/subsystems/Drivetrain.class | Bin 7048 -> 7333 bytes .../robot/subsystems/Intake_Gear.class | Bin 1531 -> 1331 bytes .../usfirst/frc/team708/robot/Constants.java | 16 ++-- src/org/usfirst/frc/team708/robot/OI.java | 8 +- src/org/usfirst/frc/team708/robot/Robot.java | 20 ++-- .../commands/autonomous/driveDistance.java | 2 +- .../DriveStraightToEncoderDistance.java | 2 +- .../commands/intake_gear/GearIntake.java | 11 ++- .../commands/intake_gear/ReleaseGear.java | 87 ++++++++---------- .../team708/robot/subsystems/Drivetrain.java | 22 ++--- .../team708/robot/subsystems/Intake_Gear.java | 2 +- sysProps.xml | Bin 6190 -> 6190 bytes 18 files changed, 86 insertions(+), 84 deletions(-) create mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.class diff --git a/build/org/usfirst/frc/team708/robot/OI.class b/build/org/usfirst/frc/team708/robot/OI.class index abfa7dbf57ae32667f40d767ee0da72ef1337dbe..655c4e127db46c722dc65ee4f418782e6311952e 100644 GIT binary patch literal 4265 zcmbtXTXY*&72RVy9(gix+%z;z`XEi4#C0E&rfHiriHl^*vKrYklI-9V5F=?~k0Wc$ zXk@1lD37)&??<7$OM&vHKy9#T1f@K?79V`^$q&DL@XcDR#bTd3ay;%@b?k*c=G=YH zJ?GqW&b{Yc{pG(`UIlOruj_c)Knj<;@HRZ7<6{OoaM{4e@d=svq=8T2(=z&uj?Wq} zLf+?O=JPt9HPDUAI=*0_C**ulIM3<$l7Zc!(l6`yih(^L_^OVt8Q2$suj}}Rfm=fG zypC@g*dKxybbQOe?IHNKsQiwO7Y!T^XTGcBdj|SK@O>RWFmO)@ekf~yq~pg1?h9vr zA~P@P_^E*h!YwLyex~E+22RN4UpAm&QI;*q=NCGDsbkr|BUsV#D+39%lArNU^N1_YPD9M z)UeZ=b9_7S))aK7M+@;Y$zmd&$rRJ08niU640yGAVAp~PyV`KtnXyjFMptIX3o_lV z!N?>Bi;3|N%jwN&PLb6CRgBo_NLbaW-^hCD6jjWpt9hE&Y zLtP?P98RZ(HN@07lRZnf2QulAL~$^CmTt#FFg_+S9U8hP()o0Dv{=ZcQ>kQ5W@8MF zTMO(9PQtEM(=`o;GESvoEzG%Am^_ZEZfV9UHG+WQw-SmnX*<^BvW-B);cEyMe0OTf z@hRC}b$CX$m3*4ju-$j6j$LnOzyLY*#02 z-xb`N>A`mt%+&4I$ksJI{{TO(7!bU z5^5{Ac0x@2UR2GBs)skJs?O~4IJNev4%gO&^MN;twaHktG{`nW`EVC?*~Q6C>R9z<#G7}9TUX0OuoXw%sDfA0 zL_-`ovBgcu2EuD>VjixE8QI5!o7BQeRP-8wCEbG5#08O#Z&F%yy}-BKnpN^J=JX~NwQiF->?xl3RfjH$Ly!MIn!;OY;(em&y;}**fRs|+8b!zFO!y*w ze3KrnlMd_Wp^Zgz@-i5)Y3LIEXkr*?6OSUz$Hc}B=~3_Tdf=8XgpEnV{*BFKsrC~7 zq~Yks>(mn^2zyrDieGf=5`#LUnMOkYU<$)({W3KqV;P-=k zxL!s(N6@V>BpO(foGE6=W5^VuAXhSG3Q;2w6Dp`brVx`TTKc(?T9`$} zYnfmk6*Dx!L@K7P1Q|z#LW2yXLZJy}S)tH8)2y`6AWbmOgDvyPB{0#7M>+DCPsJl5 zj|o-0cEw{x6_1EKrc_zz3B4GS>}iboYW8lzcHGQ74&WgFA>Yru#WBPJm0}S%!+d6# zuMs@Mvh^Ix)QimNBFoWh7{^~(hW?JT_$SNHzcHzG;+(b{k7)-eso_alXv0(g15ezG AfB*mh literal 4087 zcmbtXU342)5&kxIyvk*DNq?~sG#(Xb9ms1M_zd4foINv!{M8|ioNbRb?k#4cJ6oQ z&di;eduOix{NFd<0&o&<>v+OI5|?-30enWsXAN}XvVqUxNtyY)fv4~V8GTX5mkb!V ztmA0|X1M0d!ug7huNvqHReVjy*A46s!8dd~W8nG_JgeiI1`dRR&xzo-bbQ;uts(n6 zI=*Y*U4FmN;kFY5TAfxZy@NY?&X$4dr|g)=Y9%qu!xHE<#{ zr#yH~$4?BL5)XcAK*P^u+0W(kx{hDy_@#jX{7T0g1|CFH$FhMqn!^9Jj^Ak5Q}*3O z#~-%modvtB;hv1=SFA?;qU+ZK>!M$>0>_@e@AzrU_ljO%H3GM4wO99R*y}Agz8!e$ z3cAx{`S`h1Ara4H3h6NoTAEe{y;?o6Yr&LVZ8#lFQWs^TE3=b%neNbFWKzjOVlto4 zQrJx7lrjZn!43`kC&trbg^7`DHlND1R|;#Vh8s7s;)CbbH0@KYp;RilCZyqp4U^I3 zW_CQ4i|11Xnn`NdcLffo;<>_jdMc~7t8q6QIH60j8|Gq{$QDM@!y_7EYMjZQr-Or; z^k|}x%$}!%u@Fp-i%h46?y2-dIy+X#=hDN&shrHl7zVc%*mF+8u2$1E4M#FgxnV6W zxK@}Zj;d~P)+#oFfPuCWiZVTW*5$H|K*Q0i2cYR~~UIGa7UmX1paT zl2N=o+o*H5-RmF}>8d!kFM47!h|Eb)beU6L?pbu}u2*Y2qoHfSt+~NjI@NpEl!neh zuS}ozX55-H)|f9ke%>xtIkPY0mF()2?Yn~8lbykgTi0;MRqjPL&7j2w=wE2cnD82Y z$r*A*v7SvIo3$5h4Sid`T_%?Bh>0Rf8j_ofmAv_RyH>7SVY&-No)c@-t~G2P7dbcu zIXOC3OswL!CdzPh{LaLi0%pX(nJpTqGbKC&ZRP4jY+raH@D|#K$wW)`;DS*)yUjgJ zte;6aXC`L1|J5fjI{5AiQh|1 zyzO}NPCdL#CKkk-`?t9h*+qB(O?(`ViHow2Q(M%+s!{M7fh9GZ)I>$3<6D$gy(sW) zw`S$NN~P)~r2LHXx|;CCnFqG0sC^HlB3Q%xTydx_4h8>@rtm(QXo#ljc0w~KMUYoV z(a8l9^CEqEiym!|4lCc0%|&z4uSabfTEZVpq%dS+7(;CFn>UY#yhrPSTbc`-h=zlk zo5`ldz*`zlY`#uC9D=aF)UEgtRkdpsD_fj(N^Bd4 zHuvv}U%QrOSe!?kD*Iet@4Ga{c4f5&!wTCk{p0ZF`q$ddZe<`|3i!Zc3tyUXYB{Is z*mdcwWIDBR->ECq*_#&4N8W84!%ofd-O@-p*{>EJ@4ZSp+VD)H2yW+#FUiNmVLn!Q z6gWB{r-Ae)j3CX|%0nFQz&YYf1dnpv*gJ4Gg2%c3gAtq~o`_)K=ObA3Pe$-4@l*th z{P_sJKs+76AL4#K9KjceKN7)W@8Jj*{U43s0`bQp*rq&NtcnNQqN1#Lin4Yo$_}Y0 zyOg5rGm5fXD9SRRC@-|4>;Q_gf-A~8tSHN=qAX>KvKlGMf}|*GilRK&q&t`sz5w`r zl#j_pbZ`Xxr*9QIn&@bub9xm!SJ2gjz6N4V>}tUvXSd=Im;`%P(A~t|7J3M-Spk>r zYhgdZwQAXQEnH7r-g$Ax2t7$M8Tac93tniT6Uy` zqXfMQ+|@!K!QD#co+x;43&+T@6z6ypysw25jknDwmcg_t9_7em_7snZJf=_aIuwujQ#>N_ zm_TKrC-h=aa-}iSS8{bTcHVoo;lW?ORPIjappOU<0WRW k$vW~jYsX($FaE}i|ATemU$~%kVOqPEH9%wDZ!`mAEuIWD{{)u<= zw%*mdd`}?yzGffz@u5T=K9cwtpZM`FiIezL;4|I%x$ZfvTVLpH|69YC+V_=ieJycH z2lwGWzNQnLN&aI-43dbqsUe_YtcDT|*&1>*-8t+AeIlexZ?>-C=YRsiZ zzS-a_4k+A-yA*cgE<%y^8q2%Gp$ip$f~cbLdT_OQfveiDa4CLDsAN*EmTihe`t_*G zaJhMBMzyE4tEb0Yn^CV8gu2*$6|Q#Xm75t-`L^L2!gTW^*L1JK6}ZxDmsP$UFcaa- z`(=jjT3k0WCG3&B-1XQ_n5mb`?dXQ`=xDP~uYe z(E@_Iqir5xo>>|QnnPL9@eAn;LT<~J{zz{m9NE%0Zds@&w632sq-Y^6B22I~Y|WnL zSxlH>@8@9l7ZgnFZ1mtKqc>5R>I?PjYAxyBxT&8rH)&OQCt(zOokZLI!Ie4fRCo#B zFyLDN`cyDx=(C`$xi5Eh`_F9;Z`ZcB;|{ja$I7;RvTVzluq`Lkww!U>{?eYOK;V(|WmIG_mk;{mpWea;+i=JRM5`))Je$h#@8VhGdu zzj7aYT+q=L!7v}lZ;EciE?k3KajhLM-|xAVk!TtX78-X!x(3m7FNBAU?s**28PKdlct%3BFlll6S}Zijpt!5mF>?c2v)j(d z3@G!fG3C(>IE*lkr0MNV=(TvP51uM_polXtl$73RX9&nlWh9jfr)*F2#Ai4a$I`-P zCetvS47CAKC%Y5=NA*0GYoU$N?PzB+HzhqEUY2&8kI1WBve)=Pyw2~i<)ClI!#-_%TZhFbLF>}BOceD?HiIyi%V3k!0w@a9`Mq|FxDiCi2* zk%c8OWLY>fhGGk6#ZYRYJq9Cc;p`alEG&(oz(Pk16D=%@A!uQFD&w{MTLJi*Gkywr z#BT+;P)cqD$%ConMK$>_iv*g;k2Zc47gHvdQXoxwM_NU^pf9nMKLEa#qs}%cJ5d6Q zg?o&1;^#BqsiIu|wUCE#d@ohf7&KD>&Za`Fr6PQv#^Q1c^7A(dyQw0Iy)+pI_)$t-7*?{( z{CFkGyq&Esb0b%A7#DLzZB#ZE+sHQ*`}1rpuyLY|K^sdMQ!1w+lRtoJ_&TTt{HDR6 xS`<(nim4tGX%;GI4oh!9Ex%d~{Ai`rH731(&Db0jGTkDG z;snu8EGWwpvEq)32riw_m)H@cSg|6lqN0L|Ma2yYDxhK!JomlH%=~G-FXx=!x#ykx zJLlZF@7>q*M04!1H%>hSpq_S0T#vH?KagvV1pQ*7WkFKB4_E>0>6=1?0{zk zek-xm0T%?Gl_+<>?*x7?QR#p`NIZu>8u*jef0pjwTS(TX=D-Xs`Al3e5#Xq}_ z^07sNyF!MfES=Fu(${u@JIj9>W$Q)7Wowb6#Ud?Yi?z(xV!jpyS}fI~oRmR1f^sEx z;Vg5aJcIHD&69Y$gZ&207Zi{f!C8ZXf(j(U+AI`QB(Yzc3j{5cIH1j9L5n0Nw0W7J z5)MwaRH1dHpejM3>1D2vo2t#N-fMER z_JxNJ_l)h^f0R(#V@??bg@e&Zcp^HscQqkYsYn{#1T`vr313#YhXplJv%>cfS2%;Xpcb8Zm7>+!^Ih#( zqdlz(U&l8Tt)(_Xx!tusUtWj8*Kj`}*nK!UUfL0fj15nWhD+B)$H#{!_9|+p4nduY z*3o)`>WoZ==VAnPDe9&T=IQL}vd`lS3isiDMH_in+N5{gtY{1MDC*UotvrZg)$86y zedYnR!`)AP(`VFTmpVZM1ouD}r(bWL&Z#g9@?uK|=_*2?WAbQpB03(OJW@Isj)X^# zjzuRF4bpbPGTjmL$-EVw9eOtU2wax`TF_Iusfr!$BVj&5p2}SsR3u9^rW@uRqUm$~ zUdo!{D+(wA%(}qt*m1VA@JZZd>rdfxw&s#-eK)>nYwowLx#g^(51Xy|yxE$ow>7uZ z*4%7cf78yRK;ZMra+U_0`#11A~j=Qs`)W>^zu z=W@_yj&`x{5p#X;j+O*!hQthNr?FC-hHcixvC?CqK8`xAc(VrnZ#=v*L*$C??asZMtqBZ77yYkoW{*IhXQAxB!^>Y=7>|wg^-wIgN+=cnfhnZWTBb2 zX$j3@)k&;Q?q*IE6vomO`BN2rJC);9GRK}!=mB^wta%u%C$ZMw#&E5L_E~i7Oq%{q z3+s+Ux~9=}4}^!6UU?MK3Fy`-xMnBC1_m2=Eugi9ZcWK;Hy{LQHWyZ95ZjX^_8`aj z;Hh=z6mww@rAW5gg#+2?Leu?pCipl%c#bdY^BEJ&PSyLJRI0vYs$eMQ@N?*Gj6+%2 zlqTt9eTvV=(+J?1jI6;7vV5X)IpM>p^p|r5dL)$Q=d&HpWn>^bLrh1WPCfa5)c8Et z_yX5>F(X&H#z#`AR&ioY!kEQoeJIjgoT^^tLA-*Pz^fUFjAU6ZeSPuc`X@8PKMS2` zfSY7k*b+d`op+(zL0j#XZHuGWLSGzt7W(5Tu`m$F5(|TI_$^!&N6^CdIEpOnh@;HH z&NwP8yoD*nlE_gp9B)PjTeCJ<)) zjyb$9f&Glf=I}ccIKVhEhsP6`U>u#p2NO6n6u^-gOgb*F|6K`O%^}xVcq?z|^}joT zYlmiHcn=5o->Y4-xX%ARO^1#2#O&^npT9EZqm%-;l7eWb0`yTK_RsSh5bQW7TL1QmKC;K z!ZOWr1+w`x*Yc;*N+_y>pXyOW4Je^Tlu;8x)WXbHp^;yZYiLc1-7@e;m~+j#@F){< T;rsY3YsvIJ&1HP1eZl_#-DpDx diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.class index 020854d6eba703c8400c303dc545ae9ac371b9bd..d8513ca9dbf9b11fa9e346980b8a69d3b77b6617 100644 GIT binary patch delta 27 bcmdnUv5{kfk$@iq7_iwtfG{>Xy=MjhP>=Uuvq{(l8l)9lEfp}yD%lF9AJS5k6r@txDIG3)w@J3JHOXdnH^ur# zwBvZ)o8IUM%y{7s@JFf7d9w)_#))GxdEWDWoaa2}ocGP2fBpUkfE##X;PWhUSQ1#y zqJSG2S}OuK1#Su4&fpHd$YK?D1?~x~8MrUwy1X;f!z&XctIH1FM_%q zxlZfW_1kvf*Zjz?`>mGKZiIFt@Lsu5;COAjD(0Tp2Zzx!|3SOXz(GH)RSoIJAVs}Y zRpL?{pNq=eUgXrjedKhM4wg$pR`T$iruRL?CQ5S3aKCfwT`5b}3pcqR9!d$g$;1{*fsH3!YoRd1-H?)k2;>+>m;qF zS9{s-pS{uRBWp8S&Qs|+%X!vr4J-d~N5XC`d>uw^E9_kjbxU{+mPd#BS2qo2;D&A# zUn<_0;pq}zftqi<4t&~&PSaPt)-c7Fb?zqeG%rk*FC&cn4zBSb7Wk%;7?bYNDo87# z;UeuZT;h)nRW^IdG0nXz_>lM!XZN8a!O^ga6Q>yaMIF3K%+e8bOp$Ju)k4Dm9Hl&5u-ILl&P0d%QR=&-Vi|Jic?S_7nx!OCTwB3Qqm?kN&WB>jO1G+6YtK}e*C$=Mweb`^BjSDZ0s7Vus#&d zj>AcjGSFw%HC*5?DKDEbCHe|SiEgM6ljjrIVwT%OjQz`(WS#mH%Q1y+o#4WGf?Y;? QJVc?{60Ak@+8UO$Q literal 1900 zcmb7FT~ixn6n-|@%_dEy)(PhHTv36zd<+ zj^lN2ywMSu@uEM#AEkZHn@z|tP8>6n^PczPJkN8^d*0-)zyEv-;3l?A%;izUyqKGL zOrVmZcPoe6xFc(KW%{|81u^&X_yUV!?u%J6@j%8e#Vm`dO3*_SD;kQi8}52>)sJGg zRrfS#RSlUih~1cz!gA1(jdD za&=~#!*b9d&S=eVdF!419WUH+cbZ%ouLX6tx$TC&%#%eu-t!|38?_+Zbvn^=Ka67M zd02O1&)vU$QM2$^4z7!N0$an=;avZ}$`+oAo^P;WVN+;kg=X4o zbew~>?{u$|Uen)s(Yr)vxqF!`&~P~$a`mj~$(?Jc{70iiot@}a6npzow?9;?NH2um zcO5_U*lX9ywc+|Udl(DS1M|a0{wtvdi&S2m^d#GDa5~3Fq~@!y!hrss+YD5zXqe!` zJk`iN&3>!$VMTG!#$~?a2|h_3DYlG^&hEoN znxko#MvsyDO&y$~%`*^$%rN*ey|Zd=;$vLli~;yW(FoXd0``cf4en*_(u{tL^l7y7 zjJlxErW9$mkCsi)M4re^E0I?dTtX2UsMyEQ?cyN}`*&oHU``sZF=m$z$vAU}+#8JA zr2{pi&DoR2A@U+3jVW52Nr7)cXU%eyJ;n-5a_1r?Nm^x!m_>=dw`C>L=1G$FMOOME zD~U+im8u$y0`XG+@UU*8oK9=N2;*nS+O6~&M=oMQNgq+xQnqkXr*TDjo!QR9g2T(4 zQ&OyMXd*?&r+wH3o)y>vq3l19E2fVydIH$J##;otI{;MZ16{*)hD#^3Ni9GQQSz^G zPDvZ%B>UsfF!eXk)4!gq{q#$3jUnCg7CD0dEhZLOl%)YWC!v!fP3kCQkw^v73(9VihO z>JVu|e|kZLbR0o16C&FYvM&5k$nt7P=~~A~C^&M0toH^wva4G}#Cdt!*t$ZlUoNJ315A zxSjDA`~<(i_yHCUTR6p;IWu$S@h;xPwY3yM2CF)pp-4Z)?zo*Z23C@vys9d_^G;W06nXgq1)L6OdI)hJO3j1nL%T!FHgBE~B|7TE=)q4PbrR-qPbk=;TT@aJX0JN@{;_Xhba;GHg`?)wJXASgJ6xkCkIbg0~+(d}6Dh5k$5V zwA6Q)>#h35G4<_B0)m6+YofA`7MBPNXAN zEr^vPwx!mV8_BhP!cTby*D=lT{2yfP_9bdrN3Y^2gJl#L%Kw?E5}f%N6m_b-F;lrp zo{C6u>Dv_zYZ^CO(SGp4cc@9KBEyLLj?j-SF>H>R_ktcUl!P1GXB}zx+epZhjgw!^ zv&;P^?x-N{FidgRt%@bv%@xlkR8zM+R~lE`~panBP(O&2Pa!(ttaG{M>4w5DJn zhiTB%k-tKl>HUdJ0$0hVdj~n>31|92T*HjMq&rVm6Pq;anz&Z#f|b4?anMEb90tJ@ z!Sp#yf)fXMT*_n8=wgb3zl+S!p9D%|P?;>HpTiBTVs@nH+MuXGk=a4fRr>0piR4FZ jN94|rFcU-O+)(a??_3%ovLW&2--*kAATr$Q>6-rui^=#u literal 0 HcmV?d00001 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Drivetrain.class b/build/org/usfirst/frc/team708/robot/subsystems/Drivetrain.class index ca04baa1abdeb62138987bf14c2a411e681f7bd1..17d11ad0e00d71372a423130123c24f734be4355 100644 GIT binary patch literal 7333 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 qw#wVETOO%Wa8ICM9nMgtIy@z4=$vo> delta 3321 zcmZ`*YhYB>5&mYgyLa#1lO@^BWAh@^2%9X107*<^%S)ark4jJw!8B3~*pO6$0kwFk zrGna`_SOn0sHKYag(R@1_~^T(RxR46t!*vVTIma0`>>_hnR9RMu4(#bX3n|i%zQKR z&Dp)bb$g5b?CB%V0BE8n1CK`Vn1v-cV4@9=i#RBvU&MfjLn01~$QXFSLKK6t__A0> z3_NMzDGQ_Uv}`^j;wvJ)D&lJfzHXre-;l*OEf(K0@NLURIld!XM@4+sz_a0Lm#axf zUq5l9Y zgbB`l(HiGXBfp@R0t&0}5rsRjfl%e#Yn3>a5wp3M@)TC%3WZKwL5N-1(bv(?)zRJA zu%KhZ8ih5CiGmz}LfEG$jID%5?RIk{USLp^0g+Nziz^AE*=^~Vp03s1J!?5sHyG~6 zL|i3eJqyamR_E2oEIUS{6ctdRL2*S1+@Pq4iWQY`a#V^f3fJM|a(bV_jo4;TQc)R| zE2_XYg&i!Y61OR;qR|FbD|#QDp{Rz=R5TV37&J~%N_^I0tD-u&pH?&;%Lv7@mW-L* zy~^2V7KYDKR8JF}Bjy>&2AW97pV8H|wxfI1>X|)VJ?jw^eKIkk;HJt+`KHbE~xG_Gr!B(3%^f zHMc-(E-`Boh5++8AhSe&V4|=#rQTX|$+hOHYt4mcUCvjTJ1nnewBr$B3$%7%cENnA z>&IEa3?}xY-c=J^)gbC1Uk;#;wZ-I|Br$y4}H#siD|avltz$c zr-wzX&D;&ir4!e)m8UJ~cnCJz20{%5(E_RMb=cy;UcjJ3{4ttN)uj(1l)*W}vwsQ} zp4Qoq(LSTtWa~2WEk9(`3rY9{Zt#3JuogHWar_7yZl}U}^Jq>zLw-F!$^CNcIh9XK z?ZfGc!w3z-WaBwT{k(Qj;vVzM5SCX-8EOuZLT zfR}R675eCS+Ff)u8ab-uX0oUJ3_iH=z_9#Y&hcRS9=7|C&ejlti0dGhMdEVqIQQ$d z93K(i$4$7o*@eMv4f8Renpra?)!8bQ7Bs24K}_9+aI7_y45fMmn=of(Nofvqs{N8x z;}(xO)%dh#P6VaQ`V}5?xMQbKE_1@Kn-_YrR{+7!)SWgw|93{jeyfe!JO_KY)KLaj z%h;!<>XM;B%xE=}W^CtP#Pwe1AkIx1JNF1H=hwJ~k{C{|(5#WR?_&81c`FN?fowyz~JXwF-ui3`v_Rz+T0jk;$nSP~$V0lfhUv6Irt;YZiOvFqqT= zN0k+f6{PNf)%#_w=f{0F$0FS2VV+Tzu;*qyXadu8MCjZc5@d(qZojTAIa5@Xm%;xy znaxh-j_731dzmPu5h_+@FmD(YX=^BRuLJLX)d=^OjClVZKMNUUXK{Iay!;Ni z$zKYCR*ZPnAWypu8xo*V!U%)<(7mJvG@|%!Irw+s5 zTG>e!;nYU{;mI~nzk_r&Lez&iZPY$p1|)n2B=AL^7hwSZ4e`8B&}$&rkMoAT^>l3x zvY^lS{Wc!-E>B@Clnqr3;Jhprx0W`7v?T|}(60p_$Cvp3hTwR}Z^m|SROiIc_vkQ) z3zo*`^Fn&77Yle{4kEp9X?zjCG#}cgcQ2Gjbcbs%mIp|7JuuFq%9_UP*v|2i2;gBx a9l#@Gv5q4^5t>9M|3Nr`Q8Z?H*?$47_!`Fm diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.class b/build/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.class index 37ffd51045407f210480d68c9a1f902ca8bef2f1..967886a3214de47a756f1535a195eaa3d9efc077 100644 GIT binary patch delta 600 zcmYk2yG}wu6h-&k3(S3qih@rN0p+EjBEFGWnrN$)1%=Vh1V6w(u$ju%nuchIu`sc< z@-O@d6XU+a70DzsbIzH)W}oxzJ~<~JKd)~9HgPCXa4?3VL`kCTz{HA;QLIW-9LRo9 z_0wy9xNc#?VY%i|TbJ09*zTU)3p0*{`VvhmjvWu2zlYEEN}RwbmAp7NlauiilMN6w)UX@sVJt`arA^;w#|?Ovpa@ z54==OV|?%f{0G0pXgsr9>SnTc=iWKz-g9QY=->YK&%fV)0Jx1Ug_=eVvkG$xH#A(# zdl*Aq;iiU)lLcG8Wz&X7&Z5R0G&8uX30%^+hh>HP3M;+#M{y@`G5jShe*zB-&SP9q zJ~=Ko4K5%sXrW~A5R(dz3|8@2Va;G28-mQ6-GkEW&hC4Iiamc~@D!WjJLiK`!k!ef z&$=(Whl138XKz6;-?qh2i?7=2Ys-SUv%J7u;2(6}?(H0QcL*nGX0^I4Xq+4e;U8zC zGDgdQ!$pPBj_UYNLqG$Jm%>+WeLv4y4k^YwV}X7z;|f=S6+;wIj4I&181q=0wS+@fvl|QmrO%5=L45lJ{5ar$g4|uqSG8tko$})+5PK+HH)V{*& z!~cYl&oJ3^A0w$#_mn4Yq$4&{<&2trb(*gyGzCY4AyW}S#@TavXsgK{c813p>Cry) ye|xdy1|=^h+MP)jTpu=B8VL1sqqRQHeM9y|qRn(RRVn=ZR diff --git a/src/org/usfirst/frc/team708/robot/Constants.java b/src/org/usfirst/frc/team708/robot/Constants.java index 4c9b7c5..235fa1a 100644 --- a/src/org/usfirst/frc/team708/robot/Constants.java +++ b/src/org/usfirst/frc/team708/robot/Constants.java @@ -127,16 +127,16 @@ public final class Constants { // LED CONTROLS - public static final byte SET_ALLIANCE_INVALID = 0x00; - public static final byte SET_ALLIANCE_RED = 0x01; - public static final byte SET_ALLIANCE_BLUE = 0x02; - public static final byte SET_TARGETING = 0x03; - public static final byte SET_TARGET_FOUND = 0x04; - public static final byte SET_HAS_GEAR = 0x05; - public static final byte SET_HAS_GEAR_TARGETING = 0x06; + public static final byte SET_ALLIANCE_INVALID = 0x00; // blinky white + public static final byte SET_ALLIANCE_RED = 0x01; // knight rider red + public static final byte SET_ALLIANCE_BLUE = 0x02; // knight rider blue + public static final byte SET_TARGETING = 0x03; // blinky red J + public static final byte SET_TARGET_FOUND = 0x04; // solid red + public static final byte SET_HAS_GEAR = 0x05; // solid green + public static final byte SET_HAS_GEAR_TARGETING = 0x06; // ???? blank?? blinky green // public static final byte = 0x07; // public static final byte = 0x08; - public static final byte SET_OFF = 0x09; + public static final byte SET_OFF = 0x09; // off public static final byte MAX_LED_CODE = 0x10; public static final int ALLIANCE_RED = 1; diff --git a/src/org/usfirst/frc/team708/robot/OI.java b/src/org/usfirst/frc/team708/robot/OI.java index a459ab3..90f44be 100644 --- a/src/org/usfirst/frc/team708/robot/OI.java +++ b/src/org/usfirst/frc/team708/robot/OI.java @@ -37,7 +37,8 @@ public class OI { private static final int INTAKE_BALL_OUT = Gamepad.shoulderAxisRight; public static final int LED_BUTTON = Gamepad.button_X; - public static final int BRAKE_BUTTON = Gamepad.button_B; + public static final int BRAKE_BUTTON = Gamepad.button_B; + public static final int RELEASE_GEAR_BUTTON = Gamepad.button_A; /* @@ -66,7 +67,8 @@ public class OI { public static final Button intakeBallIn = new JoystickButton(driverGamepad, INTAKE_BALL_IN); public static final Trigger intakeBallOut = new AxisUp(driverGamepad, INTAKE_BALL_OUT); public static final Button led = new JoystickButton(driverGamepad, LED_BUTTON); - public static final Button brake = new JoystickButton(driverGamepad, BRAKE_BUTTON); + public static final Button brake = new JoystickButton(driverGamepad, BRAKE_BUTTON); + public static final Button releaseGear = new JoystickButton(driverGamepad, RELEASE_GEAR_BUTTON); // Operator Button Commands @@ -102,6 +104,8 @@ public OI() { // intakeBallOut.whileActive(new Intake_Ball_Out()); intakeBallIn.whileHeld(new ManualIntake_Ball()); intakeBallOut.whileActive(new ManualIntake_Ball()); + releaseGear.whenPressed(new ReleaseGear()); + // Operator spinShooter.whileHeld(new ManualShoot()); diff --git a/src/org/usfirst/frc/team708/robot/Robot.java b/src/org/usfirst/frc/team708/robot/Robot.java index acba3d6..e9c469f 100644 --- a/src/org/usfirst/frc/team708/robot/Robot.java +++ b/src/org/usfirst/frc/team708/robot/Robot.java @@ -79,8 +79,8 @@ public class Robot extends IterativeRobot { // public static Solenoid pwr1; // public static Solenoid pwr2; // public static Solenoid pwr3; - public static Solenoid gearLight; - public static Solenoid boilerLight; +// public static Solenoid gearLight; +// public static Solenoid boilerLight; SendableChooser autonomousMode = new SendableChooser<>(); SendableChooser allianceSelection = new SendableChooser<>(); @@ -125,15 +125,15 @@ public void robotInit() { // pwr1 = new Solenoid(RobotMap.PWR1); // pwr2 = new Solenoid(RobotMap.PWR2); // pwr3 = new Solenoid(RobotMap.PWR3); - gearLight = new Solenoid(RobotMap.GEARLIGHT); - boilerLight = new Solenoid(RobotMap.BOILERLIGHT); +// gearLight = new Solenoid(RobotMap.GEARLIGHT); +// boilerLight = new Solenoid(RobotMap.BOILERLIGHT); // // pwr0.set(true); // pwr1.set(true); // pwr2.set(true); // pwr3.set(true); - gearLight.set(true); - boilerLight.set(true); +// gearLight.set(true); +// boilerLight.set(true); sendDashboardSubsystems(); // Sends each subsystem's currently running command to the Smart Dashboard queueAutonomousModes(); // Adds autonomous modes to the selection box @@ -194,7 +194,9 @@ public void autonomousInit() { allianceCommand.start(); autonomousCommand = (Command)autonomousMode.getSelected(); if (autonomousCommand != null) autonomousCommand.start(); - + + Robot.drivetrain.setGearLight(true); + Robot.drivetrain.setBoilerLight(true); } /** @@ -217,8 +219,8 @@ public void teleopInit() { if (autonomousCommand != null) autonomousCommand.cancel(); drivetrain.toggleBrakeMode(); -// Robot.drivetrain.setGearLight(false); -// Robot.drivetrain.setBoilerLight(false); + Robot.drivetrain.setGearLight(false); + Robot.drivetrain.setBoilerLight(false); } /** diff --git a/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java b/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java index ae98997..89c6bc1 100644 --- a/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java +++ b/src/org/usfirst/frc/team708/robot/commands/autonomous/driveDistance.java @@ -28,7 +28,7 @@ public driveDistance() { addSequential(new WaitCommand(2.0)); addSequential(new Intake_Gear_Up()); - addSequential(new DriveStraightToEncoderDistance(80, .4, false)); + addSequential(new DriveStraightToEncoderDistance(60, .5, false)); // addSequential(new SpinShooter(8)); // addSequential(new AutoFireBalls()); diff --git a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistance.java b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistance.java index 7ccd50c..1df12d3 100644 --- a/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistance.java +++ b/src/org/usfirst/frc/team708/robot/commands/drivetrain/DriveStraightToEncoderDistance.java @@ -26,7 +26,7 @@ public DriveStraightToEncoderDistance(double distance, double speed) { public DriveStraightToEncoderDistance(double distance, double speed, boolean goForward) { // Use requires() here to declare subsystem dependencies - requires(Robot.drivetrain); + // requires(Robot.drivetrain); if(goForward) { targetDistance = distance; diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java index 7b354e4..cd2fcaa 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/GearIntake.java @@ -22,22 +22,25 @@ protected void execute() { /// Robot.intake_gear.moveMotor(gearAngle); //Defines move speed from the operator's controller - if ((!Robot.intake_gear.hasGear()) && (gearAngle>0)) +// if ((!Robot.intake_gear.hasGear()) && (gearAngle>0)) + if ((gearAngle>0)) { Robot.intake_gear.moveMotor(Constants.GEAR_IN); - // Robot.led1.send_to_led(Constants.SET_HAS_GEAR_TARGETING); } else if (gearAngle<0) { Robot.intake_gear.moveMotor(Constants.GEAR_OUT); - Robot.led1.send_to_led(Robot.ledAllianceColor); } else { Robot.intake_gear.stop(); // Robot.pivot_gear.moveMotor(Constants.GEAR_UP); - Robot.led1.send_to_led(Robot.ledAllianceColor); } + + if (Robot.intake_gear.hasGear()) + Robot.led1.send_to_led(Constants.SET_HAS_GEAR_TARGETING); + else + Robot.led1.send_to_led(Robot.ledAllianceColor); } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java index 3cd2928..0f0eca7 100644 --- a/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java +++ b/src/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.java @@ -1,47 +1,40 @@ -//package org.usfirst.frc.team708.robot.commands.intake_gear; -// -//import org.usfirst.frc.team708.robot.Robot; -//import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistanceOrTimeOrGear; -//import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegrees; -// -//import edu.wpi.first.wpilibj.command.CommandGroup; -//import edu.wpi.first.wpilibj.command.WaitCommand; -//import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; -// -//public class ReleaseGear extends CommandGroup { -// -// -// private static final double driveStraightSpeed = 0.4; -// private static final double driveStraightTime = 2; -// -// private static final double turnSpeed = -0.4; -// private static final double turnDegrees = 90; -// -// // Called just before this Command runs the first time -// protected void initialize() { -//// Robot.drivetrain.resetEncoder(); -//// Robot.drivetrain.resetEncoder2(); -//// Robot.drivetrain.resetGyro(); -// -// } -// -// public ReleaseGear() { -// -//// addParallel(new Intake_Gear_Down()); -// addSequential(new Intake_Gear_Out()); -// } -// -// // Make this return true when this Command no longer needs to run execute() -// protected boolean isFinished() { -// return false; -// } -// -// // Called once after isFinished returns true -// protected void end() { -// } -// -// // Called when another command which requires one or more of the same -// // subsystems is scheduled to run -// protected void interrupted() { -// } -//} +package org.usfirst.frc.team708.robot.commands.intake_gear; + +import org.usfirst.frc.team708.robot.Robot; +import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistance; +import org.usfirst.frc.team708.robot.commands.drivetrain.DriveStraightToEncoderDistanceOrTimeOrGear; +import org.usfirst.frc.team708.robot.commands.drivetrain.TurnToDegrees; + +import edu.wpi.first.wpilibj.command.CommandGroup; +import edu.wpi.first.wpilibj.command.WaitCommand; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; + +public class ReleaseGear extends CommandGroup { + + protected void initialize() { + + } + + public ReleaseGear() { + // place gear on lever and back away + addSequential(new Intake_Gear_Out()); + addParallel(new Intake_Gear_Down()); + + // get off lever and go for some balls + addSequential(new DriveStraightToEncoderDistance(15, .4, true)); + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return false; + } + + // Called once after isFinished returns true + protected void end() { + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + } +} diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java index cc43d3d..84919ee 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Drivetrain.java @@ -64,8 +64,8 @@ public class Drivetrain extends PIDSubsystem { public static Solenoid pwr1; public static Solenoid pwr2; public static Solenoid pwr3; -// public static Solenoid gearLight; -// public static Solenoid boilerLight; + public static Solenoid gearLight; + public static Solenoid boilerLight; public Drivetrain() { // Passes variables from this class into the superclass constructor @@ -119,8 +119,8 @@ public Drivetrain() { pwr1 = new Solenoid(RobotMap.PWR1); pwr2 = new Solenoid(RobotMap.PWR2); pwr3 = new Solenoid(RobotMap.PWR3); -// gearLight = new Solenoid(RobotMap.GEARLIGHT); -// boilerLight = new Solenoid(RobotMap.BOILERLIGHT); + gearLight = new Solenoid(RobotMap.GEARLIGHT); + boilerLight = new Solenoid(RobotMap.BOILERLIGHT); pwr0.set(true); pwr1.set(true); @@ -188,13 +188,13 @@ public void haloDrive(double move, double rotate) { haloDrive(move, rotate, this.usePID); } -// public void setGearLight(boolean on) { -// gearLight.set(on); -// } -// -// public void setBoilerLight(boolean on) { -// boilerLight.set(on); -// } + public void setGearLight(boolean on) { + gearLight.set(on); + } + + public void setBoilerLight(boolean on) { + boilerLight.set(on); + } public boolean getUsePID() { return usePID; diff --git a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java index 1d453f0..3a3333e 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/Intake_Gear.java @@ -39,7 +39,7 @@ public void moveMotor(double speed) { public boolean hasGear() { if (gearSensor.get()) { - Robot.led1.send_to_led(Constants.SET_HAS_GEAR_TARGETING); +// Robot.led1.send_to_led(Constants.SET_HAS_GEAR_TARGETING); return (true); } else { diff --git a/sysProps.xml b/sysProps.xml index daa7babc2ce9d37362d3b51e67662c6b743f2db3..9e0cf8d019a4bde82d5857ec78c2af495b8b31c9 100644 GIT binary patch delta 81 zcmZ2yu+CsZ37@G6gA0Q(g9(ExgC&Cj5GpV@0YwZMEEpVt&=|;80AdpcHy}0win@Z- YOb%qR-u#5`2s5h*P@CE2wL*=o08f?=DF6Tf delta 81 zcmZ2yu+CsZ37@GkgC&Cz7#c8upaO#1%nxbF_2W4 X9LQq5`3c_!-m*JSfrp+;5!I`a<1 From 467195eb3b7ed1a10e031343ce6cf0a5274ead6f Mon Sep 17 00:00:00 2001 From: jpiergal Date: Wed, 22 Mar 2017 20:59:22 -0400 Subject: [PATCH 60/69] End bag window 3/22 --- .../frc/team708/robot/AutoConstants.class | Bin 2262 -> 2262 bytes .../commands/autonomous/SixtyBalls.class | Bin 2497 -> 2490 bytes .../drivetrain/RotateAndDriveToBoiler.class | Bin 2200 -> 2200 bytes .../robot/commands/feeder/SpinFeeder.class | Bin 1381 -> 1304 bytes .../team708/robot/subsystems/VisionLift.class | Bin 8366 -> 8366 bytes .../frc/team708/robot/AutoConstants.java | 2 +- .../robot/commands/autonomous/SixtyBalls.java | 12 ++++++------ .../robot/commands/feeder/SpinFeeder.java | 4 ++-- .../team708/robot/subsystems/VisionLift.java | 5 +++-- sysProps.xml | Bin 6190 -> 6190 bytes 10 files changed, 12 insertions(+), 11 deletions(-) diff --git a/build/org/usfirst/frc/team708/robot/AutoConstants.class b/build/org/usfirst/frc/team708/robot/AutoConstants.class index 91f5be5f58716a4a67507e8c81af37fc87b48cd3..52defbd492fadfc7456843f9a37305be5b6a8cbc 100644 GIT binary patch delta 14 Vcmca6cujD_5hg~J%}1F8*#Ioo1p5F0 delta 14 Vcmca6cujD_5hg~z%}1F8*#Irl1tkCg diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/SixtyBalls.class index 88cfe27cb3a87283d851b0e5f6fbc8d08751fefe..30c93aa328333a6c814ff393654b61254bf803c1 100644 GIT binary patch delta 912 zcmZ`$OHWfl6#nM+cBV{7O6--8S_u(Ci)c*|4OWDK`k-Q^1%Z}_iYTIDea0>R1u`p5 z+`4jOOt=X~6XVW>d;9^$B@5TenU1$*fs@S4d3@hFbH4c!+lpnr{n`2qpdU{qMo<(e zaaDRr5r7YGzcTB!go8;5g(-n+8yRnXTA~RvTxDxG2+VR7v9`nkl(`zR9#{DQQjv(G zEHEdLz`VeMz#>=k0ju5Qu5;BD1UgYREpG_i_;e%oZey6kv#4<;{n!m!Fj>+ zc*roKi%wGSI0?d3bu_d>;YSQ(x)>hSpF+?0W2`aE5UNkFy4{3&@?pb$?vxctYgQO8 zMv() zM?a#eLav84*GJSw;+3e6L)K1IxR1luZYN}ik0aLWB(KXy_a>55B}HD3hp_9R*T-=S zNmKBI&P2TB{)&%NLB*Cv$v7cS*P9Ix>WoEY$vkV#K{C(TE)KzmOc(q5h75CP)o&sv z*K_zv1AoV5Y-1chaRt9oz+V)ZM2Q{5BuiqdAr?#h6U!yWxD^Y>=r$@lp?BuoBlB#7 lNpUN)OFioUQ?2Q~&j&5+VX`{2&|v(E;cD$+6T3&!g^kSW2R7GBf9%d+yBLbGN&9y3;@YY<~lg#Y=$# zW=+g-tFlE5zzcitTQQG_qb6UvZDN&MlZxe5z)L4^hg!VLt+2A zgR=R10vXKm!Y`FIabI9qCLRdnxlao%V}y^N>Mu2v%9CPTlo$$Ol~RrOQJkV)7w4MjqgxUbC4=ZNg6MZK z@b5(_5?pX`sfmVsb z51chHiRR diff --git a/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.class b/build/org/usfirst/frc/team708/robot/commands/drivetrain/RotateAndDriveToBoiler.class index 4b3c3ceeaf98b08fc38ac0ff076b97121d49ddca..0bd18c3630a29fbd51d28f6a4c65e3d8924ea670 100644 GIT binary patch delta 12 TcmbOsI74uPB%{hksX7h-7;gh| delta 12 TcmbOsI74uPB%|L(sX7h-89@V_ diff --git a/build/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.class b/build/org/usfirst/frc/team708/robot/commands/feeder/SpinFeeder.class index bf0715ad779273cbdce62d9a4000b8ac860f55fb..c26aa0997366f29b105d5ce4d15f34cfa861b357 100644 GIT binary patch delta 624 zcmZ9IOHKko5Qe`V#F4Ri;|m29M08LQMZs5GnBdODcnTLL-heZh*?0&OBPL_w!UK2) z7jC?Uv3kI9;&i&Ys=Ml|f9lJ*cP`$)U*CW>Ck|;U4k@Y$R;bymj-P(YlY9onn&60% z=Gdf{DJr_&ttxvT>QYsW_k3+tR6ixkKw*&~E8e*HIr3r)67`755|Qo;%B}lYPZC*7 ziA@DB8OE31>K~ZE)8U1m4>Q#)lHrOWznuG zb&rGq$%`)f06axEeThmS{z=?mTW8LkIWyn+XTIydx_tNW>o}qu3g@%g>F_Re- zFlAvnUHZd&ei}v0Nc5$~EM7^{oW$nkNaJF`!lH$xi+5L!Qx5&(kB9!}_x{o8#lM68 zEIga942)9Q7!{0D&qM;BkMVX? z=eWx|ZN&&3mvoXMi$bZPsj{u5l9P?AOL4VBZ4qn=i{L!9+ML=vC%Qn$VnUPCf{nId aO9?5RPmqFc%z2fv*Aj&Pauj{h)j5!Qq zjJXVQjQI@8jD?eXq=FesCqIy~WvygjWvrUqFC#wLQrdvE7Raju^IE0#8JmDAL?@q; z)?jS|inoKs`D6@OyMVlIFfR(o>jU!ofxLLZNet|alNopzr!a^xPG^v0oH_ZwOuFD) q22RF#41$dF8KfB(FsL#voLnyJ#JU;irfrk=$yzY(-uzv5I}-q3)-@;q delta 206 zcmZ4IxXy9I6G_=11|!B`26M&`27AUZ1{cN%22aLF1|P;KhCs&H$&6A}f|(3ljM)rg zj5!Q)jCl;oj0KZ>q=FesCO?p}WvyUfWvrasFC#wLQrdvE2FR-g^IE0#85@BrL?@q; z)?jS~inoEq`D6@OJAu3|FfR(o>jm=qfV_CYi45$FlNfjyCo_mJPGgW{oH6;oOuFD4 q22RGg41$dF7^E5JGpI5ym|QOF#JUOSrmd6r$yzY(+WcL1I}-p 1.0){ +// if (timeSinceInitialized() > 1.0){ Robot.feeder.manualMove(Constants.FEEDER_MOTOR_FORWARD); Robot.intake_ball.moveMotor(Constants.INTAKE_FORWARD); - } +// } } // Make this return true when this Command no longer needs to run execute() diff --git a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java index 35507e0..28ccfca 100644 --- a/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java +++ b/src/org/usfirst/frc/team708/robot/subsystems/VisionLift.java @@ -274,7 +274,7 @@ else if (liftHasTarget && !liftIsCentered){ difference = trueCenter - (liftCurrentCenter); rotate = Math708.getClippedPercentError(liftCurrentCenter, trueCenter, AutoConstants.DRIVE_ROTATE_MIN, AutoConstants.DRIVE_ROTATE_MAX); - +// rotate = .6; if (Math.abs(difference) > thresholdX) { if (liftCurrentCenter < trueCenter){ @@ -333,7 +333,8 @@ public double liftGetMove() { { double difference = liftDistanceToStop - liftCurrentDistance; move = Math708.getClippedPercentError(liftCurrentDistance, liftDistanceToStop, AutoConstants.DRIVE_MOVE_MIN, AutoConstants.DRIVE_MOVE_MAX); - +// move = .6; + //Check if target is at correct distance within threshold if (Math.abs(difference) <= thresholdDistance) { move = 0.0; diff --git a/sysProps.xml b/sysProps.xml index 9e0cf8d019a4bde82d5857ec78c2af495b8b31c9..6d423535af4088c29e1e0730ac38d1be44e686ed 100644 GIT binary patch delta 55 zcmZ2yu+CsZ37?`Rg9U>NgDZm(kTw891t8Cm!I8m Date: Sun, 26 Mar 2017 21:28:05 -0400 Subject: [PATCH 61/69] after senaca --- .../frc/team708/robot/AutoConstants.class | Bin 2262 -> 2271 bytes .../usfirst/frc/team708/robot/Constants.class | Bin 3333 -> 3398 bytes build/org/usfirst/frc/team708/robot/OI.class | Bin 4265 -> 4031 bytes .../org/usfirst/frc/team708/robot/Robot.class | Bin 7083 -> 7194 bytes .../commands/autonomous/JustTenBalls.class | Bin 0 -> 1742 bytes .../commands/autonomous/OneGearCenter.class | Bin 2277 -> 2261 bytes .../commands/autonomous/OneGearLeft.class | Bin 2375 -> 2359 bytes .../commands/autonomous/SixtyBalls.class | Bin 2490 -> 2534 bytes .../robot/commands/autonomous/TenBalls.class | Bin 2324 -> 2268 bytes .../commands/autonomous/driveDistance.class | Bin 1073 -> 929 bytes .../commands/intake_gear/AquireGear.class | Bin 1176 -> 0 bytes .../commands/intake_gear/GearAdjust.class | Bin 1340 -> 1340 bytes .../commands/intake_gear/GearIntake.class | Bin 1597 -> 1340 bytes .../commands/intake_gear/Intake_Gear_In.class | Bin 1302 -> 1052 bytes .../commands/intake_gear/ReleaseGear.class | Bin 1096 -> 0 bytes .../robot/commands/shooter/ManualShoot.class | Bin 1319 -> 1319 bytes .../robot/commands/shooter/MoveHoodLow.class | Bin 1035 -> 1035 bytes .../robot/commands/shooter/SpinShooter.class | Bin 1244 -> 1244 bytes .../robot/subsystems/Intake_Gear.class | Bin 1331 -> 1331 bytes .../team708/robot/subsystems/Pivot_Gear.class | Bin 1689 -> 1640 bytes .../team708/robot/subsystems/Shooter.class | Bin 3070 -> 3019 bytes .../robot/subsystems/VisionBoiler.class | Bin 8428 -> 8288 bytes .../team708/robot/subsystems/VisionLift.class | Bin 8366 -> 8357 bytes .../frc/team708/robot/AutoConstants.java | 2 +- .../usfirst/frc/team708/robot/Constants.java | 14 +-- src/org/usfirst/frc/team708/robot/OI.java | 18 ++-- src/org/usfirst/frc/team708/robot/Robot.java | 1 + .../commands/autonomous/JustTenBalls.java | 65 ++++++++++++ .../commands/autonomous/OneGearCenter.java | 8 +- .../commands/autonomous/OneGearLeft.java | 4 +- .../robot/commands/autonomous/SixtyBalls.java | 25 +++-- .../robot/commands/autonomous/TenBalls.java | 12 +-- .../commands/autonomous/driveDistance.java | 11 +- .../commands/intake_gear/AquireGear.java | 94 +++++++++--------- .../commands/intake_gear/GearAdjust.java | 13 +++ .../commands/intake_gear/GearIntake.java | 10 +- .../commands/intake_gear/Intake_Gear_In.java | 14 +-- .../commands/intake_gear/ReleaseGear.java | 80 +++++++-------- .../team708/robot/subsystems/Intake_Gear.java | 4 + .../team708/robot/subsystems/Pivot_Gear.java | 4 +- .../frc/team708/robot/subsystems/Shooter.java | 2 +- .../robot/subsystems/VisionBoiler.java | 2 +- .../team708/robot/subsystems/VisionLift.java | 6 +- sysProps.xml | Bin 6190 -> 6190 bytes 44 files changed, 246 insertions(+), 143 deletions(-) create mode 100644 build/org/usfirst/frc/team708/robot/commands/autonomous/JustTenBalls.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/AquireGear.class delete mode 100644 build/org/usfirst/frc/team708/robot/commands/intake_gear/ReleaseGear.class create mode 100644 src/org/usfirst/frc/team708/robot/commands/autonomous/JustTenBalls.java diff --git a/build/org/usfirst/frc/team708/robot/AutoConstants.class b/build/org/usfirst/frc/team708/robot/AutoConstants.class index 52defbd492fadfc7456843f9a37305be5b6a8cbc..a416415be44cf6a067136a0773dd90a5ec583425 100644 GIT binary patch delta 837 zcmZA0*-AoD6b9h`Xlg|Tl2$g4WTRzP6h)4qlogsKO*YSSx50S^@wOM}E+GiI=&Gw8 zpxfRg`nRPn@?zt+_P_QzoZ-{@Wwn2NzrF$R;I14-Tv%{v!ByJs){qY0mzljbZt|CX ze=<6+HB|YMk$5WLi-uypR3uo68x56-xL=lTGY=(?#(f-Q!lq~43J0oTg9bCtF~CmO z2-nhe!VbD#xPfjIZlaroTj*BdHoCoN9UUxm!c@3`F1q`lox(lb?-N$}eqpsgP#l0k z+9f&m>4ilPY6%aQ^M2qjIfvXi}M0>FmIi=Tn!9~hFLl+ z9HHm(4b0EeQQ-x8QRJ8CnAlhOxUkAE|K)Y{%+-K|2&je?Vb!oI1|;bV1Kh&9xkHHM0zU7ROvGa{o;@ M!6~KTjH?0XKZ%$<$N&HU delta 827 zcmZA0*-AoD6b9h`Xh$O|FtxIIpveZyjG`!VXs|L;Gi+`~e7Gxv85dSuT5*+jdNoIS{yzKhWbVG! zQ0Y&G!XsAfU1G03Rc_?`_@8cj7)t?P3T(F@E8Z12B1Uu~zcGA_t zHFT}8i>?!{ryGPD=_cW3x}|6Xtt_-bFWf*o-SN+z!d=|&5mtG(u-fk}4nQB>FFZhd z3N}m_WMQaKFhK>p!o##r3>cwDg~#Y|;R$+Dc#57D=lSVC-Uc7J8W0?VqfK>!YUv8%Ny#Qs{wHlPz|fXsv#i;tkFrauk!1{D!+lv!YkdP zw}p4;)UQ*yk8YQRJ#m1Yts3}=ay?|ilQW>ZU!Y}kEk|4}EQ3G8G1v0kwT=^wkv6Fy}Z3kZ* zeBG_7RtmaF)vNtdR<$T)>3M5SpSJtXwx!w5pThA%)^)v1-p`5awBEMQ>ECv1%w|(! zqiXm2 zDwMuCr>vj_XV8H>3SZ^^HPL^az9D>`?n8eV@FsmLbislt_+jDDw}nlhI}zWFctAXGQ2$9Z z2PXE2sG3-#!b9|!_#5N&L}couut_-;xqn)ChWqy_4$9|tzf!;~8|H*fzy}dOjCfwy zVSgY3n?R3*7wE@$^6#7j3+CJw!@}XYE(tGle?@qeek%NoelGliekr_0uM5ATUmtmd zukr>9S|l`y-v}=-s{%g@uA6-Mo681bP2Zt*%U{D5*Eq|-F}&w`qI@002YjRyK5@11 F`7gq-YeWD5 delta 961 zcmZA0%S#n;6bJC{Z>Bq=rnvDg6vIV@poky|feQ^auO?l5;WN~-T~eAo@HLjN)HLm9 zzMthXBDsseh07K~e}pUX9}rj4_jfPOJ=|IRn9up0bLKGfo4;9;S;3R5qhkQ~aF7BU z`!2q__;DD_P%1^|saxtS5>mxVd3w}Z2-rZ9rBm(pqS8wi@lr@`2!+FqmGzy~PU*nl zY1OZcArY)_%I?H6^|XE0GywEZ`@TN6Uqt3_Tv*N;))jJfiJPl`yV{Eu);zm{ZP1y4hcV?tA%UmM+o@!we(}*FkL5HPdCQxp^1TJ(XfSXjVBf}4e2FSA~Xwq~qX!sfAk!Y038 zjQN@#kX`9F!e)xM3H9&d_VAtwgYiK0y$lHtbAMFW4Cp0zEWsayUFLrj1Dk=yeR~!r z7?{MA|02zYnie(%pM+=VS>ZYQv+z8?7436a2G}m1oHks9Y#<4CRc}H{%+Xfni{iG>!Y)?}d;bAA*kmpM diff --git a/build/org/usfirst/frc/team708/robot/OI.class b/build/org/usfirst/frc/team708/robot/OI.class index 655c4e127db46c722dc65ee4f418782e6311952e..e21fcd9640624ca2df63e039cb4c3af87df2b701 100644 GIT binary patch delta 1586 zcmZ9MTW}Ob6o&uFB-68<$<`)fOb8lp1c>0O2^MT(LLwIB>Fsl7j$iU! zWBB7gv)=+}#Ww<>#Pyg;pdF71?3F0Tl*B&l*Pa6skK>?TJt1&NLfY7q+Vhma(-KKc z2|Oc_vXN(XIsN+rA4n|KXZ=vZN#i4(cU(U{ z7WhQqQ;9a55co`@11AMOmso+5I(|x^pgNt?UQJKmK-XIJx3g32EBninqvMl9V`{%U zp=!#{R_5_gfFTS!SgET01*)Z@v91{43!DycH*x~g0cJGZi(!@Yo7GQ#P}id+Mh4f6 z3~d|i84vKKPPmT=q1UX=RP+;5R;Wm?! z7PaoyNFps#e(%;D0Y>QfS+u$L&?f!W?gaN8^E0Wg+?M?I$p8-`7hs!lcKh2k+;4U? ztMe1p-UC{FnNi=6Xs^m+Ho!`(3a}ch)RDx1mq*FLHB7ij^~oB!aUwt-Upr`xTy^dw zhKr+eu@km)*nrDXuNAne*CMoYu?9E5K@ZnuxRJaz#=XqD>3`f8<8_SR9OL!e-yh=* zEG# zEstH;P4cG?F@t5DbP9 zGI(i}%bg_tL$i~Tq=co6Z>Y-3WSB{r^P*T(g9p(yGPXv26clFTRT0_K@Lo*)jIA** z3flUOkql$3!7E;&MM+&neaEJRYhsI|7>TiTq>{2n?bbK$Ai8m`8&HXPsO6hDpKoD{ d%BGeyY{IX|;&%@9pV;hp999R9GPewS{so1OIavSz delta 1849 zcmZ9MTToS17{~vc1AFbg*vC$x5Js6&YJ@2UDhUUVL84g@hz3@KL4cVMcuneb(I_h` zSNDtAJt`_W%1KUXcW3H>9(rt=>7kjXhh}=KscHJJwYRwIJnV1%zW;YwYp-vgle0!< zC%^e;;sk(loDz6IViks6tiXc;4@qQWSYkgO)}BWs9>oE@dQ9MP3F&K3XwN|bB{2=d z0#8cBeB~*vJT35y#B{&tvjWda6!`GGzzY&HlRmvD@RG#&J{%HwS>i$;4hy^@QS8I3 zy5?&FuS?AHJ#PrSDN*9XTLN!OEbw7O$G#)*u0)ydc~5&r1>Tpa@b`GYP0;m$z=sl* zdizHtER5;6lzto)I3_SIQG>L=M-nS>Twp??7RR-o5%^dwu#Snmrn1}?m*X;u8u*~5$P|IJ$-$hiO$X22e(<6b_Qzuc5YRZk>7KN zaF>T$(QTntC9Dfn+=;0_v(G*66AveF(nAk=1wQrgnT9PoE*`|qn9*eVbgk;@81V49 z4!9lNDq)wXA9EZvlCviF3+>#B-ZNP)HCJ6`$0B_uw#M$)a#c{&Rik!+J*fLEpK|GH zRl;%Wd%Jr)Yzy_M5>b1*&aVsy7t~K3+QSa?df2QBE}4qiA!>KQcj`*j zfvZqO9Vd5}&fXpN&(6J5`|kK}#YrbBTlzf=X!o+Is*_GtYzSX^sK;s#Yp~ivsahoS zRhhdyGK8;GpS#o^!q*ncnNzGL-Mq*ibfkx?x+08_63(tP9)_V%^}z z5Z}ZNw1>Ebd~=9(zYcQp^a*u?O`(8W$ekhXVgXLDc|#mmV|n4m@|KO|*ANj=iPuc zj0jh-T=kuIaK1B!i!&&0P2-|*5awnuk1&56-WV>)poDNKLG6#ut)PB+24!?DHo@f? zR1lVoW9b-{Wl%}Df^ft%P4d}>eD!T~VR9D~2l+7eV3b>#;6_d%iSKa_e!{)@4fo?O z?6n;1qX+Q(4N|#}oRO@O7id9`{6J(;iiLqFOd?;8E*jVU zS(Puypx>h?Aiw{tpbR^*%$y8rbt0)QrSC@{BhEZ(rGZAGwlL5lMq3nUBx<}W(=X64WntgHZJ>aY diff --git a/build/org/usfirst/frc/team708/robot/Robot.class b/build/org/usfirst/frc/team708/robot/Robot.class index 78eeb8b4bda772bf39078606814b307a9dd0e2c3..0edd25c61076d53a9e818831d675b3a59ca63203 100644 GIT binary patch delta 2146 zcmYjS2~?C-6#nkaFz@H_SQ=pfK^R#=kw6gyQBn{s&AswyYUhx0Jk-FLf~BQHd)cD( zx7warmI?+YBxYG?Wu>;*W|p>Txs|0>rgh&x6Ehs4n5*d}2^S0wz{uHhYlcO{$w&3l^LA@IJ03}`+O_)sD`AnX*_B@q`8b_;wY(IX&y zEbxhhJ0N^2uty@<68!i~;B$%8z|j{1UrMA0gs%klN@N6tuLbr=WCw(A1iqE%6A<=G z9Kd%5zSr~zi68NklU{<-Bo=Bm zod-f5gL-S4At+N&R$Hbm*G}iRjgL5NbFM=(p~!49+~)C!G^y}BRw=xIRpw&DW88$B z73HAWTppQcF15)BgMWwqC#U3L9z zMI}@!Xt1I(8bVN&-o~2$Z3GQfR8AL~Tch&wpTV;VFJiT#VKiJ(g@#JbPa|~xDn%n{ zl%k8Y=3<_7iW+AhO=HY!)D-(AOuN*HI5nnmeuHN~e~+Frf#XIOI<&5BZFC8#bu^Y> zpFFaPP{l_%raRW3F^$I}+&NrB&|NIZv?W=ni}`f64~ug0Ql^)VC({H0}VG55vi6|84n4D5_W zaNu&p^6h&iXa}UA6>TgLHUxc26Iy7!c_?8*wzhKfD*`+fv|5UIyo!x%O=u6=&v0k5 zeUm#eB^1@w9knB9)yfaSdb2RGBqwB5AGCUnGdSTGV2@7WxSN6=%M(+>YTwBgyZ9>a z4y!$?J48y8#ZDuM=~p z#baJO8Um^aS7Rp@Ol!w=8!?qlB3##ZVj;_m_}q1a)^y-T*JAC>OsJDG#F))JQ~W*o z(M?4Y^@2%#u#)hON8Uz=WAc;zmMuU+>WyqzW=uhPsL>FQx4GXKT Zyt}%$xE>qc=9{2@{RmG`Hl7@w{2#L8vqJy? delta 2047 zcmZuyc~q2D6#rcY=FPl$!@vjw;}EzZhKLIYn402V+0n8**=8J^iUOt-sLUG6R?D(J z+icgYj%Y3@n3hGGW#!VIZMIsOnwC~t)_w0AnE4~lncrRBz2EQNci(#~u4pcgZauzn zGk{W>C~+Oy1zwRzLc1Gt@T!K_1YVbL+MYMGwngAg32A%Y64)x?wT-t0-jPVNjdumM zNp!J|?E*U_0=BVJ;5~_;F`{^1-~)*qd+9@gk0kPJ<70tOBzoA!rvkeq@@?ZYfzKuS z*v1zUU*anlc5C^y#5ed>a^c@;_+H`%?9uR}Hh+@%8GChGzvwRa2}Jj6>wpWtN|fWE z#3B6V!tWA?aYWz`z4)hI*`l?-blXQY9MitPwf2w1as6>8{&kMn%{$3|Y!QPb;x;vS zHRNc>(~zd2i-tf{V-F4aL@r7ah<;Yz=YThTA#3$UnKJ zDbg@~e7K4u=i?4Se`}{V*P840q>c-RXXp>ygqsOP9d6gev11hOg~cp`9d}}Z{*1L- zI@QFQiyIW~!rg?y9nrjy>R5<-tb;Ot@*>Z9mHDpc5v zW`!5gEU2%JDpJ%>dtT6=oCUmWn)96K2jHHoYieg zxHeqfP!p+FG=WaFd})*Dw3g{;U*o8Og`WI+~H^<7Fri_~f;dah1QrJwy)xK|JB;F0oV9vvy#k8d`HUQwSu8gG=wWC2lJ=^7WKhW zD#Qxvi}if-YFxy}+g9Qe=Gp<2( z$ApUE;YLgNA4)0s1%aQ+kWJ;tr3&<-At5-!6_H|}bL{W<`+Q>O%a4zr0i4IOg%MmdamjG*ITQhm znQw3O^VUKJlNL_kvWY7edQmVjW#X!ZK1`dKG2s}_!vq5hJN59a;S6mB_MxD`b0+2u zXFQD>GvAwrllBB0MA5{8;S8n`3qv~7qJ?42>zaw{43_YP5^hbrr&ZOS+Bdk7us&5q%Z3-3hkvRR2A;exwTqYU@)dMmubx@TqHBxM(NS=RQWO;wQ#ew8*P zD2h8_7bExQ4oRZfXay#fv62wg-Y$^EhoS>!PaT7~?R^fLXvrzVrQMiLmpDT?%`gE$R+ ze=&Vjsnx)*ba83m>#-PY>=QDpIrQYPttW>00oy6kySgiemD+u)MvNV)y_06{j^@b8I+Xu^>g$I_AE)fmUg{6&78u4dpUX&lA?DLzVC z$BFb5$yp+6jU+t51YY0_Ug2z;$k$DgSsFdl6nTnzEi%*dPPc8_bFmGXX(7+Hw&$<= WT4)2Z7VzA^fzBU*jQ(Gm*M*%i`vloNVuv|VVzIW8RrFko|F*my&WjkAt{i-D1Wfstb}H~V7_E*236!|e>llbJZwn1dKZ dCTnxJi@GrUVQ^(+XK-V10BYrdD(~jl0|1{34)*{6 delta 98 zcmdlkbX;h{IW7+dFko{K*my&WjkAw|i-D1Wfl*{KH~V7|Ru&Nk!|e>l+ZZ^sb~6Y? t@^5Dlp8SnnjX8`#bh12$yQDM2F9sJz4hC07VFot_2cS_rQ0>(mdjJhE6K?N}{+U@ze`|FX7ArbdH7id5UE1tVU#jaX12L=_n8CV^4Q=+RbZlx?`m+$z zA{AhuA6q)MHS27sAmB816j@%!u7N@9XjUpxY1UFC=(ufQ2=D9oK*t@;y4`ZUfE^us zn)P}MNGRY#&3d^7j48l2Fs}AeFmM$s+U##F+MMT}p`P5pBpFzjTLxtv`wWI~ zgfHx>_>?pBB!;&b;`6dZi@uC-_)1VKa5rZcs)RhBkwv?@WxGPHn_%3p2#;YVBi(&7 z@XEsVe6#EpO`qGfo8uFvD+|&$i?UX;oswtTfiE3dlYwVu#mD|9b9S}rO)+TGDw7$N zk(VaXtMF2o(JtM&L-Hx%_}q1ay00`wRt9d7r-jO_?}+O1fql>J#UhdnYhC74a>YIF zyS8x5loGQ_-mmyMx!@G37;Z{sb;;r;T;DBNA>B)0}>*QpL@4K9P$!b+7PKJw} zndYUVqWhkTewSgZvw6GHUGHku&52sLw<<%jOLl68eV6YQsD0*gB&$~LEjudBS}z<` zq+wnP%)`1cqq!idDhda!X)w2K;m=2t!SGg>k*mD4Cj;NiazC?>Qqd&CQkTxhin1Yn z+viEA6!ttP=OoRN%P`uRDoF#}ZVAI=XX|!1yo!`GzGk*AoNOdBOmyj7=A5Q5^i7B2 ze~9bLdOPk@HhG`hZmY?QB=2q38PZ+m-l5_dQT7?;x+H2&+`p1p4Txm^f0Cr+p~EoU zCCg)9Vhkglr@cApi>?f)ep(`x+Ewq{XYEoc%RdUZqh7?slE`$$Go_pr%d!%5MVAWS z--+;XifGqtmwuC+NaKmQ;Vn97X6Wcs*9pX7Aqgr!tw!m~)c0Gu#V}8IEd*YJIQ69)^@!0WXH;592qiUUhn+{ DPveUbhAxC45(Ko16-)sQAV0QHgo3gp9=zipKs<8rtiI{6K-9!dcIJEEd*8g7_uf``BOLqkbK@g`ZmdYe zkrGIAC;f;RfDdgxSKkW>15*+XrUfpn#;oFuL^)=;(^ravz#MnVG?u7FhC74W;!e^J z$x75CBaoA5z`VeMz#@0%eO06KUF1%yPqZMTQeG0c%$;%nxR3%FK*B~|;0kx@d_jjg z;i^QZdc~5YC#Cq%ckLBemgrHAYZ85Gzb?^F0ZxY>a6{mx8)n}ENsPGLY^EZKTa~zt z0>ha5DiCqEjSBaP5$8$VVThNgPeI|%1Zs%7%h2Y&;f<~v7$x%_!}zW!WIisd#C>(r z><$^DEDzqTnv+J+v=eQ!45mG-wu=1HQYycaFBFz3T-b?3j@&pzm57&a8ia{qjDR6Q zc9edm{xw<*jMBpMILLDipbWDA=%EJMT8?xNPL5&+JvdKfUwpz$)^>Abz5z1nd z)n=g>G%Z9uwCk7-Vvl=>X{$5qp-aPVf+sX=$cFY()RW-kZt@eW$w1W#$$PjEnI zRj(Pe5Zrm~8j61Ha;T*`HB*TX6N=D`MQK{vsd_Qw(1ilc&_nd%DY4HmfS1&i_f*r* zRMW3GgH23e3uo~IllX-clSs1~OtA>2_xi!?oqm|4m{9$o{5VEHbe5rp*8V diff --git a/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class b/build/org/usfirst/frc/team708/robot/commands/autonomous/TenBalls.class index 2d7e7a54dad5a10b89314b5b09e77f8fb5bcf003..1f5e60aab9acddb7a9f780a006ba8ff3ff7345e2 100644 GIT binary patch delta 750 zcmZvYO>0w85Qd*~lbmBuyU-9Mh|-9WRui>WTeZ>TCfX0%YOl3w)2i_U{2LW<=Sr?1 zx^d;sjTCx8!L|4Uib59JU(g>Q#W}gn2kL<{bKaSG=e#qo(#?Hq-*!HI0nYN+a)z4W zvi28!iGZ&Bc;n7ni^mnqD3gXMUHRF{qW#IIt(Rfi(#MS9s%0;;hB-@`dBZhJ#`U~z z+3);mIKE-|JE!fI+L47~nuN9FoUtPXIOdy47Z_t<=QzO}w>PPG4)QVajmG!xkA}QM(LoqI>AXmBjQH;kqvAPw= zabDg7agqy6xFSTVSRtxF#&g82a9ckMpPTH`U_Ha(h$9>9IsTcvpra8(8yplgEa*@M zo6K-5q7au9C3qs@RE$RI5vS$Z6*5aY{A~(rp zAC&c?;2$7(5upnT-UKOLyr~rNNn=Dqiw@AvI{Z+30VqtxQ+uUBt? zUhWuXlPoD+s^)?P4Vti5R1PQ_+iyrlhNBVQqQJSIIZYkwvV4V^aEl=eFsK$it-+CLQo z+K(-UEYlt{+Rrqoc}u-wq(S-aRgY^5Q(vgxtIyr7KbTj`-{0vHMMX9E;8r&$DRDi? zEOUw>K@JBaPFV;y6nzqQ2cgrRC~-4bbq)x8OHq#CpNUK`koc(Qt#CLJj=5{XxUJ~7 zjF*!wc{Np#5!=;*OFu;vM z{V>^DOJmaPazomJX>aFjrvSS{_N=fe`Clw{G4m8W z3BnE~i2zHs&u9NXCbLiR(fjAiD==i+;poP!N2fAtI4nI!i;bAv5$m>y>5ncxf|SG` zn*DalX2KQ&!l9NSg%1oJ_ltMsp&?GA}hM zKYA?4ThH{M!(!P*RVD>q36bs!-wpDI8l4I~jBAbgu%~VX8LY7#bGVMuMCL26! oZFo3nAZ>+QsXSEXZ)*K-_rnJA$9>4^U*vD#@jpPrT4^l%0{Y?|;{X5v delta 534 zcmah_%}&BV5dOBn7HU;Q#H##=qEJ8~YT^-0>d~J>G|?M@M)3d!8&4)Y1L*@8?_P+B zCYtyFJ_S!=oNX0*(74IW&g{(h%{O~54}yE|A1`kJwop_MMoPvauTn0K0tsmalUS0m ztUwmk46p9HRbCmofr1cLWUR`__BV%ILxe%M<5JSzX5(WTaw>G>8FuUgRtX$mF&y@L z+4W|(bz@rHdaGSBM0h0P^9!ri*=;vEO|xsXuC02zVXDwju>0(>$-r}lai*UjO{&7q z_yGKvLIe!clo!aDumL#>J|~htY{+QZ{Q_@POWU;Nr_(m6`|88lqgi+ zGbWzEfB0eu5O$u%#tEH70x6V`@$i?w`2CopK37YvZp_yx#l5g{!33A1Q5!vFvP diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/AquireGear.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/AquireGear.class deleted file mode 100644 index 752cea8c495cf03d51f4fa9c4afa15c58017c723..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1176 zcmbVKT~8B16g^YQR<;GCq7g*=0&NSj_>oA0N(n23q!E*nCZGwKc84;!-L12`nE2%1 z(BI&TFOq1Y@BRb-jPcGc&^6IW++=3&$DDJ|+&kZYe*OyJKJJ+qLOF+uQC*+_ea6y{ zclvv8RL>+46B*2y7{qK2w@u{r`MDe{hN7e7fvAUy%l2Ma?+W2CFq>g;#rJ}cdtrmS zkzg44?ck>D2&0;igJB?ylox}IZ%4Hm@;YdXwh|&Rs*ShtX$DhzGL+nvZ-}+8RBkY2 zSA2(@;hOZs)2P!FYLhoziWF;pi@Oc3r1p=3*>Fz=3`;d%wXG=Fl`06WUDdKe!8;G; z7cAvB{m^RpoeuY$z>;3bUy7Z!;L2Kl6-g!5$XsMF9%?C%wWMH`%wSJno+NG4Eh8D1 zhSI&>P+GIDF<-zP++|okWuf%#*ON|Ys-1O@;n9C^^sdcN5l&>i?n*0}0a>nW?jLvF zT1h6bru?YOkSp2twynpV=Z^D?EAG0&C6ZF@R5Xj_2CmT)9-?=Y#W;p>mR{Znc^UMR zUrhPu$UmR*FOYvR<&O~}i%XawhReh-LyPJ4F{YcO-G~F@xI%UzN#ZIA&s)IyOmQwb^^TlZ{XY?fDE@{U8P@J-vBTG diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/GearAdjust.class index 2e8254cf1a0f0a75a7afb2c9b095eb0c7010f2ef..0e3937ab84481ed308b32bc6858c5da947251e30 100644 GIT binary patch delta 59 zcmdnPwTEki8H=bk10RDPgA{{4gEE5wgC>I!5E@VRW(i=lm^_EYj@6cdjlp5^eHI&5 NR|Xaax5)~uG5|&~3e5lj delta 59 zcmdnPwTEki8H=a_10RDjgA{`bkW^*RWKd@?V$hiE%@V+I9tvI`SycuA%sgr@l>} zJYyp&3M5$yg1RY@MMOIyUXqMTxaJs&>O(tq%$s{;#trC}5B`XpW8U6DjG-5hq=__8 z1A{UWUR^H^9k_vsO~xb?nj}%fEJ_q&j;0*S7fPy0Ze`5VFiS(1c9~I8pJa`t?!;0n zQEGa?kl72FoMK)0Fs8RQf)G8reLtqbBaOvKqZ?}IEg$Ls0s{(q5EJ-&bB0O~wfX~= C$1unM delta 805 zcmZ9J%TH557{!0n*KKcy(pugq4@D`r6^c+1Dk7y&AC)Cr(%2@FRB8k_Zu$?HxadX` z_iWrylbRSGd;b%6?ltN+x3x6fn|zO%@0>Yj=Cl1p?|uLC=_|0zLz@^gA+B=GV%Ek> zBE%eyMbak4^}x5EGAEzu=1o{I`)Qj+ZkTGxCd#r!#^UB_&aWaDh+C{^Zn3Ix8n4yF z=!@fn>O!IPwDPP})~u1WxUE^|PUDqIIUAb0Y-)1EHCs$-@@!k|XbRlZ+~7eAP;MQ88aM+l^nIuvOg7XBDaceO-D*_^5JN-aoGG%ea6N zxw$<>RGQ6d^`Lb4xUyBN)`U*wm=;Sh*L47e7?L<3{gPxQ+3$Qrol4d=y8!3`toq3_WOb1ajONQgxAIU0_RiyfU}j`0E|6kIzQlyraK~e}G^M z>x7WhEo?W2-x6t}qk$HECuk{~M5H!~y{=+MG$U1zF(O;M1& diff --git a/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.class b/build/org/usfirst/frc/team708/robot/commands/intake_gear/Intake_Gear_In.class index 1e264a2373871f77ce285810d520a84027c1c40f..379d19023ed4fd1ea8c3371cc0cb5d40e2ed1377 100644 GIT binary patch delta 503 zcmZ9IyHdhH6o$VIgbiy1uK_P0D1soJm!7fGmvHQ?uz;Rt$Yh4f&eleY6c#>!g^%Eq zIF2WftQm{_cjxT>-+%VZ&7(K`_<4H=&gmOG>ScD=)$AGeX(ZA#Xbv3M|71UYog%GEx1&u%AQmg@8x_dE4foIB91&<0%0>}RMxm|jh7S_M(-7; z8dJ>tvn;(P9X4_h&q6i?F5ODhQ1&F2SaNdq?Kd h%`voPY+J@z%5VoUr9Z+F(3dd{a)4}jieS-d?H9J%C4m3{ literal 1302 zcma)5+fGwK6kXHXk;CalKoGnEbJ`~!c+xaXYG*2Gl$uxHP7ueH~#J?H1|?>_*nV#7uT_xdo72^*8hTbMHI zvy!DN+bEdx0%mNaF=t`k!U99;iS(p?$`CKi?K32benl{3ccdp?Hfkji zyy2xPoeb>wWnSIqfi(NpVL~5E#ZcVwgCn=04rQRUdl-~mEqHBX`H>s=C11N`zgFX3 zMY+<`{8Stq2_CrHQT~GRgKh6IgKdOJUX>rIoh9Cjazj&=-qXB%y36aWp0-q5RH=?d zB^3RZqVOp1Cw378jk-4f*n55>D2pv=#1H=6Z0UrbaR*uCEG#;>k0lGPgJp~{%=W%Y z(f5?*o>mSX;Gu&Rea8w4Gu7Kf_XulKP;usHyG|(R@~WH~Tk^CV9-288Sm(%|8>nzV<0k6rP9A zO=-VQ!>Y?OUx)94VeRSyUxhHkPWo1^tgi#Z1bqt``jmha=-DGj@jC5RXl1k}=f8n{ zr6h&{iZ-nvNP-FnDRZJC4B-at5*Th1EYRK%bb(C=5Uc}aZQw{7c!YRZm%l))iTF9v zlw_Moe#Ss}l)8X5glkRMMpr!4HH;+X!|1~Z(T`!2-r^+gbhXO2THU0&1Y(03ilbB+ zU3ZaIBQ6&IVq(Y{$sO=;TT@aJX0JN@{;_Xhba;GHg`?)wJXASgJ6xkCkIbg0~+(d}6Dh5k$5V zwA6Q)>#h35G4<_B0)m6+YofA`7MBPNXAN zEr^vPwx!mV8_BhP!cTby*D=lT{2yfP_9bdrN3Y^2gJl#L%Kw?E5}f%N6m_b-F;lrp zo{C6u>Dv_zYZ^CO(SGp4cc@9KBEyLLj?j-SF>H>R_ktcUl!P1GXB}zx+epZhjgw!^ zv&;P^?x-N{FidgRt%@bv%@xlkR8zM+R~lE`~panBP(O&2Pa!(ttaG{M>4w5DJn zhiTB%k-tKl>HUdJ0$0hVdj~n>31|92T*HjMq&rVm6Pq;anz&Z#f|b4?anMEb90tJ@ z!Sp#yf)fXMT*_n8=wgb3zl+S!p9D%|P?;>HpTiBTVs@nH+MuXGk=a4fRr>0piR4FZ jN94|rFcU-O+)(a??_3%ovLW&2--*kAATr$Q>6-rui^=#u diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class b/build/org/usfirst/frc/team708/robot/commands/shooter/ManualShoot.class index a6aaacf505801a9ab2aca4a3e9f3c9d3498e1d37..b5c75ed436e64f6e0593ad9606b7e5aa673c3fd9 100644 GIT binary patch delta 19 bcmZ3^wVZ2$6eG(<={?MhOq*{o`!fOnIr9a6 delta 19 bcmZ3^wVZ2$6yv{*(tDU0>o?zE_GbhDNSOxp diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class b/build/org/usfirst/frc/team708/robot/commands/shooter/MoveHoodLow.class index 1db3096920368486918235316d415b315b32fe31..65baa893ddd5d03fe5d7d73003140c704bd867df 100644 GIT binary patch delta 14 VcmeC?=;qk)l!=jP^D`z@MgS#b1cCqn delta 14 VcmeC?=;qk)l!>u^^D`z@MgS;M1pfd4 diff --git a/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class b/build/org/usfirst/frc/team708/robot/commands/shooter/SpinShooter.class index 31f9f6741700be04117571912bd77a00ba193e45..e3935e32972fffe46ea87ea9cc41b4993148f364 100644 GIT binary patch delta 12 Tcmcb^d53d?3M0!#)$J?*9peNQ delta 12 Tcmcb^d53d?3gf?xs@qurBEZhS`EqW%5&I2UZOR4hGH1S}gvYx(r+l`V2e_ u#*>>^JXy_w;+B&yusA6?0>zyfBpDcha*RNdn?Z^}8b~uTr~yeP26X^#T@B;_ delta 99 zcmdnYwV7+fd}dxL1{MZs20;cH23ZE#$!nM`7!@WzWp-dyVc=j;ovg*;&#B44#h}f= v!=OL8iN%xE7$|N!`2vfRqAgI|o~j*=j(Ni9sCzWHb%6 diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class b/build/org/usfirst/frc/team708/robot/subsystems/Pivot_Gear.class index e3f5cf303846d36b9df639bfb4128411d96e8f20..6135b073c2c5f1ea4a20862ac7f7ce0f08cdbd19 100644 GIT binary patch delta 646 zcmYk2xlS8V6o$V$9(?iW+A(I|62gulY=*Fz*bw$biWDRs09??3gb-~yDjMV>K|BBr z4FaJk1rIzZzl3VJkYO|M6Uz8Fcq zSk-UCK#W0#tQxiIVOQFN3}mX#T8 qr$j0dZ19&4oA38~y-AihxezH4bav>pQ_{tZd_5rzMg^G9*S`S4_&4JK delta 743 zcmaKqO-~b16o#KWGxRc(+s2gPqtp)&M5RKNicqb#qM}t0OicU%wF?(Gq-k8Z>2EMy zh%v6+xFH&1T%c=ziHZNgcY5EJHmurEPSs|GAy4W@Ies(D^?(~xG&eQ36v6I`S5bR2 zYDX=_$VMaDDK^@zW^sRKOSu!|y5Ci`K0(zm#<-zI&TyMG%^kx!_YDuI8y;H2Bc=@- zY%0>*7CO~@*@&JuTbjp)Ew&Y9z%t(e}mUA{!+;u!r5YB%gbwD~K^Y%U3`-ta$l6`leip7B{!h|{}o*|r0wr08K z|HD18_u&}s((&9L_CkL`D^idx*SFtQuejK!R1!)in@!sO k%E+^$q4!7?(o_dXnWSY$Mr?mifqU_(O77~A%iUV;F9_a9bpQYW diff --git a/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class b/build/org/usfirst/frc/team708/robot/subsystems/Shooter.class index 76c309871a2188f838215c722a7215c60e88b1a9..d41399719054647570a8ca08a00cd2b9f36530e1 100644 GIT binary patch delta 1590 zcmZ{k+jCP@6vlriY0pW*X-H#-600E;wIxWYq7=bGESFMRY_SNYC>D|wqS%9_RtsYA zO1hSbOcY*8cYQt-VgJxBl5$ z`Q!R8zX1<$$zorO`*_@9zr}$VVV;Q6OVsrJM(AIsM7_hmY^|pv!Z*j)v zEU((U#_Kk3Flh58+ic!qv&}i?EZ(+xm-lSW^S;doTKXX$*?g>~s#u@!X>~4~sXWLA zn;tgWJf!9`E&ZGUgXkV-rj*&`I7N#KHec|iL433{HREK4oWkMhvNLJ3M=KLMCJRon zG?f`~PL}=nR}307EyPDpluAXLi+o*IyuWnZDU_}0S(|Sdyw=r_HLi^}{%!Pk%X>m2 zA=N8hNF{r#aP?N9>#f3A)))rTCb18Lv6Lq9;JfOa)mLe7Y0CbHd6l@!Qr}CsMAeJ8 z(Cl)Xx-GP{u*_w-ZW6Xj%8%Y2m!dnu@vuue`ztH*)=y;SS(#0w=V{M|=UH{dW6~>j zC(U9zXke{)U8L!*&?#biM8FoIzEivrY4eznEeY8vdO0nb^W>zxk8p`TF0)M{VEZE2 zDmhUl*+3v`yuHL0Z#KQ+{QWsCM;`T&?pkBDn@a>6G|;YaJU8I+jf; zp6Rm2Q<%Kh->p@-$u57h?xx~riF1lJ`B+wO;7r{EWdjN!9+Rs>j8c&`Dc(W3^p#vn L{^G;DlS};%ac1BG delta 1583 zcmZ`(?{gDX6g``yyUFqz(-6&s46%-t)J34!BKQLmtF;x($d*6Nc-Fwb?yZI@3 zE?N8W+_&EY=)y+^N+zzsZUc82xZ6Y!_e8J>BVz82U=(AL+asndrXr>)<~}j^NALi~ zC3;Yb_v(k(R(_J2(DUuyO8>zRB>j+?qMg)pfBBoa=>xy?ewH|>=i83Xtt{FG_L*q& zfIKWfro`-*0n@VaNEkCF9>rr}%$nRe5XM1i{CF5oh<`GSn)pKo<_sJ@^Xng4Fo%5o z=RmHM!+^qOY*DxtTMRs<@GOofJcs8MUO-XdMf54WguKGbVqU?k23}Km9d(5_@TS6B zQhyBd3U7-!E)CzoiTXsawRRn@SGWON6}E|aS4vM}KtrV8o~gF>*>=UidkXL4l!oX~ zb!x_LE!gF;>2Z5f;Wnv^^-PxSN_DEWXzw5Q@~2VM(7co%+E=Ys6h6ShdBwxk3A;RQ zPR}ZQDAgVHQ(8y8C-i5qX{!3==BD4Y-c7t_pa}t?&nO@YxSpt8PvEX6c6t*Us2c5! zfR;fsBjAgA#ptd%XtutB9&!*Be-;-xhpQfSjIVLUBGy>3%p$T@a1rfiTu|M#+YzVDq87qBv|v3l=s-I* zl2IoW??Mkb_H(t1+{Vaif|oH%Hix-8Pc94O@(H@}Id0+uD323v=1G#oElYf{)?G8V zJY9E-dwH<7bW&@a>_s29sT2nJ<^}0j3dys$($^#FV8wE;s9Um~BJUulf(zynUI~x+ zEhV~@j5R(x{?(lG{q9R@|5x`xb}zE~&j0CN@Vob8z=yt#2n2&}r7zIkbh9PCJiFaq zBOX+}0aYi|tuE9-j`Vcc;I8?`QHS4n*_&x##O>qB-_#Isrzd~?_sFVYsrBaW zK^W!p>LZPMelY&967>}1DM6m)#5HLLR(vg^?2&J9)h=K9`k0xl$<2EVQVj+v4EYRh zZ-{*yA@`aJ+32y8NK3DlaNsmrtP;bRIm%HVV|6wG-4%%;|_F1*ZJroc`zO}oFs($?B2k7*ok1h|+GRKzO1`RKUbvH-YuU}wH zfRMr3)E9ix#Zao&J>&4!8Ti}4J%jc7<=iJ+4MeLhEU4Co=f|-|#rk8oJ=C`Sy&6-V)j!Xg$FAHh|{F+QpneKnzR#bbQTV4Y$DONtZraoj#mV2S9q z2Tk4eeN5vdPZ90S`dWU2zLrFr z&!*lga+Bv$@A!{9R!s|Srqe>$%(oD+rKl~n+ee4Fi+8Y&i=zRI?PA;5U;yh`JWCYlvs+*pa%m^hV#q zDv4~BMrpFpURA>GG`RJkyPzG_u?4Rgz=UnvK|+_7eVt>^(3bkOEI~$fv|@nK)TN4Y zhd*pbN9}0gVQ~uUt5s9ECq$~+#Yz2V)w8Q{xR4_+X3%U+<5U`xuUMFRAfDb}k#nFj zi*Mp1TdGXs%vYG+#mq$Ih9nK|AZf`OgwI+sr>zUk$*9E{P?UL50=7X47j4S=ZCQeZ zjm`?@&ti50+axr%Ab9b0*}_9W5{f)4G;bRNSz`v!%{58=T1_MvWVsAe&T5;(nYj-y zA*AosoDY7=25hqhHyA;Ro!F6=W^q7IhH8C-coSM8WD$BbR6jlmr-2U*d}H8S(7<

      _6Mc3=`-d#XzJ5 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 z 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