From 4fb876bcb0197d7df7d89ca341d313371898bf61 Mon Sep 17 00:00:00 2001 From: Jens True Date: Wed, 21 Jul 2021 21:27:11 +0200 Subject: [PATCH] COntrol library idea --- content/project/controllib/featured.png | Bin 0 -> 27096 bytes content/project/controllib/index.md | 91 ++++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 content/project/controllib/featured.png create mode 100644 content/project/controllib/index.md diff --git a/content/project/controllib/featured.png b/content/project/controllib/featured.png new file mode 100644 index 0000000000000000000000000000000000000000..66cb3db73969cdff5c833c0b9c4fa6c1e07abbc9 GIT binary patch literal 27096 zcmZs@1yr0(5-tpZ;O_43gy0T?JHefx!QCan-CcvbySo!KxLa@uFc4(mAF})H?)~pQ zXAZ+Tyj^d1)l=17)lU(wtSE(yK!5-N0f8(d4N!%Ec&7#a{SgiZ{L`127Yzd9ORfw+ zRLx`cTpu<|Z2?FkQbhNe+pPeAiRm55KAcuujF*_U{Q2XsKZZ%A%vtXo^f7TEu7pGp zTz;vMD3c3x5=B_R$K&ka>>K|r&&$rX8*_7axAcwd4N&*iW&OZp=F+ch=bp=T=jmv8 zQ8Z}qC;ro*2O?Ym8Tcbz`~Uui!(jUR_y6lV0JpC?VY#Bk#iJhJ8?#1)!tL9fwm^JVz*7NC@w<$GT2fMJC12NCP^gos z1zMmc_(#8%+{fiGMz0d@C*~Eyzk8prb{`HZ^vi_W?`;O|f2Tb?HH@S9*lAy7kO}&v zvwPFN5hh0w0czc~8qO9}B6;m^^Gz&2Gtu19LGc)W>lItL=S&Kmp)7lvvo3#XTq|B)Oy} zD`l2Vy77NRtBu33F3mT{SWJazp3HN(dY~s)J zHF>Ix{iWBEoo*&p2F)x5ojjd9+$x-H5OjqaYS$oju+|S&l)&XAIE705QW%Yp`z<4f5W#v=yA8T=D8MO)L2Y=D0 zcDyMi1VZ)&euM5UzpFj$=W*C*^$QBH$M*0YowL?z5R_oM{@R9IKPH`1uA_hkNI!Pr~-{bMUDFzt$$>Aq9SPD8LgM9BReJ#f4A7e>W6Y7e$6l!5khL=A(^ zpo=G@(4PamP2dIV#f>pB!B|CZH0@YEn{feKUUcoOWI11-tW-73skbPz|7iO zX(lisU~(Z~uEG)87M7z|x}f?WqVgZNR$+7Q4H)v~>FY<1KM}Wk^uY2X{rABLv`Uu- z-pA>)3RK}Sb&`0d%X>U5I+UrTe`dH~N*Jyl9J*y^YRpz)G}%9^T4BcYjQ;29FqB=y zkt|EdZnm{>E0QX*KPb9Ch^t>?-lk9%jp@Glvl}D^3cJumt?f&&>+cSt%^fr_(v(!A zzJ34q;uo+8!w)(jAv9K8rFKwwYqogD&C?yydf+4e_)gvXm1KLn(SZEUnEs=JA<54V z&sVw)j=y_iJH$ULfXeE9{@g6#xs+Gk^Mh`ZduXFG8yfz9;_>7pj&L{-dQBgC5Bvu% zgSJi&f=xHpE|6j-PY#IPdw#X4QIx6h}MVf^+gKJtyUdvDGQ&j_2N}qu)?0-rzp0eG=KztErDyqbcjpL(vSKT%www7TbTw$pVDeo($vbk-r_W8 zj!~P*o_kc6pq^18jIsnKX4e)fFUkT}4V8z6S)W7vv}8%QA>^Cp-|z>9_s2PTb6EB?NZGc#U~QXFMH`fL#r@|p_A0#mpZ>W?J6QTRAA8d zF^oYlt%qLa;)}3ErV#&Z7K$8IH{uZYu$iMY=4sK9sH+_KQ`$6|m?PtQyXu@8;RAAX zs+QqR1f%ZXLi)-3Kf~kHnl0h*VvmJZeKu};){A4rVjNhu%{JMf6)BWDA#Vl z+w? z#nZI2rS_CZE28-@;`1V}HR(->+PUc1!-V6zoK3m=Eo+_W%Ddbth;>ES^Qg^|33Osq zWEl-bq{bh9^dpMyENsh?=O_u6zz4-T)4JAEx>I24!OQDbYY%mFs-|4Pd+JRfM7$mF zIi?`+-r$lF@C()Lr>C8>!nk-E;QhFL&QtQU=dFU%-stH;aXj~Eu0f}wAK%%ClUS+= zFpXW&wS;ZV#G77;FdV_2nR;d&mkcjr5Q9}KL<(etX!w1{7KarPgU5HqF&WCOKkKX5flm~Ln$rxMl57p><&UkEm9jsiwJNOQit^~;QXY+T) z;(T{}R@=Xb95z{a`~7~9Cl8UA&RJs5kCLYpm1+zG9rH!mxq=j-kh3LISN%rVUnDOf z4GCQc+CCi~P|H6bb~aBn>okAS9(Kk%=WV&XdvMdLWhZn*^SzLj+iw6Ve!0^p*_sY! ztJLT(#5gPJv>gOaT)AFN2opU+dF~{lUjy%I2Auym-K3JB;}wOk$XD0Aa3yF$PaqjR zjvw>7YTQ9RTR&&Fzb+=~o){*rDOp&ujHzJHeZ(n`*Gf!tqiCNFHF1hAIr--Nl+9cR z8#tXg(mzCR68rSZ-M>dbE|&S|8L5Rp{!V*-k1LWI`3Imtvo7@W2g^GV?H-e^9+1h4 zkTpNAIZrA`N9u0rqoV=+R9>(@@eX^|=~il<^4ja9I!C!C7UQQ-V`jBOAc#Efg;uh- zRgX1i=P(TnrL%DiyAq42%jIh_H>rjz8AQK>U)4pexx zQb7ub#Gfk9s|ydQ+yj6_^G(U$3PL#g zgCmqF|8VgzMkx70FYw}RsF;#RimFo2X}uutiyDA89g%5zDa36qyb>0FbYG7RGizen zatT$x%C#DsVv%Dmv?gtUjDA6XjeJ>#@B6W*KokWVW_0prjnJGTMBb{pfzNr+L zm?F(aZhl>8&^+xvBmac42YNm0-b%c?Y)K?VYUeR43%R@%Qh0e9hH5utf@d?*@Ne_{ z8SUlACfjK5!lz2&bK_s{xnyp8zUi;J+PS2&s_^C1_tm9~OPA~>ZAxkkRI|l6Jw;gk zbP7JjKkugJ9y_Avu~GKE*5G-yHTtv!lRzEbZfCwOTnY%fr%6I`NPy~{gf@MT`S;2S zxA+lpc6jFV$yh04S9A15LuUniL($y`Tzy?PdDD0~XDOdMTKL4tiZl-o=;iaF5wrUf zkaHjQd&tuNxIcgI$`SXz#2upBl+)6qFBomzM&3)pK~FC4mC3rD1aCiC8H;(BIS|%`9PWmp zgpRM;`u#jV+0mpK^hA7Z6K~3jIQG7jiyRNhHdb5PW{N0_WVNLw&|f zAfvc?7rwf~e$|E1Vz1w^>>N@2BTaC}-uBS@!1eM*z4K5VdSY1d(jU~FrM84T(%%L9 zln;4$+Rg93EK?vvrqKHUnpVJHtOWo7AxMnPm2pj?rR|4}7fwzsn2o*oSm?EWBYfK3 z4{|GA?k$ZTEh3*|y#Qv*2ahYg+EBM%XL*fbt5qg;v(u#4(imAcedj2u;?Td@$qEGq zoDn+SmE2CQmvr5%3s=6@8IQn#kWjJm5y@h#TdLx7k)Get8XDhAcJgbx?BQ#n_`m!@-C@xm>C>WqN>)l;7k z#m#GFo3xOc2}fJ%<31bv9 z#R7^VY?{VYgeG)uFW_EY>Tz98=4;mD7fO1Z_nbXM#Jn@p2+xP0(wNYRcw*F>U_Vi& z^L++|H8vIH?L#k77t+OU6%Qm$Kv2UG;`4p%g-ei6!A*SkmOVORY+{lW&KaSbS5k|h z)0mnb*5KSPs!Zh;?{9m)1DN+b8lJx_QnWjl28k-SgkCeLfEkfHePFjf=@xAiG4HdZPep2%7CzmL z=e@`CQrvW}@js4zeAuYj#Kw>nh@*88oI153xz6(4Q~p9USDn|{c8k36A`8d~*q1r8 zzF2Lmcbbs>aad0-Ko|hPvaKk2Y(C#C1|a4Z6o_C=W4x>>dWua;@ylIq3fwIg$oAs+ zfXXHf1a-r4?n0kGXyzp?z*YOcWXuISic4I?_q*NzG?Xy4ITv0#yu7HnFNwOn3{Cei z42=sgzn)C}G^Q$Zt}!{ry17x<^!_-jokWq>A`m3w2z}}tYlQ!;?ht7jD@QwPBI)4r z!F1>;yT*IR-OFG};MMw=f8O0E)6F*Fe6t~pT=EpUHXA;Sm5Vu1spo~NQwU(DUt}Lc zIPetWy4G_y_~TkRPV0s2&R=nhV_;fn?J9jz|Hko8mvEPhzNHjTtfBCe96bUBajuV` zp?OsfJ)yhZ%xhp;UycKdg%EJVAvf$u6hd?vLXMkh?2B*F2YAd?x!|?1C!5dE5F&$y zpp!&c8hBN1o&A`!ZQ$$Xa}84iei8{;2)VpX;rq2+{2)v1R=d3QZ6G(M8nrA9b7-t2UMEQ{46)j?VZE8xPBvD0Tyou7JES}X zLtX`cBpwm@-&tK=DK^V>24gTJ4us`Av!_f~aegQ0NYtv|B8HU-3`__?qNK57iJyD| zfCc2KCr~&HHun5TAV@qed2+4IS9U_g*88T8L<+rP9fymZyUjWg0nT0Q%G}_aAt)hM zGOcBlE%*hghBP;2h?wAKrjC+wuTC!JFy-ty&_3JN$xb-xvA499&}4^uarq>C66fUF z_h<=BR=SNGGG+*UP>Fvy#KzU6r?>uM zieOGjWus>ac%Og%OW<2lARDCkArgG3cw89u_icZGi{EcXbY9Jdi}*Tz%J0N`=ZXvZHY)iAZ8hwHa{qS=$tSUo zJ{KHb{tg1S_%u9M0tH)*GEB?OH=)EpEePoLWWIVKWJ;!9Qo~Ng*Uw3?yH?;Dl-0cX zrvvOhh9-}iFVKjn5_?1obakX4R+AT^=Oh2P<=22`gv(2X0=t=e_R6p49|QIPDF~gR zL_tspgCKHdbevrLZ*4xKX2#bYb+7dpOqp)wyd=y%$wm^QK#pbV|6a8>)lUSM%E3%K(-oNi3@ttrS^^iukNj__#fn(iAZ?z6MJ`5MM z(F17ohIN7l@ve(sbxC)*J584K~{CbwYefl+< z=|_xAO10s_jK1a~5iCK-O}DuUlgk?zKYi!0unze>auldek7T~t<1WQqjlqW0yM9n> z2qGq3%u`wR*HZhDuhiptks9vH4a~h{M|_rnZHa!6!z&svMC#KKj#0xT^cs9fwm{KH zAM#e9)G`8%+LtCm1(*@HBUc&oT!C@2K!o^weitun^Jmqf<|MYDus|lj=-KQxmqYPT zop!VE4|)F_1{2|KAbMVbSoP9AE3GvZ@`;xO8`JDMxz_Sl=O|j9D|Be1eJKKT?h}kY zZMu&ast^XycWzNYUaJ{<92|@9+ZC#dIWqhCyC>M|nWZ(DeW6d8{L{WKk;8LlDph^V zmWbf9-*y*B;|1@F-a(YCERYe`5J+CyQ9n;G@2$vBPw)MisWT)xk>={ z()&YpyIC#Jg`?=^cmACNT|uRV={RAt_$o(|ws&lOP@cMr>^q&}JNsQrk6jv~Li=n# zi07x6N3H2&^GZ|^!QosMx}wvTDkC!J@EARIU&|tvyjf`8dyE>2b?)%}%ZemfEhxYh z(S>kA25BsV7KzQ}u*9iR(V5f)t8D)B|0LR1J(a`!8_}FnSGs_*jdekp0ep0qsZWiljdz*#{iEper;4UUe!PM}z#?vGgcwH= zrjM;@1#%Q4M|>IPh2lCG4&&>)vZeuJyH|cRo?kZwU)Yb9g!F!Y%fZ|n=#CeMcX=v} z{PjmCXlyWiML&}aR$I!QEM|34DZ@0tL{VFaTAsCT(0$_cJ$>WKAapQKAx_YDfZ_bT#J>fVkIr;S zWQXtT{F%lCCLlQ#z4Bz)xOE7}`{Qk*r>^%BU%@A~=Q?i6zVTo-dU{wyUQbJhO^-zz zY0+H5lF6`mcS@}vn|9zMfz1j7M0~N%F|<~SR0sy`DAX}`gZ;8d&g0}!RgtpZTxcm?&XXoiEaD}*IbHsMvkXo(ZZK86Zaue_ z2;M^!E{wQxTV<&FTT1nByHJVc?xfVQ)f}U;KC=+HiJOj{4Q6v15N+PWMKed57a|=v zTS;JyL>rO!2m7$dA@{WzS^myu#b{td?*qME74c{25@FTAz(f0eIJ?FoH$neAfgcDr z`#kt7ZD@&hROZE4_Bijl>X(7!?F;^rbF~*BN%k66p@Y3 z-aNK)%R^`IKl-fPjpp99>{JHR^&#{(KBl`fMcsFN3bYl*(;RVU7ByJ#BlVgceh0(umv>Pza2tU^=xS}T_X>X z{csCmA$IyXKodrEpg`=)3H`lGHTG{SF^g}L5OI1DMFA*>V7{#g?+h*N6`{4@ zz)!SrT0pV(HqLboSU{bmQ9)$HVJeR?S$5M&yU#BR8@cHIk&x!PETiBf?oAIkREvXJkqnsWc|D^ zmS)NiXm#0}E9BD}`T@RQsidKYo&dy2nDP5AleYyt7WjSB+paRRFYD62_`DR`e)Oa@ zB=TOOVK9m=6Lg5<1MtL2vVprNoebmq?wUO~sf$KKb=6Kmg+>t=7%QxHN+Kg-lwa&pB*I01jsV zBgH$DhlXX60tP?rq;{E#uSqFJE2S|j9|j>aFeoqabDoDfx}`6D8gu4z13nd0X%A8LV12w^@%82+ z6vzTE-U|y;M2i-KlI$O2HQYM1ZS$&)8`xlbt+_ooBDN-(p8xVu!$;g8e!A#Lc z%u%hQXooHtI7_~pbI?AlvDGA ztI^;CavLn#u2a{Yks}l!td*#ZoF@b!oZ(&P6Dzg zNb6IiYaJ1bvLMRJC?KrLPqd&iMN?#Y0ckvxK`v!!4{7GQnNflycrC${IiAjeyd7oA zyF(4XMG)tG>Mq1X9~yNET`x%a!$O|Qb}wdfqhpi~WLc1v6uCs?Vw)UWFPwv)v`7#^ z4YsyoUzfX-E1$q&MVC~l-CZjRyKX}A^r-o9Y?AAu)x!g2&8vdxlB86yMbDHDOOTAr z9rSfHzWeC?1Xlns(&9Pbd)TrhrPf7;-!dt5Xz(3!ntCvhZ^Po}we(Cla_+tSI7sBW zmauG?P?>qxCJMWfcdH_;Wr~@ zj9k}N8EmJ2s>Gf0>*s2|4Unsr^}Za>$TeadH@QyX*SEgh{U^6PKnD2KN8-i>$$z;YRxjz&D>Z_`QRhWyA|ckI$=p~GTi z_6d$wH09f) zli;HMV@P;zPgx;CBJI_g2@H!QFB!s|WbG>VoLLTyuMoQ)7s9R=m}o)&G|bmP7iDEV z*S-{xewDIkEyAK3in>~ctTl${E!m*}483gH)T9Q~j#F(~>!9HHiBMH6FzmHUs2rv! zSj3eXW$E_LFk7WLW=e}T?cS*@nwWc?ohRO|!iVaD8G6M5Q7vz`x)yUlT_nBV|iO z9XUi}-tl}tA-p3{t4OYD#Kx#en}kKRR+d>1bt-C#a|o4C94P}!$uQe#9>?&?6a#w&E`ArFIQQ}neK)db@^ew4iDvtooztQL{9YBmE)pEj zh$7F5y%os_7?_Asfyw&(a8g)O+-E_p9yMr7ix(1}R=k`j%sRdm|P3_aeu-`Z&=hQjw zTnXV{rDS|%@~Jab5^bbx@+Imy;G=h^==sDxrQDQ;b0xT=Gj*`*y4%y=XHeTrUm}6B;iIuB51oT|d5()wDeJZ6;#U-v$}%;Y3$$&N8+%)Z!~0#EmNc)s0OF#`)VI@;)b| zK4Oj@@SU+5p}MsG^V5RAde3uw0w2;nXD~cru*~Mln+{d?;8VN@w|6IeN=V1Q43BVn-Y5h&ekH*R z{+4n7=H5sWmW@MC*clkd3wOCc@BVIwpfUGP8aV;lnCWg~^}yo1%dRyQ6RAe{2uUgu9l zpz%fo>e}bBckBL?nkg>QP7?p3XBk(Fy)mbTji?YKpw#u*B`2VVBII}~tMYDFKb-C5 zQGqRL12!o-*Q&HSjaE9=NT%FY93?+VwGHkk-t*91sLVB3Qh(R-O84B@6PF z?l*;lIb6|Ps>E;_3}e@rn{0^t>wXr;@8XPlkRsYG;;>&Kgf>IwbhVB99cC==gXz@wD-!2n%zsY~44SfH zXvWpPg8I|VR$;$x(*caOUk`?-sE4t69G$xDusz*BuP+G2nwNz9qkXy^zwnS;Xv~ak&iy+EY-Uw&sL-rU3etsAfg9|YI3{TlGCvnp zmK<9{NVYhz5%+({ehs2bS}h`A1ywzobVz=4FjM$|)S;-yT}^rqc@Op4V{&$0?*aPk zhQis1365R=P(oFM-SzW1ofqWWe9vt2RQ@3PEY7p<(7~746(S%nt&o*+e?}DyTR2;2 zNDRXc{aE^w9!#hDH@Q+PknOlx60LlJ)@O72Im)~~I>3ekWnhJ4R z=>NmHG|5*_`bc6kXmX^qn)*TZ-nW80 zU{6P^2!rA983j0XACV`Vz;)S_a?Dsljo)>E`hQ4PuMROr22fey_2OoB#~uC>WW4Wm zYw_{l4wf}KX+(fi_%3_Wc%4XS`wMze;{(QitilsjWuf`ns=KZ5GV5K<2(lVfOzi8P z4-39a-8%OUiKpL-bG^^ab&_?jYkI;q8_a(Qt5jOp=0q1z@!>W*JCNVr?w!Bz7e%jw ziKekG`cxw>Lb9aee4+t{l`>b#FeX=zam`UORVjYgCd4H>uO6hir*3^(&3--MukDJp z%Z36rAxTLaZAMUJ+orjGsL_@#;D0e_ZMly<<>v3E+=W zmyW(LDv9vMtX@zK2f*W!RQGoU?@Wdze7!V!0<#!TcJtQU?31eu1`MA`FZXU-P@QR1 zOGZ!;wu<~LHTyJs5t0v5(OC9N8!sbY-qK!5)7KaT_P#|A689f;7lWy^@jl7T>Ey@ON?qGU4TeH1e>towUABWclODb0 zNd)IZ99{12dSkdDhmD!v!2{6E>YD~Dy2eg|Q3XYf6QZ?@VMWzA#o=CX9#}P$q9=|F zN6d!!jY-j@Oc{?b#l$4R+Z#najm8UR&;CKHjXsH%s7n8l4Iu%HC>j8G{d#pO(Ra1Y zxHMAKw50D|hMCIV^E+&@Bm6})TtlUu91s8m;da zJ}+T)sp(RKM+v>f$^BY#@FZNZmu8RDL(`OMy@*emBuQq=3CVR5W$LAC!z$rZ%2I1K zZ=#OBwz||DHo@eFELPd+ZG!Ce+-%1MY@`V(;Q~qnc6G9j7Ni`H+jEsl+eyeyp1ir_ z(U@=H@%V^bUE^3(si?HT(+Ec}kF}?AetJA9^7h?oHBx44yxa7K>K-!|42g>=}bfgJJ2!( zy=sbGIG^*nytOiW=&z*mvwQu7eaV{b8&D5?ey~qvOr3|%87ajA5nZKBZCHXj(o4)E zHCB}L{Uf?~gYm#)Uv1vK*R{CgN>}t*SSFU=nryYuQb}Nk2iWg};$>t%P7req+K2@TY zu-&us-alwY8b+Lc)C&rj$7G^+TSgm*xD>=l-O!D|=b{2PfiP&QO>|4t@PLDZgy|O> zu0RK?)7Hdo1EM|#6kzCJ`LjkD#2cYwn>(1>luoX>zIqT~f6@s^X49&I(Np@!5VBrP zZZT-K(Fus>duxpeL%8|#uMt)bq5)4?LSu4NNnVz0WSY$(roH9BFz5)c6o&0%F=ja$T8(9rP z7h~=##T=ITEP)2Cf-lB5+0`ENFXN~y7_pxoj(}D*pHkgCX1G-W)nMX_zOf1lECyK3 z<+<+CbK|J>Q3m>iaJv+L4OCy2LH24j3-`0fDRopPvDJW;MB7;KH$H`-Z*2HPv-&KR z8wMj-eX_tC#ak<;g15LZL`Rq@`p0Yy7NN$~hrwI3nWaTROQiwC1XjRs#!U2ndX`S6X(6n$!b>#> zrR$rM$Pe}5X7P4+bhH4!x%2AxU&AGv_&i>2whH*h^Z*oN1D}oiWBPOg2BvNcRF{7x z8h1P1@yt-F!H(>aski&;3%gIG3~RFq)NOfW4TC|Zva^}}S4r2*4o@eox4iv^6tFNM z(mxS}Vtyyq? zCSaGEu;74)u8gS)$(v^8?qw9$3}mt&Q7+e z1S1%544={wQgNxok=iE{ZqPOT7tCc;auKpzdhkeY10{a>-c~Ae`~3x&m-32kC4Jyk zo?*@-j3#33)!@HD@j6sbh6{TMWE&7Hwggm)9b7L9pj{VG)f zy~6I?@J)q@KW-}aWg)GO%xuM$1%6k?`s?E{eF<^m(YG2ho8%;!_2N#q)K)w%M+F_JyHKcVX@tH_ zhN34aDf8@QWwaHCQX$DkIyaKDggbSb94>&aVykI%t{l}zxFWyVK)GcmY;nJEW%c)O z?#BWoI=JYAAJ17U`$;H&P51o4U8WquzuFLz1m=>FQU*|W@|0_wIVdldVgptMU10md z2VSiVB;IN~>KUSC=-G(a7X`h=sXNR?=HP)8j)6fcN*&|dla{}*_B1~Xr^CtrbRH?= zCgp;tQavrn9`WYcZpMsShnzx3A1j;V^+IQ4fBos^VeyRx3Lz$}**3eQqE$I~a?Fn6 z{&h*Agvwrwc*9@;#(iCCq)mL9%FDwq(H6gQ(R#t5>V*hgCbE=&)^v};ipDBOQH4-F2j@GzHvI_0LWRz0Rt8Y*o&t+-Mm zCGe(Tdh7^g_;fs3VwE#5?W0BZpi98Ag zU1toY(j?6RC+ai!gp+h+kxky8eAx!9tha9mK?;q%6BS>Dxvtgl6Umndkk~I+d4f5r z^jshrOGVBHOiaTcsp=M9a_`prHg$XyxTFAk&)Db1*ACY<%X}{@SxK&eAfd7A0>c*v z^6R=`gH-v(kI@BT10mpecu>wD6I9*fL0P?HL07no5UXgN+UbK54Mrygp=d=Bf$4Tx zxGHi{_~)WbS1qF1d}o?I3WjuZYH3wHNj;owu`Hq?v7Onzk`c3MHyjdbFou}>`nOX3 zQgq7mm;e*lJ%5BlP&!D^QsXr}0oDkqJd|(a4P;d7p8|IJcJservSBu83E}tCy~T+# zA6qt?`^PQ7JbQv1XHvW=@ph!)r0kjA8m+ccE@mn#ZM+e9>-5a8#Mn6{-$G8AE=wiq zt3Po5-kI|xsx>P(Md1z(9@J0Tj0;!B6ZJ_}qskl=-z@Vi3+<7BKKB6@yZ~vi29xWZ zQm4~r%l;%FkIwc-Tum6bT42qkfOoS9U{iNZ)HJDTiYjv1VEL(^P~C~UkDj?pOoa%S zA(2G_KRiyn6cuA_Ke3@VjCYo>HJdF~#kU?G6pgPfMFeS)Z}{(w<(zBSCH{#cuZctZ zH0Xv_krTapy*c0rTp6Q^*#~d2qqH};+!34)z7($M{Qu9uHHxXi7=rw@I0*d zlqxxSb~G3TGK?RHlzf4FgP%;~(v`vcPW+oCas9HY)x;^R%mxvF^=M6Ace|}j#F^b` zmeQ3+0e{`cm+&G`R_u5Ct$0v4-D1*6n-2=ul3a?58dGTwy7_A2+>8s`RJHD9drwQE z(R&|SdOjh-erjp!^w`!9g*x()Xa~GqJ zwQ~7RV1Q*=h>`jBi%^}{NolLREpcjp)tIM-o<$t^ywZ;%lGR@TCu6eSqwDLQ#->&2 z;t%fxB@n#8N-zX=WinN08|8B2&0c_t#pI;q10ksA{;|q?xBi@Q3W=(ZqMZ7Nlloi( zF16G9D6Ma%KpVW+d!cn&z3D8{)clQ$Yu>jFNv&500fwRKsR0TE?N$l(G!Ass=H?cw zOzTw)kWk~G-3HXLy=;+dK@$uFq#3NA&a~3BKFxpKC2#jss!tx*))peTkEv! zT~)Usv8S1ykS~p=`FGuK*#qCeF6`<88Be#^==R&F$SvM&lX9jihjhwK9d`^H{6;ru zMtKkHrKJzkZ|6E~`H6wMg_k(86myTK?$*jo%}(dH&TLsSZL!Z1aYhS9v~g^HOc$MB zWcnWi9oz&++;O6c-yRta&}$R_dYcUmuYr6Ak3KXc_U32M;1l>+nON@m=<*ttN z$DCU}T;_Iru;n5WGj6TlqU1Le+7p|IU5WY@%bGL#Rmxy*L?G*np~m62%bllSiQrWm ze;!3XTCm@U_DF)0O?92FKK#;w-$a0T!@Z(GU!x~tZ@1Cr4PCQ|YG!as{i}B86`Um} zzU9kqD-a``um^m!t{-8+7Fo|ToeWDt@<@U2zkdJkL&L43@mEddIsD;_yj5-l9V@#gOtI~6Wn-CJJ1f*Ik9Pn~sk?!hgf zODVmIE&s_irRgt%ru!wVW8iL^Tb`k8DVh-g8Z?LiL;%)=T6+dZfuhBk95+kyETZJ! zQqNl@As95RSu*!sK|j1HN~SV>DFfOcv2(HCzNvE>TuagU+YzR*eC6L6JMFsmtM5Jw z+%yeidpfQ{jG7t=lf}v%-6^Wmy{0$JM8pj49mrYaZQJoF7YX=oSYSvAPE=%7T+*{p ziKe$#0{0E~UXSVPoQqUC0)0wmKkis=E1w9}<^HsH{z|mmoI`YL>I*_V{1$RwwP4-g zFDvI`!2KN4LF(hyi|KmHb5e=$ytgOdAmpIv-sM$-l+K}*V*4myUGm>W?&~dRr>%32 z_jh$1bg|M_Bs~3|nfN)Q?#l_xo_eXWt}t=P21Gb}etvC4DfxLG?xM)(plW-1TIVQq zl9lnu@EhEseGrkCT7i*O?-M~&(!O*VvR3v27vLA|7fsej;q>e4Tv_`ULxp518bKxt zL7@ItE7ZWS^(OCALZLl$zHPaVQf9=>) z?&r--JA$>|V*eEq-vlL=K2r*n(c)J9R?On9p5XR5+@mjeYtL43ez@?dca#N-xL1Sp zTJrWuHQ9ezx=ensJ}luWY`l*ngL~wB3*Y8yvwLjspIzn@V4 zdnpw({N!{PgocKVe(`#O&$7trCh{bEzgIbth77*9LEKVIVk=a zmcdW1xdBX{)kU%OuO)~-pqPP7-Xzy%fx6f;J|~pfN>`#T6XK)%2h-(wn6h}mhCgsC znkiQ>jg6Q(dTTu|`cK=Vf)C^V&jxJKnVQ)ebSf?NW%xEvc;_V_rZ;9yHrj$dZ@JLr zOFqGEXVZSAB>etDvp|e?X3TUE$p&MQEY9gvXN|p66o&ln2UNkBMt6`6UavY zN9@8ZJaXECVIoddDG9Oi13wkxuTU z^(>Bl(BhZroRd?oCdU7f)(7wUQkzIat8-w$mp49UIP+e!Yb!7E-uow=1y=QYT%}I8 zE!ux8jd3em*=5}6HQiTzXBPe-p5xjtR#a50YgNhBZ48@F^8WQ7q^MKVs^Q6J6NCSe z!%r)G#OSYzbi!Ha{U@XUUsY!r5JeZSaS5e6B&DT8x{(e^sihZ{M!^N7L01|C>5x#6 zT)IO*N=iVwS&+`9ms+@k@9TT-{l=GJX3oqx^FRORd45YxU1x7Tf-o#ekEJaUgir(+ zDa9%O9Wd^oSAA&u_K#rq)Wd#i^|a32z2Xb?6jzcxzlbOAGA`*!d{Ug`6YZ(8j@g?% z%C<3iyTBF~Ee1KCL+OL100+preNR%AiE>cM2fCmCwV zy+_;#$X-1m=9jeicZT;Ni5ov%odduOwcL_5_=AA_z?MT#)I5(wwT5K2 z{aBx6AgZG0C^^D?e@;QFOzRs^H2=He6%c@A>W)CfXq{7ZVyX#Jm!=ho^JJTCs#IL_9_d^`My zlVw2lyV<^R`hDTi>8UG)chNU4$;%&?sE<8P(Hv!@iaCZ;^9AE}&y_B+R)}!klx2mP zz5|&6HTUh|Df`+`LqlD1oq}(`GVr+%_R!H~xG}g5VU_^bgSD41lije53=5qPin4;l z63u~A-7co*Ym>l7=C?uS2Z!fTvjz_c8n;CCePgtIlmd;fS`tf7{?+U4_HHuYM@RBc+FQukw5wg@%Ty8Ax7|vgKqyz>x#RX8FK4UAs&YxX(i`F& z^a2_(Y>V< zTYVW9CHhg#z79nV*$8!%XaFij4^QPGYB2GB4J7PWS}OC9C7n{q*2TFI8ws$ber9!L z3jRc8+n3ky#+y0sYs|wIvgdLBty-UiaqRSfzDS3&a(d!vX z$EJf6Gv2K zTm@>5?d(dg)@LjrtPO-WAZ9n7ng$1t#`la{%B9jz)q_@Yv#^vEkva)hJxQQMrShpF zOSi04$gvaU2M1(;*}2c9>1`~FXL>)?Z>l-)2y7#~x(FBLzw~>VmQoqO| zMPLvg8H!;4JmiG0*Q$`5vDGVRL+!f0tK59R_v`jf*yhKAQk*!IqZwe_3~eL(o2V2X9NNKX@rXx7{ug$nS3M5t=g1?dw zZkjyKlpN)^AT)0DrE0cC(vA9KAr!}qQvSRKnfZ%E^U@+YF*KU*Nkg#aLm7UYZm*Xn z#Z3C8zrJB8Ia3S8o8KJX?9p}zvrtF817*zZDoNyCsx$TWy~)Z&1wz5}Ws{e`^Z8k^ zlaR=1?~W6HvrLvPa<|tE5tq>t{VhV78W+v|$>tR2864#=b9?Hyq1j(No<@f3;kEf} zKcI0PH}+l?{Pt;Ul63e!eXYxq>J&-1NwY`d1?PwMI<;y^d0__lqglh&(4kLk`4~a5 zSBz}mweE)zrdqc?nzx!)qLCN6kqY}+|Fx6tzK1E+B|&YMERXTe+76&L+?S)N;Z~D1 zW-%Hbiu%~Vnr}p0SVTXErIha)Gx5@jJwtYfqau_vi~HP1_@Ng36*J&?IYGD`bxP#T z<*$Wrf0rF0sQ|h1p7Ch5?YHPl)wkdtII)5{TR3E%5Py@y4o$8OQmPkCuw(T6&?+={ zAAb*E@NgD7%q^4u$-M^%U24Pwkui)nU-5a z!<|Fy8g+#hCusuG>krdDnYtq#28Fh!%xxUXa+F5dK>Yp}&z@p(leI-W{LwU-q}|-e zHG|TA-SK&kl#Ix$Z{AbM7Xmwu;HGKZxEtHjeHWN>j~o-nw$5uRLo#>|YdtOE_YP-T zr;C)DX4!wZTv@zOS%*Y|Db^>WUQGRx4Z*j=jODwWqfxu-H$&a5gA9+go0X#igjLZs zeh3i$4T>dy5-OgLFoDeDwZ_Xedu60gB6bAgUcDg_e629Kyz(=DP#66j%0hS%9Z0on z9fsa7P1N^Ir;Em|uZ==R15wTsf_^f-gx+jdKDmiQMG2WBDes@#rZAV z>^=b$O1QE_v%g!i7Pie~m$-Cp7vdE`j`U_bVq76ukP&CO+1&(%l z7eH|1EXRBAc8jsC7fH-d$P%^KX^+=(M}uX=5YyyP8@Lerm&=;VU(87gqJ}R;)y zKEA)SFemS?Z9P4Af@Hxy7TRx=YFT3WsOkz=8%>i=M>;iTy?s%GN26x0x_;w)KDi^- z4xg~}U4ue~+8`)XVLjRx7*E!V39yZX6TdsJZ#HziSeWs?$asXO8rn_Wv|&@@P%Y<+ ziKCzojLoIG4(*Grl)9Mlr1>+g}( z8!$^ZJ-uI{&atgg*KQk^uDttMpp>TZ6-u8QqgUr#(v!ZHO;SETnwzDLxJW}n%<{K$~=l|k2sQ>9+&5QOfTOXt=4xbdgWSFWDfrw5EvHSE%ozk=tx*19-WitJBu-RDbtCMj|z_a(kH__|+$s)KBcT+Dzs z1vnbV3&_(;R5rf(w_Z$p&36YbcrnrqcGNH)-hKPIA-u|jq&25^>!|$X(oqy>th_#5A`(guK=!8BNV*{5;F1fq zmDHm?BjE(hNK9Bd_U(h3#WsS2?RPGcuM1c)SUa;P_kPN-Q4FLD-;2R#N+Ud6B)yOC zi`FyRerntOkcWxp(F?mx{53ZqHMmOzzgu{pAWK?+lbxI(0H<53XnDy;Ml|luaF{*u z9jm)?VMwh`CJn5&I~)gk&=V!nHt0>G^M3AyWxuD{Mzc7mjGIKJ`(Oz^klbGO8zjzv z|Gp^Dk2NU;|5tmf&f1O6-Ww?CsLF%33&?1)My9K_sQc!iB+van-_IG6mkTu}>LKHz zy<=lkpUy_z--SMur6Nsfe5sMryB14;r*HM>7-HyT%b}u1+(sN20r&D%cuh0IG@;s#xtqT}729-={b2!@seN}ADLaSeY2 z(Imw9nvfR*%VD&>V#pagX<)8luM5s@u$WWPDdR{w`ej77Mg*BL(}lr@-?7;0cUrVB z3;Iy;8&VzxW{RGdc9 ztkEmlnPS7L6&SBo;Z21*7TG(hc1&xu=_*ryJ$RHmCjF_VV)UIgn$FVbpQx8TXNJ2uN3#=Oo zwn-`@_|v0?@t+iw&L-2TOpOAt|s$l?uw3 zW9^+Y2uIgrs4_GWO9DiVokW|eTEcrL*8fD_XmV>fWzFM4F^E7Pd*Ut|F;65o_@oZX zB*L2by#7}VHt$#*-u{y*pwIGBkfivfJZ3)==x#0(2u`Ge6~PYL;Qsi;hJ+`K!4mOe+_a|dF}o!*h56PMO${Fnw}hqWK1ig85lPs~(O8i?11&77m6z$aWXZMdbq zxR`rx%_$M4grR>v7bsJ;^4b!;XSznv;Pm_ic8vvm#$-(+P}0p@4kSp zrrYTvw&z;xHhnSdPA0K43_I(-9@WWaeGRxSC;ZTUG>#I9DSV50ExBgI7G^Ee`uSlt zTRCl;f`)n?Q+xX5Z97I9JBdw4?xPKx=k~EY>m8mCcb-4WUKuhi%p#Yp?IHRx|42A= zN%|87boZrg)GnDyF;|HRCo?F6jHI}er=9XkpWxHDaIi_RJAIK~7emoE&-VE(djT7& z?ydk=?VbU2-Ss?S^*x_}g;U=54l|O8jfGaPsfW3C;DaLW0gNDv{x) zbdv!N6z72gH4XWSI}1oh+ktikoRO6T_HRZxrJjzDx%!f8s%Xh6omB*m^(&;^3;E%S z|MOSXl8EMoe40Ff+K{(b-@8<128l-g(t^Zf=AV0g6}(dr9_-fENqe+3@Lo``M@N~S zXRPVMRu{Hk&)01q*QE37o_#p=*s&t-<1s}#fY5Pa7m5C?eH4p(VG_yp^R_+P5LB`h zB$A;K0cJ}!7ni!?i}0Fopa^dl4iD~d62&}=F}~KRLmXR&u0-s_JhZ)Lnto(HTV%qF z1@sZxH8bon@w(1__84;B1&9c&SZxZHN{vhk=2&@mS>#V)yxhX-qI0Uc1lR9BceV$= zt2~OI8!c9*GU3YC)?K~!m8XAHU@2a$J8)P3TZNoKO0-J3Pohnjfa~YH2grJo{PZ{; zrKs^6y$2@E_ZFPTnODF1f!U^kXZshe>vy9!$`mwp9LeYv(>=~%kt zD+cC{v9`^LXHs)ULY5>z>}(%meBqHB!#IR{*&WrxL9Os&7l0Loa0f1e0OZuT^}ugt z(CY8o>eHN4hPyg^vwWIIbSIui?mpfZ2cb6{kAJqjuWa;emywhXEtevdvo4l|bqYC} zIikmA0u1dkkI$w$uW}JD`RDS+gG=l=S|bvWNY-3&k|GrZH^f< zeJ0{d0D9~ftRp{@9v*)w>^W zj^E3}iR@fwi#0wr+;S5q^OW~q_6a&H_)8RxEcJ}S`!qkWqPaEECrE`P);9oxduV&g z>LfqhtAt+KQ?|M_NPYQgpF~z`bzR%@Q3z^p)U3psqlpO^qq5XJN8iF)F#68-!L^@T6tD)4tXzycsY&c&Zn+N>2toi!IPJ58!4rdH@wL``LnZ{W?%U3Xx#R7 zm8Opg}|h@!JS*PvDe$W+AmDJI@!we>V^zrI?8Ed^Vc z(UMVY_|4&wizGtvRT4?D7^)Y$k&szZzqV-nw{Jf$mXp;LjafjQ#?hZ%bI@qr-a?#V z+py*qdX24MVVrxJP+^7h_;UvXBVlNQ7R7M^n?S>HwVc8ja30%`kxC;()rWt`9aOL%JZVaozN_xP})r4 zH^Ar8x{x^<#IfPhzBuV-9M|I;h|_$CNPo9gJ^}t1++?PO~|4jOZz^dKwuY_mA*d?F~q_1*dbJznXr)dq4V6;C{IQVw#%>qgB$! zLdsRAJH+1GmU409oIL}8-T1FQUUbUyHM%B~ZzIsMzWh;!UgluwK>!0!W~0+k=~sAJ zpG3B1mwIyaeQK`=xzTb}#T)*AMdgoR!_|)$?Ep*5#*JsW{af%=zs`3Aw1%QW&AkTu ziyfDCqg!*2Q{6>uaV;ovpYLB~nX#?Nhsoo!K#Gc7z=4;=(2$W#zEF`L`wD-ih3cea zI*>A33<8pz9Ys2o%w6jDqxa+Itx$mZ?q8dUp@rRxKI@HirZi_Ni>Q-}HhzEP->T3lu+%Jj_IV~x+i?-e@mMMa6RzYuaNY9`Y# zam)`R`A07Y?#gly+uDQ2;;oX>V0&S`iAarz)z@15OE3EYcZFB1+%(hwxl1I2#^L4{ zA#~FRt^}Lemf_U+^s2AuiLV`Hs1ULYfUhg{_*^Mu2mPuBRm!ol@ZsVBw~ zswv6mcnvxiV;VmeP%;2rzS17W+>A)MtIYn_9b+Worecf#{j`1ea5C9tlvPi&M7bxq z$OS%5zsIu2zPAnkac%g9d=H!4(s~B|{;%-|79o|hVPN++-Z|!4Z~^(ehpTIk(4`i% z)Afpxut^1MYkzzdG{2+D{n{4lvsfGdO?JXa&cm~RT61JH!uV^xU50!Ma>{B|k%iYA zAh_dX=WUobg8s9#pbhqDk=_mYNzDU5)-1cH9_^+soy2vlNor01Z>&>&z5$u49roWD z*FKsnSH9|&JV($H^#H6~1B@!p2KUF|w)$DgoXB1We)oD5 z#M@4#|GoTYS#(ch^X=z|r38FWcpR=@y-SDRqzg!p_F->B$B|=j`Ip=5h2Q(!wTGA6 z4;HT$on2dsHlQn$w+=(zg_nG8>8=uBCO1jOzw;-IPU>s+*RQHVzX}1f8=%AVtt#@x zE6y>Sy13Ln>}^l%P?p}n0=9^o3te;Tz)->&_(!_QC+Y&99cT00=Bof z${JRa|MPz#9vTzia=jBQzlu#f?^g>|kRd0}ek7JO}I(on6ues=`Pk~*Y!!gyggla_swfrfR_up{ZSHWxf=loxg!>jwO&RfV&XJy;=t7|?G=k=UbQiNAsvmdP5x3$Fc!Lm(P62;O^ z%J1|T-we$E9%Zg18(v+$o93M;|ItCM!-F&lL4a_$Dbt)x{%urqFJPCi;q}T1WOYC5 z7SR*yc9F@Jk96kAcb8L-MnH-uqla68zfEq1rNI-~R`-22$oRh126E4P7oH|HY^UPl zZF3-=+O+n3`kRyfQ+w$xuQ>sU45C}J7vN`&t<&brcn%ffm@}i&zTw3=Bdi7JeEH7& zbA10lyBWb7e>A#`HJ&k=!46nu|FMXgu%-O|9D%E!uH=Ap*&@B1)=$`SEm*+@hLoj9 c@|vO5+-+O%r^+nwi%oabm9>>h6~NH{0kM$GKL7v# literal 0 HcmV?d00001 diff --git a/content/project/controllib/index.md b/content/project/controllib/index.md new file mode 100644 index 0000000..f6fe8eb --- /dev/null +++ b/content/project/controllib/index.md @@ -0,0 +1,91 @@ +--- +# Documentation: https://wowchemy.com/docs/managing-content/ + +title: "Control Library" +summary: "A library for quick and easy implementation of regulation and control loops. (PID)" +authors: [] +tags: [] +categories: [] +date: 2021-07-21T20:49:38+02:00 + +# Optional external URL for project (replaces project detail page). +external_link: "" + +# Featured image +# To use, add an image named `featured.jpg/png` to your page's folder. +# Focal points: Smart, Center, TopLeft, Top, TopRight, Left, Right, BottomLeft, Bottom, BottomRight. +image: + caption: "Control loop" + focal_point: "" + preview_only: false + +# Custom links (optional). +# Uncomment and edit lines below to show custom links. +# links: +# - name: Follow +# url: https://twitter.com +# icon_pack: fab +# icon: twitter + +url_code: "" +url_pdf: "" +url_slides: "" +url_video: "" + +# Slides (optional). +# Associate this project with Markdown slides. +# Simply enter your slide deck's filename without extension. +# E.g. `slides = "example-slides"` references `content/slides/example-slides.md`. +# Otherwise, set `slides = ""`. +slides: "" +--- +{{% callout note %}} +Concept phase. No implementation yet. +{{% /callout %}} + +# Concept +Implement commonly used algorithms used in control loops. This typically covers PID control loops and their supporting elements. (Filters, scaling, glitch detection etc). + +# Why +Control loops typically interact with the real world. The real world is complex enough without an added layer of code complexity. The goal of the project is to keep the implementation clear and easy to understand. +Code that is easy to undersstand is easy to modify and adapt. + +# How +Implement in C++ taking advantage of object orientated features to present a clean API for the user. Should not rely on integer math and optimization. Floats and integers both have their pros and cons. Floating Point are avaible on most micro controllers and the user should not worry about premature optimization. Slow routines may be updated at a later time if the need arises. +The library should remain cross-platform to ensure the code may be used for embedded development and on the desktop. (All the way from Arduino to Windows). +Reflect Control loop diagrams as closely as possible. + +# TDD +Unit test individual components to ensure their reliability before integration. +Compare with other implementations for correcteness taking into account floating point (in)accuracy. + +# Features +- PID controller + - P/PI/PID + - Various clamping/anti-windup strategies. +- Filters + - Exponentional Moving Average + - Rolling average + - Kalman Filter + - FIR/IIR +- Detection + - Inside/Outside range, inhibit time, hysteresis, glitch protection + - Deadbands +- Ramp / Fade + - Expontential, Linear +- Generators + - Sine, Square, Triangle, Sawtooth +- Utils + - Linear scaling (Y=ax+b) + - Polyominal + - Map +- Limit + + + +# Example +```mermaid +graph LR; + Input-->Map-->Filter-->Error-->PID-->Limit-->Output; + +```